superClazz 的逻辑意义个人觉得存在问题
970655147 opened this issue · comments
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.
初始化代码已经重构,此处关闭。