Axiom.Runtime.Instructions.AllocateInstruction.Execute C# (CSharp) Method

Execute() public method

public Execute ( AbstractMachineState state ) : void
state AbstractMachineState
return void
        public override void Execute(AbstractMachineState state)
        {
            AMProgram program = (AMProgram)state.Program;
            AMHeap heap = (AMHeap)state.DataArea;

            EnvironmentFrame env = new EnvironmentFrame(state.E, program.CP, state.B0, 2);

            // Is this really needed?
            heap.Push(env);

            state.E = (EnvironmentFrame)heap.Top();

            program.Next();
        }

Usage Example

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

            AMHeap heap = (AMHeap)state.DataArea;

            AllocateInstruction i = new AllocateInstruction();

            i.Process(null);
            i.Execute(state);

            EnvironmentFrame env = (EnvironmentFrame)heap.Top();

            Assert.AreEqual("allocate", i.Name());
            Assert.AreEqual(0, i.NumberOfArguments());
            Assert.AreSame(env, state.E);
            for (int r = 0; r < 20; r++)
            {
                Assert.IsNotNull(env["Y" + r.ToString()]);
            }
        }