1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:48:12 +00:00
serenity/Userland/Libraries/LibJS
Timothy Flynn 444b2d9ec2 LibJS: Implement UTF-16 surrogate pair concatenation without iteration
Performance of string concatenation regressed in a57e2f9. That commit
iterates over the LHS string to find the last code unit, to check if it
is a high surrogate. Instead, first look at the 3rd-to-last byte in the
UTF-8 encoded string to check if it is a 3-byte code point; then decode
just those bytes to check if we have a high surrogate. Similarly, check
the first 3 bytes of the RHS string to check if we have a low surrogate.
2022-01-18 09:46:55 +00:00
..
Bytecode LibJS: Rename FunctionKind::{Regular => Normal} 2022-01-16 01:54:48 +01:00
Heap LibJS: Add Handle specialisation for Value 2022-01-05 11:21:38 +01:00
Runtime LibJS: Implement UTF-16 surrogate pair concatenation without iteration 2022-01-18 09:46:55 +00:00
Tests LibJS: Combine UTF-16 surrogate pairs when concatenating strings 2022-01-18 00:49:16 +00:00
AST.cpp LibJS: Rename FunctionKind::{Regular => Normal} 2022-01-16 01:54:48 +01:00
AST.h LibJS: Replace the custom unwind mechanism with completions :^) 2022-01-06 12:36:23 +01:00
CMakeLists.txt LibJS: Rename GeneratorObjectPrototype to GeneratorPrototype 2022-01-16 14:50:22 +01: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
Forward.h LibJS: Rename GeneratorObjectPrototype to GeneratorPrototype 2022-01-16 14:50:22 +01:00
Interpreter.cpp LibJS: Remove now unused VM::{set_,}last_value() 2022-01-08 23:43:03 +01:00
Interpreter.h LibJS: Convert Interpreter::run() to ThrowCompletionOr<Value> 2022-01-08 23:43:03 +01:00
Lexer.cpp LibJS: Detect invalid unicode and stop lexing at that point 2021-12-29 16:57:23 +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 a barebones Module class 2021-09-14 21:41:51 +02:00
Module.h LibJS: Add a barebones Module class 2021-09-14 21:41:51 +02:00
Parser.cpp LibJS: Implement create_dynamic_function() according to the spec 2022-01-16 01:54:48 +01:00
Parser.h LibJS: Implement create_dynamic_function() according to the spec 2022-01-16 01:54:48 +01:00
Script.cpp LibJS+LibWeb: Move script parse time logging from JS::Script to LibWeb 2021-09-14 21:41:51 +02:00
Script.h LibJS+LibWeb: Let JS::Script::parse() return a list of errors (on error) 2021-09-14 21:41:51 +02:00
SourceRange.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
SourceTextModule.cpp LibJS: Add a barebones SourceTextModule class 2021-09-14 21:41:51 +02:00
SourceTextModule.h LibJS: Add a barebones SourceTextModule class 2021-09-14 21:41:51 +02: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
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 Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00