| 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 6096 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6107 } | 6107 } | 
| 6108 | 6108 | 
| 6109 | 6109 | 
| 6110 Local<Object> Array::CloneElementAt(uint32_t index) { | 6110 Local<Object> Array::CloneElementAt(uint32_t index) { | 
| 6111   auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 6111   auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 
| 6112   RETURN_TO_LOCAL_UNCHECKED(CloneElementAt(context, index), Object); | 6112   RETURN_TO_LOCAL_UNCHECKED(CloneElementAt(context, index), Object); | 
| 6113 } | 6113 } | 
| 6114 | 6114 | 
| 6115 | 6115 | 
| 6116 bool Value::IsPromise() const { | 6116 bool Value::IsPromise() const { | 
| 6117   i::Handle<i::Object> val = Utils::OpenHandle(this); | 6117   auto self = Utils::OpenHandle(this); | 
| 6118   if (!val->IsJSObject()) return false; | 6118   if (!self->IsJSObject()) return false; | 
| 6119   i::Handle<i::JSObject> obj = i::Handle<i::JSObject>::cast(val); | 6119   auto js_object = i::Handle<i::JSObject>::cast(self); | 
| 6120   i::Isolate* isolate = obj->GetIsolate(); | 6120   // Promises can't have access checks. | 
| 6121   LOG_API(isolate, "IsPromise"); | 6121   if (js_object->map()->is_access_check_needed()) return false; | 
| 6122   ENTER_V8(isolate); | 6122   auto isolate = js_object->GetIsolate(); | 
| 6123   EXCEPTION_PREAMBLE(isolate); | 6123   // TODO(dcarney): this should just be read from the symbol registry so as not | 
| 6124   i::Handle<i::Object> argv[] = { obj }; | 6124   // to be context dependent. | 
| 6125   i::Handle<i::Object> b; | 6125   auto key = isolate->promise_status(); | 
| 6126   has_pending_exception = !i::Execution::Call( | 6126   // Shouldn't be possible to throw here. | 
| 6127       isolate, | 6127   return i::JSObject::HasRealNamedProperty(js_object, key).FromJust(); | 
| 6128       isolate->is_promise(), |  | 
| 6129       isolate->factory()->undefined_value(), |  | 
| 6130       arraysize(argv), argv, |  | 
| 6131       false).ToHandle(&b); |  | 
| 6132   EXCEPTION_BAILOUT_CHECK(isolate, false); |  | 
| 6133   return b->BooleanValue(); |  | 
| 6134 } | 6128 } | 
| 6135 | 6129 | 
| 6136 | 6130 | 
| 6137 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { | 6131 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { | 
| 6138   PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); | 6132   PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); | 
| 6139   i::Handle<i::Object> result; | 6133   i::Handle<i::Object> result; | 
| 6140   has_pending_exception = !i::Execution::Call( | 6134   has_pending_exception = !i::Execution::Call( | 
| 6141       isolate, | 6135       isolate, | 
| 6142       isolate->promise_create(), | 6136       isolate->promise_create(), | 
| 6143       isolate->factory()->undefined_value(), | 6137       isolate->factory()->undefined_value(), | 
| (...skipping 1839 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7983   Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7977   Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 
| 7984   Address callback_address = | 7978   Address callback_address = | 
| 7985       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7979       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 
| 7986   VMState<EXTERNAL> state(isolate); | 7980   VMState<EXTERNAL> state(isolate); | 
| 7987   ExternalCallbackScope call_scope(isolate, callback_address); | 7981   ExternalCallbackScope call_scope(isolate, callback_address); | 
| 7988   callback(info); | 7982   callback(info); | 
| 7989 } | 7983 } | 
| 7990 | 7984 | 
| 7991 | 7985 | 
| 7992 } }  // namespace v8::internal | 7986 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|