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
|