445 } 446 void record_replaced_node(Node* initial, Node* improved) { 447 _replaced_nodes.record(initial, improved); 448 } 449 void transfer_replaced_nodes_from(SafePointNode* sfpt, uint idx = 0) { 450 _replaced_nodes.transfer_from(sfpt->_replaced_nodes, idx); 451 } 452 void delete_replaced_nodes() { 453 _replaced_nodes.reset(); 454 } 455 void apply_replaced_nodes(uint idx) { 456 _replaced_nodes.apply(this, idx); 457 } 458 void merge_replaced_nodes_with(SafePointNode* sfpt) { 459 _replaced_nodes.merge_with(sfpt->_replaced_nodes); 460 } 461 bool has_replaced_nodes() const { 462 return !_replaced_nodes.is_empty(); 463 } 464 465 // Standard Node stuff 466 virtual int Opcode() const; 467 virtual bool pinned() const { return true; } 468 virtual const Type* Value(PhaseGVN* phase) const; 469 virtual const Type *bottom_type() const { return Type::CONTROL; } 470 virtual const TypePtr *adr_type() const { return _adr_type; } 471 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 472 virtual Node* Identity(PhaseGVN* phase); 473 virtual uint ideal_reg() const { return 0; } 474 virtual const RegMask &in_RegMask(uint) const; 475 virtual const RegMask &out_RegMask() const; 476 virtual uint match_edge(uint idx) const; 477 478 static bool needs_polling_address_input(); 479 480 #ifndef PRODUCT 481 virtual void dump_spec(outputStream *st) const; 482 virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const; 483 #endif 484 }; | 445 } 446 void record_replaced_node(Node* initial, Node* improved) { 447 _replaced_nodes.record(initial, improved); 448 } 449 void transfer_replaced_nodes_from(SafePointNode* sfpt, uint idx = 0) { 450 _replaced_nodes.transfer_from(sfpt->_replaced_nodes, idx); 451 } 452 void delete_replaced_nodes() { 453 _replaced_nodes.reset(); 454 } 455 void apply_replaced_nodes(uint idx) { 456 _replaced_nodes.apply(this, idx); 457 } 458 void merge_replaced_nodes_with(SafePointNode* sfpt) { 459 _replaced_nodes.merge_with(sfpt->_replaced_nodes); 460 } 461 bool has_replaced_nodes() const { 462 return !_replaced_nodes.is_empty(); 463 } 464 465 void disconnect_from_root(PhaseIterGVN *igvn); 466 467 // Standard Node stuff 468 virtual int Opcode() const; 469 virtual bool pinned() const { return true; } 470 virtual const Type* Value(PhaseGVN* phase) const; 471 virtual const Type *bottom_type() const { return Type::CONTROL; } 472 virtual const TypePtr *adr_type() const { return _adr_type; } 473 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 474 virtual Node* Identity(PhaseGVN* phase); 475 virtual uint ideal_reg() const { return 0; } 476 virtual const RegMask &in_RegMask(uint) const; 477 virtual const RegMask &out_RegMask() const; 478 virtual uint match_edge(uint idx) const; 479 480 static bool needs_polling_address_input(); 481 482 #ifndef PRODUCT 483 virtual void dump_spec(outputStream *st) const; 484 virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const; 485 #endif 486 }; |