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 4278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4289 MaybeHandle<Object> JSObject::DefinePropertyOrElementIgnoreAttributes( | 4289 MaybeHandle<Object> JSObject::DefinePropertyOrElementIgnoreAttributes( |
4290 Handle<JSObject> object, Handle<Name> name, Handle<Object> value, | 4290 Handle<JSObject> object, Handle<Name> name, Handle<Object> value, |
4291 PropertyAttributes attributes, ExecutableAccessorInfoHandling handling) { | 4291 PropertyAttributes attributes, ExecutableAccessorInfoHandling handling) { |
4292 Isolate* isolate = object->GetIsolate(); | 4292 Isolate* isolate = object->GetIsolate(); |
4293 LookupIterator it = LookupIterator::PropertyOrElement(isolate, object, name, | 4293 LookupIterator it = LookupIterator::PropertyOrElement(isolate, object, name, |
4294 LookupIterator::OWN); | 4294 LookupIterator::OWN); |
4295 return DefineOwnPropertyIgnoreAttributes(&it, value, attributes, handling); | 4295 return DefineOwnPropertyIgnoreAttributes(&it, value, attributes, handling); |
4296 } | 4296 } |
4297 | 4297 |
4298 | 4298 |
| 4299 Maybe<bool> JSObject::CreateDataProperty(LookupIterator* it, |
| 4300 Handle<Object> value) { |
| 4301 DCHECK(it->GetReceiver()->IsJSObject()); |
| 4302 Maybe<PropertyAttributes> maybe = JSReceiver::GetPropertyAttributes(it); |
| 4303 if (maybe.IsNothing()) return Nothing<bool>(); |
| 4304 |
| 4305 if (it->IsFound()) { |
| 4306 if (!it->IsConfigurable()) return Just(false); |
| 4307 } else { |
| 4308 if (!JSObject::cast(*it->GetReceiver())->IsExtensible()) return Just(false); |
| 4309 } |
| 4310 |
| 4311 RETURN_ON_EXCEPTION_VALUE( |
| 4312 it->isolate(), |
| 4313 DefineOwnPropertyIgnoreAttributes(it, value, NONE, DONT_FORCE_FIELD), |
| 4314 Nothing<bool>()); |
| 4315 |
| 4316 return Just(true); |
| 4317 } |
| 4318 |
| 4319 |
4299 Maybe<PropertyAttributes> JSObject::GetPropertyAttributesWithInterceptor( | 4320 Maybe<PropertyAttributes> JSObject::GetPropertyAttributesWithInterceptor( |
4300 LookupIterator* it) { | 4321 LookupIterator* it) { |
4301 Isolate* isolate = it->isolate(); | 4322 Isolate* isolate = it->isolate(); |
4302 // Make sure that the top context does not change when doing | 4323 // Make sure that the top context does not change when doing |
4303 // callbacks or interceptor calls. | 4324 // callbacks or interceptor calls. |
4304 AssertNoContextChange ncc(isolate); | 4325 AssertNoContextChange ncc(isolate); |
4305 HandleScope scope(isolate); | 4326 HandleScope scope(isolate); |
4306 | 4327 |
4307 Handle<JSObject> holder = it->GetHolder<JSObject>(); | 4328 Handle<JSObject> holder = it->GetHolder<JSObject>(); |
4308 Handle<InterceptorInfo> interceptor(it->GetInterceptor()); | 4329 Handle<InterceptorInfo> interceptor(it->GetInterceptor()); |
(...skipping 12316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16625 Handle<Object> new_value) { | 16646 Handle<Object> new_value) { |
16626 if (cell->value() != *new_value) { | 16647 if (cell->value() != *new_value) { |
16627 cell->set_value(*new_value); | 16648 cell->set_value(*new_value); |
16628 Isolate* isolate = cell->GetIsolate(); | 16649 Isolate* isolate = cell->GetIsolate(); |
16629 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 16650 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
16630 isolate, DependentCode::kPropertyCellChangedGroup); | 16651 isolate, DependentCode::kPropertyCellChangedGroup); |
16631 } | 16652 } |
16632 } | 16653 } |
16633 } // namespace internal | 16654 } // namespace internal |
16634 } // namespace v8 | 16655 } // namespace v8 |
OLD | NEW |