Author: Armin Rigo <[email protected]>
Branch:
Changeset: r45041:81617331f53d
Date: 2011-06-21 19:13 +0200
http://bitbucket.org/pypy/pypy/changeset/81617331f53d/
Log: merge heads
diff --git a/pypy/module/micronumpy/interp_numarray.py
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -44,6 +44,10 @@
self.invalidates = []
def invalidated(self):
+ if self.invalidates:
+ self._invalidated()
+
+ def _invalidated(self):
for arr in self.invalidates:
arr.force_if_needed()
del self.invalidates[:]
@@ -353,4 +357,4 @@
__div__ = interp2app(BaseArray.descr_div),
mean = interp2app(BaseArray.descr_mean),
-)
\ No newline at end of file
+)
diff --git a/pypy/module/pypyjit/interp_jit.py
b/pypy/module/pypyjit/interp_jit.py
--- a/pypy/module/pypyjit/interp_jit.py
+++ b/pypy/module/pypyjit/interp_jit.py
@@ -18,7 +18,7 @@
from pypy.rlib.objectmodel import we_are_translated
from pypy.rlib.nonconst import NonConstant
from pypy.jit.metainterp.resoperation import rop
-from pypy.module.pypyjit.interp_resop import W_DebugMergePoint
+from pypy.module.pypyjit.interp_resop import debug_merge_point_from_boxes
PyFrame._virtualizable2_ = ['last_instr', 'pycode',
'valuestackdepth', 'valuestack_w[*]',
@@ -53,7 +53,8 @@
list_w = []
for op in operations:
if op.getopnum() == rop.DEBUG_MERGE_POINT:
- list_w.append(space.wrap(W_DebugMergePoint(op.getarglist())))
+ list_w.append(space.wrap(debug_merge_point_from_boxes(
+ op.getarglist())))
else:
list_w.append(space.wrap(logops.repr_of_resop(op)))
return list_w
diff --git a/pypy/module/pypyjit/interp_resop.py
b/pypy/module/pypyjit/interp_resop.py
--- a/pypy/module/pypyjit/interp_resop.py
+++ b/pypy/module/pypyjit/interp_resop.py
@@ -1,6 +1,6 @@
from pypy.interpreter.typedef import TypeDef, interp_attrproperty
-from pypy.interpreter.baseobjspace import Wrappable, ObjSpace
+from pypy.interpreter.baseobjspace import Wrappable, ObjSpace, W_Root
from pypy.interpreter.gateway import unwrap_spec, interp2app
from pypy.interpreter.pycode import PyCode
from pypy.rpython.lltypesystem import lltype, llmemory
@@ -10,22 +10,32 @@
class W_DebugMergePoint(Wrappable):
""" A class representing debug_merge_point JIT operation
"""
-
- def __init__(self, boxes):
- self.mp_no = boxes[0].getint()
- self.offset = boxes[2].getint()
- llcode = lltype.cast_opaque_ptr(lltype.Ptr(OBJECT),
- boxes[4].getref_base())
- self.pycode = cast_base_ptr_to_instance(PyCode, llcode)
- @unwrap_spec('self', ObjSpace)
+ def __init__(self, mp_no, offset, pycode):
+ self.mp_no = mp_no
+ self.offset = offset
+ self.pycode = pycode
+
def descr_repr(self, space):
return space.wrap('DebugMergePoint()')
+@unwrap_spec(mp_no=int, offset=int, pycode=PyCode)
+def new_debug_merge_point(space, w_tp, mp_no, offset, pycode):
+ return W_DebugMergePoint(mp_no, offset, pycode)
+
+def debug_merge_point_from_boxes(boxes):
+ mp_no = boxes[0].getint()
+ offset = boxes[2].getint()
+ llcode = lltype.cast_opaque_ptr(lltype.Ptr(OBJECT),
+ boxes[4].getref_base())
+ pycode = cast_base_ptr_to_instance(PyCode, llcode)
+ assert pycode is not None
+ return W_DebugMergePoint(mp_no, offset, pycode)
+
W_DebugMergePoint.typedef = TypeDef(
'DebugMergePoint',
+ __new__ = interp2app(new_debug_merge_point),
__doc__ = W_DebugMergePoint.__doc__,
__repr__ = interp2app(W_DebugMergePoint.descr_repr),
code = interp_attrproperty('pycode', W_DebugMergePoint),
)
-
diff --git a/pypy/module/pypyjit/test/test_jit_hook.py
b/pypy/module/pypyjit/test/test_jit_hook.py
--- a/pypy/module/pypyjit/test/test_jit_hook.py
+++ b/pypy/module/pypyjit/test/test_jit_hook.py
@@ -119,3 +119,8 @@
dmp = l[0][3][1]
assert isinstance(dmp, pypyjit.DebugMergePoint)
assert dmp.code is self.f.func_code
+
+ def test_creation(self):
+ import pypyjit
+ dmp = pypyjit.DebugMergePoint(0, 0, self.f.func_code)
+ assert dmp.code is self.f.func_code
diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py
b/pypy/module/pypyjit/test_pypy_c/test_string.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -0,0 +1,42 @@
+from pypy.module.pypyjit.test_pypy_c.test_00_model import BaseTestPyPyC
+
+class TestString(BaseTestPyPyC):
+ def test_lookup_default_encoding(self):
+ def main(n):
+ import string
+ i = 0
+ letters = string.letters
+ uletters = unicode(string.letters)
+ while i < n:
+ i += letters[i % len(letters)] == uletters[i % len(letters)]
+ return i
+
+ log = self.run(main, [300])
+ assert log.result == 300
+ loop, = log.loops_by_filename(self.filepath)
+ assert loop.match("""
+ i14 = int_lt(i6, i9)
+ guard_true(i14, descr=<Guard42>)
+ i15 = int_mod(i6, i10)
+ i17 = int_rshift(i15, 63)
+ i18 = int_and(i10, i17)
+ i19 = int_add(i15, i18)
+ i21 = int_lt(i19, 0)
+ guard_false(i21, descr=<Guard43>)
+ i22 = int_ge(i19, i10)
+ guard_false(i22, descr=<Guard44>)
+ i23 = strgetitem(p11, i19)
+ i24 = int_ge(i19, i12)
+ guard_false(i24, descr=<Guard45>)
+ i25 = unicodegetitem(p13, i19)
+ guard_not_invalidated(descr=<Guard46>)
+ p27 = newstr(1)
+ strsetitem(p27, 0, i23)
+ p30 = call(ConstClass(ll_str2unicode__rpy_stringPtr), p27,
descr=<GcPtrCallDescr>)
+ guard_no_exception(descr=<Guard47>)
+ i32 =
call(ConstClass(_ll_2_str_eq_checknull_char__rpy_unicodePtr_UniChar), p30, i25,
descr=<SignedCallDescr>)
+ guard_true(i32, descr=<Guard48>)
+ i34 = int_add(i6, 1)
+ --TICK--
+ jump(p0, p1, p2, p3, p4, p5, i34, p7, p8, i9, i10, p11, i12, p13,
descr=<Loop4>)
+ """)
\ No newline at end of file
diff --git a/pypy/module/sys/__init__.py b/pypy/module/sys/__init__.py
--- a/pypy/module/sys/__init__.py
+++ b/pypy/module/sys/__init__.py
@@ -7,6 +7,8 @@
class Module(MixedModule):
"""Sys Builtin Module. """
+ _immutable_fields_ = ["defaultencoding?"]
+
def __init__(self, space, w_name):
"""NOT_RPYTHON""" # because parent __init__ isn't
if space.config.translating:
diff --git a/pypy/rpython/lltypesystem/rlist.py
b/pypy/rpython/lltypesystem/rlist.py
--- a/pypy/rpython/lltypesystem/rlist.py
+++ b/pypy/rpython/lltypesystem/rlist.py
@@ -250,12 +250,11 @@
length = l.length
l.length = length + 1
l.ll_setitem_fast(length, newitem)
-ll_append_noresize.oopspec = 'list.append(l, newitem)'
def ll_both_none(lst1, lst2):
return not lst1 and not lst2
-
+
# ____________________________________________________________
#
diff --git a/pypy/translator/platform/darwin.py
b/pypy/translator/platform/darwin.py
--- a/pypy/translator/platform/darwin.py
+++ b/pypy/translator/platform/darwin.py
@@ -68,12 +68,10 @@
class Darwin_i386(Darwin):
name = "darwin_i386"
- link_flags = ('-arch', 'i386', '-mmacosx-version-min=10.4')
- cflags = ('-arch', 'i386', '-O3', '-fomit-frame-pointer',
- '-mmacosx-version-min=10.4')
+ link_flags = ('-arch', 'i386')
+ cflags = ('-arch', 'i386', '-O3', '-fomit-frame-pointer')
class Darwin_x86_64(Darwin):
name = "darwin_x86_64"
- link_flags = ('-arch', 'x86_64', '-mmacosx-version-min=10.4')
- cflags = ('-arch', 'x86_64', '-O3', '-fomit-frame-pointer',
- '-mmacosx-version-min=10.4')
+ link_flags = ('-arch', 'x86_64')
+ cflags = ('-arch', 'x86_64', '-O3', '-fomit-frame-pointer')
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit