- case NUMBER: b.add(parserLine, LITERAL, number); break;
- case STRING: b.add(parserLine, LITERAL, string); break;
+ case NUMBER: b.add(parserLine, LITERAL, JS.N(number)); break;
+ case STRING: b.add(parserLine, LITERAL, JSString.intern(string)); break;
consume(COLON);
startExpr(b, NO_COMMA); // grab the value
b.add(parserLine, PUT); // put the value into the object
consume(COLON);
startExpr(b, NO_COMMA); // grab the value
b.add(parserLine, PUT); // put the value into the object
// function prelude; arguments array is already on the stack
b2.add(parserLine, TOPSCOPE);
b2.add(parserLine, SWAP);
// function prelude; arguments array is already on the stack
b2.add(parserLine, TOPSCOPE);
b2.add(parserLine, SWAP);
- b2.add(parserLine, DECLARE, "arguments"); // declare arguments (equivalent to 'var arguments;')
+ b2.add(parserLine, DECLARE, JSString.intern("arguments")); // declare arguments (equivalent to 'var arguments;')
b2.add(parserLine, DUP); // dup the args array
b2.add(parserLine, GET, JS.N(numArgs - 1)); // retrieve it from the arguments array
b2.add(parserLine, DUP); // dup the args array
b2.add(parserLine, GET, JS.N(numArgs - 1)); // retrieve it from the arguments array
b.add(parserLine, NEWSCOPE);
b.add(parserLine, TOPSCOPE);
b.add(parserLine, SWAP);
b.add(parserLine, NEWSCOPE);
b.add(parserLine, TOPSCOPE);
b.add(parserLine, SWAP);
b.add(parserLine, GET);
// Stack is now: n, keys, obj, ...
b.add(parserLine, GET);
// Stack is now: n, keys, obj, ...
b.add(parserLine, GET_PRESERVE); // key, index, keys, obj, LoopMarker, ...
b.add(parserLine, TOPSCOPE); // scope, key, index, keys, obj, LoopMarker, ...
b.add(parserLine, SWAP); // key, scope, index, keys, obj, LoopMarker, ...
b.add(parserLine, GET_PRESERVE); // key, index, keys, obj, LoopMarker, ...
b.add(parserLine, TOPSCOPE); // scope, key, index, keys, obj, LoopMarker, ...
b.add(parserLine, SWAP); // key, scope, index, keys, obj, LoopMarker, ...
- b.add(parserLine, LITERAL, varName); // varName, key, scope, index, keys, obj, LoopMaker, ...
+ b.add(parserLine, LITERAL, JSString.intern(varName)); // varName, key, scope, index, keys, obj, LoopMaker, ...
b.add(parserLine, SWAP); // key, varName, scope, index, keys, obj, LoopMarker, ...
b.add(parserLine, PUT); // key, scope, index, keys, obj, LoopMarker, ...
b.add(parserLine, POP); // scope, index, keys, obj, LoopMarker
b.add(parserLine, SWAP); // key, varName, scope, index, keys, obj, LoopMarker, ...
b.add(parserLine, PUT); // key, scope, index, keys, obj, LoopMarker, ...
b.add(parserLine, POP); // scope, index, keys, obj, LoopMarker