Stephan Vedder
32352aa729
LibJS/JIT: Add a fast path for floating point comparisons
2023-11-16 11:43:44 +01:00
iliadsh
ad98834b50
LibJS/JIT: Add more equality fast paths
2023-11-13 13:33:43 +01:00
Andreas Kling
e41f0d9dec
LibJS/JIT: Add fast path for loose equality check between 2 objects
...
There are more fast paths to be added here, just starting with this
one since it's heavy on Kraken/ai-astar.js :^)
2023-11-12 19:57:27 +01:00
Andreas Kling
cb7169d73f
LibJS/JIT: Support the EnterObjectEnvironment bytecode instruction
...
We can now use `with` statements in jitted code. :^)
2023-11-12 14:21:41 +01:00
Andreas Kling
cfdb8a2756
LibJS/JIT: Update "unwind context" stack in JIT code
...
Until now, the unwind context stack has not been maintained by jitted
code, which meant we were unable to support the `with` statement.
This is a first step towards supporting that by making jitted code
call out to C++ to update the unwind context stack when entering/leaving
unwind contexts.
We also introduce a new "Catch" bytecode instruction that moves the
current exception into the accumulator. It's always emitted at the start
of a "catch" block.
2023-11-12 14:21:41 +01:00
Andreas Kling
b6435ca280
LibJS: Unify bytecode instruction names with their helper names
2023-11-12 14:21:41 +01:00
Simon Wanner
d91b376393
LibJS/JIT: Add helper for generating combined i32 & double fastpaths
...
Co-authored-by: Stephan Vedder <vedder@mbits.info>
2023-11-10 11:01:59 +01:00
Andreas Kling
55e467c359
LibJS/JIT: Add fast path for cached PutById
2023-11-09 16:02:14 +01:00
Sebastian Bernauer
8eb9c2dc54
LibJS/JIT: Add fast path for number comparisons
...
So far only less_than was using a fast path. This commits uses the same
path for less_than_equals, greater_than and greater_than_equals.
2023-11-08 14:11:51 +01:00
Andreas Kling
1d8ec677a3
LibJS/JIT: Add fast path for cached GetVariable accesses
...
We can now stay in machine code for environment variable read accesses
as long as they are cached and initialized.
20% speed-up on Octane/zlib.js :^)
2023-11-07 11:33:04 +01:00
Andreas Kling
e1e7e696ac
LibJS/JIT: Store the running ExecutionContext& in a dedicated register
2023-11-07 11:33:04 +01:00
iliadsh
24d5070520
LibJS/JIT: Add fast path for UnsignedRightShift
2023-11-07 10:17:04 +01:00
iliadsh
c956316c98
LibJS/JIT: Add fast path for RightShift
2023-11-07 10:17:04 +01:00
iliadsh
1244e91481
LibJS/JIT: Add fast path for LeftShift
2023-11-07 10:17:04 +01:00
Simon Wanner
7e3cfaf08c
LibJS/JIT: Include headers before they are used
...
JIT_ARCH_SUPPORTED is defined in LibJIT/Assembler.h, so we need to
include it first.
This change also moves the non-JIT headers outside the #ifdef
2023-11-06 10:28:05 +01:00
Nikodem Rabuliński
8aa35f4fab
LibJIT+LibJS: Rename Assembler to X86_64Assembler
...
This is in preparation for making LibJIT support multiple architectures.
Assembler will now be typedefed to the specific assembler
for a particular architecture.
Additionally, there's now JIT_ARCH_SUPPORTED which is defined on
architectures which LibJIT supports.
2023-11-06 10:05:42 +01:00
Andreas Kling
24fb009cf5
LibJS+LibJIT: Add fast path for Int32 * Int32
2023-11-03 10:48:02 +01:00
Andreas Kling
0aeb83b03f
LibJS+LibJIT: Add fast path for Int32 ^ Int32
2023-11-03 10:48:02 +01:00
Andreas Kling
3a5c177025
LibJS/JIT: Add fast path for Int32 | Int32
2023-11-03 10:48:02 +01:00
Andreas Kling
82635083dc
LibJS/JIT: Add fast path for Int32 & Int32
2023-11-03 10:48:02 +01:00
Andreas Kling
17ae6edd8e
LibJS+LibJIT: Add fast path for Int32 - Int32
2023-11-03 10:48:02 +01:00
Simon Wanner
c810d4784e
LibJS/JIT: Compile the Await instruction
2023-11-03 07:31:11 +01:00
Simon Wanner
4671520c0a
LibJS/JIT: Compile the Yield instruction
2023-11-03 07:31:11 +01:00
Idan Horowitz
38f3b78a1d
LibJS: Store the bytecode accumulator in a dedicated physical register
...
We now use a dedicated physical register to store the bytecode
accumulator, instead of loading and storing it to the memory everytime.
2023-11-02 22:35:35 +01:00
Simon Wanner
fb7b4b9c59
LibJS/JIT: Provide source location information for JIT code
...
This works by walking a backtrace until the currently executing
native executable is found, and then mapping the native address
to its bytecode instruction.
2023-10-31 07:07:17 +01:00
Evgeniy Baskov
da45bd3fde
LibJS/JIT: Implement static exception handling
2023-10-30 13:10:08 +01:00
Zaggy1024
dfaf645302
LibJS: Add an inline JIT fast path when ToNumeric
has nothing to do
...
In most cases, this op will do nothing, as it is running on an the
accumulator while it already contains a number. Let's avoid doing that
native call.
2023-10-30 07:10:54 +01:00
Simon Wanner
a2b0154661
LibJS/JIT: Compile the AsyncIteratorClose instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
ac59e982a9
LibJS/JIT: Compile the CopyObjectExcludingProperties instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
9494fbe670
LibJS/JIT: Compile the PutByValueWithThis instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
847889343f
LibJS/JIT: Compile the New##ErrorName instructions
2023-10-30 07:10:24 +01:00
Simon Wanner
fd059d4e4a
LibJS/JIT: Compile the JumpUndefined instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
a16082c6a5
LibJS/JIT: Compile the HasPrivateId instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
712c89dacf
LibJS/JIT: Compile the GetNewTarget instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
19045d6431
LibJS/JIT: Compile the GetMethod instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
06ea4cfc4f
LibJS/JIT: Compile the DeleteVariable instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
cd18bc9d55
LibJS/JIT: Compile the GetImportMeta instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
c0c40110c1
LibJS/JIT: Compile the ImportCall instruction
2023-10-30 07:10:24 +01:00
Simon Wanner
ac43d3f6db
LibJS/JIT: Compile the PutPrivateById instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
81697549b7
LibJS/JIT: Compile the PutByIdWithThis instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
38d5d7979b
LibJS/JIT: Compile the DeleteByIdWithThis instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
b53277110e
LibJS/JIT: Compile the GetByValueWithThis instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
569ca57e22
LibJS/JIT: Compile the GetByIdWithThis instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
ad81f49b02
LibJS/JIT: Compile the ResolveSuperBase instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
4e9edb8c53
LibJS/JIT: Compile the GetPrivateById instruction
2023-10-29 22:57:19 +01:00
Simon Wanner
4ce2878394
LibJS/JIT: Compile the GetObjectPropertyIterator instruction
2023-10-29 22:57:19 +01:00
Jakub Berkop
6a7b9b85a4
LibJS/JIT: Compile the DeleteByValueWithThis instruction
2023-10-29 21:51:46 +01:00
Jakub Berkop
0776404e03
LibJS/JIT: Compile the DeleteByValue instruction
2023-10-29 21:51:46 +01:00
Jakub Berkop
f5fcd4596c
LibJS/JIT: Compile the DeleteById instruction
2023-10-29 21:51:46 +01:00
Simon Wanner
40064d872f
LibJS/JIT: Compile the Append instruction
2023-10-29 17:36:09 +01:00