[pypy-commit] pypy py3k: hg merge default
mjacob
pypy.commits at gmail.com
Fri Feb 26 11:33:19 EST 2016
Author: Manuel Jacob <me at manueljacob.de>
Branch: py3k
Changeset: r82569:12537e5dacda
Date: 2016-02-26 17:30 +0100
http://bitbucket.org/pypy/pypy/changeset/12537e5dacda/
Log: hg merge default
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -170,4 +170,17 @@
When creating instances and adding attributes in several different orders
depending on some condition, the JIT would create too much code. This is now
-fixed.
\ No newline at end of file
+fixed.
+
+.. branch: cpyext-gc-support-2
+
+Improve CPython C API support, which means lxml now runs unmodified
+(after removing pypy hacks, pending pull request)
+
+.. branch: look-inside-tuple-hash
+
+Look inside tuple hash, improving mdp benchmark
+
+.. branch: vlen-resume
+
+Compress resume data, saving 10-20% of memory consumed by the JIT
\ No newline at end of file
diff --git a/pypy/module/thread/test/test_thread.py b/pypy/module/thread/test/test_thread.py
--- a/pypy/module/thread/test/test_thread.py
+++ b/pypy/module/thread/test/test_thread.py
@@ -239,14 +239,12 @@
if waiting:
_thread.interrupt_main()
return
- print('tock...', x) # <-force the GIL to be released, as
- time.sleep(0.1) # time.sleep doesn't do non-translated
+ time.sleep(0.1)
def busy_wait():
waiting.append(None)
for x in range(100):
- print('tick...', x) # <-force the GIL to be released, as
- time.sleep(0.1) # time.sleep doesn't do non-translated
+ time.sleep(0.1)
waiting.pop()
# This is normally called by app_main.py
diff --git a/pypy/module/time/interp_time.py b/pypy/module/time/interp_time.py
--- a/pypy/module/time/interp_time.py
+++ b/pypy/module/time/interp_time.py
@@ -4,7 +4,7 @@
from pypy.interpreter.gateway import unwrap_spec
from rpython.rtyper.lltypesystem import lltype
from rpython.rlib.rarithmetic import intmask
-from rpython.rlib import rposix
+from rpython.rlib import rposix, rtime
from rpython.translator.tool.cbuild import ExternalCompilationInfo
import os
import sys
@@ -314,13 +314,13 @@
if secs < 0:
raise OperationError(space.w_IOError,
space.wrap("Invalid argument: negative time in sleep"))
- pytime.sleep(secs)
+ rtime.sleep(secs)
else:
from rpython.rlib import rwin32
from errno import EINTR
def _simple_sleep(space, secs, interruptible):
if secs == 0.0 or not interruptible:
- pytime.sleep(secs)
+ rtime.sleep(secs)
else:
millisecs = int(secs * 1000)
interrupt_event = space.fromcache(State).get_interrupt_event()
@@ -329,7 +329,7 @@
if rc == rwin32.WAIT_OBJECT_0:
# Yield to make sure real Python signal handler
# called.
- pytime.sleep(0.001)
+ rtime.sleep(0.001)
raise wrap_oserror(space,
OSError(EINTR, "sleep() interrupted"))
@unwrap_spec(secs=float)
diff --git a/pypy/objspace/std/mapdict.py b/pypy/objspace/std/mapdict.py
--- a/pypy/objspace/std/mapdict.py
+++ b/pypy/objspace/std/mapdict.py
@@ -65,21 +65,8 @@
def delete(self, obj, name, index):
pass
+ @jit.elidable
def find_map_attr(self, name, index):
- if jit.we_are_jitted():
- # hack for the jit:
- # the _find_map_attr method is pure too, but its argument is never
- # constant, because it is always a new tuple
- return self._find_map_attr_jit_pure(name, index)
- else:
- return self._find_map_attr_indirection(name, index)
-
- @jit.elidable
- def _find_map_attr_jit_pure(self, name, index):
- return self._find_map_attr_indirection(name, index)
-
- @jit.dont_look_inside
- def _find_map_attr_indirection(self, name, index):
if (self.space.config.objspace.std.withmethodcache):
return self._find_map_attr_cache(name, index)
return self._find_map_attr(name, index)
diff --git a/pypy/tool/test/test_tab.py b/pypy/tool/test/test_tab.py
--- a/pypy/tool/test/test_tab.py
+++ b/pypy/tool/test/test_tab.py
@@ -6,6 +6,7 @@
from pypy.conftest import pypydir
ROOT = os.path.abspath(os.path.join(pypydir, '..'))
+RPYTHONDIR = os.path.join(ROOT, "rpython")
EXCLUDE = {'/virt_test/lib/python2.7/site-packages/setuptools'}
@@ -28,3 +29,27 @@
if not entry.startswith('.'):
walk('%s/%s' % (reldir, entry))
walk('')
+
+def test_no_pypy_import_in_rpython():
+ def walk(reldir):
+ print reldir
+ if reldir:
+ path = os.path.join(RPYTHONDIR, *reldir.split('/'))
+ else:
+ path = RPYTHONDIR
+ if os.path.isfile(path):
+ if not path.lower().endswith('.py'):
+ return
+ with file(path) as f:
+ for line in f:
+ if "import" not in line:
+ continue
+ assert "from pypy." not in line
+ assert "import pypy." not in line
+ elif os.path.isdir(path) and not os.path.islink(path):
+ for entry in os.listdir(path):
+ if not entry.startswith('.'):
+ walk('%s/%s' % (reldir, entry))
+
+ walk('')
+
diff --git a/rpython/jit/metainterp/test/test_jitdriver.py b/rpython/jit/metainterp/test/test_jitdriver.py
--- a/rpython/jit/metainterp/test/test_jitdriver.py
+++ b/rpython/jit/metainterp/test/test_jitdriver.py
@@ -227,7 +227,7 @@
i += 1
self.meta_interp(f, [0])
- self.check_resops(enter_portal_frame=1, leave_portal_frame=1)
+ self.check_simple_loop(enter_portal_frame=1, leave_portal_frame=1)
class TestLLtype(MultipleJitDriversTests, LLJitMixin):
pass
diff --git a/rpython/rlib/test/test_posix.py b/rpython/rlib/test/test_posix.py
--- a/rpython/rlib/test/test_posix.py
+++ b/rpython/rlib/test/test_posix.py
@@ -1,4 +1,4 @@
-import py
+import py.test
from rpython.rtyper.test.tool import BaseRtypingTest
from rpython.rtyper.annlowlevel import hlstr
from rpython.tool.udir import udir
@@ -58,7 +58,7 @@
assert res
def test_times(self):
- import py; py.test.skip("llinterp does not like tuple returns")
+ py.test.skip("llinterp does not like tuple returns")
from rpython.rtyper.test.test_llinterp import interpret
times = interpret(lambda: posix.times(), ())
assert isinstance(times, tuple)
@@ -119,21 +119,21 @@
res = self.interpret(f,[fi,20])
assert self.ll_to_string(res) == text
- if hasattr(os, 'chown'):
- def test_chown(self):
- f = open(path, "w")
- f.write("xyz")
- f.close()
- def f():
- try:
- posix.chown(path, os.getuid(), os.getgid())
- return 1
- except OSError:
- return 2
+ @py.test.mark.skipif("not hasattr(os, 'chown')")
+ def test_chown(self):
+ f = open(path, "w")
+ f.write("xyz")
+ f.close()
+ def f():
+ try:
+ posix.chown(path, os.getuid(), os.getgid())
+ return 1
+ except OSError:
+ return 2
- assert self.interpret(f, []) == 1
- os.unlink(path)
- assert self.interpret(f, []) == 2
+ assert self.interpret(f, []) == 1
+ os.unlink(path)
+ assert self.interpret(f, []) == 2
def test_close(self):
def f(fi):
@@ -144,70 +144,70 @@
res = self.interpret(f,[fi])
py.test.raises( OSError, os.fstat, fi)
- if hasattr(os, 'ftruncate'):
- def test_ftruncate(self):
- def f(fi,len):
- os.ftruncate(fi,len)
- fi = os.open(path,os.O_RDWR,0777)
- func = self.interpret(f,[fi,6])
- assert os.fstat(fi).st_size == 6
+ @py.test.mark.skipif("not hasattr(os, 'ftruncate')")
+ def test_ftruncate(self):
+ def f(fi,len):
+ os.ftruncate(fi,len)
+ fi = os.open(path,os.O_RDWR,0777)
+ func = self.interpret(f,[fi,6])
+ assert os.fstat(fi).st_size == 6
- if hasattr(os, 'getuid'):
- def test_getuid(self):
- def f():
- return os.getuid()
- assert self.interpret(f, []) == f()
+ @py.test.mark.skipif("not hasattr(os, 'getuid')")
+ def test_getuid(self):
+ def f():
+ return os.getuid()
+ assert self.interpret(f, []) == f()
- if hasattr(os, 'getgid'):
- def test_getgid(self):
- def f():
- return os.getgid()
- assert self.interpret(f, []) == f()
+ @py.test.mark.skipif("not hasattr(os, 'getgid')")
+ def test_getgid(self):
+ def f():
+ return os.getgid()
+ assert self.interpret(f, []) == f()
- if hasattr(os, 'setuid'):
- def test_os_setuid(self):
- def f():
- os.setuid(os.getuid())
- return os.getuid()
- assert self.interpret(f, []) == f()
+ @py.test.mark.skipif("not hasattr(os, 'setuid')")
+ def test_os_setuid(self):
+ def f():
+ os.setuid(os.getuid())
+ return os.getuid()
+ assert self.interpret(f, []) == f()
- if hasattr(os, 'sysconf'):
- def test_os_sysconf(self):
- def f(i):
- return os.sysconf(i)
- assert self.interpret(f, [13]) == f(13)
+ @py.test.mark.skipif("not hasattr(os, 'sysconf')")
+ def test_os_sysconf(self):
+ def f(i):
+ return os.sysconf(i)
+ assert self.interpret(f, [13]) == f(13)
- if hasattr(os, 'confstr'):
- def test_os_confstr(self):
- def f(i):
- try:
- return os.confstr(i)
- except OSError:
- return "oooops!!"
- some_value = os.confstr_names.values()[-1]
- res = self.interpret(f, [some_value])
- assert hlstr(res) == f(some_value)
- res = self.interpret(f, [94781413])
- assert hlstr(res) == "oooops!!"
+ @py.test.mark.skipif("not hasattr(os, 'confstr')")
+ def test_os_confstr(self):
+ def f(i):
+ try:
+ return os.confstr(i)
+ except OSError:
+ return "oooops!!"
+ some_value = os.confstr_names.values()[-1]
+ res = self.interpret(f, [some_value])
+ assert hlstr(res) == f(some_value)
+ res = self.interpret(f, [94781413])
+ assert hlstr(res) == "oooops!!"
- if hasattr(os, 'pathconf'):
- def test_os_pathconf(self):
- def f(i):
- return os.pathconf("/tmp", i)
- i = os.pathconf_names["PC_NAME_MAX"]
- some_value = self.interpret(f, [i])
- assert some_value >= 31
+ @py.test.mark.skipif("not hasattr(os, 'pathconf')")
+ def test_os_pathconf(self):
+ def f(i):
+ return os.pathconf("/tmp", i)
+ i = os.pathconf_names["PC_NAME_MAX"]
+ some_value = self.interpret(f, [i])
+ assert some_value >= 31
- if hasattr(os, 'chroot'):
- def test_os_chroot(self):
- def f():
- try:
- os.chroot('!@$#!#%$#^#@!#!$$#^')
- except OSError:
- return 1
- return 0
+ @py.test.mark.skipif("not hasattr(os, 'chroot')")
+ def test_os_chroot(self):
+ def f():
+ try:
+ os.chroot('!@$#!#%$#^#@!#!$$#^')
+ except OSError:
+ return 1
+ return 0
- assert self.interpret(f, []) == 1
+ assert self.interpret(f, []) == 1
def test_os_wstar(self):
from rpython.rlib import rposix
@@ -221,84 +221,84 @@
res = self.interpret(fun, [value])
assert res == fun(value)
- if hasattr(os, 'getgroups'):
- def test_getgroups(self):
- def f():
- return os.getgroups()
- ll_a = self.interpret(f, [])
- assert self.ll_to_list(ll_a) == f()
+ @py.test.mark.skipif("not hasattr(os, 'getgroups')")
+ def test_getgroups(self):
+ def f():
+ return os.getgroups()
+ ll_a = self.interpret(f, [])
+ assert self.ll_to_list(ll_a) == f()
- if hasattr(os, 'setgroups'):
- def test_setgroups(self):
- def f():
- try:
- os.setgroups(os.getgroups())
- except OSError:
- pass
- self.interpret(f, [])
+ @py.test.mark.skipif("not hasattr(os, 'setgroups')")
+ def test_setgroups(self):
+ def f():
+ try:
+ os.setgroups(os.getgroups())
+ except OSError:
+ pass
+ self.interpret(f, [])
- if hasattr(os, 'initgroups'):
- def test_initgroups(self):
- def f():
- try:
- os.initgroups('sUJJeumz', 4321)
- except OSError:
- return 1
- return 0
- res = self.interpret(f, [])
- assert res == 1
+ @py.test.mark.skipif("not hasattr(os, 'initgroups')")
+ def test_initgroups(self):
+ def f():
+ try:
+ os.initgroups('sUJJeumz', 4321)
+ except OSError:
+ return 1
+ return 0
+ res = self.interpret(f, [])
+ assert res == 1
- if hasattr(os, 'tcgetpgrp'):
- def test_tcgetpgrp(self):
- def f(fd):
- try:
- return os.tcgetpgrp(fd)
- except OSError:
- return 42
- res = self.interpret(f, [9999])
- assert res == 42
+ @py.test.mark.skipif("not hasattr(os, 'tcgetpgrp')")
+ def test_tcgetpgrp(self):
+ def f(fd):
+ try:
+ return os.tcgetpgrp(fd)
+ except OSError:
+ return 42
+ res = self.interpret(f, [9999])
+ assert res == 42
- if hasattr(os, 'tcsetpgrp'):
- def test_tcsetpgrp(self):
- def f(fd, pgrp):
- try:
- os.tcsetpgrp(fd, pgrp)
- except OSError:
- return 1
- return 0
- res = self.interpret(f, [9999, 1])
- assert res == 1
+ @py.test.mark.skipif("not hasattr(os, 'tcsetpgrp')")
+ def test_tcsetpgrp(self):
+ def f(fd, pgrp):
+ try:
+ os.tcsetpgrp(fd, pgrp)
+ except OSError:
+ return 1
+ return 0
+ res = self.interpret(f, [9999, 1])
+ assert res == 1
- if hasattr(os, 'getresuid'):
- def test_getresuid(self):
- def f():
- a, b, c = os.getresuid()
- return a + b * 37 + c * 1291
- res = self.interpret(f, [])
+ @py.test.mark.skipif("not hasattr(os, 'getresuid')")
+ def test_getresuid(self):
+ def f():
a, b, c = os.getresuid()
- assert res == a + b * 37 + c * 1291
+ return a + b * 37 + c * 1291
+ res = self.interpret(f, [])
+ a, b, c = os.getresuid()
+ assert res == a + b * 37 + c * 1291
- if hasattr(os, 'getresgid'):
- def test_getresgid(self):
- def f():
- a, b, c = os.getresgid()
- return a + b * 37 + c * 1291
- res = self.interpret(f, [])
+ @py.test.mark.skipif("not hasattr(os, 'getresgid')")
+ def test_getresgid(self):
+ def f():
a, b, c = os.getresgid()
- assert res == a + b * 37 + c * 1291
+ return a + b * 37 + c * 1291
+ res = self.interpret(f, [])
+ a, b, c = os.getresgid()
+ assert res == a + b * 37 + c * 1291
- if hasattr(os, 'setresuid'):
- def test_setresuid(self):
- def f():
- a, b, c = os.getresuid()
- a = (a + 1) - 1
- os.setresuid(a, b, c)
- self.interpret(f, [])
+ @py.test.mark.skipif("not hasattr(os, 'setresuid')")
+ def test_setresuid(self):
+ def f():
+ a, b, c = os.getresuid()
+ a = (a + 1) - 1
+ os.setresuid(a, b, c)
+ self.interpret(f, [])
- if hasattr(os, 'setresgid'):
- def test_setresgid(self):
- def f():
- a, b, c = os.getresgid()
- a = (a + 1) - 1
- os.setresgid(a, b, c)
- self.interpret(f, [])
+ @py.test.mark.skipif("not hasattr(os, 'setresgid')")
+ def test_setresgid(self):
+ def f():
+ a, b, c = os.getresgid()
+ a = (a + 1) - 1
+ os.setresgid(a, b, c)
+ self.interpret(f, [])
More information about the pypy-commit
mailing list