示例#1
0
    def build_guard_token(self,
                          op,
                          frame_depth,
                          arglocs,
                          offset,
                          fcond,
                          extra_offset=-1,
                          extra_cond=-1):
        descr = op.getdescr()
        assert isinstance(descr, AbstractFailDescr)

        gcmap = allocate_gcmap(self, frame_depth, JITFRAME_FIXED_SIZE)
        faildescrindex = self.get_gcref_from_faildescr(descr)
        token = GuardToken(self.cpu,
                           gcmap,
                           descr,
                           failargs=op.getfailargs(),
                           fail_locs=arglocs,
                           guard_opnum=op.getopnum(),
                           frame_depth=frame_depth,
                           faildescrindex=faildescrindex)
        token.fcond = fcond
        token.extra_offset = extra_offset
        token.extra_cond = extra_cond
        return token