public CallContext(CompilationEnvironment outerCompEnv, CompilationEnvironment inlinedCompEnv, IImSeq <Expression> arguments) { var paramMap = new Map <JST.Identifier, int>(); for (var i = 0; i < inlinedCompEnv.Method.Arity; i++) { paramMap.Add(inlinedCompEnv.ValueParameterIds[i], i); } Parameters = paramMap; var argumentEffects = new Seq <JST.Effects>(inlinedCompEnv.Method.Arity); SeenParameters = new Seq <bool?>(inlinedCompEnv.Method.Arity); AllArgumentEffects = JST.Effects.Bottom; var allReadOnly = true; foreach (var e in arguments) { var fxCtxt = new JST.EffectsContext(null); e.AccumEffects(fxCtxt, null, null); argumentEffects.Add(fxCtxt.AccumEffects); AllArgumentEffects = AllArgumentEffects.Lub(fxCtxt.AccumEffects); if (!fxCtxt.AccumEffects.IsReadOnly) { allReadOnly = false; } SeenParameters.Add(e.IsValue(outerCompEnv) ? default(bool?) : false); } ArgumentEffects = argumentEffects; AllReadOnly = allReadOnly; IsOk = true; }
public SimplifierContext (CompilationEnvironment compEnv, JST.NameSupply nameSupply, ISimplifierDatabase database, CSTWriter trace) { CompEnv = compEnv; NameSupply = nameSupply; subst = new Map <JST.Identifier, Expression>(); statements = null; contextEffects = JST.Effects.Bottom; Database = database; Trace = trace; }
public SimplifierContext (CompilationEnvironment compEnv, JST.NameSupply nameSupply, ISimplifierDatabase database, CSTWriter trace) { CompEnv = compEnv; NameSupply = nameSupply; subst = new Map<JST.Identifier, Expression>(); statements = null; contextEffects = JST.Effects.Bottom; Database = database; Trace = trace; }
protected SimplifierContext (CompilationEnvironment compEnv, JST.NameSupply nameSupply, Map <JST.Identifier, Expression> subst, Seq <Statement> statements, JST.Effects contextEffects, ISimplifierDatabase database, CSTWriter trace) { CompEnv = compEnv; NameSupply = nameSupply; this.subst = subst; this.statements = statements; this.contextEffects = contextEffects; Database = database; Trace = trace; }
protected SimplifierContext (CompilationEnvironment compEnv, JST.NameSupply nameSupply, Map<JST.Identifier, Expression> subst, Seq<Statement> statements, JST.Effects contextEffects, ISimplifierDatabase database, CSTWriter trace) { CompEnv = compEnv; NameSupply = nameSupply; this.subst = subst; this.statements = statements; this.contextEffects = contextEffects; Database = database; Trace = trace; }
public CallContext(CompilationEnvironment outerCompEnv, CompilationEnvironment inlinedCompEnv, IImSeq<Expression> arguments) { var paramMap = new Map<JST.Identifier, int>(); for (var i = 0; i < inlinedCompEnv.Method.Arity; i++) paramMap.Add(inlinedCompEnv.ValueParameterIds[i], i); Parameters = paramMap; var argumentEffects = new Seq<JST.Effects>(inlinedCompEnv.Method.Arity); SeenParameters = new Seq<bool?>(inlinedCompEnv.Method.Arity); AllArgumentEffects = JST.Effects.Bottom; var allReadOnly = true; foreach (var e in arguments) { var fxCtxt = new JST.EffectsContext(null); e.AccumEffects(fxCtxt, null, null); argumentEffects.Add(fxCtxt.AccumEffects); AllArgumentEffects = AllArgumentEffects.Lub(fxCtxt.AccumEffects); if (!fxCtxt.AccumEffects.IsReadOnly) allReadOnly = false; SeenParameters.Add(e.IsValue(outerCompEnv) ? default(bool?) : false); } ArgumentEffects = argumentEffects; AllReadOnly = allReadOnly; IsOk = true; }
public void IncludeEffects(JST.Effects effects) { contextEffects = contextEffects.Lub(effects); }
public void IncludeEffects(JST.Effects effects) { contextEffects = contextEffects.Lub(effects); }