Reviewers: Vyacheslav Egorov,
Description:
Fix GC issue
A raw pointer was used while collecting a stack trace. This was not safe as
the
code collecting the stack trace allocated memory.
Please review this at http://codereview.chromium.org/2147005/show
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/top.cc
Index: src/top.cc
===================================================================
--- src/top.cc (revision 4711)
+++ src/top.cc (working copy)
@@ -370,8 +370,7 @@
v8::HandleScope scope;
// Ensure no negative values.
int limit = Max(frame_limit, 0);
- Handle<JSArray> stackTrace = Factory::NewJSArray(frame_limit);
- FixedArray* frames = FixedArray::cast(stackTrace->elements());
+ Handle<JSArray> stack_trace = Factory::NewJSArray(frame_limit);
Handle<String> column_key = Factory::LookupAsciiSymbol("column");
Handle<String> line_key = Factory::LookupAsciiSymbol("lineNumber");
@@ -438,13 +437,13 @@
SetProperty(stackFrame, constructor_key, is_constructor, NONE);
}
- frames->set(frames_seen, *stackFrame);
+ FixedArray::cast(stack_trace->elements())->set(frames_seen,
*stackFrame);
frames_seen++;
it.Advance();
}
- stackTrace->set_length(Smi::FromInt(frames_seen));
- return scope.Close(Utils::StackTraceToLocal(stackTrace));
+ stack_trace->set_length(Smi::FromInt(frames_seen));
+ return scope.Close(Utils::StackTraceToLocal(stack_trace));
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev