< prev index next >

src/hotspot/cpu/ppc/macroAssembler_ppc.cpp

Print this page

        

*** 44,53 **** --- 44,54 ---- #include "runtime/stubRoutines.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1CardTable.hpp" + #include "gc/g1/g1ThreadLocalData.hpp" #include "gc/g1/heapRegion.hpp" #endif // INCLUDE_ALL_GCS #ifdef COMPILER2 #include "opto/intrinsicnode.hpp" #endif
*** 3100,3113 **** Register Rtmp1, Register Rtmp2, bool needs_frame) { Label runtime, filtered; // Is marking active? if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) { ! lwz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread); } else { guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption"); ! lbz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread); } cmpdi(CCR0, Rtmp1, 0); beq(CCR0, filtered); // Do we need to load the previous value? --- 3101,3114 ---- Register Rtmp1, Register Rtmp2, bool needs_frame) { Label runtime, filtered; // Is marking active? if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) { ! lwz(Rtmp1, in_bytes(G1ThreadLocalData::satb_mark_queue_active_offset()), R16_thread); } else { guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption"); ! lbz(Rtmp1, in_bytes(G1ThreadLocalData::satb_mark_queue_active_offset()), R16_thread); } cmpdi(CCR0, Rtmp1, 0); beq(CCR0, filtered); // Do we need to load the previous value?
*** 3138,3154 **** // Can we store original value in the thread's buffer? // Is index == 0? // (The index field is typed as size_t.) const Register Rbuffer = Rtmp1, Rindex = Rtmp2; ! ld(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_index()), R16_thread); cmpdi(CCR0, Rindex, 0); beq(CCR0, runtime); // If index == 0, goto runtime. ! ld(Rbuffer, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_buf()), R16_thread); addi(Rindex, Rindex, -wordSize); // Decrement index. ! std(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_index()), R16_thread); // Record the previous value. stdx(Rpre_val, Rbuffer, Rindex); b(filtered); --- 3139,3155 ---- // Can we store original value in the thread's buffer? // Is index == 0? // (The index field is typed as size_t.) const Register Rbuffer = Rtmp1, Rindex = Rtmp2; ! ld(Rindex, in_bytes(G1ThreadLocalData::satb_mark_queue_index_offset()), R16_thread); cmpdi(CCR0, Rindex, 0); beq(CCR0, runtime); // If index == 0, goto runtime. ! ld(Rbuffer, in_bytes(G1ThreadLocalData::satb_mark_queue_buffer_offset()), R16_thread); addi(Rindex, Rindex, -wordSize); // Decrement index. ! std(Rindex, in_bytes(G1ThreadLocalData::satb_mark_queue_index_offset()), R16_thread); // Record the previous value. stdx(Rpre_val, Rbuffer, Rindex); b(filtered);
*** 3224,3240 **** add(Rcard_addr, Rbase, Rcard_addr); // This is the address which needs to get enqueued. Rbase = noreg; // end of lifetime const Register Rqueue_index = Rtmp2, Rqueue_buf = Rtmp3; ! ld(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_index()), R16_thread); cmpdi(CCR0, Rqueue_index, 0); beq(CCR0, runtime); // index == 0 then jump to runtime ! ld(Rqueue_buf, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_buf()), R16_thread); addi(Rqueue_index, Rqueue_index, -wordSize); // decrement index ! std(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_index()), R16_thread); stdx(Rcard_addr, Rqueue_buf, Rqueue_index); // store card b(filtered); bind(runtime); --- 3225,3241 ---- add(Rcard_addr, Rbase, Rcard_addr); // This is the address which needs to get enqueued. Rbase = noreg; // end of lifetime const Register Rqueue_index = Rtmp2, Rqueue_buf = Rtmp3; ! ld(Rqueue_index, in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()), R16_thread); cmpdi(CCR0, Rqueue_index, 0); beq(CCR0, runtime); // index == 0 then jump to runtime ! ld(Rqueue_buf, in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset()), R16_thread); addi(Rqueue_index, Rqueue_index, -wordSize); // decrement index ! std(Rqueue_index, in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()), R16_thread); stdx(Rcard_addr, Rqueue_buf, Rqueue_index); // store card b(filtered); bind(runtime);
< prev index next >