[pypy-commit] pypy rdict-experiments-2: shift stuff a little so we don't have to use negative numbers

fijal noreply at buildbot.pypy.org
Fri Jan 11 16:28:02 CET 2013


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: rdict-experiments-2
Changeset: r59953:1f3c4036d05e
Date: 2013-01-11 17:27 +0200
http://bitbucket.org/pypy/pypy/changeset/1f3c4036d05e/

Log:	shift stuff a little so we don't have to use negative numbers

diff --git a/pypy/rpython/lltypesystem/rdict.py b/pypy/rpython/lltypesystem/rdict.py
--- a/pypy/rpython/lltypesystem/rdict.py
+++ b/pypy/rpython/lltypesystem/rdict.py
@@ -356,12 +356,12 @@
 MAX_SHORT_MASK = ~(2 ** 16 - 1)
 MAX_BYTE_MASK = ~(2 ** 8 - 1)
 
- at jit.look_inside_iff(lambda n : jit.isconstant(n))
 def _ll_malloc_indexes(n):
     # XXXX 64 bit only
     #if n & MAX_INT_MASK:
     res = lltype.cast_opaque_ptr(llmemory.GCREF,
-                                 lltype.malloc(DICTINDEX_SIGNED.TO, n))
+                                 lltype.malloc(DICTINDEX_SIGNED.TO, n,
+                                               zero=True))
     #elif n & MAX_SHORT_MASK:
     #    res = lltype.cast_opaque_ptr(llmemory.GCREF,
     #                                 lltype.malloc(DICTINDEX_INT.TO, n))
@@ -371,15 +371,11 @@
     #else:
     #    res = lltype.cast_opaque_ptr(llmemory.GCREF,
     #                                 lltype.malloc(DICTINDEX_BYTE.TO, n))
-    i = 0
-    while i < n:
-        ll_index_setitem(n, res, i, FREE)
-        i += 1
     return res
 
 def ll_index_getitem(size, indexes, i):
     #if size & MAX_INT_MASK:
-    return lltype.cast_opaque_ptr(DICTINDEX_SIGNED, indexes)[i]
+    return lltype.cast_opaque_ptr(DICTINDEX_SIGNED, indexes)[i] - 2
     #elif size & MAX_SHORT_MASK:    
     #    return rffi.cast(lltype.Signed,
     #                     lltype.cast_opaque_ptr(DICTINDEX_INT, indexes)[i])
@@ -392,7 +388,7 @@
 
 def ll_index_setitem(size, indexes, i, v):
     #if size & MAX_INT_MASK:
-    lltype.cast_opaque_ptr(DICTINDEX_SIGNED, indexes)[i] = v
+    lltype.cast_opaque_ptr(DICTINDEX_SIGNED, indexes)[i] = v + 2
     #elif size & MAX_SHORT_MASK:    
     #    lltype.cast_opaque_ptr(DICTINDEX_INT, indexes)[i] = rffi.cast(
     #        rffi.INT_real, v)


More information about the pypy-commit mailing list