@@ -1110,7 +1110,10 @@ bool FlowGraphBuilder::IsRecognizedMethodForFlowGraph(
11101110    case  MethodRecognizer::kFfiAbi :
11111111    case  MethodRecognizer::kUtf8DecoderScan :
11121112    case  MethodRecognizer::kHas63BitSmis :
1113+     case  MethodRecognizer::kProfiler_getCurrentTag :
1114+     case  MethodRecognizer::kUserTag_defaultTag :
11131115    case  MethodRecognizer::kExtensionStreamHasListener :
1116+     case  MethodRecognizer::kTimeline_isDartStreamEnabled :
11141117    case  MethodRecognizer::kCompactHash_uninitializedIndex :
11151118    case  MethodRecognizer::kCompactHash_uninitializedData :
11161119    case  MethodRecognizer::kSmi_hashCode :
@@ -1720,6 +1723,14 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
17201723      body += Constant (Bool::False ());
17211724#endif   //  defined(ARCH_IS_64_BIT)
17221725    } break ;
1726+     case  MethodRecognizer::kProfiler_getCurrentTag : {
1727+       body += LoadThread ();
1728+       body += LoadNativeField (Slot::Thread_current_tag ());
1729+     } break ;
1730+     case  MethodRecognizer::kUserTag_defaultTag : {
1731+       body += LoadThread ();
1732+       body += LoadNativeField (Slot::Thread_default_tag ());
1733+     } break ;
17231734    case  MethodRecognizer::kExtensionStreamHasListener : {
17241735#ifdef  PRODUCT
17251736      body += Constant (Bool::False ());
@@ -1730,6 +1741,17 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
17301741      //  relaxed order access, which is acceptable for this use case.
17311742      body += IntToBool ();
17321743#endif   //  PRODUCT
1744+     } break ;
1745+     case  MethodRecognizer::kTimeline_isDartStreamEnabled : {
1746+ #if  !defined(SUPPORT_TIMELINE)
1747+       body += Constant (Bool::False ());
1748+ #else 
1749+       body += LoadDartStream ();
1750+       body += LoadNativeField (Slot::StreamInfo_enabled ());
1751+       //  StreamInfo::enabled_ is a std::atomic<intptr_t>. This is effectively
1752+       //  relaxed order access, which is acceptable for this use case.
1753+       body += IntToBool ();
1754+ #endif   //  SUPPORT_TIMELINE
17331755    } break ;
17341756    case  MethodRecognizer::kCompactHash_uninitializedIndex : {
17351757      body += Constant (Object::uninitialized_index ());
@@ -4642,6 +4664,13 @@ Fragment FlowGraphBuilder::LoadServiceExtensionStream() {
46424664  return  body;
46434665}
46444666
4667+ Fragment FlowGraphBuilder::LoadDartStream () {
4668+   Fragment body;
4669+   body += LoadThread ();
4670+   body += LoadNativeField (Slot::Thread_dart_stream ());
4671+   return  body;
4672+ }
4673+ 
46454674//  TODO(http://dartbug.com/47487): Support unboxed output value.
46464675Fragment FlowGraphBuilder::BoolToInt () {
46474676  //  TODO(http://dartbug.com/36855) Build IfThenElseInstr, instead of letting
0 commit comments