private void addVarOp(int op, int varIndex) { switch (op) { case Token.SETCONSTVAR: if (varIndex < 128) { addIcode(Icode_SETCONSTVAR1); addUint8(varIndex); return; } addIndexOp(Icode_SETCONSTVAR, varIndex); return; case Token.GETVAR: case Token.SETVAR: if (varIndex < 128) { addIcode(op == Token.GETVAR ? Icode_GETVAR1 : Icode_SETVAR1); addUint8(varIndex); return; } // fallthrough case Icode_VAR_INC_DEC: addIndexOp(op, varIndex); return; } throw Kit.codeBug(); }
throw badTree(node); addIndexOp(Icode_LITERAL_NEW, count); stackChange(2); while (child != null) { int index = literalIds.size(); literalIds.add(skipIndexes); addIndexOp(Icode_SPARE_ARRAYLIT, index); addIndexOp(Token.OBJECTLIT, index);
addIndexOp(Icode_CLOSURE_STMT, fnIndex); } else { if (fnType != FunctionNode.FUNCTION_STATEMENT) { addIndexOp(Icode_CLOSURE_EXPR, fnIndex); stackChange(1); addIcode(Icode_POP_RESULT); addIndexOp(Icode_LOCAL_CLEAR, local); releaseLocal(local); addIndexOp(Icode_STARTSUB, finallyRegister); stackChange(-1); while (child != null) { addIndexOp(Icode_RETSUB, finallyRegister); addIndexOp(Icode_SCOPE_SAVE, scopeLocal); addIndexOp(Icode_LOCAL_CLEAR, scopeLocal); releaseLocal(scopeLocal); addIndexOp(Token.RETHROW, getLocalBlockRef(node)); break; case Token.ENUM_INIT_ARRAY: visitExpression(child, 0); addIndexOp(type, getLocalBlockRef(node)); stackChange(-1);
throw Kit.codeBug(); addIndexOp(Icode_CLOSURE_EXPR, fnIndex); stackChange(1); addIndexOp(Token.LOCAL_LOAD, localIndex); stackChange(1); addIndexOp(Icode_CALLSPECIAL, argCount); addUint8(callType); addUint8(type == Token.NEW ? 1 : 0); addIndexOp(type, argCount); addIndexOp(Token.NUMBER, index); addIndexOp(type, getLocalBlockRef(node)); stackChange(1); break; addIndexOp(Token.REGEXP, index); stackChange(1); child = child.getNext(); } while (child != null); addIndexOp(type, memberTypeFlags); stackChange(1 - childCount);