Author: Armin Rigo <[email protected]>
Branch: stm
Changeset: r48802:85ce549541e6
Date: 2011-11-05 18:40 +0100
http://bitbucket.org/pypy/pypy/changeset/85ce549541e6/

Log:    malloc_varsize.

diff --git a/pypy/translator/stm/llstminterp.py 
b/pypy/translator/stm/llstminterp.py
--- a/pypy/translator/stm/llstminterp.py
+++ b/pypy/translator/stm/llstminterp.py
@@ -131,6 +131,11 @@
             self.check_stm_mode(lambda m: m != "regular_transaction")
         return LLFrame.op_malloc(self, TYPE, flags)
 
+    def opstm_malloc_varsize(self, TYPE, flags, size):
+        if flags['flavor'] != 'gc':
+            self.check_stm_mode(lambda m: m != "regular_transaction")
+        return LLFrame.op_malloc_varsize(self, TYPE, flags, size)
+
     # ---------- stm-only operations ----------
     # Note that for these tests we assume no real multithreading,
     # so that we just emulate the operations the easy way
diff --git a/pypy/translator/stm/test/test_transform.py 
b/pypy/translator/stm/test/test_transform.py
--- a/pypy/translator/stm/test/test_transform.py
+++ b/pypy/translator/stm/test/test_transform.py
@@ -129,6 +129,12 @@
         lltype.malloc(S)
     eval_stm_func(func, [], final_stm_mode="regular_transaction")
 
+def test_supported_malloc_varsize():
+    A = lltype.GcArray(lltype.Signed)
+    def func():
+        lltype.malloc(A, 5)
+    eval_stm_func(func, [], final_stm_mode="regular_transaction")
+
 def test_unsupported_malloc():
     S = lltype.Struct('S', ('x', lltype.Signed))   # non-GC structure
     def func():
diff --git a/pypy/translator/stm/transform.py b/pypy/translator/stm/transform.py
--- a/pypy/translator/stm/transform.py
+++ b/pypy/translator/stm/transform.py
@@ -194,6 +194,10 @@
         flags = op.args[1].value
         return flags['flavor'] == 'gc'
 
+    def stt_malloc_varsize(self, newoperations, op):
+        flags = op.args[1].value
+        return flags['flavor'] == 'gc'
+
     def stt_gc_stack_bottom(self, newoperations, op):
         self.seen_gc_stack_bottom = True
         newoperations.append(op)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to