mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-19 07:33:20 +00:00
![]() We already had IC support in PutById for the following cases: - Changing an existing own property - Calling a setter located in the prototype chain This was enough to speed up code where structurally identical objects (same shape) are processed in a loop: ```js const arr = [{ a: 1 }, { a: 2 }, { a: 3 }]; for (let obj of arr) { obj.a += 1; } ``` However, creating structurally identical objects in a loop was still slow: ```js for (let i = 0; i < 10_000_000; i++) { const o = {}; o.a = 1; o.b = 2; o.c = 3; } ``` This change addresses that by adding a new IC type that caches both the source and target shapes, allowing property additions to be fast-pathed by directly jumping to the shape that already includes the new property. |
||
---|---|---|
.. | ||
AbstractOperations.cpp | ||
AbstractOperations.h | ||
AsyncIterator.cpp | ||
AsyncIterator.h | ||
Buffers.cpp | ||
Buffers.h | ||
CachedAttribute.h | ||
CallbackType.cpp | ||
CallbackType.h | ||
DOMException.cpp | ||
DOMException.h | ||
DOMException.idl | ||
ExceptionOr.h | ||
Function.idl | ||
ObservableArray.cpp | ||
ObservableArray.h | ||
OverloadResolution.cpp | ||
OverloadResolution.h | ||
Promise.cpp | ||
Promise.h | ||
Tracing.cpp | ||
Tracing.h | ||
Types.h |