diff -r 9fdcc78b5398 -r 1c7168ea0034 hotspot/src/share/vm/classfile/systemDictionary.hpp --- a/hotspot/src/share/vm/classfile/systemDictionary.hpp Tue Dec 08 05:50:46 2015 -0800 +++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp Tue Dec 08 20:04:03 2015 +0100 @@ -25,17 +25,15 @@ #ifndef SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP #define SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP -#include "classfile/classFileStream.hpp" #include "classfile/classLoader.hpp" #include "classfile/systemDictionary_ext.hpp" +#include "jvmci/systemDictionary_jvmci.hpp" #include "oops/objArrayOop.hpp" #include "oops/symbol.hpp" #include "runtime/java.hpp" #include "runtime/reflectionUtils.hpp" #include "utilities/hashtable.hpp" #include "utilities/hashtable.inline.hpp" -#include "jvmci/systemDictionary_jvmci.hpp" - // The system dictionary stores all loaded classes and maps: // @@ -73,13 +71,13 @@ // of placeholders must hold the SystemDictionary_lock. // +class ClassFileStream; class Dictionary; class PlaceholderTable; class LoaderConstraintTable; template class HashtableBucket; class ResolutionErrorTable; class SymbolPropertyTable; -class Ticks; // Certain classes are preloaded, such as java.lang.Object and java.lang.String. // They are all "well-known", in the sense that no class loader is allowed @@ -272,34 +270,41 @@ // parse_interfaces, resolve_instance_class_or_null, load_shared_class // "child_name" is the class whose super class or interface is being resolved. static Klass* resolve_super_or_fail(Symbol* child_name, - Symbol* class_name, - Handle class_loader, - Handle protection_domain, - bool is_superclass, - TRAPS); + Symbol* class_name, + Handle class_loader, + Handle protection_domain, + bool is_superclass, + TRAPS); // Parse new stream. This won't update the system dictionary or // class hierarchy, simply parse the stream. Used by JVMTI RedefineClasses. static Klass* parse_stream(Symbol* class_name, - Handle class_loader, - Handle protection_domain, - ClassFileStream* st, - TRAPS) { - KlassHandle nullHandle; - return parse_stream(class_name, class_loader, protection_domain, st, nullHandle, NULL, THREAD); + Handle class_loader, + Handle protection_domain, + ClassFileStream* st, + TRAPS) { + return parse_stream(class_name, + class_loader, + protection_domain, + st, + NULL, // host klass + NULL, // cp_patches + THREAD); } static Klass* parse_stream(Symbol* class_name, - Handle class_loader, - Handle protection_domain, - ClassFileStream* st, - KlassHandle host_klass, - GrowableArray* cp_patches, - TRAPS); + Handle class_loader, + Handle protection_domain, + ClassFileStream* st, + const Klass* host_klass, + GrowableArray* cp_patches, + TRAPS); // Resolve from stream (called by jni_DefineClass and JVM_DefineClass) - static Klass* resolve_from_stream(Symbol* class_name, Handle class_loader, - Handle protection_domain, - ClassFileStream* st, bool verify, TRAPS); + static Klass* resolve_from_stream(Symbol* class_name, + Handle class_loader, + Handle protection_domain, + ClassFileStream* st, + TRAPS); // Lookup an already loaded class. If not found NULL is returned. static Klass* find(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); @@ -546,14 +551,8 @@ TRAPS); // Utility for printing loader "name" as part of tracing constraints - static const char* loader_name(oop loader) { - return ((loader) == NULL ? "" : - InstanceKlass::cast((loader)->klass())->name()->as_C_string() ); - } - static const char* loader_name(ClassLoaderData* loader_data) { - return (loader_data->class_loader() == NULL ? "" : - InstanceKlass::cast((loader_data->class_loader())->klass())->name()->as_C_string() ); - } + static const char* loader_name(const oop loader); + static const char* loader_name(const ClassLoaderData* loader_data); // Record the error when the first attempt to resolve a reference from a constant // pool entry to a class fails. @@ -663,9 +662,6 @@ // Setup link to hierarchy static void add_to_hierarchy(instanceKlassHandle k, TRAPS); - // event based tracing - static void post_class_load_event(const Ticks& start_time, instanceKlassHandle k, - Handle initiating_loader); // We pass in the hashtable index so we can calculate it outside of // the SystemDictionary_lock.