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); }