Mercurial > hg > truffle
changeset 11494:96e4e5333a25
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Sat, 31 Aug 2013 09:18:58 +0200 |
parents | 94779c895aad (diff) 49bb1bc983c6 (current diff) |
children | 3662471dcfaa |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java |
diffstat | 16 files changed, 145 insertions(+), 108 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Sat Aug 31 09:18:58 2013 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.compiler; +import static com.oracle.graal.compiler.MethodFilter.*; import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -34,6 +35,7 @@ import com.oracle.graal.compiler.gen.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.debug.*; +import com.oracle.graal.debug.internal.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; import com.oracle.graal.nodes.*; @@ -52,6 +54,42 @@ */ public class GraalCompiler { + private static final DebugTimer FrontEnd = Debug.timer("FrontEnd"); + private static final DebugTimer BackEnd = Debug.timer("BackEnd"); + + private static final MethodFilter[] positiveIntrinsificationFilter; + private static final MethodFilter[] negativeIntrinsificationFilter; + static { + if (GraalDebugConfig.IntrinsificationsDisabled.getValue() != null) { + negativeIntrinsificationFilter = parse(GraalDebugConfig.IntrinsificationsDisabled.getValue()); + } else { + negativeIntrinsificationFilter = null; + } + + if (GraalDebugConfig.IntrinsificationsEnabled.getValue() != null) { + positiveIntrinsificationFilter = parse(GraalDebugConfig.IntrinsificationsEnabled.getValue()); + } else if (negativeIntrinsificationFilter != null) { + positiveIntrinsificationFilter = new MethodFilter[0]; + } else { + positiveIntrinsificationFilter = null; + } + } + + /** + * Determines if a given method should be intrinsified based on the values of + * {@link GraalDebugConfig#IntrinsificationsEnabled} and + * {@link GraalDebugConfig#IntrinsificationsDisabled}. + */ + public static boolean shouldIntrinsify(JavaMethod method) { + if (positiveIntrinsificationFilter == null) { + return true; + } + if (positiveIntrinsificationFilter.length == 0 || matches(positiveIntrinsificationFilter, method)) { + return negativeIntrinsificationFilter == null || !matches(negativeIntrinsificationFilter, method); + } + return false; + } + /** * Requests compilation of a given graph. * @@ -62,13 +100,9 @@ * argument can be null. * @return the result of the compilation */ - public static CompilationResult compileGraph(final StructuredGraph graph, final CallingConvention cc, - final ResolvedJavaMethod installedCodeOwner, final GraalCodeCacheProvider runtime, - final Replacements replacements, final Backend backend, - final TargetDescription target, final GraphCache cache, - final PhasePlan plan, final OptimisticOptimizations optimisticOpts, - final SpeculationLog speculationLog, final Suites suites, - final CompilationResult compilationResult) { + public static CompilationResult compileGraph(final StructuredGraph graph, final CallingConvention cc, final ResolvedJavaMethod installedCodeOwner, final GraalCodeCacheProvider runtime, + final Replacements replacements, final Backend backend, final TargetDescription target, final GraphCache cache, final PhasePlan plan, final OptimisticOptimizations optimisticOpts, + final SpeculationLog speculationLog, final Suites suites, final CompilationResult compilationResult) { Debug.scope("GraalCompiler", new Object[]{graph, runtime}, new Runnable() { public void run() { @@ -76,22 +110,26 @@ final LIR lir = Debug.scope("FrontEnd", new Callable<LIR>() { public LIR call() { - return emitHIR(runtime, target, graph, replacements, assumptions, cache, plan, optimisticOpts, speculationLog, suites); + try (TimerCloseable a = FrontEnd.start()) { + return emitHIR(runtime, target, graph, replacements, assumptions, cache, plan, optimisticOpts, speculationLog, suites); + } } }); - final LIRGenerator lirGen = Debug.scope("BackEnd", lir, new Callable<LIRGenerator>() { + try (TimerCloseable a = BackEnd.start()) { + final LIRGenerator lirGen = Debug.scope("BackEnd", lir, new Callable<LIRGenerator>() { - public LIRGenerator call() { - return emitLIR(backend, target, lir, graph, cc); - } - }); - Debug.scope("CodeGen", lirGen, new Runnable() { + public LIRGenerator call() { + return emitLIR(backend, target, lir, graph, cc); + } + }); + Debug.scope("CodeGen", lirGen, new Runnable() { - public void run() { - emitCode(backend, getLeafGraphIdArray(graph), assumptions, lirGen, compilationResult, installedCodeOwner); - } + public void run() { + emitCode(backend, getLeafGraphIdArray(graph), assumptions, lirGen, compilationResult, installedCodeOwner); + } - }); + }); + } } });
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java Sat Aug 31 09:18:58 2013 +0200 @@ -38,15 +38,15 @@ // @formatter:off @Option(help = "Enable scope-based debugging", name = "Debug") public static final OptionValue<Boolean> DebugEnabled = new OptionValue<>(true); - @Option(help = "Scopes to be dumped") + @Option(help = "Pattern for scope(s) to in which dumping is enabled (see DebugFilter and Debug.dump)") public static final OptionValue<String> Dump = new OptionValue<>(null); - @Option(help = "Scopes to be metered") + @Option(help = "Pattern for scope(s) to in which metering is enabled (see DebugFilter and Debug.metric)") public static final OptionValue<String> Meter = new OptionValue<>(null); - @Option(help = "Scopes to be timed") + @Option(help = "Pattern for scope(s) to in which timing is enabled (see DebugFilter and Debug.timer)") public static final OptionValue<String> Time = new OptionValue<>(null); - @Option(help = "Scopes to be logged") + @Option(help = "Pattern for scope(s) to in which logging is enabled (see DebugFilter and Debug.log)") public static final OptionValue<String> Log = new OptionValue<>(null); - @Option(help = "Filters debug scope output by method name/pattern") + @Option(help = "Pattern for filtering debug scope output based on method context (see MethodFilter)") public static final OptionValue<String> MethodFilter = new OptionValue<>(null); @Option(help = "How to print metric and timing values:%n" + "Name - aggregate by unqualified name%n" + @@ -66,6 +66,19 @@ return enabled; } }; + /** + * @see MethodFilter + */ + @Option(help = "Pattern for method(s) to which intrinsification (if available) will be applied. " + + "By default, all available intrinsifications are applied except for methods matched " + + "by IntrinsificationsDisabled. See MethodFilter class for pattern syntax.") + public static final OptionValue<String> IntrinsificationsEnabled = new OptionValue<>(null); + /** + * @see MethodFilter + */ + @Option(help = "Pattern for method(s) to which intrinsification will not be applied. " + + "See MethodFilter class for pattern syntax.") + public static final OptionValue<String> IntrinsificationsDisabled = new OptionValue<>("Object.clone"); // @formatter:on private final DebugFilter logFilter; @@ -85,11 +98,7 @@ if (methodFilter == null || methodFilter.isEmpty()) { this.methodFilter = null; } else { - String[] filters = methodFilter.split(","); - this.methodFilter = new MethodFilter[filters.length]; - for (int i = 0; i < filters.length; i++) { - this.methodFilter[i] = new MethodFilter(filters[i]); - } + this.methodFilter = com.oracle.graal.compiler.MethodFilter.parse(methodFilter); } // Report the filters that have been configured so the user can verify it's what they expect @@ -156,10 +165,8 @@ } else if (methodFilter != null) { JavaMethod method = asJavaMethod(o); if (method != null) { - for (MethodFilter filter : methodFilter) { - if (filter.matches(method)) { - return true; - } + if (com.oracle.graal.compiler.MethodFilter.matches(methodFilter, method)) { + return true; } } }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/MethodFilter.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/MethodFilter.java Sat Aug 31 09:18:58 2013 +0200 @@ -88,6 +88,31 @@ private final Pattern methodName; private final Pattern[] signature; + /** + * Parses a string containing list of comma separated filter patterns into an array of + * {@link MethodFilter}s. + */ + public static MethodFilter[] parse(String commaSeparatedPatterns) { + String[] filters = commaSeparatedPatterns.split(","); + MethodFilter[] methodFilters = new MethodFilter[filters.length]; + for (int i = 0; i < filters.length; i++) { + methodFilters[i] = new MethodFilter(filters[i]); + } + return methodFilters; + } + + /** + * Determines if a given method is matched by a given array of filters. + */ + public static boolean matches(MethodFilter[] filters, JavaMethod method) { + for (MethodFilter filter : filters) { + if (filter.matches(method)) { + return true; + } + } + return false; + } + public MethodFilter(String sourcePattern) { String pattern = sourcePattern.trim();
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Sat Aug 31 09:18:58 2013 +0200 @@ -26,7 +26,8 @@ import java.util.*; import com.oracle.graal.graph.Graph.NodeChangedListener; -import com.oracle.graal.graph.NodeClass.*; +import com.oracle.graal.graph.NodeClass.NodeClassIterator; +import com.oracle.graal.graph.NodeClass.Position; import com.oracle.graal.graph.iterators.*; /**
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Sat Aug 31 09:18:58 2013 +0200 @@ -113,6 +113,8 @@ */ public static final DebugTimer CompilationTime = Debug.timer("CompilationTime"); + public static final DebugTimer CodeInstallationTime = Debug.timer("CodeInstallation"); + public void runCompilation() { /* * no code must be outside this try/finally because it could happen otherwise that @@ -164,7 +166,9 @@ } } - installMethod(result); + try (TimerCloseable b = CodeInstallationTime.start()) { + installMethod(result); + } stats.finish(method); } catch (BailoutException bailout) { Debug.metric("Bailouts").increment();
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Sat Aug 31 09:18:58 2013 +0200 @@ -313,31 +313,15 @@ linkForeignCall(r, G1WBPOSTCALL, c.writeBarrierPostAddress, PREPEND_THREAD, LEAF, REEXECUTABLE, NO_LOCATIONS); linkForeignCall(r, VALIDATE_OBJECT, c.validateObject, PREPEND_THREAD, LEAF, REEXECUTABLE, NO_LOCATIONS); - if (IntrinsifyObjectMethods.getValue()) { - r.registerSubstitutions(ObjectSubstitutions.class); - } - if (IntrinsifySystemMethods.getValue()) { - r.registerSubstitutions(SystemSubstitutions.class); - } - if (IntrinsifyThreadMethods.getValue()) { - r.registerSubstitutions(ThreadSubstitutions.class); - } - if (IntrinsifyUnsafeMethods.getValue()) { - r.registerSubstitutions(UnsafeSubstitutions.class); - } - if (IntrinsifyClassMethods.getValue()) { - r.registerSubstitutions(ClassSubstitutions.class); - } - if (IntrinsifyAESMethods.getValue()) { - r.registerSubstitutions(AESCryptSubstitutions.class); - r.registerSubstitutions(CipherBlockChainingSubstitutions.class); - } - if (IntrinsifyCRC32Methods.getValue()) { - r.registerSubstitutions(CRC32Substitutions.class); - } - if (IntrinsifyReflectionMethods.getValue()) { - r.registerSubstitutions(ReflectionSubstitutions.class); - } + r.registerSubstitutions(ObjectSubstitutions.class); + r.registerSubstitutions(SystemSubstitutions.class); + r.registerSubstitutions(ThreadSubstitutions.class); + r.registerSubstitutions(UnsafeSubstitutions.class); + r.registerSubstitutions(ClassSubstitutions.class); + r.registerSubstitutions(AESCryptSubstitutions.class); + r.registerSubstitutions(CipherBlockChainingSubstitutions.class); + r.registerSubstitutions(CRC32Substitutions.class); + r.registerSubstitutions(ReflectionSubstitutions.class); checkcastDynamicSnippets = new CheckCastDynamicSnippets.Templates(this, r, graalRuntime.getTarget()); instanceofSnippets = new InstanceOfSnippets.Templates(this, r, graalRuntime.getTarget());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Sat Aug 31 09:18:58 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.phases.GraalOptions.*; +import static com.oracle.graal.compiler.GraalCompiler.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; @@ -93,7 +93,7 @@ @Override protected StructuredGraph getSnippetGraph(LoweringTool tool) { - if (!IntrinsifyArrayCopy.getValue()) { + if (!shouldIntrinsify(getTargetMethod())) { return null; }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteSubstitutions.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteSubstitutions.java Sat Aug 31 09:18:58 2013 +0200 @@ -22,8 +22,6 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.phases.GraalOptions.*; - import java.lang.invoke.*; import com.oracle.graal.api.code.*; @@ -37,11 +35,9 @@ @Override public void registerReplacements(MetaAccessProvider runtime, Replacements replacements, TargetDescription target) { - if (IntrinsifyCallSiteTarget.getValue()) { - replacements.registerSubstitutions(ConstantCallSiteSubstitutions.class); - replacements.registerSubstitutions(MutableCallSiteSubstitutions.class); - replacements.registerSubstitutions(VolatileCallSiteSubstitutions.class); - } + replacements.registerSubstitutions(ConstantCallSiteSubstitutions.class); + replacements.registerSubstitutions(MutableCallSiteSubstitutions.class); + replacements.registerSubstitutions(VolatileCallSiteSubstitutions.class); } @ClassSubstitution(ConstantCallSite.class)
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Sat Aug 31 09:18:58 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.phases.GraalOptions.*; +import static com.oracle.graal.compiler.GraalCompiler.*; import java.lang.reflect.*; @@ -52,7 +52,7 @@ @Override protected StructuredGraph getSnippetGraph(LoweringTool tool) { - if (!IntrinsifyObjectClone.getValue()) { + if (!shouldIntrinsify(getTargetMethod())) { return null; }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Sat Aug 31 09:18:58 2013 +0200 @@ -22,7 +22,7 @@ */ package com.oracle.graal.hotspot.replacements; -import static com.oracle.graal.phases.GraalOptions.*; +import static com.oracle.graal.compiler.GraalCompiler.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; @@ -65,7 +65,7 @@ * @return ConstantNode of the caller class, or null */ private ConstantNode getCallerClassNode(MetaAccessProvider runtime) { - if (!IntrinsifyReflectionMethods.getValue()) { + if (!shouldIntrinsify(getTargetMethod())) { return null; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java Sat Aug 31 09:18:58 2013 +0200 @@ -25,6 +25,7 @@ import java.lang.annotation.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.debug.*; import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; import com.oracle.graal.lir.LIRInstruction.ValueProcedure; @@ -45,8 +46,11 @@ private final CompositeValueClass valueClass; + private static final DebugMetric COMPOSITE_VALUE_COUNT = Debug.metric("CompositeValues"); + public CompositeValue(PlatformKind kind) { super(kind); + COMPOSITE_VALUE_COUNT.increment(); valueClass = CompositeValueClass.get(getClass()); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Sat Aug 31 09:18:58 2013 +0200 @@ -30,6 +30,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.lir.asm.*; @@ -211,10 +212,13 @@ */ private int id; + private static final DebugMetric LIR_NODE_COUNT = Debug.metric("LIRNodes"); + /** * Constructs a new LIR instruction. */ public LIRInstruction() { + LIR_NODE_COUNT.increment(); instructionClass = LIRInstructionClass.get(getClass()); id = -1; }
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Sat Aug 31 09:18:58 2013 +0200 @@ -89,12 +89,12 @@ @Option(help = "") public static final OptionValue<Integer> DeoptsToDisableOptimisticOptimization = new OptionValue<>(40); - // comilation queue - @Option(help = "") + // compilation queue + @Option(help = "Compile all methods in all classes on given class path") public static final OptionValue<String> CompileTheWorld = new OptionValue<>(null); - @Option(help = "") + @Option(help = "First class to consider when using CompileTheWorld") public static final OptionValue<Integer> CompileTheWorldStartAt = new OptionValue<>(1); - @Option(help = "") + @Option(help = "Last class to consider when using CompileTheWorld") public static final OptionValue<Integer> CompileTheWorldStopAt = new OptionValue<>(Integer.MAX_VALUE); // graph caching @@ -290,33 +290,6 @@ @Option(help = "") public static final OptionValue<Boolean> OptPushThroughPi = new OptionValue<>(true); - // Intrinsification settings - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyObjectClone = new OptionValue<>(false); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyArrayCopy = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyObjectMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifySystemMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyClassMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyThreadMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyUnsafeMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyMathMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyAESMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyCRC32Methods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyReflectionMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyInstalledCodeMethods = new OptionValue<>(true); - @Option(help = "") - public static final OptionValue<Boolean> IntrinsifyCallSiteTarget = new OptionValue<>(true); /** * Counts the various paths taken through snippets.
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Fri Aug 30 16:39:05 2013 -0400 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Sat Aug 31 09:18:58 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.replacements; import static com.oracle.graal.api.meta.MetaUtil.*; +import static com.oracle.graal.compiler.GraalCompiler.*; import static com.oracle.graal.phases.GraalOptions.*; import java.lang.reflect.*; @@ -138,7 +139,7 @@ Member originalMethod = originalMethod(classSubstitution, methodSubstitution.optional(), originalName, originalParameters); if (originalMethod != null) { ResolvedJavaMethod original = registerMethodSubstitution(originalMethod, substituteMethod); - if (original != null && methodSubstitution.forced()) { + if (original != null && methodSubstitution.forced() && shouldIntrinsify(original)) { forcedSubstitutions.add(original); } } @@ -149,7 +150,7 @@ Member originalMethod = originalMethod(classSubstitution, macroSubstitution.optional(), originalName, originalParameters); if (originalMethod != null) { ResolvedJavaMethod original = registerMacroSubstitution(originalMethod, macroSubstitution.macro()); - if (original != null && macroSubstitution.forced()) { + if (original != null && macroSubstitution.forced() && shouldIntrinsify(original)) { forcedSubstitutions.add(original); } }
--- a/mx/commands.py Fri Aug 30 16:39:05 2013 -0400 +++ b/mx/commands.py Sat Aug 31 09:18:58 2013 +0200 @@ -286,7 +286,7 @@ with VM(vm, bld): build([]) return - mx.abort('You need to run "mx --vm ' + vm + '--vmbuild ' + bld + ' build" to build the selected VM') + mx.abort('You need to run "mx --vm ' + vm + ' --vmbuild ' + bld + ' build" to build the selected VM') def _jdk(build='product', vmToCheck=None, create=False, installGraalJar=True): """ @@ -1358,7 +1358,7 @@ mx.add_argument('--vmcwd', dest='vm_cwd', help='current directory will be changed to <path> before the VM is executed', default=None, metavar='<path>') mx.add_argument('--installed-jdks', help='the base directory in which the JDKs cloned from $JAVA_HOME exist. ' + 'The VM selected by --vm and --vmbuild options is under this directory (i.e., ' + - join('<path>', '<vmbuild>', 'jre', 'lib', '<vm>', mx.add_lib_prefix(mx.add_lib_suffix('jvm'))) + ')', default=None, metavar='<path>') + join('<path>', '<jdk-version>', '<vmbuild>', 'jre', 'lib', '<vm>', mx.add_lib_prefix(mx.add_lib_suffix('jvm'))) + ')', default=None, metavar='<path>') if (_vmSourcesAvailable): mx.add_argument('--vm', action='store', dest='vm', choices=_vmChoices.keys(), help='the VM type to build/run')
--- a/mx/projects Fri Aug 30 16:39:05 2013 -0400 +++ b/mx/projects Sat Aug 31 09:18:58 2013 +0200 @@ -288,7 +288,7 @@ # graal.nodes project@com.oracle.graal.nodes@subDir=graal project@com.oracle.graal.nodes@sourceDirs=src -project@com.oracle.graal.nodes@dependencies=com.oracle.graal.api.code,com.oracle.graal.graph,com.oracle.graal.debug,com.oracle.graal.api.replacements +project@com.oracle.graal.nodes@dependencies=com.oracle.graal.graph,com.oracle.graal.debug,com.oracle.graal.api.replacements,com.oracle.graal.api.code project@com.oracle.graal.nodes@checkstyle=com.oracle.graal.graph project@com.oracle.graal.nodes@javaCompliance=1.7 project@com.oracle.graal.nodes@workingSets=Graal,Graph