guxingke / mini-jvm

使用 JDK8 实现 JVM(Java Virtual Machine)

Home Page:https://jvm.guxingke.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

superClazz 的逻辑意义个人觉得存在问题

970655147 opened this issue · comments

image

Interceptor.java

public void doInterpret(Thread thread, Frame frame) {
thread.pushFrame(frame);
KClass clazz = frame.method.clazz;
if (clazz != null) {
// super clazz static interfaceInit
KClass superClazz = clazz.getUnStaticInitSuperClass();

clazz.name = "HelloWorld"
superClazz.name = "HelloWorld"

感觉 superClazz 的逻辑意义 和 实际扮演的角色 不符吧

这里的目的是递归初始化父类, 并先初始化最老的父类。
C1 extends C2 extends C3

push C1.clinit
push C2.clint
push C3.clint

执行时 先执行 C3.clint.

初始化代码已经重构,此处关闭。