Mercurial > hg > graal-compiler
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 ); |