Axiom.Runtime.Instructions.TrustMeInstruction.Execute C# (CSharp) Метод

Execute() публичный Метод

public Execute ( AbstractMachineState state ) : void
state AbstractMachineState
Результат void
        public override void Execute(AbstractMachineState state)
        {
            AMProgram program = (AMProgram)state.Program;
            AMHeap heap = (AMHeap)state.DataArea;
            AMTrail trail = (AMTrail)state.Trail;

            state.B.UnsaveRegisters(state, state.B.Arity);

            state.E = state.B.CE;
            program.CP = state.B.CP;

            trail.Unwind(state.B.TR);

            trail.TR = state.B.TR;

            heap.H = state.B.H;

            state.B = state.B.B;

            program.Next();
        }

Usage Example

        public void TrustMe()
        {
            AbstractMachineState state = SetupMachine();

            TrustMeInstruction i = new TrustMeInstruction();

            i.Process(null);

            AMProgram program = (AMProgram)state.Program;
            AMTrail trail = (AMTrail)state.Trail;

            Choicepoint b = new Choicepoint();
            b.CE = new EnvironmentFrame();
            Choicepoint old = new Choicepoint();
            b.B = old;
            b.CP = new ProgramNode();
            b.TR = 1;
            b.NextClause = new ProgramClause();
            state.B = b;

            i.Execute(state);

            Assert.AreEqual("trust_me", i.Name());
            Assert.AreEqual(0, i.NumberOfArguments());
            Assert.AreSame(state.E, b.CE);
            Assert.AreSame(program.CP, b.CP);
            Assert.AreEqual(b.TR, trail.TR);
            Assert.AreSame(state.B, old);
        }