< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaHeap.java

Print this page




  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 package sun.jvm.hotspot.utilities.soql;
  26 
  27 import java.util.*;
  28 import javax.script.ScriptException;
  29 import sun.jvm.hotspot.debugger.*;

  30 import sun.jvm.hotspot.memory.*;
  31 import sun.jvm.hotspot.oops.*;
  32 import sun.jvm.hotspot.runtime.*;
  33 import sun.jvm.hotspot.utilities.*;
  34 import java.lang.reflect.Method;
  35 
  36 public class JSJavaHeap extends DefaultScriptObject {
  37     private static final int FIELD_CAPACITY = 0;
  38     private static final int FIELD_USED = 1;
  39     private static final int FIELD_FOR_EACH_OBJECT = 2;
  40     private static final int FIELD_FOR_EACH_CLASS = 3;
  41 
  42     private static final int FIELD_UNDEFINED = -1;
  43 
  44     public JSJavaHeap(JSJavaFactory fac) {
  45         this.factory = fac;
  46     }
  47 
  48     public Object get(String name) {
  49         int fieldID = getFieldID(name);


 149         case 2: {
 150             Object b = args[1];
 151             if (b instanceof Boolean) {
 152                 withLoader = ((Boolean)b).booleanValue();
 153             }
 154         }
 155         case 1: {
 156             Object f = args[0];
 157             if (f instanceof Callable) {
 158                 func = (Callable) f;
 159             } else {
 160                 return;
 161             }
 162         }
 163         break;
 164         default:
 165             return;
 166         }
 167 
 168       final Callable finalFunc = func;
 169         SystemDictionary sysDict = VM.getVM().getSystemDictionary();
 170         if (withLoader) {
 171             sysDict.classesDo(new SystemDictionary.ClassAndLoaderVisitor() {
 172                     public void visit(Klass kls, Oop loader) {
 173                         JSJavaKlass  jk = factory.newJSJavaKlass(kls);

 174                         if (jk == null) {
 175                             return;
 176                         }
 177                         JSJavaObject k = jk.getJSJavaClass();
 178                         JSJavaObject l = factory.newJSJavaObject(loader);
 179                         if (k != null) {
 180                           if (l != null) {
 181                             try {
 182                               finalFunc.call(new Object[] { k, l });
 183                             } catch (ScriptException exp) {
 184                               throw new RuntimeException(exp);
 185                             }
 186                           }
 187                        }
 188                     }
 189                 });
 190 
 191         } else {
 192             sysDict.classesDo(new SystemDictionary.ClassVisitor() {
 193                     public void visit(Klass kls) {
 194                         JSJavaKlass jk = factory.newJSJavaKlass(kls);
 195                         if (jk == null) {
 196                             return;
 197                         }
 198                         JSJavaClass k = jk.getJSJavaClass();
 199                         if (k != null) {
 200                             if (k != null) {
 201                         try {
 202                                   finalFunc.call(new Object[] { k });
 203                         } catch (ScriptException exp) {
 204                           throw new RuntimeException(exp);
 205                         }
 206                             }
 207                         }
 208                     }
 209                 });
 210         }
 211     }
 212 




  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 package sun.jvm.hotspot.utilities.soql;
  26 
  27 import java.util.*;
  28 import javax.script.ScriptException;
  29 import sun.jvm.hotspot.debugger.*;
  30 import sun.jvm.hotspot.classfile.*;
  31 import sun.jvm.hotspot.memory.*;
  32 import sun.jvm.hotspot.oops.*;
  33 import sun.jvm.hotspot.runtime.*;
  34 import sun.jvm.hotspot.utilities.*;
  35 import java.lang.reflect.Method;
  36 
  37 public class JSJavaHeap extends DefaultScriptObject {
  38     private static final int FIELD_CAPACITY = 0;
  39     private static final int FIELD_USED = 1;
  40     private static final int FIELD_FOR_EACH_OBJECT = 2;
  41     private static final int FIELD_FOR_EACH_CLASS = 3;
  42 
  43     private static final int FIELD_UNDEFINED = -1;
  44 
  45     public JSJavaHeap(JSJavaFactory fac) {
  46         this.factory = fac;
  47     }
  48 
  49     public Object get(String name) {
  50         int fieldID = getFieldID(name);


 150         case 2: {
 151             Object b = args[1];
 152             if (b instanceof Boolean) {
 153                 withLoader = ((Boolean)b).booleanValue();
 154             }
 155         }
 156         case 1: {
 157             Object f = args[0];
 158             if (f instanceof Callable) {
 159                 func = (Callable) f;
 160             } else {
 161                 return;
 162             }
 163         }
 164         break;
 165         default:
 166             return;
 167         }
 168 
 169       final Callable finalFunc = func;
 170         ClassLoaderDataGraph cldg = VM.getVM().getClassLoaderDataGraph();
 171         if (withLoader) {
 172             cldg.classesDo(new ClassLoaderDataGraph.ClassVisitor() {
 173                     public void visit(Klass kls) {
 174                         JSJavaKlass  jk = factory.newJSJavaKlass(kls);
 175                         Oop loader = kls.getClassLoader();
 176                         if (jk == null) {
 177                             return;
 178                         }
 179                         JSJavaObject k = jk.getJSJavaClass();
 180                         JSJavaObject l = factory.newJSJavaObject(loader);
 181                         if (k != null) {
 182                           if (l != null) {
 183                             try {
 184                               finalFunc.call(new Object[] { k, l });
 185                             } catch (ScriptException exp) {
 186                               throw new RuntimeException(exp);
 187                             }
 188                           }
 189                        }
 190                     }
 191                 });
 192 
 193         } else {
 194             cldg.classesDo(new ClassLoaderDataGraph.ClassVisitor() {
 195                     public void visit(Klass kls) {
 196                         JSJavaKlass jk = factory.newJSJavaKlass(kls);
 197                         if (jk == null) {
 198                             return;
 199                         }
 200                         JSJavaClass k = jk.getJSJavaClass();
 201                         if (k != null) {
 202                             if (k != null) {
 203                         try {
 204                                   finalFunc.call(new Object[] { k });
 205                         } catch (ScriptException exp) {
 206                           throw new RuntimeException(exp);
 207                         }
 208                             }
 209                         }
 210                     }
 211                 });
 212         }
 213     }
 214 


< prev index next >