< prev index next >

src/cpu/x86/vm/macroAssembler_x86.cpp

Print this page
rev 14282 : Factor out keep-alive barrier from usual pre-barrier implementations.

@@ -5589,10 +5589,26 @@
   pop(store_addr);
 
   bind(done);
 }
 
+void MacroAssembler::keep_alive_barrier(Register val,
+                                        Register thread,
+                                        Register tmp) {
+
+  if (UseG1GC || (UseShenandoahGC && ShenandoahKeepAliveBarrier)) {
+    // Generate the G1 pre-barrier code to log the value of
+    // the referent field in an SATB buffer.
+    g1_write_barrier_pre(noreg, 
+                         rax /* pre_val */,
+                         thread /* thread */,
+                         tmp,
+                         true /* tosca_live */,
+                         true /* expand_call */);
+  }
+}
+
 #ifndef _LP64
 void MacroAssembler::shenandoah_write_barrier(Register dst) {
   Unimplemented();
 }
 #else
< prev index next >