except for the info pointer.
-------------------------------------------------------------------------- */
except for the info pointer.
-------------------------------------------------------------------------- */
unthread( StgPtr p, StgPtr free )
{
StgPtr q = (StgPtr)*p, r;
unthread( StgPtr p, StgPtr free )
{
StgPtr q = (StgPtr)*p, r;
// A word-aligned memmove will be faster for small objects than libc's or gcc's.
// Remember, the two regions *might* overlap, but: to <= from.
// A word-aligned memmove will be faster for small objects than libc's or gcc's.
// Remember, the two regions *might* overlap, but: to <= from.
move(StgPtr to, StgPtr from, nat size)
{
for(; size > 0; --size) {
move(StgPtr to, StgPtr from, nat size)
{
for(; size > 0; --size) {
- size = ((StgLargeBitmap *)fun_info->bitmap)->size;
- thread_large_bitmap(p, (StgLargeBitmap *)fun_info->bitmap, size);
+ size = ((StgLargeBitmap *)fun_info->f.bitmap)->size;
+ thread_large_bitmap(p, (StgLargeBitmap *)fun_info->f.bitmap, size);
- bitmap = BITMAP_BITS(stg_arg_bitmaps[fun_info->fun_type]);
- size = BITMAP_SIZE(stg_arg_bitmaps[fun_info->fun_type]);
+ bitmap = BITMAP_BITS(stg_arg_bitmaps[fun_info->f.fun_type]);
+ size = BITMAP_SIZE(stg_arg_bitmaps[fun_info->f.fun_type]);
p++;
size = BCO_BITMAP_SIZE(bco);
thread_large_bitmap(p, BCO_BITMAP(bco), size);
p++;
size = BCO_BITMAP_SIZE(bco);
thread_large_bitmap(p, BCO_BITMAP(bco), size);