467 // But the compiled version will require that rcx_recv be shifted out.
468 __ verify_method_ptr(rbx_method);
469 jump_from_method_handle(_masm, rbx_method, temp1, for_compiler_entry);
470
471 if (iid == vmIntrinsics::_linkToInterface) {
472 __ bind(L_incompatible_class_change_error);
473 __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
474 }
475 }
476 }
477
478 #ifndef PRODUCT
479 void trace_method_handle_stub(const char* adaptername,
480 oop mh,
481 intptr_t* saved_regs,
482 intptr_t* entry_sp) {
483 // called as a leaf from native code: do not block the JVM!
484 bool has_mh = (strstr(adaptername, "/static") == NULL &&
485 strstr(adaptername, "linkTo") == NULL); // static linkers don't have MH
486 const char* mh_reg_name = has_mh ? "rcx_mh" : "rcx";
487 tty->print_cr("MH %s %s="PTR_FORMAT" sp="PTR_FORMAT,
488 adaptername, mh_reg_name,
489 (void *)mh, entry_sp);
490
491 if (Verbose) {
492 tty->print_cr("Registers:");
493 const int saved_regs_count = RegisterImpl::number_of_registers;
494 for (int i = 0; i < saved_regs_count; i++) {
495 Register r = as_Register(i);
496 // The registers are stored in reverse order on the stack (by pusha).
497 tty->print("%3s=" PTR_FORMAT, r->name(), saved_regs[((saved_regs_count - 1) - i)]);
498 if ((i + 1) % 4 == 0) {
499 tty->cr();
500 } else {
501 tty->print(", ");
502 }
503 }
504 tty->cr();
505
506 {
507 // dumping last frame with frame::describe
|
467 // But the compiled version will require that rcx_recv be shifted out.
468 __ verify_method_ptr(rbx_method);
469 jump_from_method_handle(_masm, rbx_method, temp1, for_compiler_entry);
470
471 if (iid == vmIntrinsics::_linkToInterface) {
472 __ bind(L_incompatible_class_change_error);
473 __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
474 }
475 }
476 }
477
478 #ifndef PRODUCT
479 void trace_method_handle_stub(const char* adaptername,
480 oop mh,
481 intptr_t* saved_regs,
482 intptr_t* entry_sp) {
483 // called as a leaf from native code: do not block the JVM!
484 bool has_mh = (strstr(adaptername, "/static") == NULL &&
485 strstr(adaptername, "linkTo") == NULL); // static linkers don't have MH
486 const char* mh_reg_name = has_mh ? "rcx_mh" : "rcx";
487 tty->print_cr("MH %s %s=" PTR_FORMAT " sp=" PTR_FORMAT,
488 adaptername, mh_reg_name,
489 (void *)mh, entry_sp);
490
491 if (Verbose) {
492 tty->print_cr("Registers:");
493 const int saved_regs_count = RegisterImpl::number_of_registers;
494 for (int i = 0; i < saved_regs_count; i++) {
495 Register r = as_Register(i);
496 // The registers are stored in reverse order on the stack (by pusha).
497 tty->print("%3s=" PTR_FORMAT, r->name(), saved_regs[((saved_regs_count - 1) - i)]);
498 if ((i + 1) % 4 == 0) {
499 tty->cr();
500 } else {
501 tty->print(", ");
502 }
503 }
504 tty->cr();
505
506 {
507 // dumping last frame with frame::describe
|