Print this page
rev 1022 : 6829192: JSR 292 needs to support 64-bit x86
Summary: changes for method handles and invokedynamic
Reviewed-by: ?, ?

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/methodHandles_x86.cpp
          +++ new/src/cpu/x86/vm/methodHandles_x86.cpp
↓ open down ↓ 440 lines elided ↑ open up ↑
 441  441        __ load_klass(rax_klass, rcx_recv);
 442  442        __ verify_oop(rax_klass);
 443  443  
 444  444        // get target methodOop & entry point
 445  445        const int base = instanceKlass::vtable_start_offset() * wordSize;
 446  446        assert(vtableEntry::size() * wordSize == wordSize, "adjust the scaling in the code below");
 447  447        Address vtable_entry_addr(rax_klass,
 448  448                                  rbx_index, Address::times_ptr,
 449  449                                  base + vtableEntry::method_offset_in_bytes());
 450  450        Register rbx_method = rbx_temp;
 451      -      __ movl(rbx_method, vtable_entry_addr);
      451 +      __ movptr(rbx_method, vtable_entry_addr);
 452  452  
 453  453        __ verify_oop(rbx_method);
 454  454        __ jmp(rbx_method_fie);
 455  455      }
 456  456      break;
 457  457  
 458  458    case _invokeinterface_mh:
 459  459      {
 460  460        // same as TemplateTable::invokeinterface,
 461  461        // minus the CP setup and profiling:
↓ open down ↓ 716 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX