public ClassNode(ClassNode rhs) { IsImportedClass = rhs.IsImportedClass; Name = rhs.Name; Size = rhs.Size; hasCachedDisposeMethod = rhs.hasCachedDisposeMethod; disposeMethod = rhs.disposeMethod; Rank = rhs.Rank; Symbols = new SymbolTable("classscope", 0); if (rhs.Symbols != null) { Symbols = new SymbolTable(rhs.Symbols.ScopeName, rhs.Symbols.RuntimeIndex); } DefaultArgExprList = new List<AST.AssociativeAST.AssociativeNode>(); ID = rhs.ID; int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; ProcTable = new ProcedureTable(classRuntimProc); if (rhs.ProcTable != null) { ProcTable = new ProcedureTable(rhs.ProcTable); } Bases = new List<int>(rhs.Bases); ExternLib = rhs.ExternLib; TypeSystem = rhs.TypeSystem; CoerceTypes = new Dictionary<int, int>(rhs.CoerceTypes); }
public ClassNode(ClassNode rhs) { IsImportedClass = rhs.IsImportedClass; name = rhs.name; size = rhs.size; hasCachedDisposeMethod = rhs.hasCachedDisposeMethod; disposeMethod = rhs.disposeMethod; rank = rhs.rank; symbols = new SymbolTable("classscope", 0); if (rhs.symbols != null) { symbols = new SymbolTable(rhs.symbols.ScopeName, rhs.symbols.RuntimeIndex); } defaultArgExprList = new List <AST.AssociativeAST.BinaryExpressionNode>(); classId = rhs.classId; int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; vtable = new ProcedureTable(classRuntimProc); if (rhs.vtable != null) { vtable = new ProcedureTable(rhs.vtable); } baseList = new List <int>(rhs.baseList); ExternLib = rhs.ExternLib; typeSystem = rhs.typeSystem; coerceTypes = new Dictionary <int, int>(rhs.coerceTypes); }
public ClassNode() { IsImportedClass = false; Name = null; Size = 0; hasCachedDisposeMethod = false; disposeMethod = null; Rank = ProtoCore.DSASM.Constants.kDefaultClassRank; Symbols = new SymbolTable("classscope", 0); ID = (int)PrimitiveType.InvalidType; // Jun TODO: how significant is runtime index for class procedures? int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; ProcTable = new ProcedureTable(classRuntimProc); Base = Constants.kInvalidIndex; ExternLib = string.Empty; IsInterface = false; Interfaces = new List <int>(); // Set default allowed coerce types CoerceTypes = new Dictionary <int, int> { { (int)ProtoCore.PrimitiveType.Var, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore }, { (int)ProtoCore.PrimitiveType.Array, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore }, { (int)ProtoCore.PrimitiveType.Null, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore } }; }
public ClassNode(ClassNode rhs) { IsImportedClass = rhs.IsImportedClass; Name = rhs.Name; Size = rhs.Size; hasCachedDisposeMethod = rhs.hasCachedDisposeMethod; disposeMethod = rhs.disposeMethod; Rank = rhs.Rank; Symbols = new SymbolTable("classscope", 0); if (rhs.Symbols != null) { Symbols = new SymbolTable(rhs.Symbols.ScopeName, rhs.Symbols.RuntimeIndex); } ID = rhs.ID; int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; ProcTable = new ProcedureTable(classRuntimProc); if (rhs.ProcTable != null) { ProcTable = new ProcedureTable(rhs.ProcTable); } Base = rhs.Base; ExternLib = rhs.ExternLib; TypeSystem = rhs.TypeSystem; CoerceTypes = new Dictionary<int, int>(rhs.CoerceTypes); }
public ClassNode(ClassNode rhs) { IsImportedClass = rhs.IsImportedClass; name = rhs.name; size = rhs.size; hasCachedDisposeMethod = rhs.hasCachedDisposeMethod; disposeMethod = rhs.disposeMethod; rank = rhs.rank; symbols = new SymbolTable("classscope", 0); if (rhs.symbols != null) { symbols = new SymbolTable(rhs.symbols.ScopeName, rhs.symbols.RuntimeIndex); } defaultArgExprList = new List<AST.AssociativeAST.AssociativeNode>(); classId = rhs.classId; int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; vtable = new ProcedureTable(classRuntimProc); if (rhs.vtable != null) { vtable = new ProcedureTable(rhs.vtable); } baseList = new List<int>(rhs.baseList); ExternLib = rhs.ExternLib; typeSystem = rhs.typeSystem; coerceTypes = new Dictionary<int, int>(rhs.coerceTypes); }
public CodeBlock(Guid guid, CodeBlockType type, ProtoCore.Language langId, int cbID, SymbolTable symbols, ProcedureTable procTable, bool isBreakableBlock = false, ProtoCore.Core core = null) { this.guid = guid; blockType = type; parent = null; children = new List <CodeBlock>(); language = langId; instrStream = new InstructionStream(langId, core); symbolTable = symbols; procedureTable = procTable; isBreakable = isBreakableBlock; core.CompleteCodeBlockList.Add(this); this.codeBlockId = core.CompleteCodeBlockList.Count - 1; symbols.RuntimeIndex = this.codeBlockId; if (core.ProcNode != null) { core.ProcNode.ChildCodeBlocks.Add(codeBlockId); } }
public ClassNode() { IsImportedClass = false; name = null; size = 0; hasCachedDisposeMethod = false; disposeMethod = null; rank = ProtoCore.DSASM.Constants.kDefaultClassRank; symbols = new SymbolTable("classscope", 0); defaultArgExprList = new List <AST.AssociativeAST.BinaryExpressionNode>(); classId = (int)PrimitiveType.kInvalidType; // Jun TODO: how significant is runtime index for class procedures? int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; vtable = new ProcedureTable(classRuntimProc); baseList = new List <int>(); ExternLib = string.Empty; // Set default allowed coerce types coerceTypes = new Dictionary <int, int>(); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeVar, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeArray, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeNull, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); }
public ProcedureTable(ProcedureTable rhs) { this.RuntimeIndex = rhs.RuntimeIndex; this.Procedures = new List <ProcedureNode>(); for (int n = 0; n < rhs.Procedures.Count; ++n) { Procedures.Add(new ProcedureNode(rhs.Procedures[n])); } }
public ProcedureTable(ProcedureTable rhs) { this.runtimeIndex = rhs.runtimeIndex; this.procList = new List <ProcedureNode>(); for (int n = 0; n < rhs.procList.Count; ++n) { procList.Add(new ProcedureNode(rhs.procList[n])); } }
public CodeBlock(CodeBlockType type, ProtoCore.Language langId, int codeBlockId, SymbolTable symbols, ProcedureTable procTable, bool isBreakableBlock = false, ProtoCore.Core core = null) { blockType = type; parent = null; children = new List<CodeBlock>(); language = langId; this.codeBlockId = codeBlockId; instrStream = new InstructionStream(langId, core); symbolTable = symbols; procedureTable = procTable; isBreakable = isBreakableBlock; }
public CodeBlock(CodeBlockType type, ProtoCore.Language langId, int codeBlockId, SymbolTable symbols, ProcedureTable procTable, bool isBreakableBlock = false, ProtoLanguage.CompileStateTracker compileState = null) { blockType = type; parent = null; children = new List <CodeBlock>(); language = langId; this.codeBlockId = codeBlockId; instrStream = new InstructionStream(langId, compileState); symbolTable = symbols; procedureTable = procTable; isBreakable = isBreakableBlock; }
public ClassNode() { IsImportedClass = false; Name = null; Size = 0; hasCachedDisposeMethod = false; disposeMethod = null; Rank = ProtoCore.DSASM.Constants.kDefaultClassRank; Symbols = new SymbolTable("classscope", 0); ID = (int)PrimitiveType.InvalidType; // Jun TODO: how significant is runtime index for class procedures? int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; ProcTable = new ProcedureTable(classRuntimProc); Base = Constants.kInvalidIndex; ExternLib = string.Empty; // Set default allowed coerce types CoerceTypes = new Dictionary<int, int>(); CoerceTypes.Add((int)ProtoCore.PrimitiveType.Var, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore); CoerceTypes.Add((int)ProtoCore.PrimitiveType.Array, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore); CoerceTypes.Add((int)ProtoCore.PrimitiveType.Null, (int)ProtoCore.DSASM.ProcedureDistance.CoerceScore); }
public ClassNode() { IsImportedClass = false; name = null; size = 0; hasCachedDisposeMethod = false; disposeMethod = null; rank = ProtoCore.DSASM.Constants.kDefaultClassRank; symbols = new SymbolTable("classscope", 0); defaultArgExprList = new List<AST.AssociativeAST.BinaryExpressionNode>(); classId = (int)PrimitiveType.kInvalidType; // Jun TODO: how significant is runtime index for class procedures? int classRuntimProc = ProtoCore.DSASM.Constants.kInvalidIndex; vtable = new ProcedureTable(classRuntimProc); baseList = new List<int>(); ExternLib = string.Empty; // Set default allowed coerce types coerceTypes = new Dictionary<int, int>(); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeVar, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeArray, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); coerceTypes.Add((int)ProtoCore.PrimitiveType.kTypeNull, (int)ProtoCore.DSASM.ProcedureDistance.kCoerceScore); }
private ProtoCore.DSASM.CodeBlock BuildNewCodeBlock(ProcedureTable procTable = null) { ProtoCore.DSASM.CodeBlock cb = new ProtoCore.DSASM.CodeBlock( context.guid, ProtoCore.DSASM.CodeBlockType.kLanguage, ProtoCore.Language.kImperative, core.CodeBlockIndex, new ProtoCore.DSASM.SymbolTable("imperative lang block", core.RuntimeTableIndex), new ProtoCore.DSASM.ProcedureTable(core.RuntimeTableIndex), false, core); ++core.CodeBlockIndex; ++core.RuntimeTableIndex; return cb; }
public CodeBlockNode() { Body = new List<AssociativeNode>(); symbols = new ProtoCore.DSASM.SymbolTable("AST generated", ProtoCore.DSASM.Constants.kInvalidIndex); procTable = new ProtoCore.DSASM.ProcedureTable(ProtoCore.DSASM.Constants.kInvalidIndex); }
public ProcedureTable(ProcedureTable rhs) { this.runtimeIndex = rhs.runtimeIndex; this.procList = new List<ProcedureNode>(); for (int n = 0; n < rhs.procList.Count; ++n) { procList.Add(new ProcedureNode(rhs.procList[n])); } }
public ProcedureTable(ProcedureTable rhs) { this.RuntimeIndex = rhs.RuntimeIndex; this.Procedures = new List<ProcedureNode>(); for (int n = 0; n < rhs.Procedures.Count; ++n) { Procedures.Add(new ProcedureNode(rhs.Procedures[n])); } }
private void ResetAll(Options options) { ProtoCore.Utils.Validity.AssertExpiry(); Options = options; Executives = new Dictionary<ProtoCore.Language, ProtoCore.Executive>(); FunctionTable = new Lang.FunctionTable(); ClassIndex = ProtoCore.DSASM.Constants.kInvalidIndex; Heap = new DSASM.Heap(); Rmem = new ProtoCore.Runtime.RuntimeMemory(Heap); watchClassScope = ProtoCore.DSASM.Constants.kInvalidIndex; watchFunctionScope = ProtoCore.DSASM.Constants.kInvalidIndex; watchBaseOffset = 0; watchStack = new List<StackValue>(); watchSymbolList = new List<SymbolNode>(); watchFramePointer = ProtoCore.DSASM.Constants.kInvalidIndex; ID = FIRST_CORE_ID; //recurtion recursivePoint = new List<FunctionCounter>(); funcCounterTable = new List<FunctionCounter>(); calledInFunction = false; GlobOffset = 0; GlobHeapOffset = 0; BaseOffset = 0; GraphNodeUID = 0; RunningBlock = 0; CodeBlockIndex = 0; RuntimeTableIndex = 0; CodeBlockList = new List<DSASM.CodeBlock>(); CompleteCodeBlockList = new List<DSASM.CodeBlock>(); DSExecutable = new ProtoCore.DSASM.Executable(); AssocNode = null; // TODO Jun/Luke type system refactoring // Initialize the globalClass table and type system ClassTable = new DSASM.ClassTable(); TypeSystem = new TypeSystem(); TypeSystem.SetClassTable(ClassTable); ProcNode = null; ProcTable = new DSASM.ProcedureTable(ProtoCore.DSASM.Constants.kGlobalScope); //Initialize the function pointer table FunctionPointerTable = new DSASM.FunctionPointerTable(); //Initialize the dynamic string table and dynamic function table DynamicVariableTable = new DSASM.DynamicVariableTable(); DynamicFunctionTable = new DSASM.DynamicFunctionTable(); replicationGuides = new List<List<ProtoCore.ReplicationGuide>>(); ExceptionHandlingManager = new ExceptionHandlingManager(); startPC = ProtoCore.DSASM.Constants.kInvalidIndex; deltaCompileStartPC = ProtoCore.DSASM.Constants.kInvalidIndex; if (options.SuppressBuildOutput) { // don't log any of the build related messages // just accumulate them in relevant containers with // BuildStatus object // BuildStatus = new BuildStatus(this, false, false, false); } else { BuildStatus = new BuildStatus(this, Options.BuildOptWarningAsError, null, Options.BuildOptErrorAsWarning); } RuntimeStatus = new RuntimeStatus(this); SSASubscript = 0; SSASubscript_GUID = System.Guid.NewGuid(); ExpressionUID = 0; ModifierBlockUID = 0; ModifierStateSubscript = 0; ExprInterpreterExe = null; ExecMode = ProtoCore.DSASM.InterpreterMode.kNormal; assocCodegen = null; FunctionCallDepth = 0; // Default execution log is Console.Out. this.ExecutionLog = Console.Out; ExecutionState = (int)ExecutionStateEventArgs.State.kInvalid; //not yet started DebugProps = new DebugProperties(); //stackNodeExecutedSameTimes = new Stack<List<AssociativeGraph.GraphNode>>(); //stackExecutingGraphNodes = new Stack<AssociativeGraph.GraphNode>(); InterpreterProps = new Stack<InterpreterProperties>(); stackActiveExceptionRegistration = new Stack<ExceptionRegistration>(); ExecutiveProvider = new ExecutiveProvider(); Configurations = new Dictionary<string, object>(); ContinuationStruct = new Lang.ContinuationStructure(); ParsingMode = ProtoCore.ParseMode.Normal; IsParsingPreloadedAssembly = false; IsParsingCodeBlockNode = false; ImportHandler = null; deltaCompileStartPC = 0; builtInsLoaded = false; FFIPropertyChangedMonitor = new FFIPropertyChangedMonitor(this); csExecutionState = null; EnableCallsiteExecutionState = false; // TODO: Remove check once fully implemeted if (EnableCallsiteExecutionState) { csExecutionState = CallsiteExecutionState.LoadState(); } else { csExecutionState = new CallsiteExecutionState(); } CallsiteCache = new Dictionary<int, CallSite>(); CachedSSANodes = new List<AssociativeNode>(); CallSiteToNodeMap = new Dictionary<Guid, Guid>(); ASTToCallSiteMap = new Dictionary<int, CallSite>(); ForLoopBlockIndex = ProtoCore.DSASM.Constants.kInvalidIndex; GraphNodeCallList = new List<GraphNode>(); newEntryPoint = ProtoCore.DSASM.Constants.kInvalidIndex; }
private void ResetAll(Options options) { Heap = new Heap(); //Rmem = new RuntimeMemory(Heap); Configurations = new Dictionary<string, object>(); DllTypesToLoad = new List<System.Type>(); Options = options; Compilers = new Dictionary<Language, Compiler>(); ClassIndex = Constants.kInvalidIndex; FunctionTable = new FunctionTable(); watchFunctionScope = Constants.kInvalidIndex; watchSymbolList = new List<SymbolNode>(); watchBaseOffset = 0; GlobOffset = 0; GlobHeapOffset = 0; BaseOffset = 0; GraphNodeUID = 0; CodeBlockIndex = 0; RuntimeTableIndex = 0; CodeBlockList = new List<CodeBlock>(); CompleteCodeBlockList = new List<CodeBlock>(); CallsiteGuidMap = new Dictionary<Guid, int>(); AssocNode = null; // TODO Jun/Luke type system refactoring // Initialize the globalClass table and type system ClassTable = new ClassTable(); TypeSystem = new TypeSystem(); TypeSystem.SetClassTable(ClassTable); ProcNode = null; ProcTable = new ProcedureTable(Constants.kGlobalScope); // Initialize internal attributes internalAttributes = new InternalAttributes(ClassTable); //Initialize the function pointer table FunctionPointerTable = new FunctionPointerTable(); //Initialize the dynamic string table and dynamic function table DynamicVariableTable = new DynamicVariableTable(); DynamicFunctionTable = new DynamicFunctionTable(); watchStartPC = Constants.kInvalidIndex; deltaCompileStartPC = Constants.kInvalidIndex; BuildStatus = new BuildStatus(this, Options.BuildOptWarningAsError, null, Options.BuildOptErrorAsWarning); SSAExpressionUID = 0; SSASubscript = 0; SSASubscript_GUID = Guid.NewGuid(); SSAExprUID = 0; ExpressionUID = 0; ModifierBlockUID = 0; ModifierStateSubscript = 0; ExprInterpreterExe = null; Options.RunMode = InterpreterMode.Normal; assocCodegen = null; // Default execution log is Console.Out. ExecutionLog = Console.Out; DebuggerProperties = new DebugProperties(); ParsingMode = ParseMode.Normal; IsParsingPreloadedAssembly = false; IsParsingCodeBlockNode = false; ImportHandler = null; deltaCompileStartPC = 0; builtInsLoaded = false; ForLoopBlockIndex = Constants.kInvalidIndex; GraphNodeCallList = new List<GraphNode>(); InlineConditionalBodyGraphNodes = new Stack<List<GraphNode>>(); newEntryPoint = Constants.kInvalidIndex; }
/// <summary> /// A CodeBlock represents a body of DS code /// </summary> /// <param name="guid"></param> /// <param name="type"></param> /// <param name="langId"></param> /// <param name="cbID"></param> /// <param name="symbols"></param> /// <param name="procTable"></param> /// <param name="isBreakableBlock"></param> /// <param name="core"></param> public CodeBlock(Guid guid, CodeBlockType type, ProtoCore.Language langId, int cbID, SymbolTable symbols, ProcedureTable procTable, bool isBreakableBlock = false, ProtoCore.Core core = null) { this.guid = guid; blockType = type; parent = null; children = new List<CodeBlock>(); language = langId; instrStream = new InstructionStream(langId, core); symbolTable = symbols; procedureTable = procTable; isBreakable = isBreakableBlock; core.CompleteCodeBlockList.Add(this); this.codeBlockId = core.CompleteCodeBlockList.Count - 1; symbols.RuntimeIndex = this.codeBlockId; if (core.ProcNode != null) { core.ProcNode.ChildCodeBlocks.Add(codeBlockId); } }
private void BfsBuildProcedureTable(CodeBlock codeBlock, ProcedureTable[] procTable) { if (CodeBlockType.Language == codeBlock.blockType || CodeBlockType.Function == codeBlock.blockType) { Validity.Assert(codeBlock.procedureTable.RuntimeIndex < RuntimeTableIndex); procTable[codeBlock.procedureTable.RuntimeIndex] = codeBlock.procedureTable; } foreach (CodeBlock child in codeBlock.children) { BfsBuildProcedureTable(child, procTable); } }
private void BfsBuildProcedureTable(CodeBlock codeBlock, ProcedureTable[] procTable) { if (DSASM.CodeBlockType.kLanguage == codeBlock.blockType || DSASM.CodeBlockType.kFunction == codeBlock.blockType) { Debug.Assert(codeBlock.procedureTable.runtimeIndex < RuntimeTableIndex); procTable[codeBlock.procedureTable.runtimeIndex] = codeBlock.procedureTable; } foreach (DSASM.CodeBlock child in codeBlock.children) { BfsBuildProcedureTable(child, procTable); } }
private ProtoCore.DSASM.CodeBlock BuildNewCodeBlock(ProcedureTable procTable = null) { ProcedureTable pTable = procTable == null ? new ProtoCore.DSASM.ProcedureTable(core.RuntimeTableIndex) : procTable; // Create a new symboltable for this block // Set the new symbol table's parent // Set the new table as a child of the parent table ProtoCore.DSASM.CodeBlock cb = new ProtoCore.DSASM.CodeBlock( context.guid, ProtoCore.DSASM.CodeBlockType.kLanguage, ProtoCore.Language.Associative, core.CodeBlockIndex, new ProtoCore.DSASM.SymbolTable("associative lang block", core.RuntimeTableIndex), pTable, false, core); ++core.CodeBlockIndex; ++core.RuntimeTableIndex; return cb; }
private void ResetAll(Options options) { ProtoCore.Utils.Validity.AssertExpiry(); Options = options; Executives = new Dictionary<ProtoCore.Language, ProtoCore.Executive>(); FunctionTable = new Lang.FunctionTable(); ClassIndex = ProtoCore.DSASM.Constants.kInvalidIndex; Heap = new DSASM.Heap(); Rmem = new ProtoCore.Runtime.RuntimeMemory(Heap); watchClassScope = ProtoCore.DSASM.Constants.kInvalidIndex; watchFunctionScope = ProtoCore.DSASM.Constants.kInvalidIndex; watchBaseOffset = 0; watchStack = new List<StackValue>(); watchSymbolList = new List<SymbolNode>(); watchFramePointer = ProtoCore.DSASM.Constants.kInvalidIndex; ID = FIRST_CORE_ID; //recurtion recursivePoint = new List<FunctionCounter>(); funcCounterTable = new List<FunctionCounter>(); calledInFunction = false; GlobOffset = 0; GlobHeapOffset = 0; BaseOffset = 0; GraphNodeUID = 0; RunningBlock = 0; CodeBlockIndex = 0; RuntimeTableIndex = 0; CodeBlockList = new List<DSASM.CodeBlock>(); CompleteCodeBlockList = new List<DSASM.CodeBlock>(); DSExecutable = new ProtoCore.DSASM.Executable(); AssocNode = null; // TODO Jun/Luke type system refactoring // Initialize the globalClass table and type system ClassTable = new DSASM.ClassTable(); TypeSystem = new TypeSystem(); TypeSystem.SetClassTable(ClassTable); ProcNode = null; ProcTable = new DSASM.ProcedureTable(ProtoCore.DSASM.Constants.kGlobalScope); //Initialize the function pointer table FunctionPointerTable = new DSASM.FunctionPointerTable(); //Initialize the dynamic string table and dynamic function table DynamicVariableTable = new DSASM.DynamicVariableTable(); DynamicFunctionTable = new DSASM.DynamicFunctionTable(); replicationGuides = new List<List<int>>(); ExceptionHandlingManager = new ExceptionHandlingManager(); startPC = ProtoCore.DSASM.Constants.kInvalidIndex; deltaCompileStartPC = ProtoCore.DSASM.Constants.kInvalidIndex; RuntimeStatus = new RuntimeStatus(this); SSASubscript = 0; ExpressionUID = 0; ModifierBlockUID = 0; ModifierStateSubscript = 0; ExprInterpreterExe = null; ExecMode = ProtoCore.DSASM.InterpreterMode.kNormal; assocCodegen = null; FunctionCallDepth = 0; // Default execution log is Console.Out. this.ExecutionLog = Console.Out; ExecutionState = (int)ExecutionStateEventArgs.State.kInvalid; //not yet started DebugProps = new DebugProperties(); //stackNodeExecutedSameTimes = new Stack<List<AssociativeGraph.GraphNode>>(); //stackExecutingGraphNodes = new Stack<AssociativeGraph.GraphNode>(); InterpreterProps = new Stack<InterpreterProperties>(); stackActiveExceptionRegistration = new Stack<ExceptionRegistration>(); ExecutiveProvider = new ExecutiveProvider(); Configurations = new Dictionary<string, object>(); ContinuationStruct = new Lang.ContinuationStructure(); ParsingMode = ProtoCore.ParseMode.Normal; IsParsingPreloadedAssembly = false; IsParsingCodeBlockNode = false; ImportHandler = null; deltaCompileStartPC = 0; builtInsLoaded = false; FFIPropertyChangedMonitor = new FFIPropertyChangedMonitor(this); }