diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index c3683d0..0540135 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -4203,11 +4203,13 @@
     auto& stub = Code::ZoneHandle(compiler->zone());
     __ Bind(&call_initializer);
     if (field().needs_load_guard()) {
+      ASSERT(!CanCallDart());
       stub = object_store->init_static_field_stub();
     } else if (field().is_late()) {
       // The stubs below call the initializer function directly, so make sure
       // one is created.
       original_field.EnsureInitializerFunction();
+      ASSERT(CanCallDart());
       stub = field().is_final()
                  ? object_store->init_late_final_static_field_stub()
                  : object_store->init_late_static_field_stub();
@@ -4215,6 +4217,7 @@
       // We call to runtime for non-late fields because the stub would need to
       // catch any exception generated by the initialization function to change
       // the value of the static field from the transition sentinel to null.
+      ASSERT(!CanCallDart());
       stub = object_store->init_static_field_stub();
     }
 
@@ -4257,16 +4260,19 @@
   auto object_store = compiler->isolate_group()->object_store();
   auto& stub = Code::ZoneHandle(compiler->zone());
   if (field.needs_load_guard()) {
+    ASSERT(!CanCallDart());
     stub = object_store->init_instance_field_stub();
   } else if (field.is_late()) {
     if (!field.has_nontrivial_initializer()) {
       // Common stub calls runtime which will throw an exception.
+      ASSERT(!CanCallDart());
       stub = object_store->init_instance_field_stub();
     } else {
       // Stubs for late field initialization call initializer
       // function directly, so make sure one is created.
       original_field.EnsureInitializerFunction();
 
+      ASSERT(CanCallDart());
       if (field.is_final()) {
         stub = object_store->init_late_final_instance_field_stub();
       } else {
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 3ef43cc..8d6cf9b 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -5596,15 +5596,15 @@
                     const Field* field = nullptr)
       : Base(source, deopt_id),
         token_pos_(source.token_pos),
-        calls_initializer_(calls_initializer),
-        throw_exception_on_initialization_(false) {
+        calls_runtime_on_initialization_(
+            field != nullptr &&
+            (!field->is_late() || field->needs_load_guard())),
+        throw_exception_on_initialization_(field != nullptr &&
+                                           !field->has_initializer() &&
+                                           !calls_runtime_on_initialization_),
+        calls_initializer_(calls_initializer) {
+    ASSERT(!calls_initializer || field != nullptr);
     ASSERT(!calls_initializer || (deopt_id != DeoptId::kNone));
-    if (calls_initializer_) {
-      ASSERT(field != nullptr);
-      throw_exception_on_initialization_ = !field->needs_load_guard() &&
-                                           field->is_late() &&
-                                           !field->has_initializer();
-    }
   }
 
   virtual TokenPosition token_pos() const { return token_pos_; }
@@ -5634,15 +5634,17 @@
   }
 
   virtual bool CanCallDart() const {
-    return calls_initializer() && !throw_exception_on_initialization();
+    return calls_initializer() && !throw_exception_on_initialization() &&
+           !calls_runtime_on_initialization_;
   }
   virtual bool CanTriggerGC() const { return calls_initializer(); }
   virtual bool MayThrow() const { return calls_initializer(); }
 
  private:
   const TokenPosition token_pos_;
+  const bool calls_runtime_on_initialization_;
+  const bool throw_exception_on_initialization_;
   bool calls_initializer_;
-  bool throw_exception_on_initialization_;
 
   DISALLOW_COPY_AND_ASSIGN(TemplateLoadField);
 };
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index a4c8a57..bec292f 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -61,8 +61,7 @@
   __ Comment("Calling initializer function");
   __ PushRegister(kFieldReg);
   __ LoadCompressedFieldFromOffset(
-      kFunctionReg, InitInstanceFieldABI::kFieldReg,
-      target::Field::initializer_function_offset());
+      kFunctionReg, kFieldReg, target::Field::initializer_function_offset());
   if (!FLAG_precompiled_mode) {
     __ LoadCompressedFieldFromOffset(CODE_REG, kFunctionReg,
                                      target::Function::code_offset());
diff --git a/tools/VERSION b/tools/VERSION
index 4eebc0d..6166d05 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 89
+PRERELEASE 90
 PRERELEASE_PATCH 0
\ No newline at end of file
