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

Side by Side Diff: src/objects.cc

Issue 1313303002: Do not inline array resize operations for outdated prototype maps. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months 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 unified diff | Download patch
« no previous file with comments | « src/hydrogen.cc ('k') | test/mjsunit/regress/regress-crbug-523213.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/objects.h" 5 #include "src/objects.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 1758 matching lines...) Expand 10 before | Expand all | Expand 10 after
1769 // registers with its new prototype now. This preserves the invariant that 1769 // registers with its new prototype now. This preserves the invariant that
1770 // when a map on a prototype chain is registered with its prototype, then 1770 // when a map on a prototype chain is registered with its prototype, then
1771 // all prototypes further up the chain are also registered with their 1771 // all prototypes further up the chain are also registered with their
1772 // respective prototypes. 1772 // respective prototypes.
1773 UpdatePrototypeUserRegistration(old_map, new_map, new_map->GetIsolate()); 1773 UpdatePrototypeUserRegistration(old_map, new_map, new_map->GetIsolate());
1774 1774
1775 if (object->HasFastProperties()) { 1775 if (object->HasFastProperties()) {
1776 if (!new_map->is_dictionary_map()) { 1776 if (!new_map->is_dictionary_map()) {
1777 MigrateFastToFast(object, new_map); 1777 MigrateFastToFast(object, new_map);
1778 if (old_map->is_prototype_map()) { 1778 if (old_map->is_prototype_map()) {
1779 DCHECK(!old_map->is_stable());
1780 DCHECK(new_map->is_stable());
1779 // Clear out the old descriptor array to avoid problems to sharing 1781 // Clear out the old descriptor array to avoid problems to sharing
1780 // the descriptor array without using an explicit. 1782 // the descriptor array without using an explicit.
1781 old_map->InitializeDescriptors( 1783 old_map->InitializeDescriptors(
1782 old_map->GetHeap()->empty_descriptor_array(), 1784 old_map->GetHeap()->empty_descriptor_array(),
1783 LayoutDescriptor::FastPointerLayout()); 1785 LayoutDescriptor::FastPointerLayout());
1784 // Ensure that no transition was inserted for prototype migrations. 1786 // Ensure that no transition was inserted for prototype migrations.
1785 DCHECK_EQ(0, TransitionArray::NumberOfTransitions( 1787 DCHECK_EQ(0, TransitionArray::NumberOfTransitions(
1786 old_map->raw_transitions())); 1788 old_map->raw_transitions()));
1787 DCHECK(new_map->GetBackPointer()->IsUndefined()); 1789 DCHECK(new_map->GetBackPointer()->IsUndefined());
1788 } 1790 }
(...skipping 13879 matching lines...) Expand 10 before | Expand all | Expand 10 after
15668 if (cell->value() != *new_value) { 15670 if (cell->value() != *new_value) {
15669 cell->set_value(*new_value); 15671 cell->set_value(*new_value);
15670 Isolate* isolate = cell->GetIsolate(); 15672 Isolate* isolate = cell->GetIsolate();
15671 cell->dependent_code()->DeoptimizeDependentCodeGroup( 15673 cell->dependent_code()->DeoptimizeDependentCodeGroup(
15672 isolate, DependentCode::kPropertyCellChangedGroup); 15674 isolate, DependentCode::kPropertyCellChangedGroup);
15673 } 15675 }
15674 } 15676 }
15675 15677
15676 } // namespace internal 15678 } // namespace internal
15677 } // namespace v8 15679 } // namespace v8
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | test/mjsunit/regress/regress-crbug-523213.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698