[M] Change in dart/sdk[main]: [dyn_modules] Check target of dcall from dynamic modules is valid.

0 views
Skip to first unread message

Sigmund Cherem (Gerrit)

unread,
Apr 25, 2026, 1:44:45 AMApr 25
to Sigmund Cherem, Alexander Markov, Slava Egorov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Slava Egorov

Sigmund Cherem added 1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Sigmund Cherem . resolved

I'm about to be OOO for about a week so I wont respond as quickly. I just wanted to send this out to get preliminary feedback for when I'm back.

Note the related CLs in the chain, including the end-to-end test. Those may provide helpful examples of the semantics we are enforcing with the runtime checks.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 1
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Sat, 25 Apr 2026 05:44:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Slava Egorov (Gerrit)

unread,
Apr 28, 2026, 7:13:23 AMApr 28
to Sigmund Cherem, Alexander Markov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Sigmund Cherem

Slava Egorov voted and added 1 comment

Votes added by Slava Egorov

Code-Review+1

1 comment

File runtime/vm/compiler/aot/precompiler.cc
Line 1623, Patchset 1 (Latest): // Check for dyn-module:dynamically-callable or
Slava Egorov . resolved

nit: I find is bit confusing that this attribute change happens here and not when `Function` object is created when loading kernel... but okay.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 1
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Tue, 28 Apr 2026 11:13:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
Apr 30, 2026, 11:56:19 AM (13 days ago) Apr 30
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem

Alexander Markov added 3 comments

File runtime/vm/compiler/aot/precompiler.cc
Line 1639, Patchset 1 (Latest): function.set_is_dynamically_callable(true);
Alexander Markov . unresolved

Why is this code needed? It seems like we already set a bit on the functions in kernel loader.

Line 1800, Patchset 1 (Latest): function2.set_is_dynamically_callable(true);
Alexander Markov . unresolved

CreateDynamicInvocationForwarder should propagate the bit to the forwarder automatically. Consider replacing this code with an assertion.

File runtime/vm/interpreter.cc
Line 916, Patchset 1 (Latest): !target_func.is_declared_in_bytecode()) {
Alexander Markov . unresolved

Can we make these checks once per cache miss instead of repeating them on every call?

We would probably need to split the cache for interface and dynamic calls.

Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 1
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Comment-Date: Thu, 30 Apr 2026 15:56:15 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 7, 2026, 2:12:45 PM (6 days ago) May 7
to Sigmund Cherem, dart-...@luci-project-accounts.iam.gserviceaccount.com, Slava Egorov, Alexander Markov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov

Sigmund Cherem added 4 comments

File runtime/vm/compiler/aot/precompiler.cc
Line 1623, Patchset 1: // Check for dyn-module:dynamically-callable or
Slava Egorov . resolved

nit: I find is bit confusing that this attribute change happens here and not when `Function` object is created when loading kernel... but okay.

Sigmund Cherem

Good point - removed, we are setting it already when loading kernel and this logic was now obsolete and can be removed.

Line 1639, Patchset 1: function.set_is_dynamically_callable(true);
Alexander Markov . resolved

Why is this code needed? It seems like we already set a bit on the functions in kernel loader.

Sigmund Cherem

Good point, we can delete this now. I had this on an earlier implementation before I added support in the kernel loader (which was also necessary for JIT) and I forgot to remove it here.

Line 1800, Patchset 1: function2.set_is_dynamically_callable(true);
Alexander Markov . resolved

CreateDynamicInvocationForwarder should propagate the bit to the forwarder automatically. Consider replacing this code with an assertion.

Sigmund Cherem

Done.

File runtime/vm/interpreter.cc
Line 916, Patchset 1: !target_func.is_declared_in_bytecode()) {
Alexander Markov . resolved

Can we make these checks once per cache miss instead of repeating them on every call?

We would probably need to split the cache for interface and dynamic calls.

Sigmund Cherem

Fair, I think it's possible, but I'd like to do that separately. I've added a TODO for now.

Given that this is guarded by `is_dynamic_call` already, we shouldn't be incurring this cost except for the cases where we actually are performing a dcall from bytecoxe, which are less critical.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 4
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Thu, 07 May 2026 18:12:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Slava Egorov <veg...@google.com>
Comment-In-Reply-To: Alexander Markov <alexm...@google.com>
satisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
May 7, 2026, 2:16:18 PM (6 days ago) May 7
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, Slava Egorov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem

Alexander Markov voted Code-Review+1

Code-Review+1
Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 4
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Comment-Date: Thu, 07 May 2026 18:16:15 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 7, 2026, 2:17:02 PM (6 days ago) May 7
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, Slava Egorov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org

Sigmund Cherem voted Commit-Queue+2

Commit-Queue+2
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 4
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Comment-Date: Thu, 07 May 2026 18:16:59 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 7, 2026, 2:17:43 PM (6 days ago) May 7
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, Slava Egorov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org

Sigmund Cherem added 1 comment

Patchset-level comments
File-level comment, Patchset 4 (Latest):
Sigmund Cherem . resolved

Thank you Alex and Slava for the reviews!

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 4
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Comment-Date: Thu, 07 May 2026 18:17:40 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
May 7, 2026, 2:28:59 PM (6 days ago) May 7
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, Slava Egorov, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem

Alexander Markov added 1 comment

File runtime/vm/interpreter.cc
Line 917, Patchset 4 (Latest): if (!target_func.is_dynamically_callable() &&
Alexander Markov . unresolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 4
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Comment-Date: Thu, 07 May 2026 18:28:56 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
open
diffy

Slava Egorov (Gerrit)

unread,
May 8, 2026, 9:37:05 AM (5 days ago) May 8
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Sigmund Cherem

Slava Egorov voted Code-Review+1

Code-Review+1
Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 6
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Fri, 08 May 2026 13:37:00 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
May 8, 2026, 11:17:23 AM (5 days ago) May 8
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem

Alexander Markov added 2 comments

File runtime/vm/interpreter.cc
Line 917, Patchset 4: if (!target_func.is_dynamically_callable() &&
Alexander Markov . unresolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Alexander Markov

Maybe we should also disable checks in JIT mode until it has correct pragmas / `is_dynamically_callable` bit.

File utils/dynamic_module_runner/dynamic_interface.yaml
Line 59, Patchset 6 (Latest):dynamically-callable:
Alexander Markov . unresolved

We should probably expose all dart:* libraries as dynamically callable (similarly to `callable` above) to allow running tests with arbitrary Dart code.

Also note that this dynamic interface yaml file is only used in AOT mode.

Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 6
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Comment-Date: Fri, 08 May 2026 15:17:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Alexander Markov <alexm...@google.com>
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 8, 2026, 11:40:10 AM (5 days ago) May 8
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov

Sigmund Cherem added 2 comments

File runtime/vm/interpreter.cc
Line 917, Patchset 4: if (!target_func.is_dynamically_callable() &&
Alexander Markov . unresolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Sigmund Cherem

Makes sense.

The `#if defined(DART_DYNAMIC_MODULES)` at the beginning of the file made me believe that we only used it with dynamic_modules at the moment. I realize now that we already have the `--interpreter` flag which makes use of it in other ways. I expect with time we will also change the `#if` above so the interpreter will be available in modular-aot debug mode even when dynamic modules is not enabled, correct?

For now, what about using `FLAG_interpreter` which already exists and appears to be the only way we use the interpreter from non-dynamic modules?

Long term I don't think a global runtime flag is the right approach, though. It seems to me that we want the behavior to depend on the caller: if the caller is declared in a dynamic module we'd want this behavior regardless of the modality. Right now we can approximating that question with `FLAG_interpreter`, but maybe we need an actual property like `is_declared_in_dynamic_module` instead?

File utils/dynamic_module_runner/dynamic_interface.yaml
Line 59, Patchset 6 (Latest):dynamically-callable:
Alexander Markov . unresolved

We should probably expose all dart:* libraries as dynamically callable (similarly to `callable` above) to allow running tests with arbitrary Dart code.

Also note that this dynamic interface yaml file is only used in AOT mode.

Sigmund Cherem

Thanks - I'll try that instead.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 6
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Fri, 08 May 2026 15:40:06 +0000
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 8, 2026, 4:38:42 PM (5 days ago) May 8
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov

Sigmund Cherem added 3 comments

File runtime/vm/interpreter.cc
Line 917, Patchset 4: if (!target_func.is_dynamically_callable() &&
Alexander Markov . resolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Sigmund Cherem

Makes sense.

The `#if defined(DART_DYNAMIC_MODULES)` at the beginning of the file made me believe that we only used it with dynamic_modules at the moment. I realize now that we already have the `--interpreter` flag which makes use of it in other ways. I expect with time we will also change the `#if` above so the interpreter will be available in modular-aot debug mode even when dynamic modules is not enabled, correct?

For now, what about using `FLAG_interpreter` which already exists and appears to be the only way we use the interpreter from non-dynamic modules?

Long term I don't think a global runtime flag is the right approach, though. It seems to me that we want the behavior to depend on the caller: if the caller is declared in a dynamic module we'd want this behavior regardless of the modality. Right now we can approximating that question with `FLAG_interpreter`, but maybe we need an actual property like `is_declared_in_dynamic_module` instead?

Sigmund Cherem

This is now guarded by `FLAG_interpreter`, I prefer to not disable entirely the checks in JIT since I do have support for them when loading from kernel snapshots which are transformed and annotated.

It appears our test suite is running JIT with FLAG_interpreter anyways, so the use of this flag is letting us keep the test coverage we have.

File runtime/vm/object.cc
Line 4029, Patchset 8 (Latest): invocation.set_is_dynamically_callable(true);
Sigmund Cherem . unresolved

@alexm...@google.com - investigating bot failures I came across the invoke-field-dispatcher. I'm using this change to set them as dynamically callable by default, but I'm less familiar with their use and whether such default is correct. Thoguhts?

File utils/dynamic_module_runner/dynamic_interface.yaml
Line 59, Patchset 6:dynamically-callable:
Alexander Markov . resolved

We should probably expose all dart:* libraries as dynamically callable (similarly to `callable` above) to allow running tests with arbitrary Dart code.

Also note that this dynamic interface yaml file is only used in AOT mode.

Sigmund Cherem

Thanks - I'll try that instead.

Sigmund Cherem

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 8
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Fri, 08 May 2026 20:38:39 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Sigmund Cherem <sig...@google.com>
Comment-In-Reply-To: Alexander Markov <alexm...@google.com>
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 8, 2026, 7:58:18 PM (5 days ago) May 8
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Slava Egorov

Sigmund Cherem added 1 comment

File sdk/lib/_internal/vm/lib/function.dart
Line 25, Patchset 9 (Latest): @pragma("dyn-module:dynamically-callable")
Sigmund Cherem . resolved

FYI - also added this change for another a couple failures involving closure calls via `get:call`.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 9
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Fri, 08 May 2026 23:58:15 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
May 11, 2026, 10:53:38 AM (2 days ago) May 11
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem and Slava Egorov

Alexander Markov added 2 comments

File runtime/vm/interpreter.cc
Line 917, Patchset 4: if (!target_func.is_dynamically_callable() &&
Alexander Markov . unresolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Sigmund Cherem

Makes sense.

The `#if defined(DART_DYNAMIC_MODULES)` at the beginning of the file made me believe that we only used it with dynamic_modules at the moment. I realize now that we already have the `--interpreter` flag which makes use of it in other ways. I expect with time we will also change the `#if` above so the interpreter will be available in modular-aot debug mode even when dynamic modules is not enabled, correct?

For now, what about using `FLAG_interpreter` which already exists and appears to be the only way we use the interpreter from non-dynamic modules?

Long term I don't think a global runtime flag is the right approach, though. It seems to me that we want the behavior to depend on the caller: if the caller is declared in a dynamic module we'd want this behavior regardless of the modality. Right now we can approximating that question with `FLAG_interpreter`, but maybe we need an actual property like `is_declared_in_dynamic_module` instead?

Sigmund Cherem

This is now guarded by `FLAG_interpreter`, I prefer to not disable entirely the checks in JIT since I do have support for them when loading from kernel snapshots which are transformed and annotated.

It appears our test suite is running JIT with FLAG_interpreter anyways, so the use of this flag is letting us keep the test coverage we have.

Alexander Markov

I agree that ideally dynamic call checking should only work if executing bytecode from a dynamic module. Maybe dart2bytecode can generate a different instruction instead of a DynamicCall (CheckedDynamicCall?) to support this, if dynamic module validation is enabled at compile time.

Regarding your other points:

Eventually I plan to change `#if defined(DART_DYNAMIC_MODULES)` to `#if defined(DART_INCLUDE_INTERPRETER)` where appropriate to make it possible to use interpreter without dynamic modules. Of course, DART_DYNAMIC_MODULES would imply DART_INCLUDE_INTERPRETER (but not vice versa).

`--interpreter` flag is orthogonal to dynamic call checking: it just instructs the standalone embedder to compile everything to bytecode rather than kernel. Even without this flag VM can execute bytecode directly (if it has the interpreter). So this doesn't look like a good indication to enable dynamic call checking.

And lastly, annotating with pragmas in JIT mode is very incomplete. It doesn't cover many important cases such as incremental compiler, running Dart scripts via standalone VM and calls to core libraries. It means that these checks can suddenly block users without any possible remedy. This makes me think that at least for now we should have a runtime flag for dynamic call checking, and we should enable it only in AOT mode by default. This would allow running with checks if needed even in JIT mode but not disturb any of the existing workflows. (Alternatively, we could guard checking by `#if defined(DART_PRECOMPILED_RUNTIME)` to disable them in JIT entirely.)

File runtime/vm/object.cc
Line 4029, Patchset 8: invocation.set_is_dynamically_callable(true);
Sigmund Cherem . unresolved

@alexm...@google.com - investigating bot failures I came across the invoke-field-dispatcher. I'm using this change to set them as dynamically callable by default, but I'm less familiar with their use and whether such default is correct. Thoguhts?

Alexander Markov

This code is used by 2 kinds of dispatchers: InvokeFieldDispatcher and NoSuchMethodDispatcher.

InvokeFieldDispatcher is used when making a dynamic call through getter (e.g. `o.foo(...)` where `o.foo` turns out to be a getter or field). In such a case I think InvokeFieldDispatcher should inherit the dynamically-callable flag from a getter or field (except when it is used for closure calls). Otherwise it would allow unchecked dynamic calls through getters, as InvokeFieldDispatcher would perform a non-dynamic call of the getter.

NoSuchMethodDispatcher is for dispatching to `noSuchMethod` when corresponding method is not found. We should probably always make those dynamically callable as they are used as the last resort and we disallow user-defined `noSuchMethod` along with dynamically-callable members.

Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 9
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Comment-Date: Mon, 11 May 2026 14:53:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 12, 2026, 3:57:05 PM (17 hours ago) May 12
to Sigmund Cherem, Slava Egorov, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Slava Egorov

Sigmund Cherem added 2 comments

File runtime/vm/interpreter.cc
Line 917, Patchset 4: if (!target_func.is_dynamically_callable() &&
Alexander Markov . resolved

I forgot to mention: we should probably have a runtime flag to disable these checks in order to support case when interpreter is used to run arbitrary Dart code without any restriction (e.g. for debugging/hot reload on iOS), not dynamic module code.

Sigmund Cherem

Makes sense.

The `#if defined(DART_DYNAMIC_MODULES)` at the beginning of the file made me believe that we only used it with dynamic_modules at the moment. I realize now that we already have the `--interpreter` flag which makes use of it in other ways. I expect with time we will also change the `#if` above so the interpreter will be available in modular-aot debug mode even when dynamic modules is not enabled, correct?

For now, what about using `FLAG_interpreter` which already exists and appears to be the only way we use the interpreter from non-dynamic modules?

Long term I don't think a global runtime flag is the right approach, though. It seems to me that we want the behavior to depend on the caller: if the caller is declared in a dynamic module we'd want this behavior regardless of the modality. Right now we can approximating that question with `FLAG_interpreter`, but maybe we need an actual property like `is_declared_in_dynamic_module` instead?

Sigmund Cherem

This is now guarded by `FLAG_interpreter`, I prefer to not disable entirely the checks in JIT since I do have support for them when loading from kernel snapshots which are transformed and annotated.

It appears our test suite is running JIT with FLAG_interpreter anyways, so the use of this flag is letting us keep the test coverage we have.

Alexander Markov

I agree that ideally dynamic call checking should only work if executing bytecode from a dynamic module. Maybe dart2bytecode can generate a different instruction instead of a DynamicCall (CheckedDynamicCall?) to support this, if dynamic module validation is enabled at compile time.

Regarding your other points:

Eventually I plan to change `#if defined(DART_DYNAMIC_MODULES)` to `#if defined(DART_INCLUDE_INTERPRETER)` where appropriate to make it possible to use interpreter without dynamic modules. Of course, DART_DYNAMIC_MODULES would imply DART_INCLUDE_INTERPRETER (but not vice versa).

`--interpreter` flag is orthogonal to dynamic call checking: it just instructs the standalone embedder to compile everything to bytecode rather than kernel. Even without this flag VM can execute bytecode directly (if it has the interpreter). So this doesn't look like a good indication to enable dynamic call checking.

And lastly, annotating with pragmas in JIT mode is very incomplete. It doesn't cover many important cases such as incremental compiler, running Dart scripts via standalone VM and calls to core libraries. It means that these checks can suddenly block users without any possible remedy. This makes me think that at least for now we should have a runtime flag for dynamic call checking, and we should enable it only in AOT mode by default. This would allow running with checks if needed even in JIT mode but not disturb any of the existing workflows. (Alternatively, we could guard checking by `#if defined(DART_PRECOMPILED_RUNTIME)` to disable them in JIT entirely.)

Sigmund Cherem

Maybe dart2bytecode can generate a different instruction instead of a DynamicCall (CheckedDynamicCall?) to support this, if dynamic module validation is enabled at compile time.

Seems reasonable. That said, we have other situations that require knowing whether a method was declared in a dynamic module (e.g. to implicitly label it as dynamically callable). Rather than checking `is_declared_in_bytecode`, could we use a single mechanism to answer both questions?

Eventually I plan to change #if defined(DART_DYNAMIC_MODULES) to #if defined(DART_INCLUDE_INTERPRETER)

Sounds great

... This makes me think that at least for now we should have a runtime flag for dynamic call checking, and we should enable it only in AOT mode by default. This would allow running with checks if needed even in JIT mode but not disturb any of the existing workflows. (Alternatively, we could guard checking by #if defined(DART_PRECOMPILED_RUNTIME) to disable them in JIT entirely.)

Thanks, that's completely fair. I modified this CL for now to entirely disable it in JIT and we can add the runtime flag as a follow up (logic is below in the DynamicCall block)

File runtime/vm/object.cc
Line 4029, Patchset 8: invocation.set_is_dynamically_callable(true);
Sigmund Cherem . resolved

@alexm...@google.com - investigating bot failures I came across the invoke-field-dispatcher. I'm using this change to set them as dynamically callable by default, but I'm less familiar with their use and whether such default is correct. Thoguhts?

Alexander Markov

This code is used by 2 kinds of dispatchers: InvokeFieldDispatcher and NoSuchMethodDispatcher.

InvokeFieldDispatcher is used when making a dynamic call through getter (e.g. `o.foo(...)` where `o.foo` turns out to be a getter or field). In such a case I think InvokeFieldDispatcher should inherit the dynamically-callable flag from a getter or field (except when it is used for closure calls). Otherwise it would allow unchecked dynamic calls through getters, as InvokeFieldDispatcher would perform a non-dynamic call of the getter.

NoSuchMethodDispatcher is for dispatching to `noSuchMethod` when corresponding method is not found. We should probably always make those dynamically callable as they are used as the last resort and we disallow user-defined `noSuchMethod` along with dynamically-callable members.

Sigmund Cherem

In such a case I think InvokeFieldDispatcher should inherit the dynamically-callable flag from a getter or field

👍 - added this to the CL. It required also tracking the pragma on fields, which we hadn't done until now.

(except when it is used for closure calls)

Like no-such-method, I assume that for closure calls we also want to default to true, correct?

NoSuchMethodDispatcher is for dispatching to noSuchMethod when corresponding method is not found. We should probably always make those dynamically callable as they are used as the last resort and we disallow user-defined noSuchMethod along with dynamically-callable members.

👍

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 11
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Tue, 12 May 2026 19:57:01 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Alexander Markov (Gerrit)

unread,
May 12, 2026, 4:12:11 PM (17 hours ago) May 12
to Sigmund Cherem, Alexander Markov, Slava Egorov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Sigmund Cherem and Slava Egorov

Alexander Markov voted and added 4 comments

Votes added by Alexander Markov

Code-Review+1

4 comments

File runtime/vm/kernel_loader.cc
Line 1013, Patchset 11 (Latest): field.set_is_dynamically_callable(
Alexander Markov . unresolved

Nit: this is probably not needed as this code reads top-level (static) fields.

File runtime/vm/object.h
Line 4515, Patchset 11 (Latest): return untag()->kind_bits_.Read<NoSanitizeThreadBit>();
Alexander Markov . unresolved

IsDynamicallyCallableBit

Line 4512, Patchset 11 (Latest): untag()->kind_bits_.UpdateBool<NoSanitizeThreadBit>(value);
Alexander Markov . unresolved

IsDynamicallyCallableBit

File sdk/lib/_internal/vm/lib/function.dart
Line 25, Patchset 9: @pragma("dyn-module:dynamically-callable")
Sigmund Cherem . unresolved

FYI - also added this change for another a couple failures involving closure calls via `get:call`.

Alexander Markov

Can we special case closure calls when creating InvokeFieldDispatcher instead of adding this pragma (which can affect builds without dynamic modules)?

Open in Gerrit

Related details

Attention is currently required from:
  • Sigmund Cherem
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 11
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Comment-Date: Tue, 12 May 2026 20:12:07 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Sigmund Cherem <sig...@google.com>
satisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 12, 2026, 7:05:54 PM (14 hours ago) May 12
to Sigmund Cherem, Alexander Markov, Slava Egorov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Slava Egorov

Sigmund Cherem voted and added 5 comments

Votes added by Sigmund Cherem

Commit-Queue+2

5 comments

Patchset-level comments
File-level comment, Patchset 11:
Sigmund Cherem . resolved

Thank you Alex and Slava for the multiple iterations of review!

File runtime/vm/kernel_loader.cc
Line 1013, Patchset 11: field.set_is_dynamically_callable(
Alexander Markov . resolved

Nit: this is probably not needed as this code reads top-level (static) fields.

Sigmund Cherem

Done

File runtime/vm/object.h
Line 4515, Patchset 11: return untag()->kind_bits_.Read<NoSanitizeThreadBit>();
Alexander Markov . resolved

IsDynamicallyCallableBit

Sigmund Cherem

Done

Line 4512, Patchset 11: untag()->kind_bits_.UpdateBool<NoSanitizeThreadBit>(value);
Alexander Markov . resolved

IsDynamicallyCallableBit

Sigmund Cherem

🤦 Thank you, done

File sdk/lib/_internal/vm/lib/function.dart
Line 25, Patchset 9: @pragma("dyn-module:dynamically-callable")
Sigmund Cherem . resolved

FYI - also added this change for another a couple failures involving closure calls via `get:call`.

Alexander Markov

Can we special case closure calls when creating InvokeFieldDispatcher instead of adding this pragma (which can affect builds without dynamic modules)?

Sigmund Cherem

For now, I removed the pragma and instead added this member to the dynamic_interface of the dynamic_modules_runner target.

Not sure if we can completely handle this with InvokeFieldDispatcher - I am seeing cases that are not going through a field dispatcher, but directly finding the getter instead (maybe I'm interpreting this incorrectly, though).

Long term, my guess is that we will need to revisit this so that end-users don't need to do the same thing in their dynamic interface (_Closure.call is a low level implementation detail they shouldn't have to worry about). What I find tricky here is that we don't have something public to anchor on (e.g. we don't have a `Function.call` declaration we can use).

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Slava Egorov
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 12
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Slava Egorov <veg...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Tue, 12 May 2026 23:05:51 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Sigmund Cherem <sig...@google.com>
Comment-In-Reply-To: Alexander Markov <alexm...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Sigmund Cherem (Gerrit)

unread,
May 12, 2026, 8:13:28 PM (13 hours ago) May 12
to Sigmund Cherem, Alexander Markov, Slava Egorov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Slava Egorov

Sigmund Cherem voted and added 1 comment

Votes added by Sigmund Cherem

Auto-Submit+1

1 comment

Patchset-level comments
File-level comment, Patchset 12 (Latest):
Sigmund Cherem . resolved

Note that CQ requires another +1 for the last patchset

Gerrit-Comment-Date: Wed, 13 May 2026 00:13:24 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Slava Egorov (Gerrit)

unread,
6:49 AM (2 hours ago) 6:49 AM
to Sigmund Cherem, Alexander Markov, dart-...@luci-project-accounts.iam.gserviceaccount.com, dart-vm-compil...@google.com, rev...@dartlang.org, vm-...@dartlang.org
Attention needed from Alexander Markov and Sigmund Cherem

Slava Egorov voted and added 2 comments

Votes added by Slava Egorov

Code-Review+1

2 comments

File runtime/vm/interpreter.cc
Line 913, Patchset 12 (Latest): // TODO(sigmund): don't perform this check repeatedly, consider instead
Slava Egorov . unresolved

nit: I think we prefer `TODO(dartbug.com/num)` these days. Otherwise TODOs just stay behind.

Line 914, Patchset 12 (Latest): // splitting the lookup-cacke to separately track dynamic calls.
Slava Egorov . unresolved

spelling: cache

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Markov
  • Sigmund Cherem
Submit Requirements:
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement satisfiedCommit-Message-Has-TEST
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I27acb4e690a68e08fe1f1ca94e0d77cc7dc4d11e
Gerrit-Change-Number: 498300
Gerrit-PatchSet: 12
Gerrit-Owner: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Alexander Markov <alexm...@google.com>
Gerrit-Reviewer: Sigmund Cherem <sig...@google.com>
Gerrit-Reviewer: Slava Egorov <veg...@google.com>
Gerrit-Attention: Sigmund Cherem <sig...@google.com>
Gerrit-Attention: Alexander Markov <alexm...@google.com>
Gerrit-Comment-Date: Wed, 13 May 2026 10:49:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
open
diffy
Reply all
Reply to author
Forward
0 new messages