예제 #1
0
        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);
        }