Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs')
-rw-r--r--src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs54
1 files changed, 23 insertions, 31 deletions
diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs
index 06d839390d1..a7d62d1c422 100644
--- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs
+++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/Marshaller.cs
@@ -20,7 +20,7 @@ namespace Internal.TypeSystem.Interop
// Each type of marshaller knows how to generate the marshalling code for the argument it marshals.
// Marshallers contain method related marshalling information (which is common to all the Marshallers)
// and also argument specific marshalling information.
- abstract partial class Marshaller
+ internal abstract partial class Marshaller
{
#region Instance state information
public TypeSystemContext Context;
@@ -111,7 +111,7 @@ namespace Internal.TypeSystem.Interop
protected Home _nativeHome;
#endregion
- enum HomeType
+ private enum HomeType
{
Arg,
Local,
@@ -122,7 +122,7 @@ namespace Internal.TypeSystem.Interop
/// <summary>
/// Abstraction for handling by-ref and non-by-ref locals/arguments
/// </summary>
- internal class Home
+ internal sealed class Home
{
public Home(ILLocalVariable var, TypeDesc type, bool isByRef)
{
@@ -203,10 +203,10 @@ namespace Internal.TypeSystem.Interop
}
}
- HomeType _homeType;
- TypeDesc _type;
- ILLocalVariable _var;
- int _argIndex;
+ private HomeType _homeType;
+ private TypeDesc _type;
+ private ILLocalVariable _var;
+ private int _argIndex;
}
#region Creation of marshallers
@@ -489,7 +489,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalReturnValueManagedToNative()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
SetupArgumentsForReturnValueMarshalling();
StoreNativeValue(_ilCodeStreams.ReturnValueMarshallingCodeStream);
@@ -757,7 +756,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalReturnValueNativeToManaged()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
SetupArgumentsForReturnValueMarshalling();
StoreManagedValue(_ilCodeStreams.ReturnValueMarshallingCodeStream);
@@ -805,7 +803,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalElementManagedToNative()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
ILCodeStream codeStream = _ilCodeStreams.MarshallingCodeStream;
Debug.Assert(codeStream != null);
@@ -821,7 +818,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalElementNativeToManaged()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
ILCodeStream codeStream = _ilCodeStreams.MarshallingCodeStream;
Debug.Assert(codeStream != null);
@@ -836,7 +832,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalFieldManagedToNative()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
ILCodeStream marshallingCodeStream = _ilCodeStreams.MarshallingCodeStream;
SetupArgumentsForFieldMarshalling();
@@ -854,7 +849,6 @@ namespace Internal.TypeSystem.Interop
protected virtual void EmitMarshalFieldNativeToManaged()
{
- ILEmitter emitter = _ilCodeStreams.Emitter;
ILCodeStream codeStream = _ilCodeStreams.MarshallingCodeStream;
SetupArgumentsForFieldMarshalling();
@@ -879,7 +873,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class NotSupportedMarshaller : Marshaller
+ internal sealed class NotSupportedMarshaller : Marshaller
{
public override void EmitMarshallingIL(PInvokeILCodeStreams pInvokeILCodeStreams)
{
@@ -887,7 +881,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class VoidReturnMarshaller : Marshaller
+ internal sealed class VoidReturnMarshaller : Marshaller
{
protected override void EmitMarshalReturnValueManagedToNative()
{
@@ -901,7 +895,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class BlittableValueMarshaller : Marshaller
+ internal sealed class BlittableValueMarshaller : Marshaller
{
protected override void EmitMarshalArgumentManagedToNative()
{
@@ -944,7 +938,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class BlittableStructPtrMarshaller : Marshaller
+ internal sealed class BlittableStructPtrMarshaller : Marshaller
{
protected override void TransformManagedToNative(ILCodeStream codeStream)
{
@@ -967,7 +961,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class ArrayMarshaller : Marshaller
+ internal class ArrayMarshaller : Marshaller
{
private Marshaller _elementMarshaller;
@@ -1039,8 +1033,8 @@ namespace Internal.TypeSystem.Interop
else
{
- uint? sizeParamIndex = MarshalAsDescriptor != null ? MarshalAsDescriptor.SizeParamIndex : null;
- uint? sizeConst = MarshalAsDescriptor != null ? MarshalAsDescriptor.SizeConst : null;
+ uint? sizeParamIndex = MarshalAsDescriptor?.SizeParamIndex;
+ uint? sizeConst = MarshalAsDescriptor?.SizeConst;
if (sizeConst.HasValue)
{
@@ -1350,7 +1344,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class BlittableArrayMarshaller : ArrayMarshaller
+ internal sealed class BlittableArrayMarshaller : ArrayMarshaller
{
protected override void AllocAndTransformManagedToNative(ILCodeStream codeStream)
{
@@ -1419,7 +1413,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class BooleanMarshaller : Marshaller
+ internal sealed class BooleanMarshaller : Marshaller
{
private int _trueValue;
public BooleanMarshaller(int trueValue = 1)
@@ -1467,7 +1461,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class UnicodeStringMarshaller : Marshaller
+ internal sealed class UnicodeStringMarshaller : Marshaller
{
private bool ShouldBePinned
{
@@ -1587,7 +1581,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class AnsiStringMarshaller : Marshaller
+ internal sealed class AnsiStringMarshaller : Marshaller
{
internal override bool CleanupRequired
@@ -1648,11 +1642,11 @@ namespace Internal.TypeSystem.Interop
}
}
- class UTF8StringMarshaller : Marshaller
+ internal sealed class UTF8StringMarshaller : Marshaller
{
private const int LocalBufferLength = 0x100;
- private ILLocalVariable? _marshallerInstance = null;
+ private ILLocalVariable? _marshallerInstance;
private MetadataType Marshaller => Context.SystemModule.GetKnownType("System.Runtime.InteropServices.Marshalling", "Utf8StringMarshaller");
@@ -1680,8 +1674,7 @@ namespace Internal.TypeSystem.Interop
{
TypeDesc marshallerIn = MarshallerIn;
- if (_marshallerInstance == null)
- _marshallerInstance = emitter.NewLocal(marshallerIn);
+ _marshallerInstance ??= emitter.NewLocal(marshallerIn);
var vBuffer = emitter.NewLocal(Context.GetWellKnownType(WellKnownType.IntPtr));
codeStream.EmitLdc(LocalBufferLength);
@@ -1744,7 +1737,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class SafeHandleMarshaller : Marshaller
+ internal sealed class SafeHandleMarshaller : Marshaller
{
private void AllocSafeHandle(ILCodeStream codeStream)
{
@@ -1787,7 +1780,6 @@ namespace Internal.TypeSystem.Interop
ILEmitter emitter = _ilCodeStreams.Emitter;
ILCodeStream marshallingCodeStream = _ilCodeStreams.MarshallingCodeStream;
ILCodeStream callsiteCodeStream = _ilCodeStreams.CallsiteSetupCodeStream;
- ILCodeStream unmarshallingCodeStream = _ilCodeStreams.UnmarshallingCodestream;
ILCodeStream cleanupCodeStream = _ilCodeStreams.CleanupCodeStream;
SetupArguments();
@@ -1905,7 +1897,7 @@ namespace Internal.TypeSystem.Interop
}
}
- class DelegateMarshaller : Marshaller
+ internal sealed class DelegateMarshaller : Marshaller
{
protected override void AllocAndTransformManagedToNative(ILCodeStream codeStream)
{