< prev index next >

src/cpu/arm/vm/methodHandles_arm.cpp

Print this page




 542     PRESERVE_EXCEPTION_MARK;
 543     FrameValues values;
 544 
 545     intptr_t* dump_fp = (intptr_t *) saved_bp;
 546     address dump_pc = (address) saved_regs[trace_mh_nregs-2]; // LR (with LR,PC last in saved_regs)
 547     frame dump_frame((intptr_t *)entry_sp, dump_fp, dump_pc);
 548 
 549     dump_frame.describe(values, 1);
 550     // mark Rsender_sp if seems valid
 551     if (has_mh) {
 552       if ((saved_sp >= entry_sp - UNREASONABLE_STACK_MOVE) && (saved_sp < dump_fp)) {
 553         values.describe(-1, saved_sp, "*Rsender_sp");
 554       }
 555     }
 556 
 557     // Note: the unextended_sp may not be correct
 558     tty->print_cr("  stack layout:");
 559     values.print(p);
 560   }
 561   if (Verbose) {
 562     if (has_mh && mh->is_oop()) {
 563       mh->print();
 564       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 565         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 566           java_lang_invoke_MethodHandle::form(mh)->print();
 567       }
 568     }
 569   }
 570 }
 571 
 572 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 573   if (!TraceMethodHandles)  return;
 574   BLOCK_COMMENT("trace_method_handle {");
 575   // register saving
 576   //  must correspond to trace_mh_nregs and trace_mh_regs defined above
 577   int push_size = __ save_all_registers();
 578   assert(trace_mh_nregs*wordSize == push_size,"saved register count mismatch");
 579 
 580   __ mov_slow(R0, adaptername);
 581   __ mov(R1, SP); // entry_sp (after pushes)
 582   __ mov(R2, FP);


 542     PRESERVE_EXCEPTION_MARK;
 543     FrameValues values;
 544 
 545     intptr_t* dump_fp = (intptr_t *) saved_bp;
 546     address dump_pc = (address) saved_regs[trace_mh_nregs-2]; // LR (with LR,PC last in saved_regs)
 547     frame dump_frame((intptr_t *)entry_sp, dump_fp, dump_pc);
 548 
 549     dump_frame.describe(values, 1);
 550     // mark Rsender_sp if seems valid
 551     if (has_mh) {
 552       if ((saved_sp >= entry_sp - UNREASONABLE_STACK_MOVE) && (saved_sp < dump_fp)) {
 553         values.describe(-1, saved_sp, "*Rsender_sp");
 554       }
 555     }
 556 
 557     // Note: the unextended_sp may not be correct
 558     tty->print_cr("  stack layout:");
 559     values.print(p);
 560   }
 561   if (Verbose) {
 562     if (has_mh && oopDesc::is_oop(mh)) {
 563       mh->print();
 564       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 565         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 566           java_lang_invoke_MethodHandle::form(mh)->print();
 567       }
 568     }
 569   }
 570 }
 571 
 572 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 573   if (!TraceMethodHandles)  return;
 574   BLOCK_COMMENT("trace_method_handle {");
 575   // register saving
 576   //  must correspond to trace_mh_nregs and trace_mh_regs defined above
 577   int push_size = __ save_all_registers();
 578   assert(trace_mh_nregs*wordSize == push_size,"saved register count mismatch");
 579 
 580   __ mov_slow(R0, adaptername);
 581   __ mov(R1, SP); // entry_sp (after pushes)
 582   __ mov(R2, FP);
< prev index next >