| Index: src/ast/ast-value-factory.h
|
| diff --git a/src/ast/ast-value-factory.h b/src/ast/ast-value-factory.h
|
| index 6416b57f44a72a5359a818798a2ba3221249d93f..bdb1f5e7c0ac291f731f2bafa8939ca2a6b3751e 100644
|
| --- a/src/ast/ast-value-factory.h
|
| +++ b/src/ast/ast-value-factory.h
|
| @@ -44,7 +44,7 @@ namespace internal {
|
| class AstString : public ZoneObject {
|
| public:
|
| explicit AstString(bool is_raw)
|
| - : next_(nullptr), bit_field_(IsRawStringBits::encode(is_raw)) {}
|
| + : bit_field_(IsRawStringBits::encode(is_raw)) {}
|
|
|
| int length() const;
|
| bool IsEmpty() const { return length() == 0; }
|
| @@ -58,13 +58,9 @@ class AstString : public ZoneObject {
|
| return string_;
|
| }
|
|
|
| - AstString** next_location() { return &next_; }
|
| - AstString* next() const { return next_; }
|
| -
|
| protected:
|
| // Handle<String>::null() until internalized.
|
| Handle<String> string_;
|
| - AstString* next_;
|
| // Poor-man's virtual dispatch to AstRawString / AstConsString. Takes less
|
| // memory.
|
| class IsRawStringBits : public BitField<bool, 0, 1> {};
|
| @@ -133,16 +129,21 @@ class AstConsString final : public AstString {
|
| : AstString(false),
|
| length_(left->length() + right->length()),
|
| left_(left),
|
| - right_(right) {}
|
| + right_(right),
|
| + next_(nullptr) {}
|
|
|
| int length() const { return length_; }
|
|
|
| void Internalize(Isolate* isolate);
|
|
|
| + AstConsString* next() { return next_; }
|
| + AstConsString** next_location() { return &next_; }
|
| +
|
| private:
|
| const int length_;
|
| const AstString* left_;
|
| const AstString* right_;
|
| + AstConsString* next_;
|
| };
|
|
|
|
|
| @@ -264,7 +265,6 @@ class AstValue : public ZoneObject {
|
| double number_;
|
| int smi_;
|
| bool bool_;
|
| - const AstRawString* strings_;
|
| const char* symbol_name_;
|
| };
|
|
|
| @@ -325,10 +325,10 @@ class AstValueFactory {
|
| AstValueFactory(Zone* zone, uint32_t hash_seed)
|
| : string_table_(AstRawStringCompare),
|
| values_(nullptr),
|
| - strings_end_(&strings_),
|
| + cons_strings_(nullptr),
|
| + cons_strings_end_(&cons_strings_),
|
| zone_(zone),
|
| hash_seed_(hash_seed) {
|
| - ResetStrings();
|
| #define F(name, str) name##_string_ = NULL;
|
| STRING_CONSTANTS(F)
|
| #undef F
|
| @@ -387,14 +387,14 @@ class AstValueFactory {
|
| values_ = value;
|
| return value;
|
| }
|
| - AstString* AddString(AstString* string) {
|
| - *strings_end_ = string;
|
| - strings_end_ = string->next_location();
|
| + AstConsString* AddConsString(AstConsString* string) {
|
| + *cons_strings_end_ = string;
|
| + cons_strings_end_ = string->next_location();
|
| return string;
|
| }
|
| - void ResetStrings() {
|
| - strings_ = nullptr;
|
| - strings_end_ = &strings_;
|
| + void ResetConsStrings() {
|
| + cons_strings_ = nullptr;
|
| + cons_strings_end_ = &cons_strings_;
|
| }
|
| V8_EXPORT_PRIVATE AstRawString* GetOneByteStringInternal(
|
| Vector<const uint8_t> literal);
|
| @@ -409,10 +409,10 @@ class AstValueFactory {
|
| // For keeping track of all AstValues and AstRawStrings we've created (so that
|
| // they can be internalized later).
|
| AstValue* values_;
|
| - // We need to keep track of strings_ in order, since cons strings require
|
| - // their members to be internalized first.
|
| - AstString* strings_;
|
| - AstString** strings_end_;
|
| + // We need to keep track of cons_strings_ in order since they require their
|
| + // members to be internalized first.
|
| + AstConsString* cons_strings_;
|
| + AstConsString** cons_strings_end_;
|
| Zone* zone_;
|
|
|
| uint32_t hash_seed_;
|
|
|