[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