public BreakStatement(LuaParser.Stat_breakContext context, ScriptLoadingContext lcontext) : base(context, lcontext) { m_Ref = BuildSourceRef(context.Start, context.Stop); }
public BreakStatement(ScriptLoadingContext lcontext) : base(lcontext) { _ref = CheckTokenType(lcontext, TokenType.Break).GetSourceRef(); lcontext.Source.Refs.Add(_ref); }
public FunctionCallStatement(LuaParser.Stat_functioncallContext context, ScriptLoadingContext lcontext) : base(context, lcontext) { m_FunctionCallChain = new FunctionCallChainExpression(context, lcontext); m_SourceRef = BuildSourceRef(context.Start, context.Stop); }
public AttachmentEvent(SourceRef source, String data) { this.source = source; this.data = data; }
internal SyntaxErrorException(Script script, SourceRef sref, string message) : base(message) { DecorateMessage(script, sref); }
private bool ToggleBreakPoint(DebuggerAction action, bool? state) { SourceCode src = m_Script.GetSourceCode(action.SourceID); bool found = false; foreach (SourceRef srf in src.Refs) { if (srf.CannotBreakpoint) continue; if (srf.IncludesLocation(action.SourceID, action.SourceLine, action.SourceCol)) { found = true; //System.Diagnostics.Debug.WriteLine(string.Format("BRK: found {0} for {1} on contains", srf, srf.Type)); if (state == null) srf.Breakpoint = !srf.Breakpoint; else srf.Breakpoint = state.Value; if (srf.Breakpoint) { m_Debug.BreakPoints.Add(srf); } else { m_Debug.BreakPoints.Remove(srf); } } } if (!found) { int minDistance = int.MaxValue; SourceRef nearest = null; foreach (SourceRef srf in src.Refs) { if (srf.CannotBreakpoint) continue; int dist = srf.GetLocationDistance(action.SourceID, action.SourceLine, action.SourceCol); if (dist < minDistance) { minDistance = dist; nearest = srf; } } if (nearest != null) { //System.Diagnostics.Debug.WriteLine(string.Format("BRK: found {0} for {1} on distance {2}", nearest, nearest.Type, minDistance)); if (state == null) nearest.Breakpoint = !nearest.Breakpoint; else nearest.Breakpoint = state.Value; if (nearest.Breakpoint) { m_Debug.BreakPoints.Add(nearest); } else { m_Debug.BreakPoints.Remove(nearest); } return true; } else return false; } else return true; }
public void PopSourceRef() { m_SourceRefStack.RemoveAt(m_SourceRefStack.Count - 1); m_CurrentSourceRef = (m_SourceRefStack.Count > 0) ? m_SourceRefStack[m_SourceRefStack.Count - 1] : null; }
public FunctionDefinitionStatement(ScriptLoadingContext lcontext, bool local, Token localToken) : base(lcontext) { // here lexer must be at the 'function' keyword Token funcKeyword = CheckTokenType(lcontext, TokenType.Function); funcKeyword = localToken ?? funcKeyword; // for debugger purposes m_Local = local; if (m_Local) { Token name = CheckTokenType(lcontext, TokenType.Name); m_FuncSymbol = lcontext.Scope.TryDefineLocal(name.Text); m_FriendlyName = string.Format("{0} (local)", name.Text); m_SourceRef = funcKeyword.GetSourceRef(name); } else { Token name = CheckTokenType(lcontext, TokenType.Name); string firstName = name.Text; m_SourceRef = funcKeyword.GetSourceRef(name); m_FuncSymbol = lcontext.Scope.Find(firstName); m_FriendlyName = firstName; if (lcontext.Lexer.Current.Type != TokenType.Brk_Open_Round) { m_TableAccessors = new List <string>(); while (lcontext.Lexer.Current.Type != TokenType.Brk_Open_Round) { Token separator = lcontext.Lexer.Current; if (separator.Type != TokenType.Colon && separator.Type != TokenType.Dot) { UnexpectedTokenType(separator); } lcontext.Lexer.Next(); Token field = CheckTokenType(lcontext, TokenType.Name); m_FriendlyName += separator.Text + field.Text; m_SourceRef = funcKeyword.GetSourceRef(field); if (separator.Type == TokenType.Colon) { m_MethodName = field.Text; m_IsMethodCallingConvention = true; break; } else { m_TableAccessors.Add(field.Text); } } if (m_MethodName == null && m_TableAccessors.Count > 0) { m_MethodName = m_TableAccessors[m_TableAccessors.Count - 1]; m_TableAccessors.RemoveAt(m_TableAccessors.Count - 1); } } } m_FuncDef = new FunctionDefinitionExpression(lcontext, m_IsMethodCallingConvention, false); lcontext.Source.Refs.Add(m_SourceRef); }
public SourceCodeStackGuard(SourceRef sref, ByteCode bc) { m_Bc = bc; m_Bc.PushSourceRef(sref); }
public void PushSourceRef(SourceRef sref) { m_SourceRefStack.Add(sref); m_CurrentSourceRef = sref; }
public IDisposable EnterSource(SourceRef sref) { return(new SourceCodeStackGuard(sref, this)); }
public SourceCodeStackGuard(SourceRef sref, ByteCode bc) { _bc = bc; _bc.PushSourceRef(sref); }
protected internal virtual void DoRegisterTypes(ModelBuilder bpmnModelBuilder) { ActivationConditionImpl.RegisterType(bpmnModelBuilder); ActivityImpl.RegisterType(bpmnModelBuilder); ArtifactImpl.RegisterType(bpmnModelBuilder); AssignmentImpl.RegisterType(bpmnModelBuilder); AssociationImpl.RegisterType(bpmnModelBuilder); AuditingImpl.RegisterType(bpmnModelBuilder); BaseElementImpl.RegisterType(bpmnModelBuilder); BoundaryEventImpl.RegisterType(bpmnModelBuilder); BusinessRuleTaskImpl.RegisterType(bpmnModelBuilder); CallableElementImpl.RegisterType(bpmnModelBuilder); CallActivityImpl.RegisterType(bpmnModelBuilder); CallConversationImpl.RegisterType(bpmnModelBuilder); CancelEventDefinitionImpl.RegisterType(bpmnModelBuilder); CatchEventImpl.RegisterType(bpmnModelBuilder); CategoryValueImpl.RegisterType(bpmnModelBuilder); CategoryValueRef.RegisterType(bpmnModelBuilder); ChildLaneSet.RegisterType(bpmnModelBuilder); CollaborationImpl.RegisterType(bpmnModelBuilder); CompensateEventDefinitionImpl.RegisterType(bpmnModelBuilder); ConditionImpl.RegisterType(bpmnModelBuilder); ConditionalEventDefinitionImpl.RegisterType(bpmnModelBuilder); CompletionConditionImpl.RegisterType(bpmnModelBuilder); ComplexBehaviorDefinitionImpl.RegisterType(bpmnModelBuilder); ComplexGatewayImpl.RegisterType(bpmnModelBuilder); ConditionExpressionImpl.RegisterType(bpmnModelBuilder); ConversationAssociationImpl.RegisterType(bpmnModelBuilder); ConversationImpl.RegisterType(bpmnModelBuilder); ConversationLinkImpl.RegisterType(bpmnModelBuilder); ConversationNodeImpl.RegisterType(bpmnModelBuilder); CorrelationKeyImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyBindingImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyRef.RegisterType(bpmnModelBuilder); CorrelationPropertyRetrievalExpressionImpl.RegisterType(bpmnModelBuilder); CorrelationSubscriptionImpl.RegisterType(bpmnModelBuilder); DataAssociationImpl.RegisterType(bpmnModelBuilder); DataInputAssociationImpl.RegisterType(bpmnModelBuilder); DataInputImpl.RegisterType(bpmnModelBuilder); DataInputRefs.RegisterType(bpmnModelBuilder); DataOutputAssociationImpl.RegisterType(bpmnModelBuilder); DataOutputImpl.RegisterType(bpmnModelBuilder); DataOutputRefs.RegisterType(bpmnModelBuilder); DataPath.RegisterType(bpmnModelBuilder); DataStateImpl.RegisterType(bpmnModelBuilder); DataObjectImpl.RegisterType(bpmnModelBuilder); DataObjectReferenceImpl.RegisterType(bpmnModelBuilder); DataStoreImpl.RegisterType(bpmnModelBuilder); DefinitionsImpl.RegisterType(bpmnModelBuilder); DocumentationImpl.RegisterType(bpmnModelBuilder); EndEventImpl.RegisterType(bpmnModelBuilder); EndPointImpl.RegisterType(bpmnModelBuilder); EndPointRef.RegisterType(bpmnModelBuilder); ErrorEventDefinitionImpl.RegisterType(bpmnModelBuilder); ErrorImpl.RegisterType(bpmnModelBuilder); ErrorRef.RegisterType(bpmnModelBuilder); EscalationImpl.RegisterType(bpmnModelBuilder); EscalationEventDefinitionImpl.RegisterType(bpmnModelBuilder); EventBasedGatewayImpl.RegisterType(bpmnModelBuilder); EventDefinitionImpl.RegisterType(bpmnModelBuilder); EventDefinitionRef.RegisterType(bpmnModelBuilder); EventImpl.RegisterType(bpmnModelBuilder); ExclusiveGatewayImpl.RegisterType(bpmnModelBuilder); ExpressionImpl.RegisterType(bpmnModelBuilder); ExtensionElementsImpl.RegisterType(bpmnModelBuilder); ExtensionImpl.RegisterType(bpmnModelBuilder); FlowElementImpl.RegisterType(bpmnModelBuilder); FlowNodeImpl.RegisterType(bpmnModelBuilder); FlowNodeRef.RegisterType(bpmnModelBuilder); FormalExpressionImpl.RegisterType(bpmnModelBuilder); From.RegisterType(bpmnModelBuilder); GatewayImpl.RegisterType(bpmnModelBuilder); GlobalConversationImpl.RegisterType(bpmnModelBuilder); HumanPerformerImpl.RegisterType(bpmnModelBuilder); ImportImpl.RegisterType(bpmnModelBuilder); InclusiveGatewayImpl.RegisterType(bpmnModelBuilder); Incoming.RegisterType(bpmnModelBuilder); InMessageRef.RegisterType(bpmnModelBuilder); InnerParticipantRef.RegisterType(bpmnModelBuilder); InputDataItemImpl.RegisterType(bpmnModelBuilder); InputSetImpl.RegisterType(bpmnModelBuilder); InputSetRefs.RegisterType(bpmnModelBuilder); InteractionNodeImpl.RegisterType(bpmnModelBuilder); InterfaceImpl.RegisterType(bpmnModelBuilder); InterfaceRef.RegisterType(bpmnModelBuilder); IntermediateCatchEventImpl.RegisterType(bpmnModelBuilder); IntermediateThrowEventImpl.RegisterType(bpmnModelBuilder); IoBindingImpl.RegisterType(bpmnModelBuilder); IoSpecificationImpl.RegisterType(bpmnModelBuilder); ItemAwareElementImpl.RegisterType(bpmnModelBuilder); ItemDefinitionImpl.RegisterType(bpmnModelBuilder); LaneImpl.RegisterType(bpmnModelBuilder); LaneSetImpl.RegisterType(bpmnModelBuilder); LinkEventDefinitionImpl.RegisterType(bpmnModelBuilder); LoopCardinalityImpl.RegisterType(bpmnModelBuilder); LoopCharacteristicsImpl.RegisterType(bpmnModelBuilder); LoopDataInputRef.RegisterType(bpmnModelBuilder); LoopDataOutputRef.RegisterType(bpmnModelBuilder); ManualTaskImpl.RegisterType(bpmnModelBuilder); MessageEventDefinitionImpl.RegisterType(bpmnModelBuilder); MessageFlowAssociationImpl.RegisterType(bpmnModelBuilder); MessageFlowImpl.RegisterType(bpmnModelBuilder); MessageFlowRef.RegisterType(bpmnModelBuilder); MessageImpl.RegisterType(bpmnModelBuilder); MessagePath.RegisterType(bpmnModelBuilder); ModelElementInstanceImpl.RegisterType(bpmnModelBuilder); MonitoringImpl.RegisterType(bpmnModelBuilder); MultiInstanceLoopCharacteristicsImpl.RegisterType(bpmnModelBuilder); OperationImpl.RegisterType(bpmnModelBuilder); OperationRef.RegisterType(bpmnModelBuilder); OptionalInputRefs.RegisterType(bpmnModelBuilder); OptionalOutputRefs.RegisterType(bpmnModelBuilder); OuterParticipantRef.RegisterType(bpmnModelBuilder); OutMessageRef.RegisterType(bpmnModelBuilder); Outgoing.RegisterType(bpmnModelBuilder); OutputDataItemImpl.RegisterType(bpmnModelBuilder); OutputSetImpl.RegisterType(bpmnModelBuilder); OutputSetRefs.RegisterType(bpmnModelBuilder); ParallelGatewayImpl.RegisterType(bpmnModelBuilder); ParticipantAssociationImpl.RegisterType(bpmnModelBuilder); ParticipantImpl.RegisterType(bpmnModelBuilder); ParticipantMultiplicityImpl.RegisterType(bpmnModelBuilder); ParticipantRef.RegisterType(bpmnModelBuilder); PartitionElement.RegisterType(bpmnModelBuilder); PerformerImpl.RegisterType(bpmnModelBuilder); PotentialOwnerImpl.RegisterType(bpmnModelBuilder); ProcessImpl.RegisterType(bpmnModelBuilder); PropertyImpl.RegisterType(bpmnModelBuilder); ReceiveTaskImpl.RegisterType(bpmnModelBuilder); RelationshipImpl.RegisterType(bpmnModelBuilder); RenderingImpl.RegisterType(bpmnModelBuilder); ResourceAssignmentExpressionImpl.RegisterType(bpmnModelBuilder); ResourceImpl.RegisterType(bpmnModelBuilder); ResourceParameterBindingImpl.RegisterType(bpmnModelBuilder); ResourceParameterImpl.RegisterType(bpmnModelBuilder); ResourceRef.RegisterType(bpmnModelBuilder); ResourceRoleImpl.RegisterType(bpmnModelBuilder); RootElementImpl.RegisterType(bpmnModelBuilder); ScriptImpl.RegisterType(bpmnModelBuilder); ScriptTaskImpl.RegisterType(bpmnModelBuilder); SendTaskImpl.RegisterType(bpmnModelBuilder); SequenceFlowImpl.RegisterType(bpmnModelBuilder); ServiceTaskImpl.RegisterType(bpmnModelBuilder); SignalEventDefinitionImpl.RegisterType(bpmnModelBuilder); SignalImpl.RegisterType(bpmnModelBuilder); Source.RegisterType(bpmnModelBuilder); SourceRef.RegisterType(bpmnModelBuilder); StartEventImpl.RegisterType(bpmnModelBuilder); SubConversationImpl.RegisterType(bpmnModelBuilder); SubProcessImpl.RegisterType(bpmnModelBuilder); SupportedInterfaceRef.RegisterType(bpmnModelBuilder); Supports.RegisterType(bpmnModelBuilder); Target.RegisterType(bpmnModelBuilder); TargetRef.RegisterType(bpmnModelBuilder); TaskImpl.RegisterType(bpmnModelBuilder); TerminateEventDefinitionImpl.RegisterType(bpmnModelBuilder); TextImpl.RegisterType(bpmnModelBuilder); TextAnnotationImpl.RegisterType(bpmnModelBuilder); ThrowEventImpl.RegisterType(bpmnModelBuilder); TimeCycleImpl.RegisterType(bpmnModelBuilder); TimeDateImpl.RegisterType(bpmnModelBuilder); TimeDurationImpl.RegisterType(bpmnModelBuilder); TimerEventDefinitionImpl.RegisterType(bpmnModelBuilder); To.RegisterType(bpmnModelBuilder); TransactionImpl.RegisterType(bpmnModelBuilder); Transformation.RegisterType(bpmnModelBuilder); UserTaskImpl.RegisterType(bpmnModelBuilder); WhileExecutingInputRefs.RegisterType(bpmnModelBuilder); WhileExecutingOutputRefs.RegisterType(bpmnModelBuilder); // DC FontImpl.RegisterType(bpmnModelBuilder); PointImpl.RegisterType(bpmnModelBuilder); BoundsImpl.RegisterType(bpmnModelBuilder); // DI DiagramImpl.RegisterType(bpmnModelBuilder); DiagramElementImpl.RegisterType(bpmnModelBuilder); EdgeImpl.RegisterType(bpmnModelBuilder); impl.instance.di.ExtensionImpl.RegisterType(bpmnModelBuilder); LabelImpl.RegisterType(bpmnModelBuilder); LabeledEdgeImpl.RegisterType(bpmnModelBuilder); LabeledShapeImpl.RegisterType(bpmnModelBuilder); NodeImpl.RegisterType(bpmnModelBuilder); PlaneImpl.RegisterType(bpmnModelBuilder); ShapeImpl.RegisterType(bpmnModelBuilder); StyleImpl.RegisterType(bpmnModelBuilder); WaypointImpl.RegisterType(bpmnModelBuilder); // BPMNDI BpmnDiagramImpl.RegisterType(bpmnModelBuilder); BpmnEdgeImpl.RegisterType(bpmnModelBuilder); BpmnLabelImpl.RegisterType(bpmnModelBuilder); BpmnLabelStyleImpl.RegisterType(bpmnModelBuilder); BpmnPlaneImpl.RegisterType(bpmnModelBuilder); BpmnShapeImpl.RegisterType(bpmnModelBuilder); // camunda extensions CamundaConnectorImpl.RegisterType(bpmnModelBuilder); CamundaConnectorIdImpl.RegisterType(bpmnModelBuilder); CamundaConstraintImpl.RegisterType(bpmnModelBuilder); CamundaEntryImpl.RegisterType(bpmnModelBuilder); CamundaExecutionListenerImpl.RegisterType(bpmnModelBuilder); CamundaExpressionImpl.RegisterType(bpmnModelBuilder); CamundaFailedJobRetryTimeCycleImpl.RegisterType(bpmnModelBuilder); CamundaFieldImpl.RegisterType(bpmnModelBuilder); CamundaFormDataImpl.RegisterType(bpmnModelBuilder); CamundaFormFieldImpl.RegisterType(bpmnModelBuilder); CamundaFormPropertyImpl.RegisterType(bpmnModelBuilder); CamundaInImpl.RegisterType(bpmnModelBuilder); CamundaInputOutputImpl.RegisterType(bpmnModelBuilder); CamundaInputParameterImpl.RegisterType(bpmnModelBuilder); CamundaListImpl.RegisterType(bpmnModelBuilder); CamundaMapImpl.RegisterType(bpmnModelBuilder); CamundaOutputParameterImpl.RegisterType(bpmnModelBuilder); CamundaOutImpl.RegisterType(bpmnModelBuilder); CamundaPotentialStarterImpl.RegisterType(bpmnModelBuilder); CamundaPropertiesImpl.RegisterType(bpmnModelBuilder); CamundaPropertyImpl.RegisterType(bpmnModelBuilder); CamundaScriptImpl.RegisterType(bpmnModelBuilder); CamundaStringImpl.RegisterType(bpmnModelBuilder); CamundaTaskListenerImpl.RegisterType(bpmnModelBuilder); CamundaValidationImpl.RegisterType(bpmnModelBuilder); CamundaValueImpl.RegisterType(bpmnModelBuilder); }
public DebuggerAction GetAction(int ip, SourceRef sourceref) { try { if (m_FreeRunAfterAttach) { m_FreeRunAfterAttach = false; return(new DebuggerAction() { Action = DebuggerAction.ActionType.Run }); } m_InGetActionLoop = true; m_RequestPause = false; if (m_HostBusySent) { m_HostBusySent = false; SendMessage("Host ready!"); } if (sourceref != m_LastSentSourceRef) { Send(xw => { SendSourceRef(xw, sourceref); }); } while (true) { DebuggerAction da = m_QueuedActions.Dequeue(); if (da.Action == DebuggerAction.ActionType.Refresh || da.Action == DebuggerAction.ActionType.HardRefresh) { lock (m_Lock) { HashSet <string> existing = new HashSet <string>(); // remove all not present anymore m_Watches.RemoveAll(de => !m_WatchesChanging.Contains(de.ExpressionCode)); // add all missing existing.UnionWith(m_Watches.Select(de => de.ExpressionCode)); m_Watches.AddRange(m_WatchesChanging .Where(code => !existing.Contains(code)) .Select(code => CreateDynExpr(code))); } return(da); } if (da.Action == DebuggerAction.ActionType.ToggleBreakpoint || da.Action == DebuggerAction.ActionType.SetBreakpoint || da.Action == DebuggerAction.ActionType.ClearBreakpoint) { return(da); } if (da.Age < TimeSpan.FromMilliseconds(100)) { return(da); } } } finally { m_InGetActionLoop = false; } }
public Instruction(SourceRef sourceref) { SourceCodeRef = sourceref; }
internal Instruction(SourceRef sourceref) { SourceCodeRef = sourceref; }
private SourceRef RegisterSourceRef(SourceRef sourceRef) { LoadingContext.Source.Refs.Add(sourceRef); sourceRef.Type = this.GetType().Name; return(sourceRef); }
internal SyntaxErrorException(Script script, SourceRef sref, string format, params object[] args) : base(format, args) { DecorateMessage(script, sref); }
internal string PerformMessageDecorationBeforeUnwind(DynValue messageHandler, string decoratedMessage, SourceRef sourceRef) { try { DynValue[] args = new DynValue[] { DynValue.NewString(decoratedMessage) }; DynValue ret = DynValue.Nil; if (messageHandler.Type == DataType.Function) { ret = this.Call(messageHandler, args); } else if (messageHandler.Type == DataType.ClrFunction) { ScriptExecutionContext ctx = new ScriptExecutionContext(this, messageHandler.Callback, sourceRef); ret = messageHandler.Callback.Invoke(ctx, args); } else { throw new ScriptRuntimeException("error handler not set to a function"); } string newmsg = ret.ToPrintString(); if (newmsg != null) { return(newmsg); } } catch (ScriptRuntimeException innerEx) { return(innerEx.Message + "\n" + decoratedMessage); } return(decoratedMessage); }
public DefRef(T def, SourceRef sourceRef) { Def = def; SourceRef = sourceRef; }
private int Internal_ExecCall(int argsCount, int instructionPtr, CallbackFunction handler = null, CallbackFunction continuation = null, bool thisCall = false, string debugText = null, DynValue unwindHandler = null) { DynValue fn = m_ValueStack.Peek(argsCount); if (fn.Type == DataType.ClrFunction) { IList <DynValue> args = new Slice <DynValue>(m_ValueStack, m_ValueStack.Count - argsCount, argsCount, false); // we expand tuples before callbacks // args = DynValue.ExpandArgumentsToList(args); SourceRef sref = GetCurrentSourceRef(instructionPtr); m_ExecutionStack.Push(new CallStackItem() { ClrFunction = fn.Callback, ReturnAddress = instructionPtr, CallingSourceRef = sref, BasePointer = -1, ErrorHandler = handler, Continuation = continuation, ErrorHandlerBeforeUnwind = unwindHandler, }); var ret = fn.Callback.Invoke(new ScriptExecutionContext(this, fn.Callback, sref), args, isMethodCall: thisCall); m_ValueStack.RemoveLast(argsCount + 1); m_ValueStack.Push(ret); m_ExecutionStack.Pop(); return(Internal_CheckForTailRequests(null, instructionPtr)); } else if (fn.Type == DataType.Function) { m_ValueStack.Push(DynValue.NewNumber(argsCount)); m_ExecutionStack.Push(new CallStackItem() { BasePointer = m_ValueStack.Count, ReturnAddress = instructionPtr, Debug_EntryPoint = fn.Function.EntryPointByteCodeLocation, CallingSourceRef = GetCurrentSourceRef(instructionPtr), ClosureScope = fn.Function.ClosureContext, ErrorHandler = handler, Continuation = continuation, ErrorHandlerBeforeUnwind = unwindHandler, }); return(fn.Function.EntryPointByteCodeLocation); } else { var metatable = GetMetatable(fn); if (metatable != null) { var m = metatable.RawGet("__call"); if (m != null && m.IsNotNil()) { DynValue[] tmp = new DynValue[argsCount + 1]; for (int i = 0; i < argsCount + 1; i++) { tmp[i] = m_ValueStack.Pop(); } m_ValueStack.Push(m); for (int i = argsCount; i >= 0; i--) { m_ValueStack.Push(tmp[i]); } return(Internal_ExecCall(argsCount + 1, instructionPtr, handler, continuation)); } } throw ScriptRuntimeException.AttemptToCallNonFunc(fn.Type, debugText); } }
internal ScriptExecutionContext(ExecutionControlToken ecToken, Processor p, CallbackFunction callBackFunction, SourceRef sourceRef, bool isDynamic = false) { IsDynamicExecution = isDynamic; m_Processor = p; m_Callback = callBackFunction; m_EcToken = ecToken; CallingLocation = sourceRef; }
internal int Undump(Stream stream, int sourceID, Table envTable, out bool hasUpvalues) { int baseAddress = m_RootChunk.Code.Count; SourceRef sourceRef = new SourceRef(sourceID, 0, 0, 0, 0, false); var br = new BinDumpReader(stream); ulong headerMark = br.ReadUInt64(); if (headerMark != DUMP_CHUNK_MAGIC) { throw new ArgumentException("Not a MoonSharp chunk"); } int version = br.ReadByte(); if (version != DUMP_CHUNK_VERSION) { throw new ArgumentException("Invalid version"); } hasUpvalues = br.ReadBoolean(); int len = (int)br.ReadVarUInt32(); int numSymbs = (int)br.ReadVarUInt32(); SymbolRef[] allSymbs = new SymbolRef[numSymbs]; for (int i = 0; i < numSymbs; i++) { allSymbs[i] = SymbolRef.ReadBinary(br); } for (int i = 0; i < numSymbs; i++) { allSymbs[i].ReadBinaryEnv(br, allSymbs); } for (int i = 0; i <= len; i++) { Instruction I = Instruction.ReadBinary(br, baseAddress, envTable, allSymbs); m_RootChunk.Code.Add(I); } for (int i = 0; i <= len; i++) { var c = br.ReadByte(); if (c == 0) { m_RootChunk.SourceRefs.Add(sourceRef); } else if (c == 1) { m_RootChunk.SourceRefs.Add(m_RootChunk.SourceRefs[m_RootChunk.SourceRefs.Count - 1]); } else { m_RootChunk.SourceRefs.Add(SourceRef.ReadBinary(br, sourceID)); } } return(baseAddress); }