diff options
Diffstat (limited to 'runtime/arch/mips/quick_entrypoints_mips.S')
-rw-r--r-- | runtime/arch/mips/quick_entrypoints_mips.S | 167 |
1 files changed, 165 insertions, 2 deletions
diff --git a/runtime/arch/mips/quick_entrypoints_mips.S b/runtime/arch/mips/quick_entrypoints_mips.S index 8786222250..9e9e5236af 100644 --- a/runtime/arch/mips/quick_entrypoints_mips.S +++ b/runtime/arch/mips/quick_entrypoints_mips.S @@ -739,6 +739,59 @@ ENTRY art_quick_initialize_type_and_verify_access move $a3, $sp # pass $sp RETURN_IF_RESULT_IS_NON_ZERO END art_quick_initialize_type_and_verify_access + /* + * Called by managed code to resolve a static field and load a boolean primitive value. + */ + .extern artGetBooleanStaticFromCode +ENTRY art_quick_get_boolean_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a1, 64($sp) # pass referrer's Method* + move $a2, rSELF # pass Thread::Current + jal artGetBooleanStaticFromCode # (uint32_t field_idx, const Method* referrer, Thread*, $sp) + move $a3, $sp # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_boolean_static + /* + * Called by managed code to resolve a static field and load a byte primitive value. + */ + .extern artGetByteStaticFromCode +ENTRY art_quick_get_byte_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a1, 64($sp) # pass referrer's Method* + move $a2, rSELF # pass Thread::Current + jal artGetByteStaticFromCode # (uint32_t field_idx, const Method* referrer, Thread*, $sp) + move $a3, $sp # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_byte_static + + /* + * Called by managed code to resolve a static field and load a char primitive value. + */ + .extern artGetCharStaticFromCode +ENTRY art_quick_get_char_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a1, 64($sp) # pass referrer's Method* + move $a2, rSELF # pass Thread::Current + jal artGetCharStaticFromCode # (uint32_t field_idx, const Method* referrer, Thread*, $sp) + move $a3, $sp # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_char_static + /* + * Called by managed code to resolve a static field and load a short primitive value. + */ + .extern artGetShortStaticFromCode +ENTRY art_quick_get_short_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a1, 64($sp) # pass referrer's Method* + move $a2, rSELF # pass Thread::Current + jal artGetShortStaticFromCode # (uint32_t field_idx, const Method* referrer, Thread*, $sp) + move $a3, $sp # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_short_static /* * Called by managed code to resolve a static field and load a 32-bit primitive value. @@ -783,6 +836,60 @@ ENTRY art_quick_get_obj_static END art_quick_get_obj_static /* + * Called by managed code to resolve an instance field and load a boolean primitive value. + */ + .extern artGetBooleanInstanceFromCode +ENTRY art_quick_get_boolean_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artGetBooleanInstanceFromCode # (field_idx, Object*, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_boolean_instance + /* + * Called by managed code to resolve an instance field and load a byte primitive value. + */ + .extern artGetByteInstanceFromCode +ENTRY art_quick_get_byte_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artGetByteInstanceFromCode # (field_idx, Object*, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_byte_instance + + /* + * Called by managed code to resolve an instance field and load a char primitive value. + */ + .extern artGetCharInstanceFromCode +ENTRY art_quick_get_char_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artGetCharInstanceFromCode # (field_idx, Object*, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_char_instance + /* + * Called by managed code to resolve an instance field and load a short primitive value. + */ + .extern artGetShortInstanceFromCode +ENTRY art_quick_get_short_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artGetShortInstanceFromCode # (field_idx, Object*, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_NO_EXCEPTION +END art_quick_get_short_instance + + /* * Called by managed code to resolve an instance field and load a 32-bit primitive value. */ .extern artGet32InstanceFromCode @@ -825,6 +932,34 @@ ENTRY art_quick_get_obj_instance END art_quick_get_obj_instance /* + * Called by managed code to resolve a static field and store a 8-bit primitive value. + */ + .extern artSet8StaticFromCode +ENTRY art_quick_set8_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artSet8StaticFromCode # (field_idx, new_val, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_ZERO +END art_quick_set8_static + + /* + * Called by managed code to resolve a static field and store a 16-bit primitive value. + */ + .extern artSet16StaticFromCode +ENTRY art_quick_set16_static + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a2, 64($sp) # pass referrer's Method* + move $a3, rSELF # pass Thread::Current + jal artSet16StaticFromCode # (field_idx, new_val, referrer, Thread*, $sp) + sw $sp, 16($sp) # pass $sp + RETURN_IF_ZERO +END art_quick_set16_static + + /* * Called by managed code to resolve a static field and store a 32-bit primitive value. */ .extern artSet32StaticFromCode @@ -841,7 +976,7 @@ END art_quick_set32_static /* * Called by managed code to resolve a static field and store a 64-bit primitive value. */ - .extern artSet32StaticFromCode + .extern artSet64StaticFromCode ENTRY art_quick_set64_static GENERATE_GLOBAL_POINTER SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC @@ -867,6 +1002,34 @@ ENTRY art_quick_set_obj_static END art_quick_set_obj_static /* + * Called by managed code to resolve an instance field and store a 8-bit primitive value. + */ + .extern artSet8InstanceFromCode +ENTRY art_quick_set8_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a3, 64($sp) # pass referrer's Method* + sw rSELF, 16($sp) # pass Thread::Current + jal artSet8InstanceFromCode # (field_idx, Object*, new_val, referrer, Thread*, $sp) + sw $sp, 20($sp) # pass $sp + RETURN_IF_ZERO +END art_quick_set8_instance + + /* + * Called by managed code to resolve an instance field and store a 16-bit primitive value. + */ + .extern artSet16InstanceFromCode +ENTRY art_quick_set16_instance + GENERATE_GLOBAL_POINTER + SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC + lw $a3, 64($sp) # pass referrer's Method* + sw rSELF, 16($sp) # pass Thread::Current + jal artSet16InstanceFromCode # (field_idx, Object*, new_val, referrer, Thread*, $sp) + sw $sp, 20($sp) # pass $sp + RETURN_IF_ZERO +END art_quick_set16_instance + + /* * Called by managed code to resolve an instance field and store a 32-bit primitive value. */ .extern artSet32InstanceFromCode @@ -883,7 +1046,7 @@ END art_quick_set32_instance /* * Called by managed code to resolve an instance field and store a 64-bit primitive value. */ - .extern artSet32InstanceFromCode + .extern artSet64InstanceFromCode ENTRY art_quick_set64_instance GENERATE_GLOBAL_POINTER SETUP_REF_ONLY_CALLEE_SAVE_FRAME # save callee saves in case of GC |