Mercurial > hg > truffle
comparison graal/com.oracle.nfi/src/com/oracle/nfi/NativeFunctionInterfaceRuntime.java @ 21894:91b861398ad6
removed dependency from NFI to JVMCI
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 10 Jun 2015 16:10:26 +0200 |
parents | 2f92172fa320 |
children |
comparison
equal
deleted
inserted
replaced
21893:db885c930362 | 21894:91b861398ad6 |
---|---|
20 * or visit www.oracle.com if you need additional information or have any | 20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. | 21 * questions. |
22 */ | 22 */ |
23 package com.oracle.nfi; | 23 package com.oracle.nfi; |
24 | 24 |
25 import com.oracle.jvmci.service.*; | 25 import java.lang.reflect.*; |
26 | |
26 import com.oracle.nfi.api.*; | 27 import com.oracle.nfi.api.*; |
27 | 28 |
28 /** | 29 /** |
29 * Class for obtaining the {@link NativeFunctionInterface} (if any) provided by the VM. | 30 * Class for obtaining the {@link NativeFunctionInterface} (if any) provided by the VM. |
30 */ | 31 */ |
41 } | 42 } |
42 | 43 |
43 static { | 44 static { |
44 | 45 |
45 NativeFunctionInterface instance = null; | 46 NativeFunctionInterface instance = null; |
46 NativeFunctionInterfaceAccess access = Services.loadSingle(NativeFunctionInterfaceAccess.class, false); | 47 |
48 NativeFunctionInterfaceAccess access = null; | |
49 Class<?> servicesClass = null; | |
50 try { | |
51 servicesClass = Class.forName("com.oracle.jvmci.service.Services"); | |
52 } catch (ClassNotFoundException e) { | |
53 // JVMCI is unavailable | |
54 } | |
55 if (servicesClass != null) { | |
56 try { | |
57 Method m = servicesClass.getDeclaredMethod("loadSingle", Class.class, boolean.class); | |
58 access = (NativeFunctionInterfaceAccess) m.invoke(null, NativeFunctionInterfaceAccess.class, false); | |
59 } catch (Throwable e) { | |
60 // Fail fast for other errors | |
61 throw (InternalError) new InternalError().initCause(e); | |
62 } | |
63 } | |
64 // TODO: try standard ServiceLoader? | |
47 if (access != null) { | 65 if (access != null) { |
48 instance = access.getNativeFunctionInterface(); | 66 instance = access.getNativeFunctionInterface(); |
49 } | 67 } |
50 INSTANCE = instance; | 68 INSTANCE = instance; |
51 } | 69 } |