return (heap_base + (page_num * PAGE_BYTES));
}
+/* Calculate the address where the allocation region associated with the page starts. */
+inline void *
+page_region_start(page_index_t page_index)
+{
+ return page_address(page_index)+page_table[page_index].first_object_offset;
+}
+
/* Find the page index within the page_table for the given
* address. Return -1 on failure. */
inline page_index_t
if ((page_index == -1) ||
(page_table[page_index].allocated == FREE_PAGE_FLAG))
return NULL;
- start = (lispobj *)((void *)page_address(page_index)
- + page_table[page_index].first_object_offset);
+ start = (lispobj *)page_region_start(page_index);
return (gc_search_space(start,
(((lispobj *)pointer)+2)-start,
(lispobj *)pointer));
#if 0
/* I think this'd work just as well, but without the assertions.
* -dan 2004.01.01 */
- first_page=
- find_page_index(page_address(addr_page_index)+
- page_table[addr_page_index].first_object_offset);
+ first_page = find_page_index(page_region_start(addr_page_index))
#else
first_page = addr_page_index;
while (page_table[first_page].first_object_offset != 0) {
- page_table[i].first_object_offset)/N_WORD_BYTES;
new_areas_ignore_page = last_page;
- scavenge(page_address(i) +
- page_table[i].first_object_offset,
- size);
+ scavenge(page_region_start(i), size);
}
i = last_page;
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.19.28"
+"1.0.19.29"