[pypy-commit] pypy op_malloc_gc: fix
arigo
noreply at buildbot.pypy.org
Sun Dec 18 22:57:13 CET 2011
Author: Armin Rigo <arigo at tunes.org>
Branch: op_malloc_gc
Changeset: r50685:c3eb411bcb54
Date: 2011-12-18 22:32 +0100
http://bitbucket.org/pypy/pypy/changeset/c3eb411bcb54/
Log: fix
diff --git a/pypy/jit/backend/llsupport/descr.py b/pypy/jit/backend/llsupport/descr.py
--- a/pypy/jit/backend/llsupport/descr.py
+++ b/pypy/jit/backend/llsupport/descr.py
@@ -237,6 +237,21 @@
cache[(ARRAY, name)] = descr
return descr
+def get_dynamic_interiorfield_descr(gc_ll_descr, offset, width, fieldsize,
+ is_pointer, is_float, is_signed):
+ arraydescr = ArrayDescr(0, width, None, FLAG_STRUCT)
+ if is_pointer:
+ assert not is_float
+ flag = FLAG_POINTER
+ elif is_float:
+ flag = FLAG_FLOAT
+ elif is_signed:
+ flag = FLAG_SIGNED
+ else:
+ flag = FLAG_UNSIGNED
+ fielddescr = FieldDescr('dynamic', offset, fieldsize, flag)
+ return InteriorFieldDescr(arraydescr, fielddescr)
+
# ____________________________________________________________
# CallDescrs
diff --git a/pypy/jit/backend/llsupport/llmodel.py b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -10,7 +10,7 @@
from pypy.jit.backend.llsupport.symbolic import WORD, unroll_basic_sizes
from pypy.jit.backend.llsupport.descr import (
get_size_descr, get_field_descr, get_array_descr,
- get_call_descr, get_interiorfield_descr,
+ get_call_descr, get_interiorfield_descr, get_dynamic_interiorfield_descr,
FieldDescr, ArrayDescr, CallDescr, InteriorFieldDescr)
from pypy.jit.backend.llsupport.asmmemmgr import AsmMemoryManager
@@ -239,10 +239,10 @@
return get_interiorfield_descr(self.gc_ll_descr, A, fieldname)
def interiorfielddescrof_dynamic(self, offset, width, fieldsize,
- is_pointer, is_float, is_signed):
- arraydescr = DynamicArrayNoLengthDescr(width)
- fielddescr = DynamicFieldDescr(offset, fieldsize, is_pointer, is_float, is_signed)
- return InteriorFieldDescr(arraydescr, fielddescr)
+ is_pointer, is_float, is_signed):
+ return get_dynamic_interiorfield_descr(self.gc_ll_descr,
+ offset, width, fieldsize,
+ is_pointer, is_float, is_signed)
def unpack_arraydescr(self, arraydescr):
assert isinstance(arraydescr, ArrayDescr)
More information about the pypy-commit
mailing list