示例#1
0
 def handle_async_forcing(self, force_token):
     from pypy.jit.metainterp.pyjitpl import MetaInterp
     from pypy.jit.metainterp.resume import force_from_resumedata
     # To handle the forcing itself, we create a temporary MetaInterp
     # as a convenience to move the various data to its proper place.
     metainterp_sd = self.metainterp_sd
     metainterp = MetaInterp(metainterp_sd)
     metainterp.history = None    # blackholing
     liveboxes = metainterp_sd.cpu.make_boxes_from_latest_values(self)
     #
     expect_virtualizable = metainterp_sd.virtualizable_info is not None
     forced_data = force_from_resumedata(metainterp, liveboxes, self,
                                         expect_virtualizable)
     virtualizable_boxes, virtualref_boxes, all_virtuals = forced_data
     #
     # Handle virtualref_boxes: mark each JIT_VIRTUAL_REF as forced
     vrefinfo = metainterp_sd.virtualref_info
     for i in range(0, len(virtualref_boxes), 2):
         virtualbox = virtualref_boxes[i]
         vrefbox = virtualref_boxes[i+1]
         vrefinfo.forced_single_vref(vrefbox.getref_base(),
                                     virtualbox.getref_base())
     # Handle virtualizable_boxes: store them on the real virtualizable now
     if expect_virtualizable:
         metainterp_sd.virtualizable_info.forced_vable(virtualizable_boxes)
     # Handle all_virtuals: keep them for later blackholing from the
     # future failure of the GUARD_NOT_FORCED
     self.save_data(force_token, all_virtuals)
示例#2
0
 def handle_async_forcing(self, force_token):
     from pypy.jit.metainterp.resume import force_from_resumedata
     metainterp_sd = self.metainterp_sd
     vinfo = self.jitdriver_sd.virtualizable_info
     ginfo = self.jitdriver_sd.greenfield_info
     all_virtuals = force_from_resumedata(metainterp_sd, self, vinfo, ginfo)
     # The virtualizable data was stored on the real virtualizable above.
     # Handle all_virtuals: keep them for later blackholing from the
     # future failure of the GUARD_NOT_FORCED
     self.save_data(force_token, all_virtuals)
示例#3
0
 def handle_async_forcing(self, force_token):
     from pypy.jit.metainterp.resume import force_from_resumedata
     metainterp_sd = self.metainterp_sd
     vinfo = self.jitdriver_sd.virtualizable_info
     ginfo = self.jitdriver_sd.greenfield_info
     all_virtuals = force_from_resumedata(metainterp_sd, self, vinfo, ginfo)
     # The virtualizable data was stored on the real virtualizable above.
     # Handle all_virtuals: keep them for later blackholing from the
     # future failure of the GUARD_NOT_FORCED
     self.save_data(force_token, all_virtuals)