equal
deleted
inserted
replaced
29 #include "opto/node.hpp" |
29 #include "opto/node.hpp" |
30 #include "utilities/growableArray.hpp" |
30 #include "utilities/growableArray.hpp" |
31 |
31 |
32 class LoadBarrierNode : public MultiNode { |
32 class LoadBarrierNode : public MultiNode { |
33 private: |
33 private: |
34 bool _weak; |
34 bool _weak; // On strong or weak oop reference |
35 bool _writeback; // Controls if the barrier writes the healed oop back to memory |
35 bool _writeback; // Controls if the barrier writes the healed oop back to memory |
36 // A swap on a memory location must never write back the healed oop |
36 // A swap on a memory location must never write back the healed oop |
37 bool _oop_reload_allowed; // Controls if the barrier are allowed to reload the oop from memory |
37 bool _oop_reload_allowed; // Controls if the barrier are allowed to reload the oop from memory |
38 // before healing, otherwise both the oop and the address must be |
38 // before healing, otherwise both the oop and the address must be |
39 // passed to the barrier from the oop |
39 // passed to the barrier from the oop |
102 Node *mem, |
102 Node *mem, |
103 Node *adr, |
103 Node *adr, |
104 const TypePtr *at, |
104 const TypePtr *at, |
105 const TypePtr* t, |
105 const TypePtr* t, |
106 MemOrd mo, |
106 MemOrd mo, |
107 ControlDependency control_dependency = DependsOnlyOnTest) |
107 ControlDependency control_dependency = DependsOnlyOnTest) : |
108 : LoadPNode(c, mem, adr, at, t, mo, control_dependency) { |
108 LoadPNode(c, mem, adr, at, t, mo, control_dependency) { |
109 init_class_id(Class_LoadBarrierSlowReg); |
109 init_class_id(Class_LoadBarrierSlowReg); |
110 } |
110 } |
111 |
111 |
112 virtual const char * name() { |
112 virtual const char * name() { |
113 return "LoadBarrierSlowRegNode"; |
113 return "LoadBarrierSlowRegNode"; |
126 Node *mem, |
126 Node *mem, |
127 Node *adr, |
127 Node *adr, |
128 const TypePtr *at, |
128 const TypePtr *at, |
129 const TypePtr* t, |
129 const TypePtr* t, |
130 MemOrd mo, |
130 MemOrd mo, |
131 ControlDependency control_dependency = DependsOnlyOnTest) |
131 ControlDependency control_dependency = DependsOnlyOnTest) : |
132 : LoadPNode(c, mem, adr, at, t, mo, control_dependency) { |
132 LoadPNode(c, mem, adr, at, t, mo, control_dependency) { |
133 init_class_id(Class_LoadBarrierWeakSlowReg); |
133 init_class_id(Class_LoadBarrierWeakSlowReg); |
134 } |
134 } |
135 |
135 |
136 virtual const char * name() { |
136 virtual const char * name() { |
137 return "LoadBarrierWeakSlowRegNode"; |
137 return "LoadBarrierWeakSlowRegNode"; |
219 virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const; |
219 virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const; |
220 #endif |
220 #endif |
221 |
221 |
222 virtual bool escape_add_to_con_graph(ConnectionGraph* conn_graph, PhaseGVN* gvn, Unique_Node_List* delayed_worklist, Node* n, uint opcode) const; |
222 virtual bool escape_add_to_con_graph(ConnectionGraph* conn_graph, PhaseGVN* gvn, Unique_Node_List* delayed_worklist, Node* n, uint opcode) const; |
223 virtual bool escape_add_final_edges(ConnectionGraph* conn_graph, PhaseGVN* gvn, Node* n, uint opcode) const; |
223 virtual bool escape_add_final_edges(ConnectionGraph* conn_graph, PhaseGVN* gvn, Node* n, uint opcode) const; |
224 |
|
225 }; |
224 }; |
226 |
225 |
227 #endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP |
226 #endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP |