[vm] Fix false-positive in const field removal detection.

TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/51526
Change-Id: I86dfa625a218dd58c2c009081230ca0d0729e807
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286959
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak 2023-03-07 18:19:07 +00:00 committed by Commit Queue
parent 219521d9cd
commit c023db4dd0

View file

@ -695,17 +695,18 @@ void Class::CheckReload(const Class& replacement,
for (intptr_t i = 0, n = old_fields.Length(); i < n; i++) {
old_field ^= old_fields.At(i);
new_field ^= new_fields.At(i);
if (old_field.IsNull() != new_field.IsNull()) {
if (old_field.IsNull()) {
continue;
}
if (new_field.IsNull()) {
field_removed = true;
break;
}
if (!old_field.IsNull()) {
old_name = old_field.name();
new_name = new_field.name();
if (!old_name.Equals(new_name)) {
field_removed = true;
break;
}
old_name = old_field.name();
new_name = new_field.name();
if (!old_name.Equals(new_name)) {
field_removed = true;
break;
}
}
}