Author: Armin Rigo <[email protected]>
Branch: jit-ordereddict
Changeset: r68549:10bafee08db7
Date: 2013-12-25 22:43 +0100
http://bitbucket.org/pypy/pypy/changeset/10bafee08db7/
Log: bytearray length
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -426,6 +426,8 @@
def bh_arraylen_gc(self, a, descr):
array = a._obj.container
+ if descr.A is not descr.OUTERA:
+ array = getattr(array, descr.OUTERA._arrayfld)
return array.getlength()
def bh_getarrayitem_gc(self, a, index, descr):
diff --git a/rpython/jit/codewriter/jtransform.py
b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -837,9 +837,14 @@
optype = op.args[0].concretetype
if optype == lltype.Ptr(rstr.STR):
opname = "strlen"
+ elif optype == lltype.Ptr(rstr.UNICODE):
+ opname = "unicodelen"
+ elif optype == lltype.Ptr(rbytearray.BYTEARRAY):
+ bytearraydescr = self.cpu.arraydescrof(rbytearray.BYTEARRAY)
+ return SpaceOperation('arraylen_gc', [op.args[0], bytearraydescr],
+ op.result)
else:
- assert optype == lltype.Ptr(rstr.UNICODE)
- opname = "unicodelen"
+ assert 0, "supported type %r" % (optype,)
return SpaceOperation(opname, [op.args[0]], op.result)
def rewrite_op_getinteriorfield(self, op):
@@ -854,10 +859,9 @@
elif optype == lltype.Ptr(rbytearray.BYTEARRAY):
bytearraydescr = self.cpu.arraydescrof(rbytearray.BYTEARRAY)
v_index = op.args[2]
- op = SpaceOperation('getarrayitem_gc_i',
- [op.args[0], v_index, bytearraydescr],
- op.result)
- return op
+ return SpaceOperation('getarrayitem_gc_i',
+ [op.args[0], v_index, bytearraydescr],
+ op.result)
else:
v_inst, v_index, c_field = op.args
if op.result.concretetype is lltype.Void:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit