< prev index next > src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.hpp
Print this page
#ifndef SHARE_GC_SHARED_C2_CARDTABLEBARRIERSETC2_HPP
#define SHARE_GC_SHARED_C2_CARDTABLEBARRIERSETC2_HPP
#include "gc/shared/c2/modRefBarrierSetC2.hpp"
+ #include "utilities/growableArray.hpp"
+
+ class CastP2XNode;
+
+ class BarrierSetC2State : public ResourceObj {
+ private:
+ GrowableArray<CastP2XNode*>* _enqueue_barriers;
+
+ public:
+ BarrierSetC2State(Arena* comp_arena);
+
+ int enqueue_barriers_count() const;
+ CastP2XNode* enqueue_barrier(int idx) const;
+ void add_enqueue_barrier(CastP2XNode* n);
+ void remove_enqueue_barrier(CastP2XNode* n);
+ bool is_a_barrier(CastP2XNode* n);
+ };
+
class CardTableBarrierSetC2: public ModRefBarrierSetC2 {
protected:
virtual void post_barrier(GraphKit* kit,
Node* ctl,
public:
virtual void clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const;
virtual bool is_gc_barrier_node(Node* node) const;
virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const;
virtual bool array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const;
+ virtual bool process_barrier_node(Node* cast_node, PhaseIterGVN& igvn) const;
+ virtual Node* step_over_gc_barrier(Node* c) const;
bool use_ReduceInitialCardMarks() const;
+
+ BarrierSetC2State* state() const;
+
+ virtual void register_potential_barrier_node(Node* node) const;
+ virtual void unregister_potential_barrier_node(Node* node) const;
+ virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
+ virtual void* create_barrier_state(Arena* comp_arena) const;
};
#endif // SHARE_GC_SHARED_C2_CARDTABLEBARRIERSETC2_HPP
< prev index next >