changeset 14763:a6c1c3eb20c4

transition to JDK8 - introduce support for more than one JDK in mx - update version in annotiationprocessors - update project definitions (truffle api is not part of the transition) - fix style errors
author Doug Simon <doug.simon@oracle.com>
date Wed, 26 Mar 2014 14:34:08 +0100
parents c6f4b780fa88
children 5823c399e28f
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/InductionVariables.java graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionValue.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/VerifierAnnotationProcessor.java graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java mx/projects mxtool/mx.py
diffstat 9 files changed, 205 insertions(+), 137 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java	Wed Mar 26 14:34:08 2014 +0100
@@ -27,7 +27,6 @@
 import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*;
 import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.Options.*;
 import static com.oracle.graal.nodes.PiArrayNode.*;
-import static com.oracle.graal.nodes.PiNode.*;
 import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*;
 import static com.oracle.graal.phases.GraalOptions.*;
 import static com.oracle.graal.replacements.SnippetTemplate.*;
@@ -251,7 +250,7 @@
      * Computes the size of the memory chunk allocated for an array. This size accounts for the
      * array header size, boy size and any padding after the last element to satisfy object
      * alignment requirements.
-     * 
+     *
      * @param length the number of elements in the array
      * @param alignment the object alignment requirement
      * @param headerSize the size of the array header
@@ -285,7 +284,7 @@
     /**
      * Zero uninitialized memory in a newly allocated object, unrolling as necessary and ensuring
      * that stores are aligned.
-     * 
+     *
      * @param size number of bytes to zero
      * @param memory beginning of object which is being zeroed
      * @param constantSize is @ size} known to be constant in the snippet
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/InductionVariables.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/InductionVariables.java	Wed Mar 26 14:34:08 2014 +0100
@@ -63,7 +63,7 @@
     }
 
     private void findDerived(Collection<BasicInductionVariable> bivs) {
-        Queue<InductionVariable> scanQueue = new LinkedList<InductionVariable>(bivs);
+        Queue<InductionVariable> scanQueue = new LinkedList<>(bivs);
         while (!scanQueue.isEmpty()) {
             InductionVariable baseIv = scanQueue.remove();
             ValueNode baseIvNode = baseIv.valueNode();
--- a/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java	Wed Mar 26 14:34:08 2014 +0100
@@ -45,10 +45,14 @@
  * }
  * </pre>
  */
