Andreas Kling
310bcd4717
LibJS/JIT: Don't keep trying to JIT unsupported bytecode executables
...
We now only try jitting each Bytecode::Executable once, and then cache
the resulting NativeExecutable.
2023-10-27 19:07:22 +02:00
Andreas Kling
2e23f00a2f
LibJS/Bytecode: Move environment coordinate caches to Executable
...
Moving them out of the respective instructions allows the bytecode
stream to be immutable.
2023-10-27 07:26:37 +02:00
Karol Kosek
2ea45f4881
LibJS: Forward-declare RegexTable and BasicBlock in Executable.h
...
Previously every file that included Executable.h (which is pretty much
most LibJS and LibHTML files, given that VM.h needs it) had the whole
definition of LibRegex, which was slowing down source parsing.
2023-10-09 07:29:27 +02:00
Andreas Kling
c14db6ab12
LibJS: Make Executable ref-counted and let instruction iterator co-own it
...
This ensures that the instruction stream pointed at by the instruction
iterator remains valid as long as the iterator exists.
2023-10-03 08:23:33 +02:00
Andreas Kling
359d6e7b0b
Everywhere: Stop using NonnullOwnPtrVector
...
Same as NonnullRefPtrVector: weird semantics, questionable benefits.
2023-03-06 23:46:35 +01:00
Andreas Kling
da98212001
LibJS: Add a separate "identifier table" to bytecode executables
...
This is a specialized string table for storing identifiers only.
Identifiers are always FlyStrings, which makes many common operations
faster by allowing O(1) comparison.
2021-10-24 17:18:07 +02:00
Andreas Kling
f75d78f56a
LibJS: Include executable name in bytecode dumps
2021-10-24 17:18:06 +02:00
Andreas Kling
da77e2aa4f
LibJS: Add Bytecode::Executable::dump()
...
Let's have a helper for producing a consistent executable dump instead
of repeating the logic in multiple places.
2021-10-24 17:18:05 +02:00