changeset 2975:cbece91420af

Merge.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 15 Jun 2011 17:47:05 +0200
parents d69b4d2eb499 (current diff) 4a64ffd60c03 (diff)
children 57c2e3409be7
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeBitMap.java
diffstat 55 files changed, 248 insertions(+), 238 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Wed Jun 15 17:47:05 2011 +0200
@@ -57,6 +57,8 @@
     public static boolean BailoutOnException                 = ____;
     public static boolean DeoptALot                          = ____;
 
+    public static boolean TestGraphDuplication               = ____;
+
     /**
      * See {@link Filter#Filter(String, Object)}.
      */
@@ -105,7 +107,7 @@
     // Code generator settings
     public static boolean GenLIR                             = true;
     public static boolean GenCode                            = true;
-    public static boolean UseBranchPrediction                = ____;
+    public static boolean UseBranchPrediction                = true;
 
     public static boolean UseConstDirectCall                 = ____;
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/debug/IdealGraphPrinter.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/debug/IdealGraphPrinter.java	Wed Jun 15 17:47:05 2011 +0200
@@ -173,7 +173,7 @@
             }
             for (Entry<Object, Object> entry : props.entrySet()) {
                 String key = entry.getKey().toString();
-                String value = entry.getValue().toString();
+                String value = entry.getValue() == null ? "null" : entry.getValue().toString();
                 stream.printf("    <p name='%s'>%s</p>%n", escape(key), escape(value));
             }
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java	Wed Jun 15 17:47:05 2011 +0200
@@ -72,7 +72,12 @@
 
 
         printGraph("After GraphBuilding", compilation.graph);
-        //new DuplicationPhase().apply(compilation.graph);
+
+        if (GraalOptions.TestGraphDuplication) {
+            new DuplicationPhase().apply(compilation.graph);
+            printGraph("After Duplication", compilation.graph);
+        }
+
         new DeadCodeEliminationPhase().apply(compilation.graph);
         printGraph("After DeadCodeElimination", compilation.graph);
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Deoptimize.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Deoptimize.java	Wed Jun 15 17:47:05 2011 +0200
@@ -22,6 +22,8 @@
  */
 package com.oracle.max.graal.compiler.ir;
 
+import java.util.*;
+
 import com.oracle.max.graal.compiler.debug.*;
 import com.oracle.max.graal.graph.*;
 import com.sun.cri.ci.*;
@@ -75,6 +77,14 @@
     }
 
     @Override
+    public Map<Object, Object> getDebugProperties() {
+        Map<Object, Object> properties = super.getDebugProperties();
+        properties.put("message", message);
+        properties.put("action", action);
+        return properties;
+    }
+
+    @Override
     public Node copy(Graph into) {
         Deoptimize x = new Deoptimize(action, into);
         x.setMessage(message);
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java	Wed Jun 15 17:47:05 2011 +0200
@@ -109,7 +109,7 @@
 
     @Override
     public String shortName() {
-        return "If " + compare().condition.operator;
+        return "If " + (compare() == null ? "?" : compare().condition.operator);
     }
 
     @Override
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/LoadField.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/LoadField.java	Wed Jun 15 17:47:05 2011 +0200
@@ -127,7 +127,7 @@
         @Override
         public Node lower(Node n, LoweringTool tool) {
             LoadField field = (LoadField) n;
-            return null;//field.field().createLoad(tool);
+            return null; //field.field().createLoad(tool);
         }
 
     }
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java	Wed Jun 15 17:47:05 2011 +0200
@@ -114,7 +114,7 @@
 
     @Override
     public Node copy(Graph into) {
-        Local x = new Local(kind, index, start(), into);
+        Local x = new Local(kind, index, null, into);
         x.setDeclaredType(declaredType());
         return x;
     }
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/LoopBegin.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/LoopBegin.java	Wed Jun 15 17:47:05 2011 +0200
@@ -43,7 +43,7 @@
                 }
             }
         }
