Author: Armin Rigo <[email protected]>
Branch: reverse-debugger-updated
Changeset: r94558:ed5132246276
Date: 2018-05-14 11:06 +0200
http://bitbucket.org/pypy/pypy/changeset/ed5132246276/

Log:    Try to reduce the diff from default

diff --git a/pypy/interpreter/astcompiler/codegen.py 
b/pypy/interpreter/astcompiler/codegen.py
--- a/pypy/interpreter/astcompiler/codegen.py
+++ b/pypy/interpreter/astcompiler/codegen.py
@@ -1204,12 +1204,13 @@
         self._compile_slice(sub.slice, sub.ctx)
 
     def visit_RevDBMetaVar(self, node):
-        if self.space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import dbstate
+        if self.space.reverse_debugging:
+            dbstate = self.space.reverse_debugging.dbstate
             if not dbstate.standard_code:
                 self.emit_op_arg(ops.LOAD_REVDB_VAR, node.metavar)
                 return
-        self.error("$NUM is only valid in the reverse-debugger", node)
+        self.error("Unknown character ('$NUM' is only valid in the "
+                   "reverse-debugger)", node)
 
 
 class TopLevelCodeGenerator(PythonCodeGenerator):
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -442,6 +442,16 @@
             config = get_pypy_config(translating=False)
         self.config = config
 
+        if self.config.translation.reverse_debugger:
+            # pre-import and attach to the space.  This avoids a regular
+            # translation seeing and executing the imports even if it
+            # turns out that self.config.translation.reverse_debugger is
+            # False.
+            from pypy.interpreter import reverse_debugging
+            self.reverse_debugging = reverse_debugging
+        else:
+            self.reverse_debugging = None
+
         self.builtin_modules = {}
         self.reloading_modules = {}
 
@@ -458,9 +468,8 @@
 
     def startup(self):
         # To be called before using the space
-        if self.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import setup_revdb
-            setup_revdb(self)
+        if self.reverse_debugging:
+            self.reverse_debugging.setup_revdb(self)
 
         self.threadlocals.enter_thread(self)
 
@@ -902,9 +911,8 @@
         #     if not space._side_effects_ok():
         #         don't cache.
         #
-        if self.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import dbstate
-            return dbstate.standard_code
+        if self.reverse_debugging:
+            return self.reverse_debugging.dbstate.standard_code
         return True
 
     def is_interned_str(self, s):
diff --git a/pypy/interpreter/executioncontext.py 
b/pypy/interpreter/executioncontext.py
--- a/pypy/interpreter/executioncontext.py
+++ b/pypy/interpreter/executioncontext.py
@@ -64,9 +64,8 @@
         return frame
 
     def enter(self, frame):
-        if self.space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import enter_call
-            enter_call(self.topframeref(), frame)
+        if self.space.reverse_debugging:
+            self.space.reverse_debugging.enter_call(self.topframeref(), frame)
         frame.f_backref = self.topframeref
         self.topframeref = jit.virtual_ref(frame)
 
@@ -87,9 +86,9 @@
                 # be accessed also later
                 frame_vref()
             jit.virtual_ref_finish(frame_vref, frame)
-            if self.space.config.translation.reverse_debugger:
-                from pypy.interpreter.reverse_debugging import leave_call
-                leave_call(self.topframeref(), got_exception)
+            if self.space.reverse_debugging:
+                self.space.reverse_debugging.leave_call(self.topframeref(),
+                                                        got_exception)
 
     # ________________________________________________________________
 
