< prev index next >

src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp

Print this page
@@ -136,10 +136,11 @@
    CardTableBarrierSet* ctbs = CardTableBarrierSet::barrier_set();
  
    __ shrptr(obj, CardTable::card_shift());
  
    Address card_addr;
+   precond(rscratch != noreg);
  
    // The calculation for byte_map_base is as follows:
    // byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift);
    // So this essentially converts an address to a displacement and it will
    // never need to be relocated. On 64bit however the value may be too

@@ -159,11 +160,11 @@
      // displacement and done in a single instruction given favorable mapping and a
      // smarter version of as_Address. However, 'ExternalAddress' generates a relocation
      // entry and that entry is not properly handled by the relocation code.
      AddressLiteral cardtable((address)byte_map_base, relocInfo::none);
      Address index(noreg, obj, Address::times_1);
-     card_addr = __ as_Address(ArrayAddress(cardtable, index), rscratch1);
+     card_addr = __ as_Address(ArrayAddress(cardtable, index), rscratch);
    }
  
    int dirty = CardTable::dirty_card_val();
    if (UseCondCardMark) {
      Label L_already_dirty;
< prev index next >