< prev index next >

src/hotspot/share/classfile/systemDictionary.hpp

Print this page

        

*** 24,33 **** --- 24,34 ---- #ifndef SHARE_CLASSFILE_SYSTEMDICTIONARY_HPP #define SHARE_CLASSFILE_SYSTEMDICTIONARY_HPP #include "classfile/classLoaderData.hpp" + #include "jvmci/systemDictionary_jvmci.hpp" #include "oops/objArrayOop.hpp" #include "oops/symbol.hpp" #include "runtime/java.hpp" #include "runtime/mutexLocker.hpp" #include "runtime/reflectionUtils.hpp"
*** 71,81 **** // Note that placeholders are deleted at any time, as they are removed // when a class is completely loaded. Therefore, readers as well as writers // of placeholders must hold the SystemDictionary_lock. // - class BootstrapInfo; class ClassFileStream; class Dictionary; class PlaceholderTable; class LoaderConstraintTable; template <MEMFLAGS F> class HashtableBucket; --- 72,81 ----
*** 212,226 **** do_klass(Byte_klass, java_lang_Byte ) \ do_klass(Short_klass, java_lang_Short ) \ do_klass(Integer_klass, java_lang_Integer ) \ do_klass(Long_klass, java_lang_Long ) \ \ /*end*/ class SystemDictionary : AllStatic { - friend class BootstrapInfo; friend class VMStructs; friend class SystemDictionaryHandles; public: enum WKID { --- 212,228 ---- do_klass(Byte_klass, java_lang_Byte ) \ do_klass(Short_klass, java_lang_Short ) \ do_klass(Integer_klass, java_lang_Integer ) \ do_klass(Long_klass, java_lang_Long ) \ \ + /* JVMCI classes. These are loaded on-demand. */ \ + JVMCI_WK_KLASSES_DO(do_klass) \ + \ /*end*/ class SystemDictionary : AllStatic { friend class VMStructs; friend class SystemDictionaryHandles; public: enum WKID {
*** 230,239 **** --- 232,246 ---- WK_KLASSES_DO(WK_KLASS_ENUM) #undef WK_KLASS_ENUM WKID_LIMIT, + #if INCLUDE_JVMCI + FIRST_JVMCI_WKID = WK_KLASS_ENUM_NAME(JVMCI_klass), + LAST_JVMCI_WKID = WK_KLASS_ENUM_NAME(Value_klass), + #endif + FIRST_WKID = NO_WKID + 1 }; // Returns a class with a given class name and class loader. Loads the // class if needed. If not found a NoClassDefFoundError or a
*** 271,302 **** // Also used by Unsafe_DefineAnonymousClass static InstanceKlass* parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, TRAPS) { return parse_stream(class_name, class_loader, protection_domain, st, ! NULL, // unsafe_anonymous_host ! NULL, // cp_patches THREAD); } static InstanceKlass* parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, const InstanceKlass* unsafe_anonymous_host, GrowableArray<Handle>* cp_patches, TRAPS); // Resolve from stream (called by jni_DefineClass and JVM_DefineClass) static InstanceKlass* 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); --- 278,321 ---- // Also used by Unsafe_DefineAnonymousClass static InstanceKlass* parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, + InstanceKlass* dynamic_nest_host, TRAPS) { return parse_stream(class_name, class_loader, protection_domain, st, ! NULL, // unsafe_anonymous_host ! NULL, // cp_patches ! false, // is_nonfindable ! false, // is_weaknonfindable ! false, // can_access_vm_annotations ! dynamic_nest_host, ! Handle(), // classData THREAD); } static InstanceKlass* parse_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, const InstanceKlass* unsafe_anonymous_host, GrowableArray<Handle>* cp_patches, + const bool is_nonfindable, + const bool is_weaknonfindable, + const bool can_access_vm_annotations, + InstanceKlass* dynamic_nest_host, + Handle classData, TRAPS); // Resolve from stream (called by jni_DefineClass and JVM_DefineClass) static InstanceKlass* resolve_from_stream(Symbol* class_name, Handle class_loader, Handle protection_domain, ClassFileStream* st, + InstanceKlass* dynamic_nest_host, 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);
*** 522,532 **** Symbol* name, Symbol* signature, TRAPS); // ask Java to compute a constant by invoking a BSM given a Dynamic_info CP entry ! static void invoke_bootstrap_method(BootstrapInfo& bootstrap_specifier, TRAPS); // Record the error when the first attempt to resolve a reference from a constant // pool entry to a class fails. static void add_resolution_error(const constantPoolHandle& pool, int which, Symbol* error, Symbol* message); --- 541,565 ---- Symbol* name, Symbol* signature, TRAPS); // ask Java to compute a constant by invoking a BSM given a Dynamic_info CP entry ! static Handle link_dynamic_constant(Klass* caller, ! int condy_index, ! Handle bootstrap_specifier, ! Symbol* name, ! Symbol* type, ! TRAPS); ! ! // ask Java to create a dynamic call site, while linking an invokedynamic op ! static methodHandle find_dynamic_call_site_invoker(Klass* caller, ! int indy_index, ! Handle bootstrap_method, ! Symbol* name, ! Symbol* type, ! Handle *appendix_result, ! TRAPS); // Record the error when the first attempt to resolve a reference from a constant // pool entry to a class fails. static void add_resolution_error(const constantPoolHandle& pool, int which, Symbol* error, Symbol* message);
*** 679,691 **** private: static oop _java_system_loader; static oop _java_platform_loader; static bool _has_checkPackageAccess; - - public: - static TableStatistics placeholders_statistics(); - static TableStatistics loader_constraints_statistics(); - static TableStatistics protection_domain_cache_statistics(); }; #endif // SHARE_CLASSFILE_SYSTEMDICTIONARY_HPP --- 712,719 ----
< prev index next >