79 #define WS_ASM_CLASS1P(op)  (((op) & 0x80) == 0x80)    80 #define WS_ASM_CLASS1_OP(op)    ((op) & 0xe0)    81 #define WS_ASM_CLASS1_ARG(op)   ((op) & 0x1f)    85 #define WS_ASM_CLASS2P(op)  (((op) & 0xe0) == 0x40)    86 #define WS_ASM_CLASS2_OP(op)    ((op) & 0xf0)    87 #define WS_ASM_CLASS2_ARG(op)   ((op) & 0x0f)    91 #define WS_ASM_CLASS3P(op)  (((op) & 0xe0) == 0x60)    92 #define WS_ASM_CLASS3_OP(op)    ((op) & 0x78)    93 #define WS_ASM_CLASS3_ARG(op)   ((op) & 0x07)    97 #define WS_ASM_CLASS4P(op)  (((op) & 0xc0) == 0x00)    98 #define WS_ASM_CLASS4_OP(op)    (op)   102 #define WS_ASM_OP(op)       \   103     (WS_ASM_CLASS1P(op)     \   104      ? WS_ASM_CLASS1_OP(op) \   105      : (WS_ASM_CLASS2P(op)  \   106        ? WS_ASM_CLASS2_OP(op)   \   107        : (WS_ASM_CLASS3P(op)    \   108          ? WS_ASM_CLASS3_OP(op) \   109          : WS_ASM_CLASS4_OP(op))))   114 #define WS_ASM_ARG(op)          \   115     (WS_ASM_CLASS1P(op)         \   116      ? WS_ASM_CLASS1_ARG(op)        \   117      : (WS_ASM_CLASS2P(op)      \   118        ? WS_ASM_CLASS2_ARG(op)      \   119        : (WS_ASM_CLASS3P(op)        \   120          ? WS_ASM_CLASS3_ARG(op)    \   125 #define WS_ASM_GLUE(op, arg)    ((WsByte) (((WsByte) (op)) | ((WsByte) (arg))))   130 #define WS_ASM_JUMP_FW_S        0x80    131 #define WS_ASM_JUMP_FW          0x01    132 #define WS_ASM_JUMP_FW_W        0x02    134 #define WS_ASM_JUMP_BW_S        0xa0    135 #define WS_ASM_JUMP_BW          0x03    136 #define WS_ASM_JUMP_BW_W        0x04    138 #define WS_ASM_TJUMP_FW_S       0xc0    139 #define WS_ASM_TJUMP_FW         0x05    140 #define WS_ASM_TJUMP_FW_W       0x06    142 #define WS_ASM_TJUMP_BW         0x07    143 #define WS_ASM_TJUMP_BW_W       0x08    145 #define WS_ASM_CALL_S           0x60    146 #define WS_ASM_CALL         0x09    148 #define WS_ASM_CALL_LIB_S       0x68    149 #define WS_ASM_CALL_LIB         0x0a    150 #define WS_ASM_CALL_LIB_W       0x0b    152 #define WS_ASM_CALL_URL         0x0c    153 #define WS_ASM_CALL_URL_W       0x0d    155 #define WS_ASM_LOAD_VAR_S       0xe0    156 #define WS_ASM_LOAD_VAR         0x0e    158 #define WS_ASM_STORE_VAR_S      0x40    159 #define WS_ASM_STORE_VAR        0x0f    161 #define WS_ASM_INCR_VAR_S       0x70    162 #define WS_ASM_INCR_VAR         0x10    164 #define WS_ASM_DECR_VAR         0x11    166 #define WS_ASM_LOAD_CONST_S     0x50    167 #define WS_ASM_LOAD_CONST       0x12    168 #define WS_ASM_LOAD_CONST_W     0x13    170 #define WS_ASM_CONST_0          0x14    171 #define WS_ASM_CONST_1          0x15    172 #define WS_ASM_CONST_M1         0x16    173 #define WS_ASM_CONST_ES         0x17    174 #define WS_ASM_CONST_INVALID        0x18    175 #define WS_ASM_CONST_TRUE       0x19    176 #define WS_ASM_CONST_FALSE      0x1a    178 #define WS_ASM_INCR         0x1b    179 #define WS_ASM_DECR         0x1c    180 #define WS_ASM_ADD_ASG          0x1d    181 #define WS_ASM_SUB_ASG          0x1e    182 #define WS_ASM_UMINUS           0x1f    183 #define WS_ASM_ADD          0x20    184 #define WS_ASM_SUB          0x21    185 #define WS_ASM_MUL          0x22    186 #define WS_ASM_DIV          0x23    187 #define WS_ASM_IDIV         0x24    188 #define WS_ASM_REM          0x25    190 #define WS_ASM_B_AND            0x26    191 #define WS_ASM_B_OR             0x27    192 #define WS_ASM_B_XOR            0x28    193 #define WS_ASM_B_NOT            0x29    194 #define WS_ASM_B_LSHIFT         0x2a    195 #define WS_ASM_B_RSSHIFT        0x2b    196 #define WS_ASM_B_RSZSHIFT       0x2c    198 #define WS_ASM_EQ           0x2d    199 #define WS_ASM_LE           0x2e    200 #define WS_ASM_LT           0x2f    201 #define WS_ASM_GE           0x30    202 #define WS_ASM_GT           0x31    203 #define WS_ASM_NE           0x32    205 #define WS_ASM_NOT          0x33    206 #define WS_ASM_SCAND            0x34    207 #define WS_ASM_SCOR             0x35    208 #define WS_ASM_TOBOOL           0x36    210 #define WS_ASM_POP          0x37    212 #define WS_ASM_TYPEOF           0x38    213 #define WS_ASM_ISVALID          0x39    215 #define WS_ASM_RETURN           0x3a    216 #define WS_ASM_RETURN_ES        0x3b    218 #define WS_ASM_DEBUG            0x3c    225 #define WS_ASM_P_LABEL      0x0100   226 #define WS_ASM_P_JUMP       0x0200   227 #define WS_ASM_P_TJUMP      0x0300   228 #define WS_ASM_P_CALL       0x0400   229 #define WS_ASM_P_CALL_LIB   0x0500   230 #define WS_ASM_P_CALL_URL   0x0600   231 #define WS_ASM_P_LOAD_VAR   0x0700   232 #define WS_ASM_P_STORE_VAR  0x0800   233 #define WS_ASM_P_INCR_VAR   0x0900   234 #define WS_ASM_P_LOAD_CONST 0x0a00   238 #define WS_ASM_P_BRANCH(ins) \   239     ((ins)->type == WS_ASM_P_JUMP || (ins)->type == WS_ASM_P_TJUMP)   243 #define ws_label_idx        u.ivalues.i1   244 #define ws_label_refcount   u.ivalues.i2   245 #define ws_findex       u.ivalues.i1   246 #define ws_lindex       u.ivalues.i2   247 #define ws_args         u.ivalues.i3   248 #define ws_vindex       u.ivalues.i1   249 #define ws_cindex       u.ivalues.i1   250 #define ws_label        u.branch.label   251 #define ws_offset       u.branch.offset 
WsAsmIns * ws_asm_call_url(WsCompilerPtr compiler, WsUInt32 line, WsUInt16 findex, WsUInt16 urlindex, WsUInt8 args)
 
