
#15348: Enable two-step allocator on FreeBSD -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: feature request | Status: patch Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.3 Resolution: | Keywords: Operating System: FreeBSD | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D4939 Wiki Page: | -------------------------------------+------------------------------------- Comment (by vdukhovni): Specifically, one can reserve a contiguous address range with: {{{ heap = mmap(NULL, heapmax, PROT_NONE, MAP_GUARD, -1, 0); }}} and then incrementally populate segments of that range: {{{ mmap(base, len, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1, 0); }}} With `base == heap` for the initial block of pages, and then to the first address not yet mapped for subsequent increments. What we don't get is protection from overcommit OOM, unless the system is configured to disallow overcommit. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15348#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler