< prev index next >

src/cpu/s390/vm/methodHandles_s390.cpp

Print this page




 578       dump_frame.describe(values, 1);
 579     } else {
 580       // Robust dump for frames which cannot be constructed from sp/younger_sp
 581       // Add descriptions without building a Java frame to avoid issues.
 582       values.describe(-1, dump_fp, "fp for #1 <not parsed, cannot trust pc>");
 583       values.describe(-1, dump_sp, "sp");
 584     }
 585 
 586     bool has_args = has_mh; // Whether Z_esp is meaningful.
 587 
 588     // Mark args, if seems valid (may not be valid for some adapters).
 589     if (has_args) {
 590       if ((args >= dump_sp) && (args < dump_fp)) {
 591         values.describe(-1, args, "*Z_esp");
 592       }
 593     }
 594 
 595     // Note: the unextended_sp may not be correct.
 596     tty->print_cr("  stack layout:");
 597     values.print(p);
 598     if (has_mh && mh->is_oop()) {
 599       mh->print();
 600       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 601         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0) {
 602           java_lang_invoke_MethodHandle::form(mh)->print();
 603         }
 604       }
 605     }
 606   }
 607 }
 608 
 609 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 610   if (!TraceMethodHandles) { return; }
 611 
 612   // If arg registers are contiguous, we can use STMG/LMG.
 613   assert((Z_ARG5->encoding() - Z_ARG1->encoding() + 1) == RegisterImpl::number_of_arg_registers, "Oops");
 614 
 615   BLOCK_COMMENT("trace_method_handle {");
 616 
 617   // Save argument registers (they are used in raise exception stub).
 618   // Argument registers have contiguous register numbers -> we can use stmg/lmg.




 578       dump_frame.describe(values, 1);
 579     } else {
 580       // Robust dump for frames which cannot be constructed from sp/younger_sp
 581       // Add descriptions without building a Java frame to avoid issues.
 582       values.describe(-1, dump_fp, "fp for #1 <not parsed, cannot trust pc>");
 583       values.describe(-1, dump_sp, "sp");
 584     }
 585 
 586     bool has_args = has_mh; // Whether Z_esp is meaningful.
 587 
 588     // Mark args, if seems valid (may not be valid for some adapters).
 589     if (has_args) {
 590       if ((args >= dump_sp) && (args < dump_fp)) {
 591         values.describe(-1, args, "*Z_esp");
 592       }
 593     }
 594 
 595     // Note: the unextended_sp may not be correct.
 596     tty->print_cr("  stack layout:");
 597     values.print(p);
 598     if (has_mh && oopDesc::is_oop(mh)) {
 599       mh->print();
 600       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 601         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0) {
 602           java_lang_invoke_MethodHandle::form(mh)->print();
 603         }
 604       }
 605     }
 606   }
 607 }
 608 
 609 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 610   if (!TraceMethodHandles) { return; }
 611 
 612   // If arg registers are contiguous, we can use STMG/LMG.
 613   assert((Z_ARG5->encoding() - Z_ARG1->encoding() + 1) == RegisterImpl::number_of_arg_registers, "Oops");
 614 
 615   BLOCK_COMMENT("trace_method_handle {");
 616 
 617   // Save argument registers (they are used in raise exception stub).
 618   // Argument registers have contiguous register numbers -> we can use stmg/lmg.


< prev index next >