src/share/vm/opto/callnode.hpp
Print this page
rev 3904 : 8005071: Incremental inlining for JSR 292
Summary: post parse inlining driven by number of live nodes.
Reviewed-by:
@@ -505,26 +505,29 @@
Node* catchall_ioproj;
Node* resproj;
Node* exobj;
};
+class CallGenerator;
//------------------------------CallNode---------------------------------------
// Call nodes now subsume the function of debug nodes at callsites, so they
// contain the functionality of a full scope chain of debug nodes.
class CallNode : public SafePointNode {
friend class VMStructs;
public:
const TypeFunc *_tf; // Function type
address _entry_point; // Address of method being called
float _cnt; // Estimate of number of times called
+ CallGenerator* _cg; // corresponding CallGenerator for some late inline calls
CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
: SafePointNode(tf->domain()->cnt(), NULL, adr_type),
_tf(tf),
_entry_point(addr),
- _cnt(COUNT_UNKNOWN)
+ _cnt(COUNT_UNKNOWN),
+ _cg(NULL)
{
init_class_id(Class_Call);
}
const TypeFunc* tf() const { return _tf; }
@@ -535,10 +538,11 @@
void set_entry_point(address p) { _entry_point = p; }
void set_cnt(float c) { _cnt = c; }
virtual const Type *bottom_type() const;
virtual const Type *Value( PhaseTransform *phase ) const;
+ virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
virtual Node *Identity( PhaseTransform *phase ) { return this; }
virtual uint cmp( const Node &n ) const;
virtual uint size_of() const = 0;
virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const;
virtual Node *match( const ProjNode *proj, const Matcher *m );