Home | History | Annotate | Download | only in quick
      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