зеркало из https://github.com/mozilla/gecko-dev.git
I removed method duplication in Node where getNext() was duplicated as getNextSibling() and code was using both of them and similarly for getFirstChild()/getFirst().
This commit is contained in:
Родитель
951de612e3
Коммит
e33d132a12
|
@ -494,8 +494,8 @@ public class IRFactory {
|
|||
int catchLineNo = cb.getLineno();
|
||||
|
||||
Node name = cb.getFirstChild();
|
||||
Node cond = name.getNextSibling();
|
||||
Node catchBlock = cond.getNextSibling();
|
||||
Node cond = name.getNext();
|
||||
Node catchBlock = cond.getNext();
|
||||
cb.removeChild(name);
|
||||
cb.removeChild(cond);
|
||||
cb.removeChild(catchBlock);
|
||||
|
@ -525,7 +525,7 @@ public class IRFactory {
|
|||
pn.addChildToBack(catchStmt);
|
||||
|
||||
// move to next cb
|
||||
cb = cb.getNextSibling();
|
||||
cb = cb.getNext();
|
||||
}
|
||||
|
||||
// Generate code to rethrow if no catch clause was executed
|
||||
|
@ -595,7 +595,7 @@ public class IRFactory {
|
|||
// Move cursor to cursor.next before elem.next can be
|
||||
// altered in new Node constructor
|
||||
elem = cursor;
|
||||
cursor = cursor.getNextSibling();
|
||||
cursor = cursor.getNext();
|
||||
if (elem.getType() == TokenStream.PRIMARY &&
|
||||
elem.getOperation() == TokenStream.UNDEFINED)
|
||||
{
|
||||
|
@ -654,13 +654,13 @@ public class IRFactory {
|
|||
Node comma = new Node(TokenStream.COMMA, temp);
|
||||
for (Node cursor = ((Node) obj).getFirstChild(); cursor != null;) {
|
||||
Node n = cursor;
|
||||
cursor = cursor.getNextSibling();
|
||||
cursor = cursor.getNext();
|
||||
int op = (n.getType() == TokenStream.NAME)
|
||||
? TokenStream.SETPROP
|
||||
: TokenStream.SETELEM;
|
||||
// Move cursor before next.next can be altered in new Node
|
||||
Node next = cursor;
|
||||
cursor = cursor.getNextSibling();
|
||||
cursor = cursor.getNext();
|
||||
Node addelem = new Node(op, createUseTemp(temp), n, next);
|
||||
comma.addChildToBack(addelem);
|
||||
}
|
||||
|
@ -951,7 +951,7 @@ public class IRFactory {
|
|||
if (hasSideEffects(child))
|
||||
return true;
|
||||
else
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -291,16 +291,16 @@ public class Interpreter {
|
|||
while (child != null) {
|
||||
if (child.getType() != TokenStream.FUNCTION)
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
|
||||
case TokenStream.CASE :
|
||||
iCodeTop = updateLineNumber(node, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
while (child != null) {
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -314,13 +314,13 @@ public class Interpreter {
|
|||
iCodeTop = updateLineNumber(node, iCodeTop);
|
||||
while (child != null) {
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
|
||||
case TokenStream.COMMA :
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
while (null != (child = child.getNextSibling())) {
|
||||
while (null != (child = child.getNext())) {
|
||||
iCodeTop = addByte(TokenStream.POP, iCodeTop);
|
||||
itsStackDepth--;
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
|
@ -387,7 +387,7 @@ public class Interpreter {
|
|||
case TokenStream.EQOP :
|
||||
case TokenStream.RELOP : {
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
int op = node.getOperation();
|
||||
if (version == Context.VERSION_1_2) {
|
||||
|
@ -424,7 +424,7 @@ public class Interpreter {
|
|||
functionName = lastAddString;
|
||||
}
|
||||
}
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
childCount++;
|
||||
}
|
||||
if (node.getProp(Node.SPECIALCALL_PROP) != null) {
|
||||
|
@ -527,7 +527,7 @@ public class Interpreter {
|
|||
iCodeTop = addForwardGoto(TokenStream.IFNE, iCodeTop);
|
||||
iCodeTop = addByte(TokenStream.POP, iCodeTop);
|
||||
itsStackDepth--;
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
resolveForwardGoto(falseJumpStart, iCodeTop);
|
||||
break;
|
||||
|
@ -543,7 +543,7 @@ public class Interpreter {
|
|||
iCodeTop = addForwardGoto(TokenStream.IFEQ, iCodeTop);
|
||||
iCodeTop = addByte(TokenStream.POP, iCodeTop);
|
||||
itsStackDepth--;
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
resolveForwardGoto(trueJumpStart, iCodeTop);
|
||||
break;
|
||||
|
@ -562,7 +562,7 @@ public class Interpreter {
|
|||
badTree(node);
|
||||
}
|
||||
} else {
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
iCodeTop = addByte(TokenStream.GETPROP, iCodeTop);
|
||||
itsStackDepth--;
|
||||
|
@ -584,7 +584,7 @@ public class Interpreter {
|
|||
case TokenStream.MUL :
|
||||
case TokenStream.GETELEM :
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
iCodeTop = addByte(type, iCodeTop);
|
||||
itsStackDepth--;
|
||||
|
@ -641,7 +641,7 @@ public class Interpreter {
|
|||
|
||||
case TokenStream.SETPROP : {
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
String s = (String) node.getProp(Node.SPECIAL_PROP_PROP);
|
||||
if (s != null) {
|
||||
|
@ -653,7 +653,7 @@ public class Interpreter {
|
|||
badTree(node);
|
||||
}
|
||||
} else {
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
iCodeTop = addByte(TokenStream.SETPROP, iCodeTop);
|
||||
itsStackDepth -= 2;
|
||||
|
@ -663,9 +663,9 @@ public class Interpreter {
|
|||
|
||||
case TokenStream.SETELEM :
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
iCodeTop = addByte(type, iCodeTop);
|
||||
itsStackDepth -= 2;
|
||||
|
@ -673,7 +673,7 @@ public class Interpreter {
|
|||
|
||||
case TokenStream.SETNAME :
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
iCodeTop = addByte(TokenStream.SETNAME, iCodeTop);
|
||||
iCodeTop = addString(firstChild.getString(), iCodeTop);
|
||||
|
@ -752,7 +752,7 @@ public class Interpreter {
|
|||
case TokenStream.GETELEM : {
|
||||
Node getPropChild = child.getFirstChild();
|
||||
iCodeTop = generateICode(getPropChild, iCodeTop);
|
||||
getPropChild = getPropChild.getNextSibling();
|
||||
getPropChild = getPropChild.getNext();
|
||||
iCodeTop = generateICode(getPropChild, iCodeTop);
|
||||
if (childType == TokenStream.GETPROP) {
|
||||
iCodeTop = addByte(type == TokenStream.INC
|
||||
|
@ -868,7 +868,7 @@ public class Interpreter {
|
|||
the try statemets, we need to emit the endtry
|
||||
before that goto.
|
||||
*/
|
||||
Node nextSibling = child.getNextSibling();
|
||||
Node nextSibling = child.getNext();
|
||||
if (!insertedEndTry && nextSibling != null &&
|
||||
(nextSibling == catchTarget ||
|
||||
nextSibling == finallyTarget))
|
||||
|
@ -879,7 +879,7 @@ public class Interpreter {
|
|||
}
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
lastChild = child;
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
itsStackDepth = 0;
|
||||
if (finallyTarget != null) {
|
||||
|
@ -959,7 +959,7 @@ public class Interpreter {
|
|||
iCodeTop = generateICode(node, iCodeTop);
|
||||
} else {
|
||||
String name = child.getString();
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
iCodeTop = generateICode(child, iCodeTop);
|
||||
int index = itsVariableTable.getOrdinal(name);
|
||||
iCodeTop = addByte(TokenStream.SETVAR, iCodeTop);
|
||||
|
|
|
@ -150,7 +150,7 @@ public class Node implements Cloneable {
|
|||
return last;
|
||||
}
|
||||
|
||||
public Node getNextSibling() {
|
||||
public Node getNext() {
|
||||
return next;
|
||||
}
|
||||
|
||||
|
@ -541,7 +541,7 @@ public class Node implements Cloneable {
|
|||
s.append(toString());
|
||||
s.append('\n');
|
||||
for (Node cursor = getFirstChild(); cursor != null;
|
||||
cursor = cursor.getNextSibling())
|
||||
cursor = cursor.getNext())
|
||||
{
|
||||
Node n = cursor;
|
||||
if (cursor.getType() == TokenStream.FUNCTION) {
|
||||
|
@ -556,13 +556,10 @@ public class Node implements Cloneable {
|
|||
return "";
|
||||
}
|
||||
|
||||
public Node getFirst() { return first; }
|
||||
public Node getNext() { return next; }
|
||||
|
||||
protected int type; // type of the node; TokenStream.NAME for example
|
||||
protected Node next; // next sibling
|
||||
protected Node first; // first element of a linked list of children
|
||||
protected Node last; // last element of a linked list of children
|
||||
int type; // type of the node; TokenStream.NAME for example
|
||||
Node next; // next sibling
|
||||
private Node first; // first element of a linked list of children
|
||||
private Node last; // last element of a linked list of children
|
||||
private int intDatum = -1; // encapsulated int data; depends on type
|
||||
private UintMap props;
|
||||
}
|
||||
|
|
|
@ -152,11 +152,11 @@ public class NodeTransformer {
|
|||
*/
|
||||
Node breakTarget = new Node(TokenStream.TARGET);
|
||||
Node parent = iterator.getCurrentParent();
|
||||
Node next = node.getNextSibling();
|
||||
Node next = node.getNext();
|
||||
while (next != null &&
|
||||
(next.getType() == TokenStream.LABEL ||
|
||||
next.getType() == TokenStream.TARGET))
|
||||
next = next.getNextSibling();
|
||||
next = next.getNext();
|
||||
if (next == null)
|
||||
break;
|
||||
parent.addChildAfter(breakTarget, next);
|
||||
|
@ -228,7 +228,7 @@ public class NodeTransformer {
|
|||
((FunctionNode) tree).setRequiresActivation(true);
|
||||
}
|
||||
loops.push(node);
|
||||
Node leave = node.getNextSibling();
|
||||
Node leave = node.getNext();
|
||||
if (leave.getType() != TokenStream.LEAVEWITH) {
|
||||
throw new RuntimeException("Unexpected tree");
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ public class NodeTransformer {
|
|||
// Move cursor to next before createAssignment get chance
|
||||
// to change n.next
|
||||
Node n = cursor;
|
||||
cursor = cursor.getNextSibling();
|
||||
cursor = cursor.getNext();
|
||||
if (!n.hasChildren())
|
||||
continue;
|
||||
Node init = n.getFirstChild();
|
||||
|
@ -452,7 +452,7 @@ public class NodeTransformer {
|
|||
|
||||
case TokenStream.GETPROP:
|
||||
if (inFunction) {
|
||||
Node n = node.getFirstChild().getNextSibling();
|
||||
Node n = node.getFirstChild().getNext();
|
||||
String name = n == null ? "" : n.getString();
|
||||
Context cx = Context.getCurrentContext();
|
||||
if ((cx != null && cx.isActivationNeeded(name)) ||
|
||||
|
@ -516,7 +516,7 @@ public class NodeTransformer {
|
|||
if (nodeType != TokenStream.VAR)
|
||||
continue;
|
||||
for (Node cursor = node.getFirstChild(); cursor != null;
|
||||
cursor = cursor.getNextSibling())
|
||||
cursor = cursor.getNext())
|
||||
{
|
||||
String name = cursor.getString();
|
||||
if (fNames == null || !fNames.has(name))
|
||||
|
@ -553,7 +553,7 @@ public class NodeTransformer {
|
|||
{
|
||||
// Add parameters
|
||||
for (Node cursor = args.getFirstChild(); cursor != null;
|
||||
cursor = cursor.getNextSibling())
|
||||
cursor = cursor.getNext())
|
||||
{
|
||||
String arg = cursor.getString();
|
||||
vars.addParameter(arg, createVariableObject(arg, true));
|
||||
|
@ -588,9 +588,9 @@ public class NodeTransformer {
|
|||
Node left = node.getFirstChild();
|
||||
// count the arguments
|
||||
int argCount = 0;
|
||||
Node arg = left.getNextSibling();
|
||||
Node arg = left.getNext();
|
||||
while (arg != null) {
|
||||
arg = arg.getNextSibling();
|
||||
arg = arg.getNext();
|
||||
argCount++;
|
||||
}
|
||||
boolean addGetThis = false;
|
||||
|
|
|
@ -62,25 +62,26 @@ public final class PreorderNodeIterator {
|
|||
public Node nextNode() {
|
||||
if (current == null) {
|
||||
current = start;
|
||||
}
|
||||
else if (current.first != null) {
|
||||
stackPush(current);
|
||||
cachedPrev = null;
|
||||
current = current.first;
|
||||
}
|
||||
else {
|
||||
for (;;) {
|
||||
cachedPrev = current;
|
||||
current = current.next;
|
||||
if (current != null) { break; }
|
||||
if (stackTop == 0) {
|
||||
// Iteration end: clear cachedPrev that currently points
|
||||
// to the last sibling of start
|
||||
cachedPrev = null; break;
|
||||
} else {
|
||||
Node first = current.getFirstChild();
|
||||
if (first != null) {
|
||||
stackPush(current);
|
||||
cachedPrev = null;
|
||||
current = first;
|
||||
} else {
|
||||
for (;;) {
|
||||
cachedPrev = current;
|
||||
current = current.next;
|
||||
if (current != null) { break; }
|
||||
if (stackTop == 0) {
|
||||
// Iteration end: clear cachedPrev that currently
|
||||
// points to the last sibling of start
|
||||
cachedPrev = null; break;
|
||||
}
|
||||
--stackTop;
|
||||
current = stack[stackTop];
|
||||
stack[stackTop] = null;
|
||||
}
|
||||
--stackTop;
|
||||
current = stack[stackTop];
|
||||
stack[stackTop] = null;
|
||||
}
|
||||
}
|
||||
return current;
|
||||
|
|
|
@ -199,7 +199,7 @@ public class Block {
|
|||
case TokenStream.SETVAR :
|
||||
{
|
||||
Node lhs = n.getFirstChild();
|
||||
Node rhs = lhs.getNextSibling();
|
||||
Node rhs = lhs.getNext();
|
||||
lookForVariablesAndCalls(rhs, liveSet, theVariables);
|
||||
Object theVarProp = n.getProp(Node.VARIABLE_PROP);
|
||||
if (theVarProp != null) {
|
||||
|
@ -212,7 +212,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
lookForVariablesAndCalls(child, liveSet, theVariables);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
for (int i = 0; i < liveSet.length; i++) {
|
||||
if (liveSet[i])
|
||||
|
@ -235,7 +235,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
lookForVariablesAndCalls(child, liveSet, theVariables);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ public class Block {
|
|||
case TokenStream.SETVAR :
|
||||
{
|
||||
Node lhs = n.getFirstChild();
|
||||
Node rhs = lhs.getNextSibling();
|
||||
Node rhs = lhs.getNext();
|
||||
lookForVariableAccess(rhs, lastUse);
|
||||
Object theVarProp = n.getProp(Node.VARIABLE_PROP);
|
||||
if (theVarProp != null) {
|
||||
|
@ -316,7 +316,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
lookForVariableAccess(child, lastUse);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -415,7 +415,7 @@ public class Block {
|
|||
// the result, otherwise it could be a string.
|
||||
Node child = n.getFirstChild();
|
||||
int lType = findExpressionType(child);
|
||||
int rType = findExpressionType(child.getNextSibling());
|
||||
int rType = findExpressionType(child.getNext());
|
||||
return lType | rType; // we're not distinguishng strings yet
|
||||
}
|
||||
default : {
|
||||
|
@ -426,7 +426,7 @@ public class Block {
|
|||
int result = TypeEvent.NoType;
|
||||
while (child != null) {
|
||||
result |= findExpressionType(child);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -442,7 +442,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
result |= findDefPoints(child);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -460,8 +460,8 @@ public class Block {
|
|||
|
||||
case TokenStream.SETPROP : {
|
||||
Node baseChild = n.getFirstChild();
|
||||
Node nameChild = baseChild.getNextSibling();
|
||||
Node rhs = nameChild.getNextSibling();
|
||||
Node nameChild = baseChild.getNext();
|
||||
Node rhs = nameChild.getNext();
|
||||
if (baseChild != null) {
|
||||
if (baseChild.getType() == TokenStream.GETVAR) {
|
||||
OptLocalVariable theVar = (OptLocalVariable)
|
||||
|
@ -481,7 +481,7 @@ public class Block {
|
|||
OptLocalVariable theVar = (OptLocalVariable)
|
||||
(n.getProp(Node.VARIABLE_PROP));
|
||||
if (theVar != null) {
|
||||
Node rValue = firstChild.getNextSibling();
|
||||
Node rValue = firstChild.getNext();
|
||||
int theType = findExpressionType(rValue);
|
||||
result |= theVar.assignType(theType);
|
||||
}
|
||||
|
@ -500,7 +500,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
localCSE(n, child, theCSETable, theFunction);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -508,7 +508,7 @@ public class Block {
|
|||
case TokenStream.INC : {
|
||||
Node child = n.getFirstChild();
|
||||
if (child.getType() == TokenStream.GETPROP) {
|
||||
Node nameChild = child.getFirstChild().getNextSibling();
|
||||
Node nameChild = child.getFirstChild().getNext();
|
||||
if (nameChild.getType() == TokenStream.STRING)
|
||||
theCSETable.remove(nameChild.getString());
|
||||
else
|
||||
|
@ -521,8 +521,8 @@ public class Block {
|
|||
break;
|
||||
case TokenStream.SETPROP : {
|
||||
Node baseChild = n.getFirstChild();
|
||||
Node nameChild = baseChild.getNextSibling();
|
||||
Node rhs = nameChild.getNextSibling();
|
||||
Node nameChild = baseChild.getNext();
|
||||
Node rhs = nameChild.getNext();
|
||||
if (baseChild != null) localCSE(n, baseChild, theCSETable, theFunction);
|
||||
if (nameChild != null) localCSE(n, nameChild, theCSETable, theFunction);
|
||||
if (rhs != null) localCSE(n, rhs, theCSETable, theFunction);
|
||||
|
@ -544,7 +544,7 @@ public class Block {
|
|||
if (baseChild.getType() == TokenStream.PRIMARY
|
||||
&& baseChild.getOperation() == TokenStream.THIS)
|
||||
{
|
||||
Node nameChild = baseChild.getNextSibling();
|
||||
Node nameChild = baseChild.getNext();
|
||||
if (nameChild.getType() == TokenStream.STRING) {
|
||||
String theName = nameChild.getString();
|
||||
// System.out.println("considering " + theName);
|
||||
|
@ -558,7 +558,7 @@ public class Block {
|
|||
Node theCSE;
|
||||
if (cse instanceof CSEHolder) {
|
||||
CSEHolder cseHolder = (CSEHolder)cse;
|
||||
Node nextChild = cseHolder.getPropChild.getNextSibling();
|
||||
Node nextChild = cseHolder.getPropChild.getNext();
|
||||
cseHolder.getPropParent.removeChild(cseHolder.getPropChild);
|
||||
theCSE = itsIRFactory.createNewLocal(cseHolder.getPropChild);
|
||||
theFunction.incrementLocalCount();
|
||||
|
@ -570,7 +570,7 @@ public class Block {
|
|||
}
|
||||
else
|
||||
theCSE = (Node)cse;
|
||||
Node nextChild = n.getNextSibling();
|
||||
Node nextChild = n.getNext();
|
||||
parent.removeChild(n);
|
||||
Node cseUse = itsIRFactory.createUseLocal(theCSE);
|
||||
if (nextChild == null)
|
||||
|
@ -585,8 +585,8 @@ public class Block {
|
|||
break;
|
||||
case TokenStream.SETELEM : {
|
||||
Node lhsBase = n.getFirstChild();
|
||||
Node lhsIndex = lhsBase.getNextSibling();
|
||||
Node rhs = lhsIndex.getNextSibling();
|
||||
Node lhsIndex = lhsBase.getNext();
|
||||
Node rhs = lhsIndex.getNext();
|
||||
if (lhsBase != null) localCSE(n, lhsBase, theCSETable, theFunction);
|
||||
if (lhsIndex != null) localCSE(n, lhsIndex, theCSETable, theFunction);
|
||||
if (rhs != null) localCSE(n, rhs, theCSETable, theFunction);
|
||||
|
@ -598,7 +598,7 @@ public class Block {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
localCSE(n, child, theCSETable, theFunction);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
theCSETable.clear();
|
||||
//System.out.println("clear all at CALL");
|
||||
|
|
|
@ -141,7 +141,7 @@ public class Codegen extends Interpreter {
|
|||
String name = onh.getJavaScriptClassName(null, true);
|
||||
ScriptableObject obj = new NativeObject();
|
||||
for (Node cursor = tree.getFirstChild(); cursor != null;
|
||||
cursor = cursor.getNextSibling())
|
||||
cursor = cursor.getNext())
|
||||
{
|
||||
if (cursor.getType() == TokenStream.FUNCTION) {
|
||||
obj.put(cursor.getString(), obj,
|
||||
|
@ -550,7 +550,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -566,7 +566,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -619,12 +619,12 @@ public class Codegen extends Interpreter {
|
|||
break;
|
||||
|
||||
case TokenStream.COMMA: {
|
||||
Node next = child.getNextSibling();
|
||||
Node next = child.getNext();
|
||||
while (next != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
addByteCode(ByteCode.POP);
|
||||
child = next;
|
||||
next = next.getNextSibling();
|
||||
next = next.getNext();
|
||||
}
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
break;
|
||||
|
@ -665,7 +665,7 @@ public class Codegen extends Interpreter {
|
|||
else {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
if (node.getIntProp(Node.ISNUMBER_PROP, -1) != -1)
|
||||
addByteCode(ByteCode.POP2);
|
||||
|
@ -678,7 +678,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
astore(scriptResultLocal);
|
||||
break;
|
||||
|
@ -722,7 +722,7 @@ public class Codegen extends Interpreter {
|
|||
else
|
||||
addByteCode(ByteCode.IFNE, falseTarget);
|
||||
addByteCode(ByteCode.POP);
|
||||
generateCodeFromNode(child.getNextSibling(), node, trueLabel, falseLabel);
|
||||
generateCodeFromNode(child.getNext(), node, trueLabel, falseLabel);
|
||||
markLabel(falseTarget);
|
||||
}
|
||||
else {
|
||||
|
@ -747,7 +747,7 @@ public class Codegen extends Interpreter {
|
|||
}
|
||||
}
|
||||
markLabel(interLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
if (!childIsBoolean(child)) {
|
||||
addScriptRuntimeInvoke("toBoolean",
|
||||
|
@ -761,7 +761,7 @@ public class Codegen extends Interpreter {
|
|||
|
||||
case TokenStream.ADD: {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
generateCodeFromNode(child.getNextSibling(),
|
||||
generateCodeFromNode(child.getNext(),
|
||||
node, trueLabel, falseLabel);
|
||||
switch (node.getIntProp(Node.ISNUMBER_PROP, -1)) {
|
||||
case Node.BOTH:
|
||||
|
@ -871,7 +871,7 @@ public class Codegen extends Interpreter {
|
|||
case TokenStream.GETELEM:
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
if (node.getIntProp(Node.ISNUMBER_PROP, -1) != -1) {
|
||||
|
@ -912,7 +912,7 @@ public class Codegen extends Interpreter {
|
|||
case TokenStream.SETELEM:
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
if (node.getIntProp(Node.ISNUMBER_PROP, -1) != -1) {
|
||||
|
@ -932,7 +932,7 @@ public class Codegen extends Interpreter {
|
|||
case TokenStream.DELPROP:
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, trueLabel, falseLabel);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
addScriptRuntimeInvoke("delete",
|
||||
"(Ljava/lang/Object;Ljava/lang/Object;)",
|
||||
|
@ -1663,7 +1663,7 @@ public class Codegen extends Interpreter {
|
|||
else {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
if (type == TokenStream.JSR)
|
||||
addByteCode(ByteCode.JSR, targetLabel);
|
||||
|
@ -1676,7 +1676,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitEnumInit(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke("initEnum",
|
||||
|
@ -1690,7 +1690,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitEnumNext(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
Node init = (Node) node.getProp(Node.ENUM_PROP);
|
||||
int local = init.getExistingIntProp(Node.LOCAL_PROP);
|
||||
|
@ -1701,7 +1701,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitEnumDone(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
Node init = (Node) node.getProp(Node.ENUM_PROP);
|
||||
int local = init.getExistingIntProp(Node.LOCAL_PROP);
|
||||
|
@ -1711,7 +1711,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitEnterWith(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke("enterWith",
|
||||
|
@ -1737,7 +1737,7 @@ public class Codegen extends Interpreter {
|
|||
Node child = node.getFirstChild();
|
||||
while (child != null) {
|
||||
resetTargets(child);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1781,7 +1781,7 @@ public class Codegen extends Interpreter {
|
|||
if (type == TokenStream.NEW)
|
||||
addByteCode(ByteCode.ACONST_NULL);
|
||||
else {
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
}
|
||||
/*
|
||||
|
@ -1791,7 +1791,7 @@ public class Codegen extends Interpreter {
|
|||
in the aReg and the number is the dReg
|
||||
Else pass the JS object in the aReg and 0.0 in the dReg.
|
||||
*/
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
while (child != null) {
|
||||
boolean handled = false;
|
||||
if ((child.getType() == TokenStream.GETVAR)
|
||||
|
@ -1820,7 +1820,7 @@ public class Codegen extends Interpreter {
|
|||
}
|
||||
}
|
||||
resetTargets(child);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
addByteCode(ByteCode.ALOAD_0);
|
||||
|
@ -1876,14 +1876,14 @@ public class Codegen extends Interpreter {
|
|||
if (callBase.getType() == TokenStream.GETPROP) {
|
||||
Node callBaseChild = callBase.getFirstChild();
|
||||
if (callBaseChild.getType() == TokenStream.NEWTEMP) {
|
||||
Node callBaseID = callBaseChild.getNextSibling();
|
||||
Node callBaseID = callBaseChild.getNext();
|
||||
Node tempChild = callBaseChild.getFirstChild();
|
||||
if (tempChild.getType() == TokenStream.GETBASE) {
|
||||
String functionName = tempChild.getString();
|
||||
if ((callBaseID != null) &&
|
||||
(callBaseID.getType() == TokenStream.STRING)) {
|
||||
if (functionName.equals(callBaseID.getString())) {
|
||||
Node thisChild = callBase.getNextSibling();
|
||||
Node thisChild = callBase.getNext();
|
||||
if (thisChild.getType() == TokenStream.GETTHIS) {
|
||||
Node useChild = thisChild.getFirstChild();
|
||||
if (useChild.getType() == TokenStream.USETEMP) {
|
||||
|
@ -1950,7 +1950,7 @@ public class Codegen extends Interpreter {
|
|||
int argSkipCount = (type == TokenStream.NEW) ? 1 : 2;
|
||||
while (child != null) {
|
||||
childCount++;
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
child = chelsea; // re-start the iterator from the first child,
|
||||
|
@ -1958,7 +1958,7 @@ public class Codegen extends Interpreter {
|
|||
|
||||
int argIndex = -argSkipCount;
|
||||
if (firstArgDone && (child != null)) {
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
argIndex++;
|
||||
aload(contextLocal);
|
||||
addByteCode(ByteCode.SWAP);
|
||||
|
@ -1978,7 +1978,7 @@ public class Codegen extends Interpreter {
|
|||
isSimpleCall = true;
|
||||
push(simpleCallName);
|
||||
aload(variableObjectLocal);
|
||||
child = child.getNextSibling().getNextSibling();
|
||||
child = child.getNext().getNext();
|
||||
argIndex = 0;
|
||||
push(childCount - argSkipCount);
|
||||
addByteCode(ByteCode.ANEWARRAY, "java/lang/Object");
|
||||
|
@ -2034,7 +2034,7 @@ public class Codegen extends Interpreter {
|
|||
// instead ?
|
||||
constructArgArray(childCount - argSkipCount);
|
||||
}
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
String className;
|
||||
|
@ -2145,7 +2145,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
Node catchTarget = (Node)node.getProp(Node.TARGET_PROP);
|
||||
|
@ -2275,7 +2275,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
addByteCode(ByteCode.NEW,
|
||||
|
@ -2293,7 +2293,7 @@ public class Codegen extends Interpreter {
|
|||
if (child != null) {
|
||||
do {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
} while (child != null);
|
||||
} else if (inFunction) {
|
||||
pushUndefined();
|
||||
|
@ -2310,7 +2310,7 @@ public class Codegen extends Interpreter {
|
|||
visitStatement(node);
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
// save selector value
|
||||
|
@ -2499,7 +2499,7 @@ public class Codegen extends Interpreter {
|
|||
if (child.getType() == TokenStream.GETPROP) {
|
||||
Node getPropChild = child.getFirstChild();
|
||||
generateCodeFromNode(getPropChild, node, -1, -1);
|
||||
generateCodeFromNode(getPropChild.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(getPropChild.getNext(), node, -1, -1);
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke(routine,
|
||||
"(Ljava/lang/Object;Ljava/lang/String;" +
|
||||
|
@ -2511,7 +2511,7 @@ public class Codegen extends Interpreter {
|
|||
routine += "Elem";
|
||||
Node getPropChild = child.getFirstChild();
|
||||
generateCodeFromNode(getPropChild, node, -1, -1);
|
||||
generateCodeFromNode(getPropChild.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(getPropChild.getNext(), node, -1, -1);
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke(routine,
|
||||
"(Ljava/lang/Object;Ljava/lang/Object;" +
|
||||
|
@ -2544,7 +2544,7 @@ public class Codegen extends Interpreter {
|
|||
int childNumberFlag = node.getIntProp(Node.ISNUMBER_PROP, -1);
|
||||
if (childNumberFlag != -1) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
addByteCode(opCode);
|
||||
}
|
||||
else {
|
||||
|
@ -2556,8 +2556,8 @@ public class Codegen extends Interpreter {
|
|||
generateCodeFromNode(child, node, -1, -1);
|
||||
if (!isArithmeticNode(child))
|
||||
addScriptRuntimeInvoke("toNumber", "(Ljava/lang/Object;)", "D");
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
if (!isArithmeticNode(child.getNextSibling()))
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
if (!isArithmeticNode(child.getNext()))
|
||||
addScriptRuntimeInvoke("toNumber", "(Ljava/lang/Object;)", "D");
|
||||
addByteCode(opCode);
|
||||
if (!childOfArithmetic) {
|
||||
|
@ -2579,7 +2579,7 @@ public class Codegen extends Interpreter {
|
|||
// toUint32 instead of toInt32.
|
||||
if (type == TokenStream.URSH) {
|
||||
addScriptRuntimeInvoke("toUint32", "(Ljava/lang/Object;)", "J");
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
addScriptRuntimeInvoke("toInt32", "(Ljava/lang/Object;)", "I");
|
||||
// Looks like we need to explicitly mask the shift to 5 bits -
|
||||
// LUSHR takes 6 bits.
|
||||
|
@ -2592,12 +2592,12 @@ public class Codegen extends Interpreter {
|
|||
}
|
||||
if (childNumberFlag == -1) {
|
||||
addScriptRuntimeInvoke("toInt32", "(Ljava/lang/Object;)", "I");
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
addScriptRuntimeInvoke("toInt32", "(Ljava/lang/Object;)", "I");
|
||||
}
|
||||
else {
|
||||
addScriptRuntimeInvoke("toInt32", "(D)", "I");
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
addScriptRuntimeInvoke("toInt32", "(D)", "I");
|
||||
}
|
||||
switch (type) {
|
||||
|
@ -2668,14 +2668,14 @@ public class Codegen extends Interpreter {
|
|||
int childNumberFlag = node.getIntProp(Node.ISNUMBER_PROP, -1);
|
||||
if (childNumberFlag == Node.BOTH) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
genSimpleCompare(op, trueGOTO, falseGOTO);
|
||||
}
|
||||
else {
|
||||
if (op == TokenStream.INSTANCEOF) {
|
||||
aload(variableObjectLocal);
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
addScriptRuntimeInvoke("instanceOf",
|
||||
"(Lorg/mozilla/javascript/Scriptable;"+
|
||||
"Ljava/lang/Object;Ljava/lang/Object;)", "Z");
|
||||
|
@ -2683,7 +2683,7 @@ public class Codegen extends Interpreter {
|
|||
addByteCode(ByteCode.GOTO, falseGOTO);
|
||||
} else if (op == TokenStream.IN) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke("in",
|
||||
"(Ljava/lang/Object;Ljava/lang/Object;"+
|
||||
|
@ -2691,7 +2691,7 @@ public class Codegen extends Interpreter {
|
|||
addByteCode(ByteCode.IFNE, trueGOTO);
|
||||
addByteCode(ByteCode.GOTO, falseGOTO);
|
||||
} else {
|
||||
Node rChild = child.getNextSibling();
|
||||
Node rChild = child.getNext();
|
||||
boolean leftIsDCP = nodeIsDirectCallParameter(child);
|
||||
boolean rightIsDCP = nodeIsDirectCallParameter(rChild);
|
||||
if (leftIsDCP || rightIsDCP) {
|
||||
|
@ -2813,7 +2813,7 @@ public class Codegen extends Interpreter {
|
|||
if (op == TokenStream.INSTANCEOF)
|
||||
aload(variableObjectLocal);
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
int trueGOTO = acquireLabel();
|
||||
int skip = acquireLabel();
|
||||
if (op == TokenStream.INSTANCEOF) {
|
||||
|
@ -2847,7 +2847,7 @@ public class Codegen extends Interpreter {
|
|||
String routine = ((op == TokenStream.LT)
|
||||
|| (op == TokenStream.GT)) ? "cmp_LTB" : "cmp_LEB";
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
if (childNumberFlag == -1) {
|
||||
if (op == TokenStream.GE || op == TokenStream.GT) {
|
||||
addByteCode(ByteCode.SWAP);
|
||||
|
@ -2898,7 +2898,7 @@ public class Codegen extends Interpreter {
|
|||
int falseGOTO)
|
||||
{
|
||||
int op = node.getOperation();
|
||||
Node rightChild = child.getNextSibling();
|
||||
Node rightChild = child.getNext();
|
||||
boolean isStrict = op == TokenStream.SHEQ ||
|
||||
op == TokenStream.SHNE;
|
||||
if (trueGOTO == -1) {
|
||||
|
@ -2936,7 +2936,7 @@ public class Codegen extends Interpreter {
|
|||
}
|
||||
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
|
||||
// JavaScript 1.2 uses shallow equality for == and !=
|
||||
String name;
|
||||
|
@ -3008,7 +3008,7 @@ public class Codegen extends Interpreter {
|
|||
return;
|
||||
}
|
||||
|
||||
Node rChild = child.getNextSibling();
|
||||
Node rChild = child.getNext();
|
||||
|
||||
if (nodeIsDirectCallParameter(child)) {
|
||||
Node convertChild = getConvertToObjectOfNumberNode(rChild);
|
||||
|
@ -3227,7 +3227,7 @@ public class Codegen extends Interpreter {
|
|||
String name = node.getFirstChild().getString();
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
push(name);
|
||||
|
@ -3315,7 +3315,7 @@ public class Codegen extends Interpreter {
|
|||
if (hasVarsInRegs && lVar == null)
|
||||
lVar = OptLocalVariable.get(vars, child.getString());
|
||||
if (lVar != null) {
|
||||
generateCodeFromNode(child.getNextSibling(), node, -1, -1);
|
||||
generateCodeFromNode(child.getNext(), node, -1, -1);
|
||||
if (lVar.getJRegister() == -1) {
|
||||
if (lVar.isNumber())
|
||||
lVar.assignJRegister(getNewWordPairLocal());
|
||||
|
@ -3378,7 +3378,7 @@ public class Codegen extends Interpreter {
|
|||
if (s != null) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
String runtimeMethod = null;
|
||||
|
@ -3394,7 +3394,7 @@ public class Codegen extends Interpreter {
|
|||
"Lorg/mozilla/javascript/Scriptable;");
|
||||
return;
|
||||
}
|
||||
Node nameChild = child.getNextSibling();
|
||||
Node nameChild = child.getNext();
|
||||
/*
|
||||
for 'this.foo' we call thisGet which can skip some
|
||||
casting overhead.
|
||||
|
@ -3438,7 +3438,7 @@ public class Codegen extends Interpreter {
|
|||
if (s != null) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
String runtimeMethod = null;
|
||||
|
@ -3457,7 +3457,7 @@ public class Codegen extends Interpreter {
|
|||
}
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
aload(variableObjectLocal);
|
||||
addScriptRuntimeInvoke("setProp",
|
||||
|
@ -3469,7 +3469,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitBind(Node node, int type, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
// Generate code for "ScriptRuntime.bind(varObj, "s")"
|
||||
aload(variableObjectLocal); // get variable object
|
||||
|
@ -3497,7 +3497,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitNewTemp(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
short local = getLocalFromNode(node);
|
||||
addByteCode(ByteCode.DUP);
|
||||
|
@ -3509,7 +3509,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitUseTemp(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
Node temp = (Node) node.getProp(Node.TEMP_PROP);
|
||||
short local = getLocalFromNode(temp);
|
||||
|
@ -3532,7 +3532,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitNewLocal(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
short local = getLocalFromNode(node);
|
||||
addByteCode(ByteCode.DUP);
|
||||
|
@ -3542,7 +3542,7 @@ public class Codegen extends Interpreter {
|
|||
private void visitUseLocal(Node node, Node child) {
|
||||
while (child != null) {
|
||||
generateCodeFromNode(child, node, -1, -1);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
Node temp = (Node) node.getProp(Node.LOCAL_PROP);
|
||||
short local = getLocalFromNode(temp);
|
||||
|
|
|
@ -80,9 +80,9 @@ class OptTransformer extends NodeTransformer {
|
|||
|
||||
// count the arguments
|
||||
int argCount = 0;
|
||||
Node arg = left.getNextSibling();
|
||||
Node arg = left.getNext();
|
||||
while (arg != null) {
|
||||
arg = arg.getNextSibling();
|
||||
arg = arg.getNext();
|
||||
argCount++;
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ class OptTransformer extends NodeTransformer {
|
|||
markDirectCall(tree, node, argCount, left.getString());
|
||||
} else {
|
||||
if (left.getType() == TokenStream.GETPROP) {
|
||||
Node name = left.getFirstChild().getNextSibling();
|
||||
Node name = left.getFirstChild().getNext();
|
||||
markDirectCall(tree, node, argCount, name.getString());
|
||||
}
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ class OptTransformer extends NodeTransformer {
|
|||
* count for any call it encounters
|
||||
*/
|
||||
void collectContainedFunctions(Node node) {
|
||||
for (Node tNode=node; tNode != null; tNode = tNode.getNextSibling()) {
|
||||
for (Node tNode=node; tNode != null; tNode = tNode.getNext()) {
|
||||
if (tNode.getType() == TokenStream.FUNCTION) {
|
||||
FunctionNode fnNode = (FunctionNode)
|
||||
tNode.getProp(Node.FUNCTION_PROP);
|
||||
|
|
|
@ -415,7 +415,7 @@ public class Optimizer {
|
|||
}
|
||||
case TokenStream.SETVAR : {
|
||||
Node lChild = n.getFirstChild();
|
||||
Node rChild = lChild.getNextSibling();
|
||||
Node rChild = lChild.getNext();
|
||||
int rType = rewriteForNumberVariables(rChild);
|
||||
OptLocalVariable theVar
|
||||
= (OptLocalVariable)(n.getProp(Node.VARIABLE_PROP));
|
||||
|
@ -458,7 +458,7 @@ public class Optimizer {
|
|||
}
|
||||
case TokenStream.RELOP : {
|
||||
Node lChild = n.getFirstChild();
|
||||
Node rChild = lChild.getNextSibling();
|
||||
Node rChild = lChild.getNext();
|
||||
int lType = rewriteForNumberVariables(lChild);
|
||||
int rType = rewriteForNumberVariables(rChild);
|
||||
markDCPNumberContext(lChild);
|
||||
|
@ -528,7 +528,7 @@ public class Optimizer {
|
|||
|
||||
case TokenStream.ADD : {
|
||||
Node lChild = n.getFirstChild();
|
||||
Node rChild = lChild.getNextSibling();
|
||||
Node rChild = lChild.getNext();
|
||||
int lType = rewriteForNumberVariables(lChild);
|
||||
int rType = rewriteForNumberVariables(rChild);
|
||||
|
||||
|
@ -580,7 +580,7 @@ public class Optimizer {
|
|||
case TokenStream.DIV :
|
||||
case TokenStream.MOD : {
|
||||
Node lChild = n.getFirstChild();
|
||||
Node rChild = lChild.getNextSibling();
|
||||
Node rChild = lChild.getNext();
|
||||
int lType = rewriteForNumberVariables(lChild);
|
||||
int rType = rewriteForNumberVariables(rChild);
|
||||
markDCPNumberContext(lChild);
|
||||
|
@ -632,8 +632,8 @@ public class Optimizer {
|
|||
}
|
||||
case TokenStream.SETELEM : {
|
||||
Node arrayBase = n.getFirstChild();
|
||||
Node arrayIndex = arrayBase.getNextSibling();
|
||||
Node rValue = arrayIndex.getNextSibling();
|
||||
Node arrayIndex = arrayBase.getNext();
|
||||
Node rValue = arrayIndex.getNext();
|
||||
int baseType = rewriteForNumberVariables(arrayBase);
|
||||
if (baseType == TypeEvent.NumberType) {// can never happen ???
|
||||
if (!convertParameter(arrayBase)) {
|
||||
|
@ -664,7 +664,7 @@ public class Optimizer {
|
|||
}
|
||||
case TokenStream.GETELEM : {
|
||||
Node arrayBase = n.getFirstChild();
|
||||
Node arrayIndex = arrayBase.getNextSibling();
|
||||
Node arrayIndex = arrayBase.getNext();
|
||||
int baseType = rewriteForNumberVariables(arrayBase);
|
||||
if (baseType == TypeEvent.NumberType) {// can never happen ???
|
||||
if (!convertParameter(arrayBase)) {
|
||||
|
@ -695,15 +695,15 @@ public class Optimizer {
|
|||
*/
|
||||
Node child = n.getFirstChild(); // the function
|
||||
rewriteForNumberVariables(child);
|
||||
child = child.getNextSibling(); // the 'this' object
|
||||
child = child.getNext(); // the 'this' object
|
||||
rewriteForNumberVariables(child);
|
||||
child = child.getNextSibling(); // the first arg
|
||||
child = child.getNext(); // the first arg
|
||||
while (child != null) {
|
||||
int type = rewriteForNumberVariables(child);
|
||||
if (type == TypeEvent.NumberType) {
|
||||
markDCPNumberContext(child);
|
||||
}
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
return TypeEvent.NoType;
|
||||
}
|
||||
|
@ -712,7 +712,7 @@ public class Optimizer {
|
|||
default : {
|
||||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
Node nextChild = child.getNextSibling();
|
||||
Node nextChild = child.getNext();
|
||||
int type = rewriteForNumberVariables(child);
|
||||
if (type == TypeEvent.NumberType) {
|
||||
if (!convertParameter(child)) {
|
||||
|
@ -743,7 +743,7 @@ public class Optimizer {
|
|||
if(lChild == null){ // no children -- exit
|
||||
return;
|
||||
}else{
|
||||
rChild = lChild.getNextSibling();
|
||||
rChild = lChild.getNext();
|
||||
|
||||
if(rChild == null){
|
||||
foldConstants(lChild, n); // one child -- recurse
|
||||
|
@ -756,10 +756,10 @@ public class Optimizer {
|
|||
foldConstants(rChild, n);
|
||||
|
||||
/* take care of all the other children */
|
||||
Node child = rChild.getNextSibling();
|
||||
Node child = rChild.getNext();
|
||||
while (child != null) {
|
||||
foldConstants(child, n);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
|
||||
|
||||
|
@ -768,7 +768,7 @@ public class Optimizer {
|
|||
if(lChild == null){ // no children -- exit
|
||||
return;
|
||||
}else{
|
||||
rChild = lChild.getNextSibling();
|
||||
rChild = lChild.getNext();
|
||||
|
||||
if(rChild == null){
|
||||
return;
|
||||
|
@ -937,11 +937,11 @@ public class Optimizer {
|
|||
|
||||
if (definedBoolean == ALWAYS_FALSE_BOOLEAN) {
|
||||
//if(false) -> replace by the else clause if it exists
|
||||
Node next1 = rChild.getNextSibling();
|
||||
Node next1 = rChild.getNext();
|
||||
if (next1 != null) {
|
||||
Node next2 = next1.getNextSibling();
|
||||
Node next2 = next1.getNext();
|
||||
if (next2 != null) {
|
||||
Node next3 = next2.getNextSibling();
|
||||
Node next3 = next2.getNext();
|
||||
if (next3 != null) {
|
||||
Node elseClause = next3.getFirstChild();
|
||||
if (elseClause != null) {
|
||||
|
@ -1004,7 +1004,7 @@ public class Optimizer {
|
|||
Node child = n.getFirstChild();
|
||||
while (child != null) {
|
||||
replaceVariableAccess(child, theVariables);
|
||||
child = child.getNextSibling();
|
||||
child = child.getNext();
|
||||
}
|
||||
switch (n.getType()) {
|
||||
case TokenStream.SETVAR : {
|
||||
|
|
|
@ -49,21 +49,23 @@ public class StmtNodeIterator {
|
|||
|
||||
private Node findFirstInterestingNode(Node theNode)
|
||||
{
|
||||
if (theNode == null) return null;
|
||||
|
||||
if ((theNode.getType() == TokenStream.BLOCK)
|
||||
|| (theNode.getType() == TokenStream.LOOP)
|
||||
|| (theNode.getType() == TokenStream.FUNCTION)) {
|
||||
if (theNode.getFirst() == null) {
|
||||
return findFirstInterestingNode(theNode.getNext());
|
||||
}
|
||||
else {
|
||||
itsStack.push(theNode);
|
||||
return findFirstInterestingNode(theNode.getFirst());
|
||||
while (theNode != null) {
|
||||
int type = theNode.getType();
|
||||
if (type == TokenStream.BLOCK || type == TokenStream.LOOP
|
||||
|| type == TokenStream.FUNCTION)
|
||||
{
|
||||
Node first = theNode.getFirstChild();
|
||||
if (first == null) {
|
||||
theNode = theNode.getNext();
|
||||
} else {
|
||||
itsStack.push(theNode);
|
||||
theNode = first;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
return theNode;
|
||||
return theNode;
|
||||
}
|
||||
|
||||
public Node nextNode()
|
||||
|
@ -75,14 +77,17 @@ public class StmtNodeIterator {
|
|||
if (itsCurrentNode == null) {
|
||||
while ( ! itsStack.isEmpty()) {
|
||||
Node n = (Node)(itsStack.pop());
|
||||
if (n.getNext() != null) {
|
||||
return itsCurrentNode = findFirstInterestingNode(n.getNext());
|
||||
Node next = n.getNext();
|
||||
if (next != null) {
|
||||
itsCurrentNode = findFirstInterestingNode(next);
|
||||
return itsCurrentNode;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
itsCurrentNode = findFirstInterestingNode(itsCurrentNode);
|
||||
return itsCurrentNode;
|
||||
}
|
||||
else
|
||||
return itsCurrentNode = findFirstInterestingNode(itsCurrentNode);
|
||||
}
|
||||
|
||||
private ObjArray itsStack = new ObjArray();
|
||||
|
|
Загрузка…
Ссылка в новой задаче