Mercurial > hg > graal-jvmci-8
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(); |