quick_entrypoints_x86.S revision 57b86d47b66322693a070185fadfb43cb9c12eab
157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#include "asm_support.h" 257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#if defined(__APPLE__) 457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // Mac OS X mangles the functions with an underscore prefix 557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers #define art_deliver_exception_from_code _art_deliver_exception_from_code 657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers #define art_proxy_invoke_handler _art_proxy_invoke_handler 757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers #define artDeliverExceptionFromCode _artDeliverExceptionFromCode 857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#endif 957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 1057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* Deliver the given exception */ 1157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern artDeliverExceptionFromCode 1257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* Deliver an exception pending on a thread */ 1357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern artDeliverPendingException 1457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 1557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* Cache alignment for function entry */ 1657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro ALIGN_FUNCTION_ENTRY 1757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .balign 16 1857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 1957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 2057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 2157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Macro that sets up the callee save frame to conform with 2257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Runtime::CreateCalleeSaveMethod(...) 2357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 2457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro SETUP_SAVE_ALL_CALLEE_SAVE_FRAME 2557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %edi // Save callee saves (ebx is saved/restored by the upcall) 2657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %esi 2757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ebp 2857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers subl $16, %esp // Grow stack by 4 words, bottom word will hold Method* 2957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 3057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 3157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro RESTORE_CALLEE_SAVE_FRAME 3257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers addl $16, %esp // Remove padding 3357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %ebp // Restore callee saves 3457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %esi 3557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %edi 3657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 3757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 3857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 3957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Macro that sets up the callee save frame to conform with 4057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Runtime::CreateCalleeSaveMethod(...) 4157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 4257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro SETUP_REF_AND_ARG_CALLEE_SAVE_FRAME 4357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %edi // Save callee saves 4457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %esi 4557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ebp 4657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ebx // Save args 4757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %edx 4857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ecx 4957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %eax // Align stack, eax will be clobbered by Method* 5057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 5157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 5257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro RESTORE_REF_AND_ARG_CALLEE_SAVE_FRAME 5357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers addl $16, %esp // Remove padding 5457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %ebp // Restore callee saves 5557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %esi 5657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers popl %edi 5757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 5857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 5957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 6057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Macro that set calls through to artDeliverPendingExceptionFromCode, where the pending 6157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * exception is Thread::Current()->exception_. 6257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 6357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro DELIVER_PENDING_EXCEPTION 6457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers SETUP_SAVE_ALL_CALLEE_SAVE_FRAME // save callee saves for throw 6557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers mov %esp, %ecx 6657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // Outgoing argument set up 6757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers subl $8, %esp // Alignment padding 6857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ecx // pass SP 6957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %fs:THREAD_SELF_OFFSET // pass Thread::Current() 7057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers call artDeliverPendingExceptionFromCode // artDeliverExceptionFromCode(Thread*, SP) 7157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 7257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 7357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 7457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro NO_ARG_RUNTIME_EXCEPTION c_name, cxx_name 7557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .global \c_name 7657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern \cxx_name 7757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers ALIGN_FUNCTION_ENTRY 7857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name: 7957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers SETUP_SAVE_ALL_CALLEE_SAVE_FRAME // save all registers as basis for long jump context 8057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers mov %esp, %ecx 8157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // Outgoing argument set up 8257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers subl $8, %esp // alignment padding 8357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %fs:THREAD_SELF_OFFSET // pass Thread::Current() 8457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ecx // pass SP 8557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers call \cxx_name // \cxx_name(Thread*, SP) 8657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 // unreached 8757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 8857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 8957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro ONE_ARG_RUNTIME_EXCEPTION c_name, cxx_name 9057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .global \c_name 9157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern \cxx_name 9257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers ALIGN_FUNCTION_ENTRY 9357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name: 9457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers SETUP_SAVE_ALL_CALLEE_SAVE_FRAME // save all registers as basis for long jump context 9557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers mov %esp, %ecx 9657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // Outgoing argument set up 9757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl $0 // alignment padding 9857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ecx // pass SP 9957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %fs:THREAD_SELF_OFFSET // pass Thread::Current() 10057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %eax // pass arg1 10157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers call \cxx_name // \cxx_name(arg1, Thread*, SP) 10257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 // unreached 10357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 10457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 10557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro TWO_ARG_RUNTIME_EXCEPTION c_name, cxx_name 10657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .global \c_name 10757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern \cxx_name 10857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers ALIGN_FUNCTION_ENTRY 10957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name: 11057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers SETUP_SAVE_ALL_CALLEE_SAVE_FRAME // save all registers as basis for long jump context 11157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers mov %esp, %edx 11257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // Outgoing argument set up 11357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %edx // pass SP 11457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %fs:THREAD_SELF_OFFSET // pass Thread::Current() 11557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %eax // pass arg1 11657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers pushl %ecx // pass arg2 11757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers call \cxx_name // \cxx_name(arg1, Thread*, SP) 11857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 // unreached 11957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 12057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 12157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 12257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code, saves callee saves and then calls artThrowException 12357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * that will place a mock Method* at the bottom of the stack. Arg1 holds the exception. 12457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 12557b86d47b66322693a070185fadfb43cb9c12eabIan RogersONE_ARG_RUNTIME_EXCEPTION art_deliver_exception_from_code, artDeliverExceptionFromCode 12657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 12757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 12857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver a NullPointerException. 12957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 13057b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_null_pointer_exception_from_code, artThrowNullPointerExceptionFromCode 13157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 13257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 13357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver an ArithmeticException. 13457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 13557b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_div_zero_from_code, artThrowDivZeroFromCode 13657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 13757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 13857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver an ArrayIndexOutOfBoundsException. Arg1 holds 13957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * index, arg2 holds limit. 14057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 14157b86d47b66322693a070185fadfb43cb9c12eabIan RogersTWO_ARG_RUNTIME_EXCEPTION art_throw_array_bounds_from_code, artThrowArrayBoundsFromCode 14257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 14357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 14457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver a StackOverflowError. 14557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 14657b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_stack_overflow_from_code, artThrowStackOverflowFromCode 14757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 14857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 14957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver a NoSuchMethodError. 15057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 15157b86d47b66322693a070185fadfb43cb9c12eabIan RogersONE_ARG_RUNTIME_EXCEPTION art_throw_no_such_method_from_code, artThrowNoSuchMethodFromCode 15257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 15357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 15457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * Called by managed code to create and deliver verification errors. Arg1 is kind, arg2 is ref. 15557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 15657b86d47b66322693a070185fadfb43cb9c12eabIan RogersTWO_ARG_RUNTIME_EXCEPTION art_throw_verification_error_from_code, artThrowVerificationErrorFromCode 15757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 15857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers /* 15957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * All generated callsites for interface invokes and invocation slow paths will load arguments 16057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * as usual - except instead of loading arg0/r0 with the target Method*, arg0/r0 will contain 16157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * the method_idx. This wrapper will save arg1-arg3, load the caller's Method*, align the 16257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * stack and call the appropriate C helper. 16357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * NOTE: "this" is first visible argument of the target, and so can be found in arg1/r1. 16457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * 16557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * The helper will attempt to locate the target and return a 64-bit result in r0/r1 consisting 16657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * of the target Method* in r0 and method->code_ in r1. 16757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * 16857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * If unsuccessful, the helper will return NULL/NULL. There will bea pending exception in the 16957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * thread and we branch to another stub to deliver it. 17057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * 17157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * On success this wrapper will restore arguments and *jump* to the target, leaving the lr 17257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers * pointing back to the original caller. 17357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers */ 17457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro INVOKE_TRAMPOLINE c_name, cxx_name 17557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .global \c_name 17657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .extern \cxx_name 17757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers ALIGN_FUNCTION_ENTRY 17857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name: 17957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 18057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm 18157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 18257b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_interface_trampoline, artInvokeInterfaceTrampoline 18357b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_interface_trampoline_with_access_check, artInvokeInterfaceTrampolineWithAccessCheck 18457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 18557b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_static_trampoline_with_access_check, artInvokeStaticTrampolineWithAccessCheck 18657b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_direct_trampoline_with_access_check, artInvokeDirectTrampolineWithAccessCheck 18757b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_super_trampoline_with_access_check, artInvokeSuperTrampolineWithAccessCheck 18857b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_virtual_trampoline_with_access_check, artInvokeVirtualTrampolineWithAccessCheck 18957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 19057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers // TODO 19157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_proxy_invoke_handler 19257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_proxy_invoke_handler: 19357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 19457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 19557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_update_debugger 19657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_update_debugger: 19757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 19857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 19957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_test_suspend 20057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_test_suspend: 20157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 20257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 20357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_alloc_object_from_code 20457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_object_from_code: 20557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 20657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 20757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_alloc_object_from_code_with_access_check 20857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_object_from_code_with_access_check: 20957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 21057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 21157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_alloc_array_from_code 21257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_array_from_code: 21357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 21457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 21557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_alloc_array_from_code_with_access_check 21657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_array_from_code_with_access_check: 21757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 21857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 21957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_check_and_alloc_array_from_code 22057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_and_alloc_array_from_code: 22157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 22257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 22357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_check_and_alloc_array_from_code_with_access_check 22457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_and_alloc_array_from_code_with_access_check: 22557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 22657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 22757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_can_put_array_element_from_code 22857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_can_put_array_element_from_code: 22957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 23057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 23157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_check_cast_from_code 23257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_cast_from_code: 23357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 23457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 23557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_initialize_static_storage_from_code 23657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_static_storage_from_code: 23757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 23857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 23957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_initialize_type_and_verify_access_from_code 24057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_type_and_verify_access_from_code: 24157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 24257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 24357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_initialize_type_from_code 24457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_type_from_code: 24557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 24657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 24757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_resolve_string_from_code 24857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_resolve_string_from_code: 24957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 25057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 25157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set32_instance_from_code 25257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set32_instance_from_code: 25357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 25457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 25557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set64_instance_from_code 25657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set64_instance_from_code: 25757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 25857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 25957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set_obj_instance_from_code 26057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set_obj_instance_from_code: 26157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 26257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 26357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get32_instance_from_code 26457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get32_instance_from_code: 26557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 26657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 26757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get64_instance_from_code 26857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get64_instance_from_code: 26957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 27057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 27157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get_obj_instance_from_code 27257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get_obj_instance_from_code: 27357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 27457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 27557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set32_static_from_code 27657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set32_static_from_code: 27757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 27857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 27957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set64_static_from_code 28057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set64_static_from_code: 28157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 28257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 28357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_set_obj_static_from_code 28457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set_obj_static_from_code: 28557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 28657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 28757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get32_static_from_code 28857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get32_static_from_code: 28957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 29057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 29157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get64_static_from_code 29257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get64_static_from_code: 29357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 29457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 29557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_get_obj_static_from_code 29657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get_obj_static_from_code: 29757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 29857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 29957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_handle_fill_data_from_code 30057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_handle_fill_data_from_code: 30157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 30257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 30357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_lock_object_from_code 30457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_lock_object_from_code: 30557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 30657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 30757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_unlock_object_from_code 30857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_unlock_object_from_code: 30957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 31057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 31157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_indexof 31257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_indexof: 31357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 31457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 31557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl __memcmp16 31657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers__memcmp16: 31757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 31857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers 31957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers .globl art_string_compareto 32057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_string_compareto: 32157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers int3 322