Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 6814197662e771a2ce9454ff12726763aa87c3af..02f79c60a1d07861c5b3d964d6f390a626893bc4 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -189,7 +189,7 @@ static void CopyDictionaryToObjectElements( |
int entry = from->FindEntry(i + from_start); |
if (entry != SeededNumberDictionary::kNotFound) { |
Object* value = from->ValueAt(entry); |
- DCHECK(!value->IsTheHole()); |
+ DCHECK(!value->IsTheHole(from->GetIsolate())); |
to->set(i + to_start, value, write_barrier_mode); |
} else { |
to->set_the_hole(i + to_start); |
@@ -352,7 +352,7 @@ static void CopyPackedSmiToDoubleElements(FixedArrayBase* from_base, |
for (uint32_t from_end = from_start + static_cast<uint32_t>(packed_size); |
from_start < from_end; from_start++, to_start++) { |
Object* smi = from->get(from_start); |
- DCHECK(!smi->IsTheHole()); |
+ DCHECK(!smi->IsTheHole(from->GetIsolate())); |
to->set(to_start, Smi::cast(smi)->value()); |
} |
} |
@@ -1256,7 +1256,7 @@ class DictionaryElementsAccessor |
DisallowHeapAllocation no_gc; |
SeededNumberDictionary* dict = SeededNumberDictionary::cast(store); |
Object* index = dict->KeyAt(entry); |
- return !index->IsTheHole(); |
+ return !index->IsTheHole(dict->GetIsolate()); |
} |
static uint32_t GetIndexForEntryImpl(FixedArrayBase* store, uint32_t entry) { |
@@ -1389,7 +1389,7 @@ class DictionaryElementsAccessor |
if (k == *the_hole) continue; |
if (dictionary->IsDeleted(i)) continue; |
Object* value = dictionary->ValueAt(i); |
- DCHECK(!value->IsTheHole()); |
+ DCHECK(!value->IsTheHole(isolate)); |
DCHECK(!value->IsAccessorPair()); |
DCHECK(!value->IsAccessorInfo()); |
accumulator->AddKey(value, convert); |
@@ -1820,7 +1820,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> { |
} |
Subclass::SetLengthImpl(isolate, receiver, new_length, backing_store); |
- if (IsHoleyElementsKind(kind) && result->IsTheHole()) { |
+ if (IsHoleyElementsKind(kind) && result->IsTheHole(isolate)) { |
return isolate->factory()->undefined_value(); |
} |
return result; |
@@ -1872,7 +1872,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> { |
WriteBarrierMode mode = raw_backing_store->GetWriteBarrierMode(no_gc); |
for (uint32_t i = 0; i < copy_size; i++) { |
Object* argument = (*args)[src_index + i]; |
- DCHECK(!argument->IsTheHole()); |
+ DCHECK(!argument->IsTheHole(raw_backing_store->GetIsolate())); |
Subclass::SetImpl(raw_backing_store, dst_index + i, argument, mode); |
} |
} |
@@ -2249,7 +2249,7 @@ class SloppyArgumentsElementsAccessor |
Object* probe = parameter_map->get(entry + 2); |
Context* context = Context::cast(parameter_map->get(0)); |
int context_entry = Smi::cast(probe)->value(); |
- DCHECK(!context->get(context_entry)->IsTheHole()); |
+ DCHECK(!context->get(context_entry)->IsTheHole(isolate)); |
return handle(context->get(context_entry), isolate); |
} else { |
// Object is not mapped, defer to the arguments. |
@@ -2261,7 +2261,7 @@ class SloppyArgumentsElementsAccessor |
AliasedArgumentsEntry* alias = AliasedArgumentsEntry::cast(*result); |
Context* context = Context::cast(parameter_map->get(0)); |
int context_entry = alias->aliased_context_slot(); |
- DCHECK(!context->get(context_entry)->IsTheHole()); |
+ DCHECK(!context->get(context_entry)->IsTheHole(isolate)); |
return handle(context->get(context_entry), isolate); |
} |
return result; |
@@ -2286,7 +2286,7 @@ class SloppyArgumentsElementsAccessor |
Object* probe = parameter_map->get(entry + 2); |
Context* context = Context::cast(parameter_map->get(0)); |
int context_entry = Smi::cast(probe)->value(); |
- DCHECK(!context->get(context_entry)->IsTheHole()); |
+ DCHECK(!context->get(context_entry)->IsTheHole(store->GetIsolate())); |
context->set(context_entry, value); |
} else { |
FixedArray* arguments = FixedArray::cast(parameter_map->get(1)); |
@@ -2295,7 +2295,7 @@ class SloppyArgumentsElementsAccessor |
AliasedArgumentsEntry* alias = AliasedArgumentsEntry::cast(current); |
Context* context = Context::cast(parameter_map->get(0)); |
int context_entry = alias->aliased_context_slot(); |
- DCHECK(!context->get(context_entry)->IsTheHole()); |
+ DCHECK(!context->get(context_entry)->IsTheHole(store->GetIsolate())); |
context->set(context_entry, value); |
} else { |
ArgumentsAccessor::SetImpl(arguments, entry - length, value); |
@@ -2334,7 +2334,8 @@ class SloppyArgumentsElementsAccessor |
FixedArray* parameter_map = FixedArray::cast(parameters); |
uint32_t length = parameter_map->length() - 2; |
if (entry < length) { |
- return !GetParameterMapArg(parameter_map, entry)->IsTheHole(); |
+ return !GetParameterMapArg(parameter_map, entry) |
+ ->IsTheHole(parameter_map->GetIsolate()); |
} |
FixedArrayBase* arguments = FixedArrayBase::cast(parameter_map->get(1)); |
@@ -2363,7 +2364,7 @@ class SloppyArgumentsElementsAccessor |
uint32_t index, PropertyFilter filter) { |
FixedArray* parameter_map = FixedArray::cast(parameters); |
Object* probe = GetParameterMapArg(parameter_map, index); |
- if (!probe->IsTheHole()) return index; |
+ if (!probe->IsTheHole(holder->GetIsolate())) return index; |
FixedArray* arguments = FixedArray::cast(parameter_map->get(1)); |
uint32_t entry = ArgumentsAccessor::GetEntryForIndexImpl(holder, arguments, |
@@ -2427,7 +2428,7 @@ class SloppyArgumentsElementsAccessor |
uint32_t length = parameter_map->length() - 2; |
for (uint32_t i = 0; i < length; ++i) { |
- if (parameter_map->get(i + 2)->IsTheHole()) continue; |
+ if (parameter_map->get(i + 2)->IsTheHole(isolate)) continue; |
if (convert == GetKeysConversion::kConvertToString) { |
Handle<String> index_string = isolate->factory()->Uint32ToString(i); |
list->set(insertion_index, *index_string); |
@@ -2496,25 +2497,25 @@ class SlowSloppyArgumentsElementsAccessor |
PropertyAttributes attributes) { |
Handle<FixedArray> parameter_map = Handle<FixedArray>::cast(store); |
uint32_t length = parameter_map->length() - 2; |
+ Isolate* isolate = store->GetIsolate(); |
if (entry < length) { |
Object* probe = parameter_map->get(entry + 2); |
- DCHECK(!probe->IsTheHole()); |
+ DCHECK(!probe->IsTheHole(isolate)); |
Context* context = Context::cast(parameter_map->get(0)); |
int context_entry = Smi::cast(probe)->value(); |
- DCHECK(!context->get(context_entry)->IsTheHole()); |
+ DCHECK(!context->get(context_entry)->IsTheHole(isolate)); |
context->set(context_entry, *value); |
// Redefining attributes of an aliased element destroys fast aliasing. |
parameter_map->set_the_hole(entry + 2); |
// For elements that are still writable we re-establish slow aliasing. |
if ((attributes & READ_ONLY) == 0) { |
- Isolate* isolate = store->GetIsolate(); |
value = isolate->factory()->NewAliasedArgumentsEntry(context_entry); |
} |
PropertyDetails details(attributes, DATA, 0, PropertyCellType::kNoCell); |
Handle<SeededNumberDictionary> arguments( |
- SeededNumberDictionary::cast(parameter_map->get(1))); |
+ SeededNumberDictionary::cast(parameter_map->get(1)), isolate); |
arguments = SeededNumberDictionary::AddNumberEntry( |
arguments, entry, value, details, object->map()->is_prototype_map()); |
// If the attributes were NONE, we would have called set rather than |
@@ -2524,7 +2525,7 @@ class SlowSloppyArgumentsElementsAccessor |
parameter_map->set(1, *arguments); |
} else { |
Handle<FixedArrayBase> arguments( |
- FixedArrayBase::cast(parameter_map->get(1))); |
+ FixedArrayBase::cast(parameter_map->get(1)), isolate); |
DictionaryElementsAccessor::ReconfigureImpl( |
object, arguments, entry - length, value, attributes); |
} |