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/isolate.h" | 5 #include "src/isolate.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 | 8 |
9 #include <fstream> // NOLINT(readability/streams) | 9 #include <fstream> // NOLINT(readability/streams) |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 } | 556 } |
557 | 557 |
558 MaybeHandle<JSReceiver> Isolate::CaptureAndSetDetailedStackTrace( | 558 MaybeHandle<JSReceiver> Isolate::CaptureAndSetDetailedStackTrace( |
559 Handle<JSReceiver> error_object) { | 559 Handle<JSReceiver> error_object) { |
560 if (capture_stack_trace_for_uncaught_exceptions_) { | 560 if (capture_stack_trace_for_uncaught_exceptions_) { |
561 // Capture stack trace for a detailed exception message. | 561 // Capture stack trace for a detailed exception message. |
562 Handle<Name> key = factory()->detailed_stack_trace_symbol(); | 562 Handle<Name> key = factory()->detailed_stack_trace_symbol(); |
563 Handle<JSArray> stack_trace = CaptureCurrentStackTrace( | 563 Handle<JSArray> stack_trace = CaptureCurrentStackTrace( |
564 stack_trace_for_uncaught_exceptions_frame_limit_, | 564 stack_trace_for_uncaught_exceptions_frame_limit_, |
565 stack_trace_for_uncaught_exceptions_options_); | 565 stack_trace_for_uncaught_exceptions_options_); |
566 // TODO(jgruber): Set back to STRICT once we have eagerly formatted traces. | |
567 RETURN_ON_EXCEPTION( | 566 RETURN_ON_EXCEPTION( |
568 this, JSReceiver::SetProperty(error_object, key, stack_trace, SLOPPY), | 567 this, JSReceiver::SetProperty(error_object, key, stack_trace, STRICT), |
569 JSReceiver); | 568 JSReceiver); |
570 } | 569 } |
571 return error_object; | 570 return error_object; |
572 } | 571 } |
573 | 572 |
574 MaybeHandle<JSReceiver> Isolate::CaptureAndSetSimpleStackTrace( | 573 MaybeHandle<JSReceiver> Isolate::CaptureAndSetSimpleStackTrace( |
575 Handle<JSReceiver> error_object, FrameSkipMode mode, | 574 Handle<JSReceiver> error_object, FrameSkipMode mode, |
576 Handle<Object> caller) { | 575 Handle<Object> caller) { |
577 // Capture stack trace for simple stack trace string formatting. | 576 // Capture stack trace for simple stack trace string formatting. |
578 Handle<Name> key = factory()->stack_trace_symbol(); | 577 Handle<Name> key = factory()->stack_trace_symbol(); |
579 Handle<Object> stack_trace = | 578 Handle<Object> stack_trace = |
580 CaptureSimpleStackTrace(error_object, mode, caller); | 579 CaptureSimpleStackTrace(error_object, mode, caller); |
581 // TODO(jgruber): Set back to STRICT once we have eagerly formatted traces. | |
582 RETURN_ON_EXCEPTION( | 580 RETURN_ON_EXCEPTION( |
583 this, JSReceiver::SetProperty(error_object, key, stack_trace, SLOPPY), | 581 this, JSReceiver::SetProperty(error_object, key, stack_trace, STRICT), |
584 JSReceiver); | 582 JSReceiver); |
585 return error_object; | 583 return error_object; |
586 } | 584 } |
587 | 585 |
588 | 586 |
589 Handle<JSArray> Isolate::GetDetailedStackTrace(Handle<JSObject> error_object) { | 587 Handle<JSArray> Isolate::GetDetailedStackTrace(Handle<JSObject> error_object) { |
590 Handle<Name> key_detailed = factory()->detailed_stack_trace_symbol(); | 588 Handle<Name> key_detailed = factory()->detailed_stack_trace_symbol(); |
591 Handle<Object> stack_trace = | 589 Handle<Object> stack_trace = |
592 JSReceiver::GetDataProperty(error_object, key_detailed); | 590 JSReceiver::GetDataProperty(error_object, key_detailed); |
593 if (stack_trace->IsJSArray()) return Handle<JSArray>::cast(stack_trace); | 591 if (stack_trace->IsJSArray()) return Handle<JSArray>::cast(stack_trace); |
(...skipping 2524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3118 // Then check whether this scope intercepts. | 3116 // Then check whether this scope intercepts. |
3119 if ((flag & intercept_mask_)) { | 3117 if ((flag & intercept_mask_)) { |
3120 intercepted_flags_ |= flag; | 3118 intercepted_flags_ |= flag; |
3121 return true; | 3119 return true; |
3122 } | 3120 } |
3123 return false; | 3121 return false; |
3124 } | 3122 } |
3125 | 3123 |
3126 } // namespace internal | 3124 } // namespace internal |
3127 } // namespace v8 | 3125 } // namespace v8 |
OLD | NEW |