Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[cdac] Change Module data descriptor for lookup maps #106291

Merged
merged 4 commits into from
Aug 12, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions docs/design/datacontracts/Loader.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ record struct ModuleLookupTables(
TargetPointer MemberRefToDesc,
TargetPointer MethodDefToDesc,
TargetPointer TypeDefToMethodTable,
TargetPointer TypeRefToMethodTable);
TargetPointer TypeRefToMethodTable,
TargetPointer MethodDefToILCodeVersioningState);

internal struct EcmaMetadataSchema
{
Expand Down Expand Up @@ -130,6 +131,7 @@ Data descriptors used:
| `Module` | `TypeRefToMethodTableMap` | Mapping table |
| `DynamicMetadata` | `Size` | Size of the dynamic metadata blob (as a 32bit uint) |
| `DynamicMetadata` | `Data` | Start of dynamic metadata data array |
| `ModuleLookupMap` | `TableData` | Start of the mapping table's data |

``` csharp
ModuleHandle GetModuleHandle(TargetPointer modulePointer)
Expand Down Expand Up @@ -215,6 +217,8 @@ ModuleLookupTables GetLookupTables(ModuleHandle handle)
MemberRefToDescMap: target.ReadPointer(handle.Address + /* Module::MemberRefToDescMap */),
MethodDefToDescMap: target.ReadPointer(handle.Address + /* Module::MethodDefToDescMap */),
TypeDefToMethodTableMap: target.ReadPointer(handle.Address + /* Module::TypeDefToMethodTableMap */),
TypeRefToMethodTableMap: target.ReadPointer(handle.Address + /* Module::TypeRefToMethodTableMap */));
TypeRefToMethodTableMap: target.ReadPointer(handle.Address + /* Module::TypeRefToMethodTableMap */),
MethodDefToILCodeVersioningState: target.ReadPointer(handle.Address + /*
Module::MethodDefToILCodeVersioningState */));
}
```
5 changes: 5 additions & 0 deletions src/coreclr/debug/runtimeinfo/datadescriptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,13 @@ CDAC_TYPE_FIELD(Module, /*pointer*/, MemberRefToDescMap, cdac_data<Module>::Memb
CDAC_TYPE_FIELD(Module, /*pointer*/, MethodDefToDescMap, cdac_data<Module>::MethodDefToDescMap)
CDAC_TYPE_FIELD(Module, /*pointer*/, TypeDefToMethodTableMap, cdac_data<Module>::TypeDefToMethodTableMap)
CDAC_TYPE_FIELD(Module, /*pointer*/, TypeRefToMethodTableMap, cdac_data<Module>::TypeRefToMethodTableMap)
CDAC_TYPE_FIELD(Module, /*pointer*/, MethodDefToILCodeVersioningStateMap, cdac_data<Module>::MethodDefToILCodeVersioningStateMap)
CDAC_TYPE_END(Module)

CDAC_TYPE_BEGIN(ModuleLookupMap)
CDAC_TYPE_FIELD(ModuleLookupMap, /*pointer*/, TableData, offsetof(LookupMapBase, pTable))
CDAC_TYPE_END(ModuleLookupMap)

// RuntimeTypeSystem

CDAC_TYPE_BEGIN(MethodTable)
Expand Down
13 changes: 7 additions & 6 deletions src/coreclr/vm/ceeload.h
Original file line number Diff line number Diff line change
Expand Up @@ -1641,12 +1641,13 @@ struct cdac_data<Module>
static constexpr size_t DynamicMetadata = offsetof(Module, m_pDynamicMetadata);

// Lookup map pointers
static constexpr size_t FieldDefToDescMap = offsetof(Module, m_FieldDefToDescMap) + offsetof(LookupMap<PTR_FieldDesc>, pTable);
static constexpr size_t ManifestModuleReferencesMap = offsetof(Module, m_ManifestModuleReferencesMap) + offsetof(LookupMap<PTR_Module>, pTable);
static constexpr size_t MemberRefToDescMap = offsetof(Module, m_MemberRefMap) + offsetof(LookupMap<TADDR>, pTable);
static constexpr size_t MethodDefToDescMap = offsetof(Module, m_MethodDefToDescMap) + offsetof(LookupMap<PTR_MethodDesc>, pTable);
static constexpr size_t TypeDefToMethodTableMap = offsetof(Module, m_TypeDefToMethodTableMap) + offsetof(LookupMap<PTR_MethodTable>, pTable);
static constexpr size_t TypeRefToMethodTableMap = offsetof(Module, m_TypeRefToMethodTableMap) + offsetof(LookupMap<PTR_TypeRef>, pTable);
static constexpr size_t FieldDefToDescMap = offsetof(Module, m_FieldDefToDescMap);
static constexpr size_t ManifestModuleReferencesMap = offsetof(Module, m_ManifestModuleReferencesMap);
static constexpr size_t MemberRefToDescMap = offsetof(Module, m_MemberRefMap);
static constexpr size_t MethodDefToDescMap = offsetof(Module, m_MethodDefToDescMap);
static constexpr size_t TypeDefToMethodTableMap = offsetof(Module, m_TypeDefToMethodTableMap);
static constexpr size_t TypeRefToMethodTableMap = offsetof(Module, m_TypeRefToMethodTableMap);
static constexpr size_t MethodDefToILCodeVersioningStateMap = offsetof(Module, m_ILCodeVersioningStateMap);
};

//
Expand Down
3 changes: 2 additions & 1 deletion src/native/managed/cdacreader/src/Contracts/Loader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ internal record struct ModuleLookupTables(
TargetPointer MemberRefToDesc,
TargetPointer MethodDefToDesc,
TargetPointer TypeDefToMethodTable,
TargetPointer TypeRefToMethodTable);
TargetPointer TypeRefToMethodTable,
TargetPointer MethodDefToILCodeVersioningState);

