diff src/share/vm/runtime/vmStructs.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children 60b728ec77c1
line wrap: on
line diff
--- a/src/share/vm/runtime/vmStructs.cpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/src/share/vm/runtime/vmStructs.cpp	Sun Apr 13 17:43:42 2008 -0400
@@ -71,7 +71,8 @@
   /******************************************************************/                                                               \
                                                                                                                                      \
   volatile_nonstatic_field(oopDesc,            _mark,                                         markOop)                               \
-  nonstatic_field(oopDesc,                     _klass,                                        klassOop)                              \
+  volatile_nonstatic_field(oopDesc,            _metadata._klass,                              wideKlassOop)                          \
+  volatile_nonstatic_field(oopDesc,            _metadata._compressed_klass,                   narrowOop)                             \
      static_field(oopDesc,                     _bs,                                           BarrierSet*)                           \
   nonstatic_field(arrayKlass,                  _dimension,                                    int)                                   \
   nonstatic_field(arrayKlass,                  _higher_dimension,                             klassOop)                              \
@@ -79,13 +80,14 @@
   nonstatic_field(arrayKlass,                  _vtable_len,                                   int)                                   \
   nonstatic_field(arrayKlass,                  _alloc_size,                                   juint)                                 \
   nonstatic_field(arrayKlass,                  _component_mirror,                             oop)                                   \
-  nonstatic_field(arrayOopDesc,                _length,                                       int)                                   \
   nonstatic_field(compiledICHolderKlass,       _alloc_size,                                   juint)                                 \
   nonstatic_field(compiledICHolderOopDesc,     _holder_method,                                methodOop)                             \
   nonstatic_field(compiledICHolderOopDesc,     _holder_klass,                                 klassOop)                              \
   nonstatic_field(constantPoolOopDesc,         _tags,                                         typeArrayOop)                          \
   nonstatic_field(constantPoolOopDesc,         _cache,                                        constantPoolCacheOop)                  \
   nonstatic_field(constantPoolOopDesc,         _pool_holder,                                  klassOop)                              \
+  nonstatic_field(constantPoolOopDesc,         _length,                                       int)                                   \
+  nonstatic_field(constantPoolCacheOopDesc,    _length,                                       int)                                   \
   nonstatic_field(constantPoolCacheOopDesc,    _constant_pool,                                constantPoolOop)                       \
   nonstatic_field(instanceKlass,               _array_klasses,                                klassOop)                              \
   nonstatic_field(instanceKlass,               _methods,                                      objArrayOop)                           \
@@ -261,6 +263,7 @@
      static_field(Universe,                    _bootstrapping,                                bool)                                  \
      static_field(Universe,                    _fully_initialized,                            bool)                                  \
      static_field(Universe,                    _verify_count,                                 int)                                   \
+     static_field(Universe,                    _heap_base,                                    address)                                   \
                                                                                                                                      \
   /**********************************************************************************/                                               \
   /* Generation and Space hierarchies                                               */                                               \
@@ -305,8 +308,6 @@
   nonstatic_field(SharedHeap,                  _perm_gen,                                     PermGen*)                              \
   nonstatic_field(CollectedHeap,               _barrier_set,                                  BarrierSet*)                           \
   nonstatic_field(CollectedHeap,               _is_gc_active,                                 bool)                                  \
-  nonstatic_field(CollectedHeap,               _max_heap_capacity,                            size_t)                                \
-                                                                                                                                     \
   nonstatic_field(CompactibleSpace,            _compaction_top,                               HeapWord*)                             \
   nonstatic_field(CompactibleSpace,            _first_dead,                                   HeapWord*)                             \
   nonstatic_field(CompactibleSpace,            _end_of_live,                                  HeapWord*)                             \
@@ -912,12 +913,12 @@
            declare_type(arrayKlass, Klass)                                \
            declare_type(arrayKlassKlass, klassKlass)                      \
            declare_type(arrayOopDesc, oopDesc)                            \
-   declare_type(compiledICHolderKlass, Klass)                     \
-   declare_type(compiledICHolderOopDesc, oopDesc)                 \
-           declare_type(constantPoolKlass, arrayKlass)                    \
-           declare_type(constantPoolOopDesc, arrayOopDesc)                \
-           declare_type(constantPoolCacheKlass, arrayKlass)               \
-           declare_type(constantPoolCacheOopDesc, arrayOopDesc)           \
+   declare_type(compiledICHolderKlass, Klass)                             \
+   declare_type(compiledICHolderOopDesc, oopDesc)                         \
+           declare_type(constantPoolKlass, Klass)                         \
+           declare_type(constantPoolOopDesc, oopDesc)                     \
+           declare_type(constantPoolCacheKlass, Klass)                    \
+           declare_type(constantPoolCacheOopDesc, oopDesc)                \
            declare_type(instanceKlass, Klass)                             \
            declare_type(instanceKlassKlass, klassKlass)                   \
            declare_type(instanceOopDesc, oopDesc)                         \
@@ -949,9 +950,11 @@
   declare_oop_type(klassOop)                                              \
   declare_oop_type(markOop)                                               \
   declare_oop_type(methodOop)                                             \
-  declare_oop_type(methodDataOop)                                 \
+  declare_oop_type(methodDataOop)                                         \
   declare_oop_type(objArrayOop)                                           \
   declare_oop_type(oop)                                                   \
+  declare_oop_type(narrowOop)                                             \
+  declare_oop_type(wideKlassOop)                                          \
   declare_oop_type(constMethodOop)                                        \
   declare_oop_type(symbolOop)                                             \
   declare_oop_type(typeArrayOop)                                          \
@@ -1307,6 +1310,7 @@
   /* Object sizes */                                                      \
   /****************/                                                      \
                                                                           \
+  declare_constant(oopSize)                                               \
   declare_constant(LogBytesPerWord)                                       \
   declare_constant(BytesPerLong)                                          \
                                                                           \
@@ -1314,7 +1318,9 @@
   /* Object alignment */                                                  \
   /********************/                                                  \
                                                                           \
+  declare_constant(MinObjAlignment)                                       \
   declare_constant(MinObjAlignmentInBytes)                                \
+  declare_constant(LogMinObjAlignmentInBytes)                             \
                                                                           \
   /********************************************/                          \
   /* Generation and Space Hierarchy Constants */                          \
@@ -1361,7 +1367,6 @@
                                                                           \
   declare_constant(HeapWordSize)                                          \
   declare_constant(LogHeapWordSize)                                       \
-  declare_constant(HeapWordsPerOop)                                       \
                                                                           \
   /* constants from PermGen::Name enum */                                 \
                                                                           \
@@ -1610,7 +1615,7 @@
   declare_constant(OopMapValue::unused_value)                             \
   declare_constant(OopMapValue::oop_value)                                \
   declare_constant(OopMapValue::value_value)                              \
-  declare_constant(OopMapValue::dead_value)                               \
+  declare_constant(OopMapValue::narrowoop_value)                          \
   declare_constant(OopMapValue::callee_saved_value)                       \
   declare_constant(OopMapValue::derived_oop_value)                        \
                                                                           \