mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 23:31:42 +00:00
[VM] - Fix for issue 36484 exposed when ExperimentalFlag.constantUpdate2018 is turned on in CFE
When ExperimentalFlag.constantUpdate2018 is turned on the static const fields of _LocalMethodMirror are not yet set when VerifyMethodKindShifts is invoked, ensure these fields are initialized before verifying the values against the C++ values. Fixes https://github.com/dart-lang/sdk/issues/36484 Change-Id: Ia144ee88c0a946e2d8824a6ee0d32bf96b2c163f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98962 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Siva Annamalai <asiva@google.com>
This commit is contained in:
parent
a7175938c3
commit
78c55022b1
|
@ -553,15 +553,22 @@ static void VerifyMethodKindShifts() {
|
|||
const Library& lib = Library::Handle(zone, Library::MirrorsLibrary());
|
||||
const Class& cls = Class::Handle(
|
||||
zone, lib.LookupClassAllowPrivate(Symbols::_LocalMethodMirror()));
|
||||
const Error& error = Error::Handle(zone, cls.EnsureIsFinalized(thread));
|
||||
Error& error = Error::Handle(zone);
|
||||
error ^= cls.EnsureIsFinalized(thread);
|
||||
ASSERT(error.IsNull());
|
||||
|
||||
Field& field = Field::Handle();
|
||||
Smi& value = Smi::Handle();
|
||||
Field& field = Field::Handle(zone);
|
||||
Smi& value = Smi::Handle(zone);
|
||||
String& fname = String::Handle(zone);
|
||||
|
||||
#define CHECK_KIND_SHIFT(name) \
|
||||
field = cls.LookupField(String::Handle(String::New(#name))); \
|
||||
fname ^= String::New(#name); \
|
||||
field = cls.LookupField(fname); \
|
||||
ASSERT(!field.IsNull()); \
|
||||
if (field.IsUninitialized()) { \
|
||||
error ^= field.Initialize(); \
|
||||
ASSERT(error.IsNull()); \
|
||||
} \
|
||||
value ^= field.StaticValue(); \
|
||||
ASSERT(value.Value() == Mirrors::name);
|
||||
MIRRORS_KIND_SHIFT_LIST(CHECK_KIND_SHIFT)
|
||||
|
|
Loading…
Reference in a new issue