8050860: Cleanup TypeTuple and TypeFunc
Summary: Declared fields TypeFunc::_domain, TypeFunc::_range, TypeTuple::_cnt and TypeTuple::_fields private, changed direct accesses to fields to use accessor methods.
Reviewed-by: kvn, vlivanov
Contributed-by: Zoltan Majo <zoltan.majo@oracle.com>
--- a/hotspot/src/share/vm/opto/callnode.cpp Fri Jul 18 09:04:01 2014 +0200
+++ b/hotspot/src/share/vm/opto/callnode.cpp Thu Jul 24 09:15:38 2014 +0200
@@ -688,7 +688,7 @@
return new MachProjNode(this,proj->_con,RegMask::Empty,MachProjNode::unmatched_proj);
case TypeFunc::Parms+1: // For LONG & DOUBLE returns
- assert(tf()->_range->field_at(TypeFunc::Parms+1) == Type::HALF, "");
+ assert(tf()->range()->field_at(TypeFunc::Parms+1) == Type::HALF, "");
// 2nd half of doubles and longs
return new MachProjNode(this,proj->_con, RegMask::Empty, (uint)OptoReg::Bad);
--- a/hotspot/src/share/vm/opto/graphKit.cpp Fri Jul 18 09:04:01 2014 +0200
+++ b/hotspot/src/share/vm/opto/graphKit.cpp Thu Jul 24 09:15:38 2014 +0200
@@ -2084,9 +2084,9 @@
void GraphKit::round_double_arguments(ciMethod* dest_method) {
// (Note: TypeFunc::make has a cache that makes this fast.)
const TypeFunc* tf = TypeFunc::make(dest_method);
- int nargs = tf->_domain->_cnt - TypeFunc::Parms;
+ int nargs = tf->domain()->cnt() - TypeFunc::Parms;
for (int j = 0; j < nargs; j++) {
- const Type *targ = tf->_domain->field_at(j + TypeFunc::Parms);
+ const Type *targ = tf->domain()->field_at(j + TypeFunc::Parms);
if( targ->basic_type() == T_DOUBLE ) {
// If any parameters are doubles, they must be rounded before
// the call, dstore_rounding does gvn.transform
@@ -2188,10 +2188,10 @@
return;
}
const TypeFunc* tf = TypeFunc::make(dest_method);
- int nargs = tf->_domain->_cnt - TypeFunc::Parms;
+ int nargs = tf->domain()->cnt() - TypeFunc::Parms;
int skip = Bytecodes::has_receiver(bc) ? 1 : 0;
for (int j = skip, i = 0; j < nargs && i < TypeProfileArgsLimit; j++) {
- const Type *targ = tf->_domain->field_at(j + TypeFunc::Parms);
+ const Type *targ = tf->domain()->field_at(j + TypeFunc::Parms);
if (targ->basic_type() == T_OBJECT || targ->basic_type() == T_ARRAY) {
bool maybe_null = true;
ciKlass* better_type = NULL;
--- a/hotspot/src/share/vm/opto/type.cpp Fri Jul 18 09:04:01 2014 +0200
+++ b/hotspot/src/share/vm/opto/type.cpp Thu Jul 24 09:15:38 2014 +0200
@@ -5087,11 +5087,11 @@
// Dump Function Type
#ifndef PRODUCT
void TypeFunc::dump2( Dict &d, uint depth, outputStream *st ) const {
- if( _range->_cnt <= Parms )
+ if( _range->cnt() <= Parms )
st->print("void");
else {
uint i;
- for (i = Parms; i < _range->_cnt-1; i++) {
+ for (i = Parms; i < _range->cnt()-1; i++) {
_range->field_at(i)->dump2(d,depth,st);
st->print("/");
}
@@ -5104,9 +5104,9 @@
return;
}
d.Insert((void*)this,(void*)this); // Stop recursion
- if (Parms < _domain->_cnt)
+ if (Parms < _domain->cnt())
_domain->field_at(Parms)->dump2(d,depth-1,st);
- for (uint i = Parms+1; i < _domain->_cnt; i++) {
+ for (uint i = Parms+1; i < _domain->cnt(); i++) {
st->print(", ");
_domain->field_at(i)->dump2(d,depth-1,st);
}
--- a/hotspot/src/share/vm/opto/type.hpp Fri Jul 18 09:04:01 2014 +0200
+++ b/hotspot/src/share/vm/opto/type.hpp Thu Jul 24 09:15:38 2014 +0200
@@ -609,16 +609,16 @@
// signature types.
class TypeTuple : public Type {
TypeTuple( uint cnt, const Type **fields ) : Type(Tuple), _cnt(cnt), _fields(fields) { }
+
+ const uint _cnt; // Count of fields
+ const Type ** const _fields; // Array of field types
+
public:
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
-public:
- const uint _cnt; // Count of fields
- const Type ** const _fields; // Array of field types
-
// Accessors:
uint cnt() const { return _cnt; }
const Type* field_at(uint i) const {
@@ -1447,6 +1447,10 @@
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 _range; // Range of results
+
public:
// Constants are shared among ADLC and VM
enum { Control = AdlcVMDeps::Control,
@@ -1457,8 +1461,6 @@
Parms = AdlcVMDeps::Parms
};
- const TypeTuple* const _domain; // Domain of inputs
- const TypeTuple* const _range; // Range of results
// Accessors:
const TypeTuple* domain() const { return _domain; }