Ejemplo n.º 1
0
 public override void Visit(InternalCall node) { Visit((InternalInvocation)node); }
Ejemplo n.º 2
0
      public override void Visit(InternalCall node)
      {
        PushLocation(node);

        VisitNodes(node.Arguments);
        _ilGen.Call(node.Method);
        _result.Type = node.Method.ReturnType;

        PopLocation();
      }
Ejemplo n.º 3
0
 internal static mdr.ValueTypes GetType(InternalCall node) { return mdr.ValueTypes.Unknown; }
Ejemplo n.º 4
0
    //public override void Visit(FunctionDeclarationStatement node) { base.Visit(node); node.ValueType = GetType(node); }
    #endregion

    #region Program; ECMA 14 -------------------------------------------------------------------------------------
    //public override void Visit(Program node) { base.Visit(node); node.ValueType = GetType(node); }
    #endregion

    #region Interanls
    public override void Visit(InternalCall node) { base.Visit(node); node.ValueType = GetType(node); }
Ejemplo n.º 5
0
      public override void Visit(InternalCall node)
      {
        PushLocation(node);

        var resultIndex = _stackModel.StackPointer;

        VisitNodes(node.Arguments);
        _stackModel.Pop(node.Arguments.Count);

        BeginICMethod(node);
        LoadArguments(node, node.Method, resultIndex);
        _ilGen.Call(node.Method);
        if (node.Method.ReturnType != null && node.Method.ReturnType != Types.ClrSys.Void)
        {
          _ilGen.StoreValue(resultIndex, Types.ValueTypeOf(node.Method.ReturnType));
          _stackModel.Push(1);
        }
        EndICMethod();

        PopLocation();
      }
Ejemplo n.º 6
0
 public override void Visit(InternalCall node)
 {
     Visit((InternalInvocation)node);
 }
Ejemplo n.º 7
0
 public abstract void Visit(InternalCall node);
Ejemplo n.º 8
0
      public override void Visit(InternalCall node)
      {
        PushLocation(node);

        var parameters = node.Method.GetParameters();
        Debug.Assert(node.Arguments.Count == parameters.Length + (node.Method.IsStatic ? 0 : 1), "Arguments mismatch between node {0} and method {1} of {2}", node, node.Method, node.Method.DeclaringType);
        int i = 0;
        if (!node.Method.IsStatic)
          LoadFromStack(node.Arguments[i++], node.Method.DeclaringType);
        for (; i < node.Arguments.Count; ++i)
          LoadFromStack(node.Arguments[i], parameters[i].ParameterType);
        _ilGen.Call(node.Method);
        StoreToStack(node.Method.ReturnType);

        PopLocation();
      }
Ejemplo n.º 9
0
 public override void Visit(InternalCall node) { throw new InvalidOperationException(); }