454 } |
454 } |
455 // Reaffirm invariants for is_top. (Only from Compile::set_cached_top_node.) |
455 // Reaffirm invariants for is_top. (Only from Compile::set_cached_top_node.) |
456 void setup_is_top(); |
456 void setup_is_top(); |
457 |
457 |
458 // Strip away casting. (It is depth-limited.) |
458 // Strip away casting. (It is depth-limited.) |
459 Node* uncast() const; |
459 Node* uncast(bool keep_deps = false) const; |
460 // Return whether two Nodes are equivalent, after stripping casting. |
460 // Return whether two Nodes are equivalent, after stripping casting. |
461 bool eqv_uncast(const Node* n) const { |
461 bool eqv_uncast(const Node* n, bool keep_deps = false) const { |
462 return (this->uncast() == n->uncast()); |
462 return (this->uncast(keep_deps) == n->uncast(keep_deps)); |
463 } |
463 } |
464 |
464 |
465 // Find out of current node that matches opcode. |
465 // Find out of current node that matches opcode. |
466 Node* find_out_with(int opcode); |
466 Node* find_out_with(int opcode); |
467 // Return true if the current node has an out that matches opcode. |
467 // Return true if the current node has an out that matches opcode. |
468 bool has_out_with(int opcode); |
468 bool has_out_with(int opcode); |
469 // Return true if the current node has an out that matches any of the opcodes. |
469 // Return true if the current node has an out that matches any of the opcodes. |
470 bool has_out_with(int opcode1, int opcode2, int opcode3, int opcode4); |
470 bool has_out_with(int opcode1, int opcode2, int opcode3, int opcode4); |
471 |
471 |
472 private: |
472 private: |
473 static Node* uncast_helper(const Node* n); |
473 static Node* uncast_helper(const Node* n, bool keep_deps); |
474 |
474 |
475 // Add an output edge to the end of the list |
475 // Add an output edge to the end of the list |
476 void add_out( Node *n ) { |
476 void add_out( Node *n ) { |
477 if (is_top()) return; |
477 if (is_top()) return; |
478 if( _outcnt == _outmax ) out_grow(_outcnt); |
478 if( _outcnt == _outmax ) out_grow(_outcnt); |