Mercurial > hg > truffle
diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLReturnNode.java @ 13821:b16ec83edc73
Documentation and more refactoring of Simple Language
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 29 Jan 2014 20:45:43 -0800 |
parents | 7c418666c6c9 |
children | 64c77f0577bb |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLReturnNode.java Wed Jan 29 20:43:28 2014 -0800 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLReturnNode.java Wed Jan 29 20:45:43 2014 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,19 +23,27 @@ package com.oracle.truffle.sl.nodes.controlflow; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.sl.nodes.*; +import com.oracle.truffle.sl.runtime.*; +@NodeInfo(shortName = "return") public class SLReturnNode extends SLStatementNode { - @Child private SLExpressionNode expr; + @Child private SLExpressionNode valueNode; - public SLReturnNode(SLExpressionNode expr) { - this.expr = adoptChild(expr); + public SLReturnNode(SLExpressionNode valueNode) { + this.valueNode = adoptChild(valueNode); } @Override public void executeVoid(VirtualFrame frame) { - Object result = expr.executeGeneric(frame); + Object result; + if (valueNode != null) { + result = valueNode.executeGeneric(frame); + } else { + result = SLNull.SINGLETON; + } throw new SLReturnException(result); } }