< prev index next >

src/hotspot/cpu/sparc/gc/g1/g1BarrierSetAssembler_sparc.cpp

Print this page
rev 53582 : imported patch rename

*** 1,7 **** /* ! * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 26,35 **** --- 26,36 ---- #include "asm/macroAssembler.inline.hpp" #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1BarrierSetAssembler.hpp" #include "gc/g1/g1BarrierSetRuntime.hpp" #include "gc/g1/g1CardTable.hpp" + #include "gc/g1/g1DirtyCardQueue.hpp" #include "gc/g1/g1SATBMarkQueueSet.hpp" #include "gc/g1/g1ThreadLocalData.hpp" #include "gc/g1/heapRegion.hpp" #include "interpreter/interp_masm.hpp" #include "runtime/sharedRuntime.hpp"
*** 313,323 **** int dirty_card_q_index_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()); int dirty_card_q_buf_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset()); __ bind(restart); ! // Load the index into the update buffer. DirtyCardQueue::_index is // a size_t so ld_ptr is appropriate here. __ ld_ptr(G2_thread, dirty_card_q_index_byte_offset, L0); // index == 0? __ cmp_and_brx_short(L0, G0, Assembler::equal, Assembler::pn, refill); --- 314,324 ---- int dirty_card_q_index_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()); int dirty_card_q_buf_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset()); __ bind(restart); ! // Load the index into the update buffer. G1DirtyCardQueue::_index is // a size_t so ld_ptr is appropriate here. __ ld_ptr(G2_thread, dirty_card_q_index_byte_offset, L0); // index == 0? __ cmp_and_brx_short(L0, G0, Assembler::equal, Assembler::pn, refill);
*** 331,341 **** __ delayed()->st_ptr(L0, G2_thread, dirty_card_q_index_byte_offset); __ bind(refill); address handle_zero = CAST_FROM_FN_PTR(address, ! &DirtyCardQueueSet::handle_zero_index_for_thread); // This should be rare enough that we can afford to save all the // scratch registers that the calling context might be using. __ mov(G1_scratch, L3); __ mov(G3_scratch, L5); // We need the value of O3 above (for the write into the buffer), so we --- 332,342 ---- __ delayed()->st_ptr(L0, G2_thread, dirty_card_q_index_byte_offset); __ bind(refill); address handle_zero = CAST_FROM_FN_PTR(address, ! &G1DirtyCardQueueSet::handle_zero_index_for_thread); // This should be rare enough that we can afford to save all the // scratch registers that the calling context might be using. __ mov(G1_scratch, L3); __ mov(G3_scratch, L5); // We need the value of O3 above (for the write into the buffer), so we
*** 671,681 **** int dirty_card_q_index_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()); int dirty_card_q_buf_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset()); __ bind(restart); ! // Get the index into the update buffer. DirtyCardQueue::_index is // a size_t so ld_ptr is appropriate here. __ ld_ptr(G2_thread, dirty_card_q_index_byte_offset, tmp3); // index == 0? __ cmp_and_brx_short(tmp3, G0, Assembler::equal, Assembler::pn, refill); --- 672,682 ---- int dirty_card_q_index_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset()); int dirty_card_q_buf_byte_offset = in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset()); __ bind(restart); ! // Get the index into the update buffer. G1DirtyCardQueue::_index is // a size_t so ld_ptr is appropriate here. __ ld_ptr(G2_thread, dirty_card_q_index_byte_offset, tmp3); // index == 0? __ cmp_and_brx_short(tmp3, G0, Assembler::equal, Assembler::pn, refill);
*** 692,702 **** __ save_live_registers_no_oop_map(true); __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, ! DirtyCardQueueSet::handle_zero_index_for_thread), G2_thread); __ restore_live_registers(true); __ br(Assembler::always, /*annul*/false, Assembler::pt, restart); --- 693,703 ---- __ save_live_registers_no_oop_map(true); __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, ! G1DirtyCardQueueSet::handle_zero_index_for_thread), G2_thread); __ restore_live_registers(true); __ br(Assembler::always, /*annul*/false, Assembler::pt, restart);
< prev index next >