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.