Mercurial > hg > graal-compiler
comparison graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java @ 21780:3d15183f3c93
Introduce Compiler interface in jvmci. Use it from jvmci.hotspot.CompilationTask
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Wed, 03 Jun 2015 15:47:54 +0200 |
parents | 48c1ebd24120 |
children | 0e095e2c24e2 |
comparison
equal
deleted
inserted
replaced
21779:20ace3139510 | 21780:3d15183f3c93 |
---|---|
29 import com.oracle.jvmci.meta.JavaMethod; | 29 import com.oracle.jvmci.meta.JavaMethod; |
30 import com.oracle.jvmci.meta.ResolvedJavaMethod; | 30 import com.oracle.jvmci.meta.ResolvedJavaMethod; |
31 import com.oracle.jvmci.meta.Signature; | 31 import com.oracle.jvmci.meta.Signature; |
32 import com.oracle.jvmci.meta.ForeignCallDescriptor; | 32 import com.oracle.jvmci.meta.ForeignCallDescriptor; |
33 import com.oracle.jvmci.meta.Kind; | 33 import com.oracle.jvmci.meta.Kind; |
34 | |
34 import static com.oracle.jvmci.code.CallingConvention.Type.*; | 35 import static com.oracle.jvmci.code.CallingConvention.Type.*; |
35 import static com.oracle.graal.hotspot.HotSpotForeignCallLinkage.RegisterEffect.*; | 36 import static com.oracle.graal.hotspot.HotSpotForeignCallLinkage.RegisterEffect.*; |
36 | 37 |
37 import com.oracle.graal.compiler.common.type.*; | 38 import com.oracle.graal.compiler.common.type.*; |
38 import com.oracle.graal.hotspot.*; | 39 import com.oracle.graal.hotspot.*; |
117 @Override | 118 @Override |
118 protected ResolvedJavaMethod getInstalledCodeOwner() { | 119 protected ResolvedJavaMethod getInstalledCodeOwner() { |
119 return null; | 120 return null; |
120 } | 121 } |
121 | 122 |
123 private class DebugScopeContext implements JavaMethod, JavaMethodContex { | |
124 public JavaMethod asJavaMethod() { | |
125 return this; | |
126 } | |
127 | |
128 public Signature getSignature() { | |
129 ForeignCallDescriptor d = linkage.getDescriptor(); | |
130 MetaAccessProvider metaAccess = providers.getMetaAccess(); | |
131 Class<?>[] arguments = d.getArgumentTypes(); | |
132 ResolvedJavaType[] parameters = new ResolvedJavaType[arguments.length]; | |
133 for (int i = 0; i < arguments.length; i++) { | |
134 parameters[i] = metaAccess.lookupJavaType(arguments[i]); | |
135 } | |
136 return new HotSpotSignature(runtime.getJVMCIRuntime(), metaAccess.lookupJavaType(d.getResultType()), parameters); | |
137 } | |
138 | |
139 public String getName() { | |
140 return linkage.getDescriptor().getName(); | |
141 } | |
142 | |
143 public JavaType getDeclaringClass() { | |
144 return providers.getMetaAccess().lookupJavaType(ForeignCallStub.class); | |
145 } | |
146 | |
147 @Override | |
148 public String toString() { | |
149 return format("ForeignCallStub<%n(%p)>"); | |
150 } | |
151 } | |
152 | |
122 @Override | 153 @Override |
123 protected Object debugScopeContext() { | 154 protected Object debugScopeContext() { |
124 return new JavaMethod() { | 155 return new DebugScopeContext() { |
125 | 156 |
126 public Signature getSignature() { | |
127 ForeignCallDescriptor d = linkage.getDescriptor(); | |
128 MetaAccessProvider metaAccess = providers.getMetaAccess(); | |
129 Class<?>[] arguments = d.getArgumentTypes(); | |
130 ResolvedJavaType[] parameters = new ResolvedJavaType[arguments.length]; | |
131 for (int i = 0; i < arguments.length; i++) { | |
132 parameters[i] = metaAccess.lookupJavaType(arguments[i]); | |
133 } | |
134 return new HotSpotSignature(runtime.getJVMCIRuntime(), metaAccess.lookupJavaType(d.getResultType()), parameters); | |
135 } | |
136 | |
137 public String getName() { | |
138 return linkage.getDescriptor().getName(); | |
139 } | |
140 | |
141 public JavaType getDeclaringClass() { | |
142 return providers.getMetaAccess().lookupJavaType(ForeignCallStub.class); | |
143 } | |
144 | |
145 @Override | |
146 public String toString() { | |
147 return format("ForeignCallStub<%n(%p)>"); | |
148 } | |
149 }; | 157 }; |
150 } | 158 } |
151 | 159 |
152 /** | 160 /** |
153 * Creates a graph for this stub. | 161 * Creates a graph for this stub. |