94 PhaseValues* phase,
95 Node* adr,
96 BasicType bt,
97 uint adr_idx) const;
98
99 bool g1_can_remove_post_barrier(GraphKit* kit,
100 PhaseValues* phase, Node* store,
101 Node* adr) const;
102
103 int get_store_barrier(C2Access& access) const;
104
105 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
106 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
107 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
108 Node* new_val, const Type* value_type) const;
109 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
110 Node* new_val, const Type* value_type) const;
111 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
112
113 public:
114 virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const;
115 virtual void eliminate_gc_barrier_data(Node* node) const;
116 virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
117 virtual uint estimated_barrier_size(const Node* node) const;
118 virtual bool can_initialize_object(const StoreNode* store) const;
119 virtual void clone_at_expansion(PhaseMacroExpand* phase,
120 ArrayCopyNode* ac) const;
121 virtual void* create_barrier_state(Arena* comp_arena) const;
122 virtual void emit_stubs(CodeBuffer& cb) const;
123 virtual void elide_dominated_barrier(MachNode* mach) const;
124 virtual void late_barrier_analysis() const;
125
126 #ifndef PRODUCT
127 virtual void dump_barrier_data(const MachNode* mach, outputStream* st) const;
128 #endif
129 };
130
131 #endif // SHARE_GC_G1_C2_G1BARRIERSETC2_HPP
|
94 PhaseValues* phase,
95 Node* adr,
96 BasicType bt,
97 uint adr_idx) const;
98
99 bool g1_can_remove_post_barrier(GraphKit* kit,
100 PhaseValues* phase, Node* store,
101 Node* adr) const;
102
103 int get_store_barrier(C2Access& access) const;
104
105 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
106 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
107 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
108 Node* new_val, const Type* value_type) const;
109 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
110 Node* new_val, const Type* value_type) const;
111 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
112
113 public:
114 virtual void eliminate_gc_barrier(PhaseIterGVN* igvn, Node* node) const;
115 virtual void eliminate_gc_barrier_data(Node* node) const;
116 virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
117 virtual uint estimated_barrier_size(const Node* node) const;
118 virtual bool can_initialize_object(const StoreNode* store) const;
119 virtual void clone_at_expansion(PhaseMacroExpand* phase,
120 ArrayCopyNode* ac) const;
121 virtual void* create_barrier_state(Arena* comp_arena) const;
122 virtual void emit_stubs(CodeBuffer& cb) const;
123 virtual void elide_dominated_barrier(MachNode* mach) const;
124 virtual void late_barrier_analysis() const;
125
126 #ifndef PRODUCT
127 virtual void dump_barrier_data(const MachNode* mach, outputStream* st) const;
128 #endif
129 };
130
131 #endif // SHARE_GC_G1_C2_G1BARRIERSETC2_HPP
|