# HG changeset patch # User Doug Simon # Date 1440503792 -7200 # Node ID 3fb432661d59aae0bc1a19bdafdaf0ee86b7eab9 # Parent d9f5c93a83d36e8e624f2ba30f054237db50876d make JVMCIRuntime::metadata_do return immediately if HotSpotJVMCIMetaAccessContext has not yet been loaded diff -r d9f5c93a83d3 -r 3fb432661d59 src/share/vm/jvmci/jvmciJavaAccess.hpp --- a/src/share/vm/jvmci/jvmciJavaAccess.hpp Mon Aug 24 19:17:08 2015 -0700 +++ b/src/share/vm/jvmci/jvmciJavaAccess.hpp Tue Aug 25 13:56:32 2015 +0200 @@ -304,15 +304,17 @@ #define STATIC_OOPISH_FIELD(klassName, name, type, signature) \ static int _##name##_offset; \ static type name() { \ + assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \ InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ if (UseCompressedOops) { \ - return (type) oopDesc::load_decode_heap_oop((narrowOop *)addr); \ + return (type) oopDesc::load_decode_heap_oop((narrowOop *)addr); \ } else { \ - return (type) oopDesc::load_decode_heap_oop((oop*)addr); \ + return (type) oopDesc::load_decode_heap_oop((oop*)addr); \ } \ } \ static void set_##name(type x) { \ + assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \ InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ if (UseCompressedOops) { \ diff -r d9f5c93a83d3 -r 3fb432661d59 src/share/vm/jvmci/jvmciRuntime.cpp --- a/src/share/vm/jvmci/jvmciRuntime.cpp Mon Aug 24 19:17:08 2015 -0700 +++ b/src/share/vm/jvmci/jvmciRuntime.cpp Tue Aug 25 13:56:32 2015 +0200 @@ -710,6 +710,9 @@ } void JVMCIRuntime::metadata_do(void f(Metadata*)) { + if (HotSpotJVMCIMetaAccessContext::klass() == NULL) { + return; + } // WeakReference[] objArrayOop allContexts = HotSpotJVMCIMetaAccessContext::allContexts(); if (allContexts == NULL) {