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 3861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3872 auto self = Utils::OpenHandle(this); | 3872 auto self = Utils::OpenHandle(this); |
3873 i::Handle<i::String> name(self->constructor_name()); | 3873 i::Handle<i::String> name(self->constructor_name()); |
3874 return Utils::ToLocal(name); | 3874 return Utils::ToLocal(name); |
3875 } | 3875 } |
3876 | 3876 |
3877 | 3877 |
3878 Maybe<bool> v8::Object::Delete(Local<Context> context, Local<Value> key) { | 3878 Maybe<bool> v8::Object::Delete(Local<Context> context, Local<Value> key) { |
3879 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::Delete()", bool); | 3879 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::Delete()", bool); |
3880 auto self = Utils::OpenHandle(this); | 3880 auto self = Utils::OpenHandle(this); |
3881 auto key_obj = Utils::OpenHandle(*key); | 3881 auto key_obj = Utils::OpenHandle(*key); |
3882 i::Handle<i::Object> obj; | 3882 Maybe<bool> result = |
3883 has_pending_exception = | 3883 i::Runtime::DeleteObjectProperty(isolate, self, key_obj, i::SLOPPY); |
3884 !i::Runtime::DeleteObjectProperty(isolate, self, key_obj, i::SLOPPY) | 3884 has_pending_exception = result.IsNothing(); |
3885 .ToHandle(&obj); | |
3886 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 3885 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); |
3887 return Just(obj->IsTrue()); | 3886 return result; |
3888 } | 3887 } |
3889 | 3888 |
3890 | 3889 |
3891 bool v8::Object::Delete(v8::Local<Value> key) { | 3890 bool v8::Object::Delete(v8::Local<Value> key) { |
3892 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 3891 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
3893 return Delete(context, key).FromMaybe(false); | 3892 return Delete(context, key).FromMaybe(false); |
3894 } | 3893 } |
3895 | 3894 |
3896 | 3895 |
3897 Maybe<bool> v8::Object::DeletePrivate(Local<Context> context, | 3896 Maybe<bool> v8::Object::DeletePrivate(Local<Context> context, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3930 | 3929 |
3931 Maybe<bool> v8::Object::HasPrivate(Local<Context> context, Local<Private> key) { | 3930 Maybe<bool> v8::Object::HasPrivate(Local<Context> context, Local<Private> key) { |
3932 return HasOwnProperty(context, Local<Name>(reinterpret_cast<Name*>(*key))); | 3931 return HasOwnProperty(context, Local<Name>(reinterpret_cast<Name*>(*key))); |
3933 } | 3932 } |
3934 | 3933 |
3935 | 3934 |
3936 Maybe<bool> v8::Object::Delete(Local<Context> context, uint32_t index) { | 3935 Maybe<bool> v8::Object::Delete(Local<Context> context, uint32_t index) { |
3937 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::DeleteProperty()", | 3936 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::DeleteProperty()", |
3938 bool); | 3937 bool); |
3939 auto self = Utils::OpenHandle(this); | 3938 auto self = Utils::OpenHandle(this); |
3940 i::Handle<i::Object> obj; | 3939 Maybe<bool> result = i::JSReceiver::DeleteElement(self, index); |
3941 has_pending_exception = | 3940 has_pending_exception = result.IsNothing(); |
3942 !i::JSReceiver::DeleteElement(self, index).ToHandle(&obj); | |
3943 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 3941 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); |
3944 return Just(obj->IsTrue()); | 3942 return result; |
3945 } | 3943 } |
3946 | 3944 |
3947 | 3945 |
3948 bool v8::Object::Delete(uint32_t index) { | 3946 bool v8::Object::Delete(uint32_t index) { |
3949 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 3947 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
3950 return Delete(context, index).FromMaybe(false); | 3948 return Delete(context, index).FromMaybe(false); |
3951 } | 3949 } |
3952 | 3950 |
3953 | 3951 |
3954 Maybe<bool> v8::Object::Has(Local<Context> context, uint32_t index) { | 3952 Maybe<bool> v8::Object::Has(Local<Context> context, uint32_t index) { |
(...skipping 4564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8519 Address callback_address = | 8517 Address callback_address = |
8520 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8518 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
8521 VMState<EXTERNAL> state(isolate); | 8519 VMState<EXTERNAL> state(isolate); |
8522 ExternalCallbackScope call_scope(isolate, callback_address); | 8520 ExternalCallbackScope call_scope(isolate, callback_address); |
8523 callback(info); | 8521 callback(info); |
8524 } | 8522 } |
8525 | 8523 |
8526 | 8524 |
8527 } // namespace internal | 8525 } // namespace internal |
8528 } // namespace v8 | 8526 } // namespace v8 |
OLD | NEW |