Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 06a8458549104a088925775540e4a10e38d05c5a..ca6fa967c6e4d2fe0f5262971d3335b0ae9bf5ce 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -13109,19 +13109,36 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_MarkOneShotGetter) { |
| } |
| -// Retrieve the raw stack trace collected on stack overflow and delete |
| -// it since it is used only once to avoid keeping it alive. |
| -RUNTIME_FUNCTION(MaybeObject*, Runtime_GetOverflowedRawStackTrace) { |
| +// Retrieve the stack trace. This could be the raw stack trace collected |
| +// on stack overflow or the already formatted stack trace string. |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetOverflowedStackTrace) { |
| ASSERT_EQ(args.length(), 1); |
|
Michael Starzinger
2012/12/11 14:52:35
This method should either have a NoHandleAllocatio
|
| CONVERT_ARG_CHECKED(JSObject, error_object, 0); |
| String* key = isolate->heap()->hidden_stack_trace_symbol(); |
| Object* result = error_object->GetHiddenProperty(key); |
| - RUNTIME_ASSERT(result->IsJSArray() || result->IsUndefined()); |
| - error_object->DeleteHiddenProperty(key); |
| + RUNTIME_ASSERT(result->IsJSArray() || |
| + result->IsString() || |
| + result->IsUndefined()); |
| return result; |
| } |
| +// Set or clear the stack trace attached to an stack overflow error object. |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_SetOverflowedStackTrace) { |
| + ASSERT_EQ(args.length(), 2); |
|
Michael Starzinger
2012/12/11 14:52:35
Likewise.
|
| + CONVERT_ARG_HANDLE_CHECKED(JSObject, error_object, 0); |
| + CONVERT_ARG_HANDLE_CHECKED(HeapObject, value, 1); |
| + Handle<String> key = isolate->factory()->hidden_stack_trace_symbol(); |
| + if (value->IsUndefined()) { |
| + error_object->DeleteHiddenProperty(*key); |
| + } else { |
| + RUNTIME_ASSERT(value->IsString()); |
| + JSObject::SetHiddenProperty(error_object, key, value); |
| + } |
| + return *error_object; |
| +} |
| + |
| + |
| // Returns V8 version as a string. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetV8Version) { |
| ASSERT_EQ(args.length(), 0); |