internal struct EcmaMetadataSchema
{
Expand Down
3 changes: 2 additions & 1 deletion src/native/managed/cdacreader/src/Contracts/Loader_1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
module.MemberRefToDescMap,
module.MethodDefToDescMap,
module.TypeDefToMethodTableMap,
module.TypeRefToMethodTableMap);
module.TypeRefToMethodTableMap,
module.MethodDefToILCodeVersioningState);

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-x64 Release NativeAOT)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-arm64 Release NativeAOT)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-arm64 Release NativeAOT_Libraries)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 Debug NativeAOT)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 Release NativeAOT)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 checked CLR_Tools_Tests)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-arm64 Release NativeAOT)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-arm64 Debug AllSubsets_CoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-arm64 Release NativeAOT_Libraries)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-arm64 Debug Libraries_CheckedCoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / dotnet-linker-tests (Build linux-x64 release Runtime_Release)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build coreclr Common Pri0 Test Build AnyOS AnyCPU checked)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-arm64 Debug AllSubsets_CoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 Debug Libraries_CheckedCoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 Debug CoreCLR_Libraries)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-x64 checked CoreCLR_ReleaseLibraries)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build linux-arm64 Debug Libraries_CheckedCoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-x64 Debug CoreCLR_Libraries)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / runtime (Build osx-x64 Debug Libraries_CheckedCoreCLR)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 99 in src/native/managed/cdacreader/src/Contracts/Loader_1.cs

View check run for this annotation

Azure Pipelines / dotnet-linker-tests (Build osx-x64 release Runtime_Release)

src/native/managed/cdacreader/src/Contracts/Loader_1.cs#L99

