< prev index next >

src/hotspot/cpu/ppc/nativeInst_ppc.cpp

Print this page
*** 203,16 ***
      // We can reach here during GC with 'no' pointing to new object location
      // while 'heap()->is_in' still reports false (e.g. with SerialGC).
      // Therefore we use raw decoding.
      if (CompressedOops::is_null(no)) return 0;
      return cast_from_oop<intptr_t>(CompressedOops::decode_raw(no));
!   } else {
-     assert(MacroAssembler::is_load_const_from_method_toc_at(addr), "must be load_const_from_pool");
- 
      address ctable = cb->content_begin();
      int offset = MacroAssembler::get_offset_of_load_const_from_method_toc_at(addr);
      return *(intptr_t *)(ctable + offset);
    }
  }
  
  address NativeMovConstReg::set_data_plain(intptr_t data, CodeBlob *cb) {
    address addr         = instruction_address();
--- 203,18 ---
      // We can reach here during GC with 'no' pointing to new object location
      // while 'heap()->is_in' still reports false (e.g. with SerialGC).
      // Therefore we use raw decoding.
      if (CompressedOops::is_null(no)) return 0;
      return cast_from_oop<intptr_t>(CompressedOops::decode_raw(no));
!   } else if (MacroAssembler::is_load_const_from_method_toc_at(addr)) {
      address ctable = cb->content_begin();
      int offset = MacroAssembler::get_offset_of_load_const_from_method_toc_at(addr);
      return *(intptr_t *)(ctable + offset);
+   } else {
+     assert(MacroAssembler::is_calculate_address_from_global_toc_at(addr, addr - BytesPerInstWord),
+            "must be calculate_address_from_global_toc");
+     return (intptr_t) MacroAssembler::get_address_of_calculate_address_from_global_toc_at(addr, addr - BytesPerInstWord);
    }
  }
  
  address NativeMovConstReg::set_data_plain(intptr_t data, CodeBlob *cb) {
    address addr         = instruction_address();
< prev index next >