Index: runtime/vm/intrinsifier_arm.cc |
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc |
index e878d033bdc1b7c73d269f0bc34330f742dae26c..bde5e3f7f1078060f3f51deeaab978a0bb265d44 100644 |
--- a/runtime/vm/intrinsifier_arm.cc |
+++ b/runtime/vm/intrinsifier_arm.cc |
@@ -15,6 +15,7 @@ |
#include "vm/object_store.h" |
#include "vm/regexp_assembler.h" |
#include "vm/symbols.h" |
+#include "vm/timeline.h" |
namespace dart { |
@@ -2104,6 +2105,24 @@ void Intrinsifier::Profiler_getCurrentTag(Assembler* assembler) { |
__ Ret(); |
} |
+ |
+void Intrinsifier::Timeline_isDartStreamEnabled(Assembler* assembler) { |
+ Label true_label; |
+ // Load TimelineStream*. |
+ __ ldr(R0, Address(THR, Thread::dart_stream_offset())); |
+ // Load uintptr_t from TimelineStream*. |
+ __ ldr(R0, Address(R0, TimelineStream::enabled_offset())); |
rmacnak
2016/05/16 23:10:52
This would deference NULL if it ran in product mod
Cutch
2016/05/17 15:47:47
I had ensured all calls to isDartStreamEnabled com
|
+ __ cmp(R0, Operand(0)); |
+ __ b(&true_label, NE); |
+ // Not enabled. |
+ __ LoadObject(R0, Bool::False()); |
+ __ Ret(); |
+ // Enabled. |
+ __ Bind(&true_label); |
+ __ LoadObject(R0, Bool::True()); |
+ __ Ret(); |
+} |
+ |
} // namespace dart |
#endif // defined TARGET_ARCH_ARM |