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

Side by Side Diff: src/map-updater.cc

Issue 2644853003: [runtime] Always request kMutable constness when reconfiguring to a field. (Closed)
Patch Set: Created 3 years, 11 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 the V8 project authors. All rights reserved. 1 // Copyright 2017 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/map-updater.h" 5 #include "src/map-updater.h"
6 6
7 #include "src/field-type.h" 7 #include "src/field-type.h"
8 #include "src/handles.h" 8 #include "src/handles.h"
9 #include "src/isolate.h" 9 #include "src/isolate.h"
10 #include "src/objects-inl.h" 10 #include "src/objects-inl.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 new_kind_ = kData; 94 new_kind_ = kData;
95 new_attributes_ = attributes; 95 new_attributes_ = attributes;
96 new_location_ = kField; 96 new_location_ = kField;
97 97
98 PropertyDetails old_details = 98 PropertyDetails old_details =
99 old_descriptors_->GetDetails(modified_descriptor_); 99 old_descriptors_->GetDetails(modified_descriptor_);
100 100
101 // If property kind is not reconfigured merge the result with 101 // If property kind is not reconfigured merge the result with
102 // representation/field type from the old descriptor. 102 // representation/field type from the old descriptor.
103 if (old_details.kind() == new_kind_) { 103 if (old_details.kind() == new_kind_) {
104 new_constness_ = old_details.constness(); 104 new_constness_ = kMutable;
105 105
106 Representation old_representation = old_details.representation(); 106 Representation old_representation = old_details.representation();
107 new_representation_ = representation.generalize(old_representation); 107 new_representation_ = representation.generalize(old_representation);
108 108
109 Handle<FieldType> old_field_type = 109 Handle<FieldType> old_field_type =
110 GetOrComputeFieldType(old_descriptors_, modified_descriptor_, 110 GetOrComputeFieldType(old_descriptors_, modified_descriptor_,
111 old_details.location(), new_representation_); 111 old_details.location(), new_representation_);
112 112
113 new_field_type_ = 113 new_field_type_ =
114 Map::GeneralizeFieldType(old_representation, old_field_type, 114 Map::GeneralizeFieldType(old_representation, old_field_type,
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 // the new descriptors to maintain descriptors sharing invariant. 630 // the new descriptors to maintain descriptors sharing invariant.
631 split_map->ReplaceDescriptors(*new_descriptors, *new_layout_descriptor); 631 split_map->ReplaceDescriptors(*new_descriptors, *new_layout_descriptor);
632 632
633 result_map_ = new_map; 633 result_map_ = new_map;
634 state_ = kEnd; 634 state_ = kEnd;
635 return state_; // Done. 635 return state_; // Done.
636 } 636 }
637 637
638 } // namespace internal 638 } // namespace internal
639 } // namespace v8 639 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698