def _jump(self, l_jump, l_no_jump, args_for_jump_gv): debug_assert(self.rgenop.currently_writing is self, "_jump: bad currently_writing") self.b = llimpl.closelinktofreshblock(l_no_jump, None, None) b2 = llimpl.closelinktofreshblock(l_jump, args_for_jump_gv, None) later_builder = LLBuilder(self.rgenop, self.gv_f, llimpl.nullblock) later_builder.later_block = b2 later_builder.jumped_from = self return later_builder
def _jump(self, l_jump, l_no_jump, args_for_jump_gv): ll_assert(self.rgenop.currently_writing is self, "_jump: bad currently_writing") self.b = llimpl.closelinktofreshblock(l_no_jump, None, None) b2 = llimpl.closelinktofreshblock(l_jump, args_for_jump_gv, None) later_builder = LLBuilder(self.rgenop, self.gv_f, llimpl.nullblock) later_builder.later_block = b2 later_builder.jumped_from = self return later_builder
def pause_writing(self, args_gv): lnk = llimpl.closeblock1(self.b) b2 = llimpl.closelinktofreshblock(lnk, args_gv, None) self._close() later_builder = LLBuilder(self.rgenop, self.gv_f, llimpl.nullblock) later_builder.later_block = b2 return later_builder
def _add_default(self): l_default = llimpl.add_default(self.b) self.l_default = l_default b = llimpl.closelinktofreshblock(l_default, self.args_gv, None) builder = LLBuilder(self.rgenop, self.gv_f, b) debug_assert(self.rgenop.currently_writing is None, "_add_default: currently_writing elsewhere") self.rgenop.currently_writing = builder builder.is_default_builder = True return builder
def _add_default(self): l_default = llimpl.add_default(self.b) self.l_default = l_default b = llimpl.closelinktofreshblock(l_default, self.args_gv, None) builder = LLBuilder(self.rgenop, self.gv_f, b) ll_assert(self.rgenop.currently_writing is None, "_add_default: currently_writing elsewhere") self.rgenop.currently_writing = builder builder.is_default_builder = True return builder
def add_case(self, gv_case): self.cases_gv.append(gv_case) # not used so far, but keeps ptrs alive l_case = llimpl.add_case(self.b, gv_case.v) b = llimpl.closelinktofreshblock(l_case, self.args_gv, self.l_default) builder = LLBuilder(self.rgenop, self.gv_f, b) debug_assert(self.rgenop.currently_writing is None or # special case: we stop replaying and add a case after # a call to flexswitch() on a replay builder self.rgenop.currently_writing.is_default_builder, "add_case: currently_writing elsewhere") self.rgenop.currently_writing = builder return builder
def add_case(self, gv_case): self.cases_gv.append(gv_case) # not used so far, but keeps ptrs alive l_case = llimpl.add_case(self.b, gv_case.v) b = llimpl.closelinktofreshblock(l_case, self.args_gv, self.l_default) builder = LLBuilder(self.rgenop, self.gv_f, b) ll_assert( self.rgenop.currently_writing is None or # special case: we stop replaying and add a case after # a call to flexswitch() on a replay builder self.rgenop.currently_writing.is_default_builder, "add_case: currently_writing elsewhere") self.rgenop.currently_writing = builder return builder