diff -r 36d1d483d5d6 -r da91efe96a93 src/share/vm/utilities/globalDefinitions.hpp --- a/src/share/vm/utilities/globalDefinitions.hpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/utilities/globalDefinitions.hpp Sat Sep 01 13:25:18 2012 -0400 @@ -128,6 +128,14 @@ #endif }; +// Analogous opaque struct for metadata allocated from +// metaspaces. +class MetaWord { + friend class VMStructs; + private: + char* i; +}; + // HeapWordSize must be 2^LogHeapWordSize. const int HeapWordSize = sizeof(HeapWord); #ifdef _LP64 @@ -272,6 +280,10 @@ inline size_t pointer_delta(const HeapWord* left, const HeapWord* right) { return pointer_delta(left, right, sizeof(HeapWord)); } +// A version specialized for MetaWord*'s. +inline size_t pointer_delta(const MetaWord* left, const MetaWord* right) { + return pointer_delta(left, right, sizeof(MetaWord)); +} // // ANSI C++ does not allow casting from one pointer type to a function pointer @@ -482,7 +494,8 @@ T_VOID = 14, T_ADDRESS = 15, T_NARROWOOP= 16, - T_CONFLICT = 17, // for stack value type with conflicting contents + T_METADATA = 17, + T_CONFLICT = 18, // for stack value type with conflicting contents T_ILLEGAL = 99 }; @@ -854,6 +867,7 @@ class JavaCallWrapper; class oopDesc; +class metaDataOopDesc; class NativeCall; @@ -911,6 +925,7 @@ const int uninitBlockPad = 0xF1; // value used to zap newly malloc'd blocks. const intptr_t badJNIHandleVal = (intptr_t) CONST64(0xFEFEFEFEFEFEFEFE); // value used to zap jni handle area const juint badHeapWordVal = 0xBAADBABE; // value used to zap heap after GC +const juint badMetaWordVal = 0xBAADFADE; // value used to zap metadata heap after GC const int badCodeHeapNewVal= 0xCC; // value used to zap Code heap at allocation const int badCodeHeapFreeVal = 0xDD; // value used to zap Code heap at deallocation