Mercurial > hg > graal-jvmci-8
diff src/share/vm/graal/graalVMToCompiler.cpp @ 6948:e522a00b91aa
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 12 Nov 2012 23:14:12 +0100 |
parents | 1ecf984d490c |
children | 2a1ec8b0bfe0 |
line wrap: on
line diff
--- a/src/share/vm/graal/graalVMToCompiler.cpp Mon Nov 12 18:11:17 2012 +0100 +++ b/src/share/vm/graal/graalVMToCompiler.cpp Mon Nov 12 23:14:12 2012 +0100 @@ -27,10 +27,10 @@ // this is a *global* handle jobject VMToCompiler::_graalRuntimePermObject = NULL; jobject VMToCompiler::_vmToCompilerPermObject = NULL; -jobject VMToCompiler::_vmToCompilerPermKlass = NULL; +Klass* VMToCompiler::_vmToCompilerPermKlass = NULL; -static klassOop loadClass(Symbol* name) { - klassOop klass = SystemDictionary::resolve_or_null(name, SystemDictionary::java_system_loader(), NULL, Thread::current()); +static Klass* loadClass(Symbol* name) { + Klass* klass = SystemDictionary::resolve_or_null(name, SystemDictionary::java_system_loader(), NULL, Thread::current()); if (klass == NULL) { tty->print_cr("Could not load class %s", name->as_C_string()); vm_abort(false); @@ -39,11 +39,11 @@ } KlassHandle VMToCompiler::vmToCompilerKlass() { - if (JNIHandles::resolve(_vmToCompilerPermKlass) == NULL) { - klassOop result = loadClass(vmSymbols::com_oracle_graal_hotspot_bridge_VMToCompiler()); - _vmToCompilerPermKlass = JNIHandles::make_global(result); + if (_vmToCompilerPermKlass == NULL) { + Klass* result = loadClass(vmSymbols::com_oracle_graal_hotspot_bridge_VMToCompiler()); + _vmToCompilerPermKlass = result; } - return KlassHandle((klassOop)JNIHandles::resolve_non_null(_vmToCompilerPermKlass)); + return _vmToCompilerPermKlass; } Handle VMToCompiler::graalRuntime() { @@ -95,13 +95,15 @@ check_pending_exception("Error while calling setDefaultOptions"); } -jboolean VMToCompiler::compileMethod(Handle hotspot_method, int entry_bci, jboolean blocking, int priority) { - assert(!hotspot_method.is_null(), "just checking"); +jboolean VMToCompiler::compileMethod(Method* method, Handle holder, int entry_bci, jboolean blocking, int priority) { + assert(method != NULL, "just checking"); + assert(!holder.is_null(), "just checking"); Thread* THREAD = Thread::current(); JavaValue result(T_BOOLEAN); JavaCallArguments args; args.push_oop(instance()); - args.push_oop(hotspot_method); + args.push_long((jlong) (address) method); + args.push_oop(holder()); args.push_int(entry_bci); args.push_int(blocking); args.push_int(priority); @@ -122,7 +124,7 @@ JNIHandles::destroy_global(_graalRuntimePermObject); JNIHandles::destroy_global(_vmToCompilerPermObject); - JNIHandles::destroy_global(_vmToCompilerPermKlass); + //JNIHandles::destroy_global(_vmToCompilerPermKlass); _graalRuntimePermObject = NULL; _vmToCompilerPermObject = NULL; @@ -148,32 +150,7 @@ check_pending_exception("Error while calling boostrap"); } -oop VMToCompiler::createResolvedJavaMethod(jlong vmId, Handle name, TRAPS) { - assert(!name.is_null(), "just checking"); - JavaValue result(T_OBJECT); - JavaCallArguments args; - args.push_oop(instance()); - args.push_long(vmId); - args.push_oop(name); - JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createResolvedJavaMethod_name(), vmSymbols::createResolvedJavaMethod_signature(), &args, THREAD); - check_pending_exception("Error while calling createResolvedJavaMethod"); - return (oop) result.get_jobject(); -} - -oop VMToCompiler::createJavaMethod(Handle name, Handle signature, Handle holder, TRAPS) { - assert(!name.is_null(), "just checking"); - JavaValue result(T_OBJECT); - JavaCallArguments args; - args.push_oop(instance()); - args.push_oop(name); - args.push_oop(signature); - args.push_oop(holder); - JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createJavaMethod_name(), vmSymbols::createJavaMethod_signature(), &args, THREAD); - check_pending_exception("Error while calling createJavaMethod"); - return (oop) result.get_jobject(); -} - -oop VMToCompiler::createJavaField(Handle holder, Handle name, Handle type, int index, int flags, TRAPS) { +oop VMToCompiler::createJavaField(Handle holder, Handle name, Handle type, int index, int flags, jboolean internal, TRAPS) { assert(!holder.is_null(), "just checking"); assert(!name.is_null(), "just checking"); assert(!type.is_null(), "just checking"); @@ -185,12 +162,40 @@ args.push_oop(type); args.push_int(index); args.push_int(flags); + args.push_int(internal); JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createJavaField_name(), vmSymbols::createJavaField_signature(), &args, THREAD); check_pending_exception("Error while calling createJavaField"); assert(result.get_type() == T_OBJECT, "just checking"); return (oop) result.get_jobject(); } +oop VMToCompiler::createUnresolvedJavaMethod(Handle name, Handle signature, Handle holder, TRAPS) { + assert(!name.is_null(), "just checking"); + JavaValue result(T_OBJECT); + JavaCallArguments args; + args.push_oop(instance()); + args.push_oop(name); + args.push_oop(signature); + args.push_oop(holder); + JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createUnresolvedJavaMethod_name(), vmSymbols::createUnresolvedJavaMethod_signature(), &args, THREAD); + check_pending_exception("Error while calling createUnresolvedJavaMethod"); + return (oop) result.get_jobject(); +} + +oop VMToCompiler::createResolvedJavaMethod(Handle holder, Method* method, TRAPS) { + assert(!holder.is_null(), "just checking"); + assert(method != NULL, "just checking"); + JavaValue result(T_OBJECT); + JavaCallArguments args; + args.push_oop(instance()); + args.push_oop(holder); + args.push_long((jlong) (address) method); + JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createResolvedJavaMethod_name(), vmSymbols::createResolvedJavaMethod_signature(), &args, THREAD); + check_pending_exception("Error while calling createResolvedJavaMethod"); + assert(result.get_type() == T_OBJECT, "just checking"); + return (oop) result.get_jobject(); +} + oop VMToCompiler::createPrimitiveJavaType(int basic_type, TRAPS) { JavaValue result(T_OBJECT); JavaCallArguments args; @@ -201,14 +206,31 @@ return (oop) result.get_jobject(); } -oop VMToCompiler::createJavaType(Handle name, TRAPS) { +oop VMToCompiler::createUnresolvedJavaType(Handle name, TRAPS) { assert(!name.is_null(), "just checking"); JavaValue result(T_OBJECT); JavaCallArguments args; args.push_oop(instance()); args.push_oop(name); - JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createJavaType_name(), vmSymbols::createJavaType_signature(), &args, THREAD); - check_pending_exception("Error while calling createJavaType"); + JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createUnresolvedJavaType_name(), vmSymbols::createUnresolvedJavaType_signature(), &args, THREAD); + check_pending_exception("Error while calling createUnresolvedJavaType"); + return (oop) result.get_jobject(); +} + +oop VMToCompiler::createResolvedJavaType(Klass* klass, Handle name, Handle simpleName, Handle java_mirror, jboolean hasFinalizableSubclass, jint sizeOrSpecies, TRAPS) { + assert(!name.is_null(), "just checking"); + assert(!simpleName.is_null(), "just checking"); + JavaValue result(T_OBJECT); + JavaCallArguments args; + args.push_oop(instance()); + args.push_long((jlong) (address) klass); + args.push_oop(name); + args.push_oop(simpleName); + args.push_oop(java_mirror); + args.push_int(hasFinalizableSubclass); + args.push_int(sizeOrSpecies); + JavaCalls::call_interface(&result, vmToCompilerKlass(), vmSymbols::createResolvedJavaType_name(), vmSymbols::createResolvedJavaType_signature(), &args, THREAD); + check_pending_exception("Error while calling createResolvedJavaType"); return (oop) result.get_jobject(); }