< prev index next >

src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp

Print this page




  13  *
  14  * You should have received a copy of the GNU General Public License version
  15  * 2 along with this work; if not, write to the Free Software Foundation,
  16  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17  *
  18  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19  * or visit www.oracle.com if you need additional information or have any
  20  * questions.
  21  *
  22  */
  23 
  24 #include "precompiled.hpp"
  25 #include "c1/c1_IR.hpp"
  26 #include "gc/shared/satbMarkQueue.hpp"
  27 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
  28 #include "gc/shenandoah/shenandoahHeap.hpp"
  29 #include "gc/shenandoah/shenandoahHeapRegion.hpp"
  30 #include "gc/shenandoah/shenandoahThreadLocalData.hpp"
  31 #include "gc/shenandoah/c1/shenandoahBarrierSetC1.hpp"
  32 




  33 #ifdef ASSERT
  34 #define __ gen->lir(__FILE__, __LINE__)->
  35 #else
  36 #define __ gen->lir()->
  37 #endif
  38 
  39 void ShenandoahPreBarrierStub::emit_code(LIR_Assembler* ce) {
  40   ShenandoahBarrierSetAssembler* bs = (ShenandoahBarrierSetAssembler*)BarrierSet::barrier_set()->barrier_set_assembler();
  41   bs->gen_pre_barrier_stub(ce, this);
  42 }
  43 
  44 void ShenandoahLoadReferenceBarrierStub::emit_code(LIR_Assembler* ce) {
  45   ShenandoahBarrierSetAssembler* bs = (ShenandoahBarrierSetAssembler*)BarrierSet::barrier_set()->barrier_set_assembler();
  46   bs->gen_load_reference_barrier_stub(ce, this);
  47 }
  48 
  49 void ShenandoahBarrierSetC1::pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val) {
  50   // First we test whether marking is in progress.
  51   BasicType flag_type;
  52   bool patch = (decorators & C1_NEEDS_PATCHING) != 0;




  13  *
  14  * You should have received a copy of the GNU General Public License version
  15  * 2 along with this work; if not, write to the Free Software Foundation,
  16  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17  *
  18  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19  * or visit www.oracle.com if you need additional information or have any
  20  * questions.
  21  *
  22  */
  23 
  24 #include "precompiled.hpp"
  25 #include "c1/c1_IR.hpp"
  26 #include "gc/shared/satbMarkQueue.hpp"
  27 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
  28 #include "gc/shenandoah/shenandoahHeap.hpp"
  29 #include "gc/shenandoah/shenandoahHeapRegion.hpp"
  30 #include "gc/shenandoah/shenandoahThreadLocalData.hpp"
  31 #include "gc/shenandoah/c1/shenandoahBarrierSetC1.hpp"
  32 
  33 #ifndef PATCHED_ADDR
  34 #define PATCHED_ADDR  (max_jint)
  35 #endif
  36 
  37 #ifdef ASSERT
  38 #define __ gen->lir(__FILE__, __LINE__)->
  39 #else
  40 #define __ gen->lir()->
  41 #endif
  42 
  43 void ShenandoahPreBarrierStub::emit_code(LIR_Assembler* ce) {
  44   ShenandoahBarrierSetAssembler* bs = (ShenandoahBarrierSetAssembler*)BarrierSet::barrier_set()->barrier_set_assembler();
  45   bs->gen_pre_barrier_stub(ce, this);
  46 }
  47 
  48 void ShenandoahLoadReferenceBarrierStub::emit_code(LIR_Assembler* ce) {
  49   ShenandoahBarrierSetAssembler* bs = (ShenandoahBarrierSetAssembler*)BarrierSet::barrier_set()->barrier_set_assembler();
  50   bs->gen_load_reference_barrier_stub(ce, this);
  51 }
  52 
  53 void ShenandoahBarrierSetC1::pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val) {
  54   // First we test whether marking is in progress.
  55   BasicType flag_type;
  56   bool patch = (decorators & C1_NEEDS_PATCHING) != 0;


< prev index next >