[pypy-commit] pypy gc_no_cleanup_nursery: Try to write down how exactly the NEW_* operations are supposed to clear

arigo noreply at buildbot.pypy.org
Thu Sep 25 10:14:53 CEST 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: gc_no_cleanup_nursery
Changeset: r73689:1559dc36fe9e
Date: 2014-09-25 10:14 +0200
http://bitbucket.org/pypy/pypy/changeset/1559dc36fe9e/

Log:	Try to write down how exactly the NEW_* operations are supposed to
	clear (or not) the new objects. Add NEW_ARRAY_CLEAR.

diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -481,11 +481,13 @@
     'GETFIELD_GC/1d',
     'GETFIELD_RAW/1d',
     '_MALLOC_FIRST',
-    'NEW/0d',
-    'NEW_WITH_VTABLE/1',
-    'NEW_ARRAY/1d',
-    'NEWSTR/1',
-    'NEWUNICODE/1',
+    'NEW/0d',             #-> GcStruct, gcptrs inside are zeroed (not the rest)
+    'NEW_WITH_VTABLE/1',  #-> GcStruct with vtable, gcptrs inside are zeroed
+    'NEW_ARRAY/1d',       #-> GcArray, zeroed if array of gcptr or of structs
+                          #            (even if struct has no gcptrs)
+    'NEW_ARRAY_CLEAR/1d', #-> GcArray, zeroed always
+    'NEWSTR/1',           #-> STR, the hash field is zeroed
+    'NEWUNICODE/1',       #-> UNICODE, the hash field is zeroed
     '_MALLOC_LAST',
     'FORCE_TOKEN/0',
     'VIRTUAL_REF/2',         # removed before it's passed to the backend


More information about the pypy-commit mailing list