| 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 2836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2847 return Utils::OpenHandle(this)->IsJSSetIterator(); | 2847 return Utils::OpenHandle(this)->IsJSSetIterator(); |
| 2848 } | 2848 } |
| 2849 | 2849 |
| 2850 | 2850 |
| 2851 MaybeLocal<String> Value::ToString(Local<Context> context) const { | 2851 MaybeLocal<String> Value::ToString(Local<Context> context) const { |
| 2852 auto obj = Utils::OpenHandle(this); | 2852 auto obj = Utils::OpenHandle(this); |
| 2853 if (obj->IsString()) return ToApiHandle<String>(obj); | 2853 if (obj->IsString()) return ToApiHandle<String>(obj); |
| 2854 PREPARE_FOR_EXECUTION(context, "ToString", String); | 2854 PREPARE_FOR_EXECUTION(context, "ToString", String); |
| 2855 Local<String> result; | 2855 Local<String> result; |
| 2856 has_pending_exception = | 2856 has_pending_exception = |
| 2857 !ToLocal<String>(i::Execution::ToString(isolate, obj), &result); | 2857 !ToLocal<String>(i::Object::ToString(isolate, obj), &result); |
| 2858 RETURN_ON_FAILED_EXECUTION(String); | 2858 RETURN_ON_FAILED_EXECUTION(String); |
| 2859 RETURN_ESCAPED(result); | 2859 RETURN_ESCAPED(result); |
| 2860 } | 2860 } |
| 2861 | 2861 |
| 2862 | 2862 |
| 2863 Local<String> Value::ToString(Isolate* isolate) const { | 2863 Local<String> Value::ToString(Isolate* isolate) const { |
| 2864 RETURN_TO_LOCAL_UNCHECKED(ToString(isolate->GetCurrentContext()), String); | 2864 RETURN_TO_LOCAL_UNCHECKED(ToString(isolate->GetCurrentContext()), String); |
| 2865 } | 2865 } |
| 2866 | 2866 |
| 2867 | 2867 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2913 return ToBoolean(v8_isolate->GetCurrentContext()).ToLocalChecked(); | 2913 return ToBoolean(v8_isolate->GetCurrentContext()).ToLocalChecked(); |
| 2914 } | 2914 } |
| 2915 | 2915 |
| 2916 | 2916 |
| 2917 MaybeLocal<Number> Value::ToNumber(Local<Context> context) const { | 2917 MaybeLocal<Number> Value::ToNumber(Local<Context> context) const { |
| 2918 auto obj = Utils::OpenHandle(this); | 2918 auto obj = Utils::OpenHandle(this); |
| 2919 if (obj->IsNumber()) return ToApiHandle<Number>(obj); | 2919 if (obj->IsNumber()) return ToApiHandle<Number>(obj); |
| 2920 PREPARE_FOR_EXECUTION(context, "ToNumber", Number); | 2920 PREPARE_FOR_EXECUTION(context, "ToNumber", Number); |
| 2921 Local<Number> result; | 2921 Local<Number> result; |
| 2922 has_pending_exception = | 2922 has_pending_exception = |
| 2923 !ToLocal<Number>(i::Execution::ToNumber(isolate, obj), &result); | 2923 !ToLocal<Number>(i::Object::ToNumber(isolate, obj), &result); |
| 2924 RETURN_ON_FAILED_EXECUTION(Number); | 2924 RETURN_ON_FAILED_EXECUTION(Number); |
| 2925 RETURN_ESCAPED(result); | 2925 RETURN_ESCAPED(result); |
| 2926 } | 2926 } |
| 2927 | 2927 |
| 2928 | 2928 |
| 2929 Local<Number> Value::ToNumber(Isolate* isolate) const { | 2929 Local<Number> Value::ToNumber(Isolate* isolate) const { |
| 2930 RETURN_TO_LOCAL_UNCHECKED(ToNumber(isolate->GetCurrentContext()), Number); | 2930 RETURN_TO_LOCAL_UNCHECKED(ToNumber(isolate->GetCurrentContext()), Number); |
| 2931 } | 2931 } |
| 2932 | 2932 |
| 2933 | 2933 |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3237 bool Value::BooleanValue() const { | 3237 bool Value::BooleanValue() const { |
| 3238 return Utils::OpenHandle(this)->BooleanValue(); | 3238 return Utils::OpenHandle(this)->BooleanValue(); |
| 3239 } | 3239 } |
| 3240 | 3240 |
| 3241 | 3241 |
| 3242 Maybe<double> Value::NumberValue(Local<Context> context) const { | 3242 Maybe<double> Value::NumberValue(Local<Context> context) const { |
| 3243 auto obj = Utils::OpenHandle(this); | 3243 auto obj = Utils::OpenHandle(this); |
| 3244 if (obj->IsNumber()) return Just(obj->Number()); | 3244 if (obj->IsNumber()) return Just(obj->Number()); |
| 3245 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "NumberValue", double); | 3245 PREPARE_FOR_EXECUTION_PRIMITIVE(context, "NumberValue", double); |
| 3246 i::Handle<i::Object> num; | 3246 i::Handle<i::Object> num; |
| 3247 has_pending_exception = !i::Execution::ToNumber(isolate, obj).ToHandle(&num); | 3247 has_pending_exception = !i::Object::ToNumber(isolate, obj).ToHandle(&num); |
| 3248 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(double); | 3248 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(double); |
| 3249 return Just(num->Number()); | 3249 return Just(num->Number()); |
| 3250 } | 3250 } |
| 3251 | 3251 |
| 3252 | 3252 |
| 3253 double Value::NumberValue() const { | 3253 double Value::NumberValue() const { |
| 3254 auto obj = Utils::OpenHandle(this); | 3254 auto obj = Utils::OpenHandle(this); |
| 3255 if (obj->IsNumber()) return obj->Number(); | 3255 if (obj->IsNumber()) return obj->Number(); |
| 3256 return NumberValue(ContextFromHeapObject(obj)) | 3256 return NumberValue(ContextFromHeapObject(obj)) |
| 3257 .FromMaybe(std::numeric_limits<double>::quiet_NaN()); | 3257 .FromMaybe(std::numeric_limits<double>::quiet_NaN()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3327 | 3327 |
| 3328 MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const { | 3328 MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const { |
| 3329 auto self = Utils::OpenHandle(this); | 3329 auto self = Utils::OpenHandle(this); |
| 3330 if (self->IsSmi()) { | 3330 if (self->IsSmi()) { |
| 3331 if (i::Smi::cast(*self)->value() >= 0) return Utils::Uint32ToLocal(self); | 3331 if (i::Smi::cast(*self)->value() >= 0) return Utils::Uint32ToLocal(self); |
| 3332 return Local<Uint32>(); | 3332 return Local<Uint32>(); |
| 3333 } | 3333 } |
| 3334 PREPARE_FOR_EXECUTION(context, "ToArrayIndex", Uint32); | 3334 PREPARE_FOR_EXECUTION(context, "ToArrayIndex", Uint32); |
| 3335 i::Handle<i::Object> string_obj; | 3335 i::Handle<i::Object> string_obj; |
| 3336 has_pending_exception = | 3336 has_pending_exception = |
| 3337 !i::Execution::ToString(isolate, self).ToHandle(&string_obj); | 3337 !i::Object::ToString(isolate, self).ToHandle(&string_obj); |
| 3338 RETURN_ON_FAILED_EXECUTION(Uint32); | 3338 RETURN_ON_FAILED_EXECUTION(Uint32); |
| 3339 i::Handle<i::String> str = i::Handle<i::String>::cast(string_obj); | 3339 i::Handle<i::String> str = i::Handle<i::String>::cast(string_obj); |
| 3340 uint32_t index; | 3340 uint32_t index; |
| 3341 if (str->AsArrayIndex(&index)) { | 3341 if (str->AsArrayIndex(&index)) { |
| 3342 i::Handle<i::Object> value; | 3342 i::Handle<i::Object> value; |
| 3343 if (index <= static_cast<uint32_t>(i::Smi::kMaxValue)) { | 3343 if (index <= static_cast<uint32_t>(i::Smi::kMaxValue)) { |
| 3344 value = i::Handle<i::Object>(i::Smi::FromInt(index), isolate); | 3344 value = i::Handle<i::Object>(i::Smi::FromInt(index), isolate); |
| 3345 } else { | 3345 } else { |
| 3346 value = isolate->factory()->NewNumber(index); | 3346 value = isolate->factory()->NewNumber(index); |
| 3347 } | 3347 } |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3607 } | 3607 } |
| 3608 | 3608 |
| 3609 | 3609 |
| 3610 Maybe<PropertyAttribute> v8::Object::GetPropertyAttributes( | 3610 Maybe<PropertyAttribute> v8::Object::GetPropertyAttributes( |
| 3611 Local<Context> context, Local<Value> key) { | 3611 Local<Context> context, Local<Value> key) { |
| 3612 PREPARE_FOR_EXECUTION_PRIMITIVE( | 3612 PREPARE_FOR_EXECUTION_PRIMITIVE( |
| 3613 context, "v8::Object::GetPropertyAttributes()", PropertyAttribute); | 3613 context, "v8::Object::GetPropertyAttributes()", PropertyAttribute); |
| 3614 auto self = Utils::OpenHandle(this); | 3614 auto self = Utils::OpenHandle(this); |
| 3615 auto key_obj = Utils::OpenHandle(*key); | 3615 auto key_obj = Utils::OpenHandle(*key); |
| 3616 if (!key_obj->IsName()) { | 3616 if (!key_obj->IsName()) { |
| 3617 has_pending_exception = !i::Execution::ToString( | 3617 has_pending_exception = |
| 3618 isolate, key_obj).ToHandle(&key_obj); | 3618 !i::Object::ToString(isolate, key_obj).ToHandle(&key_obj); |
| 3619 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(PropertyAttribute); | 3619 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(PropertyAttribute); |
| 3620 } | 3620 } |
| 3621 auto key_name = i::Handle<i::Name>::cast(key_obj); | 3621 auto key_name = i::Handle<i::Name>::cast(key_obj); |
| 3622 auto result = i::JSReceiver::GetPropertyAttributes(self, key_name); | 3622 auto result = i::JSReceiver::GetPropertyAttributes(self, key_name); |
| 3623 has_pending_exception = result.IsNothing(); | 3623 has_pending_exception = result.IsNothing(); |
| 3624 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(PropertyAttribute); | 3624 RETURN_ON_FAILED_EXECUTION_PRIMITIVE(PropertyAttribute); |
| 3625 if (result.FromJust() == ABSENT) { | 3625 if (result.FromJust() == ABSENT) { |
| 3626 return Just(static_cast<PropertyAttribute>(NONE)); | 3626 return Just(static_cast<PropertyAttribute>(NONE)); |
| 3627 } | 3627 } |
| 3628 return Just(static_cast<PropertyAttribute>(result.FromJust())); | 3628 return Just(static_cast<PropertyAttribute>(result.FromJust())); |
| (...skipping 4779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8408 Address callback_address = | 8408 Address callback_address = |
| 8409 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8409 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8410 VMState<EXTERNAL> state(isolate); | 8410 VMState<EXTERNAL> state(isolate); |
| 8411 ExternalCallbackScope call_scope(isolate, callback_address); | 8411 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8412 callback(info); | 8412 callback(info); |
| 8413 } | 8413 } |
| 8414 | 8414 |
| 8415 | 8415 |
| 8416 } // namespace internal | 8416 } // namespace internal |
| 8417 } // namespace v8 | 8417 } // namespace v8 |
| OLD | NEW |