Author: Alex Gaynor <[email protected]>
Branch: virtual-dicts
Changeset: r48463:90eed59807bd
Date: 2011-10-25 17:27 -0400
http://bitbucket.org/pypy/pypy/changeset/90eed59807bd/
Log: copy{str,unicode}content can't affect heap caches
diff --git a/pypy/jit/metainterp/heapcache.py b/pypy/jit/metainterp/heapcache.py
--- a/pypy/jit/metainterp/heapcache.py
+++ b/pypy/jit/metainterp/heapcache.py
@@ -75,7 +75,9 @@
opnum == rop.SETARRAYITEM_GC or
opnum == rop.SETFIELD_RAW or
opnum == rop.SETARRAYITEM_RAW or
- opnum == rop.SETINTERIORFIELD_GC):
+ opnum == rop.SETINTERIORFIELD_GC or
+ opnum == rop.COPYSTRCONTENT or
+ opnum == rop.COPYUNICODECONTENT):
return
if rop._OVF_FIRST <= opnum <= rop._OVF_LAST:
return
diff --git a/pypy/jit/metainterp/test/test_tracingopts.py
b/pypy/jit/metainterp/test/test_tracingopts.py
--- a/pypy/jit/metainterp/test/test_tracingopts.py
+++ b/pypy/jit/metainterp/test/test_tracingopts.py
@@ -3,6 +3,7 @@
from pypy.jit.metainterp.test.support import LLJitMixin
from pypy.rlib import jit
from pypy.rlib.rarithmetic import ovfcheck
+from pypy.rlib.rstring import StringBuilder
import py
@@ -590,4 +591,14 @@
assert res == 4
self.check_operations_history(int_add_ovf=0)
res = self.interp_operations(fn, [sys.maxint])
- assert res == 12
\ No newline at end of file
+ assert res == 12
+
+ def test_copy_str_content(self):
+ def fn(n):
+ a = StringBuilder()
+ x = [1]
+ a.append("hello world")
+ return x[0]
+ res = self.interp_operations(fn, [0])
+ assert res == 1
+ self.check_operations_history(getarrayitem_gc=0,
getarrayitem_gc_pure=0 )
\ No newline at end of file
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit