dea0eb9a37
Add function for comparing memory regions
...
memory.op.cmp.
2017-08-11 22:15:01 +02:00
7c2abadb90
Add memory.op.copyBackward
...
Added function that can copy memory chunks that can overlap.
2017-08-09 07:01:57 +02:00
2934bb16d7
Rename memory.op.zero into fill
...
- Rename memory.op.zero to fill, which accepts one template parameter: one
byte to fill the memory with.
- Fix bug on x86_64: RAX (register keeping the value to fill with) isn't set if
the pointer was already aligned.
2017-08-06 06:22:28 +02:00
ed92e3993e
Add fast function to zero memory
2017-08-02 06:41:54 +02:00
04864559e2
Respect how Windows passes arrays on x86_64
...
tanya.memory.arch.x86_64:
Linux passes the array length and the data pointer in separate registers.
Windows passes a pointer to the whole array instead (pointer to the
array length practically).
2017-07-31 04:23:21 +02:00
40e43c1465
Add memory.op.copy
2017-07-30 00:08:41 +02:00
5d145f524c
Add fast memory copy function for x86-64
2017-07-29 10:08:44 +02:00
1389b03842
memory: Fix parameter name in the documentation
...
Size parameter for "make" was renamed into n, but the function
description wasn't fixed:
size => n
This commit also removes some redundant variables in "make".
2017-07-25 07:40:14 +02:00
42146c5e8a
Fix #259
...
Get rid of std.experimental.
2017-07-15 22:25:29 +02:00
657f4a60d5
Fix #246
...
Make allocators pure.
* Methods allocating/deallocating memory are pure.
* Allocator.instance is pure (once initialized, it always returns
the same instance).
* defaultAllocator getter property is pure (should be set at the
beginning, and always return the same instance after that).
2017-07-13 16:01:21 +02:00
839c740cb1
Fix mmap flags on linux
2017-07-12 10:04:48 +02:00
2bd612fd19
Make MmapPool allocations pure
2017-07-12 09:30:07 +02:00
fc53779d3f
Fix #245
...
* Remove postcondition for functions calculating alignment
* Put MmapPool invariant into version (none) block
* Check that alignment doesn't overflow
2017-07-11 10:27:24 +02:00
e46e45ad5a
Remove previously deprecated modules
...
* tanya.network.uri
* tanya.network.inet
* tanya.memory.types
2017-06-30 04:19:20 +02:00
47b394d8c3
Add module documentation. Fix #248
2017-06-24 09:08:19 +02:00
ede0107fd7
Fix #247
...
Assigning RefCounted to RefCounted fails at compile time.
https://issues.caraus.io/issues/247
2017-06-24 02:28:17 +02:00
7d5dda1cba
Add Unique.isInitialized and Unique.release
2017-06-24 00:51:16 +02:00
3789853d98
Fix one Mallocator test
...
Test that if the reallocation fails, the pointer doesn't change.
2017-06-15 10:37:50 +02:00
f0d016bcde
Replace in and immutable with const in allocators
2017-06-15 10:27:12 +02:00
70e96c62b3
Make Unique.get and RefCounted.get return inout
...
Also revert the renaming of Scoped to Unique. And rename the whole
module to memory.smartref.
2017-06-14 22:11:57 +02:00
8443f1b385
Make test functions nogc
2017-06-11 09:45:33 +02:00
c9050c1a8e
Rename Scoped to Unique. Improve unit tests
...
Renaming to avoid confusing with Phobos Scoped.
2017-06-11 09:41:18 +02:00
f5c6c5b483
Add Payload template for memory.types
2017-05-13 08:43:49 +02:00
ba2d086fb8
Add memory.types.Scoped
2017-05-13 08:27:51 +02:00
e2bed0cfcb
Replace tabs with spaces in mmappool and buffer
2017-05-12 21:02:24 +02:00
eb360bda38
Add unittest to check RefCounted calles struct destructors
2017-04-16 20:52:24 +02:00
628153e2e8
Make RefCounted work with dynamic arrays
2017-04-16 20:14:04 +02:00
7aa9ac9f4a
Add internal finalize method for finalizing an object without deallocating
2017-04-16 20:13:20 +02:00
402fdfae89
math.mp: Fix initialization issues after resizing
2017-03-23 15:36:17 +01:00
7892c1a930
Remove Init template parameter from memory.resize()
2017-03-22 08:51:00 +01:00
85380ac3fc
Remove makeArray import
2017-03-19 06:54:59 +01:00
b90c56395c
Remove resizeArray alias
2017-03-19 06:10:27 +01:00
d0ada39fa7
Add Mallocator as an alternative allocator
2017-03-18 08:07:01 +01:00
241767df13
Move DefaultAllocator mixin to tanya.memory
...
Since it depends on defaultAllocator property defined in the module.
2017-02-03 13:07:40 +01:00
5fa9bd7b49
Rename Allocator.expand to reallocateInPlace
...
Rename and extend Allocator.expand to reallocateInPlace. The problem is
that realloc for example doesn't guarante that the shrinking of the
memory block won't cause address change. So not only expanding should
have "in place" version, but the shrinking as well.
2017-01-18 09:33:39 +01:00
48205b2fc9
MmapPool: Add invariant
...
Add invariant to ensure blocks are linked correctly since this error
appeared several times.
2017-01-14 21:48:21 +01:00
c567b88d5d
MmapPool: Fix expand block moving.
...
D dereferences the pointer wrong because of missing difference between .
and -> operators, if trying to write a block over another
block. So use memmove first to move the memory and then update the fields
that should be changed (only size).
2017-01-14 20:39:33 +01:00
4c4e65b373
MmapPool: (p[] is null) != (p[].ptr is null)
2017-01-12 19:47:07 +01:00
d6514cb515
Fix Ddoc
2017-01-07 17:53:57 +01:00
fb843e3473
Fix #3
2017-01-07 09:30:42 +01:00
f3d48234c0
MmapPool: add expand and empty methods.
2017-01-06 23:12:19 +01:00
254b881da6
Fix block size calculation
2017-01-06 11:56:54 +01:00
8e0b742748
MmapPool: Merge blocks on deallocation if possible
2017-01-05 14:25:54 +01:00
a35e04c049
Don't throw in the allocator, return null
2017-01-05 07:42:23 +01:00
4271c8583e
Remove static constructor from the MmapPool
2017-01-05 07:35:29 +01:00
48e355b87f
Vector: allow insert multiple items in insertBack
2017-01-02 12:47:41 +01:00
200fff3714
Fix #1
2016-12-22 22:05:48 +01:00
e32af2d09e
Add scalar type template parameter for buffers
2016-12-19 21:24:28 +01:00
f1bc4dc2e2
Add length and opCmp to the Queue
2016-12-19 16:33:16 +01:00
40857e69b7
Add capacity capabilities to the vector
2016-12-18 18:48:25 +01:00