< prev index next >

src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp

Print this page

        

*** 41,51 **** --- 41,53 ---- #include "runtime/signature.hpp" #include "runtime/vframe.hpp" #include "runtime/vframeArray.hpp" #include "vmreg_aarch64.inline.hpp" #if INCLUDE_ALL_GCS + #include "gc_implementation/shenandoah/shenandoahBarrierSet.hpp" #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" + #include "gc_implementation/shenandoah/shenandoahRuntime.hpp" #endif // Implementation of StubAssembler
*** 1176,1186 **** { StubFrame f(sasm, "g1_pre_barrier", dont_gc_arguments); // arg0 : previous value of memory BarrierSet* bs = Universe::heap()->barrier_set(); ! if (bs->kind() != BarrierSet::G1SATBCTLogging) { __ mov(r0, (int)id); __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, unimplemented_entry), r0); __ should_not_reach_here(); break; } --- 1178,1188 ---- { StubFrame f(sasm, "g1_pre_barrier", dont_gc_arguments); // arg0 : previous value of memory BarrierSet* bs = Universe::heap()->barrier_set(); ! if (bs->kind() != BarrierSet::G1SATBCTLogging && bs->kind() != BarrierSet::ShenandoahBarrierSet) { __ mov(r0, (int)id); __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, unimplemented_entry), r0); __ should_not_reach_here(); break; }
*** 1226,1235 **** --- 1228,1244 ---- // arg0: store_address Address store_addr(rfp, 2*BytesPerWord); BarrierSet* bs = Universe::heap()->barrier_set(); + if (bs->kind() == BarrierSet::ShenandoahBarrierSet) { + __ movptr(r0, (int)id); + __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, unimplemented_entry), r0); + __ should_not_reach_here(); + break; + } + CardTableModRefBS* ct = (CardTableModRefBS*)bs; assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); Label done; Label runtime;
*** 1289,1298 **** --- 1298,1326 ---- __ pop_call_clobbered_registers(); __ bind(done); } break; + case shenandoah_lrb_slow_id: + { + StubFrame f(sasm, "shenandoah_load_reference_barrier", dont_gc_arguments); + // arg0 : object to be resolved + + __ push_call_clobbered_registers(); + f.load_argument(0, r0); + f.load_argument(1, r1); + if (UseCompressedOops) { + __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_narrow)); + } else { + __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier)); + } + __ blr(lr); + __ mov(rscratch1, r0); + __ pop_call_clobbered_registers(); + __ mov(r0, rscratch1); + } + break; #endif case predicate_failed_trap_id: { StubFrame f(sasm, "predicate_failed_trap", dont_gc_arguments);
< prev index next >