示例#1
0
        private void extendAsCallMemory(SnapshotBase callerContext, MemoryEntry thisObject, MemoryEntry[] arguments)
        {
            // called context is extended only at begining of call
            CurrentContextStamp = SnapshotStamp;

            var input = callerContext as Snapshot;

            _globals.ExtendBy(input._globals, true);
            _meta.ExtendBy(input._meta, true);
            _globalControls.ExtendBy(input._globalControls, true);
            _data.ExtendBy(input._data, true);

            if (thisObject != null)
            {
                assign(getThisObjectStorage(), thisObject);
            }
        }
示例#2
0
        private void extendMemory(ISnapshotReadonly[] inputs)
        {
            _data.ClearCurrent();
            _locals.ClearCurrent();
            _localControls.ClearCurrent();

            var isFirst = true;

            foreach (Snapshot input in inputs)
            {
                //merge info from extending inputs
                _globals.ExtendBy(input._globals, isFirst);
                _globalControls.ExtendBy(input._globalControls, isFirst);
                _locals.ExtendBy(input._locals, isFirst);
                _localControls.ExtendBy(input._localControls, isFirst);
                _meta.ExtendBy(input._meta, isFirst);

                _data.ExtendBy(input._data, isFirst);

                //all context stamps on extend level should be same
                CurrentContextStamp = input.CurrentContextStamp;
                isFirst             = false;
            }
        }