public override void Visit(ReturnStatement node) { VisitNode(node.Expression); Visit((Statement)node); }
public override void Visit(ReturnStatement node) { PushLocation(node); if (node.Expression != null) { var stackState = _localVars.GetTemporaryStackState(); Ldarg_CallFrame(); _ilGen.Ldflda(Types.CallFrame.Return); VisitNode(node.Expression); _ilGen.Call(Types.DValue.Set.Get(_result.ValueType)); _localVars.PopTemporariesAfter(stackState); } PopLocation(); if (_labelInfos.CurrProtectedRegion == null) _ilGen.Br(_epilogLabel); else _ilGen.Leave(_epilogLabel); }
public override void Visit(ReturnStatement node) { PushLocation(node); if (node.Expression != null) { VisitNode(node.Expression); } BeginICMethod("Return"); if (node.Expression != null) { _stackModel.Pop(1); _ilGen.Ldarg_CallFrame(); _ilGen.Ldc_I4(_stackModel.StackPointer); _ilGen.Call(Types.Operations.ICMethods.Return); } Br(int.MaxValue); EndICMethod(); PopLocation(); }
public override void Visit(ReturnStatement node) { Visit((Statement)node); }
public override void Visit(ReturnStatement node) { var gotoEnd = new GotoStatement(_returnLabelName); if (node.Expression != null) { //We have a return value as well var cloned = new BlockStatement(new List<Statement>()); var returnValue = GetCloneOf(node.Expression); var retAssign = new WriteIdentifierExpression(_returnValueSymbol, returnValue); cloned.Statements.Add(gotoEnd); cloned.Statements.Add(new ExpressionStatement(retAssign)); result = cloned; } else { result = gotoEnd; } }
public ReturnStatement MakeReturnStatement(Scope scope, IExpression expression, int offset) { var n = new ReturnStatement((Expression)expression, offset); scope.Returns.Add(n); return n; }
public override void Visit(ReturnStatement node) { PushLocation(node); if (node.Expression != null) { VisitNode(node.Expression); Ldarg_CallFrame(); Call(Types.Operations.Stack.Return, 1, 0); } PopLocation(); if (_labelInfos.CurrProtectedRegion == null) _ilGen.Br(_epilogLabel); else _ilGen.Leave(_epilogLabel); }
public override void Visit(ReturnStatement node) { throw new NotImplementedException(); }
public override void Visit(ReturnStatement node) { }