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 <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/ast.h" | 9 #include "src/ast.h" |
10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
(...skipping 2254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2265 | 2265 |
2266 void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { | 2266 void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { |
2267 promise_reject_callback_ = callback; | 2267 promise_reject_callback_ = callback; |
2268 } | 2268 } |
2269 | 2269 |
2270 | 2270 |
2271 void Isolate::ReportPromiseReject(Handle<JSObject> promise, | 2271 void Isolate::ReportPromiseReject(Handle<JSObject> promise, |
2272 Handle<Object> value, | 2272 Handle<Object> value, |
2273 v8::PromiseRejectEvent event) { | 2273 v8::PromiseRejectEvent event) { |
2274 if (promise_reject_callback_ == NULL) return; | 2274 if (promise_reject_callback_ == NULL) return; |
2275 promise_reject_callback_(v8::Utils::PromiseToLocal(promise), | 2275 Handle<JSArray> stack_trace; |
2276 v8::Utils::ToLocal(value), event); | 2276 if (event == v8::kPromiseRejectWithNoHandler && |
2277 capture_stack_trace_for_uncaught_exceptions_ && value->IsJSObject()) { | |
aandrey
2014/10/07 10:49:05
I think we can drop the capture_stack_trace_for_un
| |
2278 Handle<JSObject> error_obj = Handle<JSObject>::cast(value); | |
2279 Handle<Name> key = factory()->detailed_stack_trace_symbol(); | |
2280 Handle<Object> property = JSObject::GetDataProperty(error_obj, key); | |
2281 if (property->IsJSArray()) stack_trace = Handle<JSArray>::cast(property); | |
2282 } | |
2283 promise_reject_callback_(v8::Utils::PromiseToLocal(promise), event, | |
2284 v8::Utils::ToLocal(value), | |
2285 v8::Utils::StackTraceToLocal(stack_trace)); | |
2277 } | 2286 } |
2278 | 2287 |
2279 | 2288 |
2280 void Isolate::EnqueueMicrotask(Handle<Object> microtask) { | 2289 void Isolate::EnqueueMicrotask(Handle<Object> microtask) { |
2281 DCHECK(microtask->IsJSFunction() || microtask->IsCallHandlerInfo()); | 2290 DCHECK(microtask->IsJSFunction() || microtask->IsCallHandlerInfo()); |
2282 Handle<FixedArray> queue(heap()->microtask_queue(), this); | 2291 Handle<FixedArray> queue(heap()->microtask_queue(), this); |
2283 int num_tasks = pending_microtask_count(); | 2292 int num_tasks = pending_microtask_count(); |
2284 DCHECK(num_tasks <= queue->length()); | 2293 DCHECK(num_tasks <= queue->length()); |
2285 if (num_tasks == 0) { | 2294 if (num_tasks == 0) { |
2286 queue = factory()->NewFixedArray(8); | 2295 queue = factory()->NewFixedArray(8); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2386 if (prev_ && prev_->Intercept(flag)) return true; | 2395 if (prev_ && prev_->Intercept(flag)) return true; |
2387 // Then check whether this scope intercepts. | 2396 // Then check whether this scope intercepts. |
2388 if ((flag & intercept_mask_)) { | 2397 if ((flag & intercept_mask_)) { |
2389 intercepted_flags_ |= flag; | 2398 intercepted_flags_ |= flag; |
2390 return true; | 2399 return true; |
2391 } | 2400 } |
2392 return false; | 2401 return false; |
2393 } | 2402 } |
2394 | 2403 |
2395 } } // namespace v8::internal | 2404 } } // namespace v8::internal |
OLD | NEW |