package main.coding_170430.jvm.engine;
import main.coding_170430.jvm.clz.ClassFile;
import main.coding_170430.jvm.constant.MethodRefInfo;
import main.coding_170430.jvm.loader.ClassFileLoader;
import main.coding_170430.jvm.method.Method;
import java.util.HashMap;
import java.util.Map;
/**
* Created by peterchen on 2017/5/5.
*/
public class MethodArea {
public static final MethodArea instance = new MethodArea();
private ClassFileLoader clzLoader = null;
Map<String, ClassFile> map = new HashMap<>();
private MethodArea() {
}
public static MethodArea getInstance() {
return instance;
}
public void setClassFileLoader(ClassFileLoader clzLoader) {
this.clzLoader = clzLoader;
}
public Method getMainMethod(String className) {
ClassFile clzFile = findClassFile(className);
return clzFile.getMainMethod();
}
public ClassFile findClassFile(String className) {
if (map.get(className) != null) {
return map.get(className);
}
ClassFile classFile = clzLoader.loadClass(className);
map.put(className, classFile);
return classFile;
}
public Method getMethod(String className, String methodName, String paramANDrETURNtYPE) {
return null;
}
public Method getMethod(MethodRefInfo methodRefInfo) {
return null;
}
}