From 8fc68d690032a726c5a4ca80c8ba8db1c0b97a8d Mon Sep 17 00:00:00 2001 From: "nboyd%atg.com" Date: Wed, 3 Apr 2002 01:20:27 +0000 Subject: [PATCH] Fixed problem with -opt 9: Hi Norris, I encountered the following exception with the below script in compiled mode with RhinoLatest.zip: java.lang.NullPointerException at org.mozilla.javascript.optimizer.Codegen.visitCall(Codegen.java:1790) at org.mozilla.javascript.optimizer.Codegen.generateCodeFromNode(Codegen.java:567) at org.mozilla.javascript.optimizer.Codegen.visitReturn(Codegen.java:2283) at org.mozilla.javascript.optimizer.Codegen.generateCodeFromNode(Codegen.java:592) at org.mozilla.javascript.optimizer.Codegen.generateCodeFromNode(Codegen.java:546) at org.mozilla.javascript.optimizer.Codegen.generateCodeFromNode(Codegen.java:546) at org.mozilla.javascript.optimizer.Codegen.generateCodeFromNode(Codegen.java:546) at org.mozilla.javascript.optimizer.Codegen.generateCode(Codegen.java:497) at org.mozilla.javascript.optimizer.Codegen.generateFunctionInits(Codegen.java:1292) at org.mozilla.javascript.optimizer.Codegen.generateInit(Codegen.java:1186) at org.mozilla.javascript.optimizer.Codegen.generateCode(Codegen.java:481) at org.mozilla.javascript.optimizer.Codegen.compile(Codegen.java:88) at org.mozilla.javascript.Context.compile(Context.java:1965) at org.mozilla.javascript.Context.compile(Context.java:1874) at org.mozilla.javascript.Context.compileReader(Context.java:895) at org.mozilla.javascript.Context.evaluateReader(Context.java:813) at org.mozilla.javascript.tools.shell.Main.evaluateReader(Main.java:318) at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:309) at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:248) at org.mozilla.javascript.tools.shell.Main.exec(Main.java:95) at org.mozilla.javascript.tools.shell.Main.main(Main.java:68) Exception in thread "main" function tak(x, y, z, k) { if (!(y < x)) { return k(z); } else { return tak(x - 1, y, z, function(v1) { return tak(y - 1, z, x, function(v2) { return tak(z - 1, x, y, function(v3) { return tak(v1, v2, v3, k); }); }); }); } } function cpstak(x, y, z) { return tak(x, y, z, function(a) {return a;}); } //;;; call: (cpstak 18 12 6) //(run-benchmark "CPSTAK" (lambda () (cpstak 18 12 6))) var start = new Date(); var res = cpstak(18, 12, 6); var end = new Date(); print(res +": elapsed: " + (end - start)); --- js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java index c5cc1baef7bb..ff7240d4c5e9 100644 --- a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java +++ b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java @@ -1787,7 +1787,7 @@ public class Codegen extends Interpreter { && inDirectCallFunction) { OptLocalVariable lVar = (OptLocalVariable)(child.getProp(Node.VARIABLE_PROP)); - if (lVar.isParameter()) { + if (lVar != null && lVar.isParameter()) { handled = true; aload(lVar.getJRegister()); dload((short)(lVar.getJRegister() + 1)); @@ -1992,7 +1992,7 @@ public class Codegen extends Interpreter { && inDirectCallFunction) { OptLocalVariable lVar = (OptLocalVariable)(child.getProp(Node.VARIABLE_PROP)); - if (lVar.isParameter()) { + if (lVar != null && lVar.isParameter()) { child.removeProp(Node.ISNUMBER_PROP); generateCodeFromNode(child, node, -1, -1); handled = true;