| Index: src/ast/ast-value-factory.cc
|
| diff --git a/src/ast/ast-value-factory.cc b/src/ast/ast-value-factory.cc
|
| index 42295ab6a528a3d6ef20ce25ee3f5bf8fc2a4276..aecaf4bd6474a7022934bfc28bdadb0a62a44942 100644
|
| --- a/src/ast/ast-value-factory.cc
|
| +++ b/src/ast/ast-value-factory.cc
|
| @@ -28,6 +28,7 @@
|
| #include "src/ast/ast-value-factory.h"
|
|
|
| #include "src/api.h"
|
| +#include "src/char-predicates-inl.h"
|
| #include "src/objects.h"
|
| #include "src/utils.h"
|
|
|
| @@ -222,6 +223,15 @@ void AstValue::Internalize(Isolate* isolate) {
|
|
|
| AstRawString* AstValueFactory::GetOneByteStringInternal(
|
| Vector<const uint8_t> literal) {
|
| + if (literal.length() == 1 && IsInRange(literal[0], 'a', 'z')) {
|
| + int key = literal[0] - 'a';
|
| + if (one_character_strings_[key] == nullptr) {
|
| + uint32_t hash = StringHasher::HashSequentialString<uint8_t>(
|
| + literal.start(), literal.length(), hash_seed_);
|
| + one_character_strings_[key] = GetString(hash, true, literal);
|
| + }
|
| + return one_character_strings_[key];
|
| + }
|
| uint32_t hash = StringHasher::HashSequentialString<uint8_t>(
|
| literal.start(), literal.length(), hash_seed_);
|
| return GetString(hash, true, literal);
|
|
|