struct WsAsmInsRec::@113::@115 ivalues
 
WsAsmIns * ws_asm_ins(WsCompilerPtr compiler, WsUInt32 line, WsUInt8 opcode)
 
union WsAsmInsRec::@113 u
 
WsAsmIns * ws_asm_load_const(WsCompilerPtr compiler, WsUInt32 line, WsUInt16 cindex)
 
struct WsAsmInsRec::@113::@114 branch
 
void ws_asm_link(WsCompilerPtr compiler, WsAsmIns *ins)
 
WsAsmIns * ws_asm_variable(WsCompilerPtr compiler, WsUInt32 line, WsUInt16 ins, WsUInt8 vindex)
 
struct WsAsmInsRec * next
 
void ws_asm_dasm(WsCompilerPtr compiler, const unsigned char *code, size_t len)
 
struct WsAsmInsRec * label
 
void ws_asm_linearize(WsCompilerPtr compiler)
 
struct WsAsmInsRec * prev
 
WsAsmIns * ws_asm_call_lib(WsCompilerPtr compiler, WsUInt32 line, WsUInt8 findex, WsUInt16 lindex)
 
WsAsmIns * ws_asm_branch(WsCompilerPtr compiler, WsUInt32 line, WsUInt16 ins, WsAsmIns *label)
 
WsAsmIns * ws_asm_label(WsCompilerPtr compiler, WsUInt32 line)
 
void ws_asm_print(WsCompilerPtr compiler)
 
WsAsmIns * ws_asm_call(WsCompilerPtr compiler, WsUInt32 line, WsUInt8 findex)