diff options
author | 2023-08-24 19:39:00 -0700 | |
---|---|---|
committer | 2023-08-24 19:39:00 -0700 | |
commit | 8a48e8bb0b7de985a96b3a4cae389e3294a2c0e3 (patch) | |
tree | 20d8dc382512313061c20296d1e33e8d18fbbde3 /src/bun.js/bindings/bindings.cpp | |
parent | 097ae4e982a9cbcae6b4886c4efb82d452629b99 (diff) | |
download | bun-8a48e8bb0b7de985a96b3a4cae389e3294a2c0e3.tar.gz bun-8a48e8bb0b7de985a96b3a4cae389e3294a2c0e3.tar.zst bun-8a48e8bb0b7de985a96b3a4cae389e3294a2c0e3.zip |
Report extra memory more (#4289)
* Report memory allocated in fetch
* Memory size reporting to `Headers`
* Fixup memory reporting allocator
* Make these tests do more
* cleanup some of this
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js/bindings/bindings.cpp')
-rw-r--r-- | src/bun.js/bindings/bindings.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index badfd3437..674957218 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -1087,8 +1087,16 @@ WebCore__FetchHeaders* WebCore__FetchHeaders__createFromJS(JSC__JSGlobalObject* JSC__JSValue WebCore__FetchHeaders__toJS(WebCore__FetchHeaders* headers, JSC__JSGlobalObject* lexicalGlobalObject) { Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(lexicalGlobalObject); + bool needsMemoryCost = headers->hasOneRef(); - return JSC::JSValue::encode(WebCore::toJS(lexicalGlobalObject, globalObject, headers)); + JSValue value = WebCore::toJS(lexicalGlobalObject, globalObject, headers); + + if (needsMemoryCost) { + JSFetchHeaders* jsHeaders = jsCast<JSFetchHeaders*>(value); + jsHeaders->computeMemoryCost(); + } + + return JSC::JSValue::encode(value); } JSC__JSValue WebCore__FetchHeaders__clone(WebCore__FetchHeaders* headers, JSC__JSGlobalObject* arg1) { @@ -1263,7 +1271,11 @@ JSC__JSValue WebCore__FetchHeaders__createValue(JSC__JSGlobalObject* arg0, Strin WebCore::propagateException(*arg0, throwScope, headers->fill(WebCore::FetchHeaders::Init(WTFMove(pairs)))); pairs.releaseBuffer(); - return JSC::JSValue::encode(WebCore::toJSNewlyCreated(arg0, reinterpret_cast<Zig::GlobalObject*>(arg0), WTFMove(headers))); + JSValue value = WebCore::toJSNewlyCreated(arg0, reinterpret_cast<Zig::GlobalObject*>(arg0), WTFMove(headers)); + + JSFetchHeaders* fetchHeaders = jsCast<JSFetchHeaders*>(value); + fetchHeaders->computeMemoryCost(); + return JSC::JSValue::encode(value); } void WebCore__FetchHeaders__get_(WebCore__FetchHeaders* headers, const ZigString* arg1, ZigString* arg2, JSC__JSGlobalObject* global) { @@ -3968,6 +3980,11 @@ void JSC__VM__deleteAllCode(JSC__VM* arg1, JSC__JSGlobalObject* globalObject) arg1->heap.reportAbandonedObjectGraph(); } +void JSC__VM__reportExtraMemory(JSC__VM* arg0, size_t arg1) +{ + arg0->heap.deprecatedReportExtraMemory(arg1); +} + void JSC__VM__deinit(JSC__VM* arg1, JSC__JSGlobalObject* globalObject) {} void JSC__VM__drainMicrotasks(JSC__VM* arg0) { arg0->drainMicrotasks(); } |