Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 8c0189a2b7fc6743653608b08073a497d2e9cac6..96354c8398f06c1ff6289229303fbe0095025f54 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -6237,10 +6237,10 @@ class CodeCacheHashTableKey : public HashTableKey { |
return NameFlagsHashHelper(name, code->flags()); |
} |
- MUST_USE_RESULT MaybeObject* AsObject() { |
+ MUST_USE_RESULT MaybeObject* AsObject(Heap* heap) { |
ASSERT(code_ != NULL); |
Object* obj; |
- { MaybeObject* maybe_obj = code_->GetHeap()->AllocateFixedArray(2); |
+ { MaybeObject* maybe_obj = heap->AllocateFixedArray(2); |
if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
} |
FixedArray* pair = FixedArray::cast(obj); |
@@ -6277,7 +6277,7 @@ MaybeObject* CodeCacheHashTable::Put(Name* name, Code* code) { |
int entry = cache->FindInsertionEntry(key.Hash()); |
Object* k; |
- { MaybeObject* maybe_k = key.AsObject(); |
+ { MaybeObject* maybe_k = key.AsObject(GetHeap()); |
if (!maybe_k->ToObject(&k)) return maybe_k; |
} |
@@ -6410,13 +6410,13 @@ class PolymorphicCodeCacheHashTableKey : public HashTableKey { |
return MapsHashHelper(&other_maps, other_flags); |
} |
- MUST_USE_RESULT MaybeObject* AsObject() { |
+ MUST_USE_RESULT MaybeObject* AsObject(Heap* heap) { |
Object* obj; |
// The maps in |maps_| must be copied to a newly allocated FixedArray, |
// both because the referenced MapList is short-lived, and because C++ |
// objects can't be stored in the heap anyway. |
{ MaybeObject* maybe_obj = |
- HEAP->AllocateUninitializedFixedArray(maps_->length() + 1); |
+ heap->AllocateUninitializedFixedArray(maps_->length() + 1); |
if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
} |
FixedArray* list = FixedArray::cast(obj); |
@@ -6466,7 +6466,7 @@ MaybeObject* PolymorphicCodeCacheHashTable::Put(MapHandleList* maps, |
PolymorphicCodeCacheHashTable* cache = |
reinterpret_cast<PolymorphicCodeCacheHashTable*>(obj); |
int entry = cache->FindInsertionEntry(key.Hash()); |
- { MaybeObject* maybe_obj = key.AsObject(); |
+ { MaybeObject* maybe_obj = key.AsObject(GetHeap()); |
if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
} |
cache->set(EntryToIndex(entry), obj); |
@@ -11754,7 +11754,7 @@ class StringKey : public HashTableKey { |
uint32_t HashForObject(Object* other) { return String::cast(other)->Hash(); } |
- Object* AsObject() { return string_; } |
+ Object* AsObject(Heap* heap) { return string_; } |
String* string_; |
uint32_t hash_; |
@@ -11829,9 +11829,9 @@ class StringSharedKey : public HashTableKey { |
source, shared, language_mode, scope_position); |
} |
- MUST_USE_RESULT MaybeObject* AsObject() { |
+ MUST_USE_RESULT MaybeObject* AsObject(Heap* heap) { |
Object* obj; |
- { MaybeObject* maybe_obj = source_->GetHeap()->AllocateFixedArray(4); |
+ { MaybeObject* maybe_obj = heap->AllocateFixedArray(4); |
if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
} |
FixedArray* other_array = FixedArray::cast(obj); |
@@ -11869,7 +11869,7 @@ class RegExpKey : public HashTableKey { |
uint32_t Hash() { return RegExpHash(string_, flags_); } |
- Object* AsObject() { |
+ Object* AsObject(Heap* heap) { |
// Plain hash maps, which is where regexp keys are used, don't |
// use this function. |
UNREACHABLE(); |
@@ -11912,10 +11912,11 @@ class Utf8StringKey : public HashTableKey { |
return String::cast(other)->Hash(); |
} |
- MaybeObject* AsObject() { |
+ MaybeObject* AsObject(Heap* heap) { |
if (hash_field_ == 0) Hash(); |
- return Isolate::Current()->heap()->AllocateInternalizedStringFromUtf8( |
- string_, chars_, hash_field_); |
+ return heap->AllocateInternalizedStringFromUtf8(string_, |
+ chars_, |
+ hash_field_); |
} |
Vector<const char> string_; |
@@ -11962,9 +11963,9 @@ class OneByteStringKey : public SequentialStringKey<uint8_t> { |
return String::cast(string)->IsOneByteEqualTo(string_); |
} |
- MaybeObject* AsObject() { |
+ MaybeObject* AsObject(Heap* heap) { |
if (hash_field_ == 0) Hash(); |
- return HEAP->AllocateOneByteInternalizedString(string_, hash_field_); |
+ return heap->AllocateOneByteInternalizedString(string_, hash_field_); |
} |
}; |
@@ -11997,10 +11998,10 @@ class SubStringOneByteStringKey : public HashTableKey { |
return String::cast(string)->IsOneByteEqualTo(chars); |
} |
- MaybeObject* AsObject() { |
+ MaybeObject* AsObject(Heap* heap) { |
if (hash_field_ == 0) Hash(); |
Vector<const uint8_t> chars(string_->GetChars() + from_, length_); |
- return HEAP->AllocateOneByteInternalizedString(chars, hash_field_); |
+ return heap->AllocateOneByteInternalizedString(chars, hash_field_); |
} |
private: |
@@ -12020,9 +12021,9 @@ class TwoByteStringKey : public SequentialStringKey<uc16> { |
return String::cast(string)->IsTwoByteEqualTo(string_); |
} |
- MaybeObject* AsObject() { |
+ MaybeObject* AsObject(Heap* heap) { |
if (hash_field_ == 0) Hash(); |
- return HEAP->AllocateTwoByteInternalizedString(string_, hash_field_); |
+ return heap->AllocateTwoByteInternalizedString(string_, hash_field_); |
} |
}; |
@@ -12043,11 +12044,10 @@ class InternalizedStringKey : public HashTableKey { |
return String::cast(other)->Hash(); |
} |
- MaybeObject* AsObject() { |
+ MaybeObject* AsObject(Heap* heap) { |
// Attempt to flatten the string, so that internalized strings will most |
// often be flat strings. |
string_ = string_->TryFlattenGetString(); |
- Heap* heap = string_->GetHeap(); |
// Internalize the string if possible. |
Map* map = heap->InternalizedStringMapForString(string_); |
if (map != NULL) { |
@@ -12871,7 +12871,7 @@ class TwoCharHashTableKey : public HashTableKey { |
return String::cast(key)->Hash(); |
} |
- Object* AsObject() { |
+ Object* AsObject(Heap* heap) { |
// The TwoCharHashTableKey is only used for looking in the string |
// table, not for adding to it. |
UNREACHABLE(); |
@@ -12960,7 +12960,7 @@ MaybeObject* StringTable::LookupKey(HashTableKey* key, Object** s) { |
// Create string object. |
Object* string; |
- { MaybeObject* maybe_string = key->AsObject(); |
+ { MaybeObject* maybe_string = key->AsObject(GetHeap()); |
if (!maybe_string->ToObject(&string)) return maybe_string; |
} |
@@ -13037,7 +13037,7 @@ MaybeObject* CompilationCacheTable::Put(String* src, |
if (!maybe_cache->To(&cache)) return maybe_cache; |
Object* k; |
- MaybeObject* maybe_k = key.AsObject(); |
+ MaybeObject* maybe_k = key.AsObject(GetHeap()); |
if (!maybe_k->To(&k)) return maybe_k; |
int entry = cache->FindInsertionEntry(key.Hash()); |
@@ -13066,7 +13066,7 @@ MaybeObject* CompilationCacheTable::PutEval(String* src, |
int entry = cache->FindInsertionEntry(key.Hash()); |
Object* k; |
- { MaybeObject* maybe_k = key.AsObject(); |
+ { MaybeObject* maybe_k = key.AsObject(GetHeap()); |
if (!maybe_k->ToObject(&k)) return maybe_k; |
} |
@@ -13140,7 +13140,7 @@ class StringsKey : public HashTableKey { |
return hash; |
} |
- Object* AsObject() { return strings_; } |
+ Object* AsObject(Heap* heap) { return strings_; } |
private: |
FixedArray* strings_; |
@@ -13304,7 +13304,7 @@ MaybeObject* Dictionary<Shape, Key>::AtPut(Key key, Object* value) { |
} |
Object* k; |
- { MaybeObject* maybe_k = Shape::AsObject(this->GetIsolate(), key); |
+ { MaybeObject* maybe_k = Shape::AsObject(this->GetHeap(), key); |
if (!maybe_k->ToObject(&k)) return maybe_k; |
} |
PropertyDetails details = PropertyDetails(NONE, NORMAL); |
@@ -13341,7 +13341,7 @@ MaybeObject* Dictionary<Shape, Key>::AddEntry(Key key, |
uint32_t hash) { |
// Compute the key object. |
Object* k; |
- { MaybeObject* maybe_k = Shape::AsObject(this->GetIsolate(), key); |
+ { MaybeObject* maybe_k = Shape::AsObject(this->GetHeap(), key); |
if (!maybe_k->ToObject(&k)) return maybe_k; |
} |
@@ -13442,7 +13442,7 @@ MaybeObject* SeededNumberDictionary::Set(uint32_t key, |
details.type(), |
DetailsAt(entry).dictionary_index()); |
MaybeObject* maybe_object_key = |
- SeededNumberDictionaryShape::AsObject(GetIsolate(), key); |
+ SeededNumberDictionaryShape::AsObject(GetHeap(), key); |
Object* object_key; |
if (!maybe_object_key->ToObject(&object_key)) return maybe_object_key; |
SetEntry(entry, object_key, value, details); |
@@ -13455,7 +13455,7 @@ MaybeObject* UnseededNumberDictionary::Set(uint32_t key, |
int entry = FindEntry(key); |
if (entry == kNotFound) return AddNumberEntry(key, value); |
MaybeObject* maybe_object_key = |
- UnseededNumberDictionaryShape::AsObject(GetIsolate(), key); |
+ UnseededNumberDictionaryShape::AsObject(GetHeap(), key); |
Object* object_key; |
if (!maybe_object_key->ToObject(&object_key)) return maybe_object_key; |
SetEntry(entry, object_key, value); |