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