Skip to content

Commit 636988a

Browse files
authored
Add AssemblyExtensions.GetApplyUpdateCapabilities method (#51954)
* Add AssemblyExtensions.GetApplyUpdateCapabilities method * add linker descriptor * fix whitespace * assert result is a string
1 parent a0c1fca commit 636988a

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,10 @@ public static void ApplyUpdate(Assembly assembly, ReadOnlySpan<byte> metadataDel
8181
}
8282
}
8383
}
84+
85+
internal static string GetApplyUpdateCapabilities()
86+
{
87+
return "Baseline AddMethodToExistingType AddStaticFieldToExistingType AddInstanceFieldToExistingType NewTypeDefinition";
88+
}
8489
}
8590
}

src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Descriptors.Shared.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,13 @@
6262
<method signature="System.Void Initialize()" />
6363
</type>
6464
</assembly>
65+
66+
<!-- methods used by hot reload.
67+
TODO: once there's a feature flag, add it to the linker descriptor
68+
-->
69+
<assembly fullname="System.Private.CoreLib">
70+
<type fullname="System.Reflection.Metadata.AssemblyExtensions">
71+
<method name="GetApplyUpdateCapabilities" />
72+
</type>
73+
</assembly>
6574
</linker>

src/libraries/System.Runtime.Loader/tests/AssemblyExtensionsTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,19 @@ public static void ApplyUpdateInvalidParameters()
3030
Assert.Throws<InvalidOperationException>(() =>
3131
AssemblyExtensions.ApplyUpdate(typeof(AssemblyExtensions).Assembly, new ReadOnlySpan<byte>(metadataDelta), new ReadOnlySpan<byte>(ilDelta), ReadOnlySpan<byte>.Empty));
3232
}
33+
34+
[Fact]
35+
public void GetApplyUpdateCapabilitiesIsCallable()
36+
{
37+
var ty = typeof(System.Reflection.Metadata.AssemblyExtensions);
38+
var mi = ty.GetMethod("GetApplyUpdateCapabilities", BindingFlags.NonPublic | BindingFlags.Static, Array.Empty<Type>());
39+
40+
Assert.NotNull(mi);
41+
42+
var result = mi.Invoke(null, null);
43+
44+
Assert.NotNull(result);
45+
Assert.Equal(typeof(string), result.GetType());
46+
}
3347
}
3448
}

src/mono/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,13 @@ public static void ApplyUpdate(Assembly assembly, ReadOnlySpan<byte> metadataDel
5151
#endif
5252
}
5353

54-
internal static void ApplyUpdateSdb(Assembly assembly, byte[] metadataDelta, byte[] ilDelta, byte[]? pdbDelta)
54+
internal static string GetApplyUpdateCapabilities()
5555
{
56-
ReadOnlySpan<byte> md = metadataDelta;
57-
ReadOnlySpan<byte> il = ilDelta;
58-
ReadOnlySpan<byte> dpdb = pdbDelta == null ? default : pdbDelta;
59-
ApplyUpdate (assembly, md, il, dpdb);
56+
#if !FEATURE_METADATA_UPDATE
57+
return string.Empty;
58+
#else
59+
return "Baseline";
60+
#endif
6061
}
6162

6263
#if FEATURE_METADATA_UPDATE

0 commit comments

Comments
 (0)