--- old/src/share/vm/opto/type.hpp 2016-11-24 11:13:30.527561670 +0100 +++ new/src/share/vm/opto/type.hpp 2016-11-24 11:13:30.461562049 +0100 @@ -649,7 +649,7 @@ static const TypeTuple *make( uint cnt, const Type **fields ); static const TypeTuple *make_range(ciSignature *sig); - static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig); + static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig, bool is_cc = false); // Subroutine call type with space allocated for argument types // Memory for Control, I_O, Memory, FramePtr, and ReturnAdr is allocated implicitly @@ -1527,13 +1527,14 @@ //------------------------------TypeFunc--------------------------------------- // Class of Array Types class TypeFunc : public Type { - TypeFunc( const TypeTuple *domain, const TypeTuple *range ) : Type(Function), _domain(domain), _range(range) {} + TypeFunc(const TypeTuple *domain_sig, const TypeTuple *domain_cc, const TypeTuple *range) : Type(Function), _domain_sig(domain_sig), _domain_cc(domain_cc), _range(range) {} virtual bool eq( const Type *t ) const; virtual int hash() const; // Type specific hashing virtual bool singleton(void) const; // TRUE if type is a singleton virtual bool empty(void) const; // TRUE if type is vacuous - const TypeTuple* const _domain; // Domain of inputs + const TypeTuple* const _domain_sig; // Domain of inputs + const TypeTuple* const _domain_cc; // Domain of inputs const TypeTuple* const _range; // Range of results public: @@ -1548,12 +1549,13 @@ // Accessors: - const TypeTuple* domain() const { return _domain; } + const TypeTuple* domain_sig() const { return _domain_sig; } + const TypeTuple* domain_cc() const { return _domain_cc; } const TypeTuple* range() const { return _range; } static const TypeFunc *make(ciMethod* method); static const TypeFunc *make(ciSignature signature, const Type* extra); - static const TypeFunc *make(const TypeTuple* domain, const TypeTuple* range); + static const TypeFunc *make(const TypeTuple* domain, const TypeTuple* domain_cc, const TypeTuple* range); virtual const Type *xmeet( const Type *t ) const; virtual const Type *xdual() const; // Compute dual right now.