-        assert false : "Begin should always have a LoopEnd";
+        assert false : "LoopBegin should always have a LoopEnd";
         return null;
     }
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java	Wed Jun 15 17:47:05 2011 +0200
@@ -74,10 +74,6 @@
  * </pre>
  * Note that the size {@link Bytecodes#ALLOCA ALLOCA} blocks and {@code monitor}s in the frame may be greater
  * than the size of a {@linkplain CiTarget#spillSlotSize spill slot}.
- *
- * @author Thomas Wuerthinger
- * @author Ben L. Titzer
- * @author Doug Simon
  */
 public final class FrameMap {
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java	Wed Jun 15 17:47:05 2011 +0200
@@ -32,38 +32,42 @@
 
     private NodeFlood flood;
     private Graph graph;
+    private ArrayList<LoopBegin> brokenLoops;
 
     @Override
     protected void run(Graph graph) {
         this.graph = graph;
         this.flood = graph.createNodeFlood();
+        this.brokenLoops = new ArrayList<LoopBegin>();
 
         // remove chained Merges
-//        for (Merge merge : graph.getNodes(Merge.class)) {
-//            if (merge.predecessors().size() == 1 && merge.usages().size() == 0) {
-//                if (merge.successors().get(0) instanceof Merge) {
-//                    Node pred = merge.predecessors().get(0);
-//                    int predIndex = merge.predecessorsIndex().get(0);
-//                    pred.successors().setAndClear(predIndex, merge, 0);
-//                    merge.delete();
-//                }
-//            }
-//        }
-//        Node startSuccessor = graph.start().successors().get(0);
-//        if (startSuccessor instanceof Merge) {
-//            Merge startMerge = (Merge) startSuccessor;
-//            if (startMerge.predecessors().size() == 1 && startMerge.usages().size() == 0) {
-//                int predIndex = startMerge.predecessorsIndex().get(0);
-//                graph.start().successors().setAndClear(predIndex, startMerge, 0);
-//                startMerge.delete();
-//            }
-//        }
+        for (Merge merge : graph.getNodes(Merge.class)) {
+            if (merge.predecessors().size() == 1 && merge.usages().size() == 0) {
+                if (merge.successors().get(0) instanceof Merge) {
+                    Node pred = merge.predecessors().get(0);
+                    int predIndex = merge.predecessorsIndex().get(0);
+                    pred.successors().setAndClear(predIndex, merge, 0);
+                    merge.delete();
+                }
+            }
+        }
+        Node startSuccessor = graph.start().successors().get(0);
+        if (startSuccessor instanceof Merge) {
+            Merge startMerge = (Merge) startSuccessor;
+            if (startMerge.predecessors().size() == 1 && startMerge.usages().size() == 0) {
+                int predIndex = startMerge.predecessorsIndex().get(0);
+                graph.start().successors().setAndClear(predIndex, startMerge, 0);
+                startMerge.delete();
+            }
+        }
 
         flood.add(graph.start());
 
         iterateSuccessors();
         disconnectCFGNodes();
 
+        deleteBrokenLoops();
+
         iterateInputs();
         disconnectNonCFGNodes();
 
@@ -111,6 +115,21 @@
         }
     }
 
+    private void deleteBrokenLoops() {
+        for (LoopBegin loop : brokenLoops) {
+            assert loop.predecessors().size() == 1;
+            for (Node usage : new ArrayList<Node>(loop.usages())) {
+                assert usage instanceof Phi;
+                usage.replace(((Phi) usage).valueAt(0));
+            }
+
+            Node pred = loop.predecessors().get(0);
+            int predIndex = loop.predecessorsIndex().get(0);
+            pred.successors().setAndClear(predIndex, loop, 0);
+            loop.delete();
+        }
+    }
+
     private void deleteCFGNodes() {
         for (Node node : graph.getNodes()) {
             if (node != Node.Null && !flood.isMarked(node) && isCFG(node)) {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java	Wed Jun 15 17:47:05 2011 +0200
@@ -821,7 +821,7 @@
                 LoadField load = new LoadField(container, field, graph);
                 appendOptimizedLoadField(kind, load);
             } else {
-                append(new Deoptimize(DeoptAction.InvalidateRecompile, graph));
+                // deopt will be generated by genTypeOrDeopt, not needed here
                 frameState.push(kind.stackKind(), append(Constant.defaultForKind(kind, graph)));
             }
         }
@@ -835,7 +835,7 @@
             StoreField store = new StoreField(container, field, value, graph);
             appendOptimizedStoreField(store);
         } else {
-            append(new Deoptimize(DeoptAction.InvalidateRecompile, graph));
+            // deopt will be generated by genTypeOrDeopt, not needed here
         }
     }
 
@@ -924,7 +924,9 @@
     private void appendInvoke(int opcode, RiMethod target, Value[] args, int cpi, RiConstantPool constantPool) {
         CiKind resultType = returnKind(target);
         if (GraalOptions.DeoptALot) {
-            append(new Deoptimize(DeoptAction.None, graph));
+            Deoptimize deoptimize = new Deoptimize(DeoptAction.None, graph);
+            deoptimize.setMessage("invoke " + target.name());
+            append(deoptimize);
             frameState.pushReturn(resultType, Constant.defaultForKind(resultType, graph));
         } else {
             Invoke invoke = new Invoke(bci(), opcode, resultType.stackKind(), args, target, target.signature().returnType(method.holder()), method.typeProfile(bci()), graph);
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java	Wed Jun 15 17:47:05 2011 +0200
@@ -230,7 +230,7 @@
                 }
             } else {
                 Block dominatorBlock = b.getPredecessors().get(0);
-                for (int i=1; i<b.getPredecessors().size(); ++i) {
+                for (int i = 1; i < b.getPredecessors().size(); ++i) {
                     dominatorBlock = getCommonDominator(dominatorBlock, b.getPredecessors().get(i));
                 }
                 CiBitMap blockMap = new CiBitMap(blocks.size());
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 17:47:05 2011 +0200
@@ -125,6 +125,7 @@
     public void delete() {
         assert !isDeleted();
         assert checkDeletion() : "Could not delete " + this;
+
         for (int i = 0; i < inputs.size(); ++i) {
             inputs.set(i, Null);
         }
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeBitMap.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeBitMap.java	Wed Jun 15 17:47:05 2011 +0200
@@ -65,7 +65,7 @@
         check(node);
         bitMap.clear(node.id());
     }
-    
+
     public void clearAll() {
         bitMap.clearAll();
     }
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/VMExitsNative.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/VMExitsNative.java	Wed Jun 15 17:47:05 2011 +0200
@@ -103,11 +103,12 @@
     public abstract class Sandbox {
 
         public void start() throws Throwable {
-            PrintStream oldOut = System.out;
-            PrintStream oldErr = System.err;
+            // (ls) removed output and error stream rewiring, this influences applications and, for example, makes dacapo tests fail.
+//            PrintStream oldOut = System.out;
+//            PrintStream oldErr = System.err;
             run();
-            System.setOut(oldOut);
-            System.setErr(oldErr);
+//            System.setOut(oldOut);
+//            System.setErr(oldErr);
         }
 
         protected abstract void run() throws Throwable;
--- a/src/share/tools/IdealGraphVisualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/BatikSVG.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/BatikSVG.java	Wed Jun 15 17:47:05 2011 +0200
@@ -44,7 +44,7 @@
     private static Method createDefaultMethod;
     private static Method getDOMImplementationMethod;
     private static Method setEmbeddedFontsOnMethod;
-    private static Class classSVGGraphics2D;
+    private static Class<?> classSVGGraphics2D;
 
     /**
      * Creates a graphics object that allows to be exported to SVG data using the {@link #printToStream(Graphics2D, Writer, boolean) printToStream} method.
@@ -54,8 +54,8 @@
         try {
             if (SVGGraphics2DConstructor == null) {
                 ClassLoader cl = BatikSVG.class.getClassLoader();
-                Class classGenericDOMImplementation = cl.loadClass("org.apache.batik.dom.GenericDOMImplementation");
-                Class classSVGGeneratorContext = cl.loadClass("org.apache.batik.svggen.SVGGeneratorContext");
+                Class<?> classGenericDOMImplementation = cl.loadClass("org.apache.batik.dom.GenericDOMImplementation");
+                Class<?> classSVGGeneratorContext = cl.loadClass("org.apache.batik.svggen.SVGGeneratorContext");
                 classSVGGraphics2D = cl.loadClass("org.apache.batik.svggen.SVGGraphics2D");
                 getDOMImplementationMethod = classGenericDOMImplementation.getDeclaredMethod("getDOMImplementation", new Class[0]);
                 createDefaultMethod = classSVGGeneratorContext.getDeclaredMethod("createDefault", new Class[]{org.w3c.dom.Document.class});
--- a/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeNode.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeNode.java	Wed Jun 15 17:47:05 2011 +0200
@@ -29,7 +29,6 @@
 import com.sun.hotspot.igv.data.Properties;
 import com.sun.hotspot.igv.data.Properties.StringPropertyMatcher;
 import java.awt.Image;
-import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -37,7 +36,7 @@
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Node;
-import org.openide.util.Utilities;
+import org.openide.util.ImageUtilities;
 
 /**
  *
@@ -70,9 +69,9 @@
     @Override
     public Image getIcon(int i) {
         if (nodes != null) {
-            return Utilities.loadImage("com/sun/hotspot/igv/bytecodes/images/link.gif");
+            return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/link.gif");
         } else {
-            return Utilities.loadImage("com/sun/hotspot/igv/bytecodes/images/bytecode.gif");
+            return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/bytecode.gif");
         }
     }
 
@@ -92,6 +91,7 @@
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public <T extends Node.Cookie> T getCookie(Class<T> aClass) {
         if (aClass == SelectBytecodesCookie.class && nodes != null) {
             return (T) (new SelectBytecodesCookie(nodes));
--- a/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.java	Wed Jun 15 17:47:05 2011 +0200
@@ -128,7 +128,7 @@
 
     @Override
     public void componentOpened() {
-        Lookup.Template tpl = new Lookup.Template(InputGraphProvider.class);
+        Lookup.Template<InputGraphProvider> tpl = new Lookup.Template<InputGraphProvider>(InputGraphProvider.class);
         result = Utilities.actionsGlobalContext().lookup(tpl);
         result.addLookupListener(this);
     }
--- a/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/MethodNode.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/MethodNode.java	Wed Jun 15 17:47:05 2011 +0200
@@ -30,7 +30,7 @@
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Node;
-import org.openide.util.Utilities;
+import org.openide.util.ImageUtilities;
 
 /**
  *
@@ -38,7 +38,7 @@
  */
 public class MethodNode extends AbstractNode {
 
-    private static class MethodNodeChildren extends Children.Keys {
+    private static class MethodNodeChildren extends Children.Keys<InputBytecode> {
 
         private InputMethod method;
         private InputGraph graph;
@@ -50,9 +50,7 @@
             this.graph = graph;
         }
 
-        protected Node[] createNodes(Object object) {
-            assert object instanceof InputBytecode;
-            InputBytecode bc = (InputBytecode) object;
+        protected Node[] createNodes(InputBytecode bc) {
             if (bc.getInlined() == null) {
                 return new Node[]{new BytecodeNode(bc, graph, bciString)};
             } else {
@@ -84,7 +82,7 @@
 
     @Override
     public Image getIcon(int i) {
-        return Utilities.loadImage("com/sun/hotspot/igv/bytecodes/images/method.gif");
+        return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/method.gif");
     }
 
     @Override
--- a/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowScene.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowScene.java	Wed Jun 15 17:47:05 2011 +0200
@@ -24,7 +24,6 @@
 package com.sun.hotspot.igv.controlflow;
 
 import com.sun.hotspot.igv.data.InputBlock;
-import com.sun.hotspot.igv.controlflow.InputBlockEdge;
 import com.sun.hotspot.igv.data.InputGraph;
 import com.sun.hotspot.igv.data.services.InputGraphProvider;
 import com.sun.hotspot.igv.data.InputNode;
@@ -44,15 +43,14 @@
 import org.netbeans.api.visual.action.WidgetAction;
 import org.netbeans.api.visual.anchor.AnchorFactory;
 import org.netbeans.api.visual.anchor.AnchorShape;
-import org.netbeans.api.visual.layout.LayoutFactory;
 import org.netbeans.api.visual.router.RouterFactory;
 import org.netbeans.api.visual.widget.LayerWidget;
 import org.netbeans.api.visual.widget.Widget;
 import org.netbeans.api.visual.graph.GraphScene;
 import org.netbeans.api.visual.graph.layout.GraphLayout;
+import org.netbeans.api.visual.layout.LayoutFactory;
 import org.netbeans.api.visual.layout.SceneLayout;
 import org.netbeans.api.visual.widget.ConnectionWidget;
-import org.openide.util.Utilities;
 
 /**
  *
@@ -121,7 +119,7 @@
             }
         }
 
-        GraphLayout layout = new HierarchicalGraphLayout();//GridGraphLayout();
+        GraphLayout<InputBlock, InputBlockEdge> layout = new HierarchicalGraphLayout<InputBlock, InputBlockEdge>();//GridGraphLayout();
         SceneLayout sceneLayout = LayoutFactory.createSceneGraphLayout(this, layout);
         sceneLayout.invokeLayout();
 
--- a/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponent.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponent.java	Wed Jun 15 17:47:05 2011 +0200
@@ -123,7 +123,7 @@
 
     @Override
     public void componentOpened() {
-        Lookup.Template tpl = new Lookup.Template(InputGraphProvider.class);
+        Lookup.Template<InputGraphProvider> tpl = new Lookup.Template<InputGraphProvider>(InputGraphProvider.class);
         result = Utilities.actionsGlobalContext().lookup(tpl);
         result.addLookupListener(this);
     }
--- a/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/HierarchicalGraphLayout.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/HierarchicalGraphLayout.java	Wed Jun 15 17:47:05 2011 +0200
@@ -34,7 +34,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -128,6 +127,7 @@
         }
 
         public int compareTo(Vertex o) {
+            @SuppressWarnings("unchecked")
             VertexWrapper vw = (VertexWrapper) o;
             return node.toString().compareTo(vw.node.toString());
         }
--- a/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java	Wed Jun 15 17:47:05 2011 +0200
@@ -36,7 +36,7 @@
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Node;
-import org.openide.util.Utilities;
+import org.openide.util.ImageUtilities;
 import org.openide.util.lookup.AbstractLookup;
 import org.openide.util.lookup.InstanceContent;
 
@@ -52,7 +52,7 @@
     private List<String> subFolders;
     private FolderChildren children;
 
-    private static class FolderChildren extends Children.Keys implements ChangedListener<Group> {
+    private static class FolderChildren extends Children.Keys<Pair<String, List<Group>>> implements ChangedListener<Group> {
 
         private FolderNode parent;
         private List<Group> registeredGroups;
@@ -68,14 +68,13 @@
         }
 
         @Override
-        protected Node[] createNodes(Object arg0) {
+        protected Node[] createNodes(Pair<String, List<Group>> p) {
 
             for(Group g : registeredGroups) {
                 g.getChangedEvent().removeListener(this);
             }
             registeredGroups.clear();
             
-            Pair<String, List<Group>> p = (Pair<String, List<Group>>) arg0;
             if (p.getLeft().length() == 0) {
 
                 List<Node> curNodes = new ArrayList<Node>();
@@ -116,7 +115,7 @@
 
     @Override
     public Image getIcon(int i) {
-        return Utilities.loadImage("com/sun/hotspot/igv/coordinator/images/folder.gif");
+        return ImageUtilities.loadImage("com/sun/hotspot/igv/coordinator/images/folder.gif");
     }
 
     protected FolderNode(GraphDocument document, String name, GroupOrganizer organizer, List<String> subFolders, List<Group> groups) {
--- a/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/GraphNode.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/GraphNode.java	Wed Jun 15 17:47:05 2011 +0200
@@ -37,8 +37,8 @@
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Sheet;
+import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
-import org.openide.util.Utilities;
 import org.openide.util.lookup.AbstractLookup;
 import org.openide.util.lookup.InstanceContent;
 
@@ -98,7 +98,7 @@
 
     @Override
     public Image getIcon(int i) {
-        return Utilities.loadImage("com/sun/hotspot/igv/coordinator/images/graph.gif");
+        return ImageUtilities.loadImage("com/sun/hotspot/igv/coordinator/images/graph.gif");
     }
 
     @Override
--- a/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/StandardConfiguration.xml	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/StandardConfiguration.xml	Wed Jun 15 17:47:05 2011 +0200
@@ -5,7 +5,6 @@
         <Toolbar name="Edit" position="1" visible="false"/>
         <Toolbar name="File" position="1" visible="false" />
         <Toolbar name="Memory" position="1" visible="false" />
-        <Toolbar name="QuickSearch" position="1" visible="true" />
     </Row>
     <Row>
         <Toolbar name="WorkspaceSwitcher" />
--- a/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/StructuredViewAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/StructuredViewAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -51,8 +51,8 @@
 import javax.swing.event.PopupMenuListener;
 import org.openide.awt.DropDownButtonFactory;
 import org.openide.util.HelpCtx;
+import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
-import org.openide.util.Utilities;
 import org.openide.util.actions.CallableSystemAction;
 
 public class StructuredViewAction extends CallableSystemAction {
@@ -71,7 +71,7 @@
     @Override
     public Component getToolbarPresenter() {
 
-        Image iconImage = Utilities.loadImage("com/sun/hotspot/igv/coordinator/images/structure.gif");
+        Image iconImage = ImageUtilities.loadImage("com/sun/hotspot/igv/coordinator/images/structure.gif");
         ImageIcon icon = new ImageIcon(iconImage);
 
         popup = new JPopupMenu();
--- a/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml	Wed Jun 15 17:47:05 2011 +0200
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
 <filesystem>
     <attr name="Actions\Edit\com-sun-hotspot-igv-bytecodes-SelectBytecodesAction.instance\position" intvalue="200"/>
     <attr name="Actions\Edit\org-netbeans-core-ui-sysopen-SystemOpenAction.instance\position" intvalue="100"/>
@@ -96,19 +96,16 @@
                 <attr name="originalFile" stringvalue="Actions/Window/com-sun-hotspot-igv-coordinator-actions-OutlineAction.instance"/>
             </file>
         </folder>
-    </folder>
-    <folder name="Toolbars">
         
-        <folder name="QuickSearch">
-            <attr name="SystemFileSystem.localizingBundle" stringvalue="com.sun.hotspot.igv.coordinator.Bundle"/>
+        <file name="Spacer.instance">
+            <attr name="instanceCreate" methodvalue="javax.swing.Box.createHorizontalGlue"/>
+            <attr name="position" intvalue="9980"/>
+        </file>
             <file name="org-netbeans-modules-quicksearch-QuickSearchAction.shadow">
-                <attr name="originalFile"
-                stringvalue="Actions/Edit/org-netbeans-modules-quicksearch-QuickSearchAction.instance"/>
+            <attr name="displayName" bundlevalue="com.sun.hotspot.igv.coordinator.Bundle#Toolbars/QuickSearch"/>
+            <attr name="originalFile" stringvalue="Actions/Edit/org-netbeans-modules-quicksearch-QuickSearchAction.instance"/>
             </file>
         </folder>
-        <!--<file name="Standard.xml" url="StandardConfiguration.xml"/>-->
-
-    </folder>
     <folder name="Windows2">
         <folder name="Components">
             <file name="OutlineTopComponent.settings" url="OutlineTopComponentSettings.xml"/>
--- a/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java	Wed Jun 15 17:47:05 2011 +0200
@@ -183,8 +183,12 @@
 
         private String name;
         private Pattern valuePattern;
+        
+        public RegexpPropertyMatcher(String name, String value) {
+            this(name, value, 0);
+        }
 
-        public RegexpPropertyMatcher(String name, String value) {
+        public RegexpPropertyMatcher(String name, String value, int flags) {
 
             if (name == null) {
                 throw new IllegalArgumentException("Property name must not be null!");
@@ -197,7 +201,7 @@
             this.name = name;
 
             try {
-                valuePattern = Pattern.compile(value);
+                valuePattern = Pattern.compile(value, flags);
             } catch (PatternSyntaxException e) {
                 throw new IllegalArgumentException("Bad pattern: " + value);
             }
--- a/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/Parser.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/Parser.java	Wed Jun 15 17:47:05 2011 +0200
@@ -32,7 +32,6 @@
 import com.sun.hotspot.igv.data.InputNode;
 import com.sun.hotspot.igv.data.Pair;
 import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Property;
 import com.sun.hotspot.igv.data.services.GroupCallback;
 import com.sun.hotspot.igv.data.serialization.XMLParser.ElementHandler;
 import com.sun.hotspot.igv.data.serialization.XMLParser.HandoverElementHandler;
@@ -92,7 +91,7 @@
     public static final String SUCCESSOR_ELEMENT = "successor";
     public static final String ASSEMBLY_ELEMENT = "assembly";
     public static final String DIFFERENCE_PROPERTY = "difference";
-    private TopElementHandler xmlDocument = new TopElementHandler();
+    private TopElementHandler<GraphDocument> xmlDocument = new TopElementHandler<GraphDocument>();
     private boolean difference;
     private GroupCallback groupCallback;
     private HashMap<String, Integer> idCache = new HashMap<String, Integer>();
--- a/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLParser.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLParser.java	Wed Jun 15 17:47:05 2011 +0200
@@ -23,7 +23,6 @@
  */
 package com.sun.hotspot.igv.data.serialization;
 
-import com.sun.hotspot.igv.data.Property;
 import com.sun.hotspot.igv.data.Properties;
 import java.util.HashMap;
 import java.util.Stack;
@@ -209,9 +208,10 @@
     public void endPrefixMapping(String prefix) throws SAXException {
     }
 
+    @SuppressWarnings("unchecked")
     public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
+        assert !stack.isEmpty();
 
-        assert !stack.isEmpty();
         ElementHandler parent = stack.peek();
         if (parent != null) {
             ElementHandler child = parent.getChild(qName);
--- a/src/share/tools/IdealGraphVisualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ChangedEventTest.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ChangedEventTest.java	Wed Jun 15 17:47:05 2011 +0200
@@ -62,7 +62,7 @@
     @Test
     public void testBase() {
 
-        ChangedEvent<Integer> e = new ChangedEvent(5);
+        ChangedEvent<Integer> e = new ChangedEvent<Integer>(5);
         final int[] fireCount = new int[1];
 
         e.addListener(new ChangedListener<Integer>() {
--- a/src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java	Wed Jun 15 17:47:05 2011 +0200
@@ -38,6 +38,7 @@
 import org.openide.filesystems.Repository;
 import org.openide.filesystems.FileSystem;
 import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
 import org.openide.util.Exceptions;
 import org.openide.util.Lookup;
 
@@ -126,8 +127,7 @@
         InputStream is = null;
         StringBuilder sb = new StringBuilder("importPackage(Packages.com.sun.hotspot.igv.filter);importPackage(Packages.com.sun.hotspot.igv.graph);importPackage(Packages.com.sun.hotspot.igv.data);importPackage(Packages.com.sun.hotspot.igv.util);importPackage(java.awt);");
         try {
-            FileSystem fs = Repository.getDefault().getDefaultFileSystem();
-            FileObject fo = fs.getRoot().getFileObject(JAVASCRIPT_HELPER_ID);
+            FileObject fo = FileUtil.getConfigRoot().getFileObject(JAVASCRIPT_HELPER_ID);
             is = fo.getInputStream();
             BufferedReader r = new BufferedReader(new InputStreamReader(is));
             String s;
--- a/src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.java	Wed Jun 15 17:47:05 2011 +0200
@@ -82,6 +82,7 @@
 import org.openide.filesystems.Repository;
 import org.openide.filesystems.FileSystem;
 import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
 
 /**
  * 
@@ -267,20 +268,18 @@
         }
     }
 
-    private class FilterChildren extends Children.Keys implements ChangedListener<CheckNode> {
+    private class FilterChildren extends Children.Keys<Filter> implements ChangedListener<CheckNode> {
 
-        private HashMap<Object, Node> nodeHash = new HashMap<Object, Node>();
+        private HashMap<Filter, Node> nodeHash = new HashMap<Filter, Node>();
 
-        protected Node[] createNodes(Object object) {
-            if (nodeHash.containsKey(object)) {
-                return new Node[]{nodeHash.get(object)};
+        protected Node[] createNodes(Filter filter) {
+            if (nodeHash.containsKey(filter)) {
+                return new Node[]{nodeHash.get(filter)};
             }
 
-            assert object instanceof Filter;
-            Filter filter = (Filter) object;
             FilterNode node = new FilterNode(filter);
             node.getSelectionChangedEvent().addListener(this);
-            nodeHash.put(object, node);
+            nodeHash.put(filter, node);
             return new Node[]{node};
         }
 
@@ -295,6 +294,7 @@
             setBefore(false);
         }
 
+        @Override
         protected void addNotify() {
             setKeys(sequence.getFilters());
             updateSelection();
@@ -420,9 +420,7 @@
     }
 
     public void initFilters() {
-
-        FileSystem fs = Repository.getDefault().getDefaultFileSystem();
-        FileObject folder = fs.getRoot().getFileObject(FOLDER_ID);
+        FileObject folder = FileUtil.getConfigRoot().getFileObject(FOLDER_ID);
         FileObject[] children = folder.getChildren();
 
         List<CustomFilter> customFilters = new ArrayList<CustomFilter>();
@@ -585,10 +583,10 @@
     }
 
     private FileObject getFileObject(CustomFilter cf) {
-        FileObject fo = Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject(FOLDER_ID + "/" + cf.getName());
+        FileObject fo = FileUtil.getConfigRoot().getFileObject(FOLDER_ID + "/" + cf.getName());
         if (fo == null) {
             try {
-                fo = org.openide.filesystems.Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject(FOLDER_ID).createData(cf.getName());
+                fo = FileUtil.getConfigRoot().getFileObject(FOLDER_ID).createData(cf.getName());
             } catch (IOException ex) {
                 Exceptions.printStackTrace(ex);
             }
--- a/src/share/tools/IdealGraphVisualizer/GraphTextEditor/src/com/sun/hotspot/igv/graphtexteditor/TextTopComponent.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/GraphTextEditor/src/com/sun/hotspot/igv/graphtexteditor/TextTopComponent.java	Wed Jun 15 17:47:05 2011 +0200
@@ -260,7 +260,7 @@
         DiagramProvider p = LookupHistory.getLast(DiagramProvider.class);
         updateDiagramProvider(p);
 
-        Lookup.Template tpl = new Lookup.Template(DiagramProvider.class);
+        Lookup.Template<DiagramProvider> tpl = new Lookup.Template<DiagramProvider>(DiagramProvider.class);
         result = Utilities.actionsGlobalContext().lookup(tpl);
         result.addLookupListener(this);
     }
--- a/src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/HierarchicalLayoutManager.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/HierarchicalLayoutManager.java	Wed Jun 15 17:47:05 2011 +0200
@@ -565,12 +565,16 @@
                 n.x = space[n.layer].get(n.pos);
             }
         }
-
-        protected void run() {
-
+        
+        @SuppressWarnings("unchecked")
+        private void createArrays() {
             space = new ArrayList[layers.length];
             downProcessingOrder = new ArrayList[layers.length];
             upProcessingOrder = new ArrayList[layers.length];
+        }
+
+        protected void run() {
+            createArrays();
 
             for (int i = 0; i < layers.length; i++) {
                 space[i] = new ArrayList<Integer>();
@@ -1106,14 +1110,18 @@
                 assert n.layer < layerCount;
             }
         }
-
-        protected void run() {
-
+        
+        @SuppressWarnings("unchecked")
+        private void createLayers() {
             layers = new List[layerCount];
 
             for (int i = 0; i < layerCount; i++) {
                 layers[i] = new ArrayList<LayoutNode>();
             }
+        }
+
+        protected void run() {
+            createLayers();
 
             // Generate initial ordering
             HashSet<LayoutNode> visited = new HashSet<LayoutNode>();
--- a/src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/OldHierarchicalLayoutManager.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/OldHierarchicalLayoutManager.java	Wed Jun 15 17:47:05 2011 +0200
@@ -499,7 +499,8 @@
         //}
 
 
-        ArrayList<Node<NodeData, EdgeData>> layers[] = new ArrayList[maxLayer + 1];
+        @SuppressWarnings("unchecked")
+        ArrayList<Node<NodeData, EdgeData>> layers[] = (ArrayList<Node<NodeData, EdgeData>>[]) new ArrayList[maxLayer + 1];
         int layerSizes[] = new int[maxLayer + 1];
         for (int i = 0; i < maxLayer + 1; i++) {
             layers[i] = new ArrayList<Node<NodeData, EdgeData>>();
@@ -1113,7 +1114,7 @@
         int removedCount = 0;
         int reversedCount = 0;
 
-        Graph.DFSTraversalVisitor visitor = graph.new DFSTraversalVisitor() {
+        Graph<NodeData, EdgeData>.DFSTraversalVisitor visitor = graph.new DFSTraversalVisitor() {
 
             @Override
             public boolean visitEdge(Edge<NodeData, EdgeData> e, boolean backEdge) {
@@ -1159,7 +1160,7 @@
             n.getData().setLayer(-1);
         }
 
-        Graph.BFSTraversalVisitor traverser = graph.new BFSTraversalVisitor() {
+        Graph<NodeData, EdgeData>.BFSTraversalVisitor traverser = graph.new BFSTraversalVisitor() {
 
             @Override
             public void visitNode(Node<NodeData, EdgeData> n, int depth) {
--- a/src/share/tools/IdealGraphVisualizer/Java6ScriptingProxy/src/com/sun/hotspot/igv/java6scriptingproxy/JavaSE6ScriptEngine.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Java6ScriptingProxy/src/com/sun/hotspot/igv/java6scriptingproxy/JavaSE6ScriptEngine.java	Wed Jun 15 17:47:05 2011 +0200
@@ -43,13 +43,12 @@
 
     public boolean initialize(String jsHelperText) {
         try {
-            
             ClassLoader cl = JavaSE6ScriptEngine.class.getClassLoader();
-            Class managerClass = cl.loadClass("javax.script.ScriptEngineManager");
-            Class engineClass = cl.loadClass("javax.script.ScriptEngine");
-            Class bindingsClass = cl.loadClass("javax.script.Bindings");
-            Class contextClass = cl.loadClass("javax.script.ScriptContext");
-            
+            Class<?> managerClass = cl.loadClass("javax.script.ScriptEngineManager");
+            Class<?> engineClass = cl.loadClass("javax.script.ScriptEngine");
+            Class<?> bindingsClass = cl.loadClass("javax.script.Bindings");
+            Class<?> contextClass = cl.loadClass("javax.script.ScriptContext");
+
             Object manager = managerClass.newInstance();
             Method getEngineByName = managerClass.getMethod("getEngineByName", String.class);
             engine = getEngineByName.invoke(manager, "ECMAScript");
@@ -63,7 +62,7 @@
             bindings = getBindings.invoke(context, f.getInt(null));
             Bindings_put = bindingsClass.getMethod("put", String.class, Object.class);
             Bindings_put.invoke(bindings, "IO", System.out);
-            
+
             /*
              * Non-reflective code: 
             ScriptEngineManager sem = new ScriptEngineManager();
--- a/src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/RhinoScriptEngine.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/RhinoScriptEngine.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,7 +27,6 @@
 import com.sun.hotspot.igv.filter.ScriptEngineAbstraction;
 import com.sun.hotspot.igv.graph.Diagram;
 import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -45,11 +44,11 @@
 
     public boolean initialize(String s) {
         this.jsHelperText = s;
-        Class importerTopLevel = null;
+        Class<?> importerTopLevel = null;
         try {
             ClassLoader cl = RhinoScriptEngine.class.getClassLoader();
-            Class context = cl.loadClass("org.mozilla.javascript.Context");
-            Class scriptable = cl.loadClass("org.mozilla.javascript.Scriptable");
+            Class<?> context = cl.loadClass("org.mozilla.javascript.Context");
+            Class<?> scriptable = cl.loadClass("org.mozilla.javascript.Scriptable");
             importerTopLevel = cl.loadClass("org.mozilla.javascript.ImporterTopLevel");
             importer = importerTopLevel.getDeclaredConstructor(context);
             scope_put = importerTopLevel.getMethod("put", String.class, scriptable, Object.class);
--- a/src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/ServerCompilerGraphToTextConverter.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/ServerCompilerGraphToTextConverter.java	Wed Jun 15 17:47:05 2011 +0200
@@ -149,7 +149,7 @@
     
     private static final PropertyMatcher MATCHER = new Properties.RegexpPropertyMatcher("name", "Root");
     public boolean canConvert(InputGraph graph) {
-        return new PropertySelector(graph.getNodes()).selectSingle(MATCHER) != null;
+        return new PropertySelector<InputNode>(graph.getNodes()).selectSingle(MATCHER) != null;
     }
 
     private Color calcColor(InputNode node) {
--- a/src/share/tools/IdealGraphVisualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsCategory.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsCategory.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,8 +27,8 @@
 import javax.swing.ImageIcon;
 import org.netbeans.spi.options.OptionsCategory;
 import org.netbeans.spi.options.OptionsPanelController;
+import org.openide.util.ImageUtilities;
 import org.openide.util.NbBundle;
-import org.openide.util.Utilities;
 
 /**
  *
@@ -38,7 +38,7 @@
 
     @Override
     public Icon getIcon() {
-        return new ImageIcon(Utilities.loadImage("com/sun/hotspot/igv/settings/settings.gif"));
+        return new ImageIcon(ImageUtilities.loadImage("com/sun/hotspot/igv/settings/settings.gif"));
     }
 
     public String getCategoryName() {
--- a/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/LookupHistory.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/LookupHistory.java	Wed Jun 15 17:47:05 2011 +0200
@@ -21,10 +21,9 @@
  * questions.
  *
  */
-
 package com.sun.hotspot.igv.util;
 
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.Map;
 import org.openide.util.Lookup.Result;
 import org.openide.util.LookupEvent;
@@ -37,13 +36,12 @@
  */
 public class LookupHistory {
 
-    private static Map<Class, LookupHistoryImpl> cache = new Hashtable<Class, LookupHistoryImpl>();
+    private static Map<Class, LookupHistoryImpl> cache = new HashMap<Class, LookupHistoryImpl>();
 
     private static class LookupHistoryImpl<T> implements LookupListener {
 
         private Class<T> klass;
         private Result<T> result;
-
         private T last;
 
         public LookupHistoryImpl(Class<T> klass) {
@@ -65,20 +63,16 @@
         }
     }
 
-
-    public static void init(Class klass) {
-
+    public static <T> void init(Class<T> klass) {
         if (!cache.containsKey(klass)) {
-            cache.put(klass, new LookupHistoryImpl(klass));
+            cache.put(klass, new LookupHistoryImpl<T>(klass));
         }
     }
 
+    @SuppressWarnings("unchecked")
     public static <T> T getLast(Class<T> klass) {
-
         init(klass);
-
         assert cache.containsKey(klass);
-
         return (T) cache.get(klass).getLast();
     }
 }
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramScene.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramScene.java	Wed Jun 15 17:47:05 2011 +0200
@@ -57,8 +57,6 @@
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionListener;
 import java.awt.event.MouseWheelEvent;
 import java.awt.event.MouseWheelListener;
 import java.util.ArrayList;
@@ -123,6 +121,7 @@
     private DiagramViewModel model;
     private DiagramViewModel modelCopy;
     private WidgetAction zoomAction;
+    private boolean rebuilding;
     
     /**
      * The alpha level of partially visible figures.
@@ -327,6 +326,11 @@
         }
 
         public void selectionChanged(ObjectSceneEvent e, Set<Object> oldSet, Set<Object> newSet) {
+            DiagramScene scene = (DiagramScene) e.getObjectScene();
+            if (scene.isRebuilding()) {
+                return;
+            }
+
             content.set(newSet, null);
 
             Set<Integer> nodeSelection = new HashSet<Integer>();
@@ -507,6 +511,8 @@
     private void update() {
         mainLayer.removeChildren();
         blockLayer.removeChildren();
+        
+        rebuilding = true;
 
         Collection<Object> objects = new ArrayList<Object>(this.getObjects());
         for (Object o : objects) {
@@ -515,7 +521,7 @@
 
         Diagram d = getModel().getDiagramToView();
 
-        if (d.getGraph().getBlocks().size() == 0) {
+        if (d.getGraph().getBlocks().isEmpty()) {
             Scheduler s = Lookup.getDefault().lookup(Scheduler.class);
             d.getGraph().clearBlocks();
             s.schedule(d.getGraph());
@@ -557,9 +563,13 @@
                 blockLayer.addChild(w);
             }
         }
-
+        
+        rebuilding = false;
         this.smallUpdate(true);
-
+    }
+    
+    public boolean isRebuilding() {
+        return rebuilding;
     }
 
     private void smallUpdate(boolean relayout) {
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewModel.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewModel.java	Wed Jun 15 17:47:05 2011 +0200
@@ -249,7 +249,6 @@
                     index++;
                 }
             }
-            this.setColors(colors);
         }
         setColors(colors);
         viewChangedEvent.fire();
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewer.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewer.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,6 +27,7 @@
 import com.sun.hotspot.igv.graph.Figure;
 import java.awt.Component;
 import java.awt.Graphics2D;
+import java.util.Collection;
 import java.util.List;
 import javax.swing.JComponent;
 import org.openide.awt.UndoRedo;
@@ -57,6 +58,8 @@
     public void componentShowing();
 
     public void initialize();
+    
+    public void setSelection(Collection<Figure> list);
 
     public void centerFigures(List<Figure> list);
 
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/EditorTopComponent.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/EditorTopComponent.java	Wed Jun 15 17:47:05 2011 +0200
@@ -46,7 +46,6 @@
 import com.sun.hotspot.igv.data.services.InputGraphProvider;
 import com.sun.hotspot.igv.filter.FilterChainProvider;
 import com.sun.hotspot.igv.graph.services.DiagramProvider;
-import com.sun.hotspot.igv.selectioncoordinator.SelectionCoordinator;
 import com.sun.hotspot.igv.util.RangeSlider;
 import com.sun.hotspot.igv.svg.BatikSVG;
 import com.sun.hotspot.igv.util.LookupHistory;
@@ -54,7 +53,6 @@
 import java.awt.CardLayout;
 import java.awt.Color;
 import java.awt.Graphics2D;
-import java.awt.Point;
 import java.awt.event.HierarchyBoundsListener;
 import java.awt.event.HierarchyEvent;
 import java.awt.event.KeyEvent;
@@ -436,7 +434,7 @@
     }
 
     public void setSelectedFigures(List<Figure> list) {
-        getModel().setSelectedFigures(list);
+        scene.setSelection(list);
         scene.centerFigures(list);
     }
 
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/NodeQuickSearch.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/NodeQuickSearch.java	Wed Jun 15 17:47:05 2011 +0200
@@ -33,11 +33,13 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.regex.Pattern;
 import org.netbeans.spi.quicksearch.SearchProvider;
 import org.netbeans.spi.quicksearch.SearchRequest;
 import org.netbeans.spi.quicksearch.SearchResponse;
 import org.openide.DialogDisplayer;
 import org.openide.NotifyDescriptor;
+import org.openide.NotifyDescriptor.Message;
 
 /**
  *
@@ -45,6 +47,8 @@
  */
 public class NodeQuickSearch implements SearchProvider {
 
+    private static final String DEFAULT_PROPERTY = "name";
+
     /**
      * Method is called by infrastructure when search operation was requested.
      * Implementors should evaluate given request and fill response object with
@@ -54,51 +58,67 @@
      * @param response Search response object that stores search results. Note that it's important to react to return value of SearchResponse.addResult(...) method and stop computation if false value is returned.
      */
     public void evaluate(SearchRequest request, SearchResponse response) {
-
-        final String[] parts = request.getText().split("=");
-        if (parts.length == 0) {
+        String query = request.getText();
+        if (query.trim().isEmpty()) {
             return;
         }
 
-        String tmpName = parts[0];
+        final String[] parts = query.split("=", 2);
+
+        String name;
+        String value;
 
-        String value = null;
-        if (parts.length == 2) {
+        if (parts.length == 1) {
+            name = DEFAULT_PROPERTY;
+            value = ".*" + Pattern.quote(parts[0]) + ".*";
+        } else {
+            name = parts[0];
             value = parts[1];
         }
 
-        if (parts.length == 1 && request.getText().endsWith("=")) {
+        if (value.isEmpty()) {
             value = ".*";
         }
 
-        final String name = tmpName;
+        final InputGraphProvider p = LookupHistory.getLast(InputGraphProvider.class);
+        if (p != null && p.getGraph() != null) {
+            List<InputNode> matches = null;
+            try {
+                RegexpPropertyMatcher matcher = new RegexpPropertyMatcher(name, value, Pattern.CASE_INSENSITIVE);
+                Properties.PropertySelector<InputNode> selector = new Properties.PropertySelector<InputNode>(p.getGraph().getNodes());
 
-        if (value != null) {
-            final InputGraphProvider p = LookupHistory.getLast(InputGraphProvider.class);//)Utilities.actionsGlobalContext().lookup(InputGraphProvider.class);
-            if (p != null) {
-                final InputGraph graph = p.getGraph();
-                if (graph != null) {
-                    final RegexpPropertyMatcher matcher = new RegexpPropertyMatcher(name, value);
-                    final Properties.PropertySelector<InputNode> selector = new Properties.PropertySelector<InputNode>(graph.getNodes());
-                    final List<InputNode> list = selector.selectMultiple(matcher);
-                    final Set<InputNode> set = new HashSet<InputNode>(list);
+                matches = selector.selectMultiple(matcher);
+            } catch (Exception e) {
+                final String msg = e.getMessage();
+                response.addResult(new Runnable() {
+                        public void run() {
+                            Message desc = new NotifyDescriptor.Message("An exception occurred during the search, "
+                                    + "perhaps due to a malformed query string:\n" + msg,
+                                    NotifyDescriptor.WARNING_MESSAGE);
+                            DialogDisplayer.getDefault().notify(desc);
+                        }
+                    },
+                    "(Error during search)"
+                );
+            }
 
-                    response.addResult(new Runnable() {
-
+            if (matches != null) {
+                final Set<InputNode> set = new HashSet<InputNode>(matches);
+                response.addResult(new Runnable() {
                         public void run() {
-
                             final EditorTopComponent comp = EditorTopComponent.getActive();
                             if (comp != null) {
                                 comp.setSelectedNodes(set);
                                 comp.requestActive();
                             }
                         }
-                    }, "All " + list.size() + " matching nodes (" + name + "=" + value + ")");
-                    for (final InputNode n : list) {
+                    },
+                    "All " + matches.size() + " matching nodes (" + name + "=" + value + ")"
+                );
 
-
-                        response.addResult(new Runnable() {
-
+                // Single matches
+                for (final InputNode n : matches) {
+                    response.addResult(new Runnable() {
                             public void run() {
                                 final EditorTopComponent comp = EditorTopComponent.getActive();
                                 if (comp != null) {
@@ -106,68 +126,15 @@
                                     tmpSet.add(n);
                                     comp.setSelectedNodes(tmpSet);
                                     comp.requestActive();
-                                    comp.requestFocus();
                                 }
                             }
-                        }, n.getProperties().get(name) + " (" + n.getId() + " " + n.getProperties().get("name") + ")");
-                    }
-                }
-
-            } else {
-                System.out.println("no input graph provider!");
-            }
-
-        } else if (parts.length == 1) {
-
-            final InputGraphProvider p = LookupHistory.getLast(InputGraphProvider.class);//Utilities.actionsGlobalContext().lookup(InputGraphProvider.class);
-
-            if (p != null) {
-
-                final InputGraph graph = p.getGraph();
-                if (p != null && graph != null) {
-
-                    Set<String> properties = new HashSet<String>();
-                    for (InputNode n : p.getGraph().getNodes()) {
-                        for (Property property : n.getProperties()) {
-                            properties.add(property.getName());
-                        }
-                    }
-
-                    for (final String propertyName : properties) {
-
-                        if (propertyName.startsWith(name)) {
-
-                            response.addResult(new Runnable() {
-
-                                public void run() {
-
-                                    NotifyDescriptor.InputLine d =
-                                            new NotifyDescriptor.InputLine("Value of the property?", "Property Value Input");
-                                    if (DialogDisplayer.getDefault().notify(d) == NotifyDescriptor.OK_OPTION) {
-                                        String value = d.getInputText();
-                                        final RegexpPropertyMatcher matcher = new RegexpPropertyMatcher(propertyName, value);
-                                        final Properties.PropertySelector<InputNode> selector = new Properties.PropertySelector<InputNode>(graph.getNodes());
-                                        final List<InputNode> list = selector.selectMultiple(matcher);
-                                        final Set<InputNode> set = new HashSet<InputNode>(list);
-
-                                        final EditorTopComponent comp = EditorTopComponent.getActive();
-                                        if (comp != null) {
-                                            comp.setSelectedNodes(set);
-                                            comp.requestActive();
-                                        }
-
-                                    }
-
-
-                                }
-                            }, propertyName + "=");
-                        }
-                    }
-
-                } else {
-                    System.out.println("no input graph provider!");
+                        },
+                        n.getProperties().get(name) + " (" + n.getId() + " " + n.getProperties().get("name") + ")"
+                    );
                 }
             }
+        } else {
+            System.out.println("no input graph provider!");
         }
     }
 }
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/EnableBlockLayoutAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/EnableBlockLayoutAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,6 +27,7 @@
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.ImageIcon;
+import org.openide.util.ImageUtilities;
 
 /**
  *
@@ -39,7 +40,7 @@
 
     public EnableBlockLayoutAction() {
         state = true;
-        putValue(AbstractAction.SMALL_ICON, new ImageIcon(org.openide.util.Utilities.loadImage(iconResource())));
+        putValue(AbstractAction.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage(iconResource())));
         putValue(STATE, true);
         putValue(Action.SHORT_DESCRIPTION, "Cluster nodes into blocks");
     }
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/NextDiagramAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/NextDiagramAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -29,6 +29,7 @@
 import javax.swing.Action;
 import javax.swing.ImageIcon;
 import org.openide.util.HelpCtx;
+import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.NbBundle;
 import org.openide.util.Utilities;
@@ -47,7 +48,7 @@
 
     public NextDiagramAction(Lookup lookup) {
         putValue(Action.SHORT_DESCRIPTION, "Show next graph of current group");
-        putValue(Action.SMALL_ICON, new ImageIcon(Utilities.loadImage("com/sun/hotspot/igv/view/images/next_diagram.png")));
+        putValue(Action.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage("com/sun/hotspot/igv/view/images/next_diagram.png")));
     }
 
     public String getName() {
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/OverviewAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/OverviewAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,6 +27,7 @@
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.ImageIcon;
+import org.openide.util.ImageUtilities;
 
 /**
  *
@@ -38,7 +39,7 @@
     public static final String STATE = "state";
 
     public OverviewAction() {
-        putValue(AbstractAction.SMALL_ICON, new ImageIcon(org.openide.util.Utilities.loadImage(iconResource())));
+        putValue(AbstractAction.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage(iconResource())));
         putValue(Action.SHORT_DESCRIPTION, "Show satellite view of whole graph");
         setState(false);
     }
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/PredSuccAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/PredSuccAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -27,6 +27,7 @@
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.ImageIcon;
+import org.openide.util.ImageUtilities;
 
 /**
  *
@@ -39,7 +40,7 @@
 
     public PredSuccAction() {
         state = true;
-        putValue(AbstractAction.SMALL_ICON, new ImageIcon(org.openide.util.Utilities.loadImage(iconResource())));
+        putValue(AbstractAction.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage(iconResource())));
         putValue(STATE, true);
         putValue(Action.SHORT_DESCRIPTION, "Show neighboring nodes of fully visible nodes semi-transparent");
     }
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/PrevDiagramAction.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/PrevDiagramAction.java	Wed Jun 15 17:47:05 2011 +0200
@@ -29,6 +29,7 @@
 import javax.swing.Action;
 import javax.swing.ImageIcon;
 import org.openide.util.HelpCtx;
+import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.NbBundle;
 import org.openide.util.Utilities;
@@ -47,7 +48,7 @@
 
     public PrevDiagramAction(Lookup lookup) {
         putValue(Action.SHORT_DESCRIPTION, "Show previous graph of current group");
-        putValue(Action.SMALL_ICON, new ImageIcon(Utilities.loadImage("com/sun/hotspot/igv/view/images/prev_diagram.png")));
+        putValue(Action.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage("com/sun/hotspot/igv/view/images/prev_diagram.png")));
     }
 
     public String getName() {
--- a/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/SlotWidget.java	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/SlotWidget.java	Wed Jun 15 17:47:05 2011 +0200
@@ -152,9 +152,9 @@
     protected abstract int calculateSlotWidth();
     
     protected int calculateWidth(int count) {
-        return (int)getFigureWidget().getFigure().getWidth() / count;
+        return getFigureWidget().getFigure().getWidth() / count;
     }
-    
+
     public void handleDoubleClick(Widget w, WidgetAction.WidgetMouseEvent e) {
         Set<Integer> hiddenNodes = new HashSet<Integer>(diagramScene.getModel().getHiddenNodes());
         if (diagramScene.isAllVisible()) {
--- a/src/share/tools/IdealGraphVisualizer/nbproject/project.properties	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/tools/IdealGraphVisualizer/nbproject/project.properties	Wed Jun 15 17:47:05 2011 +0200
@@ -55,4 +55,3 @@
 project.com.sun.hotspot.igv.util=Util
 project.test=module1
 run.args = -J-client -J-Xms128m -J-Xmx512m -J-ea
-debug.args = -J-client -J-Xms128m -J-Xmx512m -J-ea
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Wed Jun 15 17:47:05 2011 +0200
@@ -156,8 +156,7 @@
     if (index >= 0) {
       value = new LocationValue(Location::new_stk_loc(locationType, index * HeapWordSize));
     } else {
-      int frame_size_bytes = frame_size + 2 * HeapWordSize;
-      value = new LocationValue(Location::new_stk_loc(locationType, -(index * HeapWordSize) + frame_size_bytes));
+      value = new LocationValue(Location::new_stk_loc(locationType, -(index * HeapWordSize) + frame_size));
     }
     if (type == T_DOUBLE || type == T_LONG) {
       second = value;
--- a/src/share/vm/graal/graalVMExits.cpp	Wed Jun 15 17:45:00 2011 +0200
+++ b/src/share/vm/graal/graalVMExits.cpp	Wed Jun 15 17:47:05 2011 +0200
@@ -113,6 +113,7 @@
 }
 
 void VMExits::shutdownCompiler() {
+  HandleMark hm;
   JavaThread* THREAD = JavaThread::current();
   JavaValue result(T_VOID);
   JavaCallArguments args;