[pypy-commit] pypy default: merge heads
bdkearns
noreply at buildbot.pypy.org
Tue Sep 9 01:37:27 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r73388:76b2985de3ea
Date: 2014-09-08 19:36 -0400
http://bitbucket.org/pypy/pypy/changeset/76b2985de3ea/
Log: merge heads
diff --git a/pypy/doc/release-2.4.0.rst b/pypy/doc/release-2.4.0.rst
--- a/pypy/doc/release-2.4.0.rst
+++ b/pypy/doc/release-2.4.0.rst
@@ -62,7 +62,8 @@
bytearray handling, and a major rewrite of the GIL handling. This means
that external calls are now a lot faster, especially the CFFI ones. It also
means better performance in a lot of corner cases with handling strings or
-bytearrays.
+bytearrays. The main bugfix is handling of many socket objects in your
+program which in the long run used to "leak" memory.
PyPy now uses Python 2.7.8 standard library.
@@ -109,8 +110,9 @@
.. _`whats-new`: http://doc.pypy.org/en/latest/whatsnew-2.3.1.html
.. _resolved: https://bitbucket.org/pypy/pypy/issues?status=resolved
-We have further improvements on the way: rpython file handling and
-usable numpy linalg compatabiity should be merged soon.
+We have further improvements on the way: rpython file handling,
+numpy linalg compatability, as well
+as improved GC and many smaller improvements.
Please try it out and let us know what you think. We especially welcome
success stories, we know you are using PyPy, please tell us about it!
diff --git a/rpython/jit/backend/arm/detect.py b/rpython/jit/backend/arm/detect.py
--- a/rpython/jit/backend/arm/detect.py
+++ b/rpython/jit/backend/arm/detect.py
@@ -38,9 +38,9 @@
try:
buf = os.read(fd, 2048)
if not buf:
+ n = 6 # we assume ARMv6 as base case
debug_print("Could not detect ARM architecture "
"version, assuming", "ARMv%d" % n)
- n = 6 # we asume ARMv6 as base case
finally:
os.close(fd)
# "Processor : ARMv%d-compatible processor rev 7 (v6l)"
diff --git a/rpython/jit/backend/arm/opassembler.py b/rpython/jit/backend/arm/opassembler.py
--- a/rpython/jit/backend/arm/opassembler.py
+++ b/rpython/jit/backend/arm/opassembler.py
@@ -1128,6 +1128,8 @@
self.mc.VCVT_int_to_float(res.value, r.svfp_ip.value)
return fcond
+ # the following five instructions are only ARMv7;
+ # regalloc.py won't call them at all on ARMv6
emit_op_llong_add = gen_emit_float_op('llong_add', 'VADD_i64')
emit_op_llong_sub = gen_emit_float_op('llong_sub', 'VSUB_i64')
emit_op_llong_and = gen_emit_float_op('llong_and', 'VAND_i64')
diff --git a/rpython/jit/backend/arm/regalloc.py b/rpython/jit/backend/arm/regalloc.py
--- a/rpython/jit/backend/arm/regalloc.py
+++ b/rpython/jit/backend/arm/regalloc.py
@@ -184,7 +184,7 @@
class Regalloc(BaseRegalloc):
- def __init__(self, assembler=None):
+ def __init__(self, assembler):
self.cpu = assembler.cpu
self.assembler = assembler
self.frame_manager = None
@@ -290,7 +290,7 @@
return self.vfprm.convert_to_imm(value)
def _prepare(self, inputargs, operations, allgcrefs):
- cpu = self.assembler.cpu
+ cpu = self.cpu
self.fm = ARMFrameManager(cpu.get_baseofs_of_frame_field())
self.frame_manager = self.fm
operations = cpu.gc_ll_descr.rewrite_assembler(cpu, operations,
@@ -550,18 +550,19 @@
EffectInfo.OS_LLONG_AND,
EffectInfo.OS_LLONG_OR,
EffectInfo.OS_LLONG_XOR):
- args = self._prepare_llong_binop_xx(op, fcond)
- self.perform_llong(op, args, fcond)
- return
- if oopspecindex == EffectInfo.OS_LLONG_TO_INT:
+ if self.cpu.cpuinfo.arch_version >= 7:
+ args = self._prepare_llong_binop_xx(op, fcond)
+ self.perform_llong(op, args, fcond)
+ return
+ elif oopspecindex == EffectInfo.OS_LLONG_TO_INT:
args = self._prepare_llong_to_int(op, fcond)
self.perform_llong(op, args, fcond)
return
- if oopspecindex == EffectInfo.OS_MATH_SQRT:
+ elif oopspecindex == EffectInfo.OS_MATH_SQRT:
args = self.prepare_op_math_sqrt(op, fcond)
self.perform_math(op, args, fcond)
return
- #if oopspecindex == EffectInfo.OS_MATH_READ_TIMESTAMP:
+ #elif oopspecindex == EffectInfo.OS_MATH_READ_TIMESTAMP:
# ...
return self._prepare_call(op)
@@ -590,7 +591,7 @@
# spill variables that need to be saved around calls
self.vfprm.before_call(save_all_regs=save_all_regs)
if not save_all_regs:
- gcrootmap = self.assembler.cpu.gc_ll_descr.gcrootmap
+ gcrootmap = self.cpu.gc_ll_descr.gcrootmap
if gcrootmap and gcrootmap.is_shadow_stack:
save_all_regs = 2
self.rm.before_call(save_all_regs=save_all_regs)
@@ -1082,7 +1083,7 @@
gcmap = self.get_gcmap([r.r0, r.r1])
self.possibly_free_var(t)
#
- gc_ll_descr = self.assembler.cpu.gc_ll_descr
+ gc_ll_descr = self.cpu.gc_ll_descr
self.assembler.malloc_cond_varsize_frame(
gc_ll_descr.get_nursery_free_addr(),
gc_ll_descr.get_nursery_top_addr(),
@@ -1092,7 +1093,7 @@
self.assembler._alignment_check()
def prepare_op_call_malloc_nursery_varsize(self, op, fcond):
- gc_ll_descr = self.assembler.cpu.gc_ll_descr
+ gc_ll_descr = self.cpu.gc_ll_descr
if not hasattr(gc_ll_descr, 'max_size_of_young_obj'):
raise Exception("unreachable code")
# for boehm, this function should never be called
More information about the pypy-commit
mailing list