Skip to content

Commit

Permalink
Merge pull request #2242 from WalterBright/set_outbuf_size
Browse files Browse the repository at this point in the history
preallocate buffer sizes
  • Loading branch information
andralex committed Jun 21, 2013
2 parents a6eeb7b + ab8f9e7 commit 3fc23ea
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/mtype.c
Expand Up @@ -1492,6 +1492,7 @@ void MODtoBuffer(OutBuffer *buf, unsigned char mod)
char *MODtoChars(unsigned char mod)
{
OutBuffer buf;
buf.reserve(16);
MODtoBuffer(&buf, mod);
buf.writebyte(0);
return buf.extractData();
Expand All @@ -1517,12 +1518,13 @@ void Type::toDecoBuffer(OutBuffer *buf, int flag)
*/

char *Type::toChars()
{ OutBuffer *buf;
{ OutBuffer buf;
buf.reserve(16);
HdrGenState hgs;

buf = new OutBuffer();
toCBuffer(buf, NULL, &hgs);
return buf->toChars();
toCBuffer(&buf, NULL, &hgs);
buf.writebyte(0);
return buf.extractData();
}

void Type::toCBuffer(OutBuffer *buf, Identifier *ident, HdrGenState *hgs)
Expand Down Expand Up @@ -1588,6 +1590,7 @@ void Type::modToBuffer(OutBuffer *buf)
char *Type::modToChars()
{
OutBuffer buf;
buf.reserve(16);
modToBuffer(&buf);
buf.writebyte(0);
return buf.extractData();
Expand All @@ -1613,12 +1616,12 @@ Type *Type::merge()
if (!deco)
{
OutBuffer buf;
StringValue *sv;
buf.reserve(32);

//if (next)
//next = next->merge();
toDecoBuffer(&buf);
sv = stringtable.update((char *)buf.data, buf.offset);
StringValue *sv = stringtable.update((char *)buf.data, buf.offset);
if (sv->ptrvalue)
{ t = (Type *) sv->ptrvalue;
#ifdef DEBUG
Expand Down Expand Up @@ -2164,6 +2167,7 @@ Identifier *Type::getTypeInfoIdent(int internal)
{
// _init_10TypeInfo_%s
OutBuffer buf;
buf.reserve(32);

if (internal)
{ buf.writeByte(mangleChar[ty]);
Expand Down Expand Up @@ -8968,6 +8972,7 @@ void TypeTuple::toDecoBuffer(OutBuffer *buf, int flag)
//printf("TypeTuple::toDecoBuffer() this = %p, %s\n", this, toChars());
Type::toDecoBuffer(buf, flag);
OutBuffer buf2;
buf2.reserve(32);
Parameter::argsToDecoBuffer(&buf2, arguments);
int len = (int)buf2.offset;
buf->printf("%d%.*s", len, len, (char *)buf2.extractData());
Expand Down Expand Up @@ -9250,12 +9255,14 @@ Parameters *Parameter::arraySyntaxCopy(Parameters *args)

char *Parameter::argsTypesToChars(Parameters *args, int varargs)
{
OutBuffer *buf = new OutBuffer();
OutBuffer buf;
buf.reserve(16);

HdrGenState hgs;
argsToCBuffer(buf, &hgs, args, varargs);
argsToCBuffer(&buf, &hgs, args, varargs);

return buf->toChars();
buf.writebyte(0);
return buf.extractData();
}

void Parameter::argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Parameters *arguments, int varargs)
Expand All @@ -9264,6 +9271,7 @@ void Parameter::argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Parameters *argu
if (arguments)
{
OutBuffer argbuf;
argbuf.reserve(32);

size_t dim = Parameter::dim(arguments);
for (size_t i = 0; i < dim; i++)
Expand Down

0 comments on commit 3fc23ea

Please sign in to comment.