Skip to content

Commit

Permalink
Ensure static constructors of compiled in types are run (dotnet#5011)
Browse files Browse the repository at this point in the history
  • Loading branch information
tonerdo committed Oct 6, 2020
1 parent 54d49bc commit 41333f0
Showing 1 changed file with 12 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2893,6 +2893,12 @@ private void InterpretLoadStaticField(FieldDesc field)
nativeFormatField.Handle,
out FieldAccessMetadata fieldAccessMetadata);

IntPtr cctorContext = TypeLoaderEnvironment.TryGetStaticClassConstructionContext(field.OwningType.GetRuntimeTypeHandle());
if (cctorContext != IntPtr.Zero)
{
RuntimeAugments.EnsureClassConstructorRun(cctorContext);
}

FieldTableFlags fieldFlags = fieldAccessMetadata.Flags & FieldTableFlags.StorageClass;
if (fieldFlags == FieldTableFlags.NonGCStatic)
{
Expand Down Expand Up @@ -3075,6 +3081,12 @@ private void InterpretStoreStaticField(FieldDesc field)
nativeFormatField.Handle,
out FieldAccessMetadata fieldAccessMetadata);

IntPtr cctorContext = TypeLoaderEnvironment.TryGetStaticClassConstructionContext(field.OwningType.GetRuntimeTypeHandle());
if (cctorContext != IntPtr.Zero)
{
RuntimeAugments.EnsureClassConstructorRun(cctorContext);
}

FieldTableFlags fieldFlags = fieldAccessMetadata.Flags & FieldTableFlags.StorageClass;
if (fieldFlags == FieldTableFlags.NonGCStatic)
{
Expand Down

0 comments on commit 41333f0

Please sign in to comment.