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 3589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3600 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); | 3600 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); |
3601 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); | 3601 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); |
3602 has_pending_exception = | 3602 has_pending_exception = |
3603 DefineObjectProperty(self, key_obj, value_obj, | 3603 DefineObjectProperty(self, key_obj, value_obj, |
3604 static_cast<PropertyAttributes>(attribs)).is_null(); | 3604 static_cast<PropertyAttributes>(attribs)).is_null(); |
3605 EXCEPTION_BAILOUT_CHECK_SCOPED(isolate, false); | 3605 EXCEPTION_BAILOUT_CHECK_SCOPED(isolate, false); |
3606 return true; | 3606 return true; |
3607 } | 3607 } |
3608 | 3608 |
3609 | 3609 |
3610 MUST_USE_RESULT | |
3611 static i::MaybeHandle<i::Object> DeleteObjectProperty( | |
3612 i::Isolate* isolate, i::Handle<i::JSReceiver> receiver, | |
3613 i::Handle<i::Object> key, i::LanguageMode language_mode) { | |
3614 // Check if the given key is an array index. | |
3615 uint32_t index = 0; | |
3616 if (key->ToArrayIndex(&index)) { | |
3617 return i::JSReceiver::DeleteElement(receiver, index, language_mode); | |
3618 } | |
3619 | |
3620 i::Handle<i::Name> name; | |
3621 ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, name, | |
3622 i::Runtime::ToName(isolate, key), | |
3623 i::MaybeHandle<i::Object>()); | |
3624 | |
3625 return i::JSReceiver::DeletePropertyOrElement(receiver, name, language_mode); | |
3626 } | |
3627 | |
3628 | |
3629 MaybeLocal<Value> v8::Object::Get(Local<v8::Context> context, | 3610 MaybeLocal<Value> v8::Object::Get(Local<v8::Context> context, |
3630 Local<Value> key) { | 3611 Local<Value> key) { |
3631 PREPARE_FOR_EXECUTION(context, "v8::Object::Get()", Value); | 3612 PREPARE_FOR_EXECUTION(context, "v8::Object::Get()", Value); |
3632 auto self = Utils::OpenHandle(this); | 3613 auto self = Utils::OpenHandle(this); |
3633 auto key_obj = Utils::OpenHandle(*key); | 3614 auto key_obj = Utils::OpenHandle(*key); |
3634 i::Handle<i::Object> result; | 3615 i::Handle<i::Object> result; |
3635 has_pending_exception = | 3616 has_pending_exception = |
3636 !i::Runtime::GetObjectProperty(isolate, self, key_obj).ToHandle(&result); | 3617 !i::Runtime::GetObjectProperty(isolate, self, key_obj).ToHandle(&result); |
3637 RETURN_ON_FAILED_EXECUTION(Value); | 3618 RETURN_ON_FAILED_EXECUTION(Value); |
3638 RETURN_ESCAPED(Utils::ToLocal(result)); | 3619 RETURN_ESCAPED(Utils::ToLocal(result)); |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3876 return Utils::ToLocal(name); | 3857 return Utils::ToLocal(name); |
3877 } | 3858 } |
3878 | 3859 |
3879 | 3860 |
3880 Maybe<bool> v8::Object::Delete(Local<Context> context, Local<Value> key) { | 3861 Maybe<bool> v8::Object::Delete(Local<Context> context, Local<Value> key) { |
3881 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::Delete()", bool); | 3862 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "v8::Object::Delete()", bool); |
3882 auto self = Utils::OpenHandle(this); | 3863 auto self = Utils::OpenHandle(this); |
3883 auto key_obj = Utils::OpenHandle(*key); | 3864 auto key_obj = Utils::OpenHandle(*key); |
3884 i::Handle<i::Object> obj; | 3865 i::Handle<i::Object> obj; |
3885 has_pending_exception = | 3866 has_pending_exception = |
3886 !DeleteObjectProperty(isolate, self, key_obj, i::SLOPPY).ToHandle(&obj); | 3867 !i::Runtime::DeleteObjectProperty(isolate, self, key_obj, i::SLOPPY) |
| 3868 .ToHandle(&obj); |
3887 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); | 3869 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); |
3888 return Just(obj->IsTrue()); | 3870 return Just(obj->IsTrue()); |
3889 } | 3871 } |
3890 | 3872 |
3891 | 3873 |
3892 bool v8::Object::Delete(v8::Handle<Value> key) { | 3874 bool v8::Object::Delete(v8::Handle<Value> key) { |
3893 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 3875 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
3894 return Delete(context, key).FromMaybe(false); | 3876 return Delete(context, key).FromMaybe(false); |
3895 } | 3877 } |
3896 | 3878 |
(...skipping 4558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8455 Address callback_address = | 8437 Address callback_address = |
8456 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8438 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
8457 VMState<EXTERNAL> state(isolate); | 8439 VMState<EXTERNAL> state(isolate); |
8458 ExternalCallbackScope call_scope(isolate, callback_address); | 8440 ExternalCallbackScope call_scope(isolate, callback_address); |
8459 callback(info); | 8441 callback(info); |
8460 } | 8442 } |
8461 | 8443 |
8462 | 8444 |
8463 } // namespace internal | 8445 } // namespace internal |
8464 } // namespace v8 | 8446 } // namespace v8 |
OLD | NEW |