-@SupportedSourceVersion(SourceVersion.RELEASE_7)
 @SupportedAnnotationTypes({"com.oracle.graal.options.Option"})
 public class OptionProcessor extends AbstractProcessor {
 
+    @Override
+    public SourceVersion getSupportedSourceVersion() {
+        return SourceVersion.latest();
+    }
+
     private final Set<Element> processed = new HashSet<>();
 
     private void processElement(Element element, OptionsInfo info) {
--- a/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionValue.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionValue.java	Wed Mar 26 14:34:08 2014 +0100
@@ -38,7 +38,7 @@
      * <p>
      * Since the returned object is {@link AutoCloseable} the try-with-resource construct can be
      * used:
-     * 
+     *
      * <pre>
      * try (OverrideScope s = OptionValue.override(myOption, myValue) {
      *     // code that depends on myOption == myValue
@@ -65,7 +65,7 @@
      * <p>
      * Since the returned object is {@link AutoCloseable} the try-with-resource construct can be
      * used:
-     * 
+     *
      * <pre>
      * Map<OptionValue, Object> overrides = new HashMap<>();
      * overrides.put(myOption1, myValue1);
@@ -96,13 +96,13 @@
      * <p>
      * Since the returned object is {@link AutoCloseable} the try-with-resource construct can be
      * used:
-     * 
+     *
      * <pre>
      * try (OverrideScope s = OptionValue.override(myOption1, myValue1, myOption2, myValue2) {
      *     // code that depends on myOption == myValue
      * }
      * </pre>
-     * 
+     *
      * @param overrides overrides in the form {@code [option1, override1, option2, override2, ...]}
      */
     public static OverrideScope override(Object... overrides) {
@@ -221,14 +221,14 @@
 
     /**
      * Gets the values of this option including overridden values.
-     * 
+     *
      * @param c the collection to which the values are added. If null, one is allocated.
      * @return the collection to which the values were added in order from most overridden to
      *         current value
      */
     @SuppressWarnings("unchecked")
     public Collection<T> getValues(Collection<T> c) {
-        Collection<T> values = c == null ? new ArrayList<T>() : c;
+        Collection<T> values = c == null ? new ArrayList<>() : c;
         if (!(this instanceof StableOptionValue)) {
             OverrideScope overrideScope = overrideScopes.get();
             if (overrideScope != null) {
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java	Wed Mar 26 14:34:08 2014 +0100
@@ -59,7 +59,7 @@
         /**
          * This constructor creates a {@link SchedulingError} with a message assembled via
          * {@link String#format(String, Object...)}.
-         * 
+         *
          * @param format a {@linkplain Formatter format} string
          * @param args parameters to {@link String#format(String, Object...)}
          */
@@ -164,9 +164,9 @@
 
     /**
      * gather all kill locations by iterating trough the nodes assigned to a block.
-     * 
+     *
      * assumptions: {@link MemoryCheckpoint MemoryCheckPoints} are {@link FixedNode FixedNodes}.
-     * 
+     *
      * @param block block to analyze
      * @param excludeNode if null, compute normal set of kill locations. if != null, don't add kills
      *            until we reach excludeNode.
@@ -457,9 +457,9 @@
      * this method tries to find the "optimal" schedule for a read, by pushing it down towards its
      * latest schedule starting by the earliest schedule. By doing this, it takes care of memory
      * dependencies using kill sets.
-     * 
+     *
      * In terms of domination relation, it looks like this:
-     * 
+     *
      * <pre>
      *    U      upperbound block, defined by last access location of the floating read
      *    &#9650;
@@ -469,9 +469,9 @@
      *    &#9650;
      *    L      latest block
      * </pre>
-     * 
+     *
      * i.e. <code>upperbound `dom` earliest `dom` optimal `dom` latest</code>.
-     * 
+     *
      */
     private Block optimalBlock(FloatingReadNode n, SchedulingStrategy strategy) {
         assert memsched == MemoryScheduling.OPTIMAL;
@@ -540,7 +540,7 @@
 
     /**
      * compute path in dominator tree from earliest schedule to latest schedule.
-     * 
+     *
      * @return the order of the stack is such as the first element is the earliest schedule.
      */
     private static Deque<Block> computePathInDominatorTree(Block earliestBlock, Block latestBlock) {
@@ -582,7 +582,7 @@
     /**
      * Calculates the last block that the given node could be scheduled in, i.e., the common
      * dominator of all usages. To do so all usages are also assigned to blocks.
-     * 
+     *
      * @param strategy
      */
     private Block latestBlock(ScheduledNode node, SchedulingStrategy strategy) {
@@ -680,7 +680,7 @@
      * Schedules a node out of loop based on its earliest schedule. Note that this movement is only
      * valid if it's done for <b>every</b> other node in the schedule, otherwise this movement is
      * not valid.
-     * 
+     *
      * @param n Node to schedule
      * @param latestBlock latest possible schedule for {@code n}
      * @param earliest earliest possible schedule for {@code n}
@@ -705,7 +705,7 @@
     /**
      * Passes all blocks that a specific usage of a node is in to a given closure. This is more
      * complex than just taking the usage's block because of of PhiNodes and FrameStates.
-     * 
+     *
      * @param node the node that needs to be scheduled
      * @param usage the usage whose blocks need to be considered
      * @param closure the closure that will be called for each block
@@ -1042,7 +1042,7 @@
             }
 
             if (instruction instanceof AbstractBeginNode) {
-                ArrayList<ProxyNode> proxies = (instruction instanceof LoopExitNode) ? new ArrayList<ProxyNode>() : null;
+                ArrayList<ProxyNode> proxies = (instruction instanceof LoopExitNode) ? new ArrayList<>() : null;
                 for (ScheduledNode inBlock : blockToNodesMap.get(b)) {
                     if (!visited.isMarked(inBlock)) {
                         if (inBlock instanceof ProxyNode) {
--- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/VerifierAnnotationProcessor.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/VerifierAnnotationProcessor.java	Wed Mar 26 14:34:08 2014 +0100
@@ -30,12 +30,16 @@
 import javax.lang.model.element.*;
 import javax.lang.model.type.*;
 
-@SupportedSourceVersion(SourceVersion.RELEASE_7)
 public class VerifierAnnotationProcessor extends AbstractProcessor {
 
     private List<AbstractVerifier> verifiers;
 
     @Override
+    public SourceVersion getSupportedSourceVersion() {
+        return SourceVersion.latest();
+    }
+
+    @Override
     public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
         if (!roundEnv.processingOver()) {
             for (AbstractVerifier verifier : getVerifiers()) {
--- a/graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java	Wed Mar 26 14:32:50 2014 +0100
+++ b/graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java	Wed Mar 26 14:34:08 2014 +0100
@@ -34,12 +34,16 @@
 
 import com.oracle.graal.api.runtime.*;
 
-@SupportedSourceVersion(SourceVersion.RELEASE_7)
 @SupportedAnnotationTypes("com.oracle.graal.api.runtime.ServiceProvider")
 public class ServiceProviderProcessor extends AbstractProcessor {
 
     private final Set<TypeElement> 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 doesn't implement service interface %s", serviceProvider.getSimpleName(), serviceInterface);
--- a/mx/projects	Wed Mar 26 14:32:50 2014 +0100
+++ b/mx/projects	Wed Mar 26 14:34:08 2014 +0100
@@ -56,7 +56,7 @@
 project@com.oracle.graal.api.runtime@subDir=graal
 project@com.oracle.graal.api.runtime@sourceDirs=src
 project@com.oracle.graal.api.runtime@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.runtime@javaCompliance=1.7
+project@com.oracle.graal.api.runtime@javaCompliance=1.8
 project@com.oracle.graal.api.runtime@workingSets=API,Graal
 
 # graal.api.test
@@ -64,14 +64,14 @@
 project@com.oracle.graal.api.test@sourceDirs=src
 project@com.oracle.graal.api.test@dependencies=JUNIT,com.oracle.graal.api.runtime
 project@com.oracle.graal.api.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.test@javaCompliance=1.7
+project@com.oracle.graal.api.test@javaCompliance=1.8
 project@com.oracle.graal.api.test@workingSets=API,Graal,Test
 
 # graal.api.meta
 project@com.oracle.graal.api.meta@subDir=graal
 project@com.oracle.graal.api.meta@sourceDirs=src
 project@com.oracle.graal.api.meta@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.meta@javaCompliance=1.7
+project@com.oracle.graal.api.meta@javaCompliance=1.8
 project@com.oracle.graal.api.meta@workingSets=API,Graal
 
 # graal.api.meta.test
@@ -79,7 +79,7 @@
 project@com.oracle.graal.api.meta.test@sourceDirs=src
 project@com.oracle.graal.api.meta.test@dependencies=JUNIT,com.oracle.graal.runtime,com.oracle.graal.java
 project@com.oracle.graal.api.meta.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.meta.test@javaCompliance=1.7
+project@com.oracle.graal.api.meta.test@javaCompliance=1.8
 project@com.oracle.graal.api.meta.test@workingSets=API,Graal,Test
 
 # graal.api.meta.jdk8.test
@@ -95,7 +95,7 @@
 project@com.oracle.graal.api.code@sourceDirs=src
 project@com.oracle.graal.api.code@dependencies=com.oracle.graal.api.meta
 project@com.oracle.graal.api.code@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.code@javaCompliance=1.7
+project@com.oracle.graal.api.code@javaCompliance=1.8
 project@com.oracle.graal.api.code@workingSets=API,Graal
 
 # graal.api.replacements
@@ -103,7 +103,7 @@
 project@com.oracle.graal.api.replacements@sourceDirs=src
 project@com.oracle.graal.api.replacements@dependencies=com.oracle.graal.api.meta
 project@com.oracle.graal.api.replacements@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.api.replacements@javaCompliance=1.7
+project@com.oracle.graal.api.replacements@javaCompliance=1.8
 project@com.oracle.graal.api.replacements@workingSets=API,Graal,Replacements
 
 # graal.service.processor
@@ -111,7 +111,7 @@
 project@com.oracle.graal.service.processor@sourceDirs=src
 project@com.oracle.graal.service.processor@dependencies=com.oracle.graal.api.runtime
 project@com.oracle.graal.service.processor@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.service.processor@javaCompliance=1.7
+project@com.oracle.graal.service.processor@javaCompliance=1.8
 project@com.oracle.graal.service.processor@workingSets=Codegen,HotSpot
 
 # graal.amd64
@@ -119,7 +119,7 @@
 project@com.oracle.graal.amd64@sourceDirs=src
 project@com.oracle.graal.amd64@dependencies=com.oracle.graal.api.code
 project@com.oracle.graal.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.amd64@javaCompliance=1.7
+project@com.oracle.graal.amd64@javaCompliance=1.8
 project@com.oracle.graal.amd64@workingSets=Graal,AMD64
 
 # graal.ptx
@@ -127,7 +127,7 @@
 project@com.oracle.graal.ptx@sourceDirs=src
 project@com.oracle.graal.ptx@dependencies=com.oracle.graal.api.code
 project@com.oracle.graal.ptx@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.ptx@javaCompliance=1.7
+project@com.oracle.graal.ptx@javaCompliance=1.8
 project@com.oracle.graal.ptx@workingSets=Graal,PTX
 
 # graal.sparc
@@ -135,7 +135,7 @@
 project@com.oracle.graal.sparc@sourceDirs=src
 project@com.oracle.graal.sparc@dependencies=com.oracle.graal.api.code
 project@com.oracle.graal.sparc@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.sparc@javaCompliance=1.7
+project@com.oracle.graal.sparc@javaCompliance=1.8
 project@com.oracle.graal.sparc@workingSets=Graal,SPARC
 
 # graal.hotspot
@@ -144,7 +144,7 @@
 project@com.oracle.graal.hotspot@dependencies=com.oracle.graal.replacements,com.oracle.graal.runtime,com.oracle.graal.printer
 project@com.oracle.graal.hotspot@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.hotspot@annotationProcessors=com.oracle.graal.replacements.verifier,com.oracle.graal.service.processor
-project@com.oracle.graal.hotspot@javaCompliance=1.7
+project@com.oracle.graal.hotspot@javaCompliance=1.8
 project@com.oracle.graal.hotspot@workingSets=Graal,HotSpot
 
 # graal.hotspot.amd64
@@ -153,7 +153,7 @@
 project@com.oracle.graal.hotspot.amd64@dependencies=com.oracle.graal.compiler.amd64,com.oracle.graal.hotspot,com.oracle.graal.replacements.amd64
 project@com.oracle.graal.hotspot.amd64@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.hotspot.amd64@annotationProcessors=com.oracle.graal.service.processor
-project@com.oracle.graal.hotspot.amd64@javaCompliance=1.7
+project@com.oracle.graal.hotspot.amd64@javaCompliance=1.8
 project@com.oracle.graal.hotspot.amd64@workingSets=Graal,HotSpot,AMD64
 
 # graal.hotspot.sparc
@@ -162,7 +162,7 @@
 project@com.oracle.graal.hotspot.sparc@dependencies=com.oracle.graal.compiler.sparc
 project@com.oracle.graal.hotspot.sparc@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.hotspot.sparc@annotationProcessors=com.oracle.graal.service.processor
-project@com.oracle.graal.hotspot.sparc@javaCompliance=1.7
+project@com.oracle.graal.hotspot.sparc@javaCompliance=1.8
 project@com.oracle.graal.hotspot.sparc@workingSets=Graal,HotSpot,SPARC
 
 # graal.hotspot.ptx
@@ -171,7 +171,7 @@
 project@com.oracle.graal.hotspot.ptx@dependencies=com.oracle.graal.ptx,com.oracle.graal.compiler.ptx,com.oracle.graal.hotspot
 project@com.oracle.graal.hotspot.ptx@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.hotspot.ptx@annotationProcessors=com.oracle.graal.service.processor
-project@com.oracle.graal.hotspot.ptx@javaCompliance=1.7
+project@com.oracle.graal.hotspot.ptx@javaCompliance=1.8
 project@com.oracle.graal.hotspot.ptx@workingSets=Graal,HotSpot,PTX
 
 # graal.hotspot.hsail
@@ -180,7 +180,7 @@
 project@com.oracle.graal.hotspot.hsail@dependencies=com.oracle.graal.replacements.hsail,com.oracle.graal.hotspot
 project@com.oracle.graal.hotspot.hsail@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.hotspot.hsail@annotationProcessors=com.oracle.graal.service.processor
-project@com.oracle.graal.hotspot.hsail@javaCompliance=1.7
+project@com.oracle.graal.hotspot.hsail@javaCompliance=1.8
 project@com.oracle.graal.hotspot.hsail@workingSets=Graal,HotSpot,PTX
 
 # graal.hotspot.server
@@ -188,7 +188,7 @@
 project@com.oracle.graal.hotspot.server@sourceDirs=src
 project@com.oracle.graal.hotspot.server@dependencies=com.oracle.graal.hotspot
 project@com.oracle.graal.hotspot.server@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.hotspot.server@javaCompliance=1.7
+project@com.oracle.graal.hotspot.server@javaCompliance=1.8
 project@com.oracle.graal.hotspot.server@workingSets=Graal,HotSpot
 
 # graal.hotspot.test
@@ -196,7 +196,7 @@
 project@com.oracle.graal.hotspot.test@sourceDirs=src
 project@com.oracle.graal.hotspot.test@dependencies=com.oracle.graal.replacements.test,com.oracle.graal.hotspot
 project@com.oracle.graal.hotspot.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.hotspot.test@javaCompliance=1.7
+project@com.oracle.graal.hotspot.test@javaCompliance=1.8
 project@com.oracle.graal.hotspot.test@workingSets=Graal,HotSpot,Test
 
 # graal.hotspot.jdk8.test
@@ -212,14 +212,14 @@
 project@com.oracle.graal.hotspot.amd64.test@sourceDirs=src
 project@com.oracle.graal.hotspot.amd64.test@dependencies=com.oracle.graal.asm.amd64,com.oracle.graal.compiler.test
 project@com.oracle.graal.hotspot.amd64.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.hotspot.amd64.test@javaCompliance=1.7
+project@com.oracle.graal.hotspot.amd64.test@javaCompliance=1.8
 project@com.oracle.graal.hotspot.amd64.test@workingSets=Graal,HotSpot,AMD64,Test
 
 # graal.options
 project@com.oracle.graal.options@subDir=graal
 project@com.oracle.graal.options@sourceDirs=src
 project@com.oracle.graal.options@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.options@javaCompliance=1.7
+project@com.oracle.graal.options@javaCompliance=1.8
 project@com.oracle.graal.options@annotationProcessorForDependents=true
 project@com.oracle.graal.options@workingSets=Graal,Codegen
 
@@ -228,14 +228,14 @@
 project@com.oracle.graal.options.test@sourceDirs=src
 project@com.oracle.graal.options.test@dependencies=com.oracle.graal.options,JUNIT
 project@com.oracle.graal.options.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.options.test@javaCompliance=1.7
+project@com.oracle.graal.options.test@javaCompliance=1.8
 project@com.oracle.graal.options.test@workingSets=Graal
 
 # graal.graph
 project@com.oracle.graal.graph@subDir=graal
 project@com.oracle.graal.graph@sourceDirs=src
 project@com.oracle.graal.graph@dependencies=com.oracle.graal.debug,com.oracle.graal.api.code
-project@com.oracle.graal.graph@javaCompliance=1.7
+project@com.oracle.graal.graph@javaCompliance=1.8
 project@com.oracle.graal.graph@workingSets=Graal,Graph
 
 # graal.graph.test
@@ -243,14 +243,14 @@
 project@com.oracle.graal.graph.test@sourceDirs=src
 project@com.oracle.graal.graph.test@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.graph.test@dependencies=JUNIT,com.oracle.graal.graph
-project@com.oracle.graal.graph.test@javaCompliance=1.7
+project@com.oracle.graal.graph.test@javaCompliance=1.8
 project@com.oracle.graal.graph.test@workingSets=Graal,Graph,Test
 
 # graal.debug
 project@com.oracle.graal.debug@subDir=graal
 project@com.oracle.graal.debug@sourceDirs=src
 project@com.oracle.graal.debug@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.debug@javaCompliance=1.7
+project@com.oracle.graal.debug@javaCompliance=1.8
 project@com.oracle.graal.debug@workingSets=Graal,Debug
 
 # graal.debug.test
@@ -258,7 +258,7 @@
 project@com.oracle.graal.debug.test@sourceDirs=src
 project@com.oracle.graal.debug.test@dependencies=JUNIT,com.oracle.graal.debug
 project@com.oracle.graal.debug.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.debug.test@javaCompliance=1.7
+project@com.oracle.graal.debug.test@javaCompliance=1.8
 project@com.oracle.graal.debug.test@workingSets=Graal,Debug,Test
 
 # graal.lir
@@ -266,7 +266,7 @@
 project@com.oracle.graal.lir@sourceDirs=src
 project@com.oracle.graal.lir@dependencies=com.oracle.graal.asm,com.oracle.graal.nodes
 project@com.oracle.graal.lir@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.lir@javaCompliance=1.7
+project@com.oracle.graal.lir@javaCompliance=1.8
 project@com.oracle.graal.lir@workingSets=Graal,LIR
 
 # graal.lir.amd64
@@ -274,7 +274,7 @@
 project@com.oracle.graal.lir.amd64@sourceDirs=src
 project@com.oracle.graal.lir.amd64@dependencies=com.oracle.graal.lir,com.oracle.graal.asm.amd64
 project@com.oracle.graal.lir.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.lir.amd64@javaCompliance=1.7
+project@com.oracle.graal.lir.amd64@javaCompliance=1.8
 project@com.oracle.graal.lir.amd64@workingSets=Graal,LIR,AMD64
 
 # graal.lir.ptx
@@ -282,7 +282,7 @@
 project@com.oracle.graal.lir.ptx@sourceDirs=src
 project@com.oracle.graal.lir.ptx@dependencies=com.oracle.graal.asm.ptx
 project@com.oracle.graal.lir.ptx@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.lir.ptx@javaCompliance=1.7
+project@com.oracle.graal.lir.ptx@javaCompliance=1.8
 project@com.oracle.graal.lir.ptx@workingSets=Graal,LIR,PTX
 
 # graal.lir.sparc
@@ -290,7 +290,7 @@
 project@com.oracle.graal.lir.sparc@sourceDirs=src
 project@com.oracle.graal.lir.sparc@dependencies=com.oracle.graal.asm.sparc
 project@com.oracle.graal.lir.sparc@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.lir.sparc@javaCompliance=1.7
+project@com.oracle.graal.lir.sparc@javaCompliance=1.8
 project@com.oracle.graal.lir.sparc@workingSets=Graal,LIR,SPARC
 
 # graal.alloc
@@ -298,7 +298,7 @@
 project@com.oracle.graal.alloc@sourceDirs=src
 project@com.oracle.graal.alloc@dependencies=com.oracle.graal.nodes
 project@com.oracle.graal.alloc@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.alloc@javaCompliance=1.7
+project@com.oracle.graal.alloc@javaCompliance=1.8
 project@com.oracle.graal.alloc@workingSets=Graal
 
 # graal.word
@@ -306,7 +306,7 @@
 project@com.oracle.graal.word@sourceDirs=src
 project@com.oracle.graal.word@dependencies=com.oracle.graal.phases
 project@com.oracle.graal.word@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.word@javaCompliance=1.7
+project@com.oracle.graal.word@javaCompliance=1.8
 project@com.oracle.graal.word@workingSets=API,Graal
 
 # graal.replacements
@@ -314,7 +314,7 @@
 project@com.oracle.graal.replacements@sourceDirs=src
 project@com.oracle.graal.replacements@dependencies=com.oracle.graal.compiler,com.oracle.graal.java,com.oracle.graal.word
 project@com.oracle.graal.replacements@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.replacements@javaCompliance=1.7
+project@com.oracle.graal.replacements@javaCompliance=1.8
 project@com.oracle.graal.replacements@annotationProcessors=com.oracle.graal.replacements.verifier,com.oracle.graal.service.processor
 project@com.oracle.graal.replacements@workingSets=Graal,Replacements
 
@@ -323,7 +323,7 @@
 project@com.oracle.graal.replacements.amd64@sourceDirs=src
 project@com.oracle.graal.replacements.amd64@dependencies=com.oracle.graal.replacements
 project@com.oracle.graal.replacements.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.replacements.amd64@javaCompliance=1.7
+project@com.oracle.graal.replacements.amd64@javaCompliance=1.8
 project@com.oracle.graal.replacements.amd64@annotationProcessors=com.oracle.graal.service.processor
 project@com.oracle.graal.replacements.amd64@workingSets=Graal,Replacements,AMD64
 
@@ -332,7 +332,7 @@
 project@com.oracle.graal.replacements.hsail@sourceDirs=src
 project@com.oracle.graal.replacements.hsail@dependencies=com.oracle.graal.compiler.hsail
 project@com.oracle.graal.replacements.hsail@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.replacements.hsail@javaCompliance=1.7
+project@com.oracle.graal.replacements.hsail@javaCompliance=1.8
 project@com.oracle.graal.replacements.hsail@workingSets=Graal,Replacements,HSAIL
 
 # graal.replacements.test
@@ -340,7 +340,7 @@
 project@com.oracle.graal.replacements.test@sourceDirs=src
 project@com.oracle.graal.replacements.test@dependencies=com.oracle.graal.compiler.test,com.oracle.graal.replacements
 project@com.oracle.graal.replacements.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.replacements.test@javaCompliance=1.7
+project@com.oracle.graal.replacements.test@javaCompliance=1.8
 project@com.oracle.graal.replacements.test@workingSets=Graal,Replacements,Test
 
 # graal.replacements.verifier
@@ -348,7 +348,7 @@
 project@com.oracle.graal.replacements.verifier@sourceDirs=src
 project@com.oracle.graal.replacements.verifier@dependencies=com.oracle.graal.api.replacements,com.oracle.graal.graph
 project@com.oracle.graal.replacements.verifier@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.replacements.verifier@javaCompliance=1.7
+project@com.oracle.graal.replacements.verifier@javaCompliance=1.8
 project@com.oracle.graal.replacements.verifier@workingSets=Graal,Replacements
 
 # graal.nodes
@@ -356,7 +356,7 @@
 project@com.oracle.graal.nodes@sourceDirs=src
 project@com.oracle.graal.nodes@dependencies=com.oracle.graal.graph,com.oracle.graal.api.replacements
 project@com.oracle.graal.nodes@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.nodes@javaCompliance=1.7
+project@com.oracle.graal.nodes@javaCompliance=1.8
 project@com.oracle.graal.nodes@annotationProcessors=com.oracle.graal.replacements.verifier
 project@com.oracle.graal.nodes@workingSets=Graal,Graph
 
@@ -365,7 +365,7 @@
 project@com.oracle.graal.nodes.test@sourceDirs=src
 project@com.oracle.graal.nodes.test@dependencies=com.oracle.graal.compiler.test
 project@com.oracle.graal.nodes.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.nodes.test@javaCompliance=1.7
+project@com.oracle.graal.nodes.test@javaCompliance=1.8
 project@com.oracle.graal.nodes.test@workingSets=Graal,Graph
 
 # graal.phases
@@ -373,7 +373,7 @@
 project@com.oracle.graal.phases@sourceDirs=src
 project@com.oracle.graal.phases@dependencies=com.oracle.graal.nodes,com.oracle.graal.options
 project@com.oracle.graal.phases@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.phases@javaCompliance=1.7
+project@com.oracle.graal.phases@javaCompliance=1.8
 project@com.oracle.graal.phases@workingSets=Graal,Phases
 
 # graal.phases.common
@@ -381,7 +381,7 @@
 project@com.oracle.graal.phases.common@sourceDirs=src
 project@com.oracle.graal.phases.common@dependencies=com.oracle.graal.phases
 project@com.oracle.graal.phases.common@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.phases.common@javaCompliance=1.7
+project@com.oracle.graal.phases.common@javaCompliance=1.8
 project@com.oracle.graal.phases.common@workingSets=Graal,Phases
 
 # graal.virtual
@@ -389,7 +389,7 @@
 project@com.oracle.graal.virtual@sourceDirs=src
 project@com.oracle.graal.virtual@dependencies=com.oracle.graal.phases.common
 project@com.oracle.graal.virtual@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.virtual@javaCompliance=1.7
+project@com.oracle.graal.virtual@javaCompliance=1.8
 project@com.oracle.graal.virtual@workingSets=Graal,Phases
 
 # graal.loop
@@ -397,7 +397,7 @@
 project@com.oracle.graal.loop@sourceDirs=src
 project@com.oracle.graal.loop@dependencies=com.oracle.graal.phases.common
 project@com.oracle.graal.loop@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.loop@javaCompliance=1.7
+project@com.oracle.graal.loop@javaCompliance=1.8
 project@com.oracle.graal.loop@workingSets=Graal,Phases
 
 # graal.compiler
@@ -405,7 +405,7 @@
 project@com.oracle.graal.compiler@sourceDirs=src
 project@com.oracle.graal.compiler@dependencies=com.oracle.graal.api.runtime,com.oracle.graal.virtual,com.oracle.graal.loop,com.oracle.graal.alloc,com.oracle.graal.lir
 project@com.oracle.graal.compiler@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler@javaCompliance=1.7
+project@com.oracle.graal.compiler@javaCompliance=1.8
 project@com.oracle.graal.compiler@annotationProcessors=com.oracle.graal.service.processor
 project@com.oracle.graal.compiler@workingSets=Graal
 
@@ -414,7 +414,7 @@
 project@com.oracle.graal.compiler.amd64@sourceDirs=src
 project@com.oracle.graal.compiler.amd64@dependencies=com.oracle.graal.compiler,com.oracle.graal.lir.amd64
 project@com.oracle.graal.compiler.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.amd64@javaCompliance=1.7
+project@com.oracle.graal.compiler.amd64@javaCompliance=1.8
 project@com.oracle.graal.compiler.amd64@workingSets=Graal,AMD64
 
 # graal.compiler.amd64.test
@@ -422,7 +422,7 @@
 project@com.oracle.graal.compiler.amd64.test@sourceDirs=src
 project@com.oracle.graal.compiler.amd64.test@dependencies=com.oracle.graal.compiler.test
 project@com.oracle.graal.compiler.amd64.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.amd64.test@javaCompliance=1.7
+project@com.oracle.graal.compiler.amd64.test@javaCompliance=1.8
 project@com.oracle.graal.compiler.amd64.test@workingSets=Graal,AMD64,Test
 
 # graal.compiler.ptx
@@ -430,7 +430,7 @@
 project@com.oracle.graal.compiler.ptx@sourceDirs=src
 project@com.oracle.graal.compiler.ptx@dependencies=com.oracle.graal.lir.ptx,com.oracle.graal.compiler
 project@com.oracle.graal.compiler.ptx@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.ptx@javaCompliance=1.7
+project@com.oracle.graal.compiler.ptx@javaCompliance=1.8
 project@com.oracle.graal.compiler.ptx@workingSets=Graal,PTX
 
 # graal.compiler.ptx.test
@@ -438,7 +438,7 @@
 project@com.oracle.graal.compiler.ptx.test@sourceDirs=src
 project@com.oracle.graal.compiler.ptx.test@dependencies=com.oracle.graal.hotspot.ptx,com.oracle.graal.compiler.test
 project@com.oracle.graal.compiler.ptx.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.ptx.test@javaCompliance=1.7
+project@com.oracle.graal.compiler.ptx.test@javaCompliance=1.8
 project@com.oracle.graal.compiler.ptx.test@workingSets=Graal,PTX,Test
 
 # graal.compiler.sparc
@@ -446,7 +446,7 @@
 project@com.oracle.graal.compiler.sparc@sourceDirs=src
 project@com.oracle.graal.compiler.sparc@dependencies=com.oracle.graal.lir.sparc
 project@com.oracle.graal.compiler.sparc@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.sparc@javaCompliance=1.7
+project@com.oracle.graal.compiler.sparc@javaCompliance=1.8
 project@com.oracle.graal.compiler.sparc@workingSets=Graal,SPARC
 
 # graal.compiler.sparc.test
@@ -454,7 +454,7 @@
 project@com.oracle.graal.compiler.sparc.test@sourceDirs=src
 project@com.oracle.graal.compiler.sparc.test@dependencies=com.oracle.graal.compiler.test
 project@com.oracle.graal.compiler.sparc.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.sparc.test@javaCompliance=1.7
+project@com.oracle.graal.compiler.sparc.test@javaCompliance=1.8
 project@com.oracle.graal.compiler.sparc.test@workingSets=Graal,SPARC,Test
 
 # graal.runtime
@@ -462,14 +462,14 @@
 project@com.oracle.graal.runtime@sourceDirs=src
 project@com.oracle.graal.runtime@dependencies=com.oracle.graal.compiler
 project@com.oracle.graal.runtime@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.runtime@javaCompliance=1.7
+project@com.oracle.graal.runtime@javaCompliance=1.8
 project@com.oracle.graal.runtime@workingSets=Graal
 
 # graal.bytecode
 project@com.oracle.graal.bytecode@subDir=graal
 project@com.oracle.graal.bytecode@sourceDirs=src
 project@com.oracle.graal.bytecode@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.bytecode@javaCompliance=1.7
+project@com.oracle.graal.bytecode@javaCompliance=1.8
 project@com.oracle.graal.bytecode@workingSets=Graal,Java
 
 # graal.java
@@ -477,7 +477,7 @@
 project@com.oracle.graal.java@sourceDirs=src
 project@com.oracle.graal.java@dependencies=com.oracle.graal.phases,com.oracle.graal.bytecode
 project@com.oracle.graal.java@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.java@javaCompliance=1.7
+project@com.oracle.graal.java@javaCompliance=1.8
 project@com.oracle.graal.java@workingSets=Graal,Java
 
 # graal.baseline
@@ -485,7 +485,7 @@
 project@com.oracle.graal.baseline@sourceDirs=src
 project@com.oracle.graal.baseline@dependencies=com.oracle.graal.java,com.oracle.graal.lir
 project@com.oracle.graal.baseline@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.baseline@javaCompliance=1.7
+project@com.oracle.graal.baseline@javaCompliance=1.8
 project@com.oracle.graal.baseline@workingSets=Graal,Java
 
 # graal.java.decompiler
@@ -493,7 +493,7 @@
 project@com.oracle.graal.java.decompiler@sourceDirs=src
 project@com.oracle.graal.java.decompiler@dependencies=com.oracle.graal.java
 project@com.oracle.graal.java.decompiler@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.java.decompiler@javaCompliance=1.7
+project@com.oracle.graal.java.decompiler@javaCompliance=1.8
 project@com.oracle.graal.java.decompiler@workingSets=Graal
 
 # graal.java.decompiler.test
@@ -501,7 +501,7 @@
 project@com.oracle.graal.java.decompiler.test@sourceDirs=src
 project@com.oracle.graal.java.decompiler.test@dependencies=JUNIT,com.oracle.graal.printer,com.oracle.graal.runtime
 project@com.oracle.graal.java.decompiler.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.java.decompiler.test@javaCompliance=1.7
+project@com.oracle.graal.java.decompiler.test@javaCompliance=1.8
 project@com.oracle.graal.java.decompiler.test@workingSets=Graal,Test
 
 # graal.printer
@@ -509,7 +509,7 @@
 project@com.oracle.graal.printer@sourceDirs=src
 project@com.oracle.graal.printer@dependencies=com.oracle.graal.java.decompiler,com.oracle.graal.compiler
 project@com.oracle.graal.printer@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.printer@javaCompliance=1.7
+project@com.oracle.graal.printer@javaCompliance=1.8
 project@com.oracle.graal.printer@workingSets=Graal,Graph
 
 # graal.test
@@ -517,7 +517,7 @@
 project@com.oracle.graal.test@sourceDirs=src
 project@com.oracle.graal.test@dependencies=JUNIT
 project@com.oracle.graal.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.test@javaCompliance=1.7
+project@com.oracle.graal.test@javaCompliance=1.8
 project@com.oracle.graal.test@workingSets=Graal,Test
 
 # graal.compiler.test
@@ -525,7 +525,7 @@
 project@com.oracle.graal.compiler.test@sourceDirs=src
 project@com.oracle.graal.compiler.test@dependencies=com.oracle.graal.test,com.oracle.graal.printer,com.oracle.graal.runtime,com.oracle.graal.baseline,JAVA_ALLOCATION_INSTRUMENTER
 project@com.oracle.graal.compiler.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.test@javaCompliance=1.7
+project@com.oracle.graal.compiler.test@javaCompliance=1.8
 project@com.oracle.graal.compiler.test@workingSets=Graal,Test
 
 # graal.jtt
@@ -533,7 +533,7 @@
 project@com.oracle.graal.jtt@sourceDirs=src
 project@com.oracle.graal.jtt@dependencies=com.oracle.graal.compiler.test
 project@com.oracle.graal.jtt@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.jtt@javaCompliance=1.7
+project@com.oracle.graal.jtt@javaCompliance=1.8
 project@com.oracle.graal.jtt@workingSets=Graal,Test
 
 # graal.asm
@@ -541,7 +541,7 @@
 project@com.oracle.graal.asm@sourceDirs=src
 project@com.oracle.graal.asm@dependencies=com.oracle.graal.api.code
 project@com.oracle.graal.asm@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm@javaCompliance=1.7
+project@com.oracle.graal.asm@javaCompliance=1.8
 project@com.oracle.graal.asm@workingSets=Graal,Assembler
 
 # graal.asm.test
@@ -549,7 +549,7 @@
 project@com.oracle.graal.asm.test@sourceDirs=src
 project@com.oracle.graal.asm.test@dependencies=com.oracle.graal.test,com.oracle.graal.runtime
 project@com.oracle.graal.asm.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.test@javaCompliance=1.7
+project@com.oracle.graal.asm.test@javaCompliance=1.8
 project@com.oracle.graal.asm.test@workingSets=Graal,Assembler,Test
 
 # graal.asm.amd64
@@ -557,7 +557,7 @@
 project@com.oracle.graal.asm.amd64@sourceDirs=src
 project@com.oracle.graal.asm.amd64@dependencies=com.oracle.graal.asm,com.oracle.graal.amd64
 project@com.oracle.graal.asm.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.amd64@javaCompliance=1.7
+project@com.oracle.graal.asm.amd64@javaCompliance=1.8
 project@com.oracle.graal.asm.amd64@workingSets=Graal,Assembler,AMD64
 
 # graal.asm.amd64.test
@@ -565,7 +565,7 @@
 project@com.oracle.graal.asm.amd64.test@sourceDirs=src
 project@com.oracle.graal.asm.amd64.test@dependencies=com.oracle.graal.asm.test,com.oracle.graal.asm.amd64
 project@com.oracle.graal.asm.amd64.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.amd64.test@javaCompliance=1.7
+project@com.oracle.graal.asm.amd64.test@javaCompliance=1.8
 project@com.oracle.graal.asm.amd64.test@workingSets=Graal,Assembler,AMD64,Test
 
 # graal.hsail
@@ -573,49 +573,49 @@
 project@com.oracle.graal.hsail@sourceDirs=src
 project@com.oracle.graal.hsail@dependencies=com.oracle.graal.graph
 project@com.oracle.graal.hsail@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.hsail@javaCompliance=1.7
+project@com.oracle.graal.hsail@javaCompliance=1.8
 
 # graal.lir.hsail
 project@com.oracle.graal.lir.hsail@subDir=graal
 project@com.oracle.graal.lir.hsail@sourceDirs=src
 project@com.oracle.graal.lir.hsail@dependencies=com.oracle.graal.lir,com.oracle.graal.asm.hsail
 project@com.oracle.graal.lir.hsail@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.lir.hsail@javaCompliance=1.7
+project@com.oracle.graal.lir.hsail@javaCompliance=1.8
 
 # graal.compiler.hsail
 project@com.oracle.graal.compiler.hsail@subDir=graal
 project@com.oracle.graal.compiler.hsail@sourceDirs=src
 project@com.oracle.graal.compiler.hsail@dependencies=com.oracle.graal.compiler,com.oracle.graal.lir.hsail
 project@com.oracle.graal.compiler.hsail@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.hsail@javaCompliance=1.7
+project@com.oracle.graal.compiler.hsail@javaCompliance=1.8
 
 # graal.compiler.hsail.test.infra - HSAIL compiler test infrastructure
 project@com.oracle.graal.compiler.hsail.test.infra@subDir=graal
 project@com.oracle.graal.compiler.hsail.test.infra@sourceDirs=src
 project@com.oracle.graal.compiler.hsail.test.infra@dependencies=com.oracle.graal.hotspot.hsail,JUNIT,OKRA_WITH_SIM
 project@com.oracle.graal.compiler.hsail.test.infra@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.hsail.test.infra@javaCompliance=1.7
+project@com.oracle.graal.compiler.hsail.test.infra@javaCompliance=1.8
 
 # graal.compiler.hsail.test
 project@com.oracle.graal.compiler.hsail.test@subDir=graal
 project@com.oracle.graal.compiler.hsail.test@sourceDirs=src
 project@com.oracle.graal.compiler.hsail.test@dependencies=com.oracle.graal.compiler.hsail.test.infra,com.oracle.graal.compiler.test
 project@com.oracle.graal.compiler.hsail.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.compiler.hsail.test@javaCompliance=1.7
+project@com.oracle.graal.compiler.hsail.test@javaCompliance=1.8
 
 # graal.asm.hsail
 project@com.oracle.graal.asm.hsail@subDir=graal
 project@com.oracle.graal.asm.hsail@sourceDirs=src
 project@com.oracle.graal.asm.hsail@dependencies=com.oracle.graal.hsail,OKRA,com.oracle.graal.asm
 project@com.oracle.graal.asm.hsail@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.hsail@javaCompliance=1.7
+project@com.oracle.graal.asm.hsail@javaCompliance=1.8
 
 # graal.asm.ptx
 project@com.oracle.graal.asm.ptx@subDir=graal
 project@com.oracle.graal.asm.ptx@sourceDirs=src
 project@com.oracle.graal.asm.ptx@dependencies=com.oracle.graal.lir
 project@com.oracle.graal.asm.ptx@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.ptx@javaCompliance=1.7
+project@com.oracle.graal.asm.ptx@javaCompliance=1.8
 project@com.oracle.graal.asm.ptx@workingSets=Graal,Assembler,PTX
 
 # graal.asm.sparc
@@ -623,7 +623,7 @@
 project@com.oracle.graal.asm.sparc@sourceDirs=src
 project@com.oracle.graal.asm.sparc@dependencies=com.oracle.graal.hotspot,com.oracle.graal.sparc
 project@com.oracle.graal.asm.sparc@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.asm.sparc@javaCompliance=1.7
+project@com.oracle.graal.asm.sparc@javaCompliance=1.8
 project@com.oracle.graal.asm.sparc@workingSets=Graal,Assembler,SPARC
 
 # truffle.api
@@ -688,7 +688,7 @@
 project@com.oracle.graal.truffle@sourceDirs=src
 project@com.oracle.graal.truffle@dependencies=com.oracle.truffle.api,com.oracle.graal.replacements,com.oracle.graal.runtime,com.oracle.graal.printer
 project@com.oracle.graal.truffle@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.truffle@javaCompliance=1.7
+project@com.oracle.graal.truffle@javaCompliance=1.8
 project@com.oracle.graal.truffle@workingSets=Graal,Truffle
 
 # graal.truffle.test
@@ -696,7 +696,7 @@
 project@com.oracle.graal.truffle.test@sourceDirs=src
 project@com.oracle.graal.truffle.test@dependencies=com.oracle.graal.truffle,com.oracle.graal.compiler.test
 project@com.oracle.graal.truffle.test@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.truffle.test@javaCompliance=1.7
+project@com.oracle.graal.truffle.test@javaCompliance=1.8
 project@com.oracle.graal.truffle.test@workingSets=Graal,Truffle,Test
 
 # graal.truffle.hotspot
@@ -704,7 +704,7 @@
 project@com.oracle.graal.truffle.hotspot@sourceDirs=src
 project@com.oracle.graal.truffle.hotspot@dependencies=com.oracle.graal.truffle,com.oracle.graal.hotspot
 project@com.oracle.graal.truffle.hotspot@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.truffle.hotspot@javaCompliance=1.7
+project@com.oracle.graal.truffle.hotspot@javaCompliance=1.8
 project@com.oracle.graal.truffle.hotspot@annotationProcessors=com.oracle.graal.service.processor
 project@com.oracle.graal.truffle.hotspot@workingSets=Graal,Truffle
 
@@ -713,6 +713,6 @@
 project@com.oracle.graal.truffle.hotspot.amd64@sourceDirs=src
 project@com.oracle.graal.truffle.hotspot.amd64@dependencies=com.oracle.graal.truffle.hotspot,com.oracle.graal.hotspot.amd64
 project@com.oracle.graal.truffle.hotspot.amd64@checkstyle=com.oracle.graal.graph
-project@com.oracle.graal.truffle.hotspot.amd64@javaCompliance=1.7
+project@com.oracle.graal.truffle.hotspot.amd64@javaCompliance=1.8
 project@com.oracle.graal.truffle.hotspot.amd64@annotationProcessors=com.oracle.graal.service.processor
 project@com.oracle.graal.truffle.hotspot.amd64@workingSets=Graal,Truffle
--- a/mxtool/mx.py	Wed Mar 26 14:32:50 2014 +0100
+++ b/mxtool/mx.py	Wed Mar 26 14:34:08 2014 +0100
@@ -54,7 +54,7 @@
 _primary_suite_path = None
 _primary_suite = None
 _opts = None
-_java = None
+_java_homes = None
 _warn = False
 
 """
@@ -117,6 +117,13 @@
         self.workingSets = workingSets
         self.dir = d
 
+        # Verify that a JDK exists for this project if its compliance level is
+        # less than the compliance level of the default JDK
+        jdk = java(self.javaCompliance)
+        if jdk is None and self.javaCompliance < java().javaCompliance:
+            abort('Cannot find ' + str(self.javaCompliance) + ' JDK required by ' + name + '. ' +
+                  'Specify it with --extra-java-homes option or EXTRA_JAVA_HOMES environment variable.')  
+
         # Create directories for projects that don't yet exist
         if not exists(d):
             os.mkdir(d)
@@ -1036,7 +1043,8 @@
         self.add_argument('--Jp', action='append', dest='java_args_pfx', help='prefix Java VM arguments (e.g. --Jp @-dsa)', metavar='@<args>', default=[])
         self.add_argument('--Ja', action='append', dest='java_args_sfx', help='suffix Java VM arguments (e.g. --Ja @-dsa)', metavar='@<args>', default=[])
         self.add_argument('--user-home', help='users home directory', metavar='<path>', default=os.path.expanduser('~'))
-        self.add_argument('--java-home', help='bootstrap JDK installation directory (must be JDK 6 or later)', metavar='<path>')
+        self.add_argument('--java-home', help='primary JDK directory (must be JDK 7 or later)', metavar='<path>')
+        self.add_argument('--extra-java-homes', help='secondary JDK directories separated by "' + os.pathsep + '"', metavar='<path>')
         self.add_argument('--ignore-project', action='append', dest='ignored_projects', help='name of project to ignore', metavar='<name>', default=[])
         self.add_argument('--kill-with-sigquit', action='store_true', dest='killwithsigquit', help='send sigquit first before killing child processes')
         if get_os() != 'windows':
@@ -1061,6 +1069,8 @@
 
         if opts.java_home is None:
             opts.java_home = os.environ.get('JAVA_HOME')
+        if opts.extra_java_homes is None:
+            opts.extra_java_homes = os.environ.get('EXTRA_JAVA_HOMES')
 
         if opts.java_home is None or opts.java_home == '':
             opts.java_home = _handle_missing_java_home()
@@ -1089,12 +1099,21 @@
         msg += ' {0:<20} {1}\n'.format(cmd, doc.split('\n', 1)[0])
     return msg + '\n'
 
-def java():
+def java(requiredCompliance=None):
     """
     Get a JavaConfig object containing Java commands launch details.
+    If requiredCompliance is None, the compliance level specified by --java-home/JAVA_HOME
+    is returned. Otherwise, the JavaConfig exactly matching requiredCompliance is returned
+    or None if there is no exact match.
     """
-    assert _java is not None
-    return _java
+    assert _java_homes
+    if not requiredCompliance:
+        return _java_homes[0]
+    for java in _java_homes:
+        if java.javaCompliance == requiredCompliance:
+            return java
+    return None
+
 
 def run_java(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, addDefaultArgs=True):
     return run(java().format_cmd(args, addDefaultArgs), nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
@@ -1350,9 +1369,9 @@
 A JavaConfig object encapsulates info on how Java commands are run.
 """
 class JavaConfig:
-    def __init__(self, opts):
-        self.jdk = opts.java_home
-        self.debug_port = opts.java_dbg_port
+    def __init__(self, java_home, java_dbg_port):
+        self.jdk = java_home
+        self.debug_port = java_dbg_port
         self.jar = exe_suffix(join(self.jdk, 'bin', 'jar'))
         self.java = exe_suffix(join(self.jdk, 'bin', 'java'))
         self.javac = exe_suffix(join(self.jdk, 'bin', 'javac'))
@@ -1361,7 +1380,7 @@
         self._bootclasspath = None
 
         if not exists(self.java):
-            abort('Java launcher derived from JAVA_HOME does not exist: ' + self.java)
+            abort('Java launcher does not exist: ' + self.java)
 
         def delAtAndSplit(s):
             return shlex.split(s.lstrip('@'))
@@ -1389,6 +1408,14 @@
         if self.debug_port is not None:
             self.java_args += ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(self.debug_port)]
 
+    def __hash__(self):
+        return hash(self.jdk)
+    
+    def __cmp__(self, other):
+        if isinstance(other, JavaConfig):
+            return cmp(self.javaCompliance, other.javaCompliance)
+        raise TypeError()
+
     def format_cmd(self, args, addDefaultArgs):
         if addDefaultArgs:
             return [self.java] + self.processArgs(args)
@@ -1624,14 +1651,12 @@
     if not suppliedParser:
         parser = ArgumentParser(prog='mx build')
 
-    javaCompliance = java().javaCompliance
-
     defaultEcjPath = get_env('JDT', join(_primary_suite.mxDir, 'ecj.jar'))
 
     parser = parser if parser is not None else ArgumentParser(prog='mx build')
     parser.add_argument('-f', action='store_true', dest='force', help='force build (disables timestamp checking)')
     parser.add_argument('-c', action='store_true', dest='clean', help='removes existing build output')
-    parser.add_argument('--source', dest='compliance', help='Java compliance level for projects without an explicit one', default=str(javaCompliance))
+    parser.add_argument('--source', dest='compliance', help='Java compliance level for projects without an explicit one')
     parser.add_argument('--Wapi', action='store_true', dest='warnAPI', help='show warnings about using internal APIs')
     parser.add_argument('--projects', action='store', help='comma separated projects to build (omit to build all projects)')
     parser.add_argument('--only', action='store', help='comma separated projects to build, without checking their dependencies (omit to build all projects)')
@@ -1710,9 +1735,12 @@
                 continue
 
         # skip building this Java project if its Java compliance level is "higher" than the configured JDK
-        if javaCompliance < p.javaCompliance:
-            log('Excluding {0} from build (Java compliance level {1} required)'.format(p.name, p.javaCompliance))
+        requiredCompliance = p.javaCompliance if p.javaCompliance else JavaCompliance(args.compliance) if args.compliance else None
+        jdk = java(requiredCompliance)
+        if not jdk:
+            log('Excluding {0} from build (Java compliance level {1} required)'.format(p.name, requiredCompliance))
             continue
+        compliance = str(jdk.javaCompliance)
 
         outputDir = prepareOutputDirs(p, args.clean)
 
@@ -1817,14 +1845,11 @@
 
         toBeDeleted = [argfileName]
         try:
-            compliance = str(p.javaCompliance) if p.javaCompliance is not None else args.compliance
             if jdtJar is None:
                 log('Compiling Java sources for {0} with javac...'.format(p.name))
-
-
-                javacCmd = [java().javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir]
-                if java().debug_port is not None:
-                    javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(java().debug_port)]
+                javacCmd = [jdk.javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir]
+                if jdk.debug_port is not None:
+                    javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)]
                 javacCmd += processorArgs
                 javacCmd += ['@' + argfile.name]
 
@@ -1834,9 +1859,9 @@
             else:
                 log('Compiling Java sources for {0} with JDT...'.format(p.name))
 
-                jdtArgs = [java().java, '-Xmx1g']
-                if java().debug_port is not None:
-                    jdtArgs += ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(java().debug_port)]
+                jdtArgs = [jdk.java, '-Xmx1g']
+                if jdk.debug_port is not None:
+                    jdtArgs += ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)]
 
                 jdtArgs += ['-jar', jdtJar,
                          '-' + compliance,
@@ -1912,13 +1937,14 @@
         projects = [project(name) for name in args.projects.split(',')]
 
     class Batch:
-        def __init__(self, settingsFile):
+        def __init__(self, settingsFile, javaCompliance):
             self.path = settingsFile
+            self.javaCompliance = javaCompliance
             self.javafiles = list()
 
         def settings(self):
             with open(self.path) as fp:
-                return fp.read()
+                return fp.read() + java(self.javaCompliance).java
 
     class FileInfo:
         def __init__(self, path):
@@ -1943,7 +1969,7 @@
             continue
         sourceDirs = p.source_dirs()
 
-        batch = Batch(join(p.dir, '.settings', 'org.eclipse.jdt.core.prefs'))
+        batch = Batch(join(p.dir, '.settings', 'org.eclipse.jdt.core.prefs'), p.javaCompliance)
 
         if not exists(batch.path):
             if _opts.verbose:
@@ -1962,8 +1988,15 @@
         if res is not batch:
             res.javafiles = res.javafiles + batch.javafiles
 
+    print "we have: " + str(len(batches)) + " batches"
     for batch in batches.itervalues():
-        run([args.eclipse_exe, '-nosplash', '-application', 'org.eclipse.jdt.core.JavaCodeFormatter', '-config', batch.path] + [f.path for f in batch.javafiles])
+        run([args.eclipse_exe,
+            '-nosplash',
+            '-application',
+            'org.eclipse.jdt.core.JavaCodeFormatter',
+            '-vm', java(batch.javaCompliance).java,
+            '-config', batch.path]
+            + [f.path for f in batch.javafiles])
         for fi in batch.javafiles:
             if fi.update():
                 modified.append(fi)
@@ -2115,7 +2148,8 @@
                     else:
                         p = dep
                         # skip a  Java project if its Java compliance level is "higher" than the configured JDK
-                        if java().javaCompliance < p.javaCompliance:
+                        jdk = java(p.javaCompliance)
+                        if not jdk:
                             log('Excluding {0} from {2} (Java compliance level {1} required)'.format(p.name, p.javaCompliance, d.path))
                             continue
 
@@ -2296,7 +2330,8 @@
             abort('ERROR: .checkstyle for Project {0} is missing'.format(p.name))
 
         # skip checking this Java project if its Java compliance level is "higher" than the configured JDK
-        if java().javaCompliance < p.javaCompliance:
+        jdk = java(p.javaCompliance)
+        if not jdk:
             log('Excluding {0} from checking (Java compliance level {1} required)'.format(p.name, p.javaCompliance))
             continue
 
@@ -2720,6 +2755,10 @@
         if p.native:
             continue
 
+        if not java(p.javaCompliance):
+            log('Excluding {0} (JDK with compliance level {1} not available)'.format(p.name, p.javaCompliance))
+            continue
+
         if not exists(p.dir):
             os.makedirs(p.dir)
 
@@ -2964,7 +3003,7 @@
     launchOut.open('launchConfiguration', {'type' : 'org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType'})
     launchOut.element('booleanAttribute', {'key' : 'org.eclipse.debug.core.capture_output', 'value': consoleOn})
     launchOut.open('mapAttribute', {'key' : 'org.eclipse.debug.core.environmentVariables'})
-    launchOut.element('mapEntry', {'key' : 'JAVA_HOME', 'value' : java().jdk})
+    launchOut.element('mapEntry', {'key' : 'JAVA_HOME', 'value' : java(p.javaCompliance).jdk})
     launchOut.close('mapAttribute')
 
     if refresh:
@@ -3211,6 +3250,7 @@
     updated = False
     files = []
     libFiles = []
+    jdks = set()
     for p in suite.projects:
         if p.native:
             continue
@@ -3221,13 +3261,21 @@
         if not exists(join(p.dir, 'nbproject')):
             os.makedirs(join(p.dir, 'nbproject'))
 
+        jdk = java(p.javaCompliance)
+
+        if not jdk:        
+            log('Excluding {0} (JDK with compliance level {1} not available)'.format(p.name, p.javaCompliance))
+            continue
+        
+        jdks.add(jdk)
+
         out = XMLDoc()
         out.open('project', {'name' : p.name, 'default' : 'default', 'basedir' : '.'})
         out.element('description', data='Builds, tests, and runs the project ' + p.name + '.')
         out.element('import', {'file' : 'nbproject/build-impl.xml'})
         out.open('target', {'name' : '-post-compile'})
         out.open('exec', {'executable' : sys.executable})
-        out.element('env', {'key' : 'JAVA_HOME', 'value' : java().jdk})
+        out.element('env', {'key' : 'JAVA_HOME', 'value' : jdk.jdk})
         out.element('arg', {'value' : os.path.abspath(__file__)})
         out.element('arg', {'value' : 'archive'})
         out.element('arg', {'value' : '@GRAAL'})
@@ -3282,7 +3330,7 @@
         files.append(join(p.dir, 'nbproject', 'project.xml'))
 
         out = StringIO.StringIO()
-        jdkPlatform = 'JDK_' + str(java().version)
+        jdkPlatform = 'JDK_' + str(jdk.version)
 
         annotationProcessorEnabled = "false"
         annotationProcessorReferences = ""
@@ -3345,7 +3393,7 @@
 manifest.file=manifest.mf
 meta.inf.dir=${src.dir}/META-INF
 mkdist.disabled=false
-platforms.""" + jdkPlatform + """.home=""" + java().jdk + """
+platforms.""" + jdkPlatform + """.home=""" + jdk.jdk + """
 platform.active=""" + jdkPlatform + """
 run.classpath=\\
     ${javac.classpath}:\\
@@ -3425,7 +3473,9 @@
 
     if updated:
         log('If using NetBeans:')
-        log('  1. Ensure that a platform named "JDK_' + str(java().version) + '" is defined (Tools -> Java Platforms)')
+        log('  1. Ensure that the following platform(s) are defined (Tools -> Java Platforms):')
+        for jdk in jdks:
+            log('        JDK_' + str(jdk.version))
         log('  2. Open/create a Project Group for the directory containing the projects (File -> Project Group -> New Group... -> Folder of Projects)')
 
     _zip_files(files, suite.dir, configZip.path)
@@ -3596,7 +3646,7 @@
                 windowTitle = ['-windowtitle', p.name + ' javadoc']
             try:
                 log('Generating {2} for {0} in {1}'.format(p.name, out, docDir))
-                run([java().javadoc, memory,
+                run([java(p.javaCompliance).javadoc, memory,
                      '-XDignore.symbol.file',
                      '-classpath', cp,
                      '-quiet',
@@ -3625,7 +3675,7 @@
             sp += p.source_dirs()
             names.append(p.name)
 
-        links = ['-link', 'http://docs.oracle.com/javase/' + str(_java.javaCompliance.value) + '/docs/api/']
+        links = ['-link', 'http://docs.oracle.com/javase/' + str(java().javaCompliance.value) + '/docs/api/']
         out = join(_primary_suite.dir, docDir)
         if args.base is not None:
             out = join(args.base, docDir)
@@ -4105,9 +4155,16 @@
 
     opts, commandAndArgs = _argParser._parse_cmd_line()
 
-    global _opts, _java
+    global _opts, _java_homes
     _opts = opts
-    _java = JavaConfig(opts)
+    defaultJdk = JavaConfig(opts.java_home, opts.java_dbg_port)
+    _java_homes = [defaultJdk]
+    if opts.extra_java_homes:
+        for java_home in opts.extra_java_homes.split(os.pathsep):
+            extraJdk = JavaConfig(java_home, opts.java_dbg_port)
+            if extraJdk > defaultJdk:
+                abort('Secondary JDK ' + extraJdk.jdk + ' has higher compliance level than default JDK ' + defaultJdk.jdk)
+            _java_homes.append(extraJdk)
 
     for s in suites():
         s._post_init(opts)