1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using global::System; 6 using global::System.Reflection; 7 using global::System.Collections.Generic; 8 9 using global::Internal.Runtime.Augments; 10 11 using global::Internal.Reflection.Core; 12 using global::Internal.Reflection.Core.Execution; 13 using global::Internal.Reflection.Execution.MethodInvokers; 14 15 using global::System.Runtime.CompilerServices; 16 using global::System.Runtime.InteropServices; 17 18 using global::Internal.Runtime; 19 20 using Debug = System.Diagnostics.Debug; 21 22 namespace Internal.Reflection.Execution 23 { 24 internal sealed partial class ExecutionEnvironmentImplementation : ExecutionEnvironment 25 { 26 private struct DynamicInvokeMapEntry 27 { 28 public const uint IsImportMethodFlag = 0x40000000; 29 public const uint InstantiationDetailIndexMask = 0x3FFFFFFF; 30 } 31 32 private struct VirtualInvokeTableEntry 33 { 34 public const int GenericVirtualMethod = 1; 35 public const int FlagsMask = 1; 36 } 37 38 private static class FieldAccessFlags 39 { 40 public const int RemoteStaticFieldRVA = unchecked((int)0x80000000); 41 } 42 43 /// <summary> 44 /// This structure describes one static field in an external module. It is represented 45 /// by an indirection cell pointer and an offset within the cell - the final address 46 /// of the static field is essentially *IndirectionCell + Offset. 47 /// </summary> 48 [StructLayout(LayoutKind.Sequential)] 49 private struct RemoteStaticFieldDescriptor 50 { 51 public unsafe IntPtr* IndirectionCell; 52 public int Offset; 53 } 54 } 55 } 56