From: rafaelw@chromium.org Date: Wed, 23 Oct 2013 22:02:14 +0000 (+0000) Subject: Handlify Map::CopyInstallDescriptors X-Git-Tag: upstream/4.7.83~11980 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f719a45f18369e19e0aa2a7c96016a38fa6f5d7f;p=platform%2Fupstream%2Fv8.git Handlify Map::CopyInstallDescriptors BUG= R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/34603008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/objects.cc b/src/objects.cc index 71c3285..feca669 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -6837,31 +6837,21 @@ MaybeObject* Map::CopyReplaceDescriptors(DescriptorArray* descriptors, } +// Since this method is used to rewrite an existing transition tree, it can +// always insert transitions without checking. Handle Map::CopyInstallDescriptors(Handle map, int new_descriptor, Handle descriptors) { - CALL_HEAP_FUNCTION(map->GetIsolate(), - map->CopyInstallDescriptors(new_descriptor, *descriptors), - Map); -} - - -// Since this method is used to rewrite an existing transition tree, it can -// always insert transitions without checking. -MaybeObject* Map::CopyInstallDescriptors(int new_descriptor, - DescriptorArray* descriptors) { ASSERT(descriptors->IsSortedNoDuplicates()); - Map* result; - MaybeObject* maybe_result = CopyDropDescriptors(); - if (!maybe_result->To(&result)) return maybe_result; + Handle result = Map::CopyDropDescriptors(map); - result->InitializeDescriptors(descriptors); + result->InitializeDescriptors(*descriptors); result->SetNumberOfOwnDescriptors(new_descriptor + 1); - int unused_property_fields = this->unused_property_fields(); + int unused_property_fields = map->unused_property_fields(); if (descriptors->GetDetails(new_descriptor).type() == FIELD) { - unused_property_fields = this->unused_property_fields() - 1; + unused_property_fields = map->unused_property_fields() - 1; if (unused_property_fields < 0) { unused_property_fields += JSObject::kFieldsAdded; } @@ -6870,14 +6860,12 @@ MaybeObject* Map::CopyInstallDescriptors(int new_descriptor, result->set_unused_property_fields(unused_property_fields); result->set_owns_descriptors(false); - Name* name = descriptors->GetKey(new_descriptor); - TransitionArray* transitions; - MaybeObject* maybe_transitions = - AddTransition(name, result, SIMPLE_TRANSITION); - if (!maybe_transitions->To(&transitions)) return maybe_transitions; + Handle name = handle(descriptors->GetKey(new_descriptor)); + Handle transitions = Map::AddTransition(map, name, result, + SIMPLE_TRANSITION); - set_transitions(transitions); - result->SetBackPointer(this); + map->set_transitions(*transitions); + result->SetBackPointer(*map); return result; } diff --git a/src/objects.h b/src/objects.h index 200097a..431f8b8 100644 --- a/src/objects.h +++ b/src/objects.h @@ -5983,9 +5983,6 @@ class Map: public HeapObject { Handle map, int new_descriptor, Handle descriptors); - MUST_USE_RESULT MaybeObject* CopyInstallDescriptors( - int new_descriptor, - DescriptorArray* descriptors); MUST_USE_RESULT MaybeObject* ShareDescriptor(DescriptorArray* descriptors, Descriptor* descriptor); MUST_USE_RESULT MaybeObject* CopyAddDescriptor(Descriptor* descriptor,