src/share/vm/opto/callnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7069452 Sdiff src/share/vm/opto

src/share/vm/opto/callnode.hpp

Print this page




  50 class     AllocateNode;
  51 class       AllocateArrayNode;
  52 class     LockNode;
  53 class     UnlockNode;
  54 class JVMState;
  55 class OopMap;
  56 class State;
  57 class StartNode;
  58 class MachCallNode;
  59 class FastLockNode;
  60 
  61 //------------------------------StartNode--------------------------------------
  62 // The method start node
  63 class StartNode : public MultiNode {
  64   virtual uint cmp( const Node &n ) const;
  65   virtual uint size_of() const; // Size is bigger
  66 public:
  67   const TypeTuple *_domain;
  68   StartNode( Node *root, const TypeTuple *domain ) : MultiNode(2), _domain(domain) {
  69     init_class_id(Class_Start);
  70     init_flags(Flag_is_block_start);
  71     init_req(0,this);
  72     init_req(1,root);
  73   }
  74   virtual int Opcode() const;
  75   virtual bool pinned() const { return true; };
  76   virtual const Type *bottom_type() const;
  77   virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; }
  78   virtual const Type *Value( PhaseTransform *phase ) const;
  79   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
  80   virtual void  calling_convention( BasicType* sig_bt, VMRegPair *parm_reg, uint length ) const;
  81   virtual const RegMask &in_RegMask(uint) const;
  82   virtual Node *match( const ProjNode *proj, const Matcher *m );
  83   virtual uint ideal_reg() const { return 0; }
  84 #ifndef PRODUCT
  85   virtual void  dump_spec(outputStream *st) const;
  86 #endif
  87 };
  88 
  89 //------------------------------StartOSRNode-----------------------------------
  90 // The method start node for on stack replacement code


 496   Node* exobj;
 497 };
 498 
 499 
 500 //------------------------------CallNode---------------------------------------
 501 // Call nodes now subsume the function of debug nodes at callsites, so they
 502 // contain the functionality of a full scope chain of debug nodes.
 503 class CallNode : public SafePointNode {
 504 public:
 505   const TypeFunc *_tf;        // Function type
 506   address      _entry_point;  // Address of method being called
 507   float        _cnt;          // Estimate of number of times called
 508 
 509   CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
 510     : SafePointNode(tf->domain()->cnt(), NULL, adr_type),
 511       _tf(tf),
 512       _entry_point(addr),
 513       _cnt(COUNT_UNKNOWN)
 514   {
 515     init_class_id(Class_Call);
 516     init_flags(Flag_is_Call);
 517   }
 518 
 519   const TypeFunc* tf()        const { return _tf; }
 520   const address entry_point() const { return _entry_point; }
 521   const float   cnt()         const { return _cnt; }
 522 
 523   void set_tf(const TypeFunc* tf) { _tf = tf; }
 524   void set_entry_point(address p) { _entry_point = p; }
 525   void set_cnt(float c)           { _cnt = c; }
 526 
 527   virtual const Type *bottom_type() const;
 528   virtual const Type *Value( PhaseTransform *phase ) const;
 529   virtual Node *Identity( PhaseTransform *phase ) { return this; }
 530   virtual uint        cmp( const Node &n ) const;
 531   virtual uint        size_of() const = 0;
 532   virtual void        calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const;
 533   virtual Node       *match( const ProjNode *proj, const Matcher *m );
 534   virtual uint        ideal_reg() const { return NotAMachineReg; }
 535   // Are we guaranteed that this node is a safepoint?  Not true for leaf calls and
 536   // for some macro nodes whose expansion does not have a safepoint on the fast path.




  50 class     AllocateNode;
  51 class       AllocateArrayNode;
  52 class     LockNode;
  53 class     UnlockNode;
  54 class JVMState;
  55 class OopMap;
  56 class State;
  57 class StartNode;
  58 class MachCallNode;
  59 class FastLockNode;
  60 
  61 //------------------------------StartNode--------------------------------------
  62 // The method start node
  63 class StartNode : public MultiNode {
  64   virtual uint cmp( const Node &n ) const;
  65   virtual uint size_of() const; // Size is bigger
  66 public:
  67   const TypeTuple *_domain;
  68   StartNode( Node *root, const TypeTuple *domain ) : MultiNode(2), _domain(domain) {
  69     init_class_id(Class_Start);

  70     init_req(0,this);
  71     init_req(1,root);
  72   }
  73   virtual int Opcode() const;
  74   virtual bool pinned() const { return true; };
  75   virtual const Type *bottom_type() const;
  76   virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; }
  77   virtual const Type *Value( PhaseTransform *phase ) const;
  78   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
  79   virtual void  calling_convention( BasicType* sig_bt, VMRegPair *parm_reg, uint length ) const;
  80   virtual const RegMask &in_RegMask(uint) const;
  81   virtual Node *match( const ProjNode *proj, const Matcher *m );
  82   virtual uint ideal_reg() const { return 0; }
  83 #ifndef PRODUCT
  84   virtual void  dump_spec(outputStream *st) const;
  85 #endif
  86 };
  87 
  88 //------------------------------StartOSRNode-----------------------------------
  89 // The method start node for on stack replacement code


 495   Node* exobj;
 496 };
 497 
 498 
 499 //------------------------------CallNode---------------------------------------
 500 // Call nodes now subsume the function of debug nodes at callsites, so they
 501 // contain the functionality of a full scope chain of debug nodes.
 502 class CallNode : public SafePointNode {
 503 public:
 504   const TypeFunc *_tf;        // Function type
 505   address      _entry_point;  // Address of method being called
 506   float        _cnt;          // Estimate of number of times called
 507 
 508   CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
 509     : SafePointNode(tf->domain()->cnt(), NULL, adr_type),
 510       _tf(tf),
 511       _entry_point(addr),
 512       _cnt(COUNT_UNKNOWN)
 513   {
 514     init_class_id(Class_Call);

 515   }
 516 
 517   const TypeFunc* tf()        const { return _tf; }
 518   const address entry_point() const { return _entry_point; }
 519   const float   cnt()         const { return _cnt; }
 520 
 521   void set_tf(const TypeFunc* tf) { _tf = tf; }
 522   void set_entry_point(address p) { _entry_point = p; }
 523   void set_cnt(float c)           { _cnt = c; }
 524 
 525   virtual const Type *bottom_type() const;
 526   virtual const Type *Value( PhaseTransform *phase ) const;
 527   virtual Node *Identity( PhaseTransform *phase ) { return this; }
 528   virtual uint        cmp( const Node &n ) const;
 529   virtual uint        size_of() const = 0;
 530   virtual void        calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const;
 531   virtual Node       *match( const ProjNode *proj, const Matcher *m );
 532   virtual uint        ideal_reg() const { return NotAMachineReg; }
 533   // Are we guaranteed that this node is a safepoint?  Not true for leaf calls and
 534   // for some macro nodes whose expansion does not have a safepoint on the fast path.


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