This is a follow up patch to r346956 for the SizeClassAllocator32
allocator.
This patch makes AddressSpaceView a template parameter both to the
ByteMap implementations, AP32 implementations and is used in
SizeClassAllocator32. The actual changes to ByteMap implementations
and SizeClassAllocator32 are very simple. However the patch is large
because it requires changing all the AP32 definitions, and users of
those definitions.
Note that the reason for not making LocalAddressSpaceView the default
template parameter for the various templates is because that would
require all users to add empty braces (i.e. PrimaryAllocator<> instead
of PrimaryAllocator to instantiate). To avoid this we create a
template version with a T suffix (e.g. PrimaryAllocatorT) and then
create an alias that has the previous type name (e.g.
PrimaryAllocator) that instantiates with LocalAddressSpaceView (e.g.
PrimaryAllocatorT<LocalAddressSpaceView>).
In order to check that template is instantiated in the correct a way a
static_assert(...) has been added that checks that the
AddressSpaceView type used by Params::ByteMap::AddressSpaceView matches
the Params::AddressSpaceView. This uses the new sanitizer_type_traits.h
header.
rdar://problem/45284065
Also remove.