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 5495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5506 } | 5506 } |
5507 } | 5507 } |
5508 | 5508 |
5509 return it.isolate()->factory()->true_value(); | 5509 return it.isolate()->factory()->true_value(); |
5510 } | 5510 } |
5511 | 5511 |
5512 | 5512 |
5513 MaybeHandle<Object> JSReceiver::DeleteElement(Handle<JSReceiver> object, | 5513 MaybeHandle<Object> JSReceiver::DeleteElement(Handle<JSReceiver> object, |
5514 uint32_t index, | 5514 uint32_t index, |
5515 LanguageMode language_mode) { | 5515 LanguageMode language_mode) { |
5516 if (object->map()->is_strong()) { | |
5517 Isolate* isolate = object->GetIsolate(); | |
5518 if (is_strict(language_mode)) { | |
5519 THROW_NEW_ERROR( | |
rossberg
2015/05/22 11:34:50
Why do we need to throw here? Returning false shou
conradw
2015/05/22 13:37:56
Discussed offline, throw is needed but is in wrong
| |
5520 isolate, | |
5521 NewTypeError(MessageTemplate::kStrongDeleteProperty, | |
5522 isolate->factory()->NewNumberFromUint(index), object), | |
5523 Object); | |
5524 } | |
5525 return isolate->factory()->false_value(); | |
5526 } | |
5516 if (object->IsJSProxy()) { | 5527 if (object->IsJSProxy()) { |
5517 return JSProxy::DeleteElementWithHandler(Handle<JSProxy>::cast(object), | 5528 return JSProxy::DeleteElementWithHandler(Handle<JSProxy>::cast(object), |
5518 index, language_mode); | 5529 index, language_mode); |
5519 } | 5530 } |
5520 return JSObject::DeleteElement(Handle<JSObject>::cast(object), index, | 5531 return JSObject::DeleteElement(Handle<JSObject>::cast(object), index, |
5521 language_mode); | 5532 language_mode); |
5522 } | 5533 } |
5523 | 5534 |
5524 | 5535 |
5525 MaybeHandle<Object> JSReceiver::DeleteProperty(Handle<JSReceiver> object, | 5536 MaybeHandle<Object> JSReceiver::DeleteProperty(Handle<JSReceiver> object, |
5526 Handle<Name> name, | 5537 Handle<Name> name, |
5527 LanguageMode language_mode) { | 5538 LanguageMode language_mode) { |
5539 if (object->map()->is_strong()) { | |
5540 Isolate* isolate = object->GetIsolate(); | |
5541 if (is_strict(language_mode)) { | |
5542 THROW_NEW_ERROR( | |
rossberg
2015/05/22 11:34:50
Same here.
conradw
2015/05/22 13:37:56
See above.
| |
5543 isolate, | |
5544 NewTypeError(MessageTemplate::kStrongDeleteProperty, name, object), | |
5545 Object); | |
5546 } | |
5547 return isolate->factory()->false_value(); | |
5548 } | |
5528 if (object->IsJSProxy()) { | 5549 if (object->IsJSProxy()) { |
5529 return JSProxy::DeletePropertyWithHandler(Handle<JSProxy>::cast(object), | 5550 return JSProxy::DeletePropertyWithHandler(Handle<JSProxy>::cast(object), |
5530 name, language_mode); | 5551 name, language_mode); |
5531 } | 5552 } |
5532 return JSObject::DeleteProperty(Handle<JSObject>::cast(object), name, | 5553 return JSObject::DeleteProperty(Handle<JSObject>::cast(object), name, |
5533 language_mode); | 5554 language_mode); |
5534 } | 5555 } |
5535 | 5556 |
5536 | 5557 |
5537 bool JSObject::ReferencesObjectFromElements(FixedArray* elements, | 5558 bool JSObject::ReferencesObjectFromElements(FixedArray* elements, |
(...skipping 11715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
17253 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, | 17274 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, |
17254 Handle<Object> new_value) { | 17275 Handle<Object> new_value) { |
17255 if (cell->value() != *new_value) { | 17276 if (cell->value() != *new_value) { |
17256 cell->set_value(*new_value); | 17277 cell->set_value(*new_value); |
17257 Isolate* isolate = cell->GetIsolate(); | 17278 Isolate* isolate = cell->GetIsolate(); |
17258 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17279 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
17259 isolate, DependentCode::kPropertyCellChangedGroup); | 17280 isolate, DependentCode::kPropertyCellChangedGroup); |
17260 } | 17281 } |
17261 } | 17282 } |
17262 } } // namespace v8::internal | 17283 } } // namespace v8::internal |
OLD | NEW |