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:
parent
13f04e37e5
commit
da98212001
10 changed files with 121 additions and 37 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue