Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
 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