Mercurial > hg > graal-compiler
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;