25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "jvm.h" |
26 #include "jvm.h" |
27 #include "asm/macroAssembler.inline.hpp" |
27 #include "asm/macroAssembler.inline.hpp" |
28 #include "compiler/disassembler.hpp" |
28 #include "compiler/disassembler.hpp" |
29 #include "gc/shared/cardTable.hpp" |
29 #include "gc/shared/cardTable.hpp" |
30 #include "gc/shared/cardTableModRefBS.hpp" |
30 #include "gc/shared/cardTableBarrierSet.hpp" |
31 #include "gc/shared/collectedHeap.inline.hpp" |
31 #include "gc/shared/collectedHeap.inline.hpp" |
32 #include "interpreter/interpreter.hpp" |
32 #include "interpreter/interpreter.hpp" |
33 #include "memory/resourceArea.hpp" |
33 #include "memory/resourceArea.hpp" |
34 #include "memory/universe.hpp" |
34 #include "memory/universe.hpp" |
35 #include "oops/klass.inline.hpp" |
35 #include "oops/klass.inline.hpp" |
3727 /////////////////////////////////////////////////////////////////////////////////// |
3727 /////////////////////////////////////////////////////////////////////////////////// |
3728 |
3728 |
3729 void MacroAssembler::card_write_barrier_post(Register store_addr, Register new_val, Register tmp) { |
3729 void MacroAssembler::card_write_barrier_post(Register store_addr, Register new_val, Register tmp) { |
3730 // If we're writing constant NULL, we can skip the write barrier. |
3730 // If we're writing constant NULL, we can skip the write barrier. |
3731 if (new_val == G0) return; |
3731 if (new_val == G0) return; |
3732 CardTableModRefBS* bs = |
3732 CardTableBarrierSet* bs = |
3733 barrier_set_cast<CardTableModRefBS>(Universe::heap()->barrier_set()); |
3733 barrier_set_cast<CardTableBarrierSet>(Universe::heap()->barrier_set()); |
3734 CardTable* ct = bs->card_table(); |
3734 CardTable* ct = bs->card_table(); |
3735 |
3735 |
3736 assert(bs->kind() == BarrierSet::CardTableModRef, "wrong barrier"); |
3736 assert(bs->kind() == BarrierSet::CardTableBarrierSet, "wrong barrier"); |
3737 card_table_write(ct->byte_map_base(), tmp, store_addr); |
3737 card_table_write(ct->byte_map_base(), tmp, store_addr); |
3738 } |
3738 } |
3739 |
3739 |
3740 // ((OopHandle)result).resolve(); |
3740 // ((OopHandle)result).resolve(); |
3741 void MacroAssembler::resolve_oop_handle(Register result) { |
3741 void MacroAssembler::resolve_oop_handle(Register result) { |