Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 public void IncludeEffects(JST.Effects effects)
 {
     contextEffects = contextEffects.Lub(effects);
 }
Ejemplo n.º 8
0
 public void IncludeEffects(JST.Effects effects)
 {
     contextEffects = contextEffects.Lub(effects);
 }