View Javadoc
1 package jrre; 2 3 import jrre.instructionset.methodinvocation.*; 4 import jrre.instructionset.objects.*; 5 import jrre.api.java.lang.reflect.*; 6 import java.util.*; 7 8 public class MethodArea { 9 10 private static HashMap hashMap = new HashMap(); 11 private static jrre.gui.MethodAreaGui methodAreaGui; 12 private int classCount=0; 13 14 public MethodArea(){ 15 super(); 16 17 /* 18 if(JRRE.guiOn()){ 19 methodAreaGui = new jrre.gui.MethodAreaGui(); 20 } 21 */ 22 } 23 24 static { 25 if(JRRE.guiOn()){ 26 methodAreaGui = new jrre.gui.MethodAreaGui(); 27 } 28 } 29 30 public static void doneLoading(){ 31 if(JRRE.guiOn()) 32 methodAreaGui.refresh(); 33 } 34 35 public void addingClass(String className){ 36 hashMap.put(className, null); 37 } 38 39 public static void addClass(jrre.api.java.lang.Class classToAdd){ 40 hashMap.put(classToAdd.getFullyQualifiedName(),classToAdd); 41 42 if(JRRE.guiOn()){ 43 methodAreaGui.addClass(classToAdd); 44 } 45 } 46 47 public static jrre.api.java.lang.Class getClass(String fullyQualifiedName){ 48 49 jrre.api.java.lang.Class toReturn; 50 51 if(!containsClass(fullyQualifiedName)){ 52 53 if(JRRE.getVerbose()) 54 System.out.println("loading: "+fullyQualifiedName); 55 56 toReturn = jrre.classloader.ClassLoader.loadClass(fullyQualifiedName); 57 58 if(JRRE.guiOn()){ 59 methodAreaGui.refresh(); 60 } 61 62 // Execute <cinit> method in the class. 63 MethodEntry initMethod = toReturn.getMethod("<clinit>()V"); 64 65 if(initMethod != null){ 66 StackFrame initMethodFrame = initMethod.getStackFrame(); 67 68 // Push current instruction back on instruction stream. 69 boolean returnNull = false; 70 Stack.restoreLastInstruction(); 71 jrre.instructionset.Instruction current = Stack.getNextInstruction(); 72 if(current instanceof GetStatic || 73 current instanceof InvokeStatic || 74 current instanceof jrre.instructionset.push.Ldc || 75 current instanceof jrre.instructionset.typecasting.CheckCast || 76 current instanceof jrre.instructionset.objects.New) { 77 78 Stack.restoreLastInstruction(); 79 returnNull = true; 80 } 81 82 //System.out.println("\t\t\tDone execing init: "+initMethodFrame); 83 jrre.Stack.push(initMethodFrame, "<clinit>()V::"+fullyQualifiedName); 84 85 if(returnNull) 86 return null; 87 } 88 89 return toReturn; 90 } 91 else { 92 toReturn = (jrre.api.java.lang.Class)hashMap.get(fullyQualifiedName); 93 return toReturn; 94 } 95 } 96 97 public static boolean containsClass(String fullyQualifiedName){ 98 return hashMap.containsKey(fullyQualifiedName); 99 } 100 101 102 } 103

This page was automatically generated by Maven