< prev index next >

src/share/vm/jvmci/jvmciRuntime.cpp

Print this page

        

*** 105,120 **** JRT_BLOCK_ENTRY(void, JVMCIRuntime::new_instance(JavaThread* thread, Klass* klass)) JRT_BLOCK; assert(klass->is_klass(), "not a class"); Handle holder(THREAD, klass->klass_holder()); // keep the klass alive ! instanceKlassHandle h(thread, klass); ! h->check_valid_for_instantiation(true, CHECK); // make sure klass is initialized ! h->initialize(CHECK); // allocate instance and return via TLS ! oop obj = h->allocate_instance(CHECK); thread->set_vm_result(obj); JRT_BLOCK_END; if (ReduceInitialCardMarks) { new_store_pre_barrier(thread); --- 105,120 ---- JRT_BLOCK_ENTRY(void, JVMCIRuntime::new_instance(JavaThread* thread, Klass* klass)) JRT_BLOCK; assert(klass->is_klass(), "not a class"); Handle holder(THREAD, klass->klass_holder()); // keep the klass alive ! InstanceKlass* ik = InstanceKlass::cast(klass); ! ik->check_valid_for_instantiation(true, CHECK); // make sure klass is initialized ! ik->initialize(CHECK); // allocate instance and return via TLS ! oop obj = ik->allocate_instance(CHECK); thread->set_vm_result(obj); JRT_BLOCK_END; if (ReduceInitialCardMarks) { new_store_pre_barrier(thread);
*** 185,195 **** oop obj = Reflection::reflect_new_array(element_mirror, length, CHECK); thread->set_vm_result(obj); JRT_END JRT_ENTRY(void, JVMCIRuntime::dynamic_new_instance(JavaThread* thread, oopDesc* type_mirror)) ! instanceKlassHandle klass(THREAD, java_lang_Class::as_Klass(type_mirror)); if (klass == NULL) { ResourceMark rm(THREAD); THROW(vmSymbols::java_lang_InstantiationException()); } --- 185,195 ---- oop obj = Reflection::reflect_new_array(element_mirror, length, CHECK); thread->set_vm_result(obj); JRT_END JRT_ENTRY(void, JVMCIRuntime::dynamic_new_instance(JavaThread* thread, oopDesc* type_mirror)) ! InstanceKlass* klass = InstanceKlass::cast(java_lang_Class::as_Klass(type_mirror)); if (klass == NULL) { ResourceMark rm(THREAD); THROW(vmSymbols::java_lang_InstantiationException()); }
*** 639,649 **** return ret; JVM_END Handle JVMCIRuntime::callStatic(const char* className, const char* methodName, const char* signature, JavaCallArguments* args, TRAPS) { TempNewSymbol name = SymbolTable::new_symbol(className, CHECK_(Handle())); ! KlassHandle klass = SystemDictionary::resolve_or_fail(name, true, CHECK_(Handle())); TempNewSymbol runtime = SymbolTable::new_symbol(methodName, CHECK_(Handle())); TempNewSymbol sig = SymbolTable::new_symbol(signature, CHECK_(Handle())); JavaValue result(T_OBJECT); if (args == NULL) { JavaCalls::call_static(&result, klass, runtime, sig, CHECK_(Handle())); --- 639,649 ---- return ret; JVM_END Handle JVMCIRuntime::callStatic(const char* className, const char* methodName, const char* signature, JavaCallArguments* args, TRAPS) { TempNewSymbol name = SymbolTable::new_symbol(className, CHECK_(Handle())); ! Klass* klass = SystemDictionary::resolve_or_fail(name, true, CHECK_(Handle())); TempNewSymbol runtime = SymbolTable::new_symbol(methodName, CHECK_(Handle())); TempNewSymbol sig = SymbolTable::new_symbol(signature, CHECK_(Handle())); JavaValue result(T_OBJECT); if (args == NULL) { JavaCalls::call_static(&result, klass, runtime, sig, CHECK_(Handle()));
*** 655,665 **** void JVMCIRuntime::initialize_HotSpotJVMCIRuntime(TRAPS) { guarantee(!_HotSpotJVMCIRuntime_initialized, "cannot reinitialize HotSpotJVMCIRuntime"); JVMCIRuntime::initialize_well_known_classes(CHECK); // This should only be called in the context of the JVMCI class being initialized ! instanceKlassHandle klass = InstanceKlass::cast(SystemDictionary::JVMCI_klass()); guarantee(klass->is_being_initialized() && klass->is_reentrant_initialization(THREAD), "HotSpotJVMCIRuntime initialization should only be triggered through JVMCI initialization"); Handle result = callStatic("jdk/vm/ci/hotspot/HotSpotJVMCIRuntime", "runtime", --- 655,665 ---- void JVMCIRuntime::initialize_HotSpotJVMCIRuntime(TRAPS) { guarantee(!_HotSpotJVMCIRuntime_initialized, "cannot reinitialize HotSpotJVMCIRuntime"); JVMCIRuntime::initialize_well_known_classes(CHECK); // This should only be called in the context of the JVMCI class being initialized ! InstanceKlass* klass = SystemDictionary::JVMCI_klass(); guarantee(klass->is_being_initialized() && klass->is_reentrant_initialization(THREAD), "HotSpotJVMCIRuntime initialization should only be triggered through JVMCI initialization"); Handle result = callStatic("jdk/vm/ci/hotspot/HotSpotJVMCIRuntime", "runtime",
< prev index next >