Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/isolate.cc

Issue 1077153003: Throw when attaching a stack trace to an object fails. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/isolate.h ('k') | src/runtime/runtime-internal.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <fstream> // NOLINT(readability/streams) 7 #include <fstream> // NOLINT(readability/streams)
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/v8.h" 10 #include "src/v8.h"
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 frames_seen++; 407 frames_seen++;
408 } 408 }
409 } 409 }
410 elements->set(0, Smi::FromInt(sloppy_frames)); 410 elements->set(0, Smi::FromInt(sloppy_frames));
411 Handle<JSArray> result = factory()->NewJSArrayWithElements(elements); 411 Handle<JSArray> result = factory()->NewJSArrayWithElements(elements);
412 result->set_length(Smi::FromInt(cursor)); 412 result->set_length(Smi::FromInt(cursor));
413 return result; 413 return result;
414 } 414 }
415 415
416 416
417 void Isolate::CaptureAndSetDetailedStackTrace(Handle<JSObject> error_object) { 417 MaybeHandle<JSObject> Isolate::CaptureAndSetDetailedStackTrace(
418 Handle<JSObject> error_object) {
418 if (capture_stack_trace_for_uncaught_exceptions_) { 419 if (capture_stack_trace_for_uncaught_exceptions_) {
419 // Capture stack trace for a detailed exception message. 420 // Capture stack trace for a detailed exception message.
420 Handle<Name> key = factory()->detailed_stack_trace_symbol(); 421 Handle<Name> key = factory()->detailed_stack_trace_symbol();
421 Handle<JSArray> stack_trace = CaptureCurrentStackTrace( 422 Handle<JSArray> stack_trace = CaptureCurrentStackTrace(
422 stack_trace_for_uncaught_exceptions_frame_limit_, 423 stack_trace_for_uncaught_exceptions_frame_limit_,
423 stack_trace_for_uncaught_exceptions_options_); 424 stack_trace_for_uncaught_exceptions_options_);
424 JSObject::SetProperty(error_object, key, stack_trace, STRICT).Assert(); 425 RETURN_ON_EXCEPTION(
426 this, JSObject::SetProperty(error_object, key, stack_trace, STRICT),
427 JSObject);
425 } 428 }
429 return error_object;
426 } 430 }
427 431
428 432
429 void Isolate::CaptureAndSetSimpleStackTrace(Handle<JSObject> error_object, 433 MaybeHandle<JSObject> Isolate::CaptureAndSetSimpleStackTrace(
430 Handle<Object> caller) { 434 Handle<JSObject> error_object, Handle<Object> caller) {
431 // Capture stack trace for simple stack trace string formatting. 435 // Capture stack trace for simple stack trace string formatting.
432 Handle<Name> key = factory()->stack_trace_symbol(); 436 Handle<Name> key = factory()->stack_trace_symbol();
433 Handle<Object> stack_trace = CaptureSimpleStackTrace(error_object, caller); 437 Handle<Object> stack_trace = CaptureSimpleStackTrace(error_object, caller);
434 JSObject::SetProperty(error_object, key, stack_trace, STRICT).Assert(); 438 RETURN_ON_EXCEPTION(
439 this, JSObject::SetProperty(error_object, key, stack_trace, STRICT),
440 JSObject);
441 return error_object;
435 } 442 }
436 443
437 444
438 Handle<JSArray> Isolate::GetDetailedStackTrace(Handle<JSObject> error_object) { 445 Handle<JSArray> Isolate::GetDetailedStackTrace(Handle<JSObject> error_object) {
439 Handle<Name> key_detailed = factory()->detailed_stack_trace_symbol(); 446 Handle<Name> key_detailed = factory()->detailed_stack_trace_symbol();
440 Handle<Object> stack_trace = 447 Handle<Object> stack_trace =
441 JSObject::GetDataProperty(error_object, key_detailed); 448 JSObject::GetDataProperty(error_object, key_detailed);
442 if (stack_trace->IsJSArray()) return Handle<JSArray>::cast(stack_trace); 449 if (stack_trace->IsJSArray()) return Handle<JSArray>::cast(stack_trace);
443 450
444 if (!capture_stack_trace_for_uncaught_exceptions_) return Handle<JSArray>(); 451 if (!capture_stack_trace_for_uncaught_exceptions_) return Handle<JSArray>();
(...skipping 2214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2659 if (prev_ && prev_->Intercept(flag)) return true; 2666 if (prev_ && prev_->Intercept(flag)) return true;
2660 // Then check whether this scope intercepts. 2667 // Then check whether this scope intercepts.
2661 if ((flag & intercept_mask_)) { 2668 if ((flag & intercept_mask_)) {
2662 intercepted_flags_ |= flag; 2669 intercepted_flags_ |= flag;
2663 return true; 2670 return true;
2664 } 2671 }
2665 return false; 2672 return false;
2666 } 2673 }
2667 2674
2668 } } // namespace v8::internal 2675 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | src/runtime/runtime-internal.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698