comparison src/share/vm/opto/callnode.hpp @ 7473:d092d1b31229

8005071: Incremental inlining for JSR 292 Summary: post parse inlining driven by number of live nodes. Reviewed-by: twisti, kvn, jrose
author roland
date Sun, 23 Dec 2012 17:08:22 +0100
parents beebba0acc11
children a7114d3d712e
comparison
equal deleted inserted replaced
7445:cd962e15c08e 7473:d092d1b31229
505 Node* catchall_ioproj; 505 Node* catchall_ioproj;
506 Node* resproj; 506 Node* resproj;
507 Node* exobj; 507 Node* exobj;
508 }; 508 };
509 509
510 class CallGenerator;
510 511
511 //------------------------------CallNode--------------------------------------- 512 //------------------------------CallNode---------------------------------------
512 // Call nodes now subsume the function of debug nodes at callsites, so they 513 // Call nodes now subsume the function of debug nodes at callsites, so they
513 // contain the functionality of a full scope chain of debug nodes. 514 // contain the functionality of a full scope chain of debug nodes.
514 class CallNode : public SafePointNode { 515 class CallNode : public SafePointNode {
515 friend class VMStructs; 516 friend class VMStructs;
516 public: 517 public:
517 const TypeFunc *_tf; // Function type 518 const TypeFunc *_tf; // Function type
518 address _entry_point; // Address of method being called 519 address _entry_point; // Address of method being called
519 float _cnt; // Estimate of number of times called 520 float _cnt; // Estimate of number of times called
521 CallGenerator* _generator; // corresponding CallGenerator for some late inline calls
520 522
521 CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type) 523 CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
522 : SafePointNode(tf->domain()->cnt(), NULL, adr_type), 524 : SafePointNode(tf->domain()->cnt(), NULL, adr_type),
523 _tf(tf), 525 _tf(tf),
524 _entry_point(addr), 526 _entry_point(addr),
525 _cnt(COUNT_UNKNOWN) 527 _cnt(COUNT_UNKNOWN),
528 _generator(NULL)
526 { 529 {
527 init_class_id(Class_Call); 530 init_class_id(Class_Call);
528 } 531 }
529 532
530 const TypeFunc* tf() const { return _tf; } 533 const TypeFunc* tf() const { return _tf; }
531 const address entry_point() const { return _entry_point; } 534 const address entry_point() const { return _entry_point; }
532 const float cnt() const { return _cnt; } 535 const float cnt() const { return _cnt; }
533 536 CallGenerator* generator() const { return _generator; }
534 void set_tf(const TypeFunc* tf) { _tf = tf; } 537
535 void set_entry_point(address p) { _entry_point = p; } 538 void set_tf(const TypeFunc* tf) { _tf = tf; }
536 void set_cnt(float c) { _cnt = c; } 539 void set_entry_point(address p) { _entry_point = p; }
540 void set_cnt(float c) { _cnt = c; }
541 void set_generator(CallGenerator* cg) { _generator = cg; }
537 542
538 virtual const Type *bottom_type() const; 543 virtual const Type *bottom_type() const;
539 virtual const Type *Value( PhaseTransform *phase ) const; 544 virtual const Type *Value( PhaseTransform *phase ) const;
545 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
540 virtual Node *Identity( PhaseTransform *phase ) { return this; } 546 virtual Node *Identity( PhaseTransform *phase ) { return this; }
541 virtual uint cmp( const Node &n ) const; 547 virtual uint cmp( const Node &n ) const;
542 virtual uint size_of() const = 0; 548 virtual uint size_of() const = 0;
543 virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const; 549 virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const;
544 virtual Node *match( const ProjNode *proj, const Matcher *m ); 550 virtual Node *match( const ProjNode *proj, const Matcher *m );