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.
|