| 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 8255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8266 FixedArray* elements = FixedArray::cast(object->elements()); | 8266 FixedArray* elements = FixedArray::cast(object->elements()); |
| 8267 int length = object->IsJSArray() | 8267 int length = object->IsJSArray() |
| 8268 ? Smi::cast(JSArray::cast(object)->length())->value() | 8268 ? Smi::cast(JSArray::cast(object)->length())->value() |
| 8269 : elements->length(); | 8269 : elements->length(); |
| 8270 for (int i = 0; i < length; i++) { | 8270 for (int i = 0; i < length; i++) { |
| 8271 if (!elements->is_the_hole(i)) return true; | 8271 if (!elements->is_the_hole(i)) return true; |
| 8272 } | 8272 } |
| 8273 return false; | 8273 return false; |
| 8274 } | 8274 } |
| 8275 case FAST_HOLEY_DOUBLE_ELEMENTS: { | 8275 case FAST_HOLEY_DOUBLE_ELEMENTS: { |
| 8276 FixedDoubleArray* elements = FixedDoubleArray::cast(object->elements()); | |
| 8277 int length = object->IsJSArray() | 8276 int length = object->IsJSArray() |
| 8278 ? Smi::cast(JSArray::cast(object)->length())->value() | 8277 ? Smi::cast(JSArray::cast(object)->length())->value() |
| 8279 : elements->length(); | 8278 : object->elements()->length(); |
| 8279 // Zero-length arrays would use the empty FixedArray... |
| 8280 if (length == 0) return false; |
| 8281 // ...so only cast to FixedDoubleArray otherwise. |
| 8282 FixedDoubleArray* elements = FixedDoubleArray::cast(object->elements()); |
| 8280 for (int i = 0; i < length; i++) { | 8283 for (int i = 0; i < length; i++) { |
| 8281 if (!elements->is_the_hole(i)) return true; | 8284 if (!elements->is_the_hole(i)) return true; |
| 8282 } | 8285 } |
| 8283 return false; | 8286 return false; |
| 8284 } | 8287 } |
| 8285 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 8288 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ |
| 8286 case TYPE##_ELEMENTS: | 8289 case TYPE##_ELEMENTS: |
| 8287 | 8290 |
| 8288 TYPED_ARRAYS(TYPED_ARRAY_CASE) | 8291 TYPED_ARRAYS(TYPED_ARRAY_CASE) |
| 8289 #undef TYPED_ARRAY_CASE | 8292 #undef TYPED_ARRAY_CASE |
| (...skipping 11314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19604 if (cell->value() != *new_value) { | 19607 if (cell->value() != *new_value) { |
| 19605 cell->set_value(*new_value); | 19608 cell->set_value(*new_value); |
| 19606 Isolate* isolate = cell->GetIsolate(); | 19609 Isolate* isolate = cell->GetIsolate(); |
| 19607 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19610 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19608 isolate, DependentCode::kPropertyCellChangedGroup); | 19611 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19609 } | 19612 } |
| 19610 } | 19613 } |
| 19611 | 19614 |
| 19612 } // namespace internal | 19615 } // namespace internal |
| 19613 } // namespace v8 | 19616 } // namespace v8 |
| OLD | NEW |