avoid Buffer type which creates a huge __initZ symbol

This commit is contained in:
Martin Nowak 2018-01-14 04:22:31 +01:00
parent c9aaf0cb29
commit 30102f9e3a
2 changed files with 6 additions and 8 deletions

View file

@ -658,10 +658,10 @@ mixin(tracer);
if (isInputStream!InputStream)
{
import std.algorithm.comparison : min;
import vibe.internal.allocator : theAllocator, makeArray, dispose;
static struct Buffer { ubyte[64*1024 - 4*size_t.sizeof] bytes = void; }
scope bufferobj = new Buffer; // FIXME: use heap allocation
auto buffer = bufferobj.bytes[];
scope buffer = () @trusted { return cast(ubyte[]) theAllocator.allocate(64*1024); }();
scope (exit) () @trusted { theAllocator.dispose(buffer); }();
//logTrace("default write %d bytes, empty=%s", nbytes, stream.empty);
if( nbytes == 0 ){

View file

@ -39,12 +39,10 @@ ulong pipe(InputStream, OutputStream)(InputStream source, OutputStream sink, ulo
@blocking @trusted
if (isOutputStream!OutputStream && isInputStream!InputStream)
{
import vibe.internal.allocator : theAllocator, make, dispose;
import vibe.internal.allocator : theAllocator, makeArray, dispose;
static struct Buffer { ubyte[64*1024] bytes = void; }
auto bufferobj = theAllocator.make!Buffer();
scope (exit) theAllocator.dispose(bufferobj);
auto buffer = bufferobj.bytes;
scope buffer = cast(ubyte[]) theAllocator.allocate(64*1024);
scope (exit) theAllocator.dispose(buffer);
//logTrace("default write %d bytes, empty=%s", nbytes, stream.empty);
ulong ret = 0;