OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/lookup.h" | 5 #include "src/lookup.h" |
6 | 6 |
7 #include "src/bootstrapper.h" | 7 #include "src/bootstrapper.h" |
8 #include "src/deoptimizer.h" | 8 #include "src/deoptimizer.h" |
9 #include "src/elements.h" | 9 #include "src/elements.h" |
10 #include "src/field-type.h" | 10 #include "src/field-type.h" |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 | 292 |
293 Handle<Map> map(receiver->map(), isolate_); | 293 Handle<Map> map(receiver->map(), isolate_); |
294 | 294 |
295 // Dictionary maps can always have additional data properties. | 295 // Dictionary maps can always have additional data properties. |
296 if (map->is_dictionary_map()) { | 296 if (map->is_dictionary_map()) { |
297 state_ = TRANSITION; | 297 state_ = TRANSITION; |
298 if (map->IsJSGlobalObjectMap()) { | 298 if (map->IsJSGlobalObjectMap()) { |
299 // Install a property cell. | 299 // Install a property cell. |
300 auto cell = JSGlobalObject::EnsurePropertyCell( | 300 auto cell = JSGlobalObject::EnsurePropertyCell( |
301 Handle<JSGlobalObject>::cast(receiver), name()); | 301 Handle<JSGlobalObject>::cast(receiver), name()); |
302 DCHECK(cell->value()->IsTheHole()); | 302 DCHECK(cell->value()->IsTheHole(isolate_)); |
303 transition_ = cell; | 303 transition_ = cell; |
304 } else { | 304 } else { |
305 transition_ = map; | 305 transition_ = map; |
306 } | 306 } |
307 return; | 307 return; |
308 } | 308 } |
309 | 309 |
310 Handle<Map> transition = | 310 Handle<Map> transition = |
311 Map::TransitionToDataProperty(map, name_, value, attributes, store_mode); | 311 Map::TransitionToDataProperty(map, name_, value, attributes, store_mode); |
312 state_ = TRANSITION; | 312 state_ = TRANSITION; |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 } | 686 } |
687 // Fall through. | 687 // Fall through. |
688 case INTERCEPTOR: | 688 case INTERCEPTOR: |
689 if (!is_element && map->IsJSGlobalObjectMap()) { | 689 if (!is_element && map->IsJSGlobalObjectMap()) { |
690 GlobalDictionary* dict = JSObject::cast(holder)->global_dictionary(); | 690 GlobalDictionary* dict = JSObject::cast(holder)->global_dictionary(); |
691 int number = dict->FindEntry(name_); | 691 int number = dict->FindEntry(name_); |
692 if (number == GlobalDictionary::kNotFound) return NOT_FOUND; | 692 if (number == GlobalDictionary::kNotFound) return NOT_FOUND; |
693 number_ = static_cast<uint32_t>(number); | 693 number_ = static_cast<uint32_t>(number); |
694 DCHECK(dict->ValueAt(number_)->IsPropertyCell()); | 694 DCHECK(dict->ValueAt(number_)->IsPropertyCell()); |
695 PropertyCell* cell = PropertyCell::cast(dict->ValueAt(number_)); | 695 PropertyCell* cell = PropertyCell::cast(dict->ValueAt(number_)); |
696 if (cell->value()->IsTheHole()) return NOT_FOUND; | 696 if (cell->value()->IsTheHole(isolate_)) return NOT_FOUND; |
697 property_details_ = cell->property_details(); | 697 property_details_ = cell->property_details(); |
698 has_property_ = true; | 698 has_property_ = true; |
699 switch (property_details_.kind()) { | 699 switch (property_details_.kind()) { |
700 case v8::internal::kData: | 700 case v8::internal::kData: |
701 return DATA; | 701 return DATA; |
702 case v8::internal::kAccessor: | 702 case v8::internal::kAccessor: |
703 return ACCESSOR; | 703 return ACCESSOR; |
704 } | 704 } |
705 } | 705 } |
706 return LookupInRegularHolder<is_element>(map, holder); | 706 return LookupInRegularHolder<is_element>(map, holder); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 case v8::internal::kAccessor: | 753 case v8::internal::kAccessor: |
754 return ACCESSOR; | 754 return ACCESSOR; |
755 } | 755 } |
756 | 756 |
757 UNREACHABLE(); | 757 UNREACHABLE(); |
758 return state_; | 758 return state_; |
759 } | 759 } |
760 | 760 |
761 } // namespace internal | 761 } // namespace internal |
762 } // namespace v8 | 762 } // namespace v8 |
OLD | NEW |