< prev index next >

src/share/vm/c1/c1_CodeStubs.hpp

Print this page
rev 8802 : G1 performance improvements: card batching, joining, sorting, prefetching and write barrier fence elision and simplification based on a global syncrhonization using handshakes piggybacking on thread-local safepoints.

@@ -533,10 +533,33 @@
 #ifndef PRODUCT
   virtual void print_name(outputStream* out) const { out->print("ArrayCopyStub"); }
 #endif // PRODUCT
 };
 
+class C1ThreadLocalSafepoint: public CodeStub {
+ private:
+  address _safepoint_pc;
+  bool _is_return;
+
+ public:
+  C1ThreadLocalSafepoint(bool is_return) : _is_return(is_return) { }
+
+  bool is_return() { return _is_return; }
+
+  address safepoint_pc() { return _safepoint_pc; }
+  void set_safepoint_pc(address pc) { _safepoint_pc = pc; }
+
+  virtual void emit_code(LIR_Assembler* e);
+  virtual void visit(LIR_OpVisitState* visitor) {
+    // don't pass in the code emit info since it's processed in the fast path
+    visitor->do_slow_case();
+  }
+#ifndef PRODUCT
+  virtual void print_name(outputStream* out) const { out->print("C1ThreadLocalSafepoint"); }
+#endif // PRODUCT
+};
+
 //////////////////////////////////////////////////////////////////////////////////////////
 #if INCLUDE_ALL_GCS
 
 // Code stubs for Garbage-First barriers.
 class G1PreBarrierStub: public CodeStub {
< prev index next >