// saveContext: saves numbered registers and Reg.implicitContinuation to frame // will restore registers and return to Reg.implicitContinuation of Reg.Register0 // clears Reg.implicitContinuation // Also saves Result and flag whether to restore Result public static void saveContext(bool full) { // Save current context: Create frame described below, before RestoreContextCode Instructions.save(1 + Reg.LASTREG + 2); ContinuationFrame frame = Cont.cont; frame.saveRegisters(RestoreContextCode.singletonProcedure, full); // frame.setSlot(0, RestoreContextCode.singletonProcedure); // frame.returnIndex = Reg.implicitContinuation; // for (int i = 0; i <= Reg.LASTREG; ++i) { // frame.setSlot(i + 1, Reg.getRegister(i)); // } // frame.setSlot(Reg.LASTREG + 2, Reg.Result); // frame.setSlot(Reg.LASTREG + 3, full ? Factory.True : Factory.False); Reg.implicitContinuation = -1; }