@@ -159,9 +158,8 @@
         Like bytecode_trace() but doesn't invoke any other events besides the
         trace function.
         """
-        if self.space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import potential_stop_point
-            potential_stop_point(frame)
+        if self.space.reverse_debugging:
+            self.space.reverse_debugging.potential_stop_point(frame)
         if (frame.get_w_f_trace() is None or self.is_tracing or
             self.gettrace() is None):
             return
@@ -519,7 +517,6 @@
     """The normal class for space.actionflag.  The signal module provides
     a different one."""
     _ticker = 0
-    _ticker_count = -1     # xxx only for reverse_debugger.py
 
     def get_ticker(self):
         return self._ticker
diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -1053,9 +1053,8 @@
         # this function is overridden by pypy.module.pypyjit.interp_jit
         check_nonneg(jumpto)
         #
-        if self.space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import jump_backward
-            jump_backward(self, jumpto)
+        if self.space.reverse_debugging:
+            self.space.reverse_debugging.jump_backward(self, jumpto)
         #
         return jumpto
 
@@ -1311,9 +1310,8 @@
         self.space.setitem(w_dict, w_key, w_value)
 
     def LOAD_REVDB_VAR(self, oparg, next_instr):
-        if self.space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import load_metavar
-            w_var = load_metavar(oparg)
+        if self.space.reverse_debugging:
+            w_var = self.space.reverse_debugging.load_metavar(oparg)
             self.pushvalue(w_var)
         else:
             self.MISSING_OPCODE(oparg, next_instr)
diff --git a/pypy/interpreter/reverse_debugging.py 
b/pypy/interpreter/reverse_debugging.py
--- a/pypy/interpreter/reverse_debugging.py
+++ b/pypy/interpreter/reverse_debugging.py
@@ -7,7 +7,7 @@
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter import gateway, typedef, pycode, pytraceback, pyframe
 from pypy.module.marshal import interp_marshal
-from pypy.interpreter.executioncontext import AbstractActionFlag
+from pypy.interpreter.executioncontext import AbstractActionFlag, ActionFlag
 
 
 class DBState:
@@ -222,10 +222,10 @@
     def __enter__(self):
         dbstate.standard_code = False
         self.t = dbstate.space.actionflag._ticker
-        self.c = dbstate.space.actionflag._ticker_count
+        self.c = dbstate.space.actionflag._ticker_revdb_count
     def __exit__(self, *args):
         dbstate.space.actionflag._ticker = self.t
-        dbstate.space.actionflag._ticker_count = self.c
+        dbstate.space.actionflag._ticker_revdb_count = self.c
         dbstate.standard_code = True
 non_standard_code = NonStandardCode()
 
@@ -802,6 +802,8 @@
 # ____________________________________________________________
 
 
+ActionFlag._ticker_revdb_count = -1
+
 class RDBSignalActionFlag(AbstractActionFlag):
     # Used instead of pypy.module.signal.interp_signal.SignalActionFlag
     # when we have reverse-debugging.  That other class would work too,
@@ -818,7 +820,7 @@
 
     _SIG_TICKER_COUNT = 100
     _ticker = 0
-    _ticker_count = _SIG_TICKER_COUNT * 10
+    _ticker_revdb_count = _SIG_TICKER_COUNT * 10
 
     def get_ticker(self):
         return self._ticker
@@ -831,10 +833,10 @@
 
     def decrement_ticker(self, by):
         if we_are_translated():
-            c = self._ticker_count - 1
+            c = self._ticker_revdb_count - 1
             if c < 0:
                 c = self._update_ticker_from_signals()
-            self._ticker_count = c
+            self._ticker_revdb_count = c
         #if self.has_bytecode_counter:    # this 'if' is constant-folded
         #    print ("RDBSignalActionFlag: has_bytecode_counter: "
         #           "not supported for now")
diff --git a/pypy/interpreter/test/test_pyframe.py 
b/pypy/interpreter/test/test_pyframe.py
--- a/pypy/interpreter/test/test_pyframe.py
+++ b/pypy/interpreter/test/test_pyframe.py
@@ -48,10 +48,10 @@
             return f.f_code
         assert g() is g.func_code
 
-    def test_f_trace_del(self): 
+    def test_f_trace_del(self):
         import sys
-        f = sys._getframe() 
-        del f.f_trace 
+        f = sys._getframe()
+        del f.f_trace
         assert f.f_trace is None
 
     def test_f_lineno(self):
@@ -120,7 +120,7 @@
         def f():
             assert sys._getframe().f_code.co_name == g()
         def g():
-            return sys._getframe().f_back.f_code.co_name 
+            return sys._getframe().f_back.f_code.co_name
         f()
 
     def test_f_back_virtualref(self):
@@ -237,7 +237,7 @@
     def test_trace_exc(self):
         import sys
         l = []
-        def ltrace(a,b,c): 
+        def ltrace(a,b,c):
             if b == 'exception':
                 l.append(c)
             return ltrace
@@ -302,7 +302,7 @@
     def test_trace_return_exc(self):
         import sys
         l = []
-        def trace(a,b,c): 
+        def trace(a,b,c):
             if b in ('exception', 'return'):
                 l.append((b, c))
             return trace
@@ -448,7 +448,7 @@
     def test_dont_trace_on_reraise(self):
         import sys
         l = []
-        def ltrace(a,b,c): 
+        def ltrace(a,b,c):
             if b == 'exception':
                 l.append(c)
             return ltrace
@@ -470,7 +470,7 @@
     def test_dont_trace_on_raise_with_tb(self):
         import sys
         l = []
-        def ltrace(a,b,c): 
+        def ltrace(a,b,c):
             if b == 'exception':
                 l.append(c)
             return ltrace
diff --git a/pypy/interpreter/test/test_zzpickle_and_slow.py 
b/pypy/interpreter/test/test_zzpickle_and_slow.py
--- a/pypy/interpreter/test/test_zzpickle_and_slow.py
+++ b/pypy/interpreter/test/test_zzpickle_and_slow.py
@@ -3,7 +3,7 @@
 from pypy.interpreter import gateway
 from rpython.rlib.jit import non_virtual_ref, vref_None
 
-class AppTestSlow:    
+class AppTestSlow:
     spaceconfig = dict(usemodules=['itertools'])
 
     def setup_class(cls):
@@ -64,7 +64,7 @@
     space.setitem(space.builtin.w_dict,
                   space.wrap('read_exc_type'),
                   space.wrap(read_exc_type_gw))
-    
+
 def _detach_helpers(space):
     space.delitem(space.builtin.w_dict,
                   space.wrap('hide_top_frame'))
@@ -92,7 +92,7 @@
         pckl = pickle.dumps(code)
         result = pickle.loads(pckl)
         assert code == result
-    
+
     def test_pickle_global_func(self):
         import new
         mod = new.module('mod')
@@ -109,7 +109,7 @@
             assert func is result
         finally:
             del sys.modules['mod']
-    
+
     def test_pickle_not_imported_module(self):
         import new
         mod = new.module('mod')
@@ -119,13 +119,13 @@
         result = pickle.loads(pckl)
         assert mod.__name__ == result.__name__
         assert mod.__dict__ == result.__dict__
-    
+
     def test_pickle_builtin_func(self):
         import pickle
         pckl = pickle.dumps(map)
         result = pickle.loads(pckl)
         assert map is result
-    
+
     def test_pickle_non_top_reachable_func(self):
         def func():
             return 42
@@ -142,7 +142,7 @@
         assert func.func_dict     == result.func_dict
         assert func.func_doc      == result.func_doc
         assert func.func_globals  == result.func_globals
-    
+
     def test_pickle_cell(self):
         def g():
             x = [42]
@@ -171,7 +171,7 @@
         f1     = f()
         saved = hide_top_frame(f1)
         pckl   = pickle.dumps(f1)
-        restore_top_frame(f1, saved) 
+        restore_top_frame(f1, saved)
         f2     = pickle.loads(pckl)
 
         assert type(f1) is type(f2)
@@ -223,7 +223,7 @@
         f1     = f()
         saved = hide_top_frame(f1)
         pckl   = pickle.dumps(f1)
-        restore_top_frame(f1, saved) 
+        restore_top_frame(f1, saved)
         f2     = pickle.loads(pckl)
 
     def test_frame_setstate_crash(self):
@@ -257,21 +257,21 @@
         pckl   = pickle.dumps(mod)
         result = pickle.loads(pckl)
         assert mod is result
-    
+
     def test_pickle_moduledict(self):
         import pickle
         moddict  = pickle.__dict__
         pckl     = pickle.dumps(moddict)
         result   = pickle.loads(pckl)
         assert moddict is result
-    
+
     def test_pickle_bltins_module(self):
         import pickle
         mod  = __builtins__
         pckl     = pickle.dumps(mod)
         result   = pickle.loads(pckl)
         assert mod is result
-    
+
     def test_pickle_buffer(self):
         skip("Can't pickle buffer objects on top of CPython either.  "
              "Do we really need it?")
@@ -280,14 +280,14 @@
         pckl     = pickle.dumps(a)
         result   = pickle.loads(pckl)
         assert a == result
-    
+
     def test_pickle_complex(self):
         import pickle
         a = complex(1.23,4.567)
         pckl     = pickle.dumps(a)
         result   = pickle.loads(pckl)
         assert a == result
-    
+
     def test_pickle_method(self):
         class myclass(object):
             def f(self):
@@ -308,7 +308,7 @@
             assert method() == result()
         finally:
             del sys.modules['mod']
-    
+
     def test_pickle_staticmethod(self):
         class myclass(object):
             def f():
@@ -319,7 +319,7 @@
         pckl     = pickle.dumps(method)
         result   = pickle.loads(pckl)
         assert method() == result()
-    
+
     def test_pickle_classmethod(self):
         class myclass(object):
             def f(cls):
@@ -337,7 +337,7 @@
             assert method() == result()
         finally:
             del sys.modules['mod']
-    
+
     def test_pickle_sequenceiter(self):
         '''
         In PyPy there is no distinction here between listiterator and
diff --git a/pypy/module/__pypy__/interp_magic.py 
b/pypy/module/__pypy__/interp_magic.py
--- a/pypy/module/__pypy__/interp_magic.py
+++ b/pypy/module/__pypy__/interp_magic.py
@@ -209,5 +209,4 @@
     return space.newbool(space._side_effects_ok())
 
 def revdb_stop(space):
-    from pypy.interpreter.reverse_debugging import stop_point
-    stop_point()
+    space.reverse_debugging.stop_point()
diff --git a/pypy/module/imp/test/test_import.py 
b/pypy/module/imp/test/test_import.py
--- a/pypy/module/imp/test/test_import.py
+++ b/pypy/module/imp/test/test_import.py
@@ -162,7 +162,7 @@
 def _setup(space):
     dn = setup_directory_structure(space)
     return space.appexec([space.wrap(dn)], """
