OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/api.h" | 5 #include "src/api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 4378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4389 return private_->desc.configurable(); | 4389 return private_->desc.configurable(); |
4390 } | 4390 } |
4391 | 4391 |
4392 bool v8::PropertyDescriptor::has_configurable() const { | 4392 bool v8::PropertyDescriptor::has_configurable() const { |
4393 return private_->desc.has_configurable(); | 4393 return private_->desc.has_configurable(); |
4394 } | 4394 } |
4395 | 4395 |
4396 Maybe<bool> v8::Object::DefineOwnProperty(v8::Local<v8::Context> context, | 4396 Maybe<bool> v8::Object::DefineOwnProperty(v8::Local<v8::Context> context, |
4397 v8::Local<Name> key, | 4397 v8::Local<Name> key, |
4398 v8::Local<Value> value, | 4398 v8::Local<Value> value, |
4399 v8::PropertyAttribute attributes) { | 4399 v8::PropertyAttribute attributes, |
| 4400 CallInterceptors call_interceptors) { |
4400 PREPARE_FOR_EXECUTION_PRIMITIVE(context, Object, DefineOwnProperty, bool); | 4401 PREPARE_FOR_EXECUTION_PRIMITIVE(context, Object, DefineOwnProperty, bool); |
4401 i::Handle<i::JSReceiver> self = Utils::OpenHandle(this); | 4402 i::Handle<i::JSReceiver> self = Utils::OpenHandle(this); |
4402 i::Handle<i::Name> key_obj = Utils::OpenHandle(*key); | 4403 i::Handle<i::Name> key_obj = Utils::OpenHandle(*key); |
4403 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); | 4404 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); |
4404 | 4405 |
4405 i::PropertyDescriptor desc; | 4406 i::PropertyDescriptor desc; |
4406 desc.set_writable(!(attributes & v8::ReadOnly)); | 4407 desc.set_writable(!(attributes & v8::ReadOnly)); |
4407 desc.set_enumerable(!(attributes & v8::DontEnum)); | 4408 desc.set_enumerable(!(attributes & v8::DontEnum)); |
4408 desc.set_configurable(!(attributes & v8::DontDelete)); | 4409 desc.set_configurable(!(attributes & v8::DontDelete)); |
4409 desc.set_value(value_obj); | 4410 desc.set_value(value_obj); |
4410 Maybe<bool> success = i::JSReceiver::DefineOwnProperty( | 4411 Maybe<bool> success = i::JSReceiver::DefineOwnProperty( |
4411 isolate, self, key_obj, &desc, i::Object::DONT_THROW); | 4412 isolate, self, key_obj, &desc, i::Object::DONT_THROW, call_interceptors); |
4412 // Even though we said DONT_THROW, there might be accessors that do throw. | 4413 // Even though we said DONT_THROW, there might be accessors that do throw. |
4413 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 4414 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); |
4414 return success; | 4415 return success; |
4415 } | 4416 } |
4416 | 4417 |
4417 Maybe<bool> v8::Object::DefineProperty(v8::Local<v8::Context> context, | 4418 Maybe<bool> v8::Object::DefineProperty(v8::Local<v8::Context> context, |
4418 v8::Local<Name> key, | 4419 v8::Local<Name> key, |
4419 PropertyDescriptor& descriptor) { | 4420 PropertyDescriptor& descriptor, |
| 4421 CallInterceptors call_interceptors) { |
4420 PREPARE_FOR_EXECUTION_PRIMITIVE(context, Object, DefineProperty, bool); | 4422 PREPARE_FOR_EXECUTION_PRIMITIVE(context, Object, DefineProperty, bool); |
4421 i::Handle<i::JSReceiver> self = Utils::OpenHandle(this); | 4423 i::Handle<i::JSReceiver> self = Utils::OpenHandle(this); |
4422 i::Handle<i::Name> key_obj = Utils::OpenHandle(*key); | 4424 i::Handle<i::Name> key_obj = Utils::OpenHandle(*key); |
4423 | 4425 |
4424 Maybe<bool> success = i::JSReceiver::DefineOwnProperty( | 4426 Maybe<bool> success = i::JSReceiver::DefineOwnProperty( |
4425 isolate, self, key_obj, &descriptor.get_private()->desc, | 4427 isolate, self, key_obj, &descriptor.get_private()->desc, |
4426 i::Object::DONT_THROW); | 4428 i::Object::DONT_THROW, call_interceptors); |
4427 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 4429 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); |
4428 return success; | 4430 return success; |
4429 } | 4431 } |
4430 | 4432 |
4431 MUST_USE_RESULT | 4433 MUST_USE_RESULT |
4432 static i::MaybeHandle<i::Object> DefineObjectProperty( | 4434 static i::MaybeHandle<i::Object> DefineObjectProperty( |
4433 i::Handle<i::JSObject> js_object, i::Handle<i::Object> key, | 4435 i::Handle<i::JSObject> js_object, i::Handle<i::Object> key, |
4434 i::Handle<i::Object> value, i::PropertyAttributes attrs) { | 4436 i::Handle<i::Object> value, i::PropertyAttributes attrs) { |
4435 i::Isolate* isolate = js_object->GetIsolate(); | 4437 i::Isolate* isolate = js_object->GetIsolate(); |
4436 bool success = false; | 4438 bool success = false; |
(...skipping 6076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10513 Address callback_address = | 10515 Address callback_address = |
10514 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 10516 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
10515 VMState<EXTERNAL> state(isolate); | 10517 VMState<EXTERNAL> state(isolate); |
10516 ExternalCallbackScope call_scope(isolate, callback_address); | 10518 ExternalCallbackScope call_scope(isolate, callback_address); |
10517 callback(info); | 10519 callback(info); |
10518 } | 10520 } |
10519 | 10521 |
10520 | 10522 |
10521 } // namespace internal | 10523 } // namespace internal |
10522 } // namespace v8 | 10524 } // namespace v8 |
OLD | NEW |