ladybird/Libraries/LibJS/Tests/builtins
Aliaksandr Kalenik bd6750aaa5 LibJS: Skip prototype chain lookup in internal_set() for arrays
...when Array.prototype and Object.prototype are intact.

If `internal_set()` is called on an array exotic object with a numeric
PropertyKey, and:
- the prototype chain has not been modified (i.e., there are no getters
  or setters for indexed properties), and
- the array is not the target of a Proxy object,

then we can directly store the value in the receiver's indexed
properties, without checking whether it already exists somewhere in the
prototype chain.

1.7x improvement on the following program:
```js
function f() {
    let a = [];
    let i = 0;
    while (i < 10_000_000) {
        a.push(i);
        i++;
    }
}

f();
```
2025-05-23 14:51:32 +02:00
..
AggregateError Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Array LibJS: Skip prototype chain lookup in internal_set() for arrays 2025-05-23 14:51:32 +02:00
ArrayBuffer Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AsyncDisposableStack LibJS: Implement the AsyncDisposableStack interface 2025-01-17 20:46:32 +01:00
AsyncGenerator Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Atomics LibJS: Avoid internal assertion accessing detached TA internal slots 2024-12-13 07:09:39 -08:00
BigInt LibJS+LibCrypto: Use a bitwise approach for BigInt's as*IntN methods 2025-03-20 09:44:12 +01:00
Boolean Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
DataView Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Date LibJS: Parse dates like "Jan 15, 2025" 2025-02-14 06:27:37 -05:00
DisposableStack Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Error Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
FinalizationRegistry Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Function LibJS: Use an Intl prototype for a Function.prototype.toString test 2024-11-18 17:46:41 -05:00
functions LibJS: Fix parseFloat(-0) returning -0 instead of +0 2025-03-02 11:30:34 -05:00
Infinity Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Intl LibJS: Ensure relevant extension keys are included in ICU locale data 2025-03-18 11:47:23 -04:00
Iterator LibJS: Ensure iterator parameter validation closes underlying iterator 2025-04-29 07:33:08 -04:00
JSON LibJS: Implement rawJSON and isRawJSON functions 2025-04-24 09:33:49 -04:00
Map Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Math LibJS: Implement Math.sumPrecise 2025-03-03 21:46:22 +01:00
NaN Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Number Meta+LibUnicode+LibJS: Upgrade to ICU 76.1 2025-01-18 17:56:40 -05:00
Object LibJS: Prevent extensions of TypedArray exotic objects 2024-11-30 11:18:26 +01:00
Promise Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Proxy Revert "LibJS: Reduce number of proxy traps called during for..in… 2025-03-21 11:44:21 -05:00
Reflect Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
RegExp LibRegex: Fix crash when parse result exceeds max cache size 2025-04-04 16:10:25 +02:00
Set Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ShadowRealm LibJS: Perform TLA async function construction in the module context 2024-11-15 18:52:22 +01:00
SharedArrayBuffer Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
String LibJS: Implement 'less than' for a String over code units 2025-05-17 08:00:59 -04:00
SuppressedError Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Symbol Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Temporal LibJS: Use Intl.DurationFormat for Temporal.Duration.p.toLocaleString 2025-03-01 14:49:20 +01:00
TypedArray AK+LibJS: Use simdutf for all base64 operations 2025-05-03 11:21:10 -04:00
WeakMap Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
WeakRef Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
WeakSet Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00