# HG changeset patch # User Thomas Wuerthinger # Date 1379457499 -7200 # Node ID e9cf2b37c71318e314ef16dad336492411b298fa # Parent 226ef8ab5bc08d86b23f120e871d581bf0c3ae41# Parent 0d3b767e5356af23d0ef3b5d00190ad085400be8 Merge. diff -r 226ef8ab5bc0 -r e9cf2b37c713 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ConditionalEliminationTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ConditionalEliminationTest.java Wed Sep 18 00:15:35 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ConditionalEliminationTest.java Wed Sep 18 00:38:19 2013 +0200 @@ -195,7 +195,7 @@ new CanonicalizerPhase(true).apply(graph, new PhaseContext(runtime(), null, replacements)); new ConditionalEliminationPhase(runtime()).apply(graph); - InvokeNode invoke = graph.getNodes(InvokeNode.class).first(); + InvokeNode invoke = graph.getNodes().filter(InvokeNode.class).first(); assertEquals(InvokeKind.Special, ((MethodCallTargetNode) invoke.callTarget()).invokeKind()); } diff -r 226ef8ab5bc0 -r e9cf2b37c713 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java Wed Sep 18 00:15:35 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java Wed Sep 18 00:38:19 2013 +0200 @@ -48,6 +48,7 @@ public static final OptionValue MethodFilter = new OptionValue<>(null); @Option(help = "How to print metric and timing values:%n" + "Name - aggregate by unqualified name%n" + + "CSV - aggregate by unqualified name and write to .csv files (e.g., for importing to R with read.csv)%n" + "Partial - aggregate by partially qualified name (e.g., A.B.C.D.Counter and X.Y.Z.D.Counter will be merged to D.Counter)%n" + "Complete - aggregate by qualified name%n" + "Thread - aggregate by qualified name and thread") diff -r 226ef8ab5bc0 -r e9cf2b37c713 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Wed Sep 18 00:15:35 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Wed Sep 18 00:38:19 2013 +0200 @@ -237,10 +237,10 @@ Debug.dump(builder.graph, "Initial stub graph"); } - for (InvokeNode invoke : builder.graph.getNodes(InvokeNode.class).snapshot()) { + for (InvokeNode invoke : builder.graph.getNodes().filter(InvokeNode.class).snapshot()) { inline(invoke); } - assert builder.graph.getNodes(InvokeNode.class).isEmpty(); + assert builder.graph.getNodes().filter(InvokeNode.class).isEmpty(); if (Debug.isDumpEnabled()) { Debug.dump(builder.graph, "Stub graph before compilation"); diff -r 226ef8ab5bc0 -r e9cf2b37c713 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Wed Sep 18 00:15:35 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Wed Sep 18 00:38:19 2013 +0200 @@ -35,7 +35,7 @@ * The {@code InvokeNode} represents all kinds of method calls. */ @NodeInfo(nameTemplate = "Invoke#{p#targetMethod/s}") -public final class InvokeNode extends AbstractStateSplit implements StateSplit, IterableNodeType, Invoke, LIRLowerable, MemoryCheckpoint.Single { +public final class InvokeNode extends AbstractStateSplit implements StateSplit, Invoke, LIRLowerable, MemoryCheckpoint.Single { @Input private CallTargetNode callTarget; @Input private FrameState deoptState; diff -r 226ef8ab5bc0 -r e9cf2b37c713 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Wed Sep 18 00:15:35 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Wed Sep 18 00:38:19 2013 +0200 @@ -110,7 +110,7 @@ } protected void replaceSnippetInvokes(StructuredGraph snippetGraph) { - for (InvokeNode invoke : snippetGraph.getNodes(InvokeNode.class)) { + for (InvokeNode invoke : snippetGraph.getNodes().filter(InvokeNode.class)) { if (((MethodCallTargetNode) invoke.callTarget()).targetMethod() != getTargetMethod()) { throw new GraalInternalError("unexpected invoke %s in snippet", getClass().getSimpleName()); } diff -r 226ef8ab5bc0 -r e9cf2b37c713 mxtool/mx.py --- a/mxtool/mx.py Wed Sep 18 00:15:35 2013 +0200 +++ b/mxtool/mx.py Wed Sep 18 00:38:19 2013 +0200 @@ -460,6 +460,9 @@ path = self.path if not isabs(path): path = join(self.suite.dir, path) + includedInJDK = getattr(self, 'includedInJDK', None) + if includedInJDK and java().javaCompliance >= JavaCompliance(includedInJDK): + return None if resolve and self.mustExist and not exists(path): assert not len(self.urls) == 0, 'cannot find required library ' + self.name + ' ' + path print('Downloading ' + self.name + ' from ' + str(self.urls)) @@ -479,7 +482,7 @@ def append_to_classpath(self, cp, resolve): path = self.get_path(resolve) - if exists(path) or not resolve: + if path and (exists(path) or not resolve): cp.append(path) def all_deps(self, deps, includeLibs, includeSelf=True, includeAnnotationProcessors=False): @@ -1885,16 +1888,17 @@ # merge library jar into distribution jar logv('[' + d.path + ': adding library ' + l.name + ']') lpath = l.get_path(resolve=True) - with zipfile.ZipFile(lpath, 'r') as lp: - for arcname in lp.namelist(): - if arcname.startswith('META-INF/services/'): - f = arcname[len('META-INF/services/'):].replace('/', os.sep) - with open(join(services, f), 'a') as outfile: - for line in lp.read(arcname).splitlines(): - outfile.write(line) - else: - overwriteCheck(zf, arcname, lpath + '!' + arcname) - zf.writestr(arcname, lp.read(arcname)) + if lpath: + with zipfile.ZipFile(lpath, 'r') as lp: + for arcname in lp.namelist(): + if arcname.startswith('META-INF/services/') and not arcname == 'META-INF/services/': + f = arcname[len('META-INF/services/'):].replace('/', os.sep) + with open(join(services, f), 'a') as outfile: + for line in lp.read(arcname).splitlines(): + outfile.write(line) + else: + overwriteCheck(zf, arcname, lpath + '!' + arcname) + zf.writestr(arcname, lp.read(arcname)) else: p = dep # skip a Java project if its Java compliance level is "higher" than the configured JDK @@ -2438,7 +2442,7 @@ else: path = dep.path dep.get_path(resolve=True) - if not exists(path) and not dep.mustExist: + if not path or (not exists(path) and not dep.mustExist): continue if not isabs(path): @@ -2554,19 +2558,20 @@ if len(p.annotation_processors()) > 0: out = XMLDoc() out.open('factorypath') - out.element('factorypathentry', {'kind' : 'PLUGIN', 'id' : 'org.eclipse.jst.ws.annotations.core', 'enabled' : 'true', 'runInBatchMode' : 'false'}) + out.element('factorypathentry', {'kind' : 'PLUGIN', 'id' : 'org.eclipset.ws.annotations.core', 'enabled' : 'true', 'runInBatchMode' : 'false'}) for ap in p.annotation_processors(): for dep in dependency(ap).all_deps([], True): if dep.isLibrary(): if not hasattr(dep, 'eclipse.container') and not hasattr(dep, 'eclipse.project'): if dep.mustExist: path = dep.get_path(resolve=True) - if not isabs(path): - # Relative paths for "lib" class path entries have various semantics depending on the Eclipse - # version being used (e.g. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737) so it's - # safest to simply use absolute paths. - path = join(p.suite.dir, path) - out.element('factorypathentry', {'kind' : 'EXTJAR', 'id' : path, 'enabled' : 'true', 'runInBatchMode' : 'false'}) + if path: + if not isabs(path): + # Relative paths for "lib" class path entries have various semantics depending on the Eclipse + # version being used (e.g. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737) so it's + # safest to simply use absolute paths. + path = join(p.suite.dir, path) + out.element('factorypathentry', {'kind' : 'EXTJAR', 'id' : path, 'enabled' : 'true', 'runInBatchMode' : 'false'}) else: out.element('factorypathentry', {'kind' : 'WKSPJAR', 'id' : '/' + dep.name + '/' + dep.name + '.jar', 'enabled' : 'true', 'runInBatchMode' : 'false'}) out.close('factorypath') @@ -2950,10 +2955,11 @@ if not dep.mustExist: continue path = dep.get_path(resolve=True) - if os.sep == '\\': - path = path.replace('\\', '\\\\') - ref = 'file.reference.' + dep.name + '-bin' - print >> out, ref + '=' + path + if path: + if os.sep == '\\': + path = path.replace('\\', '\\\\') + ref = 'file.reference.' + dep.name + '-bin' + print >> out, ref + '=' + path else: n = dep.name.replace('.', '_')