Files
sdk/runtime/vm
Vyacheslav Egorov 4d57de82e2 [vm/reload] Update is_implemented after reload
When doing fine grained invalidation and reload we might end up losing
`is_implemented` bit and some other class-hierarchy related bits
on a class if we only reload the library where class is declared
but not transitive closure which depends on that library.

Consider:

    library a;
    class A {}

    library b;
    class B implements A {}

If we do a change to library `a` which does not impact the outline
then we do not need to reload `b`. This will cause class A to
be replaced with a new `Class` object in the class table - and lead
to us losing various CHA related bits.

This CL update ProgramReloadContext::RebuildDirectSubclasses to
handle this correctly, we also rename it to
RestoreClassHierarchyInvariants and make it share implementation
with ClassFinalizer (which contained almost identical function).

Fixes https://github.com/flutter/flutter/issues/151032

TEST=vm/cc/IsolateReload_IsImplementedBit

Change-Id: Ie620592befecb89897d6e8d46175ef07348bf11d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/374040
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2024-07-02 18:53:08 +00:00
..
2024-04-17 19:14:41 +00:00
2023-03-06 22:06:59 +00:00
2024-04-24 08:52:18 +00:00
2024-04-24 08:52:18 +00:00
2023-06-23 20:35:00 +00:00
2023-09-12 16:22:19 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2024-04-15 22:01:43 +00:00
2022-09-12 12:33:57 +00:00
2022-09-12 12:33:57 +00:00
2023-08-17 17:38:48 +00:00
2024-04-18 16:35:58 +00:00
2023-10-20 19:45:49 +00:00
2023-06-23 20:35:00 +00:00
2024-04-17 19:14:41 +00:00
2024-03-20 20:08:13 +00:00
2024-04-17 19:14:41 +00:00
2024-04-17 19:14:41 +00:00
2023-12-18 21:39:09 +00:00
2024-04-17 19:14:41 +00:00
2024-03-20 20:08:13 +00:00
2024-04-17 19:14:41 +00:00
2024-04-17 19:14:41 +00:00
2022-12-29 10:18:02 +00:00
2024-04-17 19:14:41 +00:00
2023-08-21 16:46:46 +00:00
2023-01-06 07:48:22 +00:00
2022-07-29 18:11:01 +00:00
2024-04-17 19:14:41 +00:00
2023-04-12 22:18:54 +00:00
2023-03-06 22:06:59 +00:00
2023-01-09 15:48:57 +00:00
2024-04-17 19:14:41 +00:00
2024-03-20 20:08:13 +00:00
2022-09-10 15:12:35 +00:00
2024-04-17 19:14:41 +00:00