# HG changeset patch # User Doug Simon # Date 1451495339 -3600 # Node ID 56359eb3abfacad52efc53d0dfff7ea81795d56f # Parent 815f05c8dc0bb399d518cdbc6e2c6ffd7b09961c moved @ServiceProvider mechanism from JVMCI to Graal (GRAAL-1380) diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java --- a/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java Wed Dec 30 18:08:59 2015 +0100 @@ -36,7 +36,7 @@ import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.runtime.JVMCI; import jdk.vm.ci.runtime.JVMCIBackend; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import org.junit.Assert; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.code/src/com/oracle/graal/code/HexCodeFileDisassemblerProvider.java --- a/graal/com.oracle.graal.code/src/com/oracle/graal/code/HexCodeFileDisassemblerProvider.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.code/src/com/oracle/graal/code/HexCodeFileDisassemblerProvider.java Wed Dec 30 18:08:59 2015 +0100 @@ -39,7 +39,8 @@ import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.service.ServiceProvider; + +import com.oracle.graal.serviceprovider.ServiceProvider; /** * {@link HexCodeFile} based implementation of {@link DisassemblerProvider}. diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/Util.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/Util.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/Util.java Wed Dec 30 18:08:59 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler.common.util; import java.util.Arrays; +import java.util.Collection; import java.util.Comparator; import java.util.List; @@ -151,6 +152,29 @@ assert CodeUtil.isPowerOf2(64); } + public interface Stringify { + String apply(Object o); + } + + public static String join(Collection c, String sep) { + return join(c, sep, "", "", null); + } + + public static String join(Collection c, String sep, String prefix, String suffix, Stringify stringify) { + StringBuilder buf = new StringBuilder(prefix); + boolean first = true; + for (Object e : c) { + if (!first) { + buf.append(sep); + } else { + first = false; + } + buf.append(stringify != null ? stringify.apply(e) : String.valueOf(e)); + } + buf.append(suffix); + return buf.toString(); + } + /** * Sets the element at a given position of a list and ensures that this position exists. If the * list is current shorter than the position, intermediate positions are filled with a given diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.compiler.match.processor/src/com/oracle/graal/compiler/match/processor/MatchProcessor.java --- a/graal/com.oracle.graal.compiler.match.processor/src/com/oracle/graal/compiler/match/processor/MatchProcessor.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.compiler.match.processor/src/com/oracle/graal/compiler/match/processor/MatchProcessor.java Wed Dec 30 18:08:59 2015 +0100 @@ -63,7 +63,6 @@ import javax.tools.StandardLocation; import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.compiler.gen.NodeMatchRules; import com.oracle.graal.compiler.match.ComplexMatchResult; @@ -75,6 +74,7 @@ import com.oracle.graal.compiler.match.MatchableNodes; import com.oracle.graal.graph.Position; import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.serviceprovider.ServiceProvider; /** * Processes classes annotated with {@link MatchRule}. A {@link MatchStatementSet} service is diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugInitializationPropertyProvider.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugInitializationPropertyProvider.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugInitializationPropertyProvider.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,11 +22,10 @@ */ package com.oracle.graal.compiler; -import jdk.vm.ci.service.ServiceProvider; - import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.DebugInitializationPropertyProvider; import com.oracle.graal.debug.GraalDebugConfig; +import com.oracle.graal.serviceprovider.ServiceProvider; /** * Sets system properties used in the initialization of {@link Debug} based on the values specified diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java Wed Dec 30 18:08:59 2015 +0100 @@ -31,7 +31,7 @@ import java.util.Map.Entry; import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.compiler.gen.NodeMatchRules; import com.oracle.graal.debug.Debug; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.debug/src/com/oracle/graal/debug/Debug.java --- a/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/Debug.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/Debug.java Wed Dec 30 18:08:59 2015 +0100 @@ -40,7 +40,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.debug.DelegatingDebugConfig.Level; import com.oracle.graal.debug.internal.DebugHistogramImpl; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.debug/src/com/oracle/graal/debug/DebugEnvironment.java --- a/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/DebugEnvironment.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/DebugEnvironment.java Wed Dec 30 18:08:59 2015 +0100 @@ -35,7 +35,7 @@ import java.util.List; import jdk.vm.ci.runtime.JVMCI; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; public class DebugEnvironment { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.debug/src/com/oracle/graal/debug/TTY.java --- a/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/TTY.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/TTY.java Wed Dec 30 18:08:59 2015 +0100 @@ -30,7 +30,7 @@ import java.util.Map; import java.util.regex.Pattern; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; /** * A collection of static methods for printing debug and informational output to a global diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot.aarch64/src/com/oracle/graal/hotspot/aarch64/AArch64HotSpotBackendFactory.java --- a/graal/com.oracle.graal.hotspot.aarch64/src/com/oracle/graal/hotspot/aarch64/AArch64HotSpotBackendFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.aarch64/src/com/oracle/graal/hotspot/aarch64/AArch64HotSpotBackendFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,6 +24,20 @@ import static jdk.vm.ci.aarch64.AArch64.sp; import static jdk.vm.ci.inittimer.InitTimer.timer; +import jdk.vm.ci.aarch64.AArch64; +import jdk.vm.ci.code.CodeCacheProvider; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.code.RegisterConfig; +import jdk.vm.ci.code.TargetDescription; +import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; +import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; +import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider; +import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; +import jdk.vm.ci.hotspot.HotSpotVMConfig; +import jdk.vm.ci.hotspot.aarch64.AArch64HotSpotRegisterConfig; +import jdk.vm.ci.inittimer.InitTimer; +import jdk.vm.ci.meta.Value; +import jdk.vm.ci.runtime.JVMCIBackend; import com.oracle.graal.api.replacements.SnippetReflectionProvider; import com.oracle.graal.compiler.aarch64.AArch64AddressLowering; @@ -49,24 +63,9 @@ import com.oracle.graal.phases.tiers.CompilerConfiguration; import com.oracle.graal.phases.util.Providers; import com.oracle.graal.replacements.aarch64.AArch64GraphBuilderPlugins; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.word.WordTypes; -import jdk.vm.ci.aarch64.AArch64; -import jdk.vm.ci.code.CodeCacheProvider; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.RegisterConfig; -import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; -import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; -import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider; -import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; -import jdk.vm.ci.hotspot.HotSpotVMConfig; -import jdk.vm.ci.hotspot.aarch64.AArch64HotSpotRegisterConfig; -import jdk.vm.ci.inittimer.InitTimer; -import jdk.vm.ci.meta.Value; -import jdk.vm.ci.runtime.JVMCIBackend; -import jdk.vm.ci.service.ServiceProvider; - @ServiceProvider(HotSpotBackendFactory.class) public class AArch64HotSpotBackendFactory implements HotSpotBackendFactory { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -41,7 +41,6 @@ import jdk.vm.ci.inittimer.InitTimer; import jdk.vm.ci.meta.Value; import jdk.vm.ci.runtime.JVMCIBackend; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.api.replacements.SnippetReflectionProvider; import com.oracle.graal.compiler.amd64.AMD64SuitesProvider; @@ -66,6 +65,7 @@ import com.oracle.graal.phases.tiers.CompilerConfiguration; import com.oracle.graal.phases.util.Providers; import com.oracle.graal.replacements.amd64.AMD64GraphBuilderPlugins; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.word.WordTypes; @ServiceProvider(HotSpotBackendFactory.class) @@ -202,15 +202,15 @@ } else { /* * System V Application Binary Interface, AMD64 Architecture Processor Supplement - * + * * Draft Version 0.96 - * + * * http://www.uclibc.org/docs/psABI-x86_64.pdf - * + * * 3.2.1 - * + * * ... - * + * * This subsection discusses usage of each register. Registers %rbp, %rbx and %r12 * through %r15 "belong" to the calling function and the called function is required to * preserve their values. In other words, a called function must preserve these diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -37,7 +37,6 @@ import jdk.vm.ci.hotspot.HotSpotVMConfig; import jdk.vm.ci.meta.Value; import jdk.vm.ci.runtime.JVMCIBackend; -import jdk.vm.ci.service.ServiceProvider; import jdk.vm.ci.sparc.SPARC; import com.oracle.graal.compiler.sparc.SPARCAddressLowering; @@ -63,6 +62,7 @@ import com.oracle.graal.phases.tiers.CompilerConfiguration; import com.oracle.graal.phases.util.Providers; import com.oracle.graal.replacements.sparc.SPARCGraphBuilderPlugins; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(HotSpotBackendFactory.class) public class SPARCHotSpotBackendFactory implements HotSpotBackendFactory { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Wed Dec 30 18:08:59 2015 +0100 @@ -49,7 +49,7 @@ import jdk.vm.ci.hotspot.events.EventProvider.CompilationEvent; import jdk.vm.ci.hotspot.events.EventProvider.CompilerFailureEvent; import jdk.vm.ci.runtime.JVMCICompiler; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import sun.misc.Unsafe; import com.oracle.graal.debug.Debug; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/DefaultHotSpotGraalCompilerFactory.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/DefaultHotSpotGraalCompilerFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/DefaultHotSpotGraalCompilerFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -26,10 +26,10 @@ import jdk.vm.ci.code.Architecture; import jdk.vm.ci.runtime.JVMCICompilerFactory; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.compiler.phases.BasicCompilerConfiguration; import com.oracle.graal.phases.tiers.CompilerConfiguration; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(JVMCICompilerFactory.class) public class DefaultHotSpotGraalCompilerFactory extends HotSpotGraalCompilerFactory { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/EconomyHotSpotGraalCompilerFactory.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/EconomyHotSpotGraalCompilerFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/EconomyHotSpotGraalCompilerFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -23,10 +23,10 @@ package com.oracle.graal.hotspot; import jdk.vm.ci.runtime.JVMCICompilerFactory; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.compiler.phases.EconomyCompilerConfiguration; import com.oracle.graal.phases.tiers.CompilerConfiguration; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(JVMCICompilerFactory.class) public class EconomyHotSpotGraalCompilerFactory extends DefaultHotSpotGraalCompilerFactory { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -38,7 +38,7 @@ import jdk.vm.ci.inittimer.InitTimer; import jdk.vm.ci.runtime.JVMCICompilerFactory; import jdk.vm.ci.runtime.JVMCIRuntime; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import sun.misc.VM; import com.oracle.graal.options.GraalJarsOptionDescriptorsProvider; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java Wed Dec 30 18:08:59 2015 +0100 @@ -28,9 +28,9 @@ import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; import jdk.vm.ci.hotspot.HotSpotVMEventListener; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.debug.Debug; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(HotSpotVMEventListener.class) public class HotSpotGraalVMEventListener implements HotSpotVMEventListener { diff -r 815f05c8dc0b -r 56359eb3abfa 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 Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java Wed Dec 30 18:08:59 2015 +0100 @@ -29,7 +29,7 @@ import jdk.vm.ci.hotspot.HotSpotVMConfig; import jdk.vm.ci.inittimer.InitTimer; import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.compiler.common.spi.ForeignCallDescriptor; import com.oracle.graal.debug.Debug; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotTTYStreamProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotTTYStreamProvider.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotTTYStreamProvider.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,11 +24,10 @@ import java.io.PrintStream; -import jdk.vm.ci.service.ServiceProvider; - import com.oracle.graal.debug.TTYStreamProvider; import com.oracle.graal.options.Option; import com.oracle.graal.options.OptionType; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(TTYStreamProvider.class) public class HotSpotTTYStreamProvider implements TTYStreamProvider { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotDisassemblerProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotDisassemblerProvider.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotDisassemblerProvider.java Wed Dec 30 18:08:59 2015 +0100 @@ -26,9 +26,9 @@ import jdk.vm.ci.code.CompilationResult; import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.code.DisassemblerProvider; +import com.oracle.graal.serviceprovider.ServiceProvider; /** * HotSpot implementation of {@link DisassemblerProvider}. diff -r 815f05c8dc0b -r 56359eb3abfa 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 Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Wed Dec 30 18:08:59 2015 +0100 @@ -38,7 +38,7 @@ import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import sun.reflect.Reflection; import com.oracle.graal.api.replacements.SnippetReflectionProvider; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,16 +22,16 @@ */ package com.oracle.graal.hotspot.replacements; +import jdk.vm.ci.code.TargetDescription; +import jdk.vm.ci.meta.MetaAccessProvider; +import sun.reflect.ConstantPool; +import sun.reflect.Reflection; + import com.oracle.graal.api.replacements.SnippetReflectionProvider; import com.oracle.graal.nodes.spi.LoweringProvider; import com.oracle.graal.nodes.spi.Replacements; import com.oracle.graal.nodes.spi.ReplacementsProvider; - -import jdk.vm.ci.code.TargetDescription; -import jdk.vm.ci.meta.MetaAccessProvider; -import jdk.vm.ci.service.ServiceProvider; -import sun.reflect.ConstantPool; -import sun.reflect.Reflection; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(ReplacementsProvider.class) public class HotSpotSubstitutions implements ReplacementsProvider { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64AddressValue.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64AddressValue.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64AddressValue.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,6 +24,13 @@ import java.util.EnumSet; +import jdk.vm.ci.aarch64.AArch64; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.code.RegisterValue; +import jdk.vm.ci.meta.AllocatableValue; +import jdk.vm.ci.meta.LIRKind; +import jdk.vm.ci.meta.Value; + import com.oracle.graal.asm.aarch64.AArch64Address; import com.oracle.graal.asm.aarch64.AArch64Assembler; import com.oracle.graal.lir.CompositeValue; @@ -32,13 +39,6 @@ import com.oracle.graal.lir.LIRInstruction; import com.oracle.graal.lir.LIRInstruction.OperandFlag; -import jdk.vm.ci.aarch64.AArch64; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.RegisterValue; -import jdk.vm.ci.meta.AllocatableValue; -import jdk.vm.ci.meta.LIRKind; -import jdk.vm.ci.meta.Value; - public final class AArch64AddressValue extends CompositeValue { private static final EnumSet flags = EnumSet.of(OperandFlag.REG, OperandFlag.ILLEGAL); diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ArithmeticOp.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ArithmeticOp.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ArithmeticOp.java Wed Dec 30 18:08:59 2015 +0100 @@ -29,6 +29,10 @@ import static com.oracle.graal.lir.aarch64.AArch64ArithmeticOp.ARMv8ConstantCategory.SHIFT; import static jdk.vm.ci.aarch64.AArch64.zr; import static jdk.vm.ci.code.ValueUtil.asRegister; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.common.JVMCIError; +import jdk.vm.ci.meta.AllocatableValue; +import jdk.vm.ci.meta.JavaConstant; import com.oracle.graal.asm.aarch64.AArch64Assembler; import com.oracle.graal.asm.aarch64.AArch64Assembler.ConditionFlag; @@ -37,11 +41,6 @@ import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.meta.AllocatableValue; -import jdk.vm.ci.meta.JavaConstant; - public enum AArch64ArithmeticOp { // TODO At least add and sub *can* be used with SP, so this should be supported NEG, diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BitManipulationOp.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BitManipulationOp.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BitManipulationOp.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,16 +24,15 @@ import static com.oracle.graal.lir.LIRInstruction.OperandFlag.REG; import static jdk.vm.ci.code.ValueUtil.asRegister; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.common.JVMCIError; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.meta.AllocatableValue; - /** * Bit manipulation ops for ARMv8 ISA. */ diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BreakpointOp.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BreakpointOp.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64BreakpointOp.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,6 +24,7 @@ import static com.oracle.graal.lir.LIRInstruction.OperandFlag.REG; import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK; +import jdk.vm.ci.meta.Value; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler.AArch64ExceptionCode; @@ -31,8 +32,6 @@ import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.meta.Value; - @Opcode("BREAKPOINT") public class AArch64BreakpointOp extends AArch64LIRInstruction { public static final LIRInstructionClass TYPE = LIRInstructionClass.create(AArch64BreakpointOp.class); diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Call.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Call.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Call.java Wed Dec 30 18:08:59 2015 +0100 @@ -27,6 +27,11 @@ import static com.oracle.graal.lir.LIRInstruction.OperandFlag.STACK; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; +import jdk.vm.ci.aarch64.AArch64; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.meta.InvokeTarget; +import jdk.vm.ci.meta.ResolvedJavaMethod; +import jdk.vm.ci.meta.Value; import com.oracle.graal.asm.aarch64.AArch64Assembler; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler; @@ -36,12 +41,6 @@ import com.oracle.graal.lir.Opcode; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.aarch64.AArch64; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.meta.InvokeTarget; -import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.meta.Value; - public class AArch64Call { public abstract static class CallOp extends AArch64LIRInstruction { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Compare.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Compare.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Compare.java Wed Dec 30 18:08:59 2015 +0100 @@ -28,6 +28,10 @@ import static com.oracle.graal.lir.LIRValueUtil.isJavaConstant; import static jdk.vm.ci.code.ValueUtil.asRegister; import static jdk.vm.ci.code.ValueUtil.isRegister; +import jdk.vm.ci.aarch64.AArch64Kind; +import jdk.vm.ci.meta.AllocatableValue; +import jdk.vm.ci.meta.JavaConstant; +import jdk.vm.ci.meta.Value; import com.oracle.graal.asm.NumUtil; import com.oracle.graal.asm.aarch64.AArch64Assembler; @@ -36,11 +40,6 @@ import com.oracle.graal.lir.LIRInstructionClass; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.aarch64.AArch64Kind; -import jdk.vm.ci.meta.AllocatableValue; -import jdk.vm.ci.meta.JavaConstant; -import jdk.vm.ci.meta.Value; - public class AArch64Compare { public static class CompareOp extends AArch64LIRInstruction { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ControlFlow.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ControlFlow.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ControlFlow.java Wed Dec 30 18:08:59 2015 +0100 @@ -27,6 +27,15 @@ import java.util.function.Function; +import jdk.vm.ci.aarch64.AArch64Kind; +import jdk.vm.ci.code.CompilationResult.JumpTable; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.common.JVMCIError; +import jdk.vm.ci.meta.Constant; +import jdk.vm.ci.meta.JavaConstant; +import jdk.vm.ci.meta.LIRKind; +import jdk.vm.ci.meta.Value; + import com.oracle.graal.asm.Label; import com.oracle.graal.asm.NumUtil; import com.oracle.graal.asm.aarch64.AArch64Address; @@ -43,15 +52,6 @@ import com.oracle.graal.lir.Variable; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.aarch64.AArch64Kind; -import jdk.vm.ci.code.CompilationResult.JumpTable; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.meta.Constant; -import jdk.vm.ci.meta.JavaConstant; -import jdk.vm.ci.meta.LIRKind; -import jdk.vm.ci.meta.Value; - public class AArch64ControlFlow { /** diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMap.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMap.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMap.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,15 +22,15 @@ */ package com.oracle.graal.lir.aarch64; -import com.oracle.graal.asm.NumUtil; -import com.oracle.graal.lir.framemap.FrameMap; - import jdk.vm.ci.aarch64.AArch64Kind; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.meta.LIRKind; +import com.oracle.graal.asm.NumUtil; +import com.oracle.graal.lir.framemap.FrameMap; + /** * AArch64 specific frame map. *

diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMapBuilder.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMapBuilder.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64FrameMapBuilder.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,13 +22,13 @@ */ package com.oracle.graal.lir.aarch64; -import com.oracle.graal.lir.framemap.FrameMap; -import com.oracle.graal.lir.framemap.FrameMapBuilderImpl; - import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.code.StackSlot; +import com.oracle.graal.lir.framemap.FrameMap; +import com.oracle.graal.lir.framemap.FrameMapBuilderImpl; + public class AArch64FrameMapBuilder extends FrameMapBuilderImpl { public AArch64FrameMapBuilder(FrameMap frameMap, CodeCacheProvider codeCache, RegisterConfig registerConfig) { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Move.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Move.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64Move.java Wed Dec 30 18:08:59 2015 +0100 @@ -34,6 +34,16 @@ import static jdk.vm.ci.code.ValueUtil.asStackSlot; import static jdk.vm.ci.code.ValueUtil.isRegister; import static jdk.vm.ci.code.ValueUtil.isStackSlot; +import jdk.vm.ci.aarch64.AArch64; +import jdk.vm.ci.aarch64.AArch64Kind; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.code.StackSlot; +import jdk.vm.ci.common.JVMCIError; +import jdk.vm.ci.meta.AllocatableValue; +import jdk.vm.ci.meta.Constant; +import jdk.vm.ci.meta.JavaConstant; +import jdk.vm.ci.meta.PlatformKind; +import jdk.vm.ci.meta.Value; import com.oracle.graal.asm.Label; import com.oracle.graal.asm.aarch64.AArch64Address; @@ -48,17 +58,6 @@ import com.oracle.graal.lir.VirtualStackSlot; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.aarch64.AArch64; -import jdk.vm.ci.aarch64.AArch64Kind; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.code.StackSlot; -import jdk.vm.ci.common.JVMCIError; -import jdk.vm.ci.meta.AllocatableValue; -import jdk.vm.ci.meta.Constant; -import jdk.vm.ci.meta.JavaConstant; -import jdk.vm.ci.meta.PlatformKind; -import jdk.vm.ci.meta.Value; - public class AArch64Move { @Opcode("MOVE") diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ReinterpretOp.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ReinterpretOp.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64ReinterpretOp.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,15 +24,14 @@ package com.oracle.graal.lir.aarch64; import static jdk.vm.ci.code.ValueUtil.asRegister; +import jdk.vm.ci.aarch64.AArch64Kind; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.aarch64.AArch64Kind; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.meta.AllocatableValue; - /** * Instruction that reinterprets some bit pattern as a different type. It is possible to reinterpret * the following: - int <-> float - long <-> double diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64SignExtendOp.java --- a/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64SignExtendOp.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.lir.aarch64/src/com/oracle/graal/lir/aarch64/AArch64SignExtendOp.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,14 +24,13 @@ package com.oracle.graal.lir.aarch64; import static jdk.vm.ci.code.ValueUtil.asRegister; +import jdk.vm.ci.code.Register; +import jdk.vm.ci.meta.AllocatableValue; import com.oracle.graal.asm.aarch64.AArch64MacroAssembler; import com.oracle.graal.lir.LIRInstructionClass; import com.oracle.graal.lir.asm.CompilationResultBuilder; -import jdk.vm.ci.code.Register; -import jdk.vm.ci.meta.AllocatableValue; - public class AArch64SignExtendOp extends AArch64LIRInstruction { private static final LIRInstructionClass TYPE = LIRInstructionClass.create(AArch64SignExtendOp.class); diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java Wed Dec 30 18:08:59 2015 +0100 @@ -40,7 +40,7 @@ import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.JavaMethod; import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.code.DisassemblerProvider; import com.oracle.graal.compiler.common.GraalOptions; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraalDebugConfigCustomizer.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraalDebugConfigCustomizer.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraalDebugConfigCustomizer.java Wed Dec 30 18:08:59 2015 +0100 @@ -25,7 +25,6 @@ import static com.oracle.graal.compiler.common.GraalOptions.PrintBackendCFG; import static com.oracle.graal.compiler.common.GraalOptions.PrintBinaryGraphs; import static com.oracle.graal.compiler.common.GraalOptions.PrintCFG; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.DebugConfig; @@ -35,6 +34,7 @@ import com.oracle.graal.graph.Node; import com.oracle.graal.nodeinfo.Verbosity; import com.oracle.graal.nodes.util.GraphUtil; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(DebugConfigCustomizer.class) public class GraalDebugConfigCustomizer implements DebugConfigCustomizer { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java --- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java Wed Dec 30 18:08:59 2015 +0100 @@ -179,7 +179,7 @@ protected static void createImports(PrintWriter out, List plugins) { out.printf("import jdk.vm.ci.meta.ResolvedJavaMethod;\n"); - out.printf("import jdk.vm.ci.service.ServiceProvider;\n"); + out.printf("import com.oracle.graal.serviceprovider.ServiceProvider;\n"); out.printf("\n"); out.printf("import com.oracle.graal.nodes.ValueNode;\n"); out.printf("import com.oracle.graal.nodes.graphbuilderconf.GraphBuilderContext;\n"); diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.salver/src/com/oracle/graal/salver/SalverDebugConfigCustomizer.java --- a/graal/com.oracle.graal.salver/src/com/oracle/graal/salver/SalverDebugConfigCustomizer.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.salver/src/com/oracle/graal/salver/SalverDebugConfigCustomizer.java Wed Dec 30 18:08:59 2015 +0100 @@ -27,8 +27,7 @@ import com.oracle.graal.debug.DebugConfig; import com.oracle.graal.debug.DebugConfigCustomizer; import com.oracle.graal.salver.handler.GraphDumpHandler; - -import jdk.vm.ci.service.ServiceProvider; +import com.oracle.graal.serviceprovider.ServiceProvider; @ServiceProvider(DebugConfigCustomizer.class) public class SalverDebugConfigCustomizer implements DebugConfigCustomizer { diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.serviceprovider.processor/src/META-INF/services/javax.annotation.processing.Processor --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.serviceprovider.processor/src/META-INF/services/javax.annotation.processing.Processor Wed Dec 30 18:08:59 2015 +0100 @@ -0,0 +1,1 @@ +com.oracle.graal.serviceprovider.processor.ServiceProviderProcessor diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.serviceprovider.processor/src/com/oracle/graal/serviceprovider/processor/ServiceProviderProcessor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.serviceprovider.processor/src/com/oracle/graal/serviceprovider/processor/ServiceProviderProcessor.java Wed Dec 30 18:08:59 2015 +0100 @@ -0,0 +1,145 @@ +/* + * 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.serviceprovider.processor; + +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.util.HashSet; +import java.util.Set; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.FilerException; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.Element; +import javax.lang.model.element.TypeElement; +import javax.lang.model.type.MirroredTypeException; +import javax.lang.model.type.TypeMirror; +import javax.tools.Diagnostic.Kind; +import javax.tools.FileObject; +import javax.tools.StandardLocation; + +import com.oracle.graal.serviceprovider.ServiceProvider; + +/** + * Processes classes annotated with {@link ServiceProvider}. For a service defined by {@code S} and + * a class {@code P} implementing the service, this processor generates the file + * {@code META-INF/providers/P} whose contents are a single line containing the fully qualified name + * of {@code S}. + */ +@SupportedAnnotationTypes("com.oracle.graal.serviceprovider.ServiceProvider") +public class ServiceProviderProcessor extends AbstractProcessor { + + private final Set processed = new HashSet<>(); + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + + private boolean verifyAnnotation(TypeMirror serviceInterface, TypeElement serviceProvider) { + if (!processingEnv.getTypeUtils().isSubtype(serviceProvider.asType(), serviceInterface)) { + String msg = String.format("Service provider class %s must implement service interface %s", serviceProvider.getSimpleName(), serviceInterface); + processingEnv.getMessager().printMessage(Kind.ERROR, msg, serviceProvider); + return false; + } + + return true; + } + + private void processElement(TypeElement serviceProvider) { + if (processed.contains(serviceProvider)) { + return; + } + + processed.add(serviceProvider); + ServiceProvider annotation = serviceProvider.getAnnotation(ServiceProvider.class); + if (annotation != null) { + try { + annotation.value(); + } catch (MirroredTypeException ex) { + TypeMirror serviceInterface = ex.getTypeMirror(); + if (verifyAnnotation(serviceInterface, serviceProvider)) { + String interfaceName = ex.getTypeMirror().toString(); + createProviderFile(serviceProvider, interfaceName); + } + } + } + } + + private void createProviderFile(TypeElement serviceProvider, String interfaceName) { + if (serviceProvider.getNestingKind().isNested()) { + // This is a simplifying constraint that means we don't have to + // processed the qualified name to insert '$' characters at + // the relevant positions. + String msg = String.format("Service provider class %s must be a top level class", serviceProvider.getSimpleName()); + processingEnv.getMessager().printMessage(Kind.ERROR, msg, serviceProvider); + return; + } + + String filename = "META-INF/providers/" + serviceProvider.getQualifiedName(); + try { + FileObject file = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", filename, serviceProvider); + PrintWriter writer = new PrintWriter(new OutputStreamWriter(file.openOutputStream(), "UTF-8")); + writer.println(interfaceName); + writer.close(); + } catch (IOException e) { + processingEnv.getMessager().printMessage(isBug367599(e) ? Kind.NOTE : Kind.ERROR, e.getMessage(), serviceProvider); + } + } + + /** + * Determines if a given exception is (most likely) caused by Bug 367599. + */ + public static boolean isBug367599(Throwable t) { + if (t instanceof FilerException) { + for (StackTraceElement ste : t.getStackTrace()) { + if (ste.toString().contains("org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create")) { + // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599 + return true; + } + } + } + if (t.getCause() != null) { + return isBug367599(t.getCause()); + } + return false; + } + + @Override + public boolean process(Set annotations, RoundEnvironment roundEnv) { + if (roundEnv.processingOver()) { + return true; + } + + for (Element element : roundEnv.getElementsAnnotatedWith(ServiceProvider.class)) { + assert element.getKind().isClass(); + processElement((TypeElement) element); + } + + return true; + } +} diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.serviceprovider/src/com/oracle/graal/serviceprovider/ServiceProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.serviceprovider/src/com/oracle/graal/serviceprovider/ServiceProvider.java Wed Dec 30 18:08:59 2015 +0100 @@ -0,0 +1,44 @@ +/* + * 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.serviceprovider; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import jdk.vm.ci.services.Services; + +/** + * Annotates a service provider than can be loaded via {@linkplain Services#load(Class)} or + * {@link Services#loadSingle(Class, boolean)}. + */ +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.TYPE) +public @interface ServiceProvider { + + /** + * The interface or class defining the service implemented by the annotated class. + */ + Class value(); +} diff -r 815f05c8dc0b -r 56359eb3abfa 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 Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -29,7 +29,6 @@ import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.code.Register; import jdk.vm.ci.meta.JavaKind; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.asm.Assembler; import com.oracle.graal.asm.Label; @@ -40,6 +39,7 @@ import com.oracle.graal.lir.asm.CompilationResultBuilder; import com.oracle.graal.lir.asm.FrameContext; import com.oracle.graal.lir.framemap.FrameMap; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.truffle.hotspot.OptimizedCallTargetInstrumentation; import com.oracle.graal.truffle.hotspot.OptimizedCallTargetInstrumentationFactory; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java --- a/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -24,11 +24,11 @@ import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.hotspot.amd64.AMD64RawNativeCallNode; import com.oracle.graal.nodes.FixedWithNextNode; import com.oracle.graal.nodes.ValueNode; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.truffle.hotspot.nfi.RawNativeCallNodeFactory; @ServiceProvider(RawNativeCallNodeFactory.class) diff -r 815f05c8dc0b -r 56359eb3abfa 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 Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -31,7 +31,6 @@ import jdk.vm.ci.code.CompilationResult; import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.code.Register; -import jdk.vm.ci.service.ServiceProvider; import com.oracle.graal.asm.Assembler; import com.oracle.graal.asm.Label; @@ -42,6 +41,7 @@ import com.oracle.graal.lir.asm.CompilationResultBuilder; import com.oracle.graal.lir.asm.FrameContext; import com.oracle.graal.lir.framemap.FrameMap; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.truffle.hotspot.OptimizedCallTargetInstrumentation; import com.oracle.graal.truffle.hotspot.OptimizedCallTargetInstrumentationFactory; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java Wed Dec 30 18:08:59 2015 +0100 @@ -55,7 +55,7 @@ import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.ResolvedJavaType; import jdk.vm.ci.runtime.JVMCI; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.api.runtime.GraalRuntime; import com.oracle.graal.compiler.target.Backend; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntimeAccess.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntimeAccess.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntimeAccess.java Wed Dec 30 18:08:59 2015 +0100 @@ -28,14 +28,14 @@ import jdk.vm.ci.runtime.JVMCI; import jdk.vm.ci.runtime.JVMCICompiler; import jdk.vm.ci.runtime.JVMCICompilerFactory; -import jdk.vm.ci.service.ServiceProvider; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.api.runtime.GraalJVMCICompiler; import com.oracle.graal.api.runtime.GraalRuntime; import com.oracle.graal.hotspot.HotSpotGraalCompilerFactory; import com.oracle.graal.options.Option; import com.oracle.graal.options.OptionValue; +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.truffle.api.TruffleRuntime; import com.oracle.truffle.api.TruffleRuntimeAccess; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterfaceAccess.java --- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterfaceAccess.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterfaceAccess.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,8 +22,7 @@ */ package com.oracle.graal.truffle.hotspot.nfi; -import jdk.vm.ci.service.ServiceProvider; - +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.graal.truffle.hotspot.HotSpotTruffleRuntime; import com.oracle.nfi.api.NativeFunctionInterface; import com.oracle.nfi.api.NativeFunctionInterfaceAccess; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/LazyInitializationTest.java --- a/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/LazyInitializationTest.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/LazyInitializationTest.java Wed Dec 30 18:08:59 2015 +0100 @@ -36,6 +36,7 @@ import org.junit.Test; import com.oracle.graal.compiler.CompilerThreadFactory; +import com.oracle.graal.compiler.common.util.Util; import com.oracle.graal.options.OptionDescriptor; import com.oracle.graal.options.OptionDescriptors; import com.oracle.graal.options.OptionValue; @@ -70,6 +71,9 @@ spawnUnitTests("com.oracle.truffle.sl.test.SLTckTest"); } + private static final String VERBOSE_PROPERTY = "LazyInitializationTest.verbose"; + private static final boolean VERBOSE = Boolean.getBoolean(VERBOSE_PROPERTY); + /** * Spawn a new VM, execute unit tests, and check which classes are loaded. */ @@ -89,10 +93,17 @@ Process process = new ProcessBuilder(args).start(); + if (VERBOSE) { + System.out.println("-----------------------------------------------------------------------------"); + System.out.println(Util.join(args, " ")); + } int testCount = 0; BufferedReader stdout = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = stdout.readLine()) != null) { + if (VERBOSE) { + System.out.println(line); + } if (line.startsWith("[Loaded ")) { int start = "[Loaded ".length(); int end = line.indexOf(' ', start); @@ -111,11 +122,15 @@ testCount = Integer.parseInt(line.substring(start, end)); } } + if (VERBOSE) { + System.out.println("-----------------------------------------------------------------------------"); + } - Assert.assertNotEquals("test count", 0, testCount); - Assert.assertEquals("exit code", 0, process.waitFor()); + String suffix = VERBOSE ? "" : " (use -D" + VERBOSE_PROPERTY + "=true to debug)"; + Assert.assertNotEquals("test count" + suffix, 0, testCount); + Assert.assertEquals("exit code" + suffix, 0, process.waitFor()); - checkAllowedGraalClasses(loadedGraalClasses); + checkAllowedGraalClasses(loadedGraalClasses, suffix); } private static boolean isGraalClass(String className) { @@ -127,7 +142,7 @@ } } - private void checkAllowedGraalClasses(List> loadedGraalClasses) { + private void checkAllowedGraalClasses(List> loadedGraalClasses, String errorMessageSuffix) { HashSet> whitelist = new HashSet<>(); /* @@ -152,7 +167,7 @@ } if (!isGraalClassAllowed(cls)) { - Assert.fail("loaded class: " + cls.getName()); + Assert.fail("loaded class: " + cls.getName() + errorMessageSuffix); } } } diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/DefaultLoopNodeFactory.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/DefaultLoopNodeFactory.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/DefaultLoopNodeFactory.java Wed Dec 30 18:08:59 2015 +0100 @@ -22,8 +22,7 @@ */ package com.oracle.graal.truffle; -import jdk.vm.ci.service.ServiceProvider; - +import com.oracle.graal.serviceprovider.ServiceProvider; import com.oracle.truffle.api.nodes.LoopNode; import com.oracle.truffle.api.nodes.RepeatingNode; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java Wed Dec 30 18:08:59 2015 +0100 @@ -49,7 +49,7 @@ import jdk.vm.ci.common.JVMCIError; import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.api.runtime.GraalRuntime; import com.oracle.graal.compiler.CompilerThreadFactory; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Wed Dec 30 18:08:59 2015 +0100 @@ -40,7 +40,7 @@ import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.meta.ResolvedJavaType; -import jdk.vm.ci.service.Services; +import jdk.vm.ci.services.Services; import com.oracle.graal.api.replacements.SnippetReflectionProvider; import com.oracle.graal.compiler.common.type.Stamp; diff -r 815f05c8dc0b -r 56359eb3abfa graal/com.oracle.nfi/src/com/oracle/nfi/NativeFunctionInterfaceRuntime.java --- a/graal/com.oracle.nfi/src/com/oracle/nfi/NativeFunctionInterfaceRuntime.java Tue Dec 29 13:23:02 2015 +0100 +++ b/graal/com.oracle.nfi/src/com/oracle/nfi/NativeFunctionInterfaceRuntime.java Wed Dec 30 18:08:59 2015 +0100 @@ -49,13 +49,17 @@ NativeFunctionInterfaceAccess access = null; Class servicesClass = null; try { - servicesClass = Class.forName("jdk.vm.ci.service.Services"); + servicesClass = Class.forName("jdk.vm.ci.services.Services"); } catch (ClassNotFoundException e) { try { - // Legacy support - servicesClass = Class.forName("com.oracle.jvmci.service.Services"); + servicesClass = Class.forName("jdk.vm.ci.service.Services"); } catch (ClassNotFoundException e2) { - // JVMCI is unavailable + try { + // Legacy support + servicesClass = Class.forName("com.oracle.jvmci.service.Services"); + } catch (ClassNotFoundException e3) { + // JVMCI is unavailable + } } } if (servicesClass != null) { diff -r 815f05c8dc0b -r 56359eb3abfa mx.graal/mx_graal_8.py --- a/mx.graal/mx_graal_8.py Tue Dec 29 13:23:02 2015 +0100 +++ b/mx.graal/mx_graal_8.py Wed Dec 30 18:08:59 2015 +0100 @@ -58,12 +58,18 @@ return vm class GraalJDKDeployedDist(JvmciJDKDeployedDist): - def __init__(self): - JvmciJDKDeployedDist.__init__(self, 'GRAAL_HOTSPOT', compilers=['graal-economy', 'graal']) + def __init__(self, name, compilers=False, updatesGraalProperties=False): + JvmciJDKDeployedDist.__init__(self, name, compilers=compilers) + self.updatesGraalProperties = updatesGraalProperties def deploy(self, jdkDir): JvmciJDKDeployedDist.deploy(self, jdkDir) - self._updateGraalPropertiesFile(join(jdkDir, 'jre', 'lib')) + if self.updatesGraalProperties: + self._updateGraalPropertiesFile(join(jdkDir, 'jre', 'lib')) + + def set_archiveparticipant(self): + dist = self.dist() + dist.set_archiveparticipant(GraalArchiveParticipant(dist)) def _updateGraalPropertiesFile(self, jreLibDir): """ @@ -87,14 +93,14 @@ fp.write(os.linesep.join(content)) jdkDeployedDists += [ - JvmciJDKDeployedDist('GRAAL_OPTIONS'), - JvmciJDKDeployedDist('GRAAL_NODEINFO'), - JvmciJDKDeployedDist('GRAAL_API'), - JvmciJDKDeployedDist('GRAAL_COMPILER'), - JvmciJDKDeployedDist('GRAAL_RUNTIME'), - GraalJDKDeployedDist(), - JvmciJDKDeployedDist('GRAAL_TRUFFLE'), - JvmciJDKDeployedDist('GRAAL_TRUFFLE_HOTSPOT'), + GraalJDKDeployedDist('GRAAL_OPTIONS'), + GraalJDKDeployedDist('GRAAL_NODEINFO'), + GraalJDKDeployedDist('GRAAL_API'), + GraalJDKDeployedDist('GRAAL_COMPILER'), + GraalJDKDeployedDist('GRAAL_RUNTIME'), + GraalJDKDeployedDist('GRAAL_HOTSPOT', compilers=['graal-economy', 'graal'], updatesGraalProperties=True), + GraalJDKDeployedDist('GRAAL_TRUFFLE'), + GraalJDKDeployedDist('GRAAL_TRUFFLE_HOTSPOT'), ] mx_gate.add_jacoco_includes(['com.oracle.graal.*']) @@ -423,6 +429,13 @@ JVMCIArchiveParticipant.__init__(self, dist) def __add__(self, arcname, contents): + if arcname.startswith('META-INF/providers/'): + # Handles files generated by ServiceProviderProcessor + provider = arcname[len('META-INF/providers/'):] + for service in contents.strip().split(os.linesep): + assert service + self.jvmciServices.setdefault(service, []).append(provider) + return True if arcname.endswith('_OptionDescriptors.class'): # Need to create service files for the providers of the # com.oracle.graal.options.Options service created by @@ -433,9 +446,3 @@ def mx_post_parse_cmd_line(opts): add_bootclasspath_prepend(mx.distribution('truffle:TRUFFLE_API')) - - for jdkDist in jdkDeployedDists: - dist = jdkDist.dist() - # Replace archive participant for Graal suites - if isinstance(jdkDist, JvmciJDKDeployedDist) and dist.suite.name != 'jvmci': - dist.set_archiveparticipant(GraalArchiveParticipant(dist)) diff -r 815f05c8dc0b -r 56359eb3abfa mx.graal/mx_graal_9.py --- a/mx.graal/mx_graal_9.py Tue Dec 29 13:23:02 2015 +0100 +++ b/mx.graal/mx_graal_9.py Wed Dec 30 18:08:59 2015 +0100 @@ -385,8 +385,8 @@ self.arc = arc def __add__(self, arcname, contents): - if arcname.startswith('META-INF/jvmci.providers/'): - provider = arcname[len('META-INF/jvmci.providers/'):] + if arcname.startswith('META-INF/providers/'): + provider = arcname[len('META-INF/providers/'):] for service in contents.strip().split(os.linesep): assert service self.services.setdefault(service, []).append(provider) diff -r 815f05c8dc0b -r 56359eb3abfa mx.graal/suite.py --- a/mx.graal/suite.py Tue Dec 29 13:23:02 2015 +0100 +++ b/mx.graal/suite.py Wed Dec 30 18:08:59 2015 +0100 @@ -31,7 +31,7 @@ return [s for s in l if not JDK9 or not s.get('name') == "jvmci"] suite = { - "mxversion" : "5.5.14", + "mxversion" : "5.6.7", "name" : "graal", "imports" : { @@ -39,7 +39,7 @@ { "name" : "jvmci", "optional" : "true", - "version" : "4cf1946f59fc4438eecdbe9ff25ed5388531d7b6", + "version" : "f2206f5bb62ed876e9fd031f4a5a148a0cc7b57b", "urls" : [ {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"}, @@ -47,7 +47,7 @@ }, { "name" : "truffle", - "version" : "828c67903db2d8db8b189804bd3d709de9a2aa1a", + "version" : "d725323deb6ce02dae7d727d558813160d229d16", "urls" : [ {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/truffle", "kind" : "hg"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"}, @@ -128,6 +128,23 @@ # ------------- Graal ------------- + "com.oracle.graal.serviceprovider" : { + "subDir" : "graal", + "sourceDirs" : ["src"], + "dependencies" : ["jvmci:JVMCI_SERVICES"], + "javaCompliance" : "1.8", + "workingSets" : "API,Graal", + }, + + "com.oracle.graal.serviceprovider.processor" : { + "subDir" : "graal", + "sourceDirs" : ["src"], + "dependencies" : ["com.oracle.graal.serviceprovider"], + "checkstyle" : "com.oracle.graal.graph", + "javaCompliance" : "1.8", + "workingSets" : "Graal,Codegen", + }, + "com.oracle.graal.options" : { "subDir" : "graal", "sourceDirs" : ["src"], @@ -168,7 +185,7 @@ "jvmci:JVMCI_API", "com.oracle.graal.options" ]), - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "javaCompliance" : "1.8", "workingSets" : "Graal,Debug", }, @@ -189,10 +206,10 @@ "subDir" : "graal", "sourceDirs" : ["src"], "dependencies" : deps([ - "jvmci:JVMCI_SERVICE", + "com.oracle.graal.serviceprovider", "jvmci:JVMCI_API", ]), - "annotationProcessors" : deps(["jvmci:JVMCI_SERVICE_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_SERVICEPROVIDER_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal", @@ -268,13 +285,13 @@ "com.oracle.graal.code", ]), "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_COMPILER_MATCH_PROCESSOR", "GRAAL_REPLACEMENTS_VERIFIER", "GRAAL_OPTIONS_PROCESSOR", - "jvmci:JVMCI_SERVICE_PROCESSOR", - ]), + "GRAAL_SERVICEPROVIDER_PROCESSOR", + ], "javaCompliance" : "1.8", "workingSets" : "Graal,HotSpot", }, @@ -288,10 +305,10 @@ "com.oracle.graal.replacements.aarch64", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ - "jvmci:JVMCI_SERVICE_PROCESSOR", + "annotationProcessors" : [ + "GRAAL_SERVICEPROVIDER_PROCESSOR", "GRAAL_NODEINFO_PROCESSOR" - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,HotSpot,AArch64", }, @@ -305,10 +322,10 @@ "com.oracle.graal.replacements.amd64", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ - "jvmci:JVMCI_SERVICE_PROCESSOR", + "annotationProcessors" : [ + "GRAAL_SERVICEPROVIDER_PROCESSOR", "GRAAL_NODEINFO_PROCESSOR" - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,HotSpot,AMD64", }, @@ -322,7 +339,7 @@ "com.oracle.graal.replacements.sparc", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps(["jvmci:JVMCI_SERVICE_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_SERVICEPROVIDER_PROCESSOR"], "javaCompliance" : "1.8", "workingSets" : "Graal,HotSpot,SPARC", }, @@ -394,10 +411,10 @@ "com.oracle.graal.api.collections", ], "javaCompliance" : "1.8", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", "GRAAL_NODEINFO_PROCESSOR" - ]), + ], "workingSets" : "Graal,Graph", }, @@ -509,7 +526,7 @@ "com.oracle.graal.compiler.common", "com.oracle.graal.asm", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,LIR", @@ -547,7 +564,7 @@ "com.oracle.graal.lir", "com.oracle.graal.asm.aarch64", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,LIR,AArch64", @@ -560,7 +577,7 @@ "com.oracle.graal.lir", "com.oracle.graal.asm.amd64", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,LIR,AMD64", @@ -599,11 +616,11 @@ ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", "GRAAL_REPLACEMENTS_VERIFIER", "GRAAL_NODEINFO_PROCESSOR", - ]), + ], "workingSets" : "Graal,Replacements", }, @@ -690,6 +707,7 @@ "com.oracle.graal.lir", "com.oracle.graal.bytecode", ], + "generatedDependencies" : ["com.oracle.graal.serviceprovider"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "annotationProcessors" : [ @@ -712,7 +730,7 @@ "subDir" : "graal", "sourceDirs" : ["src"], "dependencies" : ["com.oracle.graal.nodes"], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Phases", @@ -722,10 +740,10 @@ "subDir" : "graal", "sourceDirs" : ["src"], "dependencies" : ["com.oracle.graal.phases"], - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_OPTIONS_PROCESSOR" - ]), + ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Phases", @@ -748,10 +766,10 @@ "subDir" : "graal", "sourceDirs" : ["src"], "dependencies" : ["com.oracle.graal.phases.common"], - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", "GRAAL_NODEINFO_PROCESSOR" - ]), + ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Phases", @@ -786,7 +804,7 @@ "subDir" : "graal", "sourceDirs" : ["src"], "dependencies" : ["com.oracle.graal.nodes"], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal", @@ -799,7 +817,7 @@ "com.oracle.graal.loop", "com.oracle.graal.phases.common", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Phases", @@ -814,10 +832,10 @@ ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", - "annotationProcessors" : deps([ - "jvmci:JVMCI_SERVICE_PROCESSOR", + "annotationProcessors" : [ + "GRAAL_SERVICEPROVIDER_PROCESSOR", "GRAAL_OPTIONS_PROCESSOR", - ]), + ], "workingSets" : "Graal", }, @@ -841,10 +859,10 @@ "com.oracle.graal.java", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_COMPILER_MATCH_PROCESSOR", - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,AArch64", }, @@ -871,10 +889,10 @@ "com.oracle.graal.java", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_COMPILER_MATCH_PROCESSOR", - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,AMD64", }, @@ -901,10 +919,10 @@ "com.oracle.graal.java" ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_COMPILER_MATCH_PROCESSOR", - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,SPARC", }, @@ -936,7 +954,7 @@ "dependencies" : [ "com.oracle.graal.phases", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Java", @@ -948,7 +966,7 @@ "dependencies" : [ "com.oracle.graal.debug", ], - "annotationProcessors" : deps(["GRAAL_OPTIONS_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_OPTIONS_PROCESSOR"], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Java", @@ -962,10 +980,10 @@ "com.oracle.graal.java", "com.oracle.graal.compiler", ], - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", - "jvmci:JVMCI_SERVICE_PROCESSOR" - ]), + "GRAAL_SERVICEPROVIDER_PROCESSOR" + ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal,Graph", @@ -1025,13 +1043,13 @@ "com.oracle.graal.replacements", ], "checkstyle" : "com.oracle.graal.graph", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_NODEINFO_PROCESSOR", "GRAAL_REPLACEMENTS_VERIFIER", "GRAAL_OPTIONS_PROCESSOR", - "jvmci:JVMCI_SERVICE_PROCESSOR", + "GRAAL_SERVICEPROVIDER_PROCESSOR", "truffle:TRUFFLE_DSL_PROCESSOR", - ]), + ], "javaCompliance" : "1.8", "workingSets" : "Graal,Truffle", "jacoco" : "exclude", @@ -1065,10 +1083,10 @@ ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", - "jvmci:JVMCI_SERVICE_PROCESSOR" - ]), + "GRAAL_SERVICEPROVIDER_PROCESSOR" + ], "workingSets" : "Graal,Truffle", }, @@ -1081,9 +1099,9 @@ ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", - "annotationProcessors" : deps([ - "jvmci:JVMCI_SERVICE_PROCESSOR", - ]), + "annotationProcessors" : [ + "GRAAL_SERVICEPROVIDER_PROCESSOR", + ], "workingSets" : "Graal,Truffle", }, @@ -1096,7 +1114,7 @@ ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", - "annotationProcessors" : deps(["jvmci:JVMCI_SERVICE_PROCESSOR"]), + "annotationProcessors" : ["GRAAL_SERVICEPROVIDER_PROCESSOR"], "workingSets" : "Graal,Truffle,SPARC", }, @@ -1108,10 +1126,10 @@ "dependencies" : [ "com.oracle.graal.java", ], - "annotationProcessors" : deps([ + "annotationProcessors" : [ "GRAAL_OPTIONS_PROCESSOR", - "jvmci:JVMCI_SERVICE_PROCESSOR", - ]), + "GRAAL_SERVICEPROVIDER_PROCESSOR", + ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "workingSets" : "Graal", @@ -1168,6 +1186,7 @@ "exclude" : deps(["JVMCI"]), "distDependencies" : [ "GRAAL_API", + "GRAAL_SERVICEPROVIDER", ], }, @@ -1275,6 +1294,23 @@ ], }, + "GRAAL_SERVICEPROVIDER" : { + "subDir" : "graal", + "dependencies" : ["com.oracle.graal.serviceprovider"], + "distDependencies" : deps([ + "GRAAL_NODEINFO", + "jvmci:JVMCI_SERVICES" + ]), + }, + + "GRAAL_SERVICEPROVIDER_PROCESSOR" : { + "subDir" : "graal", + "dependencies" : ["com.oracle.graal.serviceprovider.processor"], + "distDependencies" : [ + "GRAAL_SERVICEPROVIDER", + ], + }, + "GRAAL_NODEINFO_PROCESSOR" : { "subDir" : "graal", "dependencies" : ["com.oracle.graal.nodeinfo.processor"], @@ -1288,7 +1324,8 @@ "dependencies" : ["com.oracle.graal.replacements.verifier"], "distDependencies" : deps([ "GRAAL_API", - "jvmci:JVMCI_SERVICE_PROCESSOR", + "GRAAL_SERVICEPROVIDER", + "GRAAL_SERVICEPROVIDER_PROCESSOR", ]) }, @@ -1297,7 +1334,7 @@ "dependencies" : ["com.oracle.graal.compiler.match.processor"], "distDependencies" : deps([ "GRAAL_COMPILER", - "jvmci:JVMCI_SERVICE_PROCESSOR", + "GRAAL_SERVICEPROVIDER_PROCESSOR", ]) }, },