< prev index next >
src/share/vm/opto/type.hpp
Print this page
*** 980,991 ****
//------------------------------TypeOopPtr-------------------------------------
// Some kind of oop (Java pointer), either klass or instance or array.
class TypeOopPtr : public TypePtr {
protected:
! TypeOopPtr(TYPES t, PTR ptr, ciKlass* k, bool xk, ciObject* o, Offset offset, int instance_id,
! const TypePtr* speculative, int inline_depth);
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
enum {
--- 980,991 ----
//------------------------------TypeOopPtr-------------------------------------
// Some kind of oop (Java pointer), either klass or instance or array.
class TypeOopPtr : public TypePtr {
protected:
! TypeOopPtr(TYPES t, PTR ptr, ciKlass* k, bool xk, ciObject* o, Offset offset, Offset field_offset,
! int instance_id, const TypePtr* speculative, int inline_depth);
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
enum {
*** 1172,1185 ****
};
//------------------------------TypeAryPtr-------------------------------------
// Class of Java array pointers
class TypeAryPtr : public TypeOopPtr {
! TypeAryPtr( PTR ptr, ciObject* o, const TypeAry *ary, ciKlass* k, bool xk,
Offset offset, Offset field_offset, int instance_id, bool is_autobox_cache,
const TypePtr* speculative, int inline_depth)
! : TypeOopPtr(AryPtr,ptr,k,xk,o,offset, instance_id, speculative, inline_depth),
_ary(ary),
_is_autobox_cache(is_autobox_cache),
_field_offset(field_offset)
{
#ifdef ASSERT
--- 1172,1185 ----
};
//------------------------------TypeAryPtr-------------------------------------
// Class of Java array pointers
class TypeAryPtr : public TypeOopPtr {
! TypeAryPtr(PTR ptr, ciObject* o, const TypeAry *ary, ciKlass* k, bool xk,
Offset offset, Offset field_offset, int instance_id, bool is_autobox_cache,
const TypePtr* speculative, int inline_depth)
! : TypeOopPtr(AryPtr, ptr, k, xk, o, offset, field_offset, instance_id, speculative, inline_depth),
_ary(ary),
_is_autobox_cache(is_autobox_cache),
_field_offset(field_offset)
{
#ifdef ASSERT
*** 1201,1220 ****
}
virtual bool eq( const Type *t ) const;
virtual int hash() const; // Type specific hashing
const TypeAry *_ary; // Array we point into
const bool _is_autobox_cache;
! Offset meet_field_offset(int offset) const;
Offset dual_field_offset() const;
ciKlass* compute_klass(DEBUG_ONLY(bool verify = false)) const;
public:
- // For flattened value type arrays, each field of the value type in
- // the array has its own memory slice so we need to keep track of
- // which field is accessed
- const Offset _field_offset;
// Accessors
ciKlass* klass() const;
const TypeAry* ary() const { return _ary; }
const Type* elem() const { return _ary->_elem; }
const TypeInt* size() const { return _ary->_size; }
--- 1201,1220 ----
}
virtual bool eq( const Type *t ) const;
virtual int hash() const; // Type specific hashing
const TypeAry *_ary; // Array we point into
const bool _is_autobox_cache;
! // For flattened value type arrays, each field of the value type in
! // the array has its own memory slice so we need to keep track of
! // which field is accessed
! const Offset _field_offset;
! Offset meet_field_offset(const Type::Offset offset) const;
Offset dual_field_offset() const;
ciKlass* compute_klass(DEBUG_ONLY(bool verify = false)) const;
public:
// Accessors
ciKlass* klass() const;
const TypeAry* ary() const { return _ary; }
const Type* elem() const { return _ary->_elem; }
const TypeInt* size() const { return _ary->_size; }
*** 1259,1269 ****
const TypeAryPtr* cast_to_stable(bool stable, int stable_dimension = 1) const;
int stable_dimension() const;
const TypeAryPtr* cast_to_autobox_cache(bool cache) const;
! const int field_offset() const { return _field_offset.get(); }
const TypeAryPtr* with_field_offset(int offset) const;
const TypePtr* with_field_offset_and_offset(intptr_t offset) const;
// Convenience common pre-built types.
static const TypeAryPtr *RANGE;
--- 1259,1269 ----
const TypeAryPtr* cast_to_stable(bool stable, int stable_dimension = 1) const;
int stable_dimension() const;
const TypeAryPtr* cast_to_autobox_cache(bool cache) const;
! const Offset field_offset() const { return _field_offset; }
const TypeAryPtr* with_field_offset(int offset) const;
const TypePtr* with_field_offset_and_offset(intptr_t offset) const;
// Convenience common pre-built types.
static const TypeAryPtr *RANGE;
*** 1294,1304 ****
//------------------------------TypeValueTypePtr-------------------------------------
// Class of value type pointers
class TypeValueTypePtr : public TypeOopPtr {
TypeValueTypePtr(const TypeValueType* vt, PTR ptr, ciObject* o, Offset offset, int instance_id, const TypePtr* speculative, int inline_depth)
! : TypeOopPtr(ValueTypePtr, ptr, vt->value_klass(), true, o, offset, instance_id, speculative, inline_depth) {
_vt = vt;
}
const TypeValueType* _vt; // Value type we point to
--- 1294,1304 ----
//------------------------------TypeValueTypePtr-------------------------------------
// Class of value type pointers
class TypeValueTypePtr : public TypeOopPtr {
TypeValueTypePtr(const TypeValueType* vt, PTR ptr, ciObject* o, Offset offset, int instance_id, const TypePtr* speculative, int inline_depth)
! : TypeOopPtr(ValueTypePtr, ptr, vt->value_klass(), true, o, offset, Offset::bottom, instance_id, speculative, inline_depth) {
_vt = vt;
}
const TypeValueType* _vt; // Value type we point to
< prev index next >