From 8a48e8bb0b7de985a96b3a4cae389e3294a2c0e3 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 24 Aug 2023 19:39:00 -0700 Subject: 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> --- src/bun.js/bindings/webcore/JSFetchHeaders.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/bun.js/bindings/webcore/JSFetchHeaders.cpp') 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::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 h return false; } +template +void JSFetchHeaders::visitChildrenImpl(JSCell* cell, Visitor& visitor) +{ + auto* thisObject = jsCast(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 handle, void* context) { auto* jsFetchHeaders = static_cast(handle.slot()->asCell()); -- cgit v1.2.3