gecko/js/src/imacros.c.out

988 lines
25 KiB
Plaintext
Raw Normal View History

/* GENERATED BY imacro_asm.js -- DO NOT EDIT!!! */
static struct {
2009-08-19 09:06:22 -07:00
jsbytecode any_obj[36];
jsbytecode obj_any[38];
} equality_imacros = {
{
/* 0*/ JSOP_DUP,
/* 1*/ JSOP_DUP,
/* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 18,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*12*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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),
2009-08-19 09:06:22 -07:00
/* 6*/ JSOP_IFPRIMTOP, 0, 18,
/* 9*/ JSOP_SWAP,
/*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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,
2009-08-19 09:06:22 -07:00
/*34*/ JSOP_POP,
/*35*/ JSOP_SWAP,
/*36*/ JSOP_IMACOP,
/*37*/ JSOP_STOP,
},
};
static struct {
2009-08-19 09:06:22 -07:00
jsbytecode any_obj[36];
jsbytecode obj_any[38];
2009-08-19 09:06:22 -07:00
jsbytecode obj_obj[72];
} binary_imacros = {
{
/* 0*/ JSOP_DUP,
/* 1*/ JSOP_DUP,
/* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 18,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*12*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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),
2009-08-19 09:06:22 -07:00
/* 6*/ JSOP_IFPRIMTOP, 0, 18,
/* 9*/ JSOP_SWAP,
/*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*13*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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,
2009-08-19 09:06:22 -07:00
/*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 {
2009-08-19 09:06:22 -07:00
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),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 18,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*12*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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),
2009-08-19 09:06:22 -07:00
/* 6*/ JSOP_IFPRIMTOP, 0, 18,
/* 9*/ JSOP_SWAP,
/*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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,
2009-08-19 09:06:22 -07:00
/*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),
2009-08-19 09:06:22 -07:00
/* 6*/ JSOP_IFPRIMTOP, 0, 18,
/* 9*/ JSOP_SWAP,
/*10*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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,
2009-08-19 09:06:22 -07:00
/*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 {
2009-08-19 09:06:22 -07:00
jsbytecode sign[41];
} unary_imacros = {
{
/* 0*/ JSOP_DUP,
/* 1*/ JSOP_DUP,
/* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 23,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*12*/ JSOP_CALL, 0, 1,
2009-08-19 09:06:22 -07:00
/*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 {
2009-08-19 09:06:22 -07:00
jsbytecode String[38];
} call_imacros = {
{
/* 0*/ JSOP_DUP,
/* 1*/ JSOP_DUP,
/* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 15,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_CALL, 0, 0,
2009-08-19 09:06:22 -07:00
/*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 {
2009-08-19 09:06:22 -07:00
jsbytecode String[38];
} new_imacros = {
{
/* 0*/ JSOP_DUP,
/* 1*/ JSOP_DUP,
/* 2*/ JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString),
2009-08-19 09:06:22 -07:00
/* 5*/ JSOP_IFPRIMTOP, 0, 15,
/* 8*/ JSOP_SWAP,
/* 9*/ JSOP_CALL, 0, 0,
2009-08-19 09:06:22 -07:00
/*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,
},
};
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 */
0, /* JSOP_INCELEM */
0, /* JSOP_DECNAME */
0, /* JSOP_DECPROP */
0, /* JSOP_DECELEM */
0, /* JSOP_NAMEINC */
0, /* JSOP_PROPINC */
0, /* JSOP_ELEMINC */
0, /* JSOP_NAMEDEC */
0, /* JSOP_PROPDEC */
0, /* JSOP_ELEMDEC */
0, /* 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 */
0, /* 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 */
0, /* JSOP_GETTHISPROP */
0, /* JSOP_GETARGPROP */
0, /* 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_CALL \
|| x == JSOP_ITER \
|| x == JSOP_NEXTITER \
|| x == JSOP_APPLY \
|| x == JSOP_NEW \
|| x == JSOP_OBJTOSTR \
)
jsbytecode*
js_GetImacroStart(jsbytecode* pc) {
2009-08-19 09:06:22 -07:00
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;
2009-08-19 09:06:22 -07:00
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 - 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;
return NULL;
}