6 .globl _builtin_throw_exception
8 .globl _builtin_canstore
9 .globl _builtin_trace_exception
10 .globl _builtin_monitorenter
11 .globl _builtin_monitorexit
14 .globl _builtin_checkarraycast
15 .globl _proto_java_lang_NullPointerException
16 .globl _proto_java_lang_ArrayIndexOutOfBoundsException
17 .globl _proto_java_lang_ArrayStoreException
18 .globl _proto_java_lang_ArithmeticException
19 .globl _proto_java_lang_ClassCastException
23 #define MethodPointer -8
29 #define ExTableSize -32
30 #define ExTableStart -32
32 #define ExEntrySize -16
35 #define ExHandlerPC -12
36 #define ExCatchType -16
51 .long _builtin_throw_exception
54 .long 0 /* catch type all */
55 .long calljava_xhandler /* handler pc */
56 .long calljava_xhandler /* end pc */
57 .long _asm_calljavamethod /* start pc */
58 .long 1 /* extable size */
63 .long 24 /* frame size */
64 .long 0 /* method pointer (pointer to name) */
68 .globl _asm_docalljavamethod
69 _asm_docalljavamethod:
104 // addis mptr,r31,ha16(_asm_call_jit_compiler-0b)
105 addi mptr,r31,lo16(_asm_call_jit_compiler-0b)
114 addi pv,itmp1,lo16(_asm_docalljavamethod-1b)
143 // addis pv,r31,ha16(builtinthrow-0b)
144 lwz itmp1,lo16(builtinthrow-0b)(r31)
147 b calljava_regrestore
155 .globl _asm_call_jit_compiler
156 _asm_call_jit_compiler:
206 // addis pv,r31,ha16(jitcompile-0b)
207 lwz itmp1,lo16(jitcompile-0b)(r31)
252 builtin_traceexception:
253 .long _builtin_trace_exception
254 builtin_monitorenter:
255 .long _builtin_monitorenter
257 .long _builtin_monitorexit
263 .globl _asm_handle_nat_exception
264 _asm_handle_nat_exception:
272 bne _asm_handle_exception
277 .globl _asm_handle_exception
278 _asm_handle_exception:
309 lwz r4,MethodPointer(pv)
316 lwz itmp1,lo16(builtin_traceexception-0b)(itmp1)
329 lwz r3,ExTableSize(pv)
332 addi r4,pv,ExTableStart
341 lwz r7,ExCatchType(r4)
345 lwz r6,offobjvftbl(xptr)
346 lwz r7,offobjvftbl(r7)
347 lwz r6,offbaseval(r6)
348 lwz r8,offbaseval(r7)
349 lwz r7,offdiffval(r7)
355 lwz xpc,ExHandlerPC(r4)
384 addi r4,r4,ExEntrySize
390 beq ex_already_cleared
413 lwz itmp1,lo16(builtin_monitorexit-0b)(itmp1)
444 addi r5,r5,lo16(ex_int2-ex_int1)
466 addi r5,r5,lo16(ex_flt2-ex_flt1)
501 .globl _asm_builtin_checkarraycast
502 _asm_builtin_checkarraycast:
509 lwz itmp1,lo16(builtincheckarraycast-0b)(pv)
522 lwz xptr,lo16(proto_java_lang_ClassCastException-0b)(pv)
526 b _asm_handle_nat_exception
528 .globl _asm_builtin_checkcast
529 _asm_builtin_checkcast:
531 lwz xptr,lo16(proto_java_lang_NullPointerException-0b)(pv)
534 b _asm_handle_nat_exception
543 .long _builtin_canstore
544 builtincheckarraycast:
545 .long _builtin_checkarraycast
547 .globl _asm_builtin_aastore
548 _asm_builtin_aastore:
556 lwz itmp1,offarraysize(r3)
564 // addis pv,r31,ha16(builtincanstore-0b)
565 lwz itmp1,lo16(builtincanstore-0b)(pv)
576 stw itmp2,offobjarrdata(itmp1)
579 proto_java_lang_NullPointerException:
580 .long _proto_java_lang_NullPointerException
581 proto_java_lang_ArrayIndexOutOfBoundsException:
582 .long _proto_java_lang_ArrayIndexOutOfBoundsException
583 proto_java_lang_ArrayStoreException:
584 .long _proto_java_lang_ArrayStoreException
585 proto_java_lang_ArithmeticException:
586 .long _proto_java_lang_ArithmeticException
587 proto_java_lang_ClassCastException:
588 .long _proto_java_lang_ClassCastException
591 lwz xptr,lo16(proto_java_lang_NullPointerException-0b)(pv)
594 b _asm_handle_nat_exception
596 lwz xptr,lo16(proto_java_lang_ArrayIndexOutOfBoundsException-0b)(pv)
600 b _asm_handle_nat_exception
602 lwz xptr,lo16(proto_java_lang_ArrayStoreException-0b)(pv)
605 b _asm_handle_nat_exception
609 .globl _asm_dumpregistersandcall
610 _asm_dumpregistersandcall:
645 .globl _asm_builtin_monitorenter
646 _asm_builtin_monitorenter:
648 lwz itmp2,lo16(builtin_monitorenter-0b)(pv)
655 lwz xptr,lo16(proto_java_lang_NullPointerException-0b)(pv)
658 b _asm_handle_nat_exception
660 .globl _asm_builtin_monitorexit
661 _asm_builtin_monitorexit:
663 lwz itmp2,lo16(builtin_monitorexit-0b)(pv)
670 lwz xptr,lo16(proto_java_lang_NullPointerException-0b)(pv)
673 b _asm_handle_nat_exception
679 .globl _synchronize_caches
682 .globl _asm_getcallingmethod
683 _asm_getcallingmethod:
687 .globl _asm_builtin_ldiv
692 lwz itmp1,lo16(builtin_ldiv-0b)(pv)
696 lwz xptr,lo16(proto_java_lang_ArithmeticException-0b)(pv)
699 b _asm_handle_nat_exception
701 .globl _asm_builtin_lrem
706 lwz itmp1,lo16(builtin_lrem-0b)(pv)
710 lwz xptr,lo16(proto_java_lang_ArithmeticException-0b)(pv)
713 b _asm_handle_nat_exception
715 .globl _asm_builtin_idiv
723 lwz xptr,lo16(proto_java_lang_ArithmeticException-0b)(pv)
726 b _asm_handle_nat_exception
728 .globl _asm_builtin_irem
738 lwz xptr,lo16(proto_java_lang_ArithmeticException-0b)(pv)
741 b _asm_handle_nat_exception
746 .globl _has_no_x_instr_set
752 .globl _asm_cacheflush
780 .globl _asm_initialize_thread_stack
781 _asm_initialize_thread_stack:
811 lfd f0,lo16(doublezero-0b)(r3)
836 .globl _asm_perform_threadswitch
837 _asm_perform_threadswitch:
930 .globl _asm_switchstackandcall
931 _asm_switchstackandcall:
957 lwz xptr,lo16(proto_java_lang_NullPointerException-0b)(itmp1)
959 b _asm_handle_exception
965 #define C_RED_ZONE 224
970 .globl _asm_sighandler
972 addi r1,r1,-32*4 - 32 - C_RED_ZONE
980 lwz r0,lo16(catch_Handler-0b)(r31)
991 addi r1,r1,32*4 + 32 + C_RED_ZONE
992 b _asm_handle_exception
998 addi r1,r1,32*4 + 32 + C_RED_ZONE