src/cpu/x86/vm/c1_Runtime1_x86.cpp

Print this page
rev 5363 : imported patch filtering.diff

*** 36,45 **** --- 36,48 ---- #include "runtime/sharedRuntime.hpp" #include "runtime/signature.hpp" #include "runtime/vframeArray.hpp" #include "utilities/macros.hpp" #include "vmreg_x86.inline.hpp" + #if INCLUDE_ALL_GCS + #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" + #endif // Implementation of StubAssembler int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, int args_size) {
*** 1751,1767 **** Address index(noreg, card_index, Address::times_1); __ leal(card_addr, __ as_Address(ArrayAddress(cardtable, index))); #endif ! __ cmpb(Address(card_addr, 0), 0); __ jcc(Assembler::equal, done); // storing region crossing non-NULL, card is clean. // dirty card and log. ! __ movb(Address(card_addr, 0), 0); __ cmpl(queue_index, 0); __ jcc(Assembler::equal, runtime); __ subl(queue_index, wordSize); --- 1754,1774 ---- Address index(noreg, card_index, Address::times_1); __ leal(card_addr, __ as_Address(ArrayAddress(cardtable, index))); #endif ! __ cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val()); ! __ jcc(Assembler::equal, done); ! ! __ membar(Assembler::Membar_mask_bits(Assembler::StoreLoad)); ! __ cmpb(Address(card_addr, 0), (int)CardTableModRefBS::dirty_card_val()); __ jcc(Assembler::equal, done); // storing region crossing non-NULL, card is clean. // dirty card and log. ! __ movb(Address(card_addr, 0), (int)CardTableModRefBS::dirty_card_val()); __ cmpl(queue_index, 0); __ jcc(Assembler::equal, runtime); __ subl(queue_index, wordSize);