Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 96f8b42d219564ebc87ab37838f923dbee8b244a
https://github.com/WebKit/WebKit/commit/96f8b42d219564ebc87ab37838f923dbee8b244a
Author: Yusuke Suzuki <[email protected]>
Date: 2023-10-03 (Tue, 03 Oct 2023)
Changed paths:
M Source/JavaScriptCore/bytecode/CodeBlock.cpp
M Source/JavaScriptCore/bytecode/CodeBlock.h
M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp
M Source/JavaScriptCore/heap/Heap.cpp
M Source/JavaScriptCore/heap/Heap.h
M Source/JavaScriptCore/heap/HeapInlines.h
M Source/JavaScriptCore/runtime/ArrayBuffer.cpp
M Source/JavaScriptCore/runtime/JSArrayBufferView.cpp
M Source/JavaScriptCore/runtime/JSString.cpp
M Source/JavaScriptCore/runtime/JSString.h
M Source/JavaScriptCore/runtime/JSStringInlines.h
M Source/JavaScriptCore/runtime/PropertyTable.cpp
M Source/JavaScriptCore/runtime/PropertyTable.h
M Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp
M Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp
M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
M Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp
M Source/WebCore/html/CanvasBase.cpp
M Source/WebCore/xml/XMLHttpRequest.cpp
Log Message:
-----------
[JSC] Account owner cell's color for extra memory allocation
https://bugs.webkit.org/show_bug.cgi?id=262393
rdar://116251726
Reviewed by Keith Miller.
We report extra memory allocation via reportExtraMemoryAllocated, and it can
invoke GC.
And reportExtraMemoryVisited will account the current total live size of extra
memory through GC scan,
so GC can know the current shape well. However, consider the following case,
1. If the cell is already old region.
2. New reportExtraMemoryAllocated happens for this cell.
3. Eden GC is happening.
In this case, it is already marked. So we will not get the new allocated memory
reporting via reportExtraMemoryVisited.
In this patch, we do reportExtraMemoryVisited from reportExtraMemoryAllocated
when the cell will not report it again.
It is basically the same condition to WriteBarrier's remember-set addition.
* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
* Source/JavaScriptCore/bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
* Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp:
(JSC::UnlinkedCodeBlockGenerator::finalize):
* Source/JavaScriptCore/heap/Heap.cpp:
(JSC::Heap::reportExtraMemoryAllocatedPossiblyFromAlreadyMarkedCell):
(JSC::Heap::reportExtraMemoryAllocatedSlowCase):
(JSC::Heap::deprecatedReportExtraMemorySlowCase):
* Source/JavaScriptCore/heap/Heap.h:
* Source/JavaScriptCore/heap/HeapInlines.h:
(JSC::Heap::reportExtraMemoryAllocated):
* Source/JavaScriptCore/runtime/ArrayBuffer.cpp:
(JSC::ArrayBuffer::grow):
(JSC::ArrayBuffer::resize):
* Source/JavaScriptCore/runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):
* Source/JavaScriptCore/runtime/JSString.cpp:
(JSC::JSRopeString::resolveRopeToAtomString const):
(JSC::JSRopeString::resolveRopeWithFunction const):
* Source/JavaScriptCore/runtime/JSString.h:
(JSC::JSString::finishCreation):
* Source/JavaScriptCore/runtime/JSStringInlines.h:
(JSC::jsAtomString):
* Source/JavaScriptCore/runtime/PropertyTable.cpp:
(JSC::PropertyTable::finishCreation):
* Source/JavaScriptCore/runtime/PropertyTable.h:
(JSC::PropertyTable::rehash):
* Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::add):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::finishCreation):
* Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp:
(JSC::JSWebAssemblyMemory::growSuccessCallback):
(JSC::JSWebAssemblyMemory::finishCreation):
* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp:
(WebCore::JSTestReportExtraMemoryCost::finishCreation):
* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::setImageBuffer const):
* Source/WebCore/xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::changeState):
Canonical link: https://commits.webkit.org/268796@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes