def prepare_cond_call(self, op): self.load_condition_into_cc(op.getarg(0)) self.assembler.guard_success_cc = c.negate( self.assembler.guard_success_cc) # ^^^ if arg0==0, we jump over the next block of code (the call) locs = [None] # support between 0 and 4 integer arguments assert 2 <= op.numargs() <= 2 + 4 for i in range(1, op.numargs()): loc = self.loc(op.getarg(i)) assert loc.type != FLOAT locs.append(loc) return locs # [None, function, args...]
def emit_vec_guard_false(self, guard_op, arglocs, regalloc): self.guard_success_cc = c.negate(self.guard_success_cc) self._emit_guard(guard_op, arglocs)