diff --git a/std/experimental/allocator/building_blocks/affix_allocator.d b/std/experimental/allocator/building_blocks/affix_allocator.d index ca03b682712..1d27796bd0b 100644 --- a/std/experimental/allocator/building_blocks/affix_allocator.d +++ b/std/experimental/allocator/building_blocks/affix_allocator.d @@ -175,7 +175,7 @@ struct AffixAllocator(Allocator, Prefix, Suffix = void) } static if (hasMember!(Allocator, "resolveInternalPointer")) - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { void[] p1; Ternary r = parent.resolveInternalPointer(p, p1); diff --git a/std/experimental/allocator/building_blocks/bitmapped_block.d b/std/experimental/allocator/building_blocks/bitmapped_block.d index b05b1fe1d87..b0aa3b2b925 100644 --- a/std/experimental/allocator/building_blocks/bitmapped_block.d +++ b/std/experimental/allocator/building_blocks/bitmapped_block.d @@ -996,7 +996,7 @@ struct BitmappedBlockWithInternalPointers( } /// Ditto - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { if (p < _heap._payload.ptr || p >= _heap._payload.ptr + _heap._payload.length) diff --git a/std/experimental/allocator/building_blocks/bucketizer.d b/std/experimental/allocator/building_blocks/bucketizer.d index 5aa1e717aa6..e63c9274c59 100644 --- a/std/experimental/allocator/building_blocks/bucketizer.d +++ b/std/experimental/allocator/building_blocks/bucketizer.d @@ -206,7 +206,7 @@ struct Bucketizer(Allocator, size_t min, size_t max, size_t step) resolveInternalPointer), and tries it for each bucket in turn. */ static if (hasMember!(Allocator, "resolveInternalPointer")) - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { foreach (ref a; buckets) { diff --git a/std/experimental/allocator/building_blocks/fallback_allocator.d b/std/experimental/allocator/building_blocks/fallback_allocator.d index 59e9b83e198..f3f099dfaf0 100644 --- a/std/experimental/allocator/building_blocks/fallback_allocator.d +++ b/std/experimental/allocator/building_blocks/fallback_allocator.d @@ -207,7 +207,7 @@ struct FallbackAllocator(Primary, Fallback) */ static if (hasMember!(Primary, "resolveInternalPointer") && hasMember!(Fallback, "resolveInternalPointer")) - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { Ternary r = primary.resolveInternalPointer(p, result); return r == Ternary.no ? fallback.resolveInternalPointer(p, result) : r; diff --git a/std/experimental/allocator/building_blocks/null_allocator.d b/std/experimental/allocator/building_blocks/null_allocator.d index cea4e1998d6..68bab708a87 100644 --- a/std/experimental/allocator/building_blocks/null_allocator.d +++ b/std/experimental/allocator/building_blocks/null_allocator.d @@ -43,7 +43,7 @@ struct NullAllocator /** Returns $(D Ternary.no). */ - Ternary resolveInternalPointer(void*, ref void[]) shared const + Ternary resolveInternalPointer(const void*, ref void[]) shared const { return Ternary.no; } /** No-op. diff --git a/std/experimental/allocator/building_blocks/segregator.d b/std/experimental/allocator/building_blocks/segregator.d index 4e9f563ffad..2d8ecffb2c8 100644 --- a/std/experimental/allocator/building_blocks/segregator.d +++ b/std/experimental/allocator/building_blocks/segregator.d @@ -247,7 +247,7 @@ struct Segregator(size_t threshold, SmallAllocator, LargeAllocator) static if (hasMember!(SmallAllocator, "resolveInternalPointer") && hasMember!(LargeAllocator, "resolveInternalPointer")) - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { Ternary r = _small.resolveInternalPointer(p, result); return r == Ternary.no ? _large.resolveInternalPointer(p, result) : r; diff --git a/std/experimental/allocator/gc_allocator.d b/std/experimental/allocator/gc_allocator.d index 842d6a86943..f3673e5549f 100644 --- a/std/experimental/allocator/gc_allocator.d +++ b/std/experimental/allocator/gc_allocator.d @@ -70,9 +70,10 @@ struct GCAllocator } /// Ditto - pure nothrow Ternary resolveInternalPointer(void* p, ref void[] result) shared + pure nothrow + Ternary resolveInternalPointer(const void* p, ref void[] result) shared { - auto r = GC.addrOf(p); + auto r = GC.addrOf(cast(void*)p); if (!r) return Ternary.no; result = r[0 .. GC.sizeOf(r)]; return Ternary.yes; diff --git a/std/experimental/allocator/package.d b/std/experimental/allocator/package.d index 4cb0eed234d..fbeaf76b4fa 100644 --- a/std/experimental/allocator/package.d +++ b/std/experimental/allocator/package.d @@ -339,7 +339,7 @@ interface IAllocator Resolves an internal pointer to the full block allocated. Implementations that don't support this primitive should always return `Ternary.unknown`. */ - Ternary resolveInternalPointer(void* p, ref void[] result); + Ternary resolveInternalPointer(const void* p, ref void[] result); /** Deallocates a memory block. Implementations that don't support this @@ -1953,7 +1953,7 @@ class CAllocatorImpl(Allocator, Flag!"indirect" indirect = No.indirect) } // Undocumented for now - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { static if (hasMember!(Allocator, "resolveInternalPointer")) { @@ -2412,7 +2412,7 @@ private struct InternalPointersTree(Allocator) /** Returns the block inside which $(D p) resides, or $(D null) if the pointer does not belong. */ - Ternary resolveInternalPointer(void* p, ref void[] result) + Ternary resolveInternalPointer(const void* p, ref void[] result) { // Must define a custom find Tree.Node* find()