Two step allocator for 64-bit systems

Authored by gcampax.

Description

Two step allocator for 64-bit systems

Summary:
The current OS memory allocator conflates the concepts of allocating
address space and allocating memory, which makes the HEAP_ALLOCED()
implementation excessively complicated (as the only thing it cares
about is address space layout) and slow. Instead, what we want
is to allocate a single insanely large contiguous block of address
space (to make HEAP_ALLOCED() checks fast), and then commit subportions
of that in 1MB blocks as we did before.
This is currently behind a flag, USE_LARGE_ADDRESS_SPACE, that is only enabled for
certain OSes.

Test Plan: validate

Reviewers: simonmar, ezyang, austin

Subscribers: thomie, carter

Differential Revision: https://phabricator.haskell.org/D524

GHC Trac Issues: Trac #9706

Details

Committed
simonmarJul 22 2015, 11:50 AM
Differential Revision
D524: Two step allocator for 64-bit systems
Parents
rGHCb949c96b4960: Eliminate zero_static_objects_list()
Branches
Unknown
Tags
Unknown