Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: src/elements.cc

Issue 2517153002: Introduce set_the_hole(Isolate*, int) and friends (Closed)
Patch Set: merged with master Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/elements.cc
diff --git a/src/elements.cc b/src/elements.cc
index 10fc1be97b165430e40f833f54deb2f8f2d8ecef..2faa9ff9abaf6feba0c107b4168cde3876cc6454 100644
--- a/src/elements.cc
+++ b/src/elements.cc
@@ -185,14 +185,15 @@ static void CopyDictionaryToObjectElements(
WriteBarrierMode write_barrier_mode = IsFastObjectElementsKind(to_kind)
? UPDATE_WRITE_BARRIER
: SKIP_WRITE_BARRIER;
+ Isolate* isolate = from->GetIsolate();
for (int i = 0; i < copy_size; i++) {
int entry = from->FindEntry(i + from_start);
if (entry != SeededNumberDictionary::kNotFound) {
Object* value = from->ValueAt(entry);
- DCHECK(!value->IsTheHole(from->GetIsolate()));
+ DCHECK(!value->IsTheHole(isolate));
to->set(i + to_start, value, write_barrier_mode);
} else {
- to->set_the_hole(i + to_start);
+ to->set_the_hole(isolate, i + to_start);
}
}
}
@@ -761,9 +762,7 @@ class ElementsAccessorBase : public ElementsAccessor {
isolate->heap()->RightTrimFixedArray(*backing_store, capacity - length);
} else {
// Otherwise, fill the unused tail with holes.
- for (uint32_t i = length; i < old_length; i++) {
- BackingStore::cast(*backing_store)->set_the_hole(i);
- }
+ BackingStore::cast(*backing_store)->FillWithHoles(length, old_length);
}
} else {
// Check whether the backing store should be expanded.
@@ -1814,7 +1813,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
}
Isolate* isolate = obj->GetIsolate();
- backing_store->set_the_hole(entry);
+ backing_store->set_the_hole(isolate, entry);
// TODO(verwaest): Move this out of elements.cc.
// If an old space backing store is larger than a certain size and
@@ -3281,7 +3280,7 @@ class SlowSloppyArgumentsElementsAccessor
context->set(context_entry, *value);
// Redefining attributes of an aliased element destroys fast aliasing.
- parameter_map->set_the_hole(entry + 2);
+ parameter_map->set_the_hole(isolate, entry + 2);
// For elements that are still writable we re-establish slow aliasing.
if ((attributes & READ_ONLY) == 0) {
value = isolate->factory()->NewAliasedArgumentsEntry(context_entry);
@@ -3340,7 +3339,7 @@ class FastSloppyArgumentsElementsAccessor
if (entry != kMaxUInt32 && HasEntryImpl(isolate, parameters, entry)) {
elements->set(insertion_index, *GetImpl(parameters, entry));
} else {
- elements->set_the_hole(insertion_index);
+ elements->set_the_hole(isolate, insertion_index);
}
insertion_index++;
}
« no previous file with comments | « no previous file | src/factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698