OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 6590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6601 isolate->Throw(*isolate->factory()->NewTypeError( | 6601 isolate->Throw(*isolate->factory()->NewTypeError( |
6602 MessageTemplate::kStrictDeleteProperty, | 6602 MessageTemplate::kStrictDeleteProperty, |
6603 isolate->factory()->NewNumberFromUint(actual_new_len - 1), a)); | 6603 isolate->factory()->NewNumberFromUint(actual_new_len - 1), a)); |
6604 } | 6604 } |
6605 return success; | 6605 return success; |
6606 } | 6606 } |
6607 | 6607 |
6608 | 6608 |
6609 // static | 6609 // static |
6610 bool JSReceiver::GetOwnPropertyDescriptor(Isolate* isolate, | 6610 bool JSReceiver::GetOwnPropertyDescriptor(Isolate* isolate, |
6611 Handle<JSObject> object, | 6611 Handle<JSReceiver> object, |
6612 Handle<Object> key, | 6612 Handle<Object> key, |
6613 PropertyDescriptor* desc) { | 6613 PropertyDescriptor* desc) { |
6614 bool success = false; | 6614 bool success = false; |
6615 DCHECK(key->IsName() || key->IsNumber()); // |key| is a PropertyKey... | 6615 DCHECK(key->IsName() || key->IsNumber()); // |key| is a PropertyKey... |
6616 LookupIterator it = LookupIterator::PropertyOrElement( | 6616 LookupIterator it = LookupIterator::PropertyOrElement( |
6617 isolate, object, key, &success, LookupIterator::HIDDEN); | 6617 isolate, object, key, &success, LookupIterator::HIDDEN); |
6618 DCHECK(success); // ...so creating a LookupIterator can't fail. | 6618 DCHECK(success); // ...so creating a LookupIterator can't fail. |
6619 return GetOwnPropertyDescriptor(&it, desc); | 6619 return GetOwnPropertyDescriptor(&it, desc); |
6620 } | 6620 } |
6621 | 6621 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6665 desc->set_get(handle(accessors->GetComponent(ACCESSOR_GETTER), isolate)); | 6665 desc->set_get(handle(accessors->GetComponent(ACCESSOR_GETTER), isolate)); |
6666 // 6b. Set D.[[Set]] to the value of X's [[Set]] attribute. | 6666 // 6b. Set D.[[Set]] to the value of X's [[Set]] attribute. |
6667 desc->set_set(handle(accessors->GetComponent(ACCESSOR_SETTER), isolate)); | 6667 desc->set_set(handle(accessors->GetComponent(ACCESSOR_SETTER), isolate)); |
6668 } | 6668 } |
6669 | 6669 |
6670 // 7. Set D.[[Enumerable]] to the value of X's [[Enumerable]] attribute. | 6670 // 7. Set D.[[Enumerable]] to the value of X's [[Enumerable]] attribute. |
6671 desc->set_enumerable((attrs & DONT_ENUM) == 0); | 6671 desc->set_enumerable((attrs & DONT_ENUM) == 0); |
6672 // 8. Set D.[[Configurable]] to the value of X's [[Configurable]] attribute. | 6672 // 8. Set D.[[Configurable]] to the value of X's [[Configurable]] attribute. |
6673 desc->set_configurable((attrs & DONT_DELETE) == 0); | 6673 desc->set_configurable((attrs & DONT_DELETE) == 0); |
6674 // 9. Return D. | 6674 // 9. Return D. |
| 6675 DCHECK(PropertyDescriptor::IsAccessorDescriptor(desc) != |
| 6676 PropertyDescriptor::IsDataDescriptor(desc)); |
6675 return true; | 6677 return true; |
6676 } | 6678 } |
6677 | 6679 |
6678 | 6680 |
6679 bool JSObject::ReferencesObjectFromElements(FixedArray* elements, | 6681 bool JSObject::ReferencesObjectFromElements(FixedArray* elements, |
6680 ElementsKind kind, | 6682 ElementsKind kind, |
6681 Object* object) { | 6683 Object* object) { |
6682 DCHECK(IsFastObjectElementsKind(kind) || | 6684 DCHECK(IsFastObjectElementsKind(kind) || |
6683 kind == DICTIONARY_ELEMENTS); | 6685 kind == DICTIONARY_ELEMENTS); |
6684 if (IsFastObjectElementsKind(kind)) { | 6686 if (IsFastObjectElementsKind(kind)) { |
(...skipping 11246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17931 if (cell->value() != *new_value) { | 17933 if (cell->value() != *new_value) { |
17932 cell->set_value(*new_value); | 17934 cell->set_value(*new_value); |
17933 Isolate* isolate = cell->GetIsolate(); | 17935 Isolate* isolate = cell->GetIsolate(); |
17934 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17936 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
17935 isolate, DependentCode::kPropertyCellChangedGroup); | 17937 isolate, DependentCode::kPropertyCellChangedGroup); |
17936 } | 17938 } |
17937 } | 17939 } |
17938 | 17940 |
17939 } // namespace internal | 17941 } // namespace internal |
17940 } // namespace v8 | 17942 } // namespace v8 |
OLD | NEW |