From fbd0f37bac8c3ab4c40d17f2655b912e99b05cfa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Strehovsk=C3=BD?= Date: Tue, 7 Jan 2020 17:21:17 +0100 Subject: [PATCH] Update shared parts of crossgen2 (#1358) * Port changes from CoreRT. * Stop sharing embedded object nodes. These are becoming increasingly difficult to share and there's little value. --- src/coreclr/src/tools/Common/JitInterface/CorInfoImpl.cs | 3 +++ .../src/tools/Common/TypeSystem/Common/TargetDetails.cs | 11 +++++++++++ .../src/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs | 5 +++++ .../src/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs | 2 ++ .../Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs | 0 .../DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs | 0 .../Compiler/DependencyAnalysis/EmbeddedObjectNode.cs | 0 .../DependencyAnalysis/EmbeddedPointerIndirectionNode.cs | 0 .../ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj | 8 ++++---- 9 files changed, 25 insertions(+), 4 deletions(-) rename src/coreclr/src/tools/{Common => crossgen2/ILCompiler.ReadyToRun}/Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs (100%) rename src/coreclr/src/tools/{Common => crossgen2/ILCompiler.ReadyToRun}/Compiler/DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs (100%) rename src/coreclr/src/tools/{Common => crossgen2/ILCompiler.ReadyToRun}/Compiler/DependencyAnalysis/EmbeddedObjectNode.cs (100%) rename src/coreclr/src/tools/{Common => crossgen2/ILCompiler.ReadyToRun}/Compiler/DependencyAnalysis/EmbeddedPointerIndirectionNode.cs (100%) diff --git a/src/coreclr/src/tools/Common/JitInterface/CorInfoImpl.cs b/src/coreclr/src/tools/Common/JitInterface/CorInfoImpl.cs index 0076eb8..b150505 100644 --- a/src/coreclr/src/tools/Common/JitInterface/CorInfoImpl.cs +++ b/src/coreclr/src/tools/Common/JitInterface/CorInfoImpl.cs @@ -346,6 +346,9 @@ namespace Internal.JitInterface #if !READYTORUN _sequencePoints = null; _variableToTypeDesc = null; + + _parameterIndexToNameMap = null; + _localSlotToInfoMap = null; #endif _debugLocInfos = null; _debugVarInfos = null; diff --git a/src/coreclr/src/tools/Common/TypeSystem/Common/TargetDetails.cs b/src/coreclr/src/tools/Common/TypeSystem/Common/TargetDetails.cs index 8e4207d..fd81aad 100644 --- a/src/coreclr/src/tools/Common/TypeSystem/Common/TargetDetails.cs +++ b/src/coreclr/src/tools/Common/TypeSystem/Common/TargetDetails.cs @@ -305,6 +305,17 @@ namespace Internal.TypeSystem } /// + /// Returns True if compiling for OSX + /// + public bool IsOSX + { + get + { + return OperatingSystem == TargetOS.OSX; + } + } + + /// /// Maximum number of elements in a HFA type. /// public int MaximumHfaElementCount diff --git a/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs b/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs index fc857c3..991422c 100644 --- a/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs +++ b/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs @@ -440,6 +440,7 @@ namespace Internal.TypeSystem.Interop } else if (type.IsPointer) { +#if READYTORUN TypeDesc parameterType = ((PointerType)type).ParameterType; if ((!parameterType.IsEnum @@ -450,6 +451,10 @@ namespace Internal.TypeSystem.Interop // Pointers cannot reference marshaled structures. Use ByRef instead. return MarshallerKind.Invalid; } +#else + // Do not bother enforcing the above artificial restriction + // See https://github.com/dotnet/coreclr/issues/27800 +#endif if (nativeType == NativeTypeKind.Default) return MarshallerKind.BlittableValue; diff --git a/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs b/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs index ce0897a..5efeba7 100644 --- a/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs +++ b/src/coreclr/src/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs @@ -43,6 +43,7 @@ namespace Internal.TypeSystem.Interop continue; } +#if READYTORUN if (!field.FieldType.IsValueType) { // Types with fields of non-value types cannot be blittable @@ -50,6 +51,7 @@ namespace Internal.TypeSystem.Interop // the case of classes with pointer members to the class itself. return false; } +#endif MarshallerKind marshallerKind = MarshalHelpers.GetMarshallerKind( field.FieldType, diff --git a/src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs similarity index 100% rename from src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs rename to src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ArrayOfEmbeddedDataNode.cs diff --git a/src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs similarity index 100% rename from src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs rename to src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ArrayOfEmbeddedPointersNode.cs diff --git a/src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/EmbeddedObjectNode.cs b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/EmbeddedObjectNode.cs similarity index 100% rename from src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/EmbeddedObjectNode.cs rename to src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/EmbeddedObjectNode.cs diff --git a/src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/EmbeddedPointerIndirectionNode.cs b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/EmbeddedPointerIndirectionNode.cs similarity index 100% rename from src/coreclr/src/tools/Common/Compiler/DependencyAnalysis/EmbeddedPointerIndirectionNode.cs rename to src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/EmbeddedPointerIndirectionNode.cs diff --git a/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj index 886f80a..c306b60 100644 --- a/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj +++ b/src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj @@ -53,14 +53,10 @@ - - - - @@ -104,6 +100,10 @@ + + + + -- 2.7.4