-        (dn): 
+        (dn):
             import sys
             path = list(sys.path)
             sys.path.insert(0, dn)
@@ -1060,7 +1060,7 @@
 
         cpathname = udir.join('test.pyc')
         assert not cpathname.check()
-        
+
     def test_load_source_module_importerror(self):
         # the .pyc file is created before executing the module
         space = self.space
@@ -1169,11 +1169,11 @@
                     stream.close()
 
 
-def test_PYTHONPATH_takes_precedence(space): 
+def test_PYTHONPATH_takes_precedence(space):
     if sys.platform == "win32":
         py.test.skip("unresolved issues with win32 shell quoting rules")
-    from pypy.interpreter.test.test_zpy import pypypath 
-    extrapath = udir.ensure("pythonpath", dir=1) 
+    from pypy.interpreter.test.test_zpy import pypypath
+    extrapath = udir.ensure("pythonpath", dir=1)
     extrapath.join("sched.py").write("print 42\n")
     old = os.environ.get('PYTHONPATH', None)
     oldlang = os.environ.pop('LANG', None)
diff --git a/pypy/module/micronumpy/test/test_complex.py 
b/pypy/module/micronumpy/test/test_complex.py
--- a/pypy/module/micronumpy/test/test_complex.py
+++ b/pypy/module/micronumpy/test/test_complex.py
@@ -494,8 +494,8 @@
         c = array([1.e+110, 1.e-110], dtype=complex128)
         d = floor_divide(c**2, c)
         assert (d == [1.e+110, 0]).all()
