< prev index next >

src/cpu/x86/vm/methodHandles_x86.cpp

Print this page




 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


< prev index next >