Push() private method

private Push ( object obj ) : void
obj object
return void
Exemplo n.º 1
0
        private static void DoSetGlobalVariable(ExecutionContext context)
        {
            context.InstructionPointer++;
            byte arg = context.Block.ByteCodes[context.InstructionPointer];
            string name = context.Block.GetGlobalName(arg);
            object value = context.Pop();

            if (context.Self != null)
                context.Self.Behavior.Scope.SetValue(name, value);
            else
                context.Machine.CurrentEnvironment.SetValue(name, value);

            context.LastReceiver = value;
            context.Push(value);
        }
Exemplo n.º 2
0
 private static void DoGetDotNetType(ExecutionContext context)
 {
     context.InstructionPointer++;
     byte arg = context.Block.ByteCodes[context.InstructionPointer];
     context.Push(TypeUtilities.AsType(context.Block.GetGlobalName(arg)));
 }
Exemplo n.º 3
0
 private static void DoGetConstant(ExecutionContext context)
 {
     context.InstructionPointer++;
     byte arg = context.Block.ByteCodes[context.InstructionPointer];
     context.Push(context.Block.GetConstant(arg));
 }
Exemplo n.º 4
0
        private static void DoGetClass(ExecutionContext context)
        {
            object value = context.Pop();
            context.LastReceiver = value;

            if (value == null)
            {
                context.Push(context.Machine.UndefinedObjectClass);
                return;
            }

            IObject iobj = value as IObject;

            if (iobj != null)
            {
                context.Push(iobj.Behavior);
                return;
            }

            var behavior = context.Machine.GetNativeBehavior(value.GetType());

            if (behavior != null)
            {
                context.Push(behavior);
                return;
            }

            context.Push(value.GetType());
        }
Exemplo n.º 5
0
        private static void DoGetBlock(ExecutionContext context)
        {
            context.InstructionPointer++;
            byte arg = context.Block.ByteCodes[context.InstructionPointer];

            Block newblock = (Block)context.Block.GetConstant(arg);

            newblock = newblock.Clone(context);

            context.Push(newblock);
        }
Exemplo n.º 6
0
 private static void DoBasicSize(ExecutionContext context)
 {
     IIndexedObject indexedObj = (IIndexedObject)context.Pop();
     context.LastReceiver = indexedObj;
     context.Push(indexedObj.BasicSize);
 }