// private native Class<?> findBootstrapClass(String name); // (Ljava/lang/String;)Ljava/lang/Class; func findBootstrapClass(frame *rtda.Frame) { vars := frame.LocalVars() //this := vars.GetThis() name := vars.GetRef(1) className := rtc.DotToSlash(rtda.GoString(name)) class := rtc.BootLoader().LoadClass(className) // todo: init class? stack := frame.OperandStack() stack.PushRef(class.JClass()) // todo if r := recover(); r != nil { frame.OperandStack().PushRef(nil) } }
func _loadClass(frame *rtda.Frame) { vars := frame.LocalVars() //loader := vars.GetRef(0) nameObj := vars.GetRef(1) byteArr := vars.GetRef(2) off := vars.GetInt(3) _len := vars.GetInt(4) name := rtda.GoString(nameObj) name = rtc.DotToSlash(name) data := byteArr.GoBytes() data = data[off : off+_len] // todo class := frame.ClassLoader().DefineClass(name, data) stack := frame.OperandStack() stack.PushRef(class.JClass()) }
// private native final Class<?> findLoadedClass0(String name); // (Ljava/lang/String;)Ljava/lang/Class; func findLoadedClass0(frame *rtda.Frame) { vars := frame.LocalVars() this := vars.GetThis() name := vars.GetRef(1) className := rtc.DotToSlash(rtda.GoString(name)) if isAppClassLoader(this) { class := rtc.BootLoader().FindLoadedClass(className) if class != nil { frame.OperandStack().PushRef(class.JClass()) } else { frame.OperandStack().PushRef(nil) } return } // todo frame.OperandStack().PushRef(nil) }