src/native/managed/cdacreader/src/Contracts/Loader_1.cs(99,20): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'Module' does not contain a definition for 'MethodDefToILCodeVersioningState' and no accessible extension method 'MethodDefToILCodeVersioningState' accepting a first argument of type 'Module' could be found (are you missing a using directive or an assembly reference?)
lambdageek marked this conversation as resolved.
Show resolved Hide resolved
}
}
2 changes: 2 additions & 0 deletions src/native/managed/cdacreader/src/Data/Module.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public Module(Target target, TargetPointer address)
MethodDefToDescMap = target.ReadPointer(address + (ulong)type.Fields[nameof(MethodDefToDescMap)].Offset);
TypeDefToMethodTableMap = target.ReadPointer(address + (ulong)type.Fields[nameof(TypeDefToMethodTableMap)].Offset);
TypeRefToMethodTableMap = target.ReadPointer(address + (ulong)type.Fields[nameof(TypeRefToMethodTableMap)].Offset);
MethodDefToILCodeVersioningStateMap = target.ReadPointer(address + (ulong)type.Fields[nameof(MethodDefToILCodeVersioningStateMap)].Offset);
}

public TargetPointer Assembly { get; init; }
Expand All @@ -45,6 +46,7 @@ public Module(Target target, TargetPointer address)
public TargetPointer MethodDefToDescMap { get; init; }
public TargetPointer TypeDefToMethodTableMap { get; init; }
public TargetPointer TypeRefToMethodTableMap { get; init; }
public TargetPointer MethodDefToILCodeVersioningStateMap { get; init; }

private TargetPointer _metadataStart = TargetPointer.Null;
private ulong _metadataSize;
Expand Down
19 changes: 19 additions & 0 deletions src/native/managed/cdacreader/src/Data/ModuleLookupMap.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace Microsoft.Diagnostics.DataContractReader.Data;

internal sealed class ModuleLookupMap : IData<ModuleLookupMap>
{
static ModuleLookupMap IData<ModuleLookupMap>.Create(Target target, TargetPointer address) => new ModuleLookupMap(target, address);

private ModuleLookupMap(Target target, TargetPointer address)
{
Target.TypeInfo type = target.GetTypeInfo(DataType.ModuleLookupMap);

TableData = target.ReadPointer(address + (ulong)type.Fields[nameof(TableData)].Offset);

lambdageek marked this conversation as resolved.
Show resolved Hide resolved
}

public TargetPointer TableData { get; init; }
}
1 change: 1 addition & 0 deletions src/native/managed/cdacreader/src/DataType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public enum DataType
ExceptionInfo,
RuntimeThreadLocals,
Module,
ModuleLookupMap,
MethodTable,
EEClass,
ArrayClass,
Expand Down
15 changes: 9 additions & 6 deletions src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -275,13 +275,16 @@ public unsafe int GetModuleData(ulong moduleAddr, DacpModuleData* data)
data->LoaderAllocator = contract.GetLoaderAllocator(handle);
data->ThunkHeap = contract.GetThunkHeap(handle);

Target.TypeInfo looupMapTypeInfo = _target.GetTypeInfo(DataType.ModuleLookupMap);
ulong tableDataOffset = (ulong)looupMapTypeInfo.Fields[nameof(Data.ModuleLookupMap.TableData)].Offset;
lambdageek marked this conversation as resolved.
Show resolved Hide resolved

Contracts.ModuleLookupTables tables = contract.GetLookupTables(handle);
data->FieldDefToDescMap = tables.FieldDefToDesc;
data->ManifestModuleReferencesMap = tables.ManifestModuleReferences;
data->MemberRefToDescMap = tables.MemberRefToDesc;
data->MethodDefToDescMap = tables.MethodDefToDesc;
data->TypeDefToMethodTableMap = tables.TypeDefToMethodTable;
data->TypeRefToMethodTableMap = tables.TypeRefToMethodTable;
data->FieldDefToDescMap = tables.FieldDefToDesc + tableDataOffset;
data->ManifestModuleReferencesMap = tables.ManifestModuleReferences + tableDataOffset;
data->MemberRefToDescMap = tables.MemberRefToDesc + tableDataOffset;
data->MethodDefToDescMap = tables.MethodDefToDesc + tableDataOffset;
data->TypeDefToMethodTableMap = tables.TypeDefToMethodTable + tableDataOffset;
data->TypeRefToMethodTableMap = tables.TypeRefToMethodTable + tableDataOffset;

// Always 0 - .NET no longer has these concepts
data->dwModuleID = 0;
Expand Down
Loading