func createMainThread(className string, args []string) *rtda.Thread { mainThread := rtda.NewThread(nil) bootMethod := rtc.BootstrapMethod() bootArgs := []interface{}{className, args} mainThread.InvokeMethodWithShim(bootMethod, bootArgs) return mainThread }
// private native void start0(); // ()V func start0(frame *rtda.Frame) { vars := frame.LocalVars() this := vars.GetThis() newThread := rtda.NewThread(this) runMethod := this.Class().GetInstanceMethod("run", "()V") newFrame := newThread.NewFrame(runMethod) newFrame.LocalVars().SetRef(0, this) newThread.PushFrame(newFrame) this.LockState() this.SetExtra(newThread) this.UnlockState() go interpreter.Loop(newThread) }