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

Unified Diff: src/frames.cc

Issue 43693002: Correctly setup exit frame when calling into allocation tracker (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Added PrintName Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/frames.h ('k') | src/frames-inl.h » ('j') | src/x64/code-stubs-x64.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/frames.cc
diff --git a/src/frames.cc b/src/frames.cc
index 167277f799617974fdd08c84e7fc71a0f5005610..fa411a65b060f06f7819f1225effb95009b01ff1 100644
--- a/src/frames.cc
+++ b/src/frames.cc
@@ -79,23 +79,26 @@ class StackHandlerIterator BASE_EMBEDDED {
#define INITIALIZE_SINGLETON(type, field) field##_(this),
StackFrameIteratorBase::StackFrameIteratorBase(Isolate* isolate,
- bool can_access_heap_objects)
+ bool can_access_heap_objects,
+ bool allow_builtins_on_stack)
: isolate_(isolate),
STACK_FRAME_TYPE_LIST(INITIALIZE_SINGLETON)
frame_(NULL), handler_(NULL),
- can_access_heap_objects_(can_access_heap_objects) {
+ can_access_heap_objects_(can_access_heap_objects),
+ allow_builtins_on_stack_(allow_builtins_on_stack) {
}
#undef INITIALIZE_SINGLETON
-StackFrameIterator::StackFrameIterator(Isolate* isolate)
- : StackFrameIteratorBase(isolate, true) {
+StackFrameIterator::StackFrameIterator(Isolate* isolate,
+ bool allow_builtins_on_stack)
+ : StackFrameIteratorBase(isolate, true, allow_builtins_on_stack) {
Reset(isolate->thread_local_top());
}
StackFrameIterator::StackFrameIterator(Isolate* isolate, ThreadLocalTop* t)
- : StackFrameIteratorBase(isolate, true) {
+ : StackFrameIteratorBase(isolate, true, false) {
Reset(t);
}
@@ -189,8 +192,9 @@ void JavaScriptFrameIterator::AdvanceToArgumentsFrame() {
// -------------------------------------------------------------------------
-StackTraceFrameIterator::StackTraceFrameIterator(Isolate* isolate)
- : JavaScriptFrameIterator(isolate) {
+StackTraceFrameIterator::StackTraceFrameIterator(Isolate* isolate,
+ bool allow_builtins_on_stack)
+ : JavaScriptFrameIterator(isolate, allow_builtins_on_stack) {
if (!done() && !IsValidFrame()) Advance();
}
@@ -219,7 +223,7 @@ bool StackTraceFrameIterator::IsValidFrame() {
SafeStackFrameIterator::SafeStackFrameIterator(
Isolate* isolate,
Address fp, Address sp, Address js_entry_sp)
- : StackFrameIteratorBase(isolate, false),
+ : StackFrameIteratorBase(isolate, false, true),
low_bound_(sp),
high_bound_(js_entry_sp),
top_frame_type_(StackFrame::NONE),
@@ -454,7 +458,8 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
if (!iterator->can_access_heap_objects_) return JAVA_SCRIPT;
Code::Kind kind = GetContainingCode(iterator->isolate(),
*(state->pc_address))->kind();
- ASSERT(kind == Code::FUNCTION || kind == Code::OPTIMIZED_FUNCTION);
+ ASSERT(kind == Code::FUNCTION || kind == Code::OPTIMIZED_FUNCTION ||
+ iterator->allow_builtins_on_stack_);
return (kind == Code::OPTIMIZED_FUNCTION) ? OPTIMIZED : JAVA_SCRIPT;
}
return static_cast<StackFrame::Type>(Smi::cast(marker)->value());
« no previous file with comments | « src/frames.h ('k') | src/frames-inl.h » ('j') | src/x64/code-stubs-x64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698