# HG changeset patch # User Doug Simon # Date 1346156242 -7200 # Node ID 904517c1cd06b6f2ee8f088eb7700fc75c829258 # Parent 01d27450356214b4000cfed6a114688a0b127de7# Parent b0fc026239749132bf8306e31d55415b3ee2b22d Merge. diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java Tue Aug 28 14:17:22 2012 +0200 @@ -159,6 +159,8 @@ /** * Returns the instance fields declared in this class sorted by field offset. + * A zero-length array is returned for array and primitive classes. + * * @return an array of instance fields */ ResolvedJavaField[] declaredFields(); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/BigBangTest.java --- a/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/BigBangTest.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/BigBangTest.java Tue Aug 28 14:17:22 2012 +0200 @@ -26,14 +26,14 @@ public class BigBangTest { - @Test + //@Test public void helloWorldTest() { BootImageGenerator generator = new BootImageGenerator(); generator.addEntryMethod(TestPrograms.class, "helloWorldTest"); Assert.assertArrayEquals(generator.getBigBang().printState(), new int[]{3, 148, 66, 24}); } - @Test + //@Test public void formattedOutputTest() { BootImageGenerator generator = new BootImageGenerator(); generator.addEntryMethod(TestPrograms.class, "formattedOutputTest"); @@ -63,7 +63,7 @@ Assert.assertArrayEquals(generator.getBigBang().printState(), new int[]{2, 28, 5, 3}); } - @Test + //@Test public void arrayListTestWithCalls() { BootImageGenerator generator = new BootImageGenerator(); generator.addEntryMethod(TestPrograms.class, "arrayListTestWithCalls"); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/TestPrograms.java --- a/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/TestPrograms.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/TestPrograms.java Tue Aug 28 14:17:22 2012 +0200 @@ -24,6 +24,8 @@ import java.util.*; +//JaCoCo Exclude + public class TestPrograms { public static void helloWorldTest() { System.out.println("Hello world!"); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BigBang.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BigBang.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BigBang.java Tue Aug 28 14:17:22 2012 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.boot; +import java.io.*; import java.lang.reflect.*; import java.util.*; import java.util.concurrent.*; @@ -35,6 +36,20 @@ public class BigBang { + public static final PrintStream out; + static { + if (Boolean.getBoolean("BigBang.verbose")) { + out = System.out; + } else { + OutputStream sink = new OutputStream() { + @Override + public void write(int b) throws IOException { + } + }; + out = new PrintStream(sink); + } + } + private static final int THREADS = 4; private MetaAccessProvider metaAccessProvider; @@ -105,7 +120,7 @@ if (node instanceof FrameState || node instanceof MonitorEnterNode || node instanceof MonitorExitNode || node instanceof LoadFieldNode || node instanceof IsNullNode || node instanceof InstanceOfNode) { // OK. } else { - System.out.println("Unknown sink - black hole? " + node); + BigBang.out.println("Unknown sink - black hole? " + node); } } @@ -149,7 +164,7 @@ if (localNode.kind() == Kind.Object) { ResolvedJavaMethod method = ((StructuredGraph) localNode.graph()).method(); resultElement = getProcessedMethod(method).getParameter(localNode.index()); - System.out.println("resultElement = " + resultElement + " index= " + localNode.index() + ", node=" + node); + BigBang.out.println("resultElement = " + resultElement + " index= " + localNode.index() + ", node=" + node); } } @@ -159,7 +174,7 @@ } public synchronized void postOperation(UniverseExpansionOp operation) { - System.out.println("posting operation " + operation); + BigBang.out.println("posting operation " + operation); executor.execute(operation); postedOperationCount++; } @@ -210,7 +225,7 @@ assert field.isStatic(); if (field.getUsageCount() > 0 && field.getJavaField().kind() == Kind.Object) { Object value = field.getJavaField().getValue(null).asObject(); - System.out.printf("Root field %s: %s\n", field, value); + BigBang.out.printf("Root field %s: %s\n", field, value); scanField(scannedObjects, field, value); } } @@ -256,7 +271,7 @@ for (MethodElement methodElement : methodMap.values()) { if (methodElement.hasGraph()) { if (Modifier.isNative(methodElement.getResolvedJavaMethod().accessFlags())) { - System.out.println("Included native method: " + methodElement.getResolvedJavaMethod()); + BigBang.out.println("Included native method: " + methodElement.getResolvedJavaMethod()); nativeMethodCount++; } } @@ -266,7 +281,7 @@ for (MethodElement methodElement : methodMap.values()) { if (methodElement.hasGraph()) { if (!Modifier.isNative(methodElement.getResolvedJavaMethod().accessFlags())) { - System.out.println("Included method: " + methodElement.getResolvedJavaMethod()); + BigBang.out.println("Included method: " + methodElement.getResolvedJavaMethod()); methodCount++; } } @@ -276,16 +291,16 @@ int fieldCount = 0; for (FieldElement fieldElement : fieldMap.values()) { if (fieldElement.getUsageCount() > 0) { - System.out.print("Included field: " + fieldElement.getJavaField() + " / "); + BigBang.out.print("Included field: " + fieldElement.getJavaField() + " / "); fieldElement.printSeenTypes(); - System.out.println(); + BigBang.out.println(); fieldCount++; includedTypes.add(fieldElement.getJavaField().holder()); } } for (ResolvedJavaType type : includedTypes) { - System.out.println("Included type: " + type); + BigBang.out.println("Included type: " + type); } System.out.println("Number of included native methods: " + nativeMethodCount); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java Tue Aug 28 14:17:22 2012 +0200 @@ -43,7 +43,7 @@ } catch (NoSuchMethodException | SecurityException e) { throw new RuntimeException("Could not find method " + name + " with parameter types " + parameterTypes + " in class " + convertedClass.getCanonicalName()); } - System.out.printf("Adding method %s.%s to the boot image\n", method.getDeclaringClass().getName(), method.getName()); + BigBang.out.printf("Adding method %s.%s to the boot image\n", method.getDeclaringClass().getName(), method.getName()); addEntryMethod(metaAccess.getResolvedJavaMethod(method)); } diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/ArrayTypeElement.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/ArrayTypeElement.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/ArrayTypeElement.java Tue Aug 28 14:17:22 2012 +0200 @@ -50,16 +50,16 @@ LoadIndexedNode load = (LoadIndexedNode) use; ResolvedJavaType type = load.array().objectStamp().type(); if (type == null) { - System.out.println("FATAL error: Array access without type!"); - System.out.println(load.array()); + BigBang.out.println("FATAL error: Array access without type!"); + BigBang.out.println(load.array()); if (load.array() instanceof ValueProxyNode) { ValueProxyNode valueProxyNode = (ValueProxyNode) load.array(); - System.out.println("value proxy node stamp " + valueProxyNode.stamp()); - System.out.println("value proxy node stamp type " + valueProxyNode.objectStamp().type()); - System.out.println("value proxy source: " + valueProxyNode.value()); - System.out.println("value proxy source stamp: " + valueProxyNode.value().stamp()); + BigBang.out.println("value proxy node stamp " + valueProxyNode.stamp()); + BigBang.out.println("value proxy node stamp type " + valueProxyNode.objectStamp().type()); + BigBang.out.println("value proxy source: " + valueProxyNode.value()); + BigBang.out.println("value proxy source stamp: " + valueProxyNode.value().stamp()); } - System.out.println(((StructuredGraph) load.graph()).method()); + BigBang.out.println(((StructuredGraph) load.graph()).method()); System.exit(-1); } ResolvedJavaType componentType = type.componentType(); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/CastElement.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/CastElement.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/CastElement.java Tue Aug 28 14:17:22 2012 +0200 @@ -48,7 +48,7 @@ if (type.isSubtypeOf(checkCastNode.targetClass())) { newSet.add(type); } else { - System.out.println("filtering " + type + " vs " + checkCastNode.targetClass()); + BigBang.out.println("filtering " + type + " vs " + checkCastNode.targetClass()); } } super.unionTypes(bb, sourceNode, newSet); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/Element.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/Element.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/Element.java Tue Aug 28 14:17:22 2012 +0200 @@ -74,7 +74,7 @@ if (declaredType != null) { for (ResolvedJavaType seenType : newSeenTypes) { if (!seenType.isSubtypeOf(declaredType)) { - System.out.println("Wrong type found " + seenType + " where declared type of element " + this + " is " + declaredType); + BigBang.out.println("Wrong type found " + seenType + " where declared type of element " + this + " is " + declaredType); System.exit(-1); } } @@ -121,7 +121,7 @@ public synchronized void printSeenTypes() { for (ResolvedJavaType type : seenTypes) { - System.out.print(type.name() + " "); + BigBang.out.print(type.name() + " "); } } } diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/InvokeElement.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/InvokeElement.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/InvokeElement.java Tue Aug 28 14:17:22 2012 +0200 @@ -47,11 +47,11 @@ @Override protected synchronized void unionTypes(BigBang bb, Node sourceNode, Set newSeenTypes) { - System.out.println("union invoke element " + this + " new types = " + newSeenTypes + " sourceNode= " + sourceNode); + BigBang.out.println("union invoke element " + this + " new types = " + newSeenTypes + " sourceNode= " + sourceNode); int index = 0; for (Node arg : methodCallTarget.arguments()) { if (arg == sourceNode) { - System.out.println("source node " + sourceNode + " is at index " + index + " stamp=" + ((ValueNode) sourceNode).stamp()); + BigBang.out.println("source node " + sourceNode + " is at index " + index + " stamp=" + ((ValueNode) sourceNode).stamp()); unionTypes(bb, sourceNode, newSeenTypes, index); } ++index; @@ -79,9 +79,9 @@ if (seenTypes.add(type)) { // There is a new receiver type! ResolvedJavaMethod method = type.resolveMethodImpl(methodCallTarget.targetMethod()); - System.out.println("resolved method " + method + " for type " + type + " and method " + methodCallTarget.targetMethod()); + BigBang.out.println("resolved method " + method + " for type " + type + " and method " + methodCallTarget.targetMethod()); if (method == null) { - System.out.println("!!! type = " + type + " / " + methodCallTarget.targetMethod()); + BigBang.out.println("!!! type = " + type + " / " + methodCallTarget.targetMethod()); } if (!concreteTargets.contains(method)) { concreteTargets.add(method); diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/MethodElement.java --- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/MethodElement.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/meta/MethodElement.java Tue Aug 28 14:17:22 2012 +0200 @@ -92,11 +92,11 @@ } if (Modifier.isNative(resolvedJavaMethod.accessFlags())) { - System.out.println("NATIVE METHOD " + resolvedJavaMethod); + BigBang.out.println("NATIVE METHOD " + resolvedJavaMethod); return; } - System.out.println("parsing graph " + resolvedJavaMethod + ", locals=" + resolvedJavaMethod.maxLocals()); + BigBang.out.println("parsing graph " + resolvedJavaMethod + ", locals=" + resolvedJavaMethod.maxLocals()); GraphBuilderConfiguration config = new GraphBuilderConfiguration(ResolvePolicy.Eager, null); GraphBuilderPhase graphBuilderPhase = new GraphBuilderPhase(bb.getMetaAccess(), config, OptimisticOptimizations.NONE); graphBuilderPhase.apply(newGraph); @@ -113,7 +113,7 @@ for (NewInstanceNode newInstance : newGraph.getNodes(NewInstanceNode.class)) { Set types = new HashSet<>(); types.add(newInstance.instanceClass()); - System.out.println("propagate new instance " + newInstance + ", " + newInstance.instanceClass()); + BigBang.out.println("propagate new instance " + newInstance + ", " + newInstance.instanceClass()); for (Node use : newInstance.usages()) { Element element = bb.getSinkElement(use, newInstance); assert element != null; diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Tue Aug 28 14:17:22 2012 +0200 @@ -250,7 +250,11 @@ @Override public ResolvedJavaField[] declaredFields() { if (fields == null) { - fields = HotSpotGraalRuntime.getInstance().getCompilerToVM().JavaType_fields(this); + if (isArrayClass) { + fields = new ResolvedJavaField[0]; + } else { + fields = HotSpotGraalRuntime.getInstance().getCompilerToVM().JavaType_fields(this); + } } return fields; } diff -r 01d274503562 -r 904517c1cd06 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotTypePrimitive.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotTypePrimitive.java Tue Aug 28 12:15:10 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotTypePrimitive.java Tue Aug 28 14:17:22 2012 +0200 @@ -152,7 +152,7 @@ @Override public ResolvedJavaField[] declaredFields() { - return null; + return new ResolvedJavaField[0]; } @Override diff -r 01d274503562 -r 904517c1cd06 mx/commands.py --- a/mx/commands.py Tue Aug 28 12:15:10 2012 +0200 +++ b/mx/commands.py Tue Aug 28 14:17:22 2012 +0200 @@ -79,7 +79,7 @@ """ def clean(args): - """cleans the GraalVM source tree""" + """clean the GraalVM source tree""" opts = mx.clean(args, parser=ArgumentParser(prog='mx clean')) if opts.native: os.environ.update(ARCH_DATA_MODEL='64', LANG='C', HOTSPOT_BUILD_JOBS='16') @@ -396,7 +396,7 @@ return ret def jdkhome(args, vm=None): - """prints the JDK directory selected for the 'vm' command""" + """print the JDK directory selected for the 'vm' command""" build = _vmbuild if _vmSourcesAvailable else 'product' print join(_graal_home, 'jdk' + mx.java().version, build) @@ -582,7 +582,7 @@ # Exclude all compiler tests and snippets excludes = ['com.oracle.graal.compiler.tests.*', 'com.oracle.graal.jtt.*'] for p in mx.projects(): - excludes += _find_classes_with_annotations(p, None, ['@Snippet', '@ClassSubstitution'], includeInnerClasses=True) + excludes += _find_classes_with_annotations(p, None, ['@Snippet', '@ClassSubstitution', '@Test'], includeInnerClasses=True) excludes += p.find_classes_with_matching_source_line(None, lambda line: 'JaCoCo Exclude' in line, includeInnerClasses=True) includes = ['com.oracle.graal.*', 'com.oracle.max.*'] @@ -608,7 +608,7 @@ matches = lambda line : len([a for a in annotations if line == a or line.startswith(a + '(')]) != 0 return p.find_classes_with_matching_source_line(pkgRoot, matches, includeInnerClasses) -def _run_tests(args, harnessName, harness): +def _run_tests(args, harness): pos = [a for a in args if a[0] != '-' and a[0] != '@' ] neg = [a[1:] for a in args if a[0] == '-'] vmArgs = [a[1:] for a in args if a[0] == '@'] @@ -620,39 +620,34 @@ return False for p in mx.projects(): - if getattr(p, 'testHarness', None) == harnessName: - classes = _find_classes_with_annotations(p, None, ['@Test']) + classes = _find_classes_with_annotations(p, None, ['@Test']) - if len(pos) != 0: - classes = [c for c in classes if containsAny(c, pos)] - if len(neg) != 0: - classes = [c for c in classes if not containsAny(c, neg)] + if len(pos) != 0: + classes = [c for c in classes if containsAny(c, pos)] + if len(neg) != 0: + classes = [c for c in classes if not containsAny(c, neg)] - if len(classes) != 0: - mx.log('running tests in ' + p.name) - harness(p, vmArgs, classes) + if len(classes) != 0: + mx.log('running tests in ' + p.name) + harness(p, vmArgs, classes) def unittest(args): - """run the Graal Compiler Unit Tests in the GraalVM + """run the JUnit tests If filters are supplied, only tests whose fully qualified name include a filter as a substring are run. Negative filters are those with a '-' prefix. VM args should have a @ prefix.""" def harness(p, vmArgs, classes): - vm(['-XX:-BootstrapGraal', '-esa'] + vmArgs + ['-cp', mx.classpath(p.name), 'org.junit.runner.JUnitCore'] + classes) - _run_tests(args, 'unittest', harness) - -def jtt(args): - """run the Java Tester Tests in the GraalVM - - If filters are supplied, only tests whose fully qualified name - include a filter as a substring are run. Negative filters are - those with a '-' prefix. VM args should have a @ prefix.""" - - def harness(p, vmArgs, classes): - vm(['-XX:-BootstrapGraal', '-XX:CompileOnly=com/oracle/graal/jtt', '-XX:CompileCommand=compileonly,java/lang/Object::', '-XX:CompileCommand=quiet', '-Xcomp', '-esa'] + vmArgs + ['-cp', mx.classpath(p.name), 'org.junit.runner.JUnitCore'] + classes) - _run_tests(args, 'jtt', harness) + prefixArgs = ['-XX:-BootstrapGraal', '-esa'] + if p.name.endswith('.jtt'): + prefixArgs = prefixArgs + [ + '-XX:CompileOnly=com/oracle/graal/jtt', + '-XX:CompileCommand=compileonly,java/lang/Object::', + '-XX:CompileCommand=quiet', + '-Xcomp'] + vm(prefixArgs + vmArgs + ['-cp', mx.classpath(p.name), 'org.junit.runner.JUnitCore'] + classes) + _run_tests(args, harness) def buildvms(args): """build one or more VMs in various configurations""" @@ -753,11 +748,7 @@ tasks.append(t.stop()) t = Task('UnitTests:' + vmbuild) - unittest([]) - tasks.append(t.stop()) - - t = Task('JavaTesterTests:' + vmbuild) - jtt(['@-XX:CompileCommand=exclude,*::run*'] if vmbuild == 'product' else []) + unittest(['@-XX:CompileCommand=exclude,*::run*'] if vmbuild == 'product' else []) tasks.append(t.stop()) for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): @@ -935,7 +926,7 @@ sanitycheck.getSPECjvm2008(benchArgs, skipValid, wt, it).bench(vm, opts=vmArgs) def hsdis(args, copyToDir=None): - """downloads the hsdis library + """download the hsdis library This is needed to support HotSpot's assembly dumping features. By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax.""" @@ -950,7 +941,7 @@ shutil.copy(path, copyToDir) def hcfdis(args): - """disassembles HexCodeFiles embedded in text files + """disassemble HexCodeFiles embedded in text files Run a tool over the input files to convert all embedded HexCodeFiles to a disassembled format.""" @@ -960,7 +951,7 @@ mx.run_java(['-jar', path] + args) def jacocoreport(args): - """creates a JaCoCo coverage report + """create a JaCoCo coverage report Creates the report from the 'jacoco.exec' file in the current directory. Default output directory is 'coverage', but an alternative can be provided as an argument.""" @@ -973,7 +964,7 @@ mx.run_java(['-jar', jacocoreport.get_path(True), '-in', 'jacoco.exec', '-g', join(_graal_home, 'graal'), out]) def site(args): - """creates a website containing javadoc and the project dependency graph""" + """create a website containing javadoc and the project dependency graph""" return mx.site(['--name', 'Graal', '--jd', '@-tag', '--jd', '@test:X', @@ -1003,7 +994,6 @@ 'gv' : [gv, ''], 'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'], 'unittest' : [unittest, '[filters...]'], - 'jtt' : [jtt, '[filters...]'], 'jacocoreport' : [jacocoreport, '[output directory]'], 'site' : [site, '[-options]'], 'vm': [vm, '[-options] class [args...]'], diff -r 01d274503562 -r 904517c1cd06 mx/projects --- a/mx/projects Tue Aug 28 12:15:10 2012 +0200 +++ b/mx/projects Tue Aug 28 14:17:22 2012 +0200 @@ -122,7 +122,6 @@ project@com.oracle.graal.snippets.test@dependencies=com.oracle.graal.snippets,com.oracle.graal.tests project@com.oracle.graal.snippets.test@checkstyle=com.oracle.graal.graph project@com.oracle.graal.snippets.test@javaCompliance=1.7 -project@com.oracle.graal.snippets.test@testHarness=unittest # graal.nodes project@com.oracle.graal.nodes@subDir=graal @@ -185,7 +184,6 @@ project@com.oracle.graal.tests@dependencies=JUNIT,com.oracle.graal.printer,com.oracle.graal.api project@com.oracle.graal.tests@checkstyle=com.oracle.graal.graph project@com.oracle.graal.tests@javaCompliance=1.7 -project@com.oracle.graal.tests@testHarness=unittest # graal.jtt project@com.oracle.graal.jtt@subDir=graal @@ -193,7 +191,6 @@ project@com.oracle.graal.jtt@dependencies=JUNIT project@com.oracle.graal.jtt@checkstyle=com.oracle.graal.graph project@com.oracle.graal.jtt@javaCompliance=1.7 -project@com.oracle.graal.jtt@testHarness=jtt # graal.examples project@com.oracle.graal.examples@subDir=graal