Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r45917:2051f1bfa5fc Date: 2011-07-23 22:32 +0200 http://bitbucket.org/pypy/pypy/changeset/2051f1bfa5fc/
Log: merge heads diff --git a/pypy/config/support.py b/pypy/config/support.py --- a/pypy/config/support.py +++ b/pypy/config/support.py @@ -9,7 +9,7 @@ return 1 # don't override MAKEFLAGS. This will call 'make' without any '-j' option if sys.platform == 'darwin': return darwin_get_cpu_count() - elif sys.platform != 'linux2': + elif not sys.platform.startswith('linux'): return 1 # implement me try: if isinstance(filename_or_file, str): diff --git a/pypy/config/test/test_support.py b/pypy/config/test/test_support.py --- a/pypy/config/test/test_support.py +++ b/pypy/config/test/test_support.py @@ -40,7 +40,7 @@ return self._value def test_cpuinfo_linux(): - if sys.platform != 'linux2': + if not sys.platform.startswith('linux'): py.test.skip("linux only") saved = os.environ try: diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py --- a/pypy/interpreter/typedef.py +++ b/pypy/interpreter/typedef.py @@ -23,7 +23,7 @@ self.hasdict |= __base.hasdict self.weakrefable |= __base.weakrefable self.rawdict = {} - self.acceptable_as_base_class = True + self.acceptable_as_base_class = '__new__' in rawdict self.applevel_subclasses_base = None # xxx used by faking self.fakedcpytype = None diff --git a/pypy/jit/backend/llvm/llvm_rffi.py b/pypy/jit/backend/llvm/llvm_rffi.py --- a/pypy/jit/backend/llvm/llvm_rffi.py +++ b/pypy/jit/backend/llvm/llvm_rffi.py @@ -3,7 +3,7 @@ from pypy.rpython.lltypesystem import lltype, rffi from pypy.translator.tool.cbuild import ExternalCompilationInfo, log -if sys.platform != 'linux2': +if not sys.platform.startswith('linux'): py.test.skip("Linux only for now") # ____________________________________________________________ diff --git a/pypy/jit/metainterp/warmspot.py b/pypy/jit/metainterp/warmspot.py --- a/pypy/jit/metainterp/warmspot.py +++ b/pypy/jit/metainterp/warmspot.py @@ -10,6 +10,7 @@ from pypy.rlib.objectmodel import we_are_translated from pypy.rlib.unroll import unrolling_iterable from pypy.rlib.debug import fatalerror +from pypy.rlib.rstackovf import StackOverflow from pypy.translator.simplify import get_functype from pypy.translator.unsimplify import call_final_function @@ -408,6 +409,15 @@ jd.warmstate = state def crash_in_jit(e): + try: + raise e + except JitException: + raise # go through + except MemoryError: + raise # go through + except StackOverflow: + raise # go through + except Exception, e: if not we_are_translated(): print "~~~ Crash in JIT!" print '~~~ %s: %s' % (e.__class__, e) @@ -421,8 +431,6 @@ def maybe_enter_jit(*args): try: maybe_compile_and_run(state.increment_threshold, *args) - except JitException: - raise # go through except Exception, e: crash_in_jit(e) maybe_enter_jit._always_inline_ = True diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py --- a/pypy/module/cpyext/api.py +++ b/pypy/module/cpyext/api.py @@ -852,7 +852,7 @@ # Sometimes the library is wrapped into another DLL, ensure that # the correct bootstrap code is installed kwds["link_extra"] = ["msvcrt.lib"] - elif sys.platform == 'linux2': + elif sys.platform.startswith('linux'): compile_extra.append("-Werror=implicit-function-declaration") export_symbols_eci.append('pypyAPI') else: diff --git a/pypy/module/cpyext/test/test_cpyext.py b/pypy/module/cpyext/test/test_cpyext.py --- a/pypy/module/cpyext/test/test_cpyext.py +++ b/pypy/module/cpyext/test/test_cpyext.py @@ -188,7 +188,7 @@ kwds["compile_extra"] = ["/we4013"] else: kwds["link_files"] = [str(api_library + '.so')] - if sys.platform == 'linux2': + if sys.platform.startswith('linux'): kwds["compile_extra"]=["-Werror=implicit-function-declaration"] return compile_module(self.space, name, **kwds) 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 @@ -85,7 +85,7 @@ return SEARCH_ERROR, None, None -if sys.platform == 'linux2' or 'freebsd' in sys.platform: +if sys.platform.startswith('linux') or 'freebsd' in sys.platform: def case_ok(filename): return True else: diff --git a/pypy/module/posix/test/test_posix2.py b/pypy/module/posix/test/test_posix2.py --- a/pypy/module/posix/test/test_posix2.py +++ b/pypy/module/posix/test/test_posix2.py @@ -125,13 +125,13 @@ assert st.st_size == 14 assert st.st_nlink == 1 - #if sys.platform.startswith('linux2'): + #if sys.platform.startswith('linux'): # # expects non-integer timestamps - it's unlikely that they are # # all three integers # assert ((st.st_atime, st.st_mtime, st.st_ctime) != # (st[7], st[8], st[9])) # assert st.st_blksize * st.st_blocks >= st.st_size - if sys.platform.startswith('linux2'): + if sys.platform.startswith('linux'): assert hasattr(st, 'st_rdev') def test_stat_float_times(self): diff --git a/pypy/rlib/test/test_rlocale.py b/pypy/rlib/test/test_rlocale.py --- a/pypy/rlib/test/test_rlocale.py +++ b/pypy/rlib/test/test_rlocale.py @@ -37,7 +37,7 @@ assert isinstance(grouping, str) def test_libintl(): - if sys.platform not in ("linux2", "darwin"): + if sys.platform != "darwin" or not sys.platform.startswith("linux"): py.test.skip("there is (maybe) no libintl here") _gettext = external('gettext', [rffi.CCHARP], rffi.CCHARP) res = _gettext("1234") diff --git a/pypy/rpython/lltypesystem/ll2ctypes.py b/pypy/rpython/lltypesystem/ll2ctypes.py --- a/pypy/rpython/lltypesystem/ll2ctypes.py +++ b/pypy/rpython/lltypesystem/ll2ctypes.py @@ -1331,7 +1331,7 @@ def _where_is_errno(): return standard_c_lib._errno() - elif sys.platform in ('linux2', 'freebsd6'): + elif sys.platform.startswith('linux') or sys.platform == 'freebsd6': standard_c_lib.__errno_location.restype = ctypes.POINTER(ctypes.c_int) def _where_is_errno(): return standard_c_lib.__errno_location() diff --git a/pypy/rpython/lltypesystem/llarena.py b/pypy/rpython/lltypesystem/llarena.py --- a/pypy/rpython/lltypesystem/llarena.py +++ b/pypy/rpython/lltypesystem/llarena.py @@ -404,7 +404,7 @@ from pypy.rpython.extfunc import register_external from pypy.rlib.objectmodel import CDefinedIntSymbolic -if sys.platform == 'linux2': +if sys.platform.startswith('linux'): # This only works with linux's madvise(), which is really not a memory # usage hint but a real command. It guarantees that after MADV_DONTNEED # the pages are cleared again. diff --git a/pypy/rpython/lltypesystem/test/test_ll2ctypes.py b/pypy/rpython/lltypesystem/test/test_ll2ctypes.py --- a/pypy/rpython/lltypesystem/test/test_ll2ctypes.py +++ b/pypy/rpython/lltypesystem/test/test_ll2ctypes.py @@ -1348,7 +1348,7 @@ def test_prefix(self): - if sys.platform != 'linux2': + if not sys.platform.startswith('linux'): py.test.skip("Not supported") from pypy.translator.platform import platform diff --git a/pypy/rpython/memory/gc/env.py b/pypy/rpython/memory/gc/env.py --- a/pypy/rpython/memory/gc/env.py +++ b/pypy/rpython/memory/gc/env.py @@ -55,7 +55,7 @@ # will be huge on 64-bit systems. if sys.maxint == 2147483647: # 32-bit - if sys.platform == 'linux2': + if sys.platform.startswith('linux'): addressable_size = float(2**32) # 4GB elif sys.platform == 'win32': addressable_size = float(2**31) # 2GB @@ -65,7 +65,7 @@ addressable_size = float(2**63) # 64-bit -def get_total_memory_linux2(filename): +def get_total_memory_linux(filename): debug_start("gc-hardware") result = -1.0 try: @@ -93,7 +93,7 @@ result = addressable_size debug_stop("gc-hardware") return result - +get_total_memory_linux2 = get_total_memory_linux3 = get_total_memory_linux def get_total_memory_darwin(result): debug_start("gc-hardware") @@ -108,7 +108,7 @@ return result -if sys.platform == 'linux2': +if sys.platform.startswith('linux'): def get_total_memory(): return get_total_memory_linux2('/proc/meminfo') diff --git a/pypy/rpython/module/ll_os_stat.py b/pypy/rpython/module/ll_os_stat.py --- a/pypy/rpython/module/ll_os_stat.py +++ b/pypy/rpython/module/ll_os_stat.py @@ -21,7 +21,7 @@ # sub-second timestamps. # - TIMESPEC is defined when the "struct stat" contains st_atim field. -if sys.platform == 'linux2': +if sys.platform.startswith('linux'): TIMESPEC = platform.Struct('struct timespec', [('tv_sec', rffi.TIME_T), ('tv_nsec', rffi.LONG)]) diff --git a/pypy/translator/c/gc.py b/pypy/translator/c/gc.py --- a/pypy/translator/c/gc.py +++ b/pypy/translator/c/gc.py @@ -226,7 +226,7 @@ eci = eci.merge(configure_boehm()) pre_include_bits = [] - if sys.platform == "linux2": + if sys.platform.startswith('linux'): pre_include_bits += ["#define _REENTRANT 1", "#define GC_LINUX_THREADS 1"] if sys.platform != "win32": diff --git a/pypy/translator/platform/__init__.py b/pypy/translator/platform/__init__.py --- a/pypy/translator/platform/__init__.py +++ b/pypy/translator/platform/__init__.py @@ -230,7 +230,7 @@ return True -if sys.platform == 'linux2': +if sys.platform.startswith('linux'): from pypy.translator.platform.linux import Linux, Linux64 import platform if platform.architecture()[0] == '32bit': diff --git a/pypy/translator/sandbox/sandlib.py b/pypy/translator/sandbox/sandlib.py --- a/pypy/translator/sandbox/sandlib.py +++ b/pypy/translator/sandbox/sandlib.py @@ -209,7 +209,7 @@ def handle_until_return(self): child_stdin = self.popen.stdin child_stdout = self.popen.stdout - if self.os_level_sandboxing and sys.platform.startswith('linux2'): + if self.os_level_sandboxing and sys.platform.startswith('linux'): # rationale: we wait until the child process started completely, # letting the C library do any system calls it wants for # initialization. When the RPython code starts up, it quickly diff --git a/pypy/translator/sandbox/test/test_sandbox.py b/pypy/translator/sandbox/test/test_sandbox.py --- a/pypy/translator/sandbox/test/test_sandbox.py +++ b/pypy/translator/sandbox/test/test_sandbox.py @@ -145,7 +145,7 @@ g = pipe.stdin f = pipe.stdout expect(f, g, "ll_os.ll_os_getenv", ("PYPY_GENERATIONGC_NURSERY",), None) - if sys.platform == 'linux2': # on Mac, uses another (sandboxsafe) approach + if sys.platform.startswith('linux'): # on Mac, uses another (sandboxsafe) approach expect(f, g, "ll_os.ll_os_open", ("/proc/cpuinfo", 0, 420), OSError(5232, "xyz")) expect(f, g, "ll_os.ll_os_getenv", ("PYPY_GC_DEBUG",), None) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit