quick_entrypoints_list.h revision 984305917bf57b3f8d92965e4715a0370cc5bcfb
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