1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 08:34:58 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling ff60e8ffc6 LibJS: Use Vector instead of HashMap in DeclarativeEnvironment
Constructing the HashMap in DeclarativeEnvironment was by far the most
expensive thing when making JavaScript function calls.

As it turns out, we don't really need this to be a HashMap in the first
place, as lookups are cached (by EnvironmentCoordinate) after the first
access, so after that we were not even looking in the HashMap, going
directly to the bindings Vector instead.

This reduces function_declaration_instantiation() from 16% to 9% when
idling in "Biolab Disaster". It also reduces has_binding() from 3% to
1% on the same content.

With these changes, we now actually get to idle a little bit between
game frames on my machine. :^)
2022-03-07 14:49:21 +01:00
..
Bytecode LibJS: More properly implement scoping rules in bytecode codegen 2022-02-13 14:41:33 +00:00
Heap LibJS: Remove MarkedValueList in favor of MarkedVector<Value> :^) 2022-02-09 12:25:27 +00:00
Runtime LibJS: Use Vector instead of HashMap in DeclarativeEnvironment 2022-03-07 14:49:21 +01:00
Tests LibJS: Implement the object literal __proto__ property key special case 2022-03-06 01:38:25 +02:00
AST.cpp LibJS: Implement the object literal __proto__ property key special case 2022-03-06 01:38:25 +02:00
AST.h LibJS: Actually override is_private_identifier() in PrivateIdentifier 2022-03-06 00:49:35 +01:00
CMakeLists.txt LibJS: Add an initial implementation of Collator Compare Functions 2022-02-20 22:05:59 -05:00
Console.cpp LibJS: Implement console.time/timeLog/timeEnd() methods 2021-12-27 21:44:07 +01:00
Console.h LibJS: Implement console.time/timeLog/timeEnd() methods 2021-12-27 21:44:07 +01:00
CyclicModule.cpp LibJS: Use new NativeFunction::create() in most places 2022-02-20 23:21:40 +00:00
CyclicModule.h LibJS: Implement the import assertions proposal 2022-01-30 17:40:20 +00:00
Forward.h LibJS: Remove MarkedValueList in favor of MarkedVector<Value> :^) 2022-02-09 12:25:27 +00:00
Interpreter.cpp LibJS+Everywhere: Remove VM::exception() and most related functions 2022-02-08 09:12:42 +00:00
Interpreter.h LibJS: Replace uses of MarkedValueList with MarkedVector<Value> 2022-02-09 12:25:27 +00:00
Lexer.cpp LibJS: Always inline Lexer::current_code_point() 2022-02-13 14:44:36 +01:00
Lexer.h LibJS: Detect invalid unicode and stop lexing at that point 2021-12-29 16:57:23 +01:00
MarkupGenerator.cpp LibJS+js: Pretty-print Date objects using the ToDateString AO 2022-01-15 20:13:48 +01:00
MarkupGenerator.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Module.cpp LibJS: Add support for JSON modules 2022-01-30 17:40:20 +00:00
Module.h LibWeb: Introduce the Environment Settings Object 2022-02-08 17:47:44 +00:00
Parser.cpp LibJS: Implement the object literal __proto__ property key special case 2022-03-06 01:38:25 +02:00
Parser.h LibJS: Fix mixing of logical and coalescing operators 2022-02-16 11:18:41 +00:00
Script.cpp LibJS: Reduce header dependency graph in Realm.h 2022-02-07 19:16:46 +01:00
Script.h LibJS: Add [[HostDefined]] internal slot to Script objects 2022-02-07 19:16:46 +01:00
SourceRange.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
SourceTextModule.cpp LibJS+Everywhere: Remove VM::exception() and most related functions 2022-02-08 09:12:42 +00:00
SourceTextModule.h LibJS: Implement the import assertions proposal 2022-01-30 17:40:20 +00:00
SyntaxHighlighter.cpp LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
SyntaxHighlighter.h LibWeb+LibSyntax: Implement nested syntax highlighters 2021-06-07 14:45:49 +04:30
SyntheticModule.cpp LibJS: Reduce header dependency graph in Realm.h 2022-02-07 19:16:46 +01:00
SyntheticModule.h LibJS: Add support for JSON modules 2022-01-30 17:40:20 +00:00
Token.cpp LibJS: Disallow '\8' and '\9' in strict mode due to being octal escapes 2021-11-30 17:05:32 +00:00
Token.h LibJS: Add Token::flystring_value() to produce FlyString directly 2022-02-13 14:44:36 +01:00