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 9709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9720 } | 9720 } |
9721 | 9721 |
9722 Handle<Object> maybe_pair(old_descriptors->GetValue(descriptor), isolate); | 9722 Handle<Object> maybe_pair(old_descriptors->GetValue(descriptor), isolate); |
9723 if (!maybe_pair->IsAccessorPair()) { | 9723 if (!maybe_pair->IsAccessorPair()) { |
9724 return Map::Normalize(map, mode, "AccessorsOverwritingNonPair"); | 9724 return Map::Normalize(map, mode, "AccessorsOverwritingNonPair"); |
9725 } | 9725 } |
9726 | 9726 |
9727 Object* current = Handle<AccessorPair>::cast(maybe_pair)->get(component); | 9727 Object* current = Handle<AccessorPair>::cast(maybe_pair)->get(component); |
9728 if (current == *accessor) return map; | 9728 if (current == *accessor) return map; |
9729 | 9729 |
9730 if (!current->IsTheHole()) { | 9730 if (!current->IsNull()) { |
9731 return Map::Normalize(map, mode, "AccessorsOverwritingAccessors"); | 9731 return Map::Normalize(map, mode, "AccessorsOverwritingAccessors"); |
9732 } | 9732 } |
9733 | 9733 |
9734 pair = AccessorPair::Copy(Handle<AccessorPair>::cast(maybe_pair)); | 9734 pair = AccessorPair::Copy(Handle<AccessorPair>::cast(maybe_pair)); |
9735 } else if (map->NumberOfOwnDescriptors() >= kMaxNumberOfDescriptors || | 9735 } else if (map->NumberOfOwnDescriptors() >= kMaxNumberOfDescriptors || |
9736 map->TooManyFastProperties(CERTAINLY_NOT_STORE_FROM_KEYED)) { | 9736 map->TooManyFastProperties(CERTAINLY_NOT_STORE_FROM_KEYED)) { |
9737 return Map::Normalize(map, CLEAR_INOBJECT_PROPERTIES, "TooManyAccessors"); | 9737 return Map::Normalize(map, CLEAR_INOBJECT_PROPERTIES, "TooManyAccessors"); |
9738 } else { | 9738 } else { |
9739 pair = isolate->factory()->NewAccessorPair(); | 9739 pair = isolate->factory()->NewAccessorPair(); |
9740 } | 9740 } |
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10334 | 10334 |
10335 Handle<Object> AccessorPair::GetComponent(Handle<AccessorPair> accessor_pair, | 10335 Handle<Object> AccessorPair::GetComponent(Handle<AccessorPair> accessor_pair, |
10336 AccessorComponent component) { | 10336 AccessorComponent component) { |
10337 Object* accessor = accessor_pair->get(component); | 10337 Object* accessor = accessor_pair->get(component); |
10338 if (accessor->IsFunctionTemplateInfo()) { | 10338 if (accessor->IsFunctionTemplateInfo()) { |
10339 return ApiNatives::InstantiateFunction( | 10339 return ApiNatives::InstantiateFunction( |
10340 handle(FunctionTemplateInfo::cast(accessor))) | 10340 handle(FunctionTemplateInfo::cast(accessor))) |
10341 .ToHandleChecked(); | 10341 .ToHandleChecked(); |
10342 } | 10342 } |
10343 Isolate* isolate = accessor_pair->GetIsolate(); | 10343 Isolate* isolate = accessor_pair->GetIsolate(); |
10344 if (accessor->IsTheHole()) { | 10344 if (accessor->IsNull()) { |
10345 return isolate->factory()->undefined_value(); | 10345 return isolate->factory()->undefined_value(); |
10346 } | 10346 } |
10347 return handle(accessor, isolate); | 10347 return handle(accessor, isolate); |
10348 } | 10348 } |
10349 | 10349 |
10350 Handle<DeoptimizationInputData> DeoptimizationInputData::New( | 10350 Handle<DeoptimizationInputData> DeoptimizationInputData::New( |
10351 Isolate* isolate, int deopt_entry_count, PretenureFlag pretenure) { | 10351 Isolate* isolate, int deopt_entry_count, PretenureFlag pretenure) { |
10352 return Handle<DeoptimizationInputData>::cast( | 10352 return Handle<DeoptimizationInputData>::cast( |
10353 isolate->factory()->NewFixedArray(LengthFor(deopt_entry_count), | 10353 isolate->factory()->NewFixedArray(LengthFor(deopt_entry_count), |
10354 pretenure)); | 10354 pretenure)); |
(...skipping 8477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18832 if (cell->value() != *new_value) { | 18832 if (cell->value() != *new_value) { |
18833 cell->set_value(*new_value); | 18833 cell->set_value(*new_value); |
18834 Isolate* isolate = cell->GetIsolate(); | 18834 Isolate* isolate = cell->GetIsolate(); |
18835 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18835 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
18836 isolate, DependentCode::kPropertyCellChangedGroup); | 18836 isolate, DependentCode::kPropertyCellChangedGroup); |
18837 } | 18837 } |
18838 } | 18838 } |
18839 | 18839 |
18840 } // namespace internal | 18840 } // namespace internal |
18841 } // namespace v8 | 18841 } // namespace v8 |
OLD | NEW |