[vm] Delete obsolete await_token_positions_ from Code object and flow graph.

Change-Id: I80fff049c8d0b45ec7276b1d0ae71f492ad97b9a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106564
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 5796ec3..f848091 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -1397,7 +1397,6 @@
       s->Push(code->ptr()->deopt_info_array_);
       s->Push(code->ptr()->static_calls_target_table_);
     }
-    NOT_IN_PRODUCT(s->Push(code->ptr()->await_token_positions_));
     NOT_IN_PRODUCT(s->Push(code->ptr()->return_address_metadata_));
   }
 
@@ -1459,7 +1458,6 @@
         WriteField(code, deopt_info_array_);
         WriteField(code, static_calls_target_table_);
       }
-      NOT_IN_PRODUCT(WriteField(code, await_token_positions_));
       NOT_IN_PRODUCT(WriteField(code, return_address_metadata_));
 
       s->Write<int32_t>(code->ptr()->state_bits_);
@@ -1574,8 +1572,6 @@
 #endif  // !DART_PRECOMPILED_RUNTIME
 
 #if !defined(PRODUCT)
-      code->ptr()->await_token_positions_ =
-          reinterpret_cast<RawArray*>(d->ReadRef());
       code->ptr()->return_address_metadata_ = d->ReadRef();
       code->ptr()->var_descriptors_ = LocalVarDescriptors::null();
       code->ptr()->comments_ = Array::null();
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 0a590a3..fa4b35e 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -55,7 +55,6 @@
       loop_hierarchy_(nullptr),
       loop_invariant_loads_(nullptr),
       deferred_prefixes_(parsed_function.deferred_prefixes()),
-      await_token_positions_(nullptr),
       captured_parameters_(new (zone()) BitVector(zone(), variable_count())),
       inlining_id_(-1),
       should_print_(FlowGraphPrinter::ShouldPrint(parsed_function.function())) {
diff --git a/runtime/vm/compiler/backend/flow_graph.h b/runtime/vm/compiler/backend/flow_graph.h
index abbfcac..a606d26 100644
--- a/runtime/vm/compiler/backend/flow_graph.h
+++ b/runtime/vm/compiler/backend/flow_graph.h
@@ -366,15 +366,6 @@
   // Merge instructions (only per basic-block).
   void TryOptimizePatterns();
 
-  ZoneGrowableArray<TokenPosition>* await_token_positions() const {
-    return await_token_positions_;
-  }
-
-  void set_await_token_positions(
-      ZoneGrowableArray<TokenPosition>* await_token_positions) {
-    await_token_positions_ = await_token_positions;
-  }
-
   // Replaces uses that are dominated by dom of 'def' with 'other'.
   // Note: uses that occur at instruction dom itself are not dominated by it.
   static void RenameDominatedUses(Definition* def,
@@ -535,7 +526,6 @@
   ZoneGrowableArray<BitVector*>* loop_invariant_loads_;
 
   ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_;
-  ZoneGrowableArray<TokenPosition>* await_token_positions_;
   DirectChainedHashMap<ConstantPoolTrait> constant_instr_pool_;
   BitVector* captured_parameters_;
 
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index 1a5213c..66e293f 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -389,30 +389,6 @@
       /*stats=*/nullptr));
   code.set_is_optimized(optimized());
   code.set_owner(function);
