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
|