public static bool handleProcedure(Procedure command, SObject[] args) { bool keepRunning = true; bool errorOccurred = true; try { Reg.clearRegisters(); for (int i = 0; i < args.Length; ++i) { Reg.setRegister(i + 1, args[i]); } Call.trampoline(command, args.Length); errorOccurred = false; } catch (SchemeExitException see) { keepRunning = false; errorOccurred = false; if (see.returnCode != 0) { // Exn.msg.WriteLine ("Machine exited with error code " // + see.returnCode); Exn.fullCoreDump(); Environment.Exit(see.returnCode); } } finally { if (errorOccurred) { Exn.fullCoreDump(); } } // if (reportResult) { // Exn.msg.WriteLine (" {0}", Reg.Result); // } return(keepRunning); }