Jelle Raaijmakers
fac0f82031
LibWeb: Add CanvasRenderingContext2D context attribute parsing
...
Makes `context.getContextAttributes()` work.
2025-04-29 13:51:23 +02:00
Timothy Flynn
4d70f6ce1c
LibJS: Ensure iterator parameter validation closes underlying iterator
...
This is a normative change in the ECMA-262 spec. See:
9552f29
f2bad00
2025-04-29 07:33:08 -04:00
Timothy Flynn
908349f8fe
LibJS: Add a TRY_OR_CLOSE_ITERATOR macro for IfAbruptCloseIterator
...
Behaves just like TRY_OR_REJECT for promises.
2025-04-29 07:33:08 -04:00
Timothy Flynn
568524f8ba
LibJS: Close sync iterator when async wrapper yields rejection
...
This is a normative change in the ECMA-262 spec. See:
ff129b1
2025-04-29 07:33:08 -04:00
Timothy Flynn
15faaeb2bb
LibJS: Remove [[VarNames]] from GlobalEnvironment
...
This is a normative change in the ECMA-262 spec. See:
ed75310
2025-04-29 07:33:08 -04:00
Timothy Flynn
9c85a16aeb
LibJS: Standardize spec prose for Math.sumPrecise
2025-04-29 07:33:08 -04:00
Timothy Flynn
9674210ef8
LibJS: Update spec steps / links for the Float16Array proposal
...
This proposal has reached stage 4 and been merged into the main ECMA-262
spec. See:
d430ace
2025-04-29 07:33:08 -04:00
Timothy Flynn
adf6024805
LibJS: Update spec steps / links for the RegExp.escape proposal
...
This proposal has reached stage 4 and been merged into the main ECMA-262
spec. See:
e2da759
2025-04-29 07:33:08 -04:00
Timothy Flynn
2401764697
LibJS: Update spec steps / links for the JSON modules proposal
...
This proposal has reached stage 4 and been merged into the main ECMA-262
spec. See:
3feb1ba
2025-04-29 07:33:08 -04:00
Timothy Flynn
3867a192a1
LibJS: Update spec steps / links for the import-assertions proposal
...
This proposal has reached stage 4 and been merged into the main ECMA-262
spec. See:
4e3450e
2025-04-29 07:33:08 -04:00
Tim Ledbetter
c1a3b95176
LibWeb: Set transition property name when firing transition events
2025-04-29 12:23:31 +02:00
Gingeh
aa9f556500
LibWeb: Light dismiss dialogs on click
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-04-28 19:41:38 -06:00
Gingeh
1f1884da54
LibWeb: Light dismiss popovers on click
2025-04-28 19:41:38 -06:00
Andreas Kling
6061da3382
LibJS: Overload Instruction::length() on variable-length instructions
...
This allows the DISPATCH_NEXT() macro to do the math to find the next
instruction boundary point without performing a function call.
2025-04-29 02:09:35 +02:00
Andreas Kling
a2b7e04da3
LibJS: Defer looking up the realm in ordinary_call_evaluate_body()
...
We don't actually need the realm for normal function calls, so we
can avoid looking it up on the EC stack in that case.
2025-04-29 02:09:35 +02:00
Andreas Kling
0f1be720bb
LibJS: Mark exception path [[unlikely]] in ordinary_call_evaluate_body()
2025-04-29 02:09:35 +02:00
Andreas Kling
58925887ce
LibJS: Inline VM::bytecode_interpreter()
2025-04-29 02:09:35 +02:00
Andreas Kling
35275651e3
LibJS: Skip stack overflow check in ESFO::prepare_for_ordinary_call()
...
We already do a stack overflow check when entering run_bytecode(),
which is the first thing that happens when we actually invoke the ESFO
executable.
2025-04-29 02:09:35 +02:00
Andreas Kling
95ba74d934
LibJS: Remove redundant VERIFY in run_executable()
...
Getting the running_execution_context() already verifies that the
execution context stack is non-empty, we don't need to do it separately
here as well.
2025-04-29 02:09:35 +02:00
Andreas Kling
6de1a0aeaf
LibJS: Don't cache a pointer to accumulator register in run_bytecode()
...
The old accumulator register is really only used to pass the end
completion to the caller of run_bytecode() nowadays. As such, we don't
need to cache a pointer to it for fast access. One less thing to do
on run_bytecode() entry.
2025-04-29 02:09:35 +02:00
Andreas Kling
942ce2162d
LibJS: Mark stack overflow path in run_bytecode() [[unlikely]]
2025-04-29 02:09:35 +02:00
Hikmat Jafarli
bd9d489370
LibWeb: Re-evaluate the style block when the type attribute changes
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-04-29 01:01:02 +02:00
Andreas Kling
4d17707b26
LibJS: Store bytecode VM program counter in ExecutionContext
...
This way it's always automatically correct, and we don't have to
manually flush it in push_execution_context().
~7% speedup on the MicroBench/call* tests :^)
2025-04-28 21:12:48 +02:00
Tim Ledbetter
e7ae9c8ebf
LibWeb: Parse all
as keyword in transition
shorthand
...
This ensures that the parsing of the `transition` shorthand property
behaves in the same way as the `transition-property` longhand.4
2025-04-28 20:51:36 +02:00
teaalltr
a3e485e2d0
LibWeb: Add fast_is for span and div
2025-04-28 19:46:05 +01:00
Shannon Booth
23f3ecbe98
AK: Don't iterate through entire String for String::ends_with
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-04-28 10:50:31 -04:00
Andreas Kling
233097c250
LibJS: Inline part of VM::run_queued_promise_jobs()
...
Most of the time there are no queued promise jobs to run after exiting
a stack frame. By moving the check inline, leaving a function call gets
a measurable speedup in the common case.
2025-04-28 10:39:42 -04:00
Andreas Kling
b4554c01db
LibJS: Mark ESFO path for [[Call]] on a class constructor [[unlikely]]
...
This is an exception path that's not supposed to be called normally,
so let's mark it unlikely.
2025-04-28 10:39:42 -04:00
Andreas Kling
6ec4d0f5ba
LibJS: Mark stack overflow exception code path as [[unlikely]]
...
This is supposed to be exceedingly rare, so a great candidate for
[[unlikely]] annotation.
2025-04-28 10:39:42 -04:00
Andreas Kling
580b892b9e
AK: Demote VERIFY in NonnullRefPtr to ASSERT
...
NonnullRefPtr almost always has a non-null pointer internally, that's
what the class is for, after all! The one edge case where it has null
internally is after you move() it. But it's always a bug to use an
NNRP after moving from it, and we have clang-tidy yelling at us if
that ever happens.
Demoting this removes a gazillion overly paranoid null checks.
2025-04-28 10:39:42 -04:00
Andreas Kling
074ca5d5b4
LibJS: Make ESFO::ordinary_call_evaluate_body() return TCO<Value>
...
This matches what the caller wants to return and allows us to simplify
a bunch of logic around returning a value or throwing.
2025-04-28 12:44:49 +02:00
Andreas Kling
670e439e1e
LibJS: Put FLATTEN on ECMAScriptFunctionObject.[[Call]]
...
This makes function calls ~5% faster in micro-benchmarks on my MBP.
Basically free money on the table. Let's take it!
2025-04-28 12:44:49 +02:00
Andreas Kling
d0d87d3aed
LibJS: Demote some overly paranoid VERIFY()s in ESFO [[Call]] flow
2025-04-28 12:44:49 +02:00
Andreas Kling
403ae86fd9
LibJS: Pass VM& to ECMAScriptFunctionObject [[Call]] helpers
...
This avoids fetching the VM from the Cell::private_data() repeatedly.
2025-04-28 12:44:49 +02:00
Shannon Booth
8a3c66d8a6
LibWeb: Make a bunch of CSP classes not realm associated
...
These are not associated with a javascript realm, so to avoid
confusion about which realm these need to be created in, make
all of these objects a GC::Cell, and deal with the fallout.
2025-04-28 12:41:28 +02:00
Tim Ledbetter
04fde1c550
LibWeb: Ensure lang
pseudoclass matches multiple segment subcodes
2025-04-28 11:29:30 +01:00
Tim Ledbetter
74c803c87b
LibWeb: Ensure |=
value selector handles multiple segments correctly
...
Previously, the `|=` would not compare strings containing `-`
characters correctly because it would only compare the element
attribute up to the first `-` character.
2025-04-28 11:29:30 +01:00
devgianlu
1c3d849b8b
LibCrypto: Remove unused big numbers modular functions
...
Remove `Mod`, `ModularInverse`, `ModularPower` and `LCM` as
they are unused.
2025-04-28 12:05:26 +02:00
devgianlu
5f1a30197c
LibCrypto: Remove the concept of invalid big integers
...
This concept is rarely used in codebase and very much error-prone
if you forget to check it.
Instead, make it so that operations that would produce invalid integers
return an error instead.
2025-04-28 12:05:26 +02:00
devgianlu
14387e5411
LibCrypto: Remove unused big numbers random and primality functions
...
Remove `random_number`, `is_probably_prime` and `random_big_prime` as
they are unused.
2025-04-28 12:05:26 +02:00
devgianlu
dd0cced92f
LibJS: Prevent huge memory allocations for bigint left shift
2025-04-28 12:05:26 +02:00
devgianlu
51a2fb3ffc
LibCrypto: Add Fibonacci signed and unsigned bigint benchmarks
2025-04-28 12:05:26 +02:00
devgianlu
ce98d2bbf3
LibCrypto: Check ECPrivateKey
version when parsing
...
The version should always be one for version one. Fail if it isn't.
2025-04-28 12:05:26 +02:00
devgianlu
a019efb24b
LibCrypto+LibJS: Remove {Signed,Unsigned}BigInteger to_base_deprecated
...
Use `to_base` instead.
2025-04-28 12:05:26 +02:00
devgianlu
ac16008d09
LibCrypto: Remove unused create_invalid
method on UnsignedBigInteger
2025-04-28 12:05:26 +02:00
Tim Ledbetter
f854f644a7
LibWeb: Don't crash when interpolating non <number>
scale values
2025-04-28 11:46:34 +02:00
stelar7
edf64b801c
LibWeb/IDB: Add store to the current transaction when created
2025-04-28 11:31:31 +02:00
stelar7
47d6b568fd
LibWeb/IDB: Dont keep trailing separator when splitting key paths
2025-04-28 11:31:31 +02:00
stelar7
577f799240
LibWeb/IDB: Fix a bug where the KeyGenerator was not incremented
2025-04-28 11:31:31 +02:00
stelar7
facfcd87c2
LibWeb/IDB: Introduce an Invalid KeyType
...
This cleans up the code around failure/invalid/exception a bit
2025-04-28 11:31:31 +02:00