equal
deleted
inserted
replaced
2028 __ ldrb(rscratch1, Address(rscratch1, offset)); |
2028 __ ldrb(rscratch1, Address(rscratch1, offset)); |
2029 __ cbnzw(rscratch1, dtrace_method_exit); |
2029 __ cbnzw(rscratch1, dtrace_method_exit); |
2030 __ bind(dtrace_method_exit_done); |
2030 __ bind(dtrace_method_exit_done); |
2031 } |
2031 } |
2032 |
2032 |
2033 __ reset_last_Java_frame(false, true); |
2033 __ reset_last_Java_frame(false); |
2034 |
2034 |
2035 // Unpack oop result |
2035 // Unpack oop result |
2036 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2036 if (ret_type == T_OBJECT || ret_type == T_ARRAY) { |
2037 Label L; |
2037 Label L; |
2038 __ cbz(r0, L); |
2038 __ cbz(r0, L); |
2368 Deoptimization::uncommon_trap))); |
2368 Deoptimization::uncommon_trap))); |
2369 __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); |
2369 __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral); |
2370 __ bind(retaddr); |
2370 __ bind(retaddr); |
2371 oop_maps->add_gc_map( __ pc()-start, map->deep_copy()); |
2371 oop_maps->add_gc_map( __ pc()-start, map->deep_copy()); |
2372 |
2372 |
2373 __ reset_last_Java_frame(false, false); |
2373 __ reset_last_Java_frame(false); |
2374 |
2374 |
2375 __ b(after_fetch_unroll_info_call); |
2375 __ b(after_fetch_unroll_info_call); |
2376 } // EnableJVMCI |
2376 } // EnableJVMCI |
2377 #endif // INCLUDE_JVMCI |
2377 #endif // INCLUDE_JVMCI |
2378 |
2378 |
2463 |
2463 |
2464 // Need to have an oopmap that tells fetch_unroll_info where to |
2464 // Need to have an oopmap that tells fetch_unroll_info where to |
2465 // find any register it might need. |
2465 // find any register it might need. |
2466 oop_maps->add_gc_map(__ pc() - start, map); |
2466 oop_maps->add_gc_map(__ pc() - start, map); |
2467 |
2467 |
2468 __ reset_last_Java_frame(false, true); |
2468 __ reset_last_Java_frame(false); |
2469 |
2469 |
2470 #if INCLUDE_JVMCI |
2470 #if INCLUDE_JVMCI |
2471 if (EnableJVMCI) { |
2471 if (EnableJVMCI) { |
2472 __ bind(after_fetch_unroll_info_call); |
2472 __ bind(after_fetch_unroll_info_call); |
2473 } |
2473 } |
2604 // Use the same PC we used for the last java frame |
2604 // Use the same PC we used for the last java frame |
2605 oop_maps->add_gc_map(the_pc - start, |
2605 oop_maps->add_gc_map(the_pc - start, |
2606 new OopMap( frame_size_in_words, 0 )); |
2606 new OopMap( frame_size_in_words, 0 )); |
2607 |
2607 |
2608 // Clear fp AND pc |
2608 // Clear fp AND pc |
2609 __ reset_last_Java_frame(true, true); |
2609 __ reset_last_Java_frame(true); |
2610 |
2610 |
2611 // Collect return values |
2611 // Collect return values |
2612 __ ldrd(v0, Address(sp, RegisterSaver::v0_offset_in_bytes())); |
2612 __ ldrd(v0, Address(sp, RegisterSaver::v0_offset_in_bytes())); |
2613 __ ldr(r0, Address(sp, RegisterSaver::r0_offset_in_bytes())); |
2613 __ ldr(r0, Address(sp, RegisterSaver::r0_offset_in_bytes())); |
2614 // I think this is useless (throwing pc?) |
2614 // I think this is useless (throwing pc?) |
2707 |
2707 |
2708 // location of rfp is known implicitly by the frame sender code |
2708 // location of rfp is known implicitly by the frame sender code |
2709 |
2709 |
2710 oop_maps->add_gc_map(__ pc() - start, map); |
2710 oop_maps->add_gc_map(__ pc() - start, map); |
2711 |
2711 |
2712 __ reset_last_Java_frame(false, true); |
2712 __ reset_last_Java_frame(false); |
2713 |
2713 |
2714 // move UnrollBlock* into r4 |
2714 // move UnrollBlock* into r4 |
2715 __ mov(r4, r0); |
2715 __ mov(r4, r0); |
2716 |
2716 |
2717 #ifdef ASSERT |
2717 #ifdef ASSERT |
2826 // Set an oopmap for the call site |
2826 // Set an oopmap for the call site |
2827 // Use the same PC we used for the last java frame |
2827 // Use the same PC we used for the last java frame |
2828 oop_maps->add_gc_map(the_pc - start, new OopMap(SimpleRuntimeFrame::framesize, 0)); |
2828 oop_maps->add_gc_map(the_pc - start, new OopMap(SimpleRuntimeFrame::framesize, 0)); |
2829 |
2829 |
2830 // Clear fp AND pc |
2830 // Clear fp AND pc |
2831 __ reset_last_Java_frame(true, true); |
2831 __ reset_last_Java_frame(true); |
2832 |
2832 |
2833 // Pop self-frame. |
2833 // Pop self-frame. |
2834 __ leave(); // Epilog |
2834 __ leave(); // Epilog |
2835 |
2835 |
2836 // Jump to interpreter |
2836 // Jump to interpreter |
2904 |
2904 |
2905 oop_maps->add_gc_map( __ pc() - start, map); |
2905 oop_maps->add_gc_map( __ pc() - start, map); |
2906 |
2906 |
2907 Label noException; |
2907 Label noException; |
2908 |
2908 |
2909 __ reset_last_Java_frame(false, true); |
2909 __ reset_last_Java_frame(false); |
2910 |
2910 |
2911 __ maybe_isb(); |
2911 __ maybe_isb(); |
2912 __ membar(Assembler::LoadLoad | Assembler::LoadStore); |
2912 __ membar(Assembler::LoadLoad | Assembler::LoadStore); |
2913 |
2913 |
2914 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset())); |
2914 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset())); |
2983 __ maybe_isb(); |
2983 __ maybe_isb(); |
2984 |
2984 |
2985 // r0 contains the address we are going to jump to assuming no exception got installed |
2985 // r0 contains the address we are going to jump to assuming no exception got installed |
2986 |
2986 |
2987 // clear last_Java_sp |
2987 // clear last_Java_sp |
2988 __ reset_last_Java_frame(false, true); |
2988 __ reset_last_Java_frame(false); |
2989 // check for pending exceptions |
2989 // check for pending exceptions |
2990 Label pending; |
2990 Label pending; |
2991 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset())); |
2991 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset())); |
2992 __ cbnz(rscratch1, pending); |
2992 __ cbnz(rscratch1, pending); |
2993 |
2993 |
3114 |
3114 |
3115 OopMapSet* oop_maps = new OopMapSet(); |
3115 OopMapSet* oop_maps = new OopMapSet(); |
3116 |
3116 |
3117 oop_maps->add_gc_map(the_pc - start, new OopMap(SimpleRuntimeFrame::framesize, 0)); |
3117 oop_maps->add_gc_map(the_pc - start, new OopMap(SimpleRuntimeFrame::framesize, 0)); |
3118 |
3118 |
3119 __ reset_last_Java_frame(false, true); |
3119 __ reset_last_Java_frame(false); |
3120 |
3120 |
3121 // Restore callee-saved registers |
3121 // Restore callee-saved registers |
3122 |
3122 |
3123 // rfp is an implicitly saved callee saved register (i.e. the calling |
3123 // rfp is an implicitly saved callee saved register (i.e. the calling |
3124 // convention will save restore it in prolog/epilog) Other than that |
3124 // convention will save restore it in prolog/epilog) Other than that |