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/webcore/JSFetchHeaders.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/webcore/JSFetchHeaders.cpp')
-rw-r--r-- | src/bun.js/bindings/webcore/JSFetchHeaders.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/bun.js/bindings/webcore/JSFetchHeaders.cpp b/src/bun.js/bindings/webcore/JSFetchHeaders.cpp index 11e9157c1..eec128373 100644 --- a/src/bun.js/bindings/webcore/JSFetchHeaders.cpp +++ b/src/bun.js/bindings/webcore/JSFetchHeaders.cpp @@ -317,6 +317,12 @@ void JSFetchHeaders::finishCreation(VM& vm) // static_assert(!std::is_base_of<ActiveDOMObject, FetchHeaders>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject."); } +void JSFetchHeaders::computeMemoryCost() +{ + m_memoryCost = wrapped().memoryCost(); + globalObject()->vm().heap.reportExtraMemoryAllocated(m_memoryCost); +} + JSObject* JSFetchHeaders::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSFetchHeadersPrototype::create(vm, &globalObject, JSFetchHeadersPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); @@ -645,6 +651,17 @@ bool JSFetchHeadersOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> h return false; } +template<typename Visitor> +void JSFetchHeaders::visitChildrenImpl(JSCell* cell, Visitor& visitor) +{ + auto* thisObject = jsCast<JSFetchHeaders*>(cell); + ASSERT_GC_OBJECT_INHERITS(thisObject, info()); + Base::visitChildren(thisObject, visitor); + visitor.reportExtraMemoryVisited(thisObject->m_memoryCost); +} + +DEFINE_VISIT_CHILDREN(JSFetchHeaders); + void JSFetchHeadersOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsFetchHeaders = static_cast<JSFetchHeaders*>(handle.slot()->asCell()); |