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 <iomanip> | 5 #include <iomanip> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 3261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3272 | 3272 |
3273 MaybeHandle<Object> Object::SetSuperProperty(LookupIterator* it, | 3273 MaybeHandle<Object> Object::SetSuperProperty(LookupIterator* it, |
3274 Handle<Object> value, | 3274 Handle<Object> value, |
3275 LanguageMode language_mode, | 3275 LanguageMode language_mode, |
3276 StoreFromKeyed store_mode) { | 3276 StoreFromKeyed store_mode) { |
3277 bool found = false; | 3277 bool found = false; |
3278 MaybeHandle<Object> result = | 3278 MaybeHandle<Object> result = |
3279 SetPropertyInternal(it, value, language_mode, store_mode, &found); | 3279 SetPropertyInternal(it, value, language_mode, store_mode, &found); |
3280 if (found) return result; | 3280 if (found) return result; |
3281 | 3281 |
| 3282 if (!it->GetReceiver()->IsJSReceiver()) { |
| 3283 return WriteToReadOnlyProperty(it->isolate(), it->GetReceiver(), it->name(), |
| 3284 value, language_mode); |
| 3285 } |
| 3286 |
3282 LookupIterator own_lookup(it->GetReceiver(), it->name(), LookupIterator::OWN); | 3287 LookupIterator own_lookup(it->GetReceiver(), it->name(), LookupIterator::OWN); |
3283 | 3288 |
3284 switch (own_lookup.state()) { | 3289 switch (own_lookup.state()) { |
3285 case LookupIterator::NOT_FOUND: | 3290 case LookupIterator::NOT_FOUND: |
3286 return JSObject::AddDataProperty(&own_lookup, value, NONE, language_mode, | 3291 return JSObject::AddDataProperty(&own_lookup, value, NONE, language_mode, |
3287 store_mode); | 3292 store_mode); |
3288 | 3293 |
3289 case LookupIterator::INTEGER_INDEXED_EXOTIC: | 3294 case LookupIterator::INTEGER_INDEXED_EXOTIC: |
3290 return result; | 3295 return result; |
3291 | 3296 |
(...skipping 13948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17240 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, | 17245 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, |
17241 Handle<Object> new_value) { | 17246 Handle<Object> new_value) { |
17242 if (cell->value() != *new_value) { | 17247 if (cell->value() != *new_value) { |
17243 cell->set_value(*new_value); | 17248 cell->set_value(*new_value); |
17244 Isolate* isolate = cell->GetIsolate(); | 17249 Isolate* isolate = cell->GetIsolate(); |
17245 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17250 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
17246 isolate, DependentCode::kPropertyCellChangedGroup); | 17251 isolate, DependentCode::kPropertyCellChangedGroup); |
17247 } | 17252 } |
17248 } | 17253 } |
17249 } } // namespace v8::internal | 17254 } } // namespace v8::internal |
OLD | NEW |