Index: runtime/vm/stack_frame.cc |
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc |
index 4bb0858bee95c0f6f25f71b64efda5a0bcb972c7..3aead8622994494e0b3bc6f74550a36ff19cfcdf 100644 |
--- a/runtime/vm/stack_frame.cc |
+++ b/runtime/vm/stack_frame.cc |
@@ -271,7 +271,8 @@ bool StackFrame::IsValid() const { |
void StackFrameIterator::SetupLastExitFrameData() { |
- uword exit_marker = Thread::Current()->top_exit_frame_info(); |
+ ASSERT(thread_ != NULL); |
+ uword exit_marker = thread_->top_exit_frame_info(); |
frames_.fp_ = exit_marker; |
} |
@@ -294,13 +295,16 @@ static void UnpoisonStack(Isolate* isolate, uword fp) { |
} |
-StackFrameIterator::StackFrameIterator(bool validate, Isolate* isolate) |
+StackFrameIterator::StackFrameIterator(bool validate, |
+ Isolate* isolate, |
+ Thread* thread) |
: validate_(validate), |
entry_(isolate), |
exit_(isolate), |
frames_(isolate), |
current_frame_(NULL), |
- isolate_(isolate) { |
+ isolate_(isolate), |
+ thread_(thread) { |
ASSERT((isolate_ == Isolate::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
SetupLastExitFrameData(); // Setup data for last exit frame. |
@@ -308,13 +312,14 @@ StackFrameIterator::StackFrameIterator(bool validate, Isolate* isolate) |
StackFrameIterator::StackFrameIterator(uword last_fp, bool validate, |
- Isolate* isolate) |
+ Isolate* isolate, Thread* thread) |
: validate_(validate), |
entry_(isolate), |
exit_(isolate), |
frames_(isolate), |
current_frame_(NULL), |
- isolate_(isolate) { |
+ isolate_(isolate), |
+ thread_(thread) { |
ASSERT((isolate_ == Isolate::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
frames_.fp_ = last_fp; |
@@ -324,13 +329,15 @@ StackFrameIterator::StackFrameIterator(uword last_fp, bool validate, |
StackFrameIterator::StackFrameIterator(uword fp, uword sp, uword pc, |
- bool validate, Isolate* isolate) |
+ bool validate, Isolate* isolate, |
+ Thread* thread) |
: validate_(validate), |
entry_(isolate), |
exit_(isolate), |
frames_(isolate), |
current_frame_(NULL), |
- isolate_(isolate) { |
+ isolate_(isolate), |
+ thread_(thread) { |
ASSERT((isolate_ == Isolate::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
frames_.fp_ = fp; |