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