Index: src/heap.cc |
diff --git a/src/heap.cc b/src/heap.cc |
index 5e3d75909d6053fea2f9dea5aabc5520fb9e5223..5c6eb18c5d0972f48636c847832b600eb5e64a55 100644 |
--- a/src/heap.cc |
+++ b/src/heap.cc |
@@ -3858,8 +3858,8 @@ MaybeObject* Heap::LookupSingleCharacterStringFromCode(uint16_t code) { |
uint8_t buffer[1]; |
buffer[0] = static_cast<uint8_t>(code); |
Object* result; |
- MaybeObject* maybe_result = |
- InternalizeOneByteString(Vector<const uint8_t>(buffer, 1)); |
+ OneByteStringKey key(Vector<const uint8_t>(buffer, 1), HashSeed()); |
+ MaybeObject* maybe_result = InternalizeStringWithKey(&key); |
if (!maybe_result->ToObject(&result)) return maybe_result; |
single_character_string_cache()->set(code, result); |
@@ -4742,8 +4742,9 @@ MaybeObject* Heap::ReinitializeJSReceiver( |
SharedFunctionInfo* shared = NULL; |
if (type == JS_FUNCTION_TYPE) { |
String* name; |
- maybe = |
- InternalizeOneByteString(STATIC_ASCII_VECTOR("<freezing call trap>")); |
+ OneByteStringKey key(STATIC_ASCII_VECTOR("<freezing call trap>"), |
+ HashSeed()); |
+ maybe = InternalizeStringWithKey(&key); |
if (!maybe->To<String>(&name)) return maybe; |
maybe = AllocateSharedFunctionInfo(name); |
if (!maybe->To<SharedFunctionInfo>(&shared)) return maybe; |
@@ -5876,45 +5877,17 @@ void Heap::Verify() { |
MaybeObject* Heap::InternalizeUtf8String(Vector<const char> string) { |
- Object* result = NULL; |
- Object* new_table; |
- { MaybeObject* maybe_new_table = |
- string_table()->LookupUtf8String(string, &result); |
- if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; |
- } |
- // Can't use set_string_table because StringTable::cast knows that |
- // StringTable is a singleton and checks for identity. |
- roots_[kStringTableRootIndex] = new_table; |
- ASSERT(result != NULL); |
- return result; |
-} |
- |
- |
-MaybeObject* Heap::InternalizeOneByteString(Vector<const uint8_t> string) { |
- Object* result = NULL; |
- Object* new_table; |
- { MaybeObject* maybe_new_table = |
- string_table()->LookupOneByteString(string, &result); |
- if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; |
- } |
- // Can't use set_string_table because StringTable::cast knows that |
- // StringTable is a singleton and checks for identity. |
- roots_[kStringTableRootIndex] = new_table; |
- ASSERT(result != NULL); |
- return result; |
+ Utf8StringKey key(string, HashSeed()); |
+ return InternalizeStringWithKey(&key); |
} |
-MaybeObject* Heap::InternalizeOneByteString(Handle<SeqOneByteString> string, |
- int from, |
- int length) { |
+MaybeObject* Heap::InternalizeString(String* string) { |
+ if (string->IsInternalizedString()) return string; |
Object* result = NULL; |
Object* new_table; |
{ MaybeObject* maybe_new_table = |
- string_table()->LookupSubStringOneByteString(string, |
- from, |
- length, |
- &result); |
+ string_table()->LookupString(string, &result); |
if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; |
} |
// Can't use set_string_table because StringTable::cast knows that |
@@ -5925,27 +5898,20 @@ MaybeObject* Heap::InternalizeOneByteString(Handle<SeqOneByteString> string, |
} |
-MaybeObject* Heap::InternalizeTwoByteString(Vector<const uc16> string) { |
- Object* result = NULL; |
- Object* new_table; |
- { MaybeObject* maybe_new_table = |
- string_table()->LookupTwoByteString(string, &result); |
- if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; |
+bool Heap::InternalizeStringIfExists(String* string, String** result) { |
+ if (string->IsInternalizedString()) { |
+ *result = string; |
+ return true; |
} |
- // Can't use set_string_table because StringTable::cast knows that |
- // StringTable is a singleton and checks for identity. |
- roots_[kStringTableRootIndex] = new_table; |
- ASSERT(result != NULL); |
- return result; |
+ return string_table()->LookupStringIfExists(string, result); |
} |
-MaybeObject* Heap::InternalizeString(String* string) { |
- if (string->IsInternalizedString()) return string; |
+MaybeObject* Heap::InternalizeStringWithKey(HashTableKey* key) { |
Object* result = NULL; |
Object* new_table; |
{ MaybeObject* maybe_new_table = |
- string_table()->LookupString(string, &result); |
+ string_table()->LookupKey(key, &result); |
if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; |
} |
// Can't use set_string_table because StringTable::cast knows that |
@@ -5956,15 +5922,6 @@ MaybeObject* Heap::InternalizeString(String* string) { |
} |
-bool Heap::InternalizeStringIfExists(String* string, String** result) { |
- if (string->IsInternalizedString()) { |
- *result = string; |
- return true; |
- } |
- return string_table()->LookupStringIfExists(string, result); |
-} |
- |
- |
void Heap::ZapFromSpace() { |
NewSpacePageIterator it(new_space_.FromSpaceStart(), |
new_space_.FromSpaceEnd()); |