77 PhaseValues* phase,
78 Node* adr,
79 BasicType bt,
80 uint adr_idx) const;
81
82 bool g1_can_remove_post_barrier(GraphKit* kit,
83 PhaseValues* phase, Node* store,
84 Node* adr) const;
85
86 int get_store_barrier(C2Access& access) const;
87
88 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
89 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
90 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
91 Node* new_val, const Type* value_type) const;
92 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
93 Node* new_val, const Type* value_type) const;
94 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
95
96 public:
97 virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const;
98 virtual void eliminate_gc_barrier_data(Node* node) const;
99 virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
100 virtual uint estimated_barrier_size(const Node* node) const;
101 virtual bool can_initialize_object(const StoreNode* store) const;
102 virtual void clone_at_expansion(PhaseMacroExpand* phase,
103 ArrayCopyNode* ac) const;
104 virtual void* create_barrier_state(Arena* comp_arena) const;
105 virtual void emit_stubs(CodeBuffer& cb) const;
106 virtual void elide_dominated_barrier(MachNode* mach) const;
107 virtual void late_barrier_analysis() const;
108
109 #ifndef PRODUCT
110 virtual void dump_barrier_data(const MachNode* mach, outputStream* st) const;
111 #endif
112 };
113
114 #endif // SHARE_GC_G1_C2_G1BARRIERSETC2_HPP
|
77 PhaseValues* phase,
78 Node* adr,
79 BasicType bt,
80 uint adr_idx) const;
81
82 bool g1_can_remove_post_barrier(GraphKit* kit,
83 PhaseValues* phase, Node* store,
84 Node* adr) const;
85
86 int get_store_barrier(C2Access& access) const;
87
88 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
89 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
90 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
91 Node* new_val, const Type* value_type) const;
92 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
93 Node* new_val, const Type* value_type) const;
94 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
95
96 public:
97 virtual void eliminate_gc_barrier(PhaseIterGVN* igvn, Node* node) const;
98 virtual void eliminate_gc_barrier_data(Node* node) const;
99 virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
100 virtual uint estimated_barrier_size(const Node* node) const;
101 virtual bool can_initialize_object(const StoreNode* store) const;
102 virtual void clone_at_expansion(PhaseMacroExpand* phase,
103 ArrayCopyNode* ac) const;
104 virtual void* create_barrier_state(Arena* comp_arena) const;
105 virtual void emit_stubs(CodeBuffer& cb) const;
106 virtual void elide_dominated_barrier(MachNode* mach) const;
107 virtual void late_barrier_analysis() const;
108
109 #ifndef PRODUCT
110 virtual void dump_barrier_data(const MachNode* mach, outputStream* st) const;
111 #endif
112 };
113
114 #endif // SHARE_GC_G1_C2_G1BARRIERSETC2_HPP
|