/* GENERATED BY imacro_asm.js -- DO NOT EDIT!!! */ static struct { jsbytecode any_obj[36]; jsbytecode obj_any[38]; } equality_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 5*/ JSOP_IFPRIMTOP, 0, 18, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*12*/ JSOP_CALL, 0, 1, /*15*/ JSOP_IFPRIMTOP, 0, 17, /*18*/ JSOP_POP, /*19*/ JSOP_DUP, /*20*/ JSOP_GOTO, 0, 4, /*23*/ JSOP_POP, /*24*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*27*/ JSOP_CALL, 0, 0, /*30*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_IMACOP, /*35*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_DUP, /* 3*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 6*/ JSOP_IFPRIMTOP, 0, 18, /* 9*/ JSOP_SWAP, /*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*13*/ JSOP_CALL, 0, 1, /*16*/ JSOP_IFPRIMTOP, 0, 17, /*19*/ JSOP_POP, /*20*/ JSOP_DUP, /*21*/ JSOP_GOTO, 0, 4, /*24*/ JSOP_POP, /*25*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*28*/ JSOP_CALL, 0, 0, /*31*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*33*/ JSOP_SWAP, /*34*/ JSOP_POP, /*35*/ JSOP_SWAP, /*36*/ JSOP_IMACOP, /*37*/ JSOP_STOP, }, }; static struct { jsbytecode any_obj[36]; jsbytecode obj_any[38]; jsbytecode obj_obj[72]; } binary_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 5*/ JSOP_IFPRIMTOP, 0, 18, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER), /*12*/ JSOP_CALL, 0, 1, /*15*/ JSOP_IFPRIMTOP, 0, 17, /*18*/ JSOP_POP, /*19*/ JSOP_DUP, /*20*/ JSOP_GOTO, 0, 4, /*23*/ JSOP_POP, /*24*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*27*/ JSOP_CALL, 0, 0, /*30*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_IMACOP, /*35*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_DUP, /* 3*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 6*/ JSOP_IFPRIMTOP, 0, 18, /* 9*/ JSOP_SWAP, /*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER), /*13*/ JSOP_CALL, 0, 1, /*16*/ JSOP_IFPRIMTOP, 0, 17, /*19*/ JSOP_POP, /*20*/ JSOP_DUP, /*21*/ JSOP_GOTO, 0, 4, /*24*/ JSOP_POP, /*25*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*28*/ JSOP_CALL, 0, 0, /*31*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*33*/ JSOP_SWAP, /*34*/ JSOP_POP, /*35*/ JSOP_SWAP, /*36*/ JSOP_IMACOP, /*37*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_DUP, /* 3*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 6*/ JSOP_IFPRIMTOP, 0, 18, /* 9*/ JSOP_SWAP, /*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER), /*13*/ JSOP_CALL, 0, 1, /*16*/ JSOP_IFPRIMTOP, 0, 17, /*19*/ JSOP_POP, /*20*/ JSOP_DUP, /*21*/ JSOP_GOTO, 0, 4, /*24*/ JSOP_POP, /*25*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*28*/ JSOP_CALL, 0, 0, /*31*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*33*/ JSOP_SWAP, /*34*/ JSOP_POP, /*35*/ JSOP_SWAP, /*36*/ JSOP_DUP, /*37*/ JSOP_DUP, /*38*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /*41*/ JSOP_IFPRIMTOP, 0, 18, /*44*/ JSOP_SWAP, /*45*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER), /*48*/ JSOP_CALL, 0, 1, /*51*/ JSOP_IFPRIMTOP, 0, 17, /*54*/ JSOP_POP, /*55*/ JSOP_DUP, /*56*/ JSOP_GOTO, 0, 4, /*59*/ JSOP_POP, /*60*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*63*/ JSOP_CALL, 0, 0, /*66*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*68*/ JSOP_SWAP, /*69*/ JSOP_POP, /*70*/ JSOP_IMACOP, /*71*/ JSOP_STOP, }, }; static struct { jsbytecode any_obj[36]; jsbytecode obj_any[38]; jsbytecode obj_obj[72]; } add_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 5*/ JSOP_IFPRIMTOP, 0, 18, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*12*/ JSOP_CALL, 0, 1, /*15*/ JSOP_IFPRIMTOP, 0, 17, /*18*/ JSOP_POP, /*19*/ JSOP_DUP, /*20*/ JSOP_GOTO, 0, 4, /*23*/ JSOP_POP, /*24*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*27*/ JSOP_CALL, 0, 0, /*30*/ JSOP_PRIMTOP, (JSTYPE_VOID), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_ADD, /*35*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_DUP, /* 3*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 6*/ JSOP_IFPRIMTOP, 0, 18, /* 9*/ JSOP_SWAP, /*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*13*/ JSOP_CALL, 0, 1, /*16*/ JSOP_IFPRIMTOP, 0, 17, /*19*/ JSOP_POP, /*20*/ JSOP_DUP, /*21*/ JSOP_GOTO, 0, 4, /*24*/ JSOP_POP, /*25*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*28*/ JSOP_CALL, 0, 0, /*31*/ JSOP_PRIMTOP, (JSTYPE_VOID), /*33*/ JSOP_SWAP, /*34*/ JSOP_POP, /*35*/ JSOP_SWAP, /*36*/ JSOP_ADD, /*37*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_DUP, /* 3*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 6*/ JSOP_IFPRIMTOP, 0, 18, /* 9*/ JSOP_SWAP, /*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*13*/ JSOP_CALL, 0, 1, /*16*/ JSOP_IFPRIMTOP, 0, 17, /*19*/ JSOP_POP, /*20*/ JSOP_DUP, /*21*/ JSOP_GOTO, 0, 4, /*24*/ JSOP_POP, /*25*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*28*/ JSOP_CALL, 0, 0, /*31*/ JSOP_PRIMTOP, (JSTYPE_VOID), /*33*/ JSOP_SWAP, /*34*/ JSOP_POP, /*35*/ JSOP_SWAP, /*36*/ JSOP_DUP, /*37*/ JSOP_DUP, /*38*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /*41*/ JSOP_IFPRIMTOP, 0, 18, /*44*/ JSOP_SWAP, /*45*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*48*/ JSOP_CALL, 0, 1, /*51*/ JSOP_IFPRIMTOP, 0, 17, /*54*/ JSOP_POP, /*55*/ JSOP_DUP, /*56*/ JSOP_GOTO, 0, 4, /*59*/ JSOP_POP, /*60*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*63*/ JSOP_CALL, 0, 0, /*66*/ JSOP_PRIMTOP, (JSTYPE_VOID), /*68*/ JSOP_SWAP, /*69*/ JSOP_POP, /*70*/ JSOP_ADD, /*71*/ JSOP_STOP, }, }; static struct { jsbytecode sign[41]; } unary_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 5*/ JSOP_IFPRIMTOP, 0, 23, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER), /*12*/ JSOP_CALL, 0, 1, /*15*/ JSOP_IFPRIMTOP, 0, 8, /*18*/ JSOP_POP, /*19*/ JSOP_DUP, /*20*/ JSOP_GOTO, 0, 9, /*23*/ JSOP_SWAP, /*24*/ JSOP_POP, /*25*/ JSOP_GOTO, 0, 14, /*28*/ JSOP_POP, /*29*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*32*/ JSOP_CALL, 0, 0, /*35*/ JSOP_PRIMTOP, (JSTYPE_NUMBER), /*37*/ JSOP_SWAP, /*38*/ JSOP_POP, /*39*/ JSOP_IMACOP, /*40*/ JSOP_STOP, }, }; static struct { jsbytecode incelem[7]; jsbytecode eleminc[15]; } incelem_imacros = { { /* 0*/ JSOP_DUP2, /* 1*/ JSOP_GETELEM, /* 2*/ JSOP_POS, /* 3*/ JSOP_ONE, /* 4*/ JSOP_ADD, /* 5*/ JSOP_SETELEM, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_DUP2, /* 1*/ JSOP_GETELEM, /* 2*/ JSOP_POS, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ONE, /* 5*/ JSOP_ADD, /* 6*/ JSOP_PICK, 3, /* 8*/ JSOP_PICK, 3, /*10*/ JSOP_PICK, 2, /*12*/ JSOP_SETELEM, /*13*/ JSOP_POP, /*14*/ JSOP_STOP, }, }; static struct { jsbytecode decelem[7]; jsbytecode elemdec[15]; } decelem_imacros = { { /* 0*/ JSOP_DUP2, /* 1*/ JSOP_GETELEM, /* 2*/ JSOP_POS, /* 3*/ JSOP_ONE, /* 4*/ JSOP_SUB, /* 5*/ JSOP_SETELEM, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_DUP2, /* 1*/ JSOP_GETELEM, /* 2*/ JSOP_POS, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ONE, /* 5*/ JSOP_SUB, /* 6*/ JSOP_PICK, 3, /* 8*/ JSOP_PICK, 3, /*10*/ JSOP_PICK, 2, /*12*/ JSOP_SETELEM, /*13*/ JSOP_POP, /*14*/ JSOP_STOP, }, }; static struct { jsbytecode String[38]; } call_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString), /* 5*/ JSOP_IFPRIMTOP, 0, 15, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_CALL, 0, 0, /*12*/ JSOP_IFPRIMTOP, 0, 20, /*15*/ JSOP_POP, /*16*/ JSOP_DUP, /*17*/ JSOP_GOTO, 0, 4, /*20*/ JSOP_POP, /*21*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(valueOf), /*24*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_STRING), /*27*/ JSOP_CALL, 0, 1, /*30*/ JSOP_PRIMTOP, (JSTYPE_STRING), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_CALL, 0, 1, /*37*/ JSOP_STOP, }, }; static struct { jsbytecode String[38]; } new_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString), /* 5*/ JSOP_IFPRIMTOP, 0, 15, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_CALL, 0, 0, /*12*/ JSOP_IFPRIMTOP, 0, 20, /*15*/ JSOP_POP, /*16*/ JSOP_DUP, /*17*/ JSOP_GOTO, 0, 4, /*20*/ JSOP_POP, /*21*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(valueOf), /*24*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_STRING), /*27*/ JSOP_CALL, 0, 1, /*30*/ JSOP_PRIMTOP, (JSTYPE_STRING), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_NEW, 0, 1, /*37*/ JSOP_STOP, }, }; static struct { jsbytecode apply0[8]; jsbytecode apply1[12]; jsbytecode apply2[16]; jsbytecode apply3[21]; jsbytecode apply4[26]; jsbytecode apply5[31]; jsbytecode apply6[36]; jsbytecode apply7[41]; jsbytecode apply8[46]; jsbytecode call0[7]; jsbytecode call1[7]; jsbytecode call2[7]; jsbytecode call3[7]; jsbytecode call4[7]; jsbytecode call5[7]; jsbytecode call6[7]; jsbytecode call7[7]; jsbytecode call8[7]; } apply_imacros = { { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_POP, /* 4*/ JSOP_CALL, 0, 0, /* 7*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_POP, /* 8*/ JSOP_CALL, 0, 1, /*11*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_POP, /*12*/ JSOP_CALL, 0, 2, /*15*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_POP, /*17*/ JSOP_CALL, 0, 3, /*20*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_DUP, /*17*/ JSOP_INT8, 3, /*19*/ JSOP_GETELEM, /*20*/ JSOP_SWAP, /*21*/ JSOP_POP, /*22*/ JSOP_CALL, 0, 4, /*25*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_DUP, /*17*/ JSOP_INT8, 3, /*19*/ JSOP_GETELEM, /*20*/ JSOP_SWAP, /*21*/ JSOP_DUP, /*22*/ JSOP_INT8, 4, /*24*/ JSOP_GETELEM, /*25*/ JSOP_SWAP, /*26*/ JSOP_POP, /*27*/ JSOP_CALL, 0, 5, /*30*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_DUP, /*17*/ JSOP_INT8, 3, /*19*/ JSOP_GETELEM, /*20*/ JSOP_SWAP, /*21*/ JSOP_DUP, /*22*/ JSOP_INT8, 4, /*24*/ JSOP_GETELEM, /*25*/ JSOP_SWAP, /*26*/ JSOP_DUP, /*27*/ JSOP_INT8, 5, /*29*/ JSOP_GETELEM, /*30*/ JSOP_SWAP, /*31*/ JSOP_POP, /*32*/ JSOP_CALL, 0, 6, /*35*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_DUP, /*17*/ JSOP_INT8, 3, /*19*/ JSOP_GETELEM, /*20*/ JSOP_SWAP, /*21*/ JSOP_DUP, /*22*/ JSOP_INT8, 4, /*24*/ JSOP_GETELEM, /*25*/ JSOP_SWAP, /*26*/ JSOP_DUP, /*27*/ JSOP_INT8, 5, /*29*/ JSOP_GETELEM, /*30*/ JSOP_SWAP, /*31*/ JSOP_DUP, /*32*/ JSOP_INT8, 6, /*34*/ JSOP_GETELEM, /*35*/ JSOP_SWAP, /*36*/ JSOP_POP, /*37*/ JSOP_CALL, 0, 7, /*40*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_DUP, /* 4*/ JSOP_ZERO, /* 5*/ JSOP_GETELEM, /* 6*/ JSOP_SWAP, /* 7*/ JSOP_DUP, /* 8*/ JSOP_ONE, /* 9*/ JSOP_GETELEM, /*10*/ JSOP_SWAP, /*11*/ JSOP_DUP, /*12*/ JSOP_INT8, 2, /*14*/ JSOP_GETELEM, /*15*/ JSOP_SWAP, /*16*/ JSOP_DUP, /*17*/ JSOP_INT8, 3, /*19*/ JSOP_GETELEM, /*20*/ JSOP_SWAP, /*21*/ JSOP_DUP, /*22*/ JSOP_INT8, 4, /*24*/ JSOP_GETELEM, /*25*/ JSOP_SWAP, /*26*/ JSOP_DUP, /*27*/ JSOP_INT8, 5, /*29*/ JSOP_GETELEM, /*30*/ JSOP_SWAP, /*31*/ JSOP_DUP, /*32*/ JSOP_INT8, 6, /*34*/ JSOP_GETELEM, /*35*/ JSOP_SWAP, /*36*/ JSOP_DUP, /*37*/ JSOP_INT8, 7, /*39*/ JSOP_GETELEM, /*40*/ JSOP_SWAP, /*41*/ JSOP_POP, /*42*/ JSOP_CALL, 0, 8, /*45*/ JSOP_STOP, }, { /* 0*/ JSOP_SWAP, /* 1*/ JSOP_POP, /* 2*/ JSOP_NULL, /* 3*/ JSOP_CALL, 0, 0, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 2, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 0, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 3, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 1, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 4, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 2, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 5, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 3, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 6, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 4, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 7, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 5, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 8, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 6, /* 6*/ JSOP_STOP, }, { /* 0*/ JSOP_PICK, 9, /* 2*/ JSOP_POP, /* 3*/ JSOP_CALL, 0, 7, /* 6*/ JSOP_STOP, }, }; static struct { jsbytecode for_in[13]; jsbytecode for_each[13]; jsbytecode for_in_native[10]; jsbytecode for_each_native[10]; } iter_imacros = { { /* 0*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(iterator), /* 3*/ JSOP_INT8, (JSITER_ENUMERATE), /* 5*/ JSOP_CALL, 0, 1, /* 8*/ JSOP_OBJTOP, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff00) >> 8, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff), /*11*/ JSOP_PUSH, /*12*/ JSOP_STOP, }, { /* 0*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(iterator), /* 3*/ JSOP_INT8, (JSITER_ENUMERATE|JSITER_FOREACH), /* 5*/ JSOP_CALL, 0, 1, /* 8*/ JSOP_OBJTOP, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff00) >> 8, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff), /*11*/ JSOP_PUSH, /*12*/ JSOP_STOP, }, { /* 0*/ JSOP_CALLBUILTIN, ((JSBUILTIN_ObjectToIterator) & 0xff00) >> 8, ((JSBUILTIN_ObjectToIterator) & 0xff), /* 3*/ JSOP_INT8, (JSITER_ENUMERATE), /* 5*/ JSOP_CALL, 0, 1, /* 8*/ JSOP_PUSH, /* 9*/ JSOP_STOP, }, { /* 0*/ JSOP_CALLBUILTIN, ((JSBUILTIN_ObjectToIterator) & 0xff00) >> 8, ((JSBUILTIN_ObjectToIterator) & 0xff), /* 3*/ JSOP_INT8, (JSITER_ENUMERATE|JSITER_FOREACH), /* 5*/ JSOP_CALL, 0, 1, /* 8*/ JSOP_PUSH, /* 9*/ JSOP_STOP, }, }; static struct { jsbytecode custom_iter_next[12]; jsbytecode native_iter_next[12]; } nextiter_imacros = { { /* 0*/ JSOP_POP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(next), /* 5*/ JSOP_CALL, 0, 0, /* 8*/ JSOP_DUP, /* 9*/ JSOP_HOLE, /*10*/ JSOP_STRICTNE, /*11*/ JSOP_STOP, }, { /* 0*/ JSOP_POP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_CALLBUILTIN, ((JSBUILTIN_CallIteratorNext) & 0xff00) >> 8, ((JSBUILTIN_CallIteratorNext) & 0xff), /* 5*/ JSOP_CALL, 0, 0, /* 8*/ JSOP_DUP, /* 9*/ JSOP_HOLE, /*10*/ JSOP_STRICTNE, /*11*/ JSOP_STOP, }, }; static struct { jsbytecode toString[35]; } objtostr_imacros = { { /* 0*/ JSOP_DUP, /* 1*/ JSOP_DUP, /* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf), /* 5*/ JSOP_IFPRIMTOP, 0, 18, /* 8*/ JSOP_SWAP, /* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID), /*12*/ JSOP_CALL, 0, 1, /*15*/ JSOP_IFPRIMTOP, 0, 17, /*18*/ JSOP_POP, /*19*/ JSOP_DUP, /*20*/ JSOP_GOTO, 0, 4, /*23*/ JSOP_POP, /*24*/ JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString), /*27*/ JSOP_CALL, 0, 0, /*30*/ JSOP_PRIMTOP, (JSTYPE_VOID), /*32*/ JSOP_SWAP, /*33*/ JSOP_POP, /*34*/ JSOP_STOP, }, }; static struct { jsbytecode scriptgetter[4]; } getprop_imacros = { { /* 0*/ JSOP_CALL, 0, 0, /* 3*/ JSOP_STOP, }, }; static struct { jsbytecode scriptgetter[5]; } callprop_imacros = { { /* 0*/ JSOP_CALL, 0, 0, /* 3*/ JSOP_SWAP, /* 4*/ JSOP_STOP, }, }; static struct { jsbytecode scriptgetter[4]; } getthisprop_imacros = { { /* 0*/ JSOP_CALL, 0, 0, /* 3*/ JSOP_STOP, }, }; uint8 js_opcode2extra[JSOP_LIMIT] = { 0, /* JSOP_NOP */ 0, /* JSOP_PUSH */ 0, /* JSOP_POPV */ 0, /* JSOP_ENTERWITH */ 0, /* JSOP_LEAVEWITH */ 0, /* JSOP_RETURN */ 0, /* JSOP_GOTO */ 0, /* JSOP_IFEQ */ 0, /* JSOP_IFNE */ 0, /* JSOP_ARGUMENTS */ 0, /* JSOP_FORARG */ 0, /* JSOP_FORLOCAL */ 0, /* JSOP_DUP */ 0, /* JSOP_DUP2 */ 0, /* JSOP_SETCONST */ 3, /* JSOP_BITOR */ 3, /* JSOP_BITXOR */ 3, /* JSOP_BITAND */ 3, /* JSOP_EQ */ 3, /* JSOP_NE */ 3, /* JSOP_LT */ 3, /* JSOP_LE */ 3, /* JSOP_GT */ 3, /* JSOP_GE */ 3, /* JSOP_LSH */ 3, /* JSOP_RSH */ 3, /* JSOP_URSH */ 3, /* JSOP_ADD */ 3, /* JSOP_SUB */ 3, /* JSOP_MUL */ 3, /* JSOP_DIV */ 3, /* JSOP_MOD */ 0, /* JSOP_NOT */ 0, /* JSOP_BITNOT */ 3, /* JSOP_NEG */ 3, /* JSOP_POS */ 0, /* JSOP_DELNAME */ 0, /* JSOP_DELPROP */ 0, /* JSOP_DELELEM */ 0, /* JSOP_TYPEOF */ 0, /* JSOP_VOID */ 0, /* JSOP_INCNAME */ 0, /* JSOP_INCPROP */ 3, /* JSOP_INCELEM */ 0, /* JSOP_DECNAME */ 0, /* JSOP_DECPROP */ 3, /* JSOP_DECELEM */ 0, /* JSOP_NAMEINC */ 0, /* JSOP_PROPINC */ 3, /* JSOP_ELEMINC */ 0, /* JSOP_NAMEDEC */ 0, /* JSOP_PROPDEC */ 3, /* JSOP_ELEMDEC */ 1, /* JSOP_GETPROP */ 0, /* JSOP_SETPROP */ 0, /* JSOP_GETELEM */ 0, /* JSOP_SETELEM */ 0, /* JSOP_CALLNAME */ 3, /* JSOP_CALL */ 0, /* JSOP_NAME */ 0, /* JSOP_DOUBLE */ 0, /* JSOP_STRING */ 0, /* JSOP_ZERO */ 0, /* JSOP_ONE */ 0, /* JSOP_NULL */ 0, /* JSOP_THIS */ 0, /* JSOP_FALSE */ 0, /* JSOP_TRUE */ 0, /* JSOP_OR */ 0, /* JSOP_AND */ 0, /* JSOP_TABLESWITCH */ 0, /* JSOP_LOOKUPSWITCH */ 0, /* JSOP_STRICTEQ */ 0, /* JSOP_STRICTNE */ 0, /* JSOP_SETCALL */ 2, /* JSOP_ITER */ 2, /* JSOP_NEXTITER */ 0, /* JSOP_ENDITER */ 8, /* JSOP_APPLY */ 0, /* JSOP_SWAP */ 0, /* JSOP_OBJECT */ 0, /* JSOP_POP */ 3, /* JSOP_NEW */ 0, /* JSOP_TRAP */ 0, /* JSOP_GETARG */ 0, /* JSOP_SETARG */ 0, /* JSOP_GETLOCAL */ 0, /* JSOP_SETLOCAL */ 0, /* JSOP_UINT16 */ 0, /* JSOP_NEWINIT */ 0, /* JSOP_ENDINIT */ 0, /* JSOP_INITPROP */ 0, /* JSOP_INITELEM */ 0, /* JSOP_DEFSHARP */ 0, /* JSOP_USESHARP */ 0, /* JSOP_INCARG */ 0, /* JSOP_DECARG */ 0, /* JSOP_ARGINC */ 0, /* JSOP_ARGDEC */ 0, /* JSOP_INCLOCAL */ 0, /* JSOP_DECLOCAL */ 0, /* JSOP_LOCALINC */ 0, /* JSOP_LOCALDEC */ 0, /* JSOP_IMACOP */ 0, /* JSOP_FORNAME */ 0, /* JSOP_FORPROP */ 0, /* JSOP_FORELEM */ 0, /* JSOP_POPN */ 0, /* JSOP_BINDNAME */ 0, /* JSOP_SETNAME */ 0, /* JSOP_THROW */ 0, /* JSOP_IN */ 0, /* JSOP_INSTANCEOF */ 0, /* JSOP_DEBUGGER */ 0, /* JSOP_GOSUB */ 0, /* JSOP_RETSUB */ 0, /* JSOP_EXCEPTION */ 0, /* JSOP_LINENO */ 0, /* JSOP_CONDSWITCH */ 0, /* JSOP_CASE */ 0, /* JSOP_DEFAULT */ 0, /* JSOP_EVAL */ 0, /* JSOP_ENUMELEM */ 0, /* JSOP_GETTER */ 0, /* JSOP_SETTER */ 0, /* JSOP_DEFFUN */ 0, /* JSOP_DEFCONST */ 0, /* JSOP_DEFVAR */ 0, /* JSOP_LAMBDA */ 0, /* JSOP_CALLEE */ 0, /* JSOP_SETLOCALPOP */ 0, /* JSOP_PICK */ 0, /* JSOP_TRY */ 0, /* JSOP_FINALLY */ 0, /* JSOP_GETDSLOT */ 0, /* JSOP_CALLDSLOT */ 0, /* JSOP_ARGSUB */ 0, /* JSOP_ARGCNT */ 0, /* JSOP_DEFLOCALFUN */ 0, /* JSOP_GOTOX */ 0, /* JSOP_IFEQX */ 0, /* JSOP_IFNEX */ 0, /* JSOP_ORX */ 0, /* JSOP_ANDX */ 0, /* JSOP_GOSUBX */ 0, /* JSOP_CASEX */ 0, /* JSOP_DEFAULTX */ 0, /* JSOP_TABLESWITCHX */ 0, /* JSOP_LOOKUPSWITCHX */ 0, /* JSOP_BACKPATCH */ 0, /* JSOP_BACKPATCH_POP */ 0, /* JSOP_THROWING */ 0, /* JSOP_SETRVAL */ 0, /* JSOP_RETRVAL */ 0, /* JSOP_GETGVAR */ 0, /* JSOP_SETGVAR */ 0, /* JSOP_INCGVAR */ 0, /* JSOP_DECGVAR */ 0, /* JSOP_GVARINC */ 0, /* JSOP_GVARDEC */ 0, /* JSOP_REGEXP */ 0, /* JSOP_DEFXMLNS */ 0, /* JSOP_ANYNAME */ 0, /* JSOP_QNAMEPART */ 0, /* JSOP_QNAMECONST */ 0, /* JSOP_QNAME */ 0, /* JSOP_TOATTRNAME */ 0, /* JSOP_TOATTRVAL */ 0, /* JSOP_ADDATTRNAME */ 0, /* JSOP_ADDATTRVAL */ 0, /* JSOP_BINDXMLNAME */ 0, /* JSOP_SETXMLNAME */ 0, /* JSOP_XMLNAME */ 0, /* JSOP_DESCENDANTS */ 0, /* JSOP_FILTER */ 0, /* JSOP_ENDFILTER */ 0, /* JSOP_TOXML */ 0, /* JSOP_TOXMLLIST */ 0, /* JSOP_XMLTAGEXPR */ 0, /* JSOP_XMLELTEXPR */ 0, /* JSOP_XMLOBJECT */ 0, /* JSOP_XMLCDATA */ 0, /* JSOP_XMLCOMMENT */ 0, /* JSOP_XMLPI */ 2, /* JSOP_CALLPROP */ 0, /* JSOP_GETUPVAR */ 0, /* JSOP_CALLUPVAR */ 0, /* JSOP_DELDESC */ 0, /* JSOP_UINT24 */ 0, /* JSOP_INDEXBASE */ 0, /* JSOP_RESETBASE */ 0, /* JSOP_RESETBASE0 */ 0, /* JSOP_STARTXML */ 0, /* JSOP_STARTXMLEXPR */ 0, /* JSOP_CALLELEM */ 0, /* JSOP_STOP */ 0, /* JSOP_GETXPROP */ 0, /* JSOP_CALLXMLNAME */ 0, /* JSOP_TYPEOFEXPR */ 0, /* JSOP_ENTERBLOCK */ 0, /* JSOP_LEAVEBLOCK */ 0, /* JSOP_IFPRIMTOP */ 0, /* JSOP_PRIMTOP */ 0, /* JSOP_GENERATOR */ 0, /* JSOP_YIELD */ 0, /* JSOP_ARRAYPUSH */ 0, /* JSOP_GETFUNNS */ 0, /* JSOP_ENUMCONSTELEM */ 0, /* JSOP_LEAVEBLOCKEXPR */ 2, /* JSOP_GETTHISPROP */ 2, /* JSOP_GETARGPROP */ 2, /* JSOP_GETLOCALPROP */ 0, /* JSOP_INDEXBASE1 */ 0, /* JSOP_INDEXBASE2 */ 0, /* JSOP_INDEXBASE3 */ 0, /* JSOP_CALLGVAR */ 0, /* JSOP_CALLLOCAL */ 0, /* JSOP_CALLARG */ 0, /* JSOP_CALLBUILTIN */ 0, /* JSOP_INT8 */ 0, /* JSOP_INT32 */ 0, /* JSOP_LENGTH */ 0, /* JSOP_NEWARRAY */ 0, /* JSOP_HOLE */ 0, /* JSOP_DEFFUN_FC */ 0, /* JSOP_DEFLOCALFUN_FC */ 0, /* JSOP_LAMBDA_FC */ 0, /* JSOP_OBJTOP */ 0, /* JSOP_TRACE */ 0, /* JSOP_GETUPVAR_DBG */ 0, /* JSOP_CALLUPVAR_DBG */ 0, /* JSOP_DEFFUN_DBGFC */ 0, /* JSOP_DEFLOCALFUN_DBGFC */ 0, /* JSOP_LAMBDA_DBGFC */ 0, /* JSOP_CONCATN */ 0, /* JSOP_SETMETHOD */ 0, /* JSOP_INITMETHOD */ 0, /* JSOP_UNBRAND */ 0, /* JSOP_UNBRANDTHIS */ 0, /* JSOP_SHARPINIT */ 3, /* JSOP_OBJTOSTR */ }; #define JSOP_IS_IMACOP(x) (0 \ || x == JSOP_BITOR \ || x == JSOP_BITXOR \ || x == JSOP_BITAND \ || x == JSOP_EQ \ || x == JSOP_NE \ || x == JSOP_LT \ || x == JSOP_LE \ || x == JSOP_GT \ || x == JSOP_GE \ || x == JSOP_LSH \ || x == JSOP_RSH \ || x == JSOP_URSH \ || x == JSOP_ADD \ || x == JSOP_SUB \ || x == JSOP_MUL \ || x == JSOP_DIV \ || x == JSOP_MOD \ || x == JSOP_NEG \ || x == JSOP_POS \ || x == JSOP_INCELEM \ || x == JSOP_DECELEM \ || x == JSOP_ELEMINC \ || x == JSOP_ELEMDEC \ || x == JSOP_GETPROP \ || x == JSOP_CALL \ || x == JSOP_ITER \ || x == JSOP_NEXTITER \ || x == JSOP_APPLY \ || x == JSOP_NEW \ || x == JSOP_CALLPROP \ || x == JSOP_GETTHISPROP \ || x == JSOP_GETARGPROP \ || x == JSOP_GETLOCALPROP \ || x == JSOP_OBJTOSTR \ ) jsbytecode* js_GetImacroStart(jsbytecode* pc) { if (size_t(pc - equality_imacros.any_obj) < 36) return equality_imacros.any_obj; if (size_t(pc - equality_imacros.obj_any) < 38) return equality_imacros.obj_any; if (size_t(pc - binary_imacros.any_obj) < 36) return binary_imacros.any_obj; if (size_t(pc - binary_imacros.obj_any) < 38) return binary_imacros.obj_any; if (size_t(pc - binary_imacros.obj_obj) < 72) return binary_imacros.obj_obj; if (size_t(pc - add_imacros.any_obj) < 36) return add_imacros.any_obj; if (size_t(pc - add_imacros.obj_any) < 38) return add_imacros.obj_any; if (size_t(pc - add_imacros.obj_obj) < 72) return add_imacros.obj_obj; if (size_t(pc - unary_imacros.sign) < 41) return unary_imacros.sign; if (size_t(pc - incelem_imacros.incelem) < 7) return incelem_imacros.incelem; if (size_t(pc - incelem_imacros.eleminc) < 15) return incelem_imacros.eleminc; if (size_t(pc - decelem_imacros.decelem) < 7) return decelem_imacros.decelem; if (size_t(pc - decelem_imacros.elemdec) < 15) return decelem_imacros.elemdec; if (size_t(pc - call_imacros.String) < 38) return call_imacros.String; if (size_t(pc - new_imacros.String) < 38) return new_imacros.String; if (size_t(pc - apply_imacros.apply0) < 8) return apply_imacros.apply0; if (size_t(pc - apply_imacros.apply1) < 12) return apply_imacros.apply1; if (size_t(pc - apply_imacros.apply2) < 16) return apply_imacros.apply2; if (size_t(pc - apply_imacros.apply3) < 21) return apply_imacros.apply3; if (size_t(pc - apply_imacros.apply4) < 26) return apply_imacros.apply4; if (size_t(pc - apply_imacros.apply5) < 31) return apply_imacros.apply5; if (size_t(pc - apply_imacros.apply6) < 36) return apply_imacros.apply6; if (size_t(pc - apply_imacros.apply7) < 41) return apply_imacros.apply7; if (size_t(pc - apply_imacros.apply8) < 46) return apply_imacros.apply8; if (size_t(pc - apply_imacros.call0) < 7) return apply_imacros.call0; if (size_t(pc - apply_imacros.call1) < 7) return apply_imacros.call1; if (size_t(pc - apply_imacros.call2) < 7) return apply_imacros.call2; if (size_t(pc - apply_imacros.call3) < 7) return apply_imacros.call3; if (size_t(pc - apply_imacros.call4) < 7) return apply_imacros.call4; if (size_t(pc - apply_imacros.call5) < 7) return apply_imacros.call5; if (size_t(pc - apply_imacros.call6) < 7) return apply_imacros.call6; if (size_t(pc - apply_imacros.call7) < 7) return apply_imacros.call7; if (size_t(pc - apply_imacros.call8) < 7) return apply_imacros.call8; if (size_t(pc - iter_imacros.for_in) < 13) return iter_imacros.for_in; if (size_t(pc - iter_imacros.for_each) < 13) return iter_imacros.for_each; if (size_t(pc - iter_imacros.for_in_native) < 10) return iter_imacros.for_in_native; if (size_t(pc - iter_imacros.for_each_native) < 10) return iter_imacros.for_each_native; if (size_t(pc - nextiter_imacros.custom_iter_next) < 12) return nextiter_imacros.custom_iter_next; if (size_t(pc - nextiter_imacros.native_iter_next) < 12) return nextiter_imacros.native_iter_next; if (size_t(pc - objtostr_imacros.toString) < 35) return objtostr_imacros.toString; if (size_t(pc - getprop_imacros.scriptgetter) < 4) return getprop_imacros.scriptgetter; if (size_t(pc - callprop_imacros.scriptgetter) < 5) return callprop_imacros.scriptgetter; if (size_t(pc - getthisprop_imacros.scriptgetter) < 4) return getthisprop_imacros.scriptgetter; return NULL; }