ladybird/Userland/Libraries/LibJS/Bytecode
Matthew Olsson a01bd35c67 LibJS: Add bytecode instruction handles
This change removes the mmap inside of Block in favor of a growing
vector of bytes. This is favorable for two reasons:
  - We don't take more space than we need
  - There is no limit to the growth of the vector (previously, if
    the Block overstepped its 64kb boundary, it would just crash)

However, if that vector happens to resize, any pointer pointing into
that vector would become invalid. To avoid this, this commit adds an
InstructionHandle<Op> class which just stores a block and an offset
into that block.
2021-06-09 00:37:17 +02:00
..
ASTCodegen.cpp LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Block.cpp LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Block.h LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Generator.cpp LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Generator.h LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Instruction.cpp LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Instruction.h LibJS: Add bytecode instruction handles 2021-06-09 00:37:17 +02:00
Interpreter.cpp LibJS: Move bytecode debug spam behind JS_BYTECODE_DEBUG :^) 2021-06-07 18:11:59 +02:00
Interpreter.h LibJS: Introduce an accumulator register to Bytecode::Interpreter 2021-06-08 21:00:12 +02:00
Label.h LibJS: Devirtualize and pack the bytecode stream :^) 2021-06-07 18:11:59 +02:00
Op.cpp LibJS: Introduce an accumulator register to Bytecode::Interpreter 2021-06-08 21:00:12 +02:00
Op.h LibJS: Introduce an accumulator register to Bytecode::Interpreter 2021-06-08 21:00:12 +02:00
Register.h LibJS: Introduce an accumulator register to Bytecode::Interpreter 2021-06-08 21:00:12 +02:00