-#if !defined(PRODUCT)
-  ZoneGrowableArray<TokenPosition>* await_token_positions =
-      flow_graph->await_token_positions();
-  if (await_token_positions != NULL) {
-    Smi& token_pos_value = Smi::Handle(zone);
-    if (await_token_positions->length() > 0) {
-      const Array& await_to_token_map = Array::Handle(
-          zone, Array::New(await_token_positions->length(), Heap::kOld));
-      ASSERT(!await_to_token_map.IsNull());
-      for (intptr_t i = 0; i < await_token_positions->length(); i++) {
-        TokenPosition token_pos = await_token_positions->At(i).FromSynthetic();
-        if (!token_pos.IsReal()) {
-          // Some async machinary uses sentinel values. Map them to
-          // no source position.
-          token_pos_value = Smi::New(TokenPosition::kNoSourcePos);
-        } else {
-          token_pos_value = Smi::New(token_pos.value());
-        }
-        await_to_token_map.SetAt(i, token_pos_value);
-      }
-      code.set_await_token_positions(await_to_token_map);
-    }
-  }
-#endif  // !defined(PRODUCT)
 
   if (!function.IsOptimizable()) {
     // A function with huge unoptimized code can become non-optimizable
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 9436d8d..36971d6 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -960,10 +960,9 @@
   // This should only be called on frames that aren't active on the stack.
   ASSERT(fp() == 0);
 
+  ASSERT(script.kind() == RawScript::kKernelTag);
   const Array& await_to_token_map =
-      Array::Handle(zone, script.kind() == RawScript::kKernelTag
-                              ? script.yield_positions()
-                              : code_.await_token_positions());
+      Array::Handle(zone, script.yield_positions());
   if (await_to_token_map.IsNull()) {
     // No mapping.
     return;
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index fb5737d..284fb32 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -15215,14 +15215,6 @@
   reader.DumpSourcePositions(PayloadStart());
 }
 
-RawArray* Code::await_token_positions() const {
-#if defined(PRODUCT)
-  return Array::null();
-#else
-  return raw_ptr()->await_token_positions_;
-#endif
-}
-
 void Bytecode::Disassemble(DisassemblyFormatter* formatter) const {
 #if !defined(PRODUCT) || defined(FORCE_INCLUDE_DISASSEMBLER)
 #if !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index a5a5731..122a012 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -5120,9 +5120,6 @@
     StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw());
   }
 
-  RawArray* await_token_positions() const;
-  void set_await_token_positions(const Array& await_token_positions) const;
-
   // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas
   // that are embedded inside the Code or ObjecPool objects.
   void ResetICDatas(Zone* zone) const;
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index a63a024..3786d8e 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -860,12 +860,6 @@
   PrintJSONInlineIntervals(&jsobj);
 }
 
-void Code::set_await_token_positions(const Array& await_token_positions) const {
-#if !defined(DART_PRECOMPILED_RUNTIME)
-  StorePointer(&raw_ptr()->await_token_positions_, await_token_positions.raw());
-#endif
-}
-
 void Bytecode::PrintJSONImpl(JSONStream* stream, bool ref) const {
   // N.B. This is polymorphic with Code.
 
diff --git a/runtime/vm/program_visitor.cc b/runtime/vm/program_visitor.cc
index 42ef355..91c0267 100644
--- a/runtime/vm/program_visitor.cc
+++ b/runtime/vm/program_visitor.cc
@@ -631,13 +631,6 @@
           list_ = DedupList(list_);
           code_.set_deopt_info_array(list_);
         }
-#ifndef PRODUCT
-        list_ = code_.await_token_positions();
-        if (!list_.IsNull()) {
-          list_ = DedupList(list_);
-          code_.set_await_token_positions(list_);
-        }
-#endif  // !PRODUCT
         list_ = code_.static_calls_target_table();
         if (!list_.IsNull()) {
           list_ = DedupList(list_);
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 10f1b00..3ec790b 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1322,7 +1322,6 @@
   NOT_IN_PRECOMPILED(RawArray* deopt_info_array_);
   // (code-offset, function, code) triples.
   NOT_IN_PRECOMPILED(RawArray* static_calls_target_table_);
-  NOT_IN_PRODUCT(RawArray* await_token_positions_);
   // If return_address_metadata_ is a Smi, it is the offset to the prologue.
   // Else, return_address_metadata_ is null.
   NOT_IN_PRODUCT(RawObject* return_address_metadata_);