[pypy-svn] r31731 - pypy/dist/pypy/jit/codegen/i386

ac at codespeak.net ac at codespeak.net
Sun Aug 27 15:39:43 CEST 2006


Author: ac
Date: Sun Aug 27 15:39:43 2006
New Revision: 31731

Modified:
   pypy/dist/pypy/jit/codegen/i386/ri386genop.py
Log:
(pedronis, arre) Add op_setfield and op_getsubstruct.

Modified: pypy/dist/pypy/jit/codegen/i386/ri386genop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/i386/ri386genop.py	(original)
+++ pypy/dist/pypy/jit/codegen/i386/ri386genop.py	Sun Aug 27 15:39:43 2006
@@ -252,6 +252,20 @@
         self.mc.MOV(edx, gv_ptr.operand(self))
         return self.push(mem(edx, offset))
 
+    def op_setfield(self, (gv_ptr, gv_offset, gv_value), gv_RESTYPE):
+        # XXX only for ints for now.
+        assert isinstance(gv_offset, IntConst)
+        offset = gv_offset.value
+        self.mc.MOV(eax, gv_value.operand(self))
+        self.mc.MOV(edx, gv_ptr.operand(self))
+        self.mc.MOV(mem(edx, offset), eax)
+
+    def op_getsubstruct(self, (gv_ptr, gv_offset), gv_RESTYPE):
+        assert isinstance(gv_offset, IntConst)
+        offset = gv_offset.value
+        self.mc.MOV(edx, gv_ptr.operand(self))
+        self.mc.LEA(eax, mem(edx, offset))
+        return self.push(eax)
 
 class Link(CodeGenLink):
 



More information about the Pypy-commit mailing list