diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-12-09 18:59:38 +0100 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-12-11 17:17:58 +0100 |
commit | 6d799f0aed18be25a5c908499b6411ab6d06b78c (patch) | |
tree | 3e6a91048c7fe3e78bae9f75b24eb37c5504681b /libphobos/src/std/experimental | |
parent | cc7f509d3c0b3ab63891cf7ca2def0fdfb3642c4 (diff) | |
download | gcc-6d799f0aed18be25a5c908499b6411ab6d06b78c.zip gcc-6d799f0aed18be25a5c908499b6411ab6d06b78c.tar.gz gcc-6d799f0aed18be25a5c908499b6411ab6d06b78c.tar.bz2 |
d: Merge upstream dmd, druntime c8ae4adb2e, phobos 792c8b7c1.
D front-end changes:
- Import dmd v2.101.0.
- Deprecate the ability to call `__traits(getAttributes)' on
overload sets.
- Deprecate non-empty `for' statement increment clause with no
effect.
- Array literals assigned to `scope' array variables can now be
allocated on the stack.
D runtime changes:
- Import druntime v2.101.0.
Phobos changes:
- Import phobos v2.101.0.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd c8ae4adb2e.
* typeinfo.cc (check_typeinfo_type): Update for new front-end
interface.
(TypeInfoVisitor::visit (TypeInfoStructDeclaration *)): Remove warning
that toHash() must be declared 'nothrow @safe`.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime c8ae4adb2e.
* src/MERGE: Merge upstream phobos 792c8b7c1.
Diffstat (limited to 'libphobos/src/std/experimental')
-rw-r--r-- | libphobos/src/std/experimental/allocator/building_blocks/package.d | 12 | ||||
-rw-r--r-- | libphobos/src/std/experimental/allocator/package.d | 17 |
2 files changed, 23 insertions, 6 deletions
diff --git a/libphobos/src/std/experimental/allocator/building_blocks/package.d b/libphobos/src/std/experimental/allocator/building_blocks/package.d index 962ed91..6bc527d 100644 --- a/libphobos/src/std/experimental/allocator/building_blocks/package.d +++ b/libphobos/src/std/experimental/allocator/building_blocks/package.d @@ -147,7 +147,11 @@ Sizes through 3584 bytes are handled via freelists of staggered sizes. Sizes from 3585 bytes through 4072 KB are handled by a `BitmappedBlock` with a block size of 4 KB. Sizes above that are passed direct to the `GCAllocator`. ----- +$(RUNNABLE_EXAMPLE + ---- + import std.experimental.allocator; + import std.algorithm.comparison : max; + alias FList = FreeList!(GCAllocator, 0, unbounded); alias A = Segregator!( 8, FreeList!(GCAllocator, 0, 8), @@ -157,8 +161,7 @@ block size of 4 KB. Sizes above that are passed direct to the `GCAllocator`. 1024, Bucketizer!(FList, 513, 1024, 128), 2048, Bucketizer!(FList, 1025, 2048, 256), 3584, Bucketizer!(FList, 2049, 3584, 512), - 4072 * 1024, AllocatorList!( - () => BitmappedBlock!(GCAllocator, 4096)(4072 * 1024)), + 4072 * 1024, AllocatorList!(n => Region!GCAllocator(max(n, 1024 * 4096))), GCAllocator ); A tuMalloc; @@ -169,7 +172,8 @@ block size of 4 KB. Sizes above that are passed direct to the `GCAllocator`. assert(tuMalloc.expand(c, 14)); tuMalloc.deallocate(b); tuMalloc.deallocate(c); ----- + ---- +) $(H2 Allocating memory for sharing across threads) diff --git a/libphobos/src/std/experimental/allocator/package.d b/libphobos/src/std/experimental/allocator/package.d index 2177926..7dbc47a 100644 --- a/libphobos/src/std/experimental/allocator/package.d +++ b/libphobos/src/std/experimental/allocator/package.d @@ -27,13 +27,22 @@ $(TR $(TD Global) $(TD $(LREF theAllocator) )) $(TR $(TD Class interface) $(TD - $(LREF allocatorObject) $(LREF CAllocatorImpl) + $(LREF CSharedAllocatorImpl) $(LREF IAllocator) + $(LREF ISharedAllocator) +)) +$(TR $(TD Structs) $(TD + $(LREF allocatorObject) + $(LREF RCIAllocator) + $(LREF RCISharedAllocator) + $(LREF sharedAllocatorObject) + $(LREF ThreadLocal) )) ) Synopsis: +$(RUNNABLE_EXAMPLE --- // Allocate an int, initialize it with 42 int* p = theAllocator.make!int(42); @@ -46,7 +55,10 @@ p = processAllocator.make!int(100); assert(*p == 100); // Destroy and deallocate processAllocator.dispose(p); - +--- +) +$(RUNNABLE_EXAMPLE +--- // Create an array of 50 doubles initialized to -1.0 double[] arr = theAllocator.makeArray!double(50, -1.0); // Append two zeros to it @@ -56,6 +68,7 @@ theAllocator.shrinkArray(arr, 2); // Destroy and deallocate theAllocator.dispose(arr); --- +) $(H2 Layered Structure) |