< prev index next >

src/cpu/ppc/vm/methodHandles_ppc.cpp

Print this page




 508 
 509       // Robust search of trace_calling_frame (independant of inlining).
 510       assert(cur_frame.sp() <= saved_regs, "registers not saved on stack ?");
 511       frame trace_calling_frame = os::get_sender_for_C_frame(&cur_frame);
 512       while (trace_calling_frame.fp() < saved_regs) {
 513         trace_calling_frame = os::get_sender_for_C_frame(&trace_calling_frame);
 514       }
 515 
 516       // Safely create a frame and call frame::describe.
 517       intptr_t *dump_sp = trace_calling_frame.sender_sp();
 518 
 519       frame dump_frame = frame(dump_sp);
 520       dump_frame.describe(values, 1);
 521 
 522       values.describe(-1, saved_regs, "raw top of stack");
 523 
 524       tty->print_cr("Stack layout:");
 525       values.print(p);
 526     }
 527 
 528     if (has_mh && mh->is_oop()) {
 529       mh->print();
 530       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 531         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 532           java_lang_invoke_MethodHandle::form(mh)->print();
 533       }
 534     }
 535   }
 536 }
 537 
 538 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 539   if (!TraceMethodHandles) return;
 540 
 541   BLOCK_COMMENT("trace_method_handle {");
 542 
 543   const Register tmp = R11; // Will be preserved.
 544   const int nbytes_save = MacroAssembler::num_volatile_regs * 8;
 545   __ save_volatile_gprs(R1_SP, -nbytes_save); // except R0
 546   __ save_LR_CR(tmp); // save in old frame
 547 
 548   __ mr(R5_ARG3, R1_SP);     // saved_sp


 508 
 509       // Robust search of trace_calling_frame (independant of inlining).
 510       assert(cur_frame.sp() <= saved_regs, "registers not saved on stack ?");
 511       frame trace_calling_frame = os::get_sender_for_C_frame(&cur_frame);
 512       while (trace_calling_frame.fp() < saved_regs) {
 513         trace_calling_frame = os::get_sender_for_C_frame(&trace_calling_frame);
 514       }
 515 
 516       // Safely create a frame and call frame::describe.
 517       intptr_t *dump_sp = trace_calling_frame.sender_sp();
 518 
 519       frame dump_frame = frame(dump_sp);
 520       dump_frame.describe(values, 1);
 521 
 522       values.describe(-1, saved_regs, "raw top of stack");
 523 
 524       tty->print_cr("Stack layout:");
 525       values.print(p);
 526     }
 527 
 528     if (has_mh && oopDesc::is_oop(mh)) {
 529       mh->print();
 530       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 531         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 532           java_lang_invoke_MethodHandle::form(mh)->print();
 533       }
 534     }
 535   }
 536 }
 537 
 538 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 539   if (!TraceMethodHandles) return;
 540 
 541   BLOCK_COMMENT("trace_method_handle {");
 542 
 543   const Register tmp = R11; // Will be preserved.
 544   const int nbytes_save = MacroAssembler::num_volatile_regs * 8;
 545   __ save_volatile_gprs(R1_SP, -nbytes_save); // except R0
 546   __ save_LR_CR(tmp); // save in old frame
 547 
 548   __ mr(R5_ARG3, R1_SP);     // saved_sp
< prev index next >