ladybird/Tests/LibJS/Runtime
Andreas Kling 73812e12d2 LibJS: Fast path Array.prototype.indexOf on packed arrays
Skip the generic HasProperty and Get loop when indexOf operates on a
simple packed array. In that case every index below length is an own
data property, so a direct scan of the packed indexed property storage
gives the same strict-equality result without the per-element property
lookup
ceremony.

Only use the fast path when the current packed storage size still
matches the length captured before fromIndex coercion, since that
coercion can run user code and mutate the receiver. Add coverage for
length and storage mutations during fromIndex coercion.
2026-04-27 08:39:37 +02:00
..
3rdparty LibRegex/Rust: Add the ECMA-262 regex engine 2026-03-27 17:32:19 +01:00
builtins LibJS: Fast path Array.prototype.indexOf on packed arrays 2026-04-27 08:39:37 +02:00
classes LibJS: Handle empty UTF-16 strings in Rust FFI 2026-03-31 22:33:36 +02:00
functions LibJS: Separate raw and capturing native functions 2026-04-15 15:57:48 +02:00
iterators LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loops LibJS: Cache stable for-in iteration at bytecode sites 2026-04-10 15:12:53 +02:00
math LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
modules LibJS: Cache stable for-in iteration at bytecode sites 2026-04-10 15:12:53 +02:00
operators LibJS: Produce negative zero from i32 multiplication fast path 2026-02-08 20:59:20 +01:00
regress LibJS: Check TDZ state in asm environment calls 2026-04-20 11:23:34 +02:00
syntax LibRegex: Reject negated /v classes that contain strings 2026-03-31 15:59:04 +02:00
add-values-to-primitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-callee.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-shorthand-property.js LibJS: Materialize arguments object for shorthand { arguments } 2026-04-27 08:04:11 +02:00
asm-call-this-binding.js LibJS: Call RawNativeFunction directly from asm Call 2026-04-15 15:57:48 +02:00
assignment-target-type.js LibJS: Fix AssignmentTargetType for NewExpression and strict mode 2026-03-13 13:08:22 -05:00
async-this-value.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
automatic-semicolon-insertion.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
bitwise-double-coercion.js LibJS: Re-box double arithmetic results as Int32 when possible 2026-03-19 09:42:04 +01:00
break-continue-syntax-errors.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
comments-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
computed-property-key-evaluation-order.js LibJS: Fix evaluation order of computed property keys in object literals 2026-02-09 01:23:48 +01:00
computed-property-sideeffects.js LibJS: Fix evaluation order of computed property keys in object literals 2026-02-09 01:23:48 +01:00
computed-property-throws.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
const-declaration-missing-initializer.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
const-reassignment.js LibJS: Do not allow reassignment to local const variable 2026-02-09 21:06:46 +01:00
copy-this-to-local.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@hasInstance.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@toPrimitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@toStringTag.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
debugger-statement.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
destructured-parameter-locals.js Tests/LibJS: Add tests for destructured parameter locals 2026-02-10 02:05:20 +01:00
destructuring-assignment-with-expression-defaults.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
dictionary-delete-caching.js LibJS: Keep dictionary-mode shapes cacheable after property deletion 2026-01-27 10:58:39 +01:00
dictionary-shape-stress.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
duplicated-variable-declarations.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
empty-statements.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-aliasing.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-basic.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
eval-global-identifier-optimization.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-redeclaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
evaluation-order.js LibJS: Copy object of member expression to preserve evaluation order 2026-03-22 15:40:38 +01:00
exception-in-catch-block.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exception-ReferenceError.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exponentiation-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
for-loop-per-iteration-env-bug.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
for-of-syntax-errors.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
function-constructor.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
gc-deeply-nested-object-graph.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
global-declaration-instantiation-error-skips-evaluation.js LibJS: Check result of GlobalDeclarationInstantiation before evaluating 2026-02-19 12:02:50 +01:00
global-object-getter-setter-this-value.js LibJS: Pass the global object as receiver in GetGlobal 2026-02-08 20:59:20 +01:00
global-var-let-const.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
ic-non-extensible-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
if-statement-function-declaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
indexed-access-prototype-indirection.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
indexed-access-stress.js LibJS: Fast-path safe writes into holey array holes 2026-04-09 20:06:42 +02:00
indexed-access-string-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
inline-cache-edge-cases.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
inline-cache-stress.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
int32-mul-strict-equals.js AsmIntGen: Fix aarch64 mul32_overflow leaving garbage in upper 32 bits 2026-03-08 23:04:55 +01:00
invalid-lhs-in-assignment.js LibJS: Fix AssignmentTargetType for NewExpression and strict mode 2026-03-13 13:08:22 -05:00
labels.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
let-scoping.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
new-expression.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
non-writable-assignment.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
null-or-undefined-access.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
numeric-literals-basic.js LibJS: Always consume exponent in decimal numeric literals 2026-02-24 09:39:42 +01:00
object-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-__proto__.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-computed-property.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-numeric-property.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-getter-setter-shorthand.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-literal-caching.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-literal-numeric-keys.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-method-shorthand.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-rest-destructuring-assignment.js LibJS: Fix object rest destructuring with MemberExpression target 2026-02-09 01:23:48 +01:00
object-spread.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
ordinary-to-primitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
panic-reachability-audit.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
parseInt.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-declaration-in-single-statement-context.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-invalid-destructuring-assignment-target.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-line-terminators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-unary-associativity.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
permanently-screwed-by-eval.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
redefine-next-in-builtin-iterators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
redefine-prototype-of-builtin-iterators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
regexp-bare-astral-literal-lastindex.js LibRegex: Respect V8 astral literal lastIndex behavior 2026-03-27 17:32:19 +01:00
regexp-bounded-group-quantifier-regressions.js LibRegex: Avoid hitting backtrack limit for bounded grouped repetitions 2026-04-11 18:43:48 +02:00
regexp-greedy-builtin-classes-ignore-case.js LibRegex: Fix greedy \w and \W ignore-case handling 2026-03-27 17:32:19 +01:00
regexp-lookbehind-greedy-backtracking.js LibRegex: Fix backward greedy lookbehind backtracking 2026-03-27 17:32:19 +01:00
regexp-sticky-anchored-exec.js LibRegex: Anchor sticky matches at lastIndex 2026-03-29 16:06:57 +02:00
regexp-unicode-zero-width-surrogate-positions.js LibRegex: Keep empty-match surrogate candidates 2026-03-27 17:32:19 +01:00
return.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
runtime-error-call-stack-size.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
scope-local-eval-deopt.js LibJS: Detect direct eval calls in parse_call_expression() 2026-02-07 18:05:41 +01:00
statement-with-many-labels.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
strict-mode-errors.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-concatenation.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-escapes.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
string-rope-substrings.js LibJS: Use Substring for string slices 2026-04-11 00:35:36 +02:00
string-spread.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
super-computed-property-key.js LibJS: Remove outdated FIXME comments about ToPropertyKey ordering 2026-02-09 01:23:48 +01:00
switch-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
switch-break.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
switch-default-before-case.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
tagged-template-literal-with-this.js LibJS: Preserve this binding for tagged with identifiers 2026-02-09 01:23:48 +01:00
tagged-template-literals.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
template-literals.js LibJS: Reduce number of template literal op codes 2026-01-31 18:24:02 +01:00
test-common-tests.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
test-common.js LibWasm: Take call arguments and results on registers if possible 2026-02-02 14:11:49 +01:00
this-value-strict.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
this-value.js LibJS: Remove stale FIXME about sloppy-mode this in CallExpression 2026-02-08 20:59:20 +01:00
throw-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
to-number-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
to-number-exception.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally-nested.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally-return.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-finally-break.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-finally-continue.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-return-finally.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
unicode-identifier-continue.js LibJS+LibUnicode: Use LibUnicode as appropriate for lexing JavaScript 2026-04-19 10:39:26 +02:00
unicode-identifier-escape.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
update-expression-on-member-expression.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
update-expressions-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
using-declaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
using-for-loops.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-many-declarators.js LibJS: Don't duplicate var-scoped declarations per bound identifier 2026-02-17 20:19:08 +01:00
var-multiple-declarator.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-scoping.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-shadow-in-default-param.js LibJS: Propagate captures from nested functions in default expressions 2026-02-19 02:45:37 +01:00
variable-undefined.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
with-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00