[pypy-svn] r51279 - in pypy/branch/jit-refactoring/pypy/jit/rainbow: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Tue Feb 5 00:03:08 CET 2008
Author: cfbolz
Date: Tue Feb 5 00:03:07 2008
New Revision: 51279
Modified:
pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py
pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py
pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py
Log:
setarrayitem works too
Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py (original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/codewriter.py Tue Feb 5 00:03:07 2008
@@ -567,6 +567,22 @@
deepfrozen)
self.register_redvar(op.result)
+ def serialize_op_setarrayitem(self, op):
+ args = op.args
+ PTRTYPE = args[0].concretetype
+ VALUETYPE = PTRTYPE.TO.OF
+ if VALUETYPE is lltype.Void:
+ return
+ destboxindex = self.serialize_oparg("red", args[0])
+ indexboxindex = self.serialize_oparg("red", args[1])
+ valboxindex = self.serialize_oparg("red", args[2])
+ fieldname = args[1].value
+ fielddescindex = self.arrayfielddesc_position(PTRTYPE.TO)
+ if fielddescindex == -1: # Void field
+ return
+ self.emit("red_setarrayitem", destboxindex, fielddescindex,
+ indexboxindex, valboxindex)
+
# call handling
def graphs_from(self, spaceop):
Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py (original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/interpreter.py Tue Feb 5 00:03:07 2008
@@ -364,6 +364,15 @@
resbox = rtimeshift.gengetarrayitem(self.jitstate, deepfrozen, fielddesc,
arraybox, indexbox)
self.red_result(resbox)
+
+
+ def opimpl_red_setarrayitem(self):
+ destbox = self.get_redarg()
+ fielddesc = self.frame.bytecode.arrayfielddescs[self.load_2byte()]
+ indexbox = self.get_redarg()
+ valuebox = self.get_redarg()
+ resbox = rtimeshift.gensetarrayitem(self.jitstate, fielddesc, destbox,
+ indexbox, valuebox)
# ____________________________________________________________
# construction-time interface
Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py (original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_interpreter.py Tue Feb 5 00:03:07 2008
@@ -546,8 +546,6 @@
assert res == 24
self.check_insns({})
-
-
def test_simple_struct_malloc(self):
py.test.skip("blue containers: to be reimplemented")
S = lltype.GcStruct('helloworld', ('hello', lltype.Signed),
@@ -711,7 +709,6 @@
def test_setarrayitem(self):
- py.test.skip("arrays and structs are not working")
A = lltype.GcArray(lltype.Signed)
a = lltype.malloc(A, 2, immortal=True)
def ll_function():
@@ -719,7 +716,7 @@
a[1] = 2
return a[0]+a[1]
- res = self.interpret(ll_function, [], [], policy=P_NOVIRTUAL)
+ res = self.interpret(ll_function, [], [])
assert res == 3
def test_red_array(self):
More information about the Pypy-commit
mailing list