diff --git a/eng/Versions.props b/eng/Versions.props
index 0b398500e1356..d82c5a5d75d67 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -19,7 +19,7 @@
true
false
- 3.7.0-2.20258.1
+ 3.7.0-ci.final
dotnet
$(ContainerName)
diff --git a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
index b0456f3825d1e..973cff8e1e337 100644
--- a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
+++ b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
@@ -60,7 +60,8 @@
<_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)/Documentation
true
$(OutputPath)$(MSBuildProjectName).xml
- true
+
+ false
@@ -200,6 +201,7 @@
+
@@ -212,6 +214,7 @@
+
diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/ObjectFactory.CoreCLR.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/ObjectFactory.CoreCLR.cs
new file mode 100644
index 0000000000000..199e189f2b7ec
--- /dev/null
+++ b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/ObjectFactory.CoreCLR.cs
@@ -0,0 +1,126 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using Internal.Runtime.CompilerServices;
+
+namespace System.Reflection
+{
+ // Creates initialized instances of reference types or of value types.
+ // For reference types, calls the parameterless ctor.
+ // For value types, calls the parameterless ctor if it exists; otherwise
+ // return a boxed default(T). Must not be used with Nullable.
+ internal unsafe sealed class ObjectFactory : UninitializedObjectFactory
+ {
+ private readonly void* _pfnCtor;
+ private readonly bool _isNonPublicCtor;
+
+ // Creates a factory from an existing parameterless ctor
+ internal ObjectFactory(RuntimeMethodHandleInternal hCtor)
+ : base(RuntimeMethodHandle.GetDeclaringType(hCtor))
+ {
+ _pfnCtor = (void*)RuntimeMethodHandle.GetFunctionPointer(hCtor);
+ Debug.Assert(_pfnCtor != null);
+
+ _isNonPublicCtor = (RuntimeMethodHandle.GetAttributes(hCtor) & MethodAttributes.MemberAccessMask) != MethodAttributes.Public;
+ }
+
+ private ObjectFactory(RuntimeType type)
+ : base(type)
+ {
+ Debug.Assert(_pMT->IsValueType);
+ _isNonPublicCtor = false; // default(T) is always "public"
+ }
+
+ // Creates a factory for "box(default(T))" around a value type
+ internal static ObjectFactory CreateFactoryForValueTypeDefaultOfT(RuntimeType type)
+ {
+ return new ObjectFactory(type);
+ }
+
+ public bool IsNonPublicCtor => _isNonPublicCtor;
+
+ public object CreateInstance()
+ {
+ object newObj = CreateUninitializedInstance();
+
+ if (!_pMT->IsValueType)
+ {
+ // Common case: we're creating a reference type
+ ((delegate*