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




 541   }
 542   virtual uint size_of() const { return sizeof(*this); }
 543   void set_out_RegMask(const RegMask &out) { _out = &out; }
 544   void set_in_RegMask(const RegMask &in) { _in = ∈ }
 545   virtual const RegMask &out_RegMask() const { return *_out; }
 546   virtual const RegMask &in_RegMask(uint) const { return *_in; }
 547   virtual const class Type *bottom_type() const { return _type; }
 548   virtual uint ideal_reg() const { return _type->ideal_reg(); }
 549   virtual uint oper_input_base() const { return 1; }
 550   uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const;
 551 
 552   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
 553   virtual uint size(PhaseRegAlloc *ra_) const;
 554 
 555 #ifndef PRODUCT
 556   virtual const char *Name() const { return "MachSpillCopy"; }
 557   virtual void format( PhaseRegAlloc *, outputStream *st ) const;
 558 #endif
 559 };
 560 























 561 //------------------------------MachBranchNode--------------------------------
 562 // Abstract machine branch Node
 563 class MachBranchNode : public MachIdealNode {
 564 public:
 565   MachBranchNode() : MachIdealNode() {
 566     init_class_id(Class_MachBranch);
 567   }
 568   virtual void label_set(Label* label, uint block_num) = 0;
 569   virtual void save_label(Label** label, uint* block_num) = 0;
 570 
 571   // Support for short branches
 572   virtual MachNode *short_branch_version(Compile* C) { return NULL; }
 573 
 574   virtual bool pinned() const { return true; };
 575 };
 576 
 577 //------------------------------MachNullChkNode--------------------------------
 578 // Machine-dependent null-pointer-check Node.  Points a real MachNode that is
 579 // also some kind of memory op.  Turns the indicated MachNode into a
 580 // conditional branch with good latency on the ptr-not-null path and awful




 541   }
 542   virtual uint size_of() const { return sizeof(*this); }
 543   void set_out_RegMask(const RegMask &out) { _out = &out; }
 544   void set_in_RegMask(const RegMask &in) { _in = ∈ }
 545   virtual const RegMask &out_RegMask() const { return *_out; }
 546   virtual const RegMask &in_RegMask(uint) const { return *_in; }
 547   virtual const class Type *bottom_type() const { return _type; }
 548   virtual uint ideal_reg() const { return _type->ideal_reg(); }
 549   virtual uint oper_input_base() const { return 1; }
 550   uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const;
 551 
 552   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
 553   virtual uint size(PhaseRegAlloc *ra_) const;
 554 
 555 #ifndef PRODUCT
 556   virtual const char *Name() const { return "MachSpillCopy"; }
 557   virtual void format( PhaseRegAlloc *, outputStream *st ) const;
 558 #endif
 559 };
 560 
 561 // MachMergeNode is similar to a PhiNode in a sense it merges multiple values,
 562 // however it doesn't have a control input and is more like a MergeMem.
 563 // It is inserted after the register allocation is done to ensure that nodes use single
 564 // definition of a multidef lrg in a block.
 565 class MachMergeNode : public MachIdealNode {
 566 public:
 567   MachMergeNode(Node *n1) {
 568     init_class_id(Class_MachMerge);
 569     add_req(NULL);
 570     add_req(n1);
 571   }
 572   virtual const RegMask &out_RegMask() const { return in(1)->out_RegMask(); }
 573   virtual const RegMask &in_RegMask(uint idx) const { return in(1)->in_RegMask(idx); }
 574   virtual const class Type *bottom_type() const { return in(1)->bottom_type(); }
 575   virtual uint ideal_reg() const { return bottom_type()->ideal_reg(); }
 576   virtual uint oper_input_base() const { return 1; }
 577   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { }
 578   virtual uint size(PhaseRegAlloc *ra_) const { return 0; }
 579 #ifndef PRODUCT
 580   virtual const char *Name() const { return "MachMerge"; }
 581 #endif
 582 };
 583 
 584 //------------------------------MachBranchNode--------------------------------
 585 // Abstract machine branch Node
 586 class MachBranchNode : public MachIdealNode {
 587 public:
 588   MachBranchNode() : MachIdealNode() {
 589     init_class_id(Class_MachBranch);
 590   }
 591   virtual void label_set(Label* label, uint block_num) = 0;
 592   virtual void save_label(Label** label, uint* block_num) = 0;
 593 
 594   // Support for short branches
 595   virtual MachNode *short_branch_version(Compile* C) { return NULL; }
 596 
 597   virtual bool pinned() const { return true; };
 598 };
 599 
 600 //------------------------------MachNullChkNode--------------------------------
 601 // Machine-dependent null-pointer-check Node.  Points a real MachNode that is
 602 // also some kind of memory op.  Turns the indicated MachNode into a
 603 // 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