Revision: 4712
Author: [email protected]
Date: Tue May 25 02:18:08 2010
Log: 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.
Review URL: http://codereview.chromium.org/2147005
http://code.google.com/p/v8/source/detail?r=4712
Modified:
/branches/bleeding_edge/src/top.cc
=======================================
--- /branches/bleeding_edge/src/top.cc Sun May 9 23:24:01 2010
+++ /branches/bleeding_edge/src/top.cc Tue May 25 02:18:08 2010
@@ -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