Author: Hakan Ardo <[email protected]>
Branch: jit-short_from_state
Changeset: r45026:f1b7b43ec0ce
Date: 2011-06-19 20:42 +0200
http://bitbucket.org/pypy/pypy/changeset/f1b7b43ec0ce/
Log: hg merge default
diff --git a/pypy/interpreter/pycode.py b/pypy/interpreter/pycode.py
--- a/pypy/interpreter/pycode.py
+++ b/pypy/interpreter/pycode.py
@@ -95,7 +95,7 @@
if self.co_flags & CO_VARKEYWORDS:
argcount += 1
# Cell vars could shadow already-set arguments.
- # astcompiler.pyassem used to be clever about the order of
+ # The compiler used to be clever about the order of
# the variables in both co_varnames and co_cellvars, but
# it no longer is for the sake of simplicity. Moreover
# code objects loaded from CPython don't necessarily follow
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,31 @@
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)
+ 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/translator/c/test/test_newgc.py
b/pypy/translator/c/test/test_newgc.py
--- a/pypy/translator/c/test/test_newgc.py
+++ b/pypy/translator/c/test/test_newgc.py
@@ -1117,6 +1117,7 @@
S = lltype.GcStruct('S', ('u', lltype.Ptr(U)))
A = lltype.GcArray(lltype.Ptr(S))
filename = self.filename_dump_typeids_z
+ open_flags = os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0)
def fn():
s = lltype.malloc(S)
@@ -1128,7 +1129,7 @@
#
p = rgc.get_typeids_z()
s = ''.join([p[i] for i in range(len(p))])
- fd = os.open(filename, os.O_WRONLY | os.O_CREAT, 0666)
+ fd = os.open(filename, open_flags, 0666)
os.write(fd, s)
os.close(fd)
return 0
@@ -1137,7 +1138,7 @@
def test_write_typeids_z(self):
self.run("write_typeids_z")
- f = open(self.filename_dump_typeids_z)
+ f = open(self.filename_dump_typeids_z, 'rb')
data_z = f.read()
f.close()
import zlib
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit