-
- /* Should now be enough room. */
-
- /* Check whether there is room in the current region. */
- new_free_pointer = my_region->free_pointer + nbytes;
-
- if (new_free_pointer <= my_region->end_addr) {
- /* If so then allocate from the current region. */
- void *new_obj = my_region->free_pointer;
- my_region->free_pointer = new_free_pointer;
- /* Check whether the current region is almost empty. */
- if ((my_region->end_addr - my_region->free_pointer) <= 32) {
- /* If so find, finished with the current region. */
- gc_alloc_update_page_tables(unboxed_p, my_region);
-
- /* Set up a new region. */
- gc_alloc_new_region(32, unboxed_p, my_region);
- }
-
- return((void *)new_obj);
- }
-
- /* shouldn't happen */
- gc_assert(0);
- return((void *) NIL); /* dummy value: return something ... */
+ return gc_alloc_with_region(nbytes,unboxed_p,my_region,0);