zlib: pass object size hint to V8
Inform V8 that the zlib context object is tied to a large off-heap buffer. This makes the GC run more often (in theory) and improves the accuracy of --trace_external_memory.
This commit is contained in:
parent
570e4be932
commit
a93424da4a
@ -74,9 +74,11 @@ class ZCtx : public ObjectWrap {
|
|||||||
|
|
||||||
if (mode_ == DEFLATE || mode_ == GZIP || mode_ == DEFLATERAW) {
|
if (mode_ == DEFLATE || mode_ == GZIP || mode_ == DEFLATERAW) {
|
||||||
(void)deflateEnd(&strm_);
|
(void)deflateEnd(&strm_);
|
||||||
|
V8::AdjustAmountOfExternalAllocatedMemory(-kDeflateContextSize);
|
||||||
} else if (mode_ == INFLATE || mode_ == GUNZIP || mode_ == INFLATERAW ||
|
} else if (mode_ == INFLATE || mode_ == GUNZIP || mode_ == INFLATERAW ||
|
||||||
mode_ == UNZIP) {
|
mode_ == UNZIP) {
|
||||||
(void)inflateEnd(&strm_);
|
(void)inflateEnd(&strm_);
|
||||||
|
V8::AdjustAmountOfExternalAllocatedMemory(-kInflateContextSize);
|
||||||
}
|
}
|
||||||
mode_ = NONE;
|
mode_ = NONE;
|
||||||
|
|
||||||
@ -366,12 +368,14 @@ class ZCtx : public ObjectWrap {
|
|||||||
ctx->windowBits_,
|
ctx->windowBits_,
|
||||||
ctx->memLevel_,
|
ctx->memLevel_,
|
||||||
ctx->strategy_);
|
ctx->strategy_);
|
||||||
|
V8::AdjustAmountOfExternalAllocatedMemory(kDeflateContextSize);
|
||||||
break;
|
break;
|
||||||
case INFLATE:
|
case INFLATE:
|
||||||
case GUNZIP:
|
case GUNZIP:
|
||||||
case INFLATERAW:
|
case INFLATERAW:
|
||||||
case UNZIP:
|
case UNZIP:
|
||||||
ctx->err_ = inflateInit2(&ctx->strm_, ctx->windowBits_);
|
ctx->err_ = inflateInit2(&ctx->strm_, ctx->windowBits_);
|
||||||
|
V8::AdjustAmountOfExternalAllocatedMemory(kInflateContextSize);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(0 && "wtf?");
|
assert(0 && "wtf?");
|
||||||
@ -432,6 +436,8 @@ class ZCtx : public ObjectWrap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static const int kDeflateContextSize = 16384; // approximate
|
||||||
|
static const int kInflateContextSize = 10240; // approximate
|
||||||
|
|
||||||
bool init_done_;
|
bool init_done_;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user