internal virtual StackData BitArrayBinaryOp(string opToken, Size size, StackData right) { var leftData = GetBitsConst(); var rightData = right.GetBitsConst(); var resultData = leftData.BitArrayBinaryOp(opToken, size, rightData); return new BitsStackData(resultData, OutStream); }
void IStackDataAddressBase.SetTop(Size offset, StackData right) { var oldTop = Data.DoGetTop(Data.Size + offset); var tail = Data.DoPull(Data.Size + offset + right.Size); var newDataTail = tail.Push(right); var newData = newDataTail.Push(oldTop); Data = newData; }
internal override StackData BitArrayBinaryOp(string opToken, Size size, StackData right) { if(size == DataStack.RefSize && opToken == "Plus") return RefPlus(Size.Create(right.GetBitsConst().ToInt32())); NotImplementedMethod(opToken, size, right); return null; }
void ITraceCollector.Call(StackData argsAndRefs, FunctionId functionId) => Frames.Insert ( 0, new FrameItem { Text = argsAndRefs.Dump(), FunctionId = functionId, CallStep = new TraceLogItem(new[] {Steps.Last()}, SourceView) });
internal override StackData Push(StackData stackData) => stackData.PushOnto(this);
internal override StackData Push(StackData formerStack) => formerStack.PushOnto(this);
internal new void Assign(Size size, StackData right) => _data.SetTop(_offset, right.Dereference(size, size));
void Push(StackData value) { Data = Data.Push(value); }
public LocalData(IOutStream outStream) { Data = new EmptyStackData(outStream); }
internal override StackData Push(StackData stackData) => stackData;
internal virtual StackData Push(StackData stackData) { NotImplementedMethod(stackData); return null; }
internal void Assign(Size size, StackData right) => GetAddress().Assign(size, right);
void IStackDataAddressBase.SetTop(Size offset, StackData right) { var dataForTrace = ((IStackDataAddressBase) this).GetTop(offset, right.Size); NotImplementedMethod(offset, right); }