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

Reply via email to