From bf46845819a1575a41531789bfa11dbaef25e706 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Sep 2021 18:29:32 +0200 Subject: [PATCH] LibJS: Avoid a temporary AK::String when lexing already-seen identifiers By using the FlyString(StringView) constructor instead of the FlyString(String) one, we can dodge a temporary String construction. This improves parsing time on a large chunk of JS by ~1.6%. --- Userland/Libraries/LibJS/Lexer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Userland/Libraries/LibJS/Lexer.cpp b/Userland/Libraries/LibJS/Lexer.cpp index 3ef63870f3..7b58a84f32 100644 --- a/Userland/Libraries/LibJS/Lexer.cpp +++ b/Userland/Libraries/LibJS/Lexer.cpp @@ -614,7 +614,7 @@ Token Lexer::next() code_point = is_identifier_middle(identifier_length); } while (code_point.has_value()); - identifier = builder.build(); + identifier = builder.string_view(); m_parsed_identifiers->identifiers.set(*identifier); auto it = s_keywords.find(identifier->hash(), [&](auto& entry) { return entry.key == identifier; });