< prev index next >

src/share/vm/opto/type.hpp

Print this page

        

@@ -980,12 +980,12 @@
 
 //------------------------------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);
+  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,14 +1172,14 @@
 };
 
 //------------------------------TypeAryPtr-------------------------------------
 // Class of Java array pointers
 class TypeAryPtr : public TypeOopPtr {
-  TypeAryPtr( PTR ptr, ciObject* o, const TypeAry *ary, ciKlass* k, bool xk,
+  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),
+    : 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,20 +1201,20 @@
   }
   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;
+  // 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:
-  // 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; }

@@ -1259,11 +1259,11 @@
   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 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,11 +1294,11 @@
 
 //------------------------------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) {
+    : 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 >