public override void Visit(InternalCall node) { Visit((InternalInvocation)node); }
public override void Visit(InternalCall node) { PushLocation(node); VisitNodes(node.Arguments); _ilGen.Call(node.Method); _result.Type = node.Method.ReturnType; PopLocation(); }
internal static mdr.ValueTypes GetType(InternalCall node) { return mdr.ValueTypes.Unknown; }
//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); }
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(); }
public abstract void Visit(InternalCall node);
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(); }
public override void Visit(InternalCall node) { throw new InvalidOperationException(); }