< prev index next >

src/cpu/sparc/vm/methodHandles_sparc.cpp

Print this page




 545 
 546     bool has_args = has_mh; // whether Gargs is meaningful
 547 
 548     // mark args, if seems valid (may not be valid for some adapters)
 549     if (has_args) {
 550       if ((args >= dump_sp) && (args < dump_fp)) {
 551         values.describe(-1, args, "*G4_args");
 552       }
 553     }
 554 
 555     // mark saved_sp, if seems valid (may not be valid for some adapters)
 556     intptr_t *unbiased_sp = (intptr_t *)(STACK_BIAS+(uintptr_t)saved_sp);
 557     const int ARG_LIMIT = 255, SLOP = 45, UNREASONABLE_STACK_MOVE = (ARG_LIMIT + SLOP);
 558     if ((unbiased_sp >= dump_sp - UNREASONABLE_STACK_MOVE) && (unbiased_sp < dump_fp)) {
 559       values.describe(-1, unbiased_sp, "*saved_sp+STACK_BIAS");
 560     }
 561 
 562     // Note: the unextended_sp may not be correct
 563     tty->print_cr("  stack layout:");
 564     values.print(p);
 565     if (has_mh && mh->is_oop()) {
 566       mh->print();
 567       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 568         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 569           java_lang_invoke_MethodHandle::form(mh)->print();
 570       }
 571     }
 572   }
 573 }
 574 
 575 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 576   if (!TraceMethodHandles)  return;
 577   BLOCK_COMMENT("trace_method_handle {");
 578   // save: Gargs, O5_savedSP
 579   __ save_frame(16); // need space for saving required FPU state
 580 
 581   __ set((intptr_t) adaptername, O0);
 582   __ mov(G3_method_handle, O1);
 583   __ mov(I5_savedSP, O2);
 584   __ mov(Gargs, O3);
 585   __ mov(I6, O4); // frame identifier for safe stack walking




 545 
 546     bool has_args = has_mh; // whether Gargs is meaningful
 547 
 548     // mark args, if seems valid (may not be valid for some adapters)
 549     if (has_args) {
 550       if ((args >= dump_sp) && (args < dump_fp)) {
 551         values.describe(-1, args, "*G4_args");
 552       }
 553     }
 554 
 555     // mark saved_sp, if seems valid (may not be valid for some adapters)
 556     intptr_t *unbiased_sp = (intptr_t *)(STACK_BIAS+(uintptr_t)saved_sp);
 557     const int ARG_LIMIT = 255, SLOP = 45, UNREASONABLE_STACK_MOVE = (ARG_LIMIT + SLOP);
 558     if ((unbiased_sp >= dump_sp - UNREASONABLE_STACK_MOVE) && (unbiased_sp < dump_fp)) {
 559       values.describe(-1, unbiased_sp, "*saved_sp+STACK_BIAS");
 560     }
 561 
 562     // Note: the unextended_sp may not be correct
 563     tty->print_cr("  stack layout:");
 564     values.print(p);
 565     if (has_mh && oopDesc::is_oop(mh)) {
 566       mh->print();
 567       if (java_lang_invoke_MethodHandle::is_instance(mh)) {
 568         if (java_lang_invoke_MethodHandle::form_offset_in_bytes() != 0)
 569           java_lang_invoke_MethodHandle::form(mh)->print();
 570       }
 571     }
 572   }
 573 }
 574 
 575 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
 576   if (!TraceMethodHandles)  return;
 577   BLOCK_COMMENT("trace_method_handle {");
 578   // save: Gargs, O5_savedSP
 579   __ save_frame(16); // need space for saving required FPU state
 580 
 581   __ set((intptr_t) adaptername, O0);
 582   __ mov(G3_method_handle, O1);
 583   __ mov(I5_savedSP, O2);
 584   __ mov(Gargs, O3);
 585   __ mov(I6, O4); // frame identifier for safe stack walking


< prev index next >