From 6d47753059b2d1a5481a24c305b6ac5f118b784d Mon Sep 17 00:00:00 2001 From: "ishell@chromium.org" Date: Fri, 25 Apr 2014 08:03:52 +0000 Subject: [PATCH] Dictionary::DeleteProperty() handlified. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/250023002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20958 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/objects.cc | 48 ++++++++++++------------------------------------ src/objects.h | 4 +--- 2 files changed, 13 insertions(+), 39 deletions(-) diff --git a/src/objects.cc b/src/objects.cc index cf2f73e..696be7c 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -725,7 +725,8 @@ Handle JSObject::DeleteNormalizedProperty(Handle object, PropertyCell::SetValueInferType(cell, value); dictionary->DetailsAtPut(entry, details.AsDeleted()); } else { - Handle deleted(dictionary->DeleteProperty(entry, mode), isolate); + Handle deleted( + NameDictionary::DeleteProperty(dictionary, entry, mode)); if (*deleted == isolate->heap()->true_value()) { Handle new_properties = NameDictionary::Shrink(dictionary, name); @@ -14937,28 +14938,13 @@ Dictionary:: SeededNumberDictionaryShape, uint32_t>::SortMode); -template Object* -Dictionary >::DeleteProperty( - int, JSObject::DeleteMode); - template Handle Dictionary >::DeleteProperty( - Handle > >, - int, - JSObject::DeleteMode); - -template Object* -Dictionary:: - DeleteProperty(int, JSObject::DeleteMode); + Handle, int, JSObject::DeleteMode); template Handle Dictionary:: - DeleteProperty( - Handle >, - int, - JSObject::DeleteMode); + DeleteProperty(Handle, int, JSObject::DeleteMode); template Handle HashTable >:: @@ -15871,31 +15857,21 @@ Handle Dictionary::EnsureCapacity( } -// TODO(ishell): Temporary wrapper until handlified. template Handle Dictionary::DeleteProperty( - Handle > dictionary, + Handle dictionary, int entry, JSObject::DeleteMode mode) { - CALL_HEAP_FUNCTION(dictionary->GetIsolate(), - dictionary->DeleteProperty(entry, mode), - Object); -} - - -template -Object* Dictionary::DeleteProperty( - int entry, - JSReceiver::DeleteMode mode) { - Heap* heap = Dictionary::GetHeap(); - PropertyDetails details = DetailsAt(entry); + Factory* factory = dictionary->GetIsolate()->factory(); + PropertyDetails details = dictionary->DetailsAt(entry); // Ignore attributes if forcing a deletion. if (details.IsDontDelete() && mode != JSReceiver::FORCE_DELETION) { - return heap->false_value(); + return factory->false_value(); } - SetEntry(entry, heap->the_hole_value(), heap->the_hole_value()); - DerivedHashTable::ElementRemoved(); - return heap->true_value(); + dictionary->SetEntry( + entry, *factory->the_hole_value(), *factory->the_hole_value()); + dictionary->ElementRemoved(); + return factory->true_value(); } diff --git a/src/objects.h b/src/objects.h index 502ac80..7378faa 100644 --- a/src/objects.h +++ b/src/objects.h @@ -4017,10 +4017,8 @@ class Dictionary: public HashTable { void CopyValuesTo(FixedArray* elements); // Delete a property from the dictionary. - Object* DeleteProperty(int entry, JSObject::DeleteMode mode); - // TODO(ishell): Temporary wrapper until handlified. static Handle DeleteProperty( - Handle dictionary, + Handle dictionary, int entry, JSObject::DeleteMode mode); -- 2.7.4