private void ImplementVerb(TAVerb verb) { if (verb.During != null) { verb.During.Implement(this); } }
private void AddCoStates(int issuePoint, LocalVariableState lvState, IEnumerable <TAVerb> states) { Contract.Requires(states != null); TAVerb first = states.First(); CoFSMInfo cfi = _coFSMs[first.Target]; if (cfi.AddVerbs(issuePoint, lvState, states)) { foreach (var tup in cfi.GetVerbs(issuePoint, lvState)) { TAVerb tav = tup.Item1; CoStateInfo csi = tup.Item2; if (csi.StateAction == null) { InitCoState(tav, csi); if (tav.During != null) { foreach (AbstractEvent ev in tav.During.Sensitivity) { cfi.Sensitivity.Add(((SignalBase)ev.Owner).Descriptor); } } } } } }
public void ImplementCoState(int issuePoint, IEnumerable <TAVerb> states, int step, IFunctionBuilder builder) { LocalVariableState lvState = _templ.ExportLocalVariableState(); AddCoStates(issuePoint, lvState, states); TAVerb first = states.First(); CoFSMInfo cfi = _coFSMs[first.Target]; var tup = cfi.GetVerbs(issuePoint, lvState).ElementAt(step); CoStateInfo csi = tup.Item2; ImplementCoStateAction(cfi, csi, builder); }
private void InitCoState(TAVerb tav, CoStateInfo csi) { MethodCode csc = MethodCode.Create(tav.Op.Method); MethodDescriptor md = new MethodDescriptor(tav.Op.Method, new object[0], new EVariability[0]); MSILDecompiler decomp = new MSILDecompiler(md, csc, tav.Op.Target); decomp.Template.DisallowReturnStatements = true; decomp.Template.NestLoopsDeeply = true; decomp.Template.TryToEliminateLoops = true; decomp.Template.DisallowConditionals = true; IDecompilationResult result = decomp.Decompile(); csi.StateAction = result.Decompiled; csi.DuringAction = tav.During; }
private void Initialize() { Debug.Assert(!_inited); IEnumerable <TAVerb> rdef = RealizeDefault(); TAVerb last = null; foreach (TAVerb verb in rdef) { if (verb.TMode == ETVMode.Locked) { ++_ii; } ++_lat; last = verb; } if (last != null) { --_lat; } _inited = true; }
/// <summary> /// Adds a transaction verb to describe the neutral (default) dataflows for all specified signal targets. /// </summary> /// <param name="verb">a transaction verb intended as neutral flow</param> public void AddNeutral(TAVerb verb) { AddNeutral(verb.ToCombFlow()); }