From 8423b14b48dfb9008e0af93d8f396109a0eeb68c Mon Sep 17 00:00:00 2001 From: "igor%mir2.org" Date: Wed, 12 May 2004 15:00:41 +0000 Subject: [PATCH] Removal of Token.GETBASE, Token.GETTHIS, Token.PARENT, Token.NEWTEMP, Token.USETEMP, Node.TEMP_PROP, Node.FIXUPS_PROP, Node.USES_PROP constants which are no longer used after the last changes --- .../org/mozilla/javascript/Interpreter.java | 9 -- js/rhino/src/org/mozilla/javascript/Node.java | 33 ++--- .../src/org/mozilla/javascript/Token.java | 138 ++++++++---------- .../mozilla/javascript/optimizer/Codegen.java | 66 +-------- 4 files changed, 82 insertions(+), 164 deletions(-) diff --git a/js/rhino/src/org/mozilla/javascript/Interpreter.java b/js/rhino/src/org/mozilla/javascript/Interpreter.java index 5fac4a9c8f3f..be44e643da14 100644 --- a/js/rhino/src/org/mozilla/javascript/Interpreter.java +++ b/js/rhino/src/org/mozilla/javascript/Interpreter.java @@ -791,7 +791,6 @@ public class Interpreter break; } - case Token.GETBASE : case Token.BINDNAME : case Token.NAME : case Token.STRING : @@ -1595,7 +1594,6 @@ public class Interpreter case Token.CATCH_SCOPE : case Icode_TYPEOFNAME : case Icode_NAME_AND_THIS : - case Token.GETBASE : case Token.BINDNAME : case Token.SETNAME : case Token.NAME : @@ -1767,7 +1765,6 @@ public class Interpreter case Token.CATCH_SCOPE : case Icode_TYPEOFNAME : case Icode_NAME_AND_THIS : - case Token.GETBASE : case Token.BINDNAME : case Token.SETNAME : case Token.NAME : @@ -2472,12 +2469,6 @@ public class Interpreter pc += 2; break; } - case Token.GETBASE : { - String name = strings[getIndex(iCode, pc + 1)]; - stack[++stackTop] = ScriptRuntime.getBase(scope, name); - pc += 2; - break; - } case Token.SETNAME : { String name = strings[getIndex(iCode, pc + 1)]; Object rhs = stack[stackTop]; diff --git a/js/rhino/src/org/mozilla/javascript/Node.java b/js/rhino/src/org/mozilla/javascript/Node.java index 97be213271aa..8285e516069f 100644 --- a/js/rhino/src/org/mozilla/javascript/Node.java +++ b/js/rhino/src/org/mozilla/javascript/Node.java @@ -364,16 +364,13 @@ public class Node public static final int FUNCTION_PROP = 1, - TEMP_PROP = 2, - LOCAL_PROP = 3, - LOCAL_BLOCK_PROP = 4, - FIXUPS_PROP = 5, - USES_PROP = 6, - REGEXP_PROP = 7, - CASES_PROP = 8, - DEFAULT_PROP = 9, - CASEARRAY_PROP = 10, - SPECIAL_PROP_PROP = 11, + LOCAL_PROP = 2, + LOCAL_BLOCK_PROP = 3, + REGEXP_PROP = 4, + CASES_PROP = 5, + DEFAULT_PROP = 6, + CASEARRAY_PROP = 7, + SPECIAL_PROP_PROP = 8, /* the following properties are defined and manipulated by the optimizer - @@ -386,11 +383,11 @@ public class Node matches. */ - TARGETBLOCK_PROP = 12, - VARIABLE_PROP = 13, - ISNUMBER_PROP = 14, - DIRECTCALL_PROP = 15, - SPECIALCALL_PROP = 16; + TARGETBLOCK_PROP = 9, + VARIABLE_PROP = 10, + ISNUMBER_PROP = 11, + DIRECTCALL_PROP = 12, + SPECIALCALL_PROP = 13; public static final int // this value of the SPECIAL_PROP_PROP specifies SPECIAL_PROP_PROTO = 1, @@ -412,11 +409,8 @@ public class Node // can remove all these strings. switch (propType) { case FUNCTION_PROP: return "function"; - case TEMP_PROP: return "temp"; case LOCAL_PROP: return "local"; case LOCAL_BLOCK_PROP: return "local_block"; - case FIXUPS_PROP: return "fixups"; - case USES_PROP: return "uses"; case REGEXP_PROP: return "regexp"; case CASES_PROP: return "cases"; case DEFAULT_PROP: return "default"; @@ -620,9 +614,6 @@ public class Node sb.append(": "); String value; switch (type) { - case FIXUPS_PROP : // can't add this as it recurses - value = "fixups property"; - break; case TARGETBLOCK_PROP : // can't add this as it recurses value = "target block property"; break; diff --git a/js/rhino/src/org/mozilla/javascript/Token.java b/js/rhino/src/org/mozilla/javascript/Token.java index c857454f8234..28f7978dca70 100644 --- a/js/rhino/src/org/mozilla/javascript/Token.java +++ b/js/rhino/src/org/mozilla/javascript/Token.java @@ -130,85 +130,80 @@ public class Token INSTANCEOF = 55, LOCAL_SAVE = 56, LOCAL_LOAD = 57, - GETBASE = 58, - GETVAR = 59, - SETVAR = 60, - UNDEFINED = 61, - CATCH_SCOPE = 62, - ENUM_INIT = 63, - ENUM_NEXT = 64, - ENUM_ID = 65, - THISFN = 66, - RETURN_POPV = 67, // to return result stored as popv in functions + GETVAR = 58, + SETVAR = 59, + UNDEFINED = 60, + CATCH_SCOPE = 61, + ENUM_INIT = 62, + ENUM_NEXT = 63, + ENUM_ID = 64, + THISFN = 65, + RETURN_POPV = 66, // to return result stored as popv in functions - LAST_BYTECODE_TOKEN = 67, + LAST_BYTECODE_TOKEN = 66, // End of interpreter bytecodes - GETTHIS = 68, - TRY = 69, - SEMI = 70, // semicolon - LB = 71, // left and right brackets - RB = 72, - LC = 73, // left and right curlies (braces) - RC = 74, - LP = 75, // left and right parentheses - RP = 76, - COMMA = 77, // comma operator - ASSIGN = 78, // simple assignment (=) - ASSIGNOP = 79, // assignment with operation (+= -= etc.) - HOOK = 80, // conditional (?:) - COLON = 81, - OR = 82, // logical or (||) - AND = 83, // logical and (&&) - INC = 84, // increment/decrement (++ --) - DEC = 85, - DOT = 86, // member operator (.) - FUNCTION = 87, // function keyword - EXPORT = 88, // export keyword - IMPORT = 89, // import keyword - IF = 90, // if keyword - ELSE = 91, // else keyword - SWITCH = 92, // switch keyword - CASE = 93, // case keyword - DEFAULT = 94, // default keyword - WHILE = 95, // while keyword - DO = 96, // do keyword - FOR = 97, // for keyword - BREAK = 98, // break keyword - CONTINUE = 99, // continue keyword - VAR = 100, // var keyword - WITH = 101, // with keyword - CATCH = 102, // catch keyword - FINALLY = 103, // finally keyword - VOID = 104, // void keyword - RESERVED = 105, // reserved keywords + TRY = 67, + SEMI = 68, // semicolon + LB = 69, // left and right brackets + RB = 70, + LC = 71, // left and right curlies (braces) + RC = 72, + LP = 73, // left and right parentheses + RP = 74, + COMMA = 75, // comma operator + ASSIGN = 76, // simple assignment (=) + ASSIGNOP = 77, // assignment with operation (+= -= etc.) + HOOK = 78, // conditional (?:) + COLON = 79, + OR = 80, // logical or (||) + AND = 81, // logical and (&&) + INC = 82, // increment/decrement (++ --) + DEC = 83, + DOT = 84, // member operator (.) + FUNCTION = 85, // function keyword + EXPORT = 86, // export keyword + IMPORT = 87, // import keyword + IF = 88, // if keyword + ELSE = 89, // else keyword + SWITCH = 90, // switch keyword + CASE = 91, // case keyword + DEFAULT = 92, // default keyword + WHILE = 93, // while keyword + DO = 94, // do keyword + FOR = 95, // for keyword + BREAK = 96, // break keyword + CONTINUE = 97, // continue keyword + VAR = 98, // var keyword + WITH = 99, // with keyword + CATCH = 100, // catch keyword + FINALLY = 101, // finally keyword + VOID = 102, // void keyword + RESERVED = 103, // reserved keywords - EMPTY = 106, + EMPTY = 104, /* types used for the parse tree - these never get returned * by the scanner. */ - BLOCK = 107, // statement block - ARRAYLIT = 108, // array literal - OBJLIT = 109, // object literal - LABEL = 110, // label - TARGET = 111, - LOOP = 112, - EXPRSTMT = 113, - PARENT = 114, - JSR = 115, - NEWTEMP = 116, - USETEMP = 117, - SCRIPT = 118, // top-level node for entire script - TYPEOFNAME = 119, // for typeof(simple-name) - USE_STACK = 120, - SETPROP_OP = 121, // x.y op= something - SETELEM_OP = 122, // x[y] op= something - INIT_LIST = 123, - LOCAL_BLOCK = 124, + BLOCK = 105, // statement block + ARRAYLIT = 106, // array literal + OBJLIT = 107, // object literal + LABEL = 108, // label + TARGET = 109, + LOOP = 110, + EXPRSTMT = 111, + JSR = 112, + SCRIPT = 113, // top-level node for entire script + TYPEOFNAME = 114, // for typeof(simple-name) + USE_STACK = 115, + SETPROP_OP = 116, // x.y op= something + SETELEM_OP = 117, // x[y] op= something + INIT_LIST = 118, + LOCAL_BLOCK = 119, - LAST_TOKEN = 124; + LAST_TOKEN = 119; public static String name(int token) { @@ -273,11 +268,9 @@ public class Token case INSTANCEOF: return "INSTANCEOF"; case LOCAL_SAVE: return "LOCAL_SAVE"; case LOCAL_LOAD: return "LOCAL_LOAD"; - case GETBASE: return "GETBASE"; case GETVAR: return "GETVAR"; case SETVAR: return "SETVAR"; case UNDEFINED: return "UNDEFINED"; - case GETTHIS: return "GETTHIS"; case TRY: return "TRY"; case CATCH_SCOPE: return "CATCH_SCOPE"; case ENUM_INIT: return "ENUM_INIT"; @@ -328,10 +321,7 @@ public class Token case TARGET: return "TARGET"; case LOOP: return "LOOP"; case EXPRSTMT: return "EXPRSTMT"; - case PARENT: return "PARENT"; case JSR: return "JSR"; - case NEWTEMP: return "NEWTEMP"; - case USETEMP: return "USETEMP"; case SCRIPT: return "SCRIPT"; case TYPEOFNAME: return "TYPEOFNAME"; case USE_STACK: return "USE_STACK"; diff --git a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java index 0051c85d7e98..89ad32fb983e 100644 --- a/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java +++ b/js/rhino/src/org/mozilla/javascript/optimizer/Codegen.java @@ -1883,30 +1883,7 @@ class BodyCodegen break; case Token.BINDNAME: - case Token.GETBASE: - visitBind(node, type, child); - break; - - case Token.GETTHIS: - generateCodeFromNode(child, node); - addScriptRuntimeInvoke("getThis", - "(Lorg/mozilla/javascript/Scriptable;" - +")Lorg/mozilla/javascript/Scriptable;"); - break; - - case Token.PARENT: - generateCodeFromNode(child, node); - addScriptRuntimeInvoke("getParent", - "(Ljava/lang/Object;" - +")Lorg/mozilla/javascript/Scriptable;"); - break; - - case Token.NEWTEMP: - visitNewTemp(node, child); - break; - - case Token.USETEMP: - visitUseTemp(node, child); + visitBind(node, child); break; case Token.LOCAL_LOAD: @@ -2380,8 +2357,7 @@ class BodyCodegen private void generateFunctionAndThisObj(Node node, Node parent) { -// REMOVE Token.PARENT, Token.GETBASE, Token.GETTHIS, NETEMP?, USETEMP? ! - // Place on stack function object, function this pair + // Place on stack (function object, function this) pair switch (node.getType()) { case Token.GETPROP: // x.y(...) @@ -3295,16 +3271,12 @@ class BodyCodegen Node nameChild = child.getNext(); generateCodeFromNode(nameChild, node); // the name /* - for 'this.foo' we call thisGet which can skip some + for 'this.foo' we call getPropScriptable which can skip some casting overhead. */ int childType = child.getType(); - if ((childType == Token.THIS - || (childType == Token.NEWTEMP - && child.getFirstChild().getType() == Token.THIS)) - && nameChild.getType() == Token.STRING) - { + if (childType == Token.THIS && nameChild.getType() == Token.STRING) { addOptRuntimeInvoke( "getPropScriptable", "(Lorg/mozilla/javascript/Scriptable;" @@ -3430,7 +3402,7 @@ class BodyCodegen +")Ljava/lang/Object;"); } - private void visitBind(Node node, int type, Node child) + private void visitBind(Node node, Node child) { while (child != null) { generateCodeFromNode(child, node); @@ -3439,8 +3411,7 @@ class BodyCodegen // Generate code for "ScriptRuntime.bind(varObj, "s")" cfw.addALoad(variableObjectLocal); // get variable object cfw.addPush(node.getString()); // push name - addScriptRuntimeInvoke( - type == Token.BINDNAME ? "bind" : "getBase", + addScriptRuntimeInvoke("bind", "(Lorg/mozilla/javascript/Scriptable;" +"Ljava/lang/String;" +")Lorg/mozilla/javascript/Scriptable;"); @@ -3453,31 +3424,6 @@ class BodyCodegen return localSlot; } - private void visitNewTemp(Node node, Node child) - { - generateCodeFromNode(child, node); - int local = getNewWordLocal(); - node.putIntProp(Node.LOCAL_PROP, local); - cfw.add(ByteCode.DUP); - cfw.addAStore(local); - if (node.getIntProp(Node.USES_PROP, 0) == 0) - releaseWordLocal((short)local); - } - - private void visitUseTemp(Node node, Node child) - { - Node temp = (Node) node.getProp(Node.TEMP_PROP); - int local = temp.getExistingIntProp(Node.LOCAL_PROP); - cfw.addALoad(local); - int n = temp.getIntProp(Node.USES_PROP, 0); - if (n <= 1) { - releaseWordLocal((short)local); - } - if (n != 0 && n != Integer.MAX_VALUE) { - temp.putIntProp(Node.USES_PROP, n - 1); - } - } - private void dcpLoadAsNumber(int dcp_register) { cfw.addALoad(dcp_register);