From aebde578163888155d0e5c591037344bb6ce9d99 Mon Sep 17 00:00:00 2001 From: "norris%netscape.com" Date: Fri, 5 Nov 1999 21:23:10 +0000 Subject: [PATCH] Improve performance of the non-error call code. git-svn-id: svn://10.0.0.236/trunk@52862 18797224-902f-48f8-a5cc-f745e15eee43 --- .../org/mozilla/javascript/Interpreter.java | 26 ++++++++++--------- .../org/mozilla/javascript/Interpreter.java | 26 ++++++++++--------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java b/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java index a593cc23890..e8009224711 100644 --- a/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java +++ b/mozilla/js/rhino/org/mozilla/javascript/Interpreter.java @@ -1297,18 +1297,18 @@ public class Interpreter extends LabelTable { local = new Object[theData.itsMaxLocals]; Object[] vars = null; - + final Scriptable undefined = Undefined.instance; int i = theData.itsVariableTable.size(); if (i > 0) { vars = new Object[i]; for (i = 0; i < theData.itsVariableTable.getParameterCount(); i++) { if (i >= theData.itsInArgs.length) - vars[i] = Undefined.instance; + vars[i] = undefined; else vars[i] = theData.itsInArgs[i]; } for ( ; i < vars.length; i++) - vars[i] = Undefined.instance; + vars[i] = undefined; } Context cx = theData.itsCX; @@ -1351,7 +1351,7 @@ public class Interpreter extends LabelTable { */ Object savedSecurityDomain = cx.interpreterSecurityDomain; cx.interpreterSecurityDomain = theData.securityDomain; - Object result = Undefined.instance; + Object result = undefined; while (pc < iCodeLength) { try { @@ -1641,30 +1641,33 @@ public class Interpreter extends LabelTable { pc += 6; break; case TokenStream.CALL : - name = getString(theData.itsStringTable, iCode, pc + 1); count = (iCode[pc + 3] << 8) | (iCode[pc + 4] & 0xFF); outArgs = new Object[count]; for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; rhs = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == cx.getUndefinedValue()) - lhs = name; + if (lhs == undefined) { + lhs = getString(theData.itsStringTable, iCode, + pc + 1); + } stack[stackTop] = ScriptRuntime.call(cx, lhs, rhs, outArgs); pc += 4; break; case TokenStream.NEW : - name = getString(theData.itsStringTable, iCode, pc + 1); count = (iCode[pc + 3] << 8) | (iCode[pc + 4] & 0xFF); outArgs = new Object[count]; for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == cx.getUndefinedValue()) - lhs = name; + if (lhs == undefined) { + lhs = getString(theData.itsStringTable, iCode, + pc + 1); + } stack[stackTop] = ScriptRuntime.newObject(cx, lhs, - outArgs, scope); + outArgs, + scope); pc += 4; break; case TokenStream.TYPEOF : @@ -1910,4 +1913,3 @@ public class Interpreter extends LabelTable { private int version; } - diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java index a593cc23890..e8009224711 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/Interpreter.java @@ -1297,18 +1297,18 @@ public class Interpreter extends LabelTable { local = new Object[theData.itsMaxLocals]; Object[] vars = null; - + final Scriptable undefined = Undefined.instance; int i = theData.itsVariableTable.size(); if (i > 0) { vars = new Object[i]; for (i = 0; i < theData.itsVariableTable.getParameterCount(); i++) { if (i >= theData.itsInArgs.length) - vars[i] = Undefined.instance; + vars[i] = undefined; else vars[i] = theData.itsInArgs[i]; } for ( ; i < vars.length; i++) - vars[i] = Undefined.instance; + vars[i] = undefined; } Context cx = theData.itsCX; @@ -1351,7 +1351,7 @@ public class Interpreter extends LabelTable { */ Object savedSecurityDomain = cx.interpreterSecurityDomain; cx.interpreterSecurityDomain = theData.securityDomain; - Object result = Undefined.instance; + Object result = undefined; while (pc < iCodeLength) { try { @@ -1641,30 +1641,33 @@ public class Interpreter extends LabelTable { pc += 6; break; case TokenStream.CALL : - name = getString(theData.itsStringTable, iCode, pc + 1); count = (iCode[pc + 3] << 8) | (iCode[pc + 4] & 0xFF); outArgs = new Object[count]; for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; rhs = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == cx.getUndefinedValue()) - lhs = name; + if (lhs == undefined) { + lhs = getString(theData.itsStringTable, iCode, + pc + 1); + } stack[stackTop] = ScriptRuntime.call(cx, lhs, rhs, outArgs); pc += 4; break; case TokenStream.NEW : - name = getString(theData.itsStringTable, iCode, pc + 1); count = (iCode[pc + 3] << 8) | (iCode[pc + 4] & 0xFF); outArgs = new Object[count]; for (i = count - 1; i >= 0; i--) outArgs[i] = stack[stackTop--]; lhs = stack[stackTop]; - if (lhs == cx.getUndefinedValue()) - lhs = name; + if (lhs == undefined) { + lhs = getString(theData.itsStringTable, iCode, + pc + 1); + } stack[stackTop] = ScriptRuntime.newObject(cx, lhs, - outArgs, scope); + outArgs, + scope); pc += 4; break; case TokenStream.TYPEOF : @@ -1910,4 +1913,3 @@ public class Interpreter extends LabelTable { private int version; } -