Index: runtime/vm/stack_frame.cc |
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc |
index 4bb0858bee95c0f6f25f71b64efda5a0bcb972c7..4f27688b38e929c96578efa43e4ba1c5dde237b9 100644 |
--- a/runtime/vm/stack_frame.cc |
+++ b/runtime/vm/stack_frame.cc |
@@ -35,7 +35,7 @@ bool StackFrame::IsStubFrame() const { |
const char* StackFrame::ToCString() const { |
- ASSERT(isolate_ == Isolate::Current()); |
+ ASSERT(thread_ == Thread::Current()); |
Zone* zone = Thread::Current()->zone(); |
if (IsDartFrame()) { |
const Code& code = Code::Handle(LookupDartCode()); |
@@ -68,7 +68,7 @@ void ExitFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) { |
void EntryFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) { |
- ASSERT(isolate() == Isolate::Current()); |
+ ASSERT(thread() == Thread::Current()); |
// Visit objects between SP and (FP - callee_save_area). |
ASSERT(visitor != NULL); |
RawObject** first = reinterpret_cast<RawObject**>(sp()); |
@@ -85,7 +85,7 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) { |
// these handles are not traversed. The use of handles is mainly to |
// be able to reuse the handle based code and avoid having to add |
// helper functions to the raw object interface. |
- ASSERT(isolate_ == Isolate::Current()); |
+ ASSERT(thread() == Thread::Current()); |
ASSERT(visitor != NULL); |
NoSafepointScope no_safepoint; |
Code code; |
@@ -165,7 +165,6 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) { |
RawFunction* StackFrame::LookupDartFunction() const { |
- ASSERT(isolate_ == Isolate::Current()); |
const Code& code = Code::Handle(LookupDartCode()); |
if (!code.IsNull()) { |
return code.function(); |
@@ -175,7 +174,6 @@ RawFunction* StackFrame::LookupDartFunction() const { |
RawCode* StackFrame::LookupDartCode() const { |
- ASSERT(isolate_ == Isolate::Current()); |
// We add a no gc scope to ensure that the code below does not trigger |
// a GC as we are handling raw object references here. It is possible |
// that the code is called while a GC is in progress, that is ok. |
@@ -271,7 +269,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(); |
srdjan
2015/10/20 21:33:47
Please sync with my temporary fix and remove Isola
Cutch
2015/10/20 21:39:01
Done.
|
frames_.fp_ = exit_marker; |
} |
@@ -294,28 +293,29 @@ static void UnpoisonStack(Isolate* isolate, uword fp) { |
} |
-StackFrameIterator::StackFrameIterator(bool validate, Isolate* isolate) |
+StackFrameIterator::StackFrameIterator(bool validate, |
+ Thread* thread) |
srdjan
2015/10/20 21:33:47
One line.
Cutch
2015/10/20 21:39:01
Done.
|
: validate_(validate), |
- entry_(isolate), |
- exit_(isolate), |
- frames_(isolate), |
+ entry_(thread), |
+ exit_(thread), |
+ frames_(thread), |
current_frame_(NULL), |
- isolate_(isolate) { |
- ASSERT((isolate_ == Isolate::Current()) || |
+ thread_(thread) { |
+ ASSERT((thread_ == Thread::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
SetupLastExitFrameData(); // Setup data for last exit frame. |
} |
StackFrameIterator::StackFrameIterator(uword last_fp, bool validate, |
- Isolate* isolate) |
+ Thread* thread) |
: validate_(validate), |
- entry_(isolate), |
- exit_(isolate), |
- frames_(isolate), |
+ entry_(thread), |
+ exit_(thread), |
+ frames_(thread), |
current_frame_(NULL), |
- isolate_(isolate) { |
- ASSERT((isolate_ == Isolate::Current()) || |
+ thread_(thread) { |
+ ASSERT((thread_ == Thread::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
frames_.fp_ = last_fp; |
frames_.sp_ = 0; |
@@ -324,14 +324,14 @@ StackFrameIterator::StackFrameIterator(uword last_fp, bool validate, |
StackFrameIterator::StackFrameIterator(uword fp, uword sp, uword pc, |
- bool validate, Isolate* isolate) |
+ bool validate, Thread* thread) |
: validate_(validate), |
- entry_(isolate), |
- exit_(isolate), |
- frames_(isolate), |
+ entry_(thread), |
+ exit_(thread), |
+ frames_(thread), |
current_frame_(NULL), |
- isolate_(isolate) { |
- ASSERT((isolate_ == Isolate::Current()) || |
+ thread_(thread) { |
+ ASSERT((thread_ == Thread::Current()) || |
OS::AllowStackFrameIteratorFromAnotherThread()); |
frames_.fp_ = fp; |
frames_.sp_ = sp; |
@@ -356,7 +356,7 @@ StackFrame* StackFrameIterator::NextFrame() { |
if (!HasNextFrame()) { |
return NULL; |
} |
- UnpoisonStack(isolate_, frames_.fp_); |
+ UnpoisonStack(thread_->isolate(), frames_.fp_); |
if (frames_.pc_ == 0) { |
// Iteration starts from an exit frame given by its fp. |
current_frame_ = NextExitFrame(); |