src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/systemDictionary.cpp	Wed Sep 16 15:18:09 2015
--- new/src/share/vm/classfile/systemDictionary.cpp	Wed Sep 16 15:18:08 2015

*** 64,73 **** --- 64,76 ---- #include "utilities/ticks.hpp" #if INCLUDE_CDS #include "classfile/sharedClassUtil.hpp" #include "classfile/systemDictionaryShared.hpp" #endif + #if INCLUDE_JVMCI + #include "jvmci/jvmciRuntime.hpp" + #endif #if INCLUDE_TRACE #include "trace/tracing.hpp" #endif Dictionary* SystemDictionary::_dictionary = NULL;
*** 226,236 **** --- 229,239 ---- // Forwards to resolve_instance_class_or_null Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) { ! assert(!THREAD->is_Compiler_thread(), ! assert(THREAD->can_call_java(), err_msg("can not load classes with compiler thread: class=%s, classloader=%s", class_name->as_C_string(), class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string())); if (FieldType::is_array(class_name)) { return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
*** 1915,1925 **** --- 1918,1935 ---- // JSR 292 classes WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass); WKID jsr292_group_end = WK_KLASS_ENUM_NAME(VolatileCallSite_klass); initialize_wk_klasses_until(jsr292_group_start, scan, CHECK); initialize_wk_klasses_through(jsr292_group_end, scan, CHECK); ! initialize_wk_klasses_until(NOT_JVMCI(WKID_LIMIT) JVMCI_ONLY(FIRST_JVMCI_WKID), scan, CHECK); + + #if INCLUDE_JVMCI + if (EnableJVMCI) { + // JVMCI classes + initialize_wk_klasses_through(LAST_JVMCI_WKID, scan, CHECK); + } + #endif _box_klasses[T_BOOLEAN] = WK_KLASS(Boolean_klass); _box_klasses[T_CHAR] = WK_KLASS(Character_klass); _box_klasses[T_FLOAT] = WK_KLASS(Float_klass); _box_klasses[T_DOUBLE] = WK_KLASS(Double_klass);
*** 2341,2351 **** --- 2351,2361 ---- KlassHandle accessing_klass, Handle *appendix_result, Handle *method_type_result, TRAPS) { methodHandle empty; ! assert(!THREAD->is_Compiler_thread(), ""); ! assert(THREAD->can_call_java() ,""); Handle method_type = SystemDictionary::find_method_handle_type(signature, accessing_klass, CHECK_(empty)); KlassHandle mh_klass = SystemDictionary::MethodHandle_klass(); int ref_kind = JVM_REF_invokeVirtual;
*** 2409,2419 **** --- 2419,2429 ---- int index = invoke_method_table()->hash_to_index(hash); SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature, null_iid); if (spe != NULL && spe->method_type() != NULL) { assert(java_lang_invoke_MethodType::is_instance(spe->method_type()), ""); return Handle(THREAD, spe->method_type()); ! } else if (THREAD->is_Compiler_thread()) { ! } else if (!THREAD->can_call_java()) { warning("SystemDictionary::find_method_handle_type called from compiler thread"); // FIXME return Handle(); // do not attempt from within compiler, unless it was cached } Handle class_loader, protection_domain;

src/share/vm/classfile/systemDictionary.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File