-        
-        
+
+
 
     def test_basic(self):
         import sys
diff --git a/pypy/module/micronumpy/test/test_dtypes.py 
b/pypy/module/micronumpy/test/test_dtypes.py
--- a/pypy/module/micronumpy/test/test_dtypes.py
+++ b/pypy/module/micronumpy/test/test_dtypes.py
@@ -372,8 +372,8 @@
         a = np.array(data, dtype=b)
         x = pickle.loads(pickle.dumps(a))
         assert (x == a).all()
-        assert x.dtype == a.dtype 
-        
+        assert x.dtype == a.dtype
+
     def test_index(self):
         import numpy as np
         for dtype in [np.int8, np.int16, np.int32, np.int64]:
@@ -1459,7 +1459,7 @@
                      "'offsets':[0,76800], "
                      "'itemsize':80000, "
                      "'aligned':True}")
-        
+
         assert dt == np.dtype(eval(str(dt)))
 
         dt = np.dtype({'names': ['r', 'g', 'b'], 'formats': ['u1', 'u1', 'u1'],
diff --git a/pypy/module/micronumpy/test/test_ndarray.py 
b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -1885,7 +1885,7 @@
         assert map(isnan, e) == [False, False, False, True, False]
         assert map(isinf, e) == [False, False, True, False, False]
         assert e.argmax() == 3
-        # numpy preserves value for uint16 -> cast_as_float16 -> 
+        # numpy preserves value for uint16 -> cast_as_float16 ->
         #     convert_to_float64 -> convert_to_float16 -> uint16
         #  even for float16 various float16 nans
         all_f16 = arange(0xfe00, 0xffff, dtype='uint16')
@@ -2615,7 +2615,7 @@
         a = np.arange(6).reshape(2,3)
         i = np.dtype('int32').type(0)
         assert (a[0] == a[i]).all()
-        
+
 
     def test_ellipsis_indexing(self):
         import numpy as np
diff --git a/pypy/module/micronumpy/test/test_object_arrays.py 
b/pypy/module/micronumpy/test/test_object_arrays.py
--- a/pypy/module/micronumpy/test/test_object_arrays.py
+++ b/pypy/module/micronumpy/test/test_object_arrays.py
@@ -200,7 +200,7 @@
         from numpy import arange, dtype
         from cPickle import loads, dumps
         import sys
-        
+
         a = arange(15).astype(object)
         if '__pypy__' in sys.builtin_module_names:
             raises(NotImplementedError, dumps, a)
@@ -211,4 +211,4 @@
         a = arange(15).astype(object).reshape((3, 5))
         b = loads(dumps(a))
         assert (a == b).all()
-        
+
diff --git a/pypy/module/signal/__init__.py b/pypy/module/signal/__init__.py
--- a/pypy/module/signal/__init__.py
+++ b/pypy/module/signal/__init__.py
@@ -46,8 +46,8 @@
         space.check_signal_action = interp_signal.CheckSignalAction(space)
         space.actionflag.register_periodic_action(space.check_signal_action,
                                                   use_bytecode_counter=False)
-        if space.config.translation.reverse_debugger:
-            from pypy.interpreter.reverse_debugging import RDBSignalActionFlag
+        if space.reverse_debugging:
+            RDBSignalActionFlag = space.reverse_debugging.RDBSignalActionFlag
             space.actionflag.__class__ = RDBSignalActionFlag
         else:
             space.actionflag.__class__ = interp_signal.SignalActionFlag
diff --git a/pypy/objspace/test/test_binop_overriding.py 
b/pypy/objspace/test/test_binop_overriding.py
--- a/pypy/objspace/test/test_binop_overriding.py
+++ b/pypy/objspace/test/test_binop_overriding.py
@@ -73,7 +73,7 @@
                 if C is not object:
                     setattr(C, name, f)
                 override_in_hier(n-1)
-                if C is not object:        
+                if C is not object:
                     delattr(C, name)
 
         override_in_hier()
@@ -105,7 +105,7 @@
         if not self.appdirect:
             skip("slow test, should be run as appdirect test")
         Base, do_test = self.helpers
-         
+
         class X(Base):
             pass
         class Y(X):
@@ -116,7 +116,7 @@
         assert not fail
 
     def test_binop_combinations_sub(self):
-        Base, do_test = self.helpers        
+        Base, do_test = self.helpers
         class X(Base):
             pass
         class Y(X):
@@ -124,13 +124,13 @@
 
         fail = do_test(X, Y, 'sub', lambda x,y: x-y)
         #print len(fail)
-        assert not fail        
+        assert not fail
 
     def test_binop_combinations_pow(self):
         if not self.appdirect:
             skip("slow test, should be run as appdirect test")
         Base, do_test = self.helpers
-        
+
         class X(Base):
             pass
         class Y(X):
@@ -138,13 +138,13 @@
 
         fail = do_test(X, Y, 'pow', lambda x,y: x**y)
         #print len(fail)
-        assert not fail        
+        assert not fail
 
     def test_binop_combinations_more_exhaustive(self):
         if not self.appdirect:
             skip("very slow test, should be run as appdirect test")
         Base, do_test = self.helpers
-        
+
         class X(Base):
             pass
 
diff --git a/rpython/jit/codewriter/jtransform.py 
b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -272,6 +272,9 @@
     def rewrite_op_unlikely(self, op):
         return None   # "no real effect"
 
+    def rewrite_op_revdb_do_next_call(self, op):
+        return []    # ignored, only for revdb
+
     def rewrite_op_raw_malloc_usage(self, op):
         if self.cpu.translate_support_code or isinstance(op.args[0], Variable):
             return   # the operation disappears
diff --git a/rpython/rlib/objectmodel.py b/rpython/rlib/objectmodel.py
--- a/rpython/rlib/objectmodel.py
+++ b/rpython/rlib/objectmodel.py
@@ -373,6 +373,18 @@
         hop.exception_cannot_occur()
         return hop.inputconst(lltype.Void, translator.config)
 
+def _import_revdb():
+    from rpython.rlib import revdb
+    return revdb
+
+def revdb_flag_io_disabled():
+    config = fetch_translated_config()
+    if config is not None and config.translation.reverse_debugger:
+        revdb = _import_revdb()
+        if revdb.flag_io_disabled():
+            return revdb
+    return None
+
 # ____________________________________________________________
 
 class FREED_OBJECT(object):
diff --git a/rpython/rlib/rdtoa.py b/rpython/rlib/rdtoa.py
--- a/rpython/rlib/rdtoa.py
+++ b/rpython/rlib/rdtoa.py
@@ -3,7 +3,7 @@
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
 from rpython.translator import cdir
 from rpython.rtyper.lltypesystem import lltype, rffi
-from rpython.rlib import jit, revdb
+from rpython.rlib import jit, objectmodel
 from rpython.rlib.rstring import StringBuilder
 import py, sys
 
@@ -54,7 +54,8 @@
 def strtod(input):
     if len(input) > _INT_LIMIT:
         raise MemoryError
-    if revdb.flag_io_disabled():
+    revdb = objectmodel.revdb_flag_io_disabled()
+    if revdb:
         return revdb.emulate_strtod(input)
     end_ptr = lltype.malloc(rffi.CCHARPP.TO, 1, flavor='raw')
     try:
@@ -240,7 +241,8 @@
          special_strings=lower_special_strings, upper=False):
     if precision > _INT_LIMIT:
         raise MemoryError
-    if revdb.flag_io_disabled():
+    revdb = objectmodel.revdb_flag_io_disabled()
+    if revdb:
         return revdb.emulate_dtoa(value)
     decpt_ptr = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
     try:
diff --git a/rpython/rlib/revdb.py b/rpython/rlib/revdb.py
--- a/rpython/rlib/revdb.py
+++ b/rpython/rlib/revdb.py
@@ -1,3 +1,4 @@
+XX X X
 import sys
 from rpython.rlib.objectmodel import we_are_translated, fetch_translated_config
 from rpython.rlib.objectmodel import specialize
diff --git a/rpython/rtyper/llinterp.py b/rpython/rtyper/llinterp.py
--- a/rpython/rtyper/llinterp.py
+++ b/rpython/rtyper/llinterp.py
@@ -1211,12 +1211,11 @@
         exc_data.exc_value = lltype.typeOf(evalue)._defl()
         return bool(etype)
 
-    def op_revdb_stop_point(self, *args):
-        pass
-
     def op_gc_move_out_of_nursery(self, obj):
         raise NotImplementedError("gc_move_out_of_nursery")
 
+    def op_revdb_stop_point(self, *args):
+        pass
     def op_revdb_send_answer(self, *args):
         raise NotImplementedError
     def op_revdb_breakpoint(self, *args):
@@ -1225,10 +1224,8 @@
         raise NotImplementedError
     def op_revdb_get_unique_id(self, *args):
         raise NotImplementedError
-
     def op_revdb_watch_save_state(self, *args):
         return False
-
     def op_revdb_watch_restore_state(self, *args):
         raise NotImplementedError
     def op_revdb_weakref_create(self, *args):
diff --git a/rpython/rtyper/lltypesystem/lloperation.py 
b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -402,7 +402,7 @@
     'raw_store':            LLOp(revdb_protect=True, canrun=True),
     'bare_raw_store':       LLOp(revdb_protect=True),
     'gc_load_indexed':      LLOp(sideeffects=False, canrun=True),
-    'gc_store':             LLOp(canrun=True),
+    'gc_store':             LLOp(canrun=True),   # only used by the boehm gc
     'gc_store_indexed':     LLOp(canrun=True),
     'track_alloc_start':    LLOp(),
     'track_alloc_stop':     LLOp(),
diff --git a/rpython/rtyper/lltypesystem/module/ll_math.py 
b/rpython/rtyper/lltypesystem/module/ll_math.py
--- a/rpython/rtyper/lltypesystem/module/ll_math.py
+++ b/rpython/rtyper/lltypesystem/module/ll_math.py
@@ -4,7 +4,7 @@
 import sys
 
 from rpython.translator import cdir
-from rpython.rlib import jit, rposix, revdb
+from rpython.rlib import jit, rposix, objectmodel
 from rpython.rlib.rfloat import INFINITY, NAN, isfinite
 from rpython.rlib.rposix import UNDERSCORE_ON_WIN32
 from rpython.rtyper.lltypesystem import lltype, rffi
@@ -185,7 +185,8 @@
         mantissa = x
         exponent = 0
     else:
-        if revdb.flag_io_disabled():
+        revdb = objectmodel.revdb_flag_io_disabled()
+        if revdb:
             return revdb.emulate_frexp(x)
         exp_p = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
         try:
@@ -223,7 +224,8 @@
 def ll_math_modf(x):
     # some platforms don't do the right thing for NaNs and
     # infinities, so we take care of special cases directly.
-    if revdb.flag_io_disabled():
+    revdb = objectmodel.revdb_flag_io_disabled()
+    if revdb:
         return revdb.emulate_modf(x)
     if not isfinite(x):
         if math.isnan(x):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to