Revision: 2962 http://vexi.svn.sourceforge.net/vexi/?rev=2962&view=rev Author: mkpg2 Date: 2008-07-09 19:39:19 -0700 (Wed, 09 Jul 2008)
Log Message: ----------- Fixed and cleaned up Devl Memory mode Modified Paths: -------------- trunk/core/org.vexi.devl/src/org/vexi/devl/Main.java trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/GCUtil.java trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/Memory.java trunk/core/org.vexi.devl/src/org/vexi/process/SwingConsole.java Modified: trunk/core/org.vexi.devl/src/org/vexi/devl/Main.java =================================================================== --- trunk/core/org.vexi.devl/src/org/vexi/devl/Main.java 2008-07-09 18:48:23 UTC (rev 2961) +++ trunk/core/org.vexi.devl/src/org/vexi/devl/Main.java 2008-07-10 02:39:19 UTC (rev 2962) @@ -1,5 +1,7 @@ package org.vexi.devl; +import java.net.URL; + import org.ibex.js.*; import org.ibex.util.Log; import org.vexi.core.*; @@ -37,29 +39,38 @@ Runtime.getRuntime().exit(-1); } + static private String getArgPathFromURL(URL url){ + String urlStr = url.toString(); + if(urlStr.lastIndexOf(':')!=-1) + urlStr = urlStr.substring(urlStr.lastIndexOf(':')+1); + return urlStr; + } public void start(final String[] args) throws Exception { Fountain rr = init(args,1); String instrumentation = args[0]; if("debugger".equals(instrumentation)){ - throw new RuntimeException("Requires maintainance!!"); + URL r1 = Main.class.getResource("widgets.vexi"); + URL r2 = Main.class.getResource("debuggerclient.vexi"); + org.vexi.core.Main.main(new String[]{"-t","org.vexi.debugclient.ui.main",getArgPathFromURL(r1), getArgPathFromURL(r2)}); + }else if("debuggee".equals(instrumentation)){ + new DebugHandler(rr); //FIXME //System.setProperty("biscuitkey", "debugger"); - new DebugHandler(rr); - throw new RuntimeException("Requires maintainance!!"); }else if("memory".equals(instrumentation)){ new Memory(); }else if("profile".equals(instrumentation)){ new Profile(); + }else if("checking".equals(instrumentation)){ + TemplateBuilder.setTemplateBuilder(new DevlTemplateBuilder()); + }else{ printUsage(); } - TemplateBuilder.setTemplateBuilder(new DevlTemplateBuilder()); - org.vexi.core.Main.start(rr); - //FIXME - //DebugHandler.instance.finish(); - + + + org.vexi.core.Main.start(rr); System.exit(0); } Modified: trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/GCUtil.java =================================================================== --- trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/GCUtil.java 2008-07-09 18:48:23 UTC (rev 2961) +++ trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/GCUtil.java 2008-07-10 02:39:19 UTC (rev 2962) @@ -34,7 +34,8 @@ * should be GCed */ public static void assertGC(String text, java.lang.ref.Reference ref) { - ArrayList alloc = new ArrayList (); + Log.uWarn("GCUtil", "Making sure of GC, this may take a while ..."); + ArrayList alloc = new ArrayList (); int size = 100000; for (int i = 0; i < 50; i++) { if (ref.get() == null) { @@ -55,7 +56,7 @@ } } alloc = null; - Log.uWarn("GCUtil", "Reference not GC'd. Processing heap now, this may take a while ..."); + Log.uWarn("GCUtil", "Reference not GC'd. Processing heap now, this may also take a while ..."); throw new AssertionError(text + ":\n" + findRefsFromRoot(ref.get())); } Modified: trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/Memory.java =================================================================== --- trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/Memory.java 2008-07-09 18:48:23 UTC (rev 2961) +++ trunk/core/org.vexi.devl/src/org/vexi/instrument/memory/Memory.java 2008-07-10 02:39:19 UTC (rev 2962) @@ -2,8 +2,9 @@ import java.awt.*; import java.awt.event.*; -import java.lang.ref.WeakReference; +import java.lang.ref.*; import java.util.*; +import java.util.List; import javax.swing.*; @@ -14,7 +15,7 @@ public class Memory extends JS.Immutable implements Instr.Memory { static JS MARKER = new JS.Obj(); - static WeakReference MARKER_REF; + static Reference MARKER_REF; public Memory() { Instr.devl = this; @@ -28,7 +29,7 @@ if(MARKER == null) return null; JS r = MARKER; - MARKER_REF = new WeakReference(MARKER); + MARKER_REF = new SoftReference(MARKER); MARKER = null; return r; } @@ -50,28 +51,23 @@ public void dumpStacks(){ System.err.println("Object creation dump"); - - //while(JSU.stackToCount.size()>0){ - for(int i=0;i<10 && stackToCount.size()>0; i++){ - Integer highest = ZERO; - Iterator Vs = stackToCount.values().iterator(); - while(Vs.hasNext()){ - Integer next = (Integer)Vs.next(); - if(next.intValue()>highest.intValue()) - highest = next; + List l = new ArrayList(stackToCount.keySet()); + Collections.sort(l, new Comparator(){ + public int compare(Object sa, Object sb) { + int ca = ((Integer)stackToCount.get(sa)).intValue(); + int cb = ((Integer)stackToCount.get(sb)).intValue(); + if(ca==cb) return 0; + if(ca>cb) return -1; + return 1; } - Iterator Ks = stackToCount.keySet().iterator(); - while(Ks.hasNext()){ - String k = (String)Ks.next(); - Integer v = (Integer)stackToCount.get(k); - if(v.intValue()==highest.intValue()){ - System.err.println(v); - System.err.println(k); - stackToCount.remove(k); - break; - } - } + }); + + for(int i=0;i<15; i++){ + Object s = l.get(i); + System.err.println(stackToCount.get(s)); + System.err.println(s); + } } @@ -120,7 +116,7 @@ hashToObjInfo.put(hash, oi); Integer c = (Integer)stackToCount.get(oi.bt); - if(c==null) stackToCount.put(oi.bt,new Integer(0)); + if(c==null) stackToCount.put(oi.bt,new Integer(1)); else stackToCount.put(oi.bt,new Integer(c.intValue()+1)); } } @@ -174,9 +170,17 @@ } }); - JButton button3 = new JButton("Assert GC"); - button2.addActionListener(new ActionListener(){ + JButton button3 = new JButton("GC"); + button3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { + System.gc(); + System.runFinalization(); + } + }); + + JButton button4 = new JButton("Assert GC"); + button4.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { assertCollection(); } }); @@ -184,6 +188,7 @@ frame.add(button1); frame.add(button2); frame.add(button3); + frame.add(button4); frame.setSize(100,200); frame.setVisible(true); } Modified: trunk/core/org.vexi.devl/src/org/vexi/process/SwingConsole.java =================================================================== --- trunk/core/org.vexi.devl/src/org/vexi/process/SwingConsole.java 2008-07-09 18:48:23 UTC (rev 2961) +++ trunk/core/org.vexi.devl/src/org/vexi/process/SwingConsole.java 2008-07-10 02:39:19 UTC (rev 2962) @@ -15,7 +15,7 @@ public SwingConsole(){ //Constructor // Create Frame - f = new JFrame("Swing Demo"); + f = new JFrame("Vexi Console"); f.getContentPane().setLayout(new BorderLayout()); f.setSize(new Dimension(300,300)); // Create Scrolling Text Area in Swing This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn