1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ 18 #define ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ 19 20 // All quick entrypoints. Format is name, return type, argument types. 21 22 #define QUICK_ENTRYPOINT_LIST(V) \ 23 V(AllocArray, void*, uint32_t, void*, int32_t) \ 24 V(AllocArrayResolved, void*, void*, void*, int32_t) \ 25 V(AllocArrayWithAccessCheck, void*, uint32_t, void*, int32_t) \ 26 V(AllocObject, void*, uint32_t, void*) \ 27 V(AllocObjectResolved, void*, void*, void*) \ 28 V(AllocObjectInitialized, void*, void*, void*) \ 29 V(AllocObjectWithAccessCheck, void*, uint32_t, void*) \ 30 V(CheckAndAllocArray, void*, uint32_t, void*, int32_t) \ 31 V(CheckAndAllocArrayWithAccessCheck, void*, uint32_t, void*, int32_t) \ 32 \ 33 V(InstanceofNonTrivial, uint32_t, const mirror::Class*, const mirror::Class*) \ 34 V(CheckCast, void , void*, void*) \ 35 \ 36 V(InitializeStaticStorage, void*, uint32_t, void*) \ 37 V(InitializeTypeAndVerifyAccess, void*, uint32_t, void*) \ 38 V(InitializeType, void*, uint32_t, void*) \ 39 V(ResolveString, void*, void*, uint32_t) \ 40 \ 41 V(Set32Instance, int, uint32_t, void*, int32_t) \ 42 V(Set32Static, int, uint32_t, int32_t) \ 43 V(Set64Instance, int, uint32_t, void*, int64_t) \ 44 V(Set64Static, int, uint32_t, int64_t) \ 45 V(SetObjInstance, int, uint32_t, void*, void*) \ 46 V(SetObjStatic, int, uint32_t, void*) \ 47 V(Get32Instance, int32_t, uint32_t, void*) \ 48 V(Get32Static, int32_t, uint32_t) \ 49 V(Get64Instance, int64_t, uint32_t, void*) \ 50 V(Get64Static, int64_t, uint32_t) \ 51 V(GetObjInstance, void*, uint32_t, void*) \ 52 V(GetObjStatic, void*, uint32_t) \ 53 \ 54 V(AputObjectWithNullAndBoundCheck, void, void*, uint32_t, void*) \ 55 V(AputObjectWithBoundCheck, void, void*, uint32_t, void*) \ 56 V(AputObject, void, void*, uint32_t, void*) \ 57 V(HandleFillArrayData, void, void*, void*) \ 58 \ 59 V(JniMethodStart, uint32_t, Thread*) \ 60 V(JniMethodStartSynchronized, uint32_t, jobject to_lock, Thread* self) \ 61 V(JniMethodEnd, void, uint32_t cookie, Thread* self) \ 62 V(JniMethodEndSynchronized, void, uint32_t cookie, jobject locked, Thread* self) \ 63 V(JniMethodEndWithReference, mirror::Object*, jobject result, uint32_t cookie, Thread* self) \ 64 V(JniMethodEndWithReferenceSynchronized, mirror::Object*, jobject result, uint32_t cookie, jobject locked, Thread* self) \ 65 V(QuickGenericJniTrampoline, void, mirror::ArtMethod*) \ 66 \ 67 V(LockObject, void, void*) \ 68 V(UnlockObject, void, void*) \ 69 \ 70 V(CmpgDouble, int32_t, double, double) \ 71 V(CmpgFloat, int32_t, float, float) \ 72 V(CmplDouble, int32_t, double, double) \ 73 V(CmplFloat, int32_t, float, float) \ 74 V(Fmod, double, double, double) \ 75 V(L2d, double, int64_t) \ 76 V(Fmodf, float, float, float) \ 77 V(L2f, float, int64_t) \ 78 V(D2iz, int32_t, double) \ 79 V(F2iz, int32_t, float) \ 80 V(Idivmod, int32_t, int32_t, int32_t) \ 81 V(D2l, int64_t, double) \ 82 V(F2l, int64_t, float) \ 83 V(Ldiv, int64_t, int64_t, int64_t) \ 84 V(Lmod, int64_t, int64_t, int64_t) \ 85 V(Lmul, int64_t, int64_t, int64_t) \ 86 V(ShlLong, uint64_t, uint64_t, uint32_t) \ 87 V(ShrLong, uint64_t, uint64_t, uint32_t) \ 88 V(UshrLong, uint64_t, uint64_t, uint32_t) \ 89 \ 90 V(IndexOf, int32_t, void*, uint32_t, uint32_t, uint32_t) \ 91 V(StringCompareTo, int32_t, void*, void*) \ 92 V(Memcpy, void*, void*, const void*, size_t) \ 93 \ 94 V(QuickImtConflictTrampoline, void, mirror::ArtMethod*) \ 95 V(QuickResolutionTrampoline, void, mirror::ArtMethod*) \ 96 V(QuickToInterpreterBridge, void, mirror::ArtMethod*) \ 97 V(InvokeDirectTrampolineWithAccessCheck, void, uint32_t, void*) \ 98 V(InvokeInterfaceTrampolineWithAccessCheck, void, uint32_t, void*) \ 99 V(InvokeStaticTrampolineWithAccessCheck, void, uint32_t, void*) \ 100 V(InvokeSuperTrampolineWithAccessCheck, void, uint32_t, void*) \ 101 V(InvokeVirtualTrampolineWithAccessCheck, void, uint32_t, void*) \ 102 \ 103 V(TestSuspend, void, void) \ 104 \ 105 V(DeliverException, void, void*) \ 106 V(ThrowArrayBounds, void, int32_t, int32_t) \ 107 V(ThrowDivZero, void, void) \ 108 V(ThrowNoSuchMethod, void, int32_t) \ 109 V(ThrowNullPointer, void, void) \ 110 V(ThrowStackOverflow, void, void*) \ 111 \ 112 V(A64Load, int64_t, volatile const int64_t *) \ 113 V(A64Store, void, volatile int64_t *, int64_t) 114 115 116 #endif // ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ 117 #undef ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ // #define is only for lint. 118