1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:28:11 +00:00

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.
This commit is contained in:
Andreas Kling 2021-10-24 15:34:30 +02:00
parent 13f04e37e5
commit da98212001
10 changed files with 121 additions and 37 deletions

View file

@ -15,6 +15,7 @@ namespace JS::Bytecode {
Generator::Generator()
: m_string_table(make<StringTable>())
, m_identifier_table(make<IdentifierTable>())
{
}
@ -44,7 +45,7 @@ Executable Generator::generate(ASTNode const& node, bool is_in_generator_functio
generator.emit<Bytecode::Op::Yield>(nullptr);
}
}
return { {}, move(generator.m_root_basic_blocks), move(generator.m_string_table), generator.m_next_register };
return { {}, move(generator.m_root_basic_blocks), move(generator.m_string_table), move(generator.m_identifier_table), generator.m_next_register };
}
void Generator::grow(size_t additional_size)