internal MemoryEntry ReadValue(VariableKeyBase key, bool resolveVirtualRefs = true) { var variable = getOrCreateInfo(key); if (variable.References.Count == 0) { //implicit reference creation, because of possible cross call aliases variable.References.Add(key.CreateImplicitReference(this)); } var value = readValue(variable, resolveVirtualRefs); return(value); }
private bool tryReadValue(VariableKeyBase key, out MemoryEntry entry) { var info = getInfo(key); if (info == null) { ReportMemoryEntryCreation(); entry = new MemoryEntry(UndefinedValue); return(false); } entry = resolveReferences(info.References); return(true); }
private MemoryEntry readValue(VariableKeyBase key) { var info = getOrCreateInfo(key); return(readValue(info)); }
private void assign(VariableKeyBase key, MemoryEntry entry) { var info = getOrCreateInfo(key); assign(info, entry); }
internal bool IsDefined(VariableKeyBase storage) { return(storage.GetVariable(this) != null); }
private void writeDirect(VariableKeyBase storage, MemoryEntry value) { var variable = getOrCreateInfo(storage); assign(variable, value); }
private VariableInfo getInfo(VariableKeyBase key) { return(key.GetVariable(this)); }