8005592: ClassLoaderDataGraph::_unloading incorrectly defined as nonstatic in vmStructs
Summary: Added assertion to catch problem earlier and removed the unused field
Reviewed-by: dholmes, acorn
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp Mon Jan 14 08:37:14 2013 -0800
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Mon Jan 14 11:00:56 2013 -0800
@@ -717,7 +717,6 @@
nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \
\
static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \
- nonstatic_field(ClassLoaderDataGraph, _unloading, ClassLoaderData*) \
\
/*******************/ \
/* GrowableArrays */ \
@@ -2575,7 +2574,8 @@
// This macro checks the type of a VMStructEntry by comparing pointer types
#define CHECK_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
- {typeName *dummyObj = NULL; type* dummy = &dummyObj->fieldName; }
+ {typeName *dummyObj = NULL; type* dummy = &dummyObj->fieldName; \
+ assert(offset_of(typeName, fieldName) < sizeof(typeName), "Illegal nonstatic struct entry, field offset too large"); }
// This macro checks the type of a volatile VMStructEntry by comparing pointer types
#define CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \