예제 #1
0
 def _optimize_hook(self, debug_info, w_arg):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_optimize_hook):
         logops = debug_info.logger._make_log_operations()
         list_w = wrap_oplist(space, logops, debug_info.operations)
         cache.in_recursion = True
         try:
             try:
                 jd_name = debug_info.get_jitdriver().name
                 w_res = space.call_function(cache.w_optimize_hook,
                                             space.wrap(jd_name),
                                             space.wrap(debug_info.type),
                                             w_arg, space.newlist(list_w))
                 if space.is_w(w_res, space.w_None):
                     return
                 l = []
                 for w_item in space.listview(w_res):
                     item = space.interp_w(WrappedOp, w_item)
                     l.append(jit_hooks._cast_to_resop(item.op))
                 del debug_info.operations[:]  # modifying operations above is
                 # probably not a great idea since types may not work
                 # and we'll end up with half-working list and
                 # a segfault/fatal RPython error
                 for elem in l:
                     debug_info.operations.append(elem)
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ",
                                    cache.w_compile_hook)
         finally:
             cache.in_recursion = False
예제 #2
0
 def _compile_hook(self, debug_info, w_arg):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_compile_hook):
         logops = debug_info.logger._make_log_operations()
         list_w = wrap_oplist(space, logops, debug_info.operations,
                              debug_info.asminfo.ops_offset)
         cache.in_recursion = True
         try:
             try:
                 jd_name = debug_info.get_jitdriver().name
                 asminfo = debug_info.asminfo
                 space.call_function(cache.w_compile_hook,
                                     space.wrap(jd_name),
                                     space.wrap(debug_info.type), w_arg,
                                     space.newlist(list_w),
                                     space.wrap(asminfo.asmaddr),
                                     space.wrap(asminfo.asmlen))
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ",
                                    cache.w_compile_hook)
         finally:
             cache.in_recursion = False
예제 #3
0
파일: policy.py 프로젝트: Debug-Orz/Sypy
 def _optimize_hook(self, debug_info, w_arg):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_optimize_hook):
         logops = debug_info.logger._make_log_operations()
         list_w = wrap_oplist(space, logops, debug_info.operations)
         cache.in_recursion = True
         try:
             try:
                 jd_name = debug_info.get_jitdriver().name
                 w_res = space.call_function(cache.w_optimize_hook,
                                             space.wrap(jd_name),
                                             space.wrap(debug_info.type),
                                             w_arg,
                                             space.newlist(list_w))
                 if space.is_w(w_res, space.w_None):
                     return
                 l = []
                 for w_item in space.listview(w_res):
                     item = space.interp_w(WrappedOp, w_item)
                     l.append(jit_hooks._cast_to_resop(item.op))
                 del debug_info.operations[:] # modifying operations above is
                 # probably not a great idea since types may not work
                 # and we'll end up with half-working list and
                 # a segfault/fatal RPython error
                 for elem in l:
                     debug_info.operations.append(elem)
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
         finally:
             cache.in_recursion = False
예제 #4
0
파일: policy.py 프로젝트: Debug-Orz/Sypy
 def _compile_hook(self, debug_info, w_arg):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_compile_hook):
         logops = debug_info.logger._make_log_operations()
         list_w = wrap_oplist(space, logops, debug_info.operations,
                              debug_info.asminfo.ops_offset)
         cache.in_recursion = True
         try:
             try:
                 jd_name = debug_info.get_jitdriver().name
                 asminfo = debug_info.asminfo
                 space.call_function(cache.w_compile_hook,
                                     space.wrap(jd_name),
                                     space.wrap(debug_info.type),
                                     w_arg,
                                     space.newlist(list_w),
                                     space.wrap(asminfo.asmaddr),
                                     space.wrap(asminfo.asmlen))
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
         finally:
             cache.in_recursion = False
예제 #5
0
파일: policy.py 프로젝트: yuyichao/pypy
 def on_abort(self, reason, jitdriver, greenkey, greenkey_repr, logops, operations):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_abort_hook):
         cache.in_recursion = True
         oplist_w = wrap_oplist(space, logops, operations)
         try:
             try:
                 space.call_function(cache.w_abort_hook,
                     space.wrap(jitdriver.name),
                     wrap_greenkey(space, jitdriver, greenkey, greenkey_repr),
                     space.wrap(Counters.counter_names[reason]),
                     space.newlist(oplist_w)
                 )
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ", cache.w_abort_hook)
         finally:
             cache.in_recursion = False
예제 #6
0
파일: hooks.py 프로젝트: zielmicha/pypy
 def on_abort(self, reason, jitdriver, greenkey, greenkey_repr, logops,
              operations):
     space = self.space
     cache = space.fromcache(Cache)
     if cache.in_recursion:
         return
     if space.is_true(cache.w_abort_hook):
         cache.in_recursion = True
         oplist_w = wrap_oplist(space, logops, operations)
         try:
             try:
                 space.call_function(
                     cache.w_abort_hook, space.wrap(jitdriver.name),
                     wrap_greenkey(space, jitdriver, greenkey,
                                   greenkey_repr),
                     space.wrap(Counters.counter_names[reason]),
                     space.newlist(oplist_w))
             except OperationError, e:
                 e.write_unraisable(space, "jit hook ", cache.w_abort_hook)
         finally:
             cache.in_recursion = False