blob: eaf874eae86d7f16ddee955da847cb3c83024600 [file] [log] [blame]
Andreas Gampe98430592014-07-27 19:44:50 -07001/*
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) \
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080023 V(AllocArray, void*, uint32_t, int32_t, mirror::ArtMethod*) \
24 V(AllocArrayResolved, void*, mirror::Class*, int32_t, mirror::ArtMethod*) \
25 V(AllocArrayWithAccessCheck, void*, uint32_t, int32_t, mirror::ArtMethod*) \
26 V(AllocObject, void*, uint32_t, mirror::ArtMethod*) \
27 V(AllocObjectResolved, void*, mirror::Class*, mirror::ArtMethod*) \
28 V(AllocObjectInitialized, void*, mirror::Class*, mirror::ArtMethod*) \
29 V(AllocObjectWithAccessCheck, void*, uint32_t, mirror::ArtMethod*) \
30 V(CheckAndAllocArray, void*, uint32_t, int32_t, mirror::ArtMethod*) \
31 V(CheckAndAllocArrayWithAccessCheck, void*, uint32_t, int32_t, mirror::ArtMethod*) \
Andreas Gampe98430592014-07-27 19:44:50 -070032\
33 V(InstanceofNonTrivial, uint32_t, const mirror::Class*, const mirror::Class*) \
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080034 V(CheckCast, void, const mirror::Class*, const mirror::Class*) \
Andreas Gampe98430592014-07-27 19:44:50 -070035\
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080036 V(InitializeStaticStorage, void*, uint32_t, mirror::ArtMethod*) \
37 V(InitializeTypeAndVerifyAccess, void*, uint32_t, mirror::ArtMethod*) \
38 V(InitializeType, void*, uint32_t, mirror::ArtMethod*) \
39 V(ResolveString, void*, uint32_t, mirror::ArtMethod*) \
Andreas Gampe98430592014-07-27 19:44:50 -070040\
Fred Shih37f05ef2014-07-16 18:38:08 -070041 V(Set8Instance, int, uint32_t, void*, int8_t) \
42 V(Set8Static, int, uint32_t, int8_t) \
43 V(Set16Instance, int, uint32_t, void*, int16_t) \
44 V(Set16Static, int, uint32_t, int16_t) \
Andreas Gampe98430592014-07-27 19:44:50 -070045 V(Set32Instance, int, uint32_t, void*, int32_t) \
46 V(Set32Static, int, uint32_t, int32_t) \
47 V(Set64Instance, int, uint32_t, void*, int64_t) \
48 V(Set64Static, int, uint32_t, int64_t) \
49 V(SetObjInstance, int, uint32_t, void*, void*) \
50 V(SetObjStatic, int, uint32_t, void*) \
Fred Shih37f05ef2014-07-16 18:38:08 -070051 V(GetByteInstance, int8_t, uint32_t, void*) \
52 V(GetBooleanInstance, uint8_t, uint32_t, void*) \
53 V(GetByteStatic, int8_t, uint32_t) \
54 V(GetBooleanStatic, uint8_t, uint32_t) \
55 V(GetShortInstance, int16_t, uint32_t, void*) \
56 V(GetCharInstance, uint16_t, uint32_t, void*) \
57 V(GetShortStatic, int16_t, uint32_t) \
58 V(GetCharStatic, uint16_t, uint32_t) \
Andreas Gampe98430592014-07-27 19:44:50 -070059 V(Get32Instance, int32_t, uint32_t, void*) \
60 V(Get32Static, int32_t, uint32_t) \
61 V(Get64Instance, int64_t, uint32_t, void*) \
62 V(Get64Static, int64_t, uint32_t) \
63 V(GetObjInstance, void*, uint32_t, void*) \
64 V(GetObjStatic, void*, uint32_t) \
65\
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080066 V(AputObjectWithNullAndBoundCheck, void, mirror::Array*, int32_t, mirror::Object*) \
67 V(AputObjectWithBoundCheck, void, mirror::Array*, int32_t, mirror::Object*) \
68 V(AputObject, void, mirror::Array*, int32_t, mirror::Object*) \
Andreas Gampe98430592014-07-27 19:44:50 -070069 V(HandleFillArrayData, void, void*, void*) \
70\
71 V(JniMethodStart, uint32_t, Thread*) \
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080072 V(JniMethodStartSynchronized, uint32_t, jobject, Thread*) \
73 V(JniMethodEnd, void, uint32_t, Thread*) \
74 V(JniMethodEndSynchronized, void, uint32_t, jobject, Thread*) \
75 V(JniMethodEndWithReference, mirror::Object*, jobject, uint32_t, Thread*) \
76 V(JniMethodEndWithReferenceSynchronized, mirror::Object*, jobject, uint32_t, jobject, Thread*) \
Andreas Gampe98430592014-07-27 19:44:50 -070077 V(QuickGenericJniTrampoline, void, mirror::ArtMethod*) \
78\
Andreas Gampe1cc7dba2014-12-17 18:43:01 -080079 V(LockObject, void, mirror::Object*) \
80 V(UnlockObject, void, mirror::Object*) \
Andreas Gampe98430592014-07-27 19:44:50 -070081\
82 V(CmpgDouble, int32_t, double, double) \
83 V(CmpgFloat, int32_t, float, float) \
84 V(CmplDouble, int32_t, double, double) \
85 V(CmplFloat, int32_t, float, float) \
86 V(Fmod, double, double, double) \
87 V(L2d, double, int64_t) \
88 V(Fmodf, float, float, float) \
89 V(L2f, float, int64_t) \
90 V(D2iz, int32_t, double) \
91 V(F2iz, int32_t, float) \
92 V(Idivmod, int32_t, int32_t, int32_t) \
93 V(D2l, int64_t, double) \
94 V(F2l, int64_t, float) \
95 V(Ldiv, int64_t, int64_t, int64_t) \
96 V(Lmod, int64_t, int64_t, int64_t) \
97 V(Lmul, int64_t, int64_t, int64_t) \
98 V(ShlLong, uint64_t, uint64_t, uint32_t) \
99 V(ShrLong, uint64_t, uint64_t, uint32_t) \
100 V(UshrLong, uint64_t, uint64_t, uint32_t) \
101\
102 V(IndexOf, int32_t, void*, uint32_t, uint32_t, uint32_t) \
103 V(StringCompareTo, int32_t, void*, void*) \
104 V(Memcpy, void*, void*, const void*, size_t) \
105\
106 V(QuickImtConflictTrampoline, void, mirror::ArtMethod*) \
107 V(QuickResolutionTrampoline, void, mirror::ArtMethod*) \
108 V(QuickToInterpreterBridge, void, mirror::ArtMethod*) \
109 V(InvokeDirectTrampolineWithAccessCheck, void, uint32_t, void*) \
110 V(InvokeInterfaceTrampolineWithAccessCheck, void, uint32_t, void*) \
111 V(InvokeStaticTrampolineWithAccessCheck, void, uint32_t, void*) \
112 V(InvokeSuperTrampolineWithAccessCheck, void, uint32_t, void*) \
113 V(InvokeVirtualTrampolineWithAccessCheck, void, uint32_t, void*) \
114\
115 V(TestSuspend, void, void) \
116\
Andreas Gampe1cc7dba2014-12-17 18:43:01 -0800117 V(DeliverException, void, mirror::Object*) \
Andreas Gampe98430592014-07-27 19:44:50 -0700118 V(ThrowArrayBounds, void, int32_t, int32_t) \
119 V(ThrowDivZero, void, void) \
120 V(ThrowNoSuchMethod, void, int32_t) \
121 V(ThrowNullPointer, void, void) \
122 V(ThrowStackOverflow, void, void*) \
Mingyao Yangd43b3ac2015-04-01 14:03:04 -0700123 V(Deoptimize, void, void) \
Andreas Gampe98430592014-07-27 19:44:50 -0700124\
125 V(A64Load, int64_t, volatile const int64_t *) \
126 V(A64Store, void, volatile int64_t *, int64_t)
127
128
129#endif // ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_
130#undef ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_LIST_H_ // #define is only for lint.