comparison src/share/vm/jvmci/jvmciRuntime.cpp @ 21614:2f92172fa320

Truffle and NFI implementations are now accessed via JVMCI services instead of being hard coded in the VM (JBS:GRAAL-51)
author Doug Simon <doug.simon@oracle.com>
date Sun, 31 May 2015 13:42:47 +0200
parents 71b338926f2e
children 4c146c9367b6
comparison
equal deleted inserted replaced
21613:60154926b513 21614:2f92172fa320
640 JVM_ENTRY(jobject, JVM_GetJVMCIServiceImpls(JNIEnv *env, jclass c, jclass serviceClass)) 640 JVM_ENTRY(jobject, JVM_GetJVMCIServiceImpls(JNIEnv *env, jclass c, jclass serviceClass))
641 HandleMark hm; 641 HandleMark hm;
642 ResourceMark rm; 642 ResourceMark rm;
643 KlassHandle serviceKlass(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(serviceClass))); 643 KlassHandle serviceKlass(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(serviceClass)));
644 return JNIHandles::make_local(THREAD, JVMCIRuntime::get_service_impls(serviceKlass, THREAD)()); 644 return JNIHandles::make_local(THREAD, JVMCIRuntime::get_service_impls(serviceKlass, THREAD)());
645 JVM_END
646
647 // private static TruffleRuntime Truffle.createRuntime()
648 JVM_ENTRY(jobject, JVM_CreateTruffleRuntime(JNIEnv *env, jclass c))
649 JVMCIRuntime::ensure_jvmci_class_loader_is_initialized();
650 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime", CHECK_NULL);
651 KlassHandle klass = JVMCIRuntime::resolve_or_fail(name, CHECK_NULL);
652
653 TempNewSymbol makeInstance = SymbolTable::new_symbol("makeInstance", CHECK_NULL);
654 TempNewSymbol sig = SymbolTable::new_symbol("()Lcom/oracle/truffle/api/TruffleRuntime;", CHECK_NULL);
655 JavaValue result(T_OBJECT);
656 JavaCalls::call_static(&result, klass, makeInstance, sig, CHECK_NULL);
657 return JNIHandles::make_local(THREAD, (oop) result.get_jobject());
658 JVM_END
659
660 // private static NativeFunctionInterfaceRuntime.createInterface()
661 JVM_ENTRY(jobject, JVM_CreateNativeFunctionInterface(JNIEnv *env, jclass c))
662 JVMCIRuntime::ensure_jvmci_class_loader_is_initialized();
663 TempNewSymbol name = SymbolTable::new_symbol("com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime", CHECK_NULL);
664 KlassHandle klass = JVMCIRuntime::resolve_or_fail(name, CHECK_NULL);
665
666 TempNewSymbol makeInstance = SymbolTable::new_symbol("createNativeFunctionInterface", CHECK_NULL);
667 TempNewSymbol sig = SymbolTable::new_symbol("()Lcom/oracle/nfi/api/NativeFunctionInterface;", CHECK_NULL);
668 JavaValue result(T_OBJECT);
669 JavaCalls::call_static(&result, klass, makeInstance, sig, CHECK_NULL);
670 return JNIHandles::make_local(THREAD, (oop) result.get_jobject());
671 JVM_END 645 JVM_END
672 646
673 Handle JVMCIRuntime::callInitializer(const char* className, const char* methodName, const char* returnType) { 647 Handle JVMCIRuntime::callInitializer(const char* className, const char* methodName, const char* returnType) {
674 guarantee(!_HotSpotJVMCIRuntime_initialized, "cannot reinitialize HotSpotJVMCIRuntime"); 648 guarantee(!_HotSpotJVMCIRuntime_initialized, "cannot reinitialize HotSpotJVMCIRuntime");
675 Thread* THREAD = Thread::current(); 649 Thread* THREAD = Thread::current();