Author: Manuel Jacob Branch: py3k Changeset: r64815:eb7f8348ff30 Date: 2013-06-07 11:43 +0200 http://bitbucket.org/pypy/pypy/changeset/eb7f8348ff30/
Log: hg merge default diff --git a/pypy/doc/getting-started-dev.rst b/pypy/doc/getting-started-dev.rst --- a/pypy/doc/getting-started-dev.rst +++ b/pypy/doc/getting-started-dev.rst @@ -8,7 +8,8 @@ interpreter is written mostly in RPython (with pieces in Python), while the RPython compiler is written in Python. The hard to understand part is that Python is a meta-programming language for RPython, that is, -RPython is considered from live objects **after** the imports are done. +"being valid RPython" is a question that only makes sense on the +live objects **after** the imports are done. This might require more explanation. You start writing RPython from ``entry_point``, a good starting point is ``rpython/translator/goal/targetnopstandalone.py``. This does not do all that @@ -37,7 +38,7 @@ In this example ``entry_point`` is RPython, ``add`` and ``sub`` are RPython, however, ``generator`` is not. -A good introductory level articles are available: +The following introductory level articles are available: * Laurence Tratt -- `Fast Enough VMs in Fast Enough Time`_. diff --git a/pypy/module/imp/importing.py b/pypy/module/imp/importing.py --- a/pypy/module/imp/importing.py +++ b/pypy/module/imp/importing.py @@ -994,7 +994,8 @@ try: optimize = space.sys.get_flag('optimize') - except Exception: + except RuntimeError: + # during bootstrapping optimize = 0 if optimize >= 2: code_w.remove_docstrings(space) @@ -1095,7 +1096,8 @@ code_w = read_compiled_module(space, cpathname, source) try: optimize = space.sys.get_flag('optimize') - except Exception: + except RuntimeError: + # during bootstrapping optimize = 0 if optimize >= 2: code_w.remove_docstrings(space) diff --git a/pypy/module/test_lib_pypy/test_os_wait.py b/pypy/module/test_lib_pypy/test_os_wait.py --- a/pypy/module/test_lib_pypy/test_os_wait.py +++ b/pypy/module/test_lib_pypy/test_os_wait.py @@ -1,6 +1,7 @@ -# Generates the resource cache -#from lib_pypy.ctypes_config_cache import rebuild -#rebuild.rebuild_one('resource.ctc.py') +# Generates the resource cache (it might be there already, but maybe not) +from __future__ import absolute_import +from lib_pypy.ctypes_config_cache import rebuild +rebuild.rebuild_one('resource.ctc.py') import os diff --git a/pypy/objspace/std/test/test_methodcache.py b/pypy/objspace/std/test/test_methodcache.py --- a/pypy/objspace/std/test/test_methodcache.py +++ b/pypy/objspace/std/test/test_methodcache.py @@ -4,7 +4,28 @@ class AppTestMethodCaching(test_typeobject.AppTestTypeObject): spaceconfig = {"objspace.std.withmethodcachecounter": True} + def setup_class(cls): + # This is for the following tests, which are a bit fragile and + # historically have been failing once in a while. With this hack, + # they are run up to 5 times in a row, saving the frame of the + # failed attempt. This means occasional collisions should work + # differently during the retry. + cls.w_retry = cls.space.appexec([], """(): + def retry(run): + keepalive = [] + for i in range(4): + try: + return run() + except AssertionError: + import sys + keepalive.append(sys.exc_info()) + return run() + return retry + """) + def test_mix_classes(self): + @self.retry + def run(): import __pypy__ class A(object): def f(self): @@ -32,6 +53,8 @@ # calling space.str_w, which .encode('ascii') the string, thus # creating new strings all the time. The problem should be solved when # we implement proper unicode identifiers in py3k + @self.retry + def run(): import __pypy__ class A(object): def f(self): @@ -70,6 +93,8 @@ assert cache_counter == (17, 3) def test_subclasses(self): + @self.retry + def run(): import __pypy__ class A(object): def f(self): @@ -89,6 +114,8 @@ assert sum(cache_counter) == 30 def test_many_names(self): + @self.retry + def run(): import __pypy__ laste = None for j in range(20): @@ -143,6 +170,8 @@ assert e.foo == 3 def test_custom_metaclass(self): + @self.retry + def run(): import __pypy__ for j in range(20): class MetaA(type): @@ -164,6 +193,8 @@ raise AssertionError("cache_counter = %r" % (cache_counter,)) def test_mutate_class(self): + @self.retry + def run(): import __pypy__ class A(object): x = 1 diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py --- a/rpython/jit/backend/test/runner_test.py +++ b/rpython/jit/backend/test/runner_test.py @@ -1918,9 +1918,10 @@ res = self.execute_operation(rop.CAST_INT_TO_FLOAT, [BoxInt(x)], 'float').value assert longlong.getrealfloat(res) == float(x) - res = self.execute_operation(rop.CAST_INT_TO_FLOAT, - [ConstInt(x)], 'float').value - assert longlong.getrealfloat(res) == float(x) + # --- the front-end never generates CAST_INT_TO_FLOAT(Const) + #res = self.execute_operation(rop.CAST_INT_TO_FLOAT, + # [ConstInt(x)], 'float').value + #assert longlong.getrealfloat(res) == float(x) def test_cast_float_to_int(self): if not self.cpu.supports_floats: @@ -1930,9 +1931,10 @@ res = self.execute_operation(rop.CAST_FLOAT_TO_INT, [BoxFloat(v)], 'int').value assert res == int(x) - res = self.execute_operation(rop.CAST_FLOAT_TO_INT, - [ConstFloat(v)], 'int').value - assert res == int(x) + # --- the front-end never generates CAST_FLOAT_TO_INT(Const) + #res = self.execute_operation(rop.CAST_FLOAT_TO_INT, + # [ConstFloat(v)], 'int').value + #assert res == int(x) def test_convert_float_bytes(self): if not self.cpu.supports_floats: diff --git a/rpython/rlib/cache.py b/rpython/rlib/cache.py --- a/rpython/rlib/cache.py +++ b/rpython/rlib/cache.py @@ -44,8 +44,8 @@ return self.content[key] except KeyError: if key in self._building: - raise Exception, "%s recursive building of %r" % ( - self, key) + raise RuntimeError("%s recursive building of %r" % + (self, key)) self._building[key] = True try: result = self._build(key) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit