src/share/vm/opto/phaseX.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/phaseX.hpp

src/share/vm/opto/phaseX.hpp

Print this page
rev 9743 : 8139771: Eliminating CastPP nodes at Phis when they all come from a unique input may cause crash
Summary: Lost dependency when CastPP at Phis are eliminate
Reviewed-by:

*** 328,337 **** --- 328,340 ---- { ShouldNotCallThis(); return NULL; } // Delayed node rehash if this is an IGVN phase virtual void igvn_rehash_node_delayed(Node* n) {} + // true if CFG node d dominates CFG node n + virtual bool is_dominator(Node *d, Node *n) { fatal("unimplemented for this pass"); return false; }; + #ifndef PRODUCT void dump_old2new_map() const; void dump_new( uint new_lidx ) const; void dump_types() const; void dump_nodes_and_types(const Node *root, uint depth, bool only_ctrl = true);
*** 395,404 **** --- 398,410 ---- //------------------------------PhaseGVN--------------------------------------- // Phase for performing local, pessimistic GVN-style optimizations. class PhaseGVN : public PhaseValues { + protected: + bool is_dominator_helper(Node *d, Node *n, bool linear_only); + public: PhaseGVN( Arena *arena, uint est_max_size ) : PhaseValues( arena, est_max_size ) {} PhaseGVN( PhaseGVN *gvn ) : PhaseValues( gvn ) {} PhaseGVN( PhaseGVN *gvn, const char *dummy ) : PhaseValues( gvn, dummy ) {}
*** 413,422 **** --- 419,430 ---- void replace_with(PhaseGVN* gvn) { _table.replace_with(&gvn->_table); _types = gvn->_types; } + bool is_dominator(Node *d, Node *n) { return is_dominator_helper(d, n, true); } + // Check for a simple dead loop when a data node references itself. DEBUG_ONLY(void dead_loop_check(Node *n);) }; //------------------------------PhaseIterGVN-----------------------------------
*** 543,552 **** --- 551,562 ---- void remove_speculative_types(); void check_no_speculative_types() { _table.check_no_speculative_types(); } + bool is_dominator(Node *d, Node *n) { return is_dominator_helper(d, n, false); } + #ifndef PRODUCT protected: // Sub-quadratic implementation of VerifyIterativeGVN. julong _verify_counter; julong _verify_full_passes;
src/share/vm/opto/phaseX.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File