src/jdk/nashorn/internal/codegen/AssignSymbols.java

changeset 1064
03c06c337d9d
parent 1052
c3fb7c0a95d9
child 1105
c3a510b73875
     1.1 --- a/src/jdk/nashorn/internal/codegen/AssignSymbols.java	Fri Oct 17 14:24:26 2014 +0200
     1.2 +++ b/src/jdk/nashorn/internal/codegen/AssignSymbols.java	Mon Oct 20 12:06:36 2014 +0200
     1.3 @@ -76,7 +76,6 @@
     1.4  import jdk.nashorn.internal.ir.Node;
     1.5  import jdk.nashorn.internal.ir.RuntimeNode;
     1.6  import jdk.nashorn.internal.ir.RuntimeNode.Request;
     1.7 -import jdk.nashorn.internal.ir.SplitNode;
     1.8  import jdk.nashorn.internal.ir.Statement;
     1.9  import jdk.nashorn.internal.ir.SwitchNode;
    1.10  import jdk.nashorn.internal.ir.Symbol;
    1.11 @@ -135,9 +134,6 @@
    1.12          if (!(functionNode.hasScopeBlock() || functionNode.needsParentScope())) {
    1.13              functionNode.compilerConstant(SCOPE).setNeedsSlot(false);
    1.14          }
    1.15 -        if (!functionNode.usesReturnSymbol()) {
    1.16 -            functionNode.compilerConstant(RETURN).setNeedsSlot(false);
    1.17 -        }
    1.18          // Named function expressions that end up not referencing themselves won't need a local slot for the self symbol.
    1.19          if(!functionNode.isDeclared() && !functionNode.usesSelfSymbol() && !functionNode.isAnonymous()) {
    1.20              final Symbol selfSymbol = functionNode.getBody().getExistingSymbol(functionNode.getIdent().getName());
    1.21 @@ -1014,7 +1010,7 @@
    1.22          boolean previousWasBlock = false;
    1.23          for (final Iterator<LexicalContextNode> it = lc.getAllNodes(); it.hasNext();) {
    1.24              final LexicalContextNode node = it.next();
    1.25 -            if (node instanceof FunctionNode || node instanceof SplitNode || isSplitArray(node)) {
    1.26 +            if (node instanceof FunctionNode || isSplitArray(node)) {
    1.27                  // We reached the function boundary or a splitting boundary without seeing a definition for the symbol.
    1.28                  // It needs to be in scope.
    1.29                  return true;

mercurial