264 // Support for GC barriers emitted during parsing
265 virtual bool has_load_barriers() const { return false; }
266 virtual bool is_gc_barrier_node(Node* node) const { return false; }
267 virtual Node* step_over_gc_barrier(Node* c) const { return c; }
268
269 // Support for macro expanded GC barriers
270 virtual void register_potential_barrier_node(Node* node) const { }
271 virtual void unregister_potential_barrier_node(Node* node) const { }
272 virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const { }
273 virtual void enqueue_useful_gc_barrier(PhaseIterGVN* igvn, Node* node) const {}
274 virtual void eliminate_useless_gc_barriers(Unique_Node_List &useful, Compile* C) const {}
275 virtual void add_users_to_worklist(Unique_Node_List* worklist) const {}
276
277 // Allow barrier sets to have shared state that is preserved across a compilation unit.
278 // This could for example comprise macro nodes to be expanded during macro expansion.
279 virtual void* create_barrier_state(Arena* comp_arena) const { return NULL; }
280 // If the BarrierSetC2 state has kept macro nodes in its compilation unit state to be
281 // expanded later, then now is the time to do so.
282 virtual bool expand_macro_nodes(PhaseMacroExpand* macro) const { return false; }
283
284 enum CompilePhase {
285 BeforeOptimize, /* post_parse = true */
286 BeforeExpand, /* post_parse = false */
287 BeforeCodeGen
288 };
289 virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const {}
290
291 virtual bool flatten_gc_alias_type(const TypePtr*& adr_type) const { return false; }
292 #ifdef ASSERT
293 virtual bool verify_gc_alias_type(const TypePtr* adr_type, int offset) const { return false; }
294 #endif
295
296 virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const { return false; }
297
298 virtual bool escape_add_to_con_graph(ConnectionGraph* conn_graph, PhaseGVN* gvn, Unique_Node_List* delayed_worklist, Node* n, uint opcode) const { return false; }
299 virtual bool escape_add_final_edges(ConnectionGraph* conn_graph, PhaseGVN* gvn, Node* n, uint opcode) const { return false; }
300 virtual bool escape_has_out_with_unsafe_object(Node* n) const { return false; }
301 virtual bool escape_is_barrier_node(Node* n) const { return false; }
302
303 virtual bool matcher_find_shared_visit(Matcher* matcher, Matcher::MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) const { return false; };
|
264 // Support for GC barriers emitted during parsing
265 virtual bool has_load_barriers() const { return false; }
266 virtual bool is_gc_barrier_node(Node* node) const { return false; }
267 virtual Node* step_over_gc_barrier(Node* c) const { return c; }
268
269 // Support for macro expanded GC barriers
270 virtual void register_potential_barrier_node(Node* node) const { }
271 virtual void unregister_potential_barrier_node(Node* node) const { }
272 virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const { }
273 virtual void enqueue_useful_gc_barrier(PhaseIterGVN* igvn, Node* node) const {}
274 virtual void eliminate_useless_gc_barriers(Unique_Node_List &useful, Compile* C) const {}
275 virtual void add_users_to_worklist(Unique_Node_List* worklist) const {}
276
277 // Allow barrier sets to have shared state that is preserved across a compilation unit.
278 // This could for example comprise macro nodes to be expanded during macro expansion.
279 virtual void* create_barrier_state(Arena* comp_arena) const { return NULL; }
280 // If the BarrierSetC2 state has kept macro nodes in its compilation unit state to be
281 // expanded later, then now is the time to do so.
282 virtual bool expand_macro_nodes(PhaseMacroExpand* macro) const { return false; }
283
284 virtual bool has_special_unique_user(const Node* node) const { return false; }
285
286 enum CompilePhase {
287 BeforeOptimize, /* post_parse = true */
288 BeforeExpand, /* post_parse = false */
289 BeforeCodeGen
290 };
291 virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const {}
292
293 virtual bool flatten_gc_alias_type(const TypePtr*& adr_type) const { return false; }
294 #ifdef ASSERT
295 virtual bool verify_gc_alias_type(const TypePtr* adr_type, int offset) const { return false; }
296 #endif
297
298 virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const { return false; }
299
300 virtual bool escape_add_to_con_graph(ConnectionGraph* conn_graph, PhaseGVN* gvn, Unique_Node_List* delayed_worklist, Node* n, uint opcode) const { return false; }
301 virtual bool escape_add_final_edges(ConnectionGraph* conn_graph, PhaseGVN* gvn, Node* n, uint opcode) const { return false; }
302 virtual bool escape_has_out_with_unsafe_object(Node* n) const { return false; }
303 virtual bool escape_is_barrier_node(Node* n) const { return false; }
304
305 virtual bool matcher_find_shared_visit(Matcher* matcher, Matcher::MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) const { return false; };
|