| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 17601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17612 // If the object is in dictionary mode, it is converted to fast elements | 17612 // If the object is in dictionary mode, it is converted to fast elements |
| 17613 // mode. | 17613 // mode. |
| 17614 Handle<Object> JSObject::PrepareElementsForSort(Handle<JSObject> object, | 17614 Handle<Object> JSObject::PrepareElementsForSort(Handle<JSObject> object, |
| 17615 uint32_t limit) { | 17615 uint32_t limit) { |
| 17616 Isolate* isolate = object->GetIsolate(); | 17616 Isolate* isolate = object->GetIsolate(); |
| 17617 if (object->HasSloppyArgumentsElements() || | 17617 if (object->HasSloppyArgumentsElements() || |
| 17618 object->map()->is_observed()) { | 17618 object->map()->is_observed()) { |
| 17619 return handle(Smi::FromInt(-1), isolate); | 17619 return handle(Smi::FromInt(-1), isolate); |
| 17620 } | 17620 } |
| 17621 | 17621 |
| 17622 if (object->HasStringWrapperElements()) { |
| 17623 int len = String::cast(Handle<JSValue>::cast(object)->value())->length(); |
| 17624 return handle(Smi::FromInt(len), isolate); |
| 17625 } |
| 17626 |
| 17622 if (object->HasDictionaryElements()) { | 17627 if (object->HasDictionaryElements()) { |
| 17623 // Convert to fast elements containing only the existing properties. | 17628 // Convert to fast elements containing only the existing properties. |
| 17624 // Ordering is irrelevant, since we are going to sort anyway. | 17629 // Ordering is irrelevant, since we are going to sort anyway. |
| 17625 Handle<SeededNumberDictionary> dict(object->element_dictionary()); | 17630 Handle<SeededNumberDictionary> dict(object->element_dictionary()); |
| 17626 if (object->IsJSArray() || dict->requires_slow_elements() || | 17631 if (object->IsJSArray() || dict->requires_slow_elements() || |
| 17627 dict->max_number_key() >= limit) { | 17632 dict->max_number_key() >= limit) { |
| 17628 return JSObject::PrepareSlowElementsForSort(object, limit); | 17633 return JSObject::PrepareSlowElementsForSort(object, limit); |
| 17629 } | 17634 } |
| 17630 // Convert to fast elements. | 17635 // Convert to fast elements. |
| 17631 | 17636 |
| (...skipping 2168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19800 if (cell->value() != *new_value) { | 19805 if (cell->value() != *new_value) { |
| 19801 cell->set_value(*new_value); | 19806 cell->set_value(*new_value); |
| 19802 Isolate* isolate = cell->GetIsolate(); | 19807 Isolate* isolate = cell->GetIsolate(); |
| 19803 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19808 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19804 isolate, DependentCode::kPropertyCellChangedGroup); | 19809 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19805 } | 19810 } |
| 19806 } | 19811 } |
| 19807 | 19812 |
| 19808 } // namespace internal | 19813 } // namespace internal |
| 19809 } // namespace v8 | 19814 } // namespace v8 |
| OLD | NEW |