[pypy-svn] r41256 - in pypy/dist/pypy/translator/llvm: . test

mwh at codespeak.net mwh at codespeak.net
Sat Mar 24 20:06:38 CET 2007


Author: mwh
Date: Sat Mar 24 20:06:36 2007
New Revision: 41256

Modified:
   pypy/dist/pypy/translator/llvm/opwriter.py
   pypy/dist/pypy/translator/llvm/test/test_genllvm.py
Log:
some kind of llvm support for call_boehm_gc_alloc.


Modified: pypy/dist/pypy/translator/llvm/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/opwriter.py	(original)
+++ pypy/dist/pypy/translator/llvm/opwriter.py	Sat Mar 24 20:06:36 2007
@@ -329,6 +329,11 @@
         else:
             raise NotImplementedError
 
+    def call_boehm_gc_alloc(self, opr):
+        word = self.db.get_machine_word()
+        self.codewriter.call(opr.retref, 'sbyte*', '%pypy_malloc',
+                             [word], [opr.argrefs[0]])
+
     def getfield(self, opr):
         op = opr.op
         if opr.rettype != "void":

Modified: pypy/dist/pypy/translator/llvm/test/test_genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_genllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/test_genllvm.py	Sat Mar 24 20:06:36 2007
@@ -459,3 +459,15 @@
     f = compile_function(func, [int])
     res = f(4)
     assert res == 16
+
+def test_call_boehm_gc_alloc():
+    from pypy.rpython.lltypesystem import llmemory, lltype
+    from pypy.rpython.lltypesystem.lloperation import llop
+    def f(s):
+        a = llop.call_boehm_gc_alloc(llmemory.Address, 100)
+        a.signed[0] = s
+        a.signed[1] = s+2
+        return a.signed[0]*a.signed[1]
+    f = compile_function(f, [int])
+    res = f(4)
+    assert res == 4*(4+2)



More information about the Pypy-commit mailing list