// 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) }
func startJVM(cmd *cmdline.Command) { Xcpuprofile := cmd.Options().Xcpuprofile if Xcpuprofile != "" { f, err := os.Create(Xcpuprofile) if err != nil { panic(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } options.InitOptions(cmd.Options()) cp := classpath.Parse(cmd.Options().Classpath()) rtc.InitBootLoader(cp) mainClassName := jutil.ReplaceAll(cmd.Class(), ".", "/") mainThread := createMainThread(mainClassName, cmd.Args()) interpreter.Loop(mainThread) interpreter.KeepAlive() }