зеркало из https://github.com/mozilla/gecko-dev.git
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
This commit is contained in:
Родитель
92f45d1054
Коммит
8423b14b48
|
@ -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];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче