Logical::Logical(CompilerState& cs, Stack& stack) : Opcode(cs, stack), ra_(stack.GetR(GETARG_A(cs.instr_))), rkb_(stack.GetRK(GETARG_B(cs.instr_))), rkc_(stack.GetRK(GETARG_C(cs.instr_))), trytm_(cs.CreateSubBlock("trytm")) { assert(GET_OPCODE(cs.instr_) == OP_BAND || GET_OPCODE(cs.instr_) == OP_BOR || GET_OPCODE(cs.instr_) == OP_BXOR || GET_OPCODE(cs.instr_) == OP_SHL || GET_OPCODE(cs.instr_) == OP_SHR); }
Arith::Arith(CompilerState& cs, Stack& stack) : Opcode(cs, stack), ra_(stack.GetR(GETARG_A(cs.instr_))), rkb_(stack.GetRK(GETARG_B(cs.instr_))), rkc_(stack.GetRK(GETARG_C(cs.instr_))), x_(rkb_), y_(rkc_), check_y_(cs.CreateSubBlock("check_y")), intop_(cs.CreateSubBlock("intop", check_y_)), floatop_(cs.CreateSubBlock("floatop", intop_)), tmop_(cs.CreateSubBlock("tmop", floatop_)), x_int_(nullptr), x_float_(nullptr) { }