src/hotspot/cpu/sparc/gc/g1/g1BarrierSetAssembler_sparc.cpp
changeset 50375 bfbe7d8369bb
parent 49906 4bb58f644e4e
child 50440 cfdd37095f66
equal deleted inserted replaced
50374:2d0647b9ac18 50375:bfbe7d8369bb
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
    26 #include "asm/macroAssembler.inline.hpp"
    26 #include "asm/macroAssembler.inline.hpp"
    27 #include "gc/g1/g1BarrierSet.hpp"
    27 #include "gc/g1/g1BarrierSet.hpp"
    28 #include "gc/g1/g1BarrierSetAssembler.hpp"
    28 #include "gc/g1/g1BarrierSetAssembler.hpp"
       
    29 #include "gc/g1/g1BarrierSetRuntime.hpp"
    29 #include "gc/g1/g1CardTable.hpp"
    30 #include "gc/g1/g1CardTable.hpp"
    30 #include "gc/g1/g1ThreadLocalData.hpp"
    31 #include "gc/g1/g1ThreadLocalData.hpp"
    31 #include "gc/g1/heapRegion.hpp"
    32 #include "gc/g1/heapRegion.hpp"
    32 #include "interpreter/interp_masm.hpp"
    33 #include "interpreter/interp_masm.hpp"
    33 #include "runtime/sharedRuntime.hpp"
    34 #include "runtime/sharedRuntime.hpp"
    66     if (count->is_global()) {
    67     if (count->is_global()) {
    67       __ mov(count, L1);
    68       __ mov(count, L1);
    68     }
    69     }
    69     __ mov(addr->after_save(), O0);
    70     __ mov(addr->after_save(), O0);
    70     // Get the count into O1
    71     // Get the count into O1
    71     address slowpath = UseCompressedOops ? CAST_FROM_FN_PTR(address, G1BarrierSet::write_ref_array_pre_narrow_oop_entry)
    72     address slowpath = UseCompressedOops ? CAST_FROM_FN_PTR(address, G1BarrierSetRuntime::write_ref_array_pre_narrow_oop_entry)
    72                                          : CAST_FROM_FN_PTR(address, G1BarrierSet::write_ref_array_pre_oop_entry);
    73                                          : CAST_FROM_FN_PTR(address, G1BarrierSetRuntime::write_ref_array_pre_oop_entry);
    73     __ call(slowpath);
    74     __ call(slowpath);
    74     __ delayed()->mov(count->after_save(), O1);
    75     __ delayed()->mov(count->after_save(), O1);
    75     if (addr->is_global()) {
    76     if (addr->is_global()) {
    76       __ mov(L0, addr);
    77       __ mov(L0, addr);
    77     }
    78     }
    88 void G1BarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    89 void G1BarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    89                                                              Register addr, Register count, Register tmp) {
    90                                                              Register addr, Register count, Register tmp) {
    90   // Get some new fresh output registers.
    91   // Get some new fresh output registers.
    91   __ save_frame(0);
    92   __ save_frame(0);
    92   __ mov(addr->after_save(), O0);
    93   __ mov(addr->after_save(), O0);
    93   __ call(CAST_FROM_FN_PTR(address, G1BarrierSet::write_ref_array_post_entry));
    94   __ call(CAST_FROM_FN_PTR(address, G1BarrierSetRuntime::write_ref_array_post_entry));
    94   __ delayed()->mov(count->after_save(), O1);
    95   __ delayed()->mov(count->after_save(), O1);
    95   __ restore();
    96   __ restore();
    96 }
    97 }
    97 
    98 
    98 #undef __
    99 #undef __