# HG changeset patch # User Tom Rodriguez # Date 1437698450 25200 # Node ID e02fa353e88ca0438c82c6621ee29340530029b8 # Parent fa57ba6dc917925c0a2c37b3d0dec4fcd0658ec2 Pull ForeignCallsProvider and friends back into Graal diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallDescriptor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallDescriptor.java Thu Jul 23 17:40:50 2015 -0700 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.compiler.common.spi; + +import java.util.*; + +/** + * The name and signature of a foreign call. A foreign call differs from a normal compiled Java call + * in at least one of these aspects: + * + */ +public class ForeignCallDescriptor { + + private final String name; + private final Class resultType; + private final Class[] argumentTypes; + + public ForeignCallDescriptor(String name, Class resultType, Class... argumentTypes) { + this.name = name; + this.resultType = resultType; + this.argumentTypes = argumentTypes; + } + + /** + * Gets the name of this foreign call. + */ + public String getName() { + return name; + } + + /** + * Gets the return type of this foreign call. + */ + public Class getResultType() { + return resultType; + } + + /** + * Gets the argument types of this foreign call. + */ + public Class[] getArgumentTypes() { + return argumentTypes.clone(); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ForeignCallDescriptor) { + ForeignCallDescriptor other = (ForeignCallDescriptor) obj; + return other.name.equals(name) && other.resultType.equals(resultType) && Arrays.equals(other.argumentTypes, argumentTypes); + } + return false; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(name).append('('); + String sep = ""; + for (Class arg : argumentTypes) { + sb.append(sep).append(arg.getSimpleName()); + sep = ","; + } + return sb.append(')').append(resultType.getSimpleName()).toString(); + } +} diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallLinkage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallLinkage.java Thu Jul 23 17:40:50 2015 -0700 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.compiler.common.spi; + +import jdk.internal.jvmci.code.*; +import jdk.internal.jvmci.meta.*; + +/** + * The runtime specific details of a {@linkplain ForeignCallDescriptor foreign} call. + */ +public interface ForeignCallLinkage extends InvokeTarget { + + /** + * Gets the details of where parameters are passed and value(s) are returned from the caller's + * perspective. + */ + CallingConvention getOutgoingCallingConvention(); + + /** + * Gets the details of where parameters are passed and value(s) are returned from the callee's + * perspective. + */ + CallingConvention getIncomingCallingConvention(); + + /** + * Returns the maximum absolute offset of PC relative call to this stub from any position in the + * code cache or -1 when not applicable. Intended for determining the required size of + * address/offset fields. + */ + long getMaxCallTargetOffset(); + + ForeignCallDescriptor getDescriptor(); + + /** + * Gets the values used/killed by this foreign call. + */ + Value[] getTemporaries(); + + /** + * Determines if the foreign call target destroys all registers. + * + * @return {@code true} if the register allocator must save all live registers around a call to + * this target + */ + boolean destroysRegisters(); + + /** + * Determines if debug info needs to be associated with this call. Debug info is required if the + * function can raise an exception, try to lock, trigger GC or do anything else that requires + * the VM to be able to inspect the thread's execution state. + */ + boolean needsDebugInfo(); +} diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallsProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/ForeignCallsProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.compiler.common.spi; + +import jdk.internal.jvmci.meta.*; + +/** + * Details about a set of supported {@link ForeignCallDescriptor foreign calls}. + */ +public interface ForeignCallsProvider { + + /** + * Determines if a given foreign call is side-effect free. Deoptimization cannot return + * execution to a point before a foreign call that has a side effect. + */ + boolean isReexecutable(ForeignCallDescriptor descriptor); + + /** + * Gets the set of memory locations killed by a given foreign call. Returning the special value + * {@link LocationIdentity#any()} denotes that the call kills all memory locations. Returning + * any empty array denotes that the call does not kill any memory locations. + */ + LocationIdentity[] getKilledLocations(ForeignCallDescriptor descriptor); + + /** + * Determines if deoptimization can occur during a given foreign call. + */ + boolean canDeoptimize(ForeignCallDescriptor descriptor); + + /** + * Gets the linkage for a foreign call. + */ + ForeignCallLinkage lookupForeignCall(ForeignCallDescriptor descriptor); +} diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,6 +29,7 @@ import com.oracle.graal.asm.*; import com.oracle.graal.compiler.common.alloc.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/ForeignCallPlugin.java --- a/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/ForeignCallPlugin.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/ForeignCallPlugin.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,9 +22,9 @@ */ package com.oracle.graal.graphbuilderconf; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLoweringProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLoweringProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -26,6 +26,7 @@ import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Thu Jul 23 17:40:50 2015 -0700 @@ -27,6 +27,7 @@ import static jdk.internal.jvmci.code.ValueUtil.*; import com.oracle.graal.compiler.amd64.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.nodes.*; @@ -39,7 +40,9 @@ import jdk.internal.jvmci.amd64.*; import jdk.internal.jvmci.code.*; + import com.oracle.graal.debug.*; + import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotUnwindOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotUnwindOp.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotUnwindOp.java Thu Jul 23 17:40:50 2015 -0700 @@ -28,11 +28,11 @@ import static jdk.internal.jvmci.code.ValueUtil.*; import com.oracle.graal.asm.amd64.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.amd64.*; import com.oracle.graal.lir.asm.*; - import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLoweringProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLoweringProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -25,6 +25,7 @@ import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Thu Jul 23 17:40:50 2015 -0700 @@ -25,6 +25,7 @@ import static com.oracle.graal.hotspot.HotSpotBackend.*; import static jdk.internal.jvmci.sparc.SPARC.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.compiler.sparc.*; import com.oracle.graal.hotspot.*; @@ -37,7 +38,9 @@ import com.oracle.graal.nodes.spi.*; import jdk.internal.jvmci.code.*; + import com.oracle.graal.debug.*; + import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotUnwindOp.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotUnwindOp.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotUnwindOp.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,6 +29,7 @@ import static jdk.internal.jvmci.sparc.SPARC.*; import com.oracle.graal.asm.sparc.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ForeignCallDeoptimizeTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ForeignCallDeoptimizeTest.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ForeignCallDeoptimizeTest.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,12 +22,11 @@ */ package com.oracle.graal.hotspot.test; -import jdk.internal.jvmci.meta.*; - import org.junit.*; import com.oracle.graal.api.replacements.*; import com.oracle.graal.api.runtime.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.test.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java Thu Jul 23 17:40:50 2015 -0700 @@ -33,6 +33,7 @@ import jdk.internal.jvmci.options.*; import com.oracle.graal.compiler.common.cfg.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkage.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkage.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkage.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,9 +22,9 @@ */ package com.oracle.graal.hotspot; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.hotspot.stubs.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkageImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkageImpl.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkageImpl.java Thu Jul 23 17:40:50 2015 -0700 @@ -32,6 +32,7 @@ import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.stubs.*; @@ -43,6 +44,11 @@ public class HotSpotForeignCallLinkageImpl extends HotSpotForeignCallTarget implements HotSpotForeignCallLinkage, HotSpotProxified { /** + * The descriptor of the call. + */ + protected final ForeignCallDescriptor descriptor; + + /** * Non-null (eventually) iff this is a call to a compiled {@linkplain Stub stub}. */ private Stub stub; @@ -126,7 +132,8 @@ public HotSpotForeignCallLinkageImpl(ForeignCallDescriptor descriptor, long address, RegisterEffect effect, Transition transition, CallingConvention outgoingCallingConvention, CallingConvention incomingCallingConvention, boolean reexecutable, LocationIdentity... killedLocations) { - super(descriptor, address); + super(address); + this.descriptor = descriptor; this.address = address; this.effect = effect; this.transition = transition; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,8 +22,10 @@ */ package com.oracle.graal.hotspot; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.*; + import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; import jdk.internal.jvmci.service.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -35,6 +35,7 @@ import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,9 +22,10 @@ */ package com.oracle.graal.hotspot.meta; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; + /** * HotSpot extension of {@link ForeignCallsProvider}. */ diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java Thu Jul 23 17:40:50 2015 -0700 @@ -31,6 +31,7 @@ import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.HotSpotForeignCallLinkage.RegisterEffect; import com.oracle.graal.hotspot.HotSpotForeignCallLinkage.Transition; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,13 +29,13 @@ import java.lang.invoke.*; import java.util.zip.*; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; import jdk.internal.jvmci.options.*; import sun.reflect.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graphbuilderconf.*; import com.oracle.graal.graphbuilderconf.GraphBuilderConfiguration.Plugins; import com.oracle.graal.graphbuilderconf.InvocationPlugin.Receiver; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java Thu Jul 23 17:40:50 2015 -0700 @@ -53,6 +53,7 @@ import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,10 +22,10 @@ */ package com.oracle.graal.hotspot.nodes; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.HotSpotBackend.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -24,9 +24,9 @@ import java.util.*; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.replacements.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,10 +22,10 @@ */ package com.oracle.graal.hotspot.nodes; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.HotSpotBackend.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -27,6 +27,7 @@ import static com.oracle.graal.hotspot.HotSpotBackend.*; import static com.oracle.graal.hotspot.nodes.CStringNode.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -33,6 +33,7 @@ import jdk.internal.jvmci.meta.*; import sun.misc.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AssertionSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AssertionSnippets.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AssertionSnippets.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,11 +22,11 @@ */ package com.oracle.graal.hotspot.replacements; -import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.nodes.CStringNode.*; import static com.oracle.graal.replacements.SnippetTemplate.*; +import jdk.internal.jvmci.code.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -30,6 +30,7 @@ import jdk.internal.jvmci.meta.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,6 +29,7 @@ import sun.misc.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Thu Jul 23 17:40:50 2015 -0700 @@ -34,6 +34,7 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Thu Jul 23 17:40:50 2015 -0700 @@ -38,6 +38,7 @@ import jdk.internal.jvmci.options.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Thu Jul 23 17:40:50 2015 -0700 @@ -35,12 +35,15 @@ import static jdk.internal.jvmci.hotspot.HotSpotMetaAccessProvider.*; import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.common.*; + import com.oracle.graal.debug.*; + import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; import jdk.internal.jvmci.options.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemSubstitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemSubstitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -24,9 +24,8 @@ import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*; -import jdk.internal.jvmci.meta.*; - import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; /** * Substitutions for {@link java.lang.System} methods. diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -24,9 +24,8 @@ import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static jdk.internal.jvmci.meta.LocationIdentity.*; -import jdk.internal.jvmci.meta.*; - import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Thu Jul 23 17:40:50 2015 -0700 @@ -32,6 +32,7 @@ import jdk.internal.jvmci.meta.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.meta.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -28,6 +28,7 @@ import jdk.internal.jvmci.meta.*; import com.oracle.graal.api.runtime.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -27,6 +27,7 @@ import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/DeoptimizationStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/DeoptimizationStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/DeoptimizationStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -25,7 +25,6 @@ import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.common.*; import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.HotSpotBackend.*; import static com.oracle.graal.hotspot.HotSpotBackend.Options.*; import static com.oracle.graal.hotspot.nodes.DeoptimizationFetchUnrollInfoCallNode.*; @@ -34,6 +33,7 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.asm.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -24,13 +24,13 @@ import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.nodes.JumpToExceptionHandlerNode.*; import static com.oracle.graal.hotspot.nodes.PatchReturnAddressNode.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.stubs.StubUtil.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -23,11 +23,13 @@ package com.oracle.graal.hotspot.stubs; import com.oracle.graal.debug.*; + import jdk.internal.jvmci.hotspot.*; import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.HotSpotForeignCallLinkage.RegisterEffect.*; import static jdk.internal.jvmci.code.CallingConvention.Type.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.HotSpotForeignCallLinkage.Transition; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,9 +29,8 @@ import static jdk.internal.jvmci.hotspot.HotSpotMetaAccessProvider.*; import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; - import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -31,6 +31,7 @@ import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java Thu Jul 23 17:40:50 2015 -0700 @@ -34,6 +34,7 @@ import jdk.internal.jvmci.meta.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -31,6 +31,7 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.asm.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; @@ -150,7 +151,7 @@ * Stack bang to make sure there's enough room for the interpreter frames. Bang stack for * total size of the interpreter frames plus shadow page size. Bang one page at a time * because large sizes can bang beyond yellow and red zones. - * + * * @deprecated This code should go away as soon as JDK-8032410 hits the Graal repository. */ final int totalFrameSizes = unrollBlock.readInt(deoptimizationUnrollBlockTotalFrameSizesOffset()); diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UnwindExceptionToCallerStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UnwindExceptionToCallerStub.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UnwindExceptionToCallerStub.java Thu Jul 23 17:40:50 2015 -0700 @@ -23,13 +23,13 @@ package com.oracle.graal.hotspot.stubs; import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.meta.*; import static com.oracle.graal.hotspot.nodes.JumpToExceptionHandlerInCallerNode.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.stubs.ExceptionHandlerStub.*; import static com.oracle.graal.hotspot.stubs.StubUtil.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java Thu Jul 23 17:40:50 2015 -0700 @@ -30,6 +30,7 @@ import com.oracle.graal.asm.amd64.*; import com.oracle.graal.asm.amd64.AMD64Assembler.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Thu Jul 23 17:40:50 2015 -0700 @@ -32,6 +32,7 @@ import com.oracle.graal.asm.sparc.*; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.ScratchRegister; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Sethix; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java Thu Jul 23 17:40:50 2015 -0700 @@ -31,12 +31,15 @@ import jdk.internal.jvmci.code.CompilationResult.*; import jdk.internal.jvmci.code.DataSection.*; import jdk.internal.jvmci.common.*; + import com.oracle.graal.debug.*; + import jdk.internal.jvmci.meta.*; import jdk.internal.jvmci.options.*; import com.oracle.graal.asm.*; import com.oracle.graal.compiler.common.cfg.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.framemap.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilderFactory.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilderFactory.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilderFactory.java Thu Jul 23 17:40:50 2015 -0700 @@ -25,6 +25,7 @@ import jdk.internal.jvmci.code.*; import com.oracle.graal.asm.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.lir.framemap.*; /** diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -25,6 +25,7 @@ import jdk.internal.jvmci.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -27,6 +27,7 @@ import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ForeignCallDescriptors.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ForeignCallDescriptors.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ForeignCallDescriptors.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,7 +22,7 @@ */ package com.oracle.graal.nodes.java; -import jdk.internal.jvmci.meta.*; +import com.oracle.graal.compiler.common.spi.*; /** * The foreign call descriptors used by nodes in this package. diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Thu Jul 23 17:40:50 2015 -0700 @@ -23,11 +23,11 @@ package com.oracle.graal.nodes.java; import static com.oracle.graal.nodes.java.ForeignCallDescriptors.*; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; import jdk.internal.jvmci.meta.Assumptions.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java Thu Jul 23 17:40:50 2015 -0700 @@ -23,12 +23,12 @@ package com.oracle.graal.replacements.amd64; import jdk.internal.jvmci.amd64.*; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; import static com.oracle.graal.compiler.target.Backend.*; import static com.oracle.graal.replacements.amd64.AMD64MathIntrinsicNode.Operation.*; import sun.misc.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graphbuilderconf.*; import com.oracle.graal.graphbuilderconf.GraphBuilderConfiguration.Plugins; import com.oracle.graal.graphbuilderconf.InvocationPlugin.Receiver; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,9 +22,9 @@ */ package com.oracle.graal.replacements.amd64; -import jdk.internal.jvmci.meta.*; import static com.oracle.graal.compiler.target.Backend.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.nodes.extended.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java --- a/graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,10 +22,10 @@ */ package com.oracle.graal.replacements.sparc; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.meta.*; import static com.oracle.graal.compiler.target.Backend.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.graphbuilderconf.*; import com.oracle.graal.graphbuilderconf.GraphBuilderConfiguration.Plugins; import com.oracle.graal.graphbuilderconf.InvocationPlugins.Registration; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java Thu Jul 23 17:40:50 2015 -0700 @@ -29,6 +29,7 @@ import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.nodes.extended.*; +import com.oracle.graal.compiler.common.spi.*; //JaCoCo Exclude diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Thu Jul 23 17:40:50 2015 -0700 @@ -27,13 +27,15 @@ import java.lang.reflect.*; import java.util.*; -import jdk.internal.jvmci.code.*; import jdk.internal.jvmci.common.*; + import com.oracle.graal.debug.*; import com.oracle.graal.debug.internal.*; + import jdk.internal.jvmci.meta.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java --- a/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java Thu Jul 23 17:40:50 2015 -0700 @@ -32,6 +32,7 @@ import com.oracle.graal.asm.*; import com.oracle.graal.asm.amd64.*; import com.oracle.graal.asm.amd64.AMD64Assembler.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.lir.asm.*; import com.oracle.graal.lir.framemap.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java --- a/graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java Thu Jul 23 17:40:50 2015 -0700 @@ -37,6 +37,7 @@ import com.oracle.graal.asm.*; import com.oracle.graal.asm.sparc.*; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.lir.asm.*; import com.oracle.graal.lir.framemap.*; diff -r fa57ba6dc917 -r e02fa353e88c graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/OptimizedCallTargetInstrumentation.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/OptimizedCallTargetInstrumentation.java Thu Jul 23 15:05:22 2015 -0700 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/OptimizedCallTargetInstrumentation.java Thu Jul 23 17:40:50 2015 -0700 @@ -30,6 +30,7 @@ import jdk.internal.jvmci.hotspot.*; import com.oracle.graal.asm.*; +import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.lir.asm.*; diff -r fa57ba6dc917 -r e02fa353e88c jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ForeignCallLinkage.java --- a/jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ForeignCallLinkage.java Thu Jul 23 15:05:22 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package jdk.internal.jvmci.code; - -import jdk.internal.jvmci.meta.*; - -/** - * The runtime specific details of a {@linkplain ForeignCallDescriptor foreign} call. - */ -public interface ForeignCallLinkage extends InvokeTarget { - - /** - * Gets the details of where parameters are passed and value(s) are returned from the caller's - * perspective. - */ - CallingConvention getOutgoingCallingConvention(); - - /** - * Gets the details of where parameters are passed and value(s) are returned from the callee's - * perspective. - */ - CallingConvention getIncomingCallingConvention(); - - /** - * Returns the maximum absolute offset of PC relative call to this stub from any position in the - * code cache or -1 when not applicable. Intended for determining the required size of - * address/offset fields. - */ - long getMaxCallTargetOffset(); - - ForeignCallDescriptor getDescriptor(); - - /** - * Gets the values used/killed by this foreign call. - */ - Value[] getTemporaries(); - - /** - * Determines if the foreign call target destroys all registers. - * - * @return {@code true} if the register allocator must save all live registers around a call to - * this target - */ - boolean destroysRegisters(); - - /** - * Determines if debug info needs to be associated with this call. Debug info is required if the - * function can raise an exception, try to lock, trigger GC or do anything else that requires - * the VM to be able to inspect the thread's execution state. - */ - boolean needsDebugInfo(); -} diff -r fa57ba6dc917 -r e02fa353e88c jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ForeignCallsProvider.java --- a/jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ForeignCallsProvider.java Thu Jul 23 15:05:22 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package jdk.internal.jvmci.code; - -import jdk.internal.jvmci.meta.*; - -/** - * Details about a set of supported {@link ForeignCallDescriptor foreign calls}. - */ -public interface ForeignCallsProvider { - - /** - * Determines if a given foreign call is side-effect free. Deoptimization cannot return - * execution to a point before a foreign call that has a side effect. - */ - boolean isReexecutable(ForeignCallDescriptor descriptor); - - /** - * Gets the set of memory locations killed by a given foreign call. Returning the special value - * {@link LocationIdentity#any()} denotes that the call kills all memory locations. Returning - * any empty array denotes that the call does not kill any memory locations. - */ - LocationIdentity[] getKilledLocations(ForeignCallDescriptor descriptor); - - /** - * Determines if deoptimization can occur during a given foreign call. - */ - boolean canDeoptimize(ForeignCallDescriptor descriptor); - - /** - * Gets the linkage for a foreign call. - */ - ForeignCallLinkage lookupForeignCall(ForeignCallDescriptor descriptor); -} diff -r fa57ba6dc917 -r e02fa353e88c jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotForeignCallTarget.java --- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotForeignCallTarget.java Thu Jul 23 15:05:22 2015 -0700 +++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotForeignCallTarget.java Thu Jul 23 17:40:50 2015 -0700 @@ -22,21 +22,14 @@ */ package jdk.internal.jvmci.hotspot; -import jdk.internal.jvmci.meta.*; - public class HotSpotForeignCallTarget { - /** - * The descriptor of the call. - */ - protected final ForeignCallDescriptor descriptor; /** * The entry point address of this call's target. */ protected long address; - public HotSpotForeignCallTarget(ForeignCallDescriptor descriptor, long address) { - this.descriptor = descriptor; + public HotSpotForeignCallTarget(long address) { this.address = address; } } diff -r fa57ba6dc917 -r e02fa353e88c jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/ForeignCallDescriptor.java --- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/ForeignCallDescriptor.java Thu Jul 23 15:05:22 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package jdk.internal.jvmci.meta; - -import java.util.*; - -/** - * The name and signature of a foreign call. A foreign call differs from a normal compiled Java call - * in at least one of these aspects: - * - */ -public class ForeignCallDescriptor { - - private final String name; - private final Class resultType; - private final Class[] argumentTypes; - - public ForeignCallDescriptor(String name, Class resultType, Class... argumentTypes) { - this.name = name; - this.resultType = resultType; - this.argumentTypes = argumentTypes; - } - - /** - * Gets the name of this foreign call. - */ - public String getName() { - return name; - } - - /** - * Gets the return type of this foreign call. - */ - public Class getResultType() { - return resultType; - } - - /** - * Gets the argument types of this foreign call. - */ - public Class[] getArgumentTypes() { - return argumentTypes.clone(); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ForeignCallDescriptor) { - ForeignCallDescriptor other = (ForeignCallDescriptor) obj; - return other.name.equals(name) && other.resultType.equals(resultType) && Arrays.equals(other.argumentTypes, argumentTypes); - } - return false; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(name).append('('); - String sep = ""; - for (Class arg : argumentTypes) { - sb.append(sep).append(arg.getSimpleName()); - sep = ","; - } - return sb.append(')').append(resultType.getSimpleName()).toString(); - } -}