Index: runtime/vm/simulator_dbc.cc |
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc |
index 614e61f13b713127d51c25f2b82aedcbee25b6d3..d42e97c9a4f6208998ba4f60bab0feeccae4cf84 100644 |
--- a/runtime/vm/simulator_dbc.cc |
+++ b/runtime/vm/simulator_dbc.cc |
@@ -434,6 +434,24 @@ class SimulatorHelpers { |
return true; |
} |
+ static bool ClearAsyncThreadStack(Thread* thread, |
+ RawObject** FP, |
+ RawObject** result) { |
+ thread->clear_async_stack_trace(); |
+ *result = Object::null(); |
+ return true; |
+ } |
+ |
+ static bool SetAsyncThreadStackTrace(Thread* thread, |
+ RawObject** FP, |
+ RawObject** result) { |
+ RawObject** args = FrameArguments(FP, 1); |
+ thread->set_raw_async_stack_trace( |
+ reinterpret_cast<RawStackTrace*>(args[0])); |
+ *result = Object::null(); |
+ return true; |
+ } |
+ |
DART_FORCE_INLINE static RawCode* FrameCode(RawObject** FP) { |
ASSERT(GetClassId(FP[kPcMarkerSlotFromFp]) == kCodeCid); |
return static_cast<RawCode*>(FP[kPcMarkerSlotFromFp]); |
@@ -504,6 +522,10 @@ void Simulator::InitOnce() { |
intrinsics_[kDouble_equalIntrinsic] = SimulatorHelpers::Double_equal; |
intrinsics_[kDouble_lessEqualThanIntrinsic] = |
SimulatorHelpers::Double_lessEqualThan; |
+ intrinsics_[kClearAsyncThreadStackTraceIntrinsic] = |
+ SimulatorHelpers::ClearAsyncThreadStack; |
+ intrinsics_[kSetAsyncThreadStackTraceIntrinsic] = |
+ SimulatorHelpers::SetAsyncThreadStackTrace; |
} |