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
Simon Wanner
ad81bf47bb
LibJS: Move GetObjectPropertyIterator impl to CommonImplementations
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
Simon Wanner
516bb01082
LibJS/Bytecode: Move Append impl to CommonImplementations
2023-10-29 17:36:09 +01:00
Simon Wanner
3dc5c8d28e
LibJS/JIT: Compile the IteratorToArray instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
5179ff5fc9
LibJS/Bytecode: Move IteratorToArray impl to CommonImplementations
2023-10-29 17:36:09 +01:00
Simon Wanner
c697ff61f6
LibJS/JIT: Compile the IteratorClose instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
233502a10c
LibJS/JIT: Compile the IteratorResultValue instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
e7fdf9c7e5
LibJS/JIT: Compile the ThrowIfNullish instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
9e2edc3085
LibJS/JIT: Compile the ThrowIfNotObject instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
39deb365d2
LibJS/JIT: Compile the IteratorResultDone instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
045a1386d8
LibJS/JIT: Compile the IteratorNext instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
661dbbc83d
LibJS/Bytecode: Move object_to_iterator to CommonImplementations
2023-10-29 17:36:09 +01:00
Simon Wanner
4f8f8b7792
LibJS/JIT: Compile the GetIterator instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
d416cef9bb
LibJS/Bytecode: Move iterator_to_object to CommonImplementations
2023-10-29 17:36:09 +01:00
Simon Wanner
d247744a3e
LibJS/JIT: Compile the SuperCallWithArgumentArray instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
1eee110575
LibJS: Move SuperCallWithArgumentArray impl to CommonImplementations
2023-10-29 17:36:09 +01:00
Simon Wanner
09dce5f1bd
LibJS/JIT: Compile the BlockDeclarationInstantiation instruction
2023-10-29 17:36:09 +01:00
Simon Wanner
a28d6291ad
LibJS/JIT: Generate switch cases using X macro
2023-10-29 17:36:09 +01:00
Simon Wanner
f89bfb3f27
LibJS/JIT: Declare compile_* methods using X macro
2023-10-29 17:36:09 +01:00
Zaggy1024
56e8f52cb3
LibJIT/LibJS: Remove jump_if_***()
in favor of jump_if()
...
The `jump_if()` function implements all the conditions already in use
and more, so let's avoid encouraging more wrapper functions.
2023-10-29 17:11:04 +01:00
iliadsh
4f3945024a
LibJS/JIT: Add fast path for Add Int32, Int32
...
This uses the 32-bit registers to perform the addition and bail if the
overflow flag (OF) is set.
2023-10-29 08:02:00 +01:00
Simon Wanner
4b23a7dfb4
LibJS/JIT: Compile the NewClass bytecode instruction
2023-10-29 07:44:11 +01:00
Simon Wanner
f9fbb8cff2
LibJS/Bytecode: Move NewClass impl to CommonImplementations
2023-10-29 07:44:11 +01:00
Simon Wanner
ddce5e03c2
LibJS/JIT: Clear unwind context handler on usage
...
This clears the handler pointer of the current unwind context
before jumping to it. This is necessary to not loop infinitely
when an exception is thrown from the handler.
In that case control flow should go to the finalizer instead.
This mirrors how unwind_context.handler_called is used in the
Bytecode::Interpreter.
`try { throw 1 } catch (e) { throw 2 } finally {}` now runs
without looping infinitely in the catch block.
2023-10-29 07:44:11 +01:00
Simon Wanner
224f92f6e4
LibJS/JIT: Compile the CreateVariable bytecode instruction
2023-10-29 07:44:11 +01:00
Simon Wanner
54f1f7a51b
LibJS/Bytecode: Move CreateVariable impl to CommonImplementations
2023-10-29 07:44:11 +01:00
Simon Wanner
1d3062de9e
LibJS/JIT: Compile the ConcatString bytecode instruction
2023-10-29 07:44:11 +01:00
Evgeniy Baskov
9258e253ca
LibJS/JIT: Fix crash in CallWithArgumentArray
2023-10-28 22:33:45 +02:00
Andreas Kling
40ecf7689b
LibJS/JIT: Run clang-format on Compiler.cpp
2023-10-28 21:02:13 +02:00
Simon Wanner
2cbc9d6970
LibJS/JIT: Consolidate exception handling code
...
Instead of emitting the lengthy exception checking/handling routine,
we only emit code for checking the presence of an exception and jump
to a common exception handler.
This code size optimization saves 2.08MiB on Kraken/ai-astar.js
2023-10-28 20:44:49 +02:00
Simon Wanner
202a08ecc2
LibJS+LibJIT: Replace make_label() with default constructed label
2023-10-28 20:44:49 +02:00
Idan Horowitz
b2d8d0c270
LibJS: Compile the CallWithArgumentArray bytecode instruction
2023-10-28 20:27:16 +02:00
Idan Horowitz
2b65a80ecb
LibJS: Compile the NewBigInt bytecode instruction
2023-10-28 20:27:16 +02:00
Idan Horowitz
d200361620
LibJS: Remove useless indirection in compile_new_{function, regexp}
...
The cxx_new_* functions have the exact same signature as the underlying
function they redirect to, so there's no need for them. Removing them
saves us a couple of opcodes.
2023-10-28 20:27:16 +02:00
Andreas Kling
9c0c672839
LibJS/JIT: Store the VM register array base in RBX
...
This allows us to use the displacement-less MOV encoding when accessing
register $0 (the accumulator).
This reduces code size by 158 KiB on Kraken/ai-astar.js :^)
2023-10-28 20:26:35 +02:00