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/interp_masm_x86_32.cpp
          +++ new/src/cpu/x86/vm/interp_masm_x86_32.cpp
↓ open down ↓ 188 lines elided ↑ open up ↑
 189  189  }
 190  190  
 191  191  
 192  192  void InterpreterMacroAssembler::get_cache_index_at_bcp(Register reg, int bcp_offset, bool giant_index) {
 193  193    assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
 194  194    if (!giant_index) {
 195  195      load_unsigned_short(reg, Address(rsi, bcp_offset));
 196  196    } else {
 197  197      assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic");
 198  198      movl(reg, Address(rsi, bcp_offset));
      199 +    // Check if the secondary index definition is still ~x, otherwise
      200 +    // we have to change the following assembler code to calculate the
      201 +    // plain index.
 199  202      assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
 200  203      notl(reg);  // convert to plain index
 201  204    }
 202  205  }
 203  206  
 204  207  
 205  208  void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register index,
 206  209                                                             int bcp_offset, bool giant_index) {
 207  210    assert(cache != index, "must use different registers");
 208  211    get_cache_index_at_bcp(index, bcp_offset, giant_index);
↓ open down ↓ 1354 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX