ladybird/Libraries/LibJS
Andreas Kling 6492c88ad8 AsmIntGen: Elide redundant FP comparisons in consecutive branch_fp_*
When consecutive branch_fp_* instructions use the same operands (e.g.
branch_fp_unordered followed by branch_fp_equal), the 2nd ucomisd/fcmp
is redundant since flags are still valid from the first comparison.

Track the last FP comparison operands in HandlerState and skip the
comparison instruction when it would be identical. This is common in
the double_equality_compare macro which checks for unordered (NaN)
before testing equality.
2026-03-07 22:18:22 +01:00
..
AsmIntGen AsmIntGen: Elide redundant FP comparisons in consecutive branch_fp_* 2026-03-07 22:18:22 +01:00
Bytecode AsmInt: Eliminate redundant copy in boolean coercion of int32 2026-03-07 22:18:22 +01:00
BytecodeDef LibJS: Extract BytecodeDef into a shared Rust crate 2026-03-07 13:09:59 +01:00
Contrib/Test262 LibJS: Make more use of Value::is and Value::as_if 2026-02-28 10:24:37 -05:00
Heap LibJS: Mark JS::Cell::initialize() as MUST_UPCALL 2026-02-06 13:50:54 +01:00
Runtime LibJS: Convert Object bitfields to a flags byte 2026-03-07 13:09:59 +01:00
Rust LibJS: Extract BytecodeDef into a shared Rust crate 2026-03-07 13:09:59 +01:00
AST.cpp LibJS: Make MemberExpression::to_string_approximation() recursive 2026-02-15 23:21:46 +01:00
AST.h LibJS: Defer regex literal compilation to post-parse step 2026-03-06 13:06:05 +01:00
ASTDump.cpp LibJS: Add dump_to_string() for AST nodes and bytecode executables 2026-02-24 09:39:42 +01:00
BytecodeFactory.h LibJS: Add rust_compile_parsed_module() for pre-parsed modules 2026-03-06 13:06:05 +01:00
CMakeLists.txt LibJS: Add AsmInterpreter, a low-level assembly bytecode interpreter 2026-03-07 13:09:59 +01:00
Console.cpp LibJS: Make more use of Value::is and Value::as_if 2026-02-28 10:24:37 -05:00
Console.h LibJS: Add source locations to console.trace() 2026-02-06 11:58:07 +00:00
CyclicModule.cpp LibJS: Align async module rejection order with fulfillment order 2025-12-17 15:33:26 +01:00
CyclicModule.h LibJS: Sync additional Import Attributes spec changes 2025-10-22 10:58:19 +02:00
Forward.h LibJS: Put RegExp flags in correct order 2026-02-26 13:50:11 +01:00
FunctionParsingInsights.h LibJS: Remove #include <AST.h> from SharedFunctionInstanceData.h 2026-02-11 23:57:41 +01:00
Lexer.cpp LibJS: Always consume exponent in decimal numeric literals 2026-02-24 09:39:42 +01:00
Lexer.h LibJS: Cache an Utf16View for the full code string in SourceCode 2025-11-09 12:14:03 +01:00
LocalVariable.h LibJS: Port the Identifier AST (and related) nodes to UTF-16 2025-08-13 09:56:13 -04:00
Module.cpp LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
Module.h LibGC: Enforce that a Cell type must declare the allocator to use 2026-01-20 12:00:11 +01:00
ModuleLoading.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
Parser.cpp LibJS: Defer regex literal compilation to post-parse step 2026-03-06 13:06:05 +01:00
Parser.h LibJS: Defer regex literal compilation to post-parse step 2026-03-06 13:06:05 +01:00
ParserError.cpp LibJS: Port the JS lexer and parser to UTF-16 2025-08-13 09:56:13 -04:00
ParserError.h LibJS: Port the JS lexer and parser to UTF-16 2025-08-13 09:56:13 -04:00
PipelineComparison.cpp LibJS: Add alternative source-to-bytecode pipeline in Rust 2026-02-24 09:39:42 +01:00
PipelineComparison.h LibJS: Add alternative source-to-bytecode pipeline in Rust 2026-02-24 09:39:42 +01:00
Position.h LibJS: Store full realized SourceRange with each AST node 2025-12-29 13:36:01 +01:00
Print.cpp LibJS: Work around inconsistency in CLDR Temporal data sources 2026-02-14 19:47:29 +01:00
Print.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
RustIntegration.cpp LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
RustIntegration.h LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
ScopeCollector.cpp LibJS: Suppress global identifier optimization for dynamic functions 2026-02-24 09:39:42 +01:00
ScopeCollector.h LibJS: Suppress global identifier optimization for dynamic functions 2026-02-24 09:39:42 +01:00
ScopeRecord.h LibJS: Don't optimize body vars to locals when referenced in defaults 2026-02-19 02:45:37 +01:00
Script.cpp LibJS+LibWeb: Parse classic scripts off the main thread 2026-03-06 13:06:05 +01:00
Script.h LibJS+LibWeb: Parse classic scripts off the main thread 2026-03-06 13:06:05 +01:00
SourceCode.cpp LibJS: Cache ASCII-to-UTF-16 source conversion for Rust compilation 2026-02-25 00:00:52 +01:00
SourceCode.h LibJS: Cache ASCII-to-UTF-16 source conversion for Rust compilation 2026-02-25 00:00:52 +01:00
SourceRange.h AK: Remove unused include from ByteString 2026-02-17 12:38:51 +00:00
SourceTextModule.cpp LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
SourceTextModule.h LibJS+LibWeb: Add C++ compile_parsed_module wrapper 2026-03-06 13:06:05 +01:00
SyntaxHighlighter.cpp LibJS: Have JS::Lexer take a JS::SourceCode as input 2025-11-09 12:14:03 +01:00
SyntaxHighlighter.h LibJS: Enable EXPLICIT_SYMBOL_EXPORT and annotate minimum symbol set 2025-07-22 11:51:29 -04:00
SyntheticModule.cpp LibJS+LibWeb: Use InterpreterStack for all execution context allocation 2026-03-04 18:53:12 +01:00
SyntheticModule.h LibJS+LibWeb+WebContent: Port JS::PropertyKey to UTF-16 2025-08-05 07:07:15 -04:00
Token.cpp LibJS: Parse overflowing integer literals correctly 2026-02-19 02:45:37 +01:00
Token.h LibJS: Store full realized SourceRange with each AST node 2025-12-29 13:36:01 +01:00