1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 11:34:59 +00:00
serenity/Userland/Libraries/LibJS/Bytecode
Andreas Kling 17c1f742a9 LibJS/Bytecode: Increase coverage of left/shift expression fast paths
As long as the inputs are Int32, we can convert them to UInt32 in a
spec-compliant way with a simple static_cast<u32>.

This allows calculations like `-3 >>> 2` to take the fast path as well,
which is extremely valuable for stuff like crypto code.

While we're doing this, also remove the fast paths from the generic
shift functions in Value.cpp, since we only end up there if we *didn't*
take the same fast path in the interpreter.
2024-03-04 20:54:51 +01:00
..
Pass LibJS/Bytecode: Fuse [Not, JumpIf] instructions into JumpIfNot 2024-03-04 20:54:51 +01:00
ASTCodegen.cpp LibJS/Bytecode: Bring back the bytecode optimization pipeline 2024-03-04 20:54:51 +01:00
BasicBlock.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
BasicBlock.h LibJS/Bytecode: Add peephole optimization pass and fuse compare+jump 2024-03-04 20:54:51 +01:00
Builtins.cpp LibJS: Introduce Builtins 2023-11-17 19:06:25 +01:00
Builtins.h LibJS/JIT: Add builtin for Math.exp() 2023-11-24 12:49:15 +01:00
CodeGenerationError.cpp LibJS: Add to_string definitions to CodeGenerationError and ParserError 2023-02-17 09:14:23 -05:00
CodeGenerationError.h LibJS: Remove unused CodeGenerationError::to_deprecated_string 2023-02-17 09:14:23 -05:00
CommonImplementations.h LibJS/Bytecode: Combine has_index() and get() in GetByVal and PutByVal 2024-03-04 20:54:51 +01:00
Executable.cpp LibJS/Bytecode: Make primitive strings be constants 2024-03-03 22:27:44 +01:00
Executable.h LibJS/Bytecode: Make primitive strings be constants 2024-03-03 22:27:44 +01:00
Generator.cpp LibJS/Bytecode: Make primitive strings be constants 2024-03-03 22:27:44 +01:00
Generator.h LibJS/Bytecode: Bring back the bytecode optimization pipeline 2024-03-04 20:54:51 +01:00
IdentifierTable.cpp LibJS: Don't worry about deduplicating bytecode string tables 2023-10-04 20:10:12 +02:00
IdentifierTable.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
Instruction.cpp LibJS/Bytecode: Bring back the bytecode optimization pipeline 2024-03-04 20:54:51 +01:00
Instruction.h LibJS/Bytecode: Fuse [Not, JumpIf] instructions into JumpIfNot 2024-03-04 20:54:51 +01:00
Interpreter.cpp LibJS/Bytecode: Increase coverage of left/shift expression fast paths 2024-03-04 20:54:51 +01:00
Interpreter.h LibJS/Bytecode: Bring back the bytecode optimization pipeline 2024-03-04 20:54:51 +01:00
Label.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Op.h LibJS/Bytecode: Add fast path for LeftShift with Int32 operands 2024-03-04 20:54:51 +01:00
Operand.h LibJS/Bytecode: Add Bytecode::Operand 2024-02-19 21:45:27 +01:00
PassManager.h LibJS/Bytecode: Add peephole optimization pass and fuse compare+jump 2024-03-04 20:54:51 +01:00
RegexTable.cpp LibJS/Bytecode: Don't reparse regular expressions on instantiation 2023-07-13 13:30:49 +02:00
RegexTable.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Register.h LibJS: Stash thrown exception in a register before executing finalizer 2023-11-03 20:27:45 +01:00
StringTable.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
StringTable.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30