entrypoints_init_x86.cc revision 468532ea115657709bc32ee498e701a4c71762d4
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2012 The Android Open Source Project 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * you may not use this file except in compliance with the License. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may obtain a copy of the License at 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See the License for the specific language governing permissions and 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * limitations under the License. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "entrypoints/portable/portable_entrypoints.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "entrypoints/quick/quick_entrypoints.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "entrypoints/entrypoint_utils.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace art { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interpreter entrypoints. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void artInterpreterToInterpreterBridge(Thread* self, MethodHelper& mh, 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const DexFile::CodeItem* code_item, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShadowFrame* shadow_frame, JValue* result); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void artInterperterToCompiledCodeBridge(Thread* self, MethodHelper& mh, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DexFile::CodeItem* code_item, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShadowFrame* shadow_frame, JValue* result); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Portable entrypoints. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_portable_resolution_trampoline(mirror::AbstractMethod*); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_portable_to_interpreter_bridge(mirror::AbstractMethod*); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Alloc entrypoints. 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_alloc_array(uint32_t, void*, int32_t); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_alloc_array_with_access_check(uint32_t, void*, int32_t); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_alloc_object(uint32_t type_idx, void* method); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_alloc_object_with_access_check(uint32_t type_idx, void* method); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void* art_quick_check_and_alloc_array(uint32_t, void*, int32_t); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void* art_quick_check_and_alloc_array_with_access_check(uint32_t, void*, int32_t); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Cast entrypoints. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" uint32_t art_quick_is_assignable(const mirror::Class* klass, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const mirror::Class* ref_class); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void art_quick_can_put_array_element(void*, void*); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void art_quick_check_cast(void*, void*); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DexCache entrypoints. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_initialize_static_storage(uint32_t, void*); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void* art_quick_initialize_type(uint32_t, void*); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void* art_quick_initialize_type_and_verify_access(uint32_t, void*); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void* art_quick_resolve_string(void*, uint32_t); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Field entrypoints. 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set32_instance(uint32_t, void*, int32_t); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set32_static(uint32_t, int32_t); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set64_instance(uint32_t, void*, int64_t); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set64_static(uint32_t, int64_t); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set_obj_instance(uint32_t, void*, void*); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int art_quick_set_obj_static(uint32_t, void*); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int32_t art_quick_get32_instance(uint32_t, void*); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int32_t art_quick_get32_static(uint32_t); 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" int64_t art_quick_get64_instance(uint32_t, void*); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int64_t art_quick_get64_static(uint32_t); 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" void* art_quick_get_obj_instance(uint32_t, void*); 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" void* art_quick_get_obj_static(uint32_t); 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// FillArray entrypoint. 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" void art_quick_handle_fill_data(void*, void*); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Lock entrypoints. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_lock_object(void*); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_unlock_object(void*); 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Math entrypoints. 77ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" double art_quick_fmod(double, double); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" float art_quick_fmodf(float, float); 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" double art_quick_l2d(int64_t); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" float art_quick_l2f(int64_t); 81ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern "C" int64_t art_quick_d2l(double); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int64_t art_quick_f2l(float); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int32_t art_quick_idivmod(int32_t, int32_t); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" int64_t art_quick_ldiv(int64_t, int64_t); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int64_t art_quick_ldivmod(int64_t, int64_t); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int64_t art_quick_lmul(int64_t, int64_t); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" uint64_t art_quick_lshl(uint64_t, uint32_t); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" uint64_t art_quick_lshr(uint64_t, uint32_t); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" uint64_t art_quick_lushr(uint64_t, uint32_t); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Intrinsic entrypoints. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int32_t art_quick_memcmp16(void*, void*, int32_t); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int32_t art_quick_indexof(void*, uint32_t, uint32_t, uint32_t); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" int32_t art_quick_string_compareto(void*, void*); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void* art_quick_memcpy(void*, const void*, size_t); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Invoke entrypoints. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_resolution_trampoline(mirror::AbstractMethod*); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_to_interpreter_bridge(mirror::AbstractMethod*); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_direct_trampoline_with_access_check(uint32_t, void*); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_interface_trampoline(uint32_t, void*); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_interface_trampoline_with_access_check(uint32_t, void*); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_static_trampoline_with_access_check(uint32_t, void*); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_super_trampoline_with_access_check(uint32_t, void*); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_invoke_virtual_trampoline_with_access_check(uint32_t, void*); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 107868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Thread entrypoints. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern void CheckSuspendFromCode(Thread* thread); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_test_suspend(); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Throw entrypoints. 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_deliver_exception(void*); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_throw_array_bounds(int32_t index, int32_t limit); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_throw_div_zero(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_throw_no_such_method(int32_t method_idx); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_throw_null_pointer_exception(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" void art_quick_throw_stack_overflow(void*); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InitEntryPoints(InterpreterEntryPoints* ipoints, JniEntryPoints* jpoints, 120ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PortableEntryPoints* ppoints, QuickEntryPoints* qpoints) { 121ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Interpreter 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ipoints->pInterpreterToInterpreterBridge = artInterpreterToInterpreterBridge; 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ipoints->pInterpreterToCompiledCodeBridge = artInterperterToCompiledCodeBridge; 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // JNI 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) jpoints->pDlsymLookup = art_jni_dlsym_lookup_stub; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 128ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Portable 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ppoints->pPortableResolutionTrampoline = art_portable_resolution_trampoline; 130ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ppoints->pPortableToInterpreterBridge = art_portable_to_interpreter_bridge; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Alloc 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) qpoints->pAllocArray = art_quick_alloc_array; 134ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch qpoints->pAllocArrayWithAccessCheck = art_quick_alloc_array_with_access_check; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pAllocObject = art_quick_alloc_object; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pAllocObjectWithAccessCheck = art_quick_alloc_object_with_access_check; 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) qpoints->pCheckAndAllocArray = art_quick_check_and_alloc_array; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pCheckAndAllocArrayWithAccessCheck = art_quick_check_and_alloc_array_with_access_check; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cast 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInstanceofNonTrivial = art_quick_is_assignable; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pCanPutArrayElement = art_quick_can_put_array_element; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pCheckCast = art_quick_check_cast; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // DexCache 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInitializeStaticStorage = art_quick_initialize_static_storage; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInitializeTypeAndVerifyAccess = art_quick_initialize_type_and_verify_access; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInitializeType = art_quick_initialize_type; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pResolveString = art_quick_resolve_string; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Field 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSet32Instance = art_quick_set32_instance; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSet32Static = art_quick_set32_static; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSet64Instance = art_quick_set64_instance; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSet64Static = art_quick_set64_static; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSetObjInstance = art_quick_set_obj_instance; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pSetObjStatic = art_quick_set_obj_static; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGet32Instance = art_quick_get32_instance; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGet64Instance = art_quick_get64_instance; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGetObjInstance = art_quick_get_obj_instance; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGet32Static = art_quick_get32_static; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGet64Static = art_quick_get64_static; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pGetObjStatic = art_quick_get_obj_static; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FillArray 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pHandleFillArrayData = art_quick_handle_fill_data; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // JNI 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodStart = JniMethodStart; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodStartSynchronized = JniMethodStartSynchronized; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodEnd = JniMethodEnd; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodEndSynchronized = JniMethodEndSynchronized; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodEndWithReference = JniMethodEndWithReference; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pJniMethodEndWithReferenceSynchronized = JniMethodEndWithReferenceSynchronized; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Locks 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pLockObject = art_quick_lock_object; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pUnlockObject = art_quick_unlock_object; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 180ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Math 181ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // points->pCmpgDouble = NULL; // Not needed on x86. 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // points->pCmpgFloat = NULL; // Not needed on x86. 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // points->pCmplDouble = NULL; // Not needed on x86. 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // points->pCmplFloat = NULL; // Not needed on x86. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pFmod = art_quick_fmod; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pL2d = art_quick_l2d; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pFmodf = art_quick_fmodf; 188ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch qpoints->pL2f = art_quick_l2f; 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // points->pD2iz = NULL; // Not needed on x86. 190ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // points->pF2iz = NULL; // Not needed on x86. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pIdivmod = art_quick_idivmod; 192ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch qpoints->pD2l = art_quick_d2l; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) qpoints->pF2l = art_quick_f2l; 194ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch qpoints->pLdiv = art_quick_ldiv; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pLdivmod = art_quick_ldivmod; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pLmul = art_quick_lmul; 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) qpoints->pShlLong = art_quick_lshl; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pShrLong = art_quick_lshr; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pUshrLong = art_quick_lushr; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Intrinsics 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pIndexOf = art_quick_indexof; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pMemcmp16 = art_quick_memcmp16; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pStringCompareTo = art_quick_string_compareto; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pMemcpy = art_quick_memcpy; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invocation 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pQuickResolutionTrampoline = art_quick_resolution_trampoline; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pQuickToInterpreterBridge = art_quick_to_interpreter_bridge; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeDirectTrampolineWithAccessCheck = art_quick_invoke_direct_trampoline_with_access_check; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeInterfaceTrampoline = art_quick_invoke_interface_trampoline; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeInterfaceTrampolineWithAccessCheck = art_quick_invoke_interface_trampoline_with_access_check; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeStaticTrampolineWithAccessCheck = art_quick_invoke_static_trampoline_with_access_check; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeSuperTrampolineWithAccessCheck = art_quick_invoke_super_trampoline_with_access_check; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pInvokeVirtualTrampolineWithAccessCheck = art_quick_invoke_virtual_trampoline_with_access_check; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Thread 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pCheckSuspend = CheckSuspendFromCode; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pTestSuspend = art_quick_test_suspend; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Throws 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pDeliverException = art_quick_deliver_exception; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pThrowArrayBounds = art_quick_throw_array_bounds; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pThrowDivZero = art_quick_throw_div_zero; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pThrowNoSuchMethod = art_quick_throw_no_such_method; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pThrowNullPointer = art_quick_throw_null_pointer_exception; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) qpoints->pThrowStackOverflow = art_quick_throw_stack_overflow; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace art 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)