OpenJDK / jdk / jdk
changeset 34165:66826441022f
8142329: [JVMCI] pass Handle by value
Reviewed-by: coleenp, twisti
Contributed-by: Roland Schatz <roland.schatz@oracle.com>
author | twisti |
---|---|
date | Tue, 10 Nov 2015 10:34:39 -1000 |
parents | a9e6034d7707 |
children | f95eaadb51da |
files | hotspot/src/share/vm/compiler/compileBroker.cpp hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp hotspot/src/share/vm/jvmci/jvmciCompiler.cpp hotspot/src/share/vm/jvmci/jvmciCompiler.hpp hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp hotspot/src/share/vm/jvmci/jvmciCompilerToVM.hpp hotspot/src/share/vm/jvmci/jvmciEnv.cpp hotspot/src/share/vm/jvmci/jvmciEnv.hpp hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp |
diffstat | 10 files changed, 46 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Tue Nov 10 10:34:39 2015 -1000 @@ -1716,7 +1716,8 @@ EventCompilation event; JVMCIEnv env(task, system_dictionary_modification_counter); - jvmci->compile_method(target_handle, osr_bci, &env); + methodHandle method(thread, target_handle); + jvmci->compile_method(method, osr_bci, &env); post_compile(thread, task, event, task->code() != NULL, NULL); } else
--- a/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp Tue Nov 10 10:34:39 2015 -1000 @@ -475,7 +475,7 @@ _size = bytes; } -JVMCIEnv::CodeInstallResult CodeInstaller::gather_metadata(Handle target, Handle& compiled_code, CodeMetadata& metadata, TRAPS) { +JVMCIEnv::CodeInstallResult CodeInstaller::gather_metadata(Handle target, Handle compiled_code, CodeMetadata& metadata, TRAPS) { CodeBuffer buffer("JVMCI Compiler CodeBuffer for Metadata"); jobject compiled_code_obj = JNIHandles::make_local(compiled_code()); initialize_dependencies(JNIHandles::resolve(compiled_code_obj), NULL, CHECK_OK); @@ -508,7 +508,7 @@ } // constructor used to create a method -JVMCIEnv::CodeInstallResult CodeInstaller::install(JVMCICompiler* compiler, Handle target, Handle& compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS) { +JVMCIEnv::CodeInstallResult CodeInstaller::install(JVMCICompiler* compiler, Handle target, Handle compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS) { CodeBuffer buffer("JVMCI Compiler CodeBuffer"); jobject compiled_code_obj = JNIHandles::make_local(compiled_code()); OopRecorder* recorder = new OopRecorder(&_arena, true);
--- a/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp Tue Nov 10 10:34:39 2015 -1000 @@ -177,8 +177,8 @@ CodeInstaller() : _arena(mtCompiler) {} - JVMCIEnv::CodeInstallResult gather_metadata(Handle target, Handle& compiled_code, CodeMetadata& metadata, TRAPS); - JVMCIEnv::CodeInstallResult install(JVMCICompiler* compiler, Handle target, Handle& compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS); + JVMCIEnv::CodeInstallResult gather_metadata(Handle target, Handle compiled_code, CodeMetadata& metadata, TRAPS); + JVMCIEnv::CodeInstallResult install(JVMCICompiler* compiler, Handle target, Handle compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS); static address runtime_call_target_address(oop runtime_call); static VMReg get_hotspot_reg(jint jvmciRegisterNumber, TRAPS);
--- a/hotspot/src/share/vm/jvmci/jvmciCompiler.cpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCompiler.cpp Tue Nov 10 10:34:39 2015 -1000 @@ -112,7 +112,7 @@ _bootstrapping = false; } -void JVMCICompiler::compile_method(methodHandle method, int entry_bci, JVMCIEnv* env) { +void JVMCICompiler::compile_method(const methodHandle& method, int entry_bci, JVMCIEnv* env) { JVMCI_EXCEPTION_CONTEXT bool is_osr = entry_bci != InvocationEntryBci;
--- a/hotspot/src/share/vm/jvmci/jvmciCompiler.hpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCompiler.hpp Tue Nov 10 10:34:39 2015 -1000 @@ -71,7 +71,7 @@ // Compilation entry point for methods virtual void compile_method(ciEnv* env, ciMethod* target, int entry_bci, DirectiveSet* directive); - void compile_method(methodHandle target, int entry_bci, JVMCIEnv* env); + void compile_method(const methodHandle& target, int entry_bci, JVMCIEnv* env); virtual bool is_trivial(Method* method);
--- a/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp Tue Nov 10 10:34:39 2015 -1000 @@ -60,7 +60,7 @@ #define C2V_END } -oop CompilerToVM::get_jvmci_method(methodHandle method, TRAPS) { +oop CompilerToVM::get_jvmci_method(const methodHandle& method, TRAPS) { if (method() != NULL) { JavaValue result(T_OBJECT); JavaCallArguments args;
--- a/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.hpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.hpp Tue Nov 10 10:34:39 2015 -1000 @@ -94,7 +94,7 @@ return (MethodData*) (address) metaspaceMethodData; } - static oop get_jvmci_method(methodHandle method, TRAPS); + static oop get_jvmci_method(const methodHandle& method, TRAPS); static oop get_jvmci_type(KlassHandle klass, TRAPS);
--- a/hotspot/src/share/vm/jvmci/jvmciEnv.cpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciEnv.cpp Tue Nov 10 10:34:39 2015 -1000 @@ -82,8 +82,8 @@ } // ------------------------------------------------------------------ -KlassHandle JVMCIEnv::get_klass_by_name_impl(KlassHandle& accessing_klass, - constantPoolHandle& cpool, +KlassHandle JVMCIEnv::get_klass_by_name_impl(KlassHandle accessing_klass, + const constantPoolHandle& cpool, Symbol* sym, bool require_local) { JVMCI_EXCEPTION_CONTEXT; @@ -161,7 +161,7 @@ } // ------------------------------------------------------------------ -KlassHandle JVMCIEnv::get_klass_by_name(KlassHandle& accessing_klass, +KlassHandle JVMCIEnv::get_klass_by_name(KlassHandle accessing_klass, Symbol* klass_name, bool require_local) { ResourceMark rm; @@ -174,10 +174,10 @@ // ------------------------------------------------------------------ // Implementation of get_klass_by_index. -KlassHandle JVMCIEnv::get_klass_by_index_impl(constantPoolHandle& cpool, +KlassHandle JVMCIEnv::get_klass_by_index_impl(const constantPoolHandle& cpool, int index, bool& is_accessible, - KlassHandle& accessor) { + KlassHandle accessor) { JVMCI_EXCEPTION_CONTEXT; KlassHandle klass (THREAD, ConstantPool::klass_at_if_loaded(cpool, index)); Symbol* klass_name = NULL; @@ -215,10 +215,10 @@ // ------------------------------------------------------------------ // Get a klass from the constant pool. -KlassHandle JVMCIEnv::get_klass_by_index(constantPoolHandle& cpool, +KlassHandle JVMCIEnv::get_klass_by_index(const constantPoolHandle& cpool, int index, bool& is_accessible, - KlassHandle& accessor) { + KlassHandle accessor) { ResourceMark rm; KlassHandle result = get_klass_by_index_impl(cpool, index, is_accessible, accessor); return result; @@ -229,7 +229,7 @@ // // Implementation note: the results of field lookups are cached // in the accessor klass. -void JVMCIEnv::get_field_by_index_impl(instanceKlassHandle& klass, fieldDescriptor& field_desc, +void JVMCIEnv::get_field_by_index_impl(instanceKlassHandle klass, fieldDescriptor& field_desc, int index) { JVMCI_EXCEPTION_CONTEXT; @@ -270,7 +270,7 @@ // ------------------------------------------------------------------ // Get a field by index from a klass's constant pool. -void JVMCIEnv::get_field_by_index(instanceKlassHandle& accessor, fieldDescriptor& fd, int index) { +void JVMCIEnv::get_field_by_index(instanceKlassHandle accessor, fieldDescriptor& fd, int index) { ResourceMark rm; return get_field_by_index_impl(accessor, fd, index); } @@ -278,8 +278,8 @@ // ------------------------------------------------------------------ // Perform an appropriate method lookup based on accessor, holder, // name, signature, and bytecode. -methodHandle JVMCIEnv::lookup_method(instanceKlassHandle& h_accessor, - instanceKlassHandle& h_holder, +methodHandle JVMCIEnv::lookup_method(instanceKlassHandle h_accessor, + instanceKlassHandle h_holder, Symbol* name, Symbol* sig, Bytecodes::Code bc) { @@ -312,9 +312,9 @@ // ------------------------------------------------------------------ -methodHandle JVMCIEnv::get_method_by_index_impl(constantPoolHandle& cpool, +methodHandle JVMCIEnv::get_method_by_index_impl(const constantPoolHandle& cpool, int index, Bytecodes::Code bc, - instanceKlassHandle& accessor) { + instanceKlassHandle accessor) { if (bc == Bytecodes::_invokedynamic) { ConstantPoolCacheEntry* cpce = cpool->invokedynamic_cp_cache_entry_at(index); bool is_resolved = !cpce->is_f1_null(); @@ -379,7 +379,7 @@ } // ------------------------------------------------------------------ -instanceKlassHandle JVMCIEnv::get_instance_klass_for_declared_method_holder(KlassHandle& method_holder) { +instanceKlassHandle JVMCIEnv::get_instance_klass_for_declared_method_holder(KlassHandle method_holder) { // For the case of <array>.clone(), the method holder can be an ArrayKlass* // instead of an InstanceKlass*. For that case simply pretend that the // declared holder is Object.clone since that's where the call will bottom out. @@ -395,9 +395,9 @@ // ------------------------------------------------------------------ -methodHandle JVMCIEnv::get_method_by_index(constantPoolHandle& cpool, +methodHandle JVMCIEnv::get_method_by_index(const constantPoolHandle& cpool, int index, Bytecodes::Code bc, - instanceKlassHandle& accessor) { + instanceKlassHandle accessor) { ResourceMark rm; return get_method_by_index_impl(cpool, index, bc, accessor); } @@ -452,7 +452,7 @@ // ------------------------------------------------------------------ JVMCIEnv::CodeInstallResult JVMCIEnv::register_method( - methodHandle& method, + const methodHandle& method, nmethod*& nm, int entry_bci, CodeOffsets* offsets,
--- a/hotspot/src/share/vm/jvmci/jvmciEnv.hpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciEnv.hpp Tue Nov 10 10:34:39 2015 -1000 @@ -78,20 +78,20 @@ // The CI treats a klass as loaded if it is consistently defined in // another loader, even if it hasn't yet been loaded in all loaders // that could potentially see it via delegation. - static KlassHandle get_klass_by_name(KlassHandle& accessing_klass, + static KlassHandle get_klass_by_name(KlassHandle accessing_klass, Symbol* klass_name, bool require_local); // Constant pool access. - static KlassHandle get_klass_by_index(constantPoolHandle& cpool, + static KlassHandle get_klass_by_index(const constantPoolHandle& cpool, int klass_index, bool& is_accessible, - KlassHandle& loading_klass); - static void get_field_by_index(instanceKlassHandle& loading_klass, fieldDescriptor& fd, + KlassHandle loading_klass); + static void get_field_by_index(instanceKlassHandle loading_klass, fieldDescriptor& fd, int field_index); - static methodHandle get_method_by_index(constantPoolHandle& cpool, + static methodHandle get_method_by_index(const constantPoolHandle& cpool, int method_index, Bytecodes::Code bc, - instanceKlassHandle& loading_klass); + instanceKlassHandle loading_klass); JVMCIEnv(CompileTask* task, int system_dictionary_modification_counter); @@ -105,24 +105,24 @@ bool _jvmti_can_post_on_exceptions; // Implementation methods for loading and constant pool access. - static KlassHandle get_klass_by_name_impl(KlassHandle& accessing_klass, - constantPoolHandle& cpool, + static KlassHandle get_klass_by_name_impl(KlassHandle accessing_klass, + const constantPoolHandle& cpool, Symbol* klass_name, bool require_local); - static KlassHandle get_klass_by_index_impl(constantPoolHandle& cpool, + static KlassHandle get_klass_by_index_impl(const constantPoolHandle& cpool, int klass_index, bool& is_accessible, - KlassHandle& loading_klass); - static void get_field_by_index_impl(instanceKlassHandle& loading_klass, fieldDescriptor& fd, + KlassHandle loading_klass); + static void get_field_by_index_impl(instanceKlassHandle loading_klass, fieldDescriptor& fd, int field_index); - static methodHandle get_method_by_index_impl(constantPoolHandle& cpool, + static methodHandle get_method_by_index_impl(const constantPoolHandle& cpool, int method_index, Bytecodes::Code bc, - instanceKlassHandle& loading_klass); + instanceKlassHandle loading_klass); // Helper methods static bool check_klass_accessibility(KlassHandle accessing_klass, KlassHandle resolved_klass); - static methodHandle lookup_method(instanceKlassHandle& accessor, - instanceKlassHandle& holder, + static methodHandle lookup_method(instanceKlassHandle accessor, + instanceKlassHandle holder, Symbol* name, Symbol* sig, Bytecodes::Code bc); @@ -142,7 +142,7 @@ // Register the result of a compilation. static JVMCIEnv::CodeInstallResult register_method( - methodHandle& target, + const methodHandle& target, nmethod*& nm, int entry_bci, CodeOffsets* offsets, @@ -166,7 +166,7 @@ // InstanceKlass*. This is needed since the holder of a method in // the bytecodes could be an array type. Basically this converts // array types into java/lang/Object and other types stay as they are. - static instanceKlassHandle get_instance_klass_for_declared_method_holder(KlassHandle& klass); + static instanceKlassHandle get_instance_klass_for_declared_method_holder(KlassHandle klass); }; #endif // SHARE_VM_JVMCI_JVMCIENV_HPP
--- a/hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp Mon Nov 09 11:28:31 2015 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp Tue Nov 10 10:34:39 2015 -1000 @@ -315,10 +315,10 @@ #define FIELD(name, type, accessor, cast) \ static int _##name##_offset; \ static type name(oop obj) { check(obj, #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ - static type name(Handle& obj) { check(obj(), #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ + static type name(Handle obj) { check(obj(), #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ static type name(jobject obj) { check(JNIHandles::resolve(obj), #name, _##name##_offset); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ static void set_##name(oop obj, type x) { check(obj, #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ - static void set_##name(Handle& obj, type x) { check(obj(), #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ + static void set_##name(Handle obj, type x) { check(obj(), #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj), #name, _##name##_offset); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } #define EMPTY_CAST