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

src/share/vm/opto/machnode.hpp

Print this page




 599       case PhiLocationDifferToInputLocation:
 600         return "PhiLocationDifferToInputLocationSpillCopy";
 601       case BasePointerToMem:
 602         return "BasePointerToMemSpillCopy";
 603       case InputToRematerialization:
 604         return "InputToRematerializationSpillCopy";
 605       case CallUse:
 606         return "CallUseSpillCopy";
 607       case Bound:
 608         return "BoundSpillCopy";
 609       default:
 610         assert(false, "Must have valid spill type");
 611         return "MachSpillCopy";
 612     }
 613   }
 614 
 615   virtual void format( PhaseRegAlloc *, outputStream *st ) const;
 616 #endif
 617 };
 618 























 619 //------------------------------MachBranchNode--------------------------------
 620 // Abstract machine branch Node
 621 class MachBranchNode : public MachIdealNode {
 622 public:
 623   MachBranchNode() : MachIdealNode() {
 624     init_class_id(Class_MachBranch);
 625   }
 626   virtual void label_set(Label* label, uint block_num) = 0;
 627   virtual void save_label(Label** label, uint* block_num) = 0;
 628 
 629   // Support for short branches
 630   virtual MachNode *short_branch_version() { return NULL; }
 631 
 632   virtual bool pinned() const { return true; };
 633 };
 634 
 635 //------------------------------MachNullChkNode--------------------------------
 636 // Machine-dependent null-pointer-check Node.  Points a real MachNode that is
 637 // also some kind of memory op.  Turns the indicated MachNode into a
 638 // conditional branch with good latency on the ptr-not-null path and awful




 599       case PhiLocationDifferToInputLocation:
 600         return "PhiLocationDifferToInputLocationSpillCopy";
 601       case BasePointerToMem:
 602         return "BasePointerToMemSpillCopy";
 603       case InputToRematerialization:
 604         return "InputToRematerializationSpillCopy";
 605       case CallUse:
 606         return "CallUseSpillCopy";
 607       case Bound:
 608         return "BoundSpillCopy";
 609       default:
 610         assert(false, "Must have valid spill type");
 611         return "MachSpillCopy";
 612     }
 613   }
 614 
 615   virtual void format( PhaseRegAlloc *, outputStream *st ) const;
 616 #endif
 617 };
 618 
 619 // MachMergeNode is similar to a PhiNode in a sense it merges multiple values,
 620 // however it doesn't have a control input and is more like a MergeMem.
 621 // It is inserted after the register allocation is done to ensure that nodes use single
 622 // definition of a multidef lrg in a block.
 623 class MachMergeNode : public MachIdealNode {
 624 public:
 625   MachMergeNode(Node *n1) {
 626     init_class_id(Class_MachMerge);
 627     add_req(NULL);
 628     add_req(n1);
 629   }
 630   virtual const RegMask &out_RegMask() const { return in(1)->out_RegMask(); }
 631   virtual const RegMask &in_RegMask(uint idx) const { return in(1)->in_RegMask(idx); }
 632   virtual const class Type *bottom_type() const { return in(1)->bottom_type(); }
 633   virtual uint ideal_reg() const { return bottom_type()->ideal_reg(); }
 634   virtual uint oper_input_base() const { return 1; }
 635   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { }
 636   virtual uint size(PhaseRegAlloc *ra_) const { return 0; }
 637 #ifndef PRODUCT
 638   virtual const char *Name() const { return "MachMerge"; }
 639 #endif
 640 };
 641 
 642 //------------------------------MachBranchNode--------------------------------
 643 // Abstract machine branch Node
 644 class MachBranchNode : public MachIdealNode {
 645 public:
 646   MachBranchNode() : MachIdealNode() {
 647     init_class_id(Class_MachBranch);
 648   }
 649   virtual void label_set(Label* label, uint block_num) = 0;
 650   virtual void save_label(Label** label, uint* block_num) = 0;
 651 
 652   // Support for short branches
 653   virtual MachNode *short_branch_version() { return NULL; }
 654 
 655   virtual bool pinned() const { return true; };
 656 };
 657 
 658 //------------------------------MachNullChkNode--------------------------------
 659 // Machine-dependent null-pointer-check Node.  Points a real MachNode that is
 660 // also some kind of memory op.  Turns the indicated MachNode into a
 661 // conditional branch with good latency on the ptr-not-null path and awful


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