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(AllocArrayResolved, void*, mirror::Class*, int32_t) \ 24 V(AllocArrayResolved8, void*, mirror::Class*, int32_t) \ 25 V(AllocArrayResolved16, void*, mirror::Class*, int32_t) \ 26 V(AllocArrayResolved32, void*, mirror::Class*, int32_t) \ 27 V(AllocArrayResolved64, void*, mirror::Class*, int32_t) \ 28 V(AllocObjectResolved, void*, mirror::Class*) \ 29 V(AllocObjectInitialized, void*, mirror::Class*) \ 30 V(AllocObjectWithChecks, void*, mirror::Class*) \ 31 /* NB Class argument is purely to match the ABI of the other object alloc entrypoints. It is */ \ 32 /* not actually used for anything. */ \ 33 V(AllocStringObject, void*, mirror::Class*) \ 34 V(AllocStringFromBytes, void*, void*, int32_t, int32_t, int32_t) \ 35 V(AllocStringFromChars, void*, int32_t, int32_t, void*) \ 36 V(AllocStringFromString, void*, void*) \ 37 \ 38 V(InstanceofNonTrivial, size_t, mirror::Object*, mirror::Class*) \ 39 V(CheckInstanceOf, void, mirror::Object*, mirror::Class*) \ 40 \ 41 V(InitializeStaticStorage, void*, mirror::Class*) \ 42 V(ResolveTypeAndVerifyAccess, void*, uint32_t) \ 43 V(ResolveType, void*, uint32_t) \ 44 V(ResolveMethodHandle, void*, uint32_t) \ 45 V(ResolveMethodType, void*, uint32_t) \ 46 V(ResolveString, void*, uint32_t) \ 47 \ 48 V(Set8Instance, int, uint32_t, void*, int8_t) \ 49 V(Set8Static, int, uint32_t, int8_t) \ 50 V(Set16Instance, int, uint32_t, void*, int16_t) \ 51 V(Set16Static, int, uint32_t, int16_t) \ 52 V(Set32Instance, int, uint32_t, void*, int32_t) \ 53 V(Set32Static, int, uint32_t, int32_t) \ 54 V(Set64Instance, int, uint32_t, void*, int64_t) \ 55 V(Set64Static, int, uint32_t, int64_t) \ 56 V(SetObjInstance, int, uint32_t, void*, void*) \ 57 V(SetObjStatic, int, uint32_t, void*) \ 58 V(GetByteInstance, ssize_t, uint32_t, void*) \ 59 V(GetBooleanInstance, size_t, uint32_t, void*) \ 60 V(GetByteStatic, ssize_t, uint32_t) \ 61 V(GetBooleanStatic, size_t, uint32_t) \ 62 V(GetShortInstance, ssize_t, uint32_t, void*) \ 63 V(GetCharInstance, size_t, uint32_t, void*) \ 64 V(GetShortStatic, ssize_t, uint32_t) \ 65 V(GetCharStatic, size_t, uint32_t) \ 66 V(Get32Instance, ssize_t, uint32_t, void*) \ 67 V(Get32Static, ssize_t, uint32_t) \ 68 V(Get64Instance, int64_t, uint32_t, void*) \ 69 V(Get64Static, int64_t, uint32_t) \ 70 V(GetObjInstance, void*, uint32_t, void*) \ 71 V(GetObjStatic, void*, uint32_t) \ 72 \ 73 V(AputObject, void, mirror::Array*, int32_t, mirror::Object*) \ 74 \ 75 V(JniMethodStart, void) \ 76 V(JniMethodEnd, void) \ 77 V(JniDecodeReferenceResult, mirror::Object*, jobject, Thread*) \ 78 V(JniLockObject, void, mirror::Object*) \ 79 V(JniUnlockObject, void, mirror::Object*) \ 80 V(QuickGenericJniTrampoline, void, ArtMethod*) \ 81 V(JniMethodEntryHook, void) \ 82 \ 83 V(LockObject, void, mirror::Object*) \ 84 V(UnlockObject, void, mirror::Object*) \ 85 \ 86 V(CmpgDouble, int32_t, double, double) \ 87 V(CmpgFloat, int32_t, float, float) \ 88 V(CmplDouble, int32_t, double, double) \ 89 V(CmplFloat, int32_t, float, float) \ 90 V(Cos, double, double) \ 91 V(Sin, double, double) \ 92 V(Acos, double, double) \ 93 V(Asin, double, double) \ 94 V(Atan, double, double) \ 95 V(Atan2, double, double, double) \ 96 V(Pow, double, double, double) \ 97 V(Cbrt, double, double) \ 98 V(Cosh, double, double) \ 99 V(Exp, double, double) \ 100 V(Expm1, double, double) \ 101 V(Hypot, double, double, double) \ 102 V(Log, double, double) \ 103 V(Log10, double, double) \ 104 V(NextAfter, double, double, double) \ 105 V(Sinh, double, double) \ 106 V(Tan, double, double) \ 107 V(Tanh, double, double) \ 108 V(Fmod, double, double, double) \ 109 V(L2d, double, int64_t) \ 110 V(Fmodf, float, float, float) \ 111 V(L2f, float, int64_t) \ 112 V(D2iz, int32_t, double) \ 113 V(F2iz, int32_t, float) \ 114 V(Idivmod, int32_t, int32_t, int32_t) \ 115 V(D2l, int64_t, double) \ 116 V(F2l, int64_t, float) \ 117 V(Ldiv, int64_t, int64_t, int64_t) \ 118 V(Lmod, int64_t, int64_t, int64_t) \ 119 V(Lmul, int64_t, int64_t, int64_t) \ 120 V(ShlLong, uint64_t, uint64_t, uint32_t) \ 121 V(ShrLong, uint64_t, uint64_t, uint32_t) \ 122 V(UshrLong, uint64_t, uint64_t, uint32_t) \ 123 \ 124 V(IndexOf, int32_t, void*, uint32_t, uint32_t) \ 125 V(StringCompareTo, int32_t, void*, void*) \ 126 V(Memcpy, void*, void*, const void*, size_t) \ 127 \ 128 V(QuickImtConflictTrampoline, void, ArtMethod*) \ 129 V(QuickResolutionTrampoline, void, ArtMethod*) \ 130 V(QuickToInterpreterBridge, void, ArtMethod*) \ 131 V(InvokeDirectTrampolineWithAccessCheck, void, uint32_t, void*) \ 132 V(InvokeInterfaceTrampolineWithAccessCheck, void, uint32_t, void*) \ 133 V(InvokeStaticTrampolineWithAccessCheck, void, uint32_t, void*) \ 134 V(InvokeSuperTrampolineWithAccessCheck, void, uint32_t, void*) \ 135 V(InvokeVirtualTrampolineWithAccessCheck, void, uint32_t, void*) \ 136 V(InvokePolymorphic, void, uint32_t, void*) \ 137 V(InvokeCustom, void, uint32_t, void*) \ 138 \ 139 V(TestSuspend, void, void) \ 140 \ 141 V(DeliverException, void, mirror::Object*) \ 142 V(ThrowArrayBounds, void, int32_t, int32_t) \ 143 V(ThrowDivZero, void, void) \ 144 V(ThrowNullPointer, void, void) \ 145 V(ThrowStackOverflow, void, void*) \ 146 V(ThrowStringBounds, void, int32_t, int32_t) \ 147 V(Deoptimize, void, DeoptimizationKind) \ 148 \ 149 V(A64Load, int64_t, volatile const int64_t *) \ 150 V(A64Store, void, volatile int64_t *, int64_t) \ 151 \ 152 V(NewEmptyString, void, void) \ 153 V(NewStringFromBytes_B, void, void) \ 154 V(NewStringFromBytes_BB, void, void) \ 155 V(NewStringFromBytes_BI, void, void) \ 156 V(NewStringFromBytes_BII, void, void) \ 157 V(NewStringFromBytes_BIII, void, void) \ 158 V(NewStringFromBytes_BIIString, void, void) \ 159 V(NewStringFromBytes_BString, void, void) \ 160 V(NewStringFromBytes_BIICharset, void, void) \ 161 V(NewStringFromBytes_BCharset, void, void) \ 162 V(NewStringFromChars_C, void, void) \ 163 V(NewStringFromChars_CII, void, void) \ 164 V(NewStringFromChars_IIC, void, void) \ 165 V(NewStringFromCodePoints, void, void) \ 166 V(NewStringFromString, void, void) \ 167 V(NewStringFromStringBuffer, void, void) \ 168 V(NewStringFromStringBuilder, void, void) \ 169 V(NewStringFromUtf16Bytes_BII, void, void) \ 170 \ 171 V(StringBuilderAppend, void*, uint32_t) \ 172 \ 173 V(UpdateInlineCache, void, void) \ 174 V(CompileOptimized, void, ArtMethod*, Thread*) \ 175 \ 176 V(JniReadBarrier, void, ArtMethod*) \ 177 V(ReadBarrierMarkReg00, mirror::Object*, mirror::Object*) \ 178 V(ReadBarrierMarkReg01, mirror::Object*, mirror::Object*) \ 179 V(ReadBarrierMarkReg02, mirror::Object*, mirror::Object*) \ 180 V(ReadBarrierMarkReg03, mirror::Object*, mirror::Object*) \ 181 V(ReadBarrierMarkReg04, mirror::Object*, mirror::Object*) \ 182 V(ReadBarrierMarkReg05, mirror::Object*, mirror::Object*) \ 183 V(ReadBarrierMarkReg06, mirror::Object*, mirror::Object*) \ 184 V(ReadBarrierMarkReg07, mirror::Object*, mirror::Object*) \ 185 V(ReadBarrierMarkReg08, mirror::Object*, mirror::Object*) \ 186 V(ReadBarrierMarkReg09, mirror::Object*, mirror::Object*) \ 187 V(ReadBarrierMarkReg10, mirror::Object*, mirror::Object*) \ 188 V(ReadBarrierMarkReg11, mirror::Object*, mirror::Object*) \ 189 V(ReadBarrierMarkReg12, mirror::Object*, mirror::Object*) \ 190 V(ReadBarrierMarkReg13, mirror::Object*, mirror::Object*) \ 191 V(ReadBarrierMarkReg14, mirror::Object*, mirror::Object*) \ 192 V(ReadBarrierMarkReg15, mirror::Object*, mirror::Object*) \ 193 V(ReadBarrierMarkReg16, mirror::Object*, mirror::Object*) \ 194 V(ReadBarrierMarkReg17, mirror::Object*, mirror::Object*) \ 195 V(ReadBarrierMarkReg18, mirror::Object*, mirror::Object*) \ 196 V(ReadBarrierMarkReg19, mirror::Object*, mirror::Object*) \ 197 V(ReadBarrierMarkReg20, mirror::Object*, mirror::Object*) \ 198 V(ReadBarrierMarkReg21, mirror::Object*, mirror::Object*) \ 199 V(ReadBarrierMarkReg22, mirror::Object*, mirror::Object*) \ 200 V(ReadBarrierMarkReg23, mirror::Object*, mirror::Object*) \ 201 V(ReadBarrierMarkReg24, mirror::Object*, mirror::Object*) \ 202 V(ReadBarrierMarkReg25, mirror::Object*, mirror::Object*) \ 203 V(ReadBarrierMarkReg26, mirror::Object*, mirror::Object*) \ 204 V(ReadBarrierMarkReg27, mirror::Object*, mirror::Object*) \ 205 V(ReadBarrierMarkReg28, mirror::Object*, mirror::Object*) \ 206 V(ReadBarrierMarkReg29, mirror::Object*, mirror::Object*) \ 207 V(ReadBarrierSlow, mirror::Object*, mirror::Object*, mirror::Object*, uint32_t) \ 208 V(ReadBarrierForRootSlow, mirror::Object*, GcRoot<mirror::Object>*) \ 209 \ 210 V(MethodEntryHook, void, ArtMethod*, Thread*) \ 211 V(MethodExitHook, int32_t, Thread*, ArtMethod*, uint64_t*, uint64_t*) 212 213 #endif // ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ 214 #undef ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ // #define is only for lint. 215