Example #1
0
            public void Call(Generator generator)
            {
                ILocation      location = new NowhereLocation();
                SlotExpression e        = new SlotExpression(location, new Identifier(location, "this"), true);

                e.Resolve(generator);
                e.Prepare(generator, null);
                e.Generate(generator);
                generator.Assembler.SetTypePart(node.RuntimeStruct);
                generator.Assembler.PushValue();
                int i = 0;

                foreach (Expression a in arguments)
                {
                    a.Prepare(generator, node.parameters.ParameterList[i].TypeReference);
                    a.Generate(generator);
                    node.parameters.ParameterList[i].TypeReference.GenerateConversion(a, generator, a.TypeReference);
                    generator.Assembler.PushValue();
                    i++;
                }
                Placeholder retSite = generator.Assembler.CallFromStack(arguments.Count);

                generator.AddCallTraceEntry(retSite, location, generator.Resolver.CurrentDefinition.Name.DataModifierLess, generator.Resolver.CurrentFieldName);
                node.MarkFieldsAssigned(generator);
            }