mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-16 21:20:18 +00:00
Some checks are pending
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
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 |