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); } }
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; } }