public override Address GetAddress(ClrAppDomain appDomain) { if (_containingType == null) return 0; bool shared = _containingType.Shared; IDomainLocalModuleData data = null; if (shared) { Address id = _containingType.DesktopModule.ModuleId; data = _containingType.DesktopHeap.DesktopRuntime.GetDomainLocalModule(appDomain.Address, id); if (!IsInitialized(data)) return 0; } else { Address modAddr = _containingType.GetModuleAddress(appDomain); if (modAddr != 0) data = _containingType.DesktopHeap.DesktopRuntime.GetDomainLocalModule(modAddr); } if (data == null) return 0; Address addr; if (DesktopRuntimeBase.IsPrimitive(ElementType)) addr = data.NonGCStaticDataStart + _field.Offset; else addr = data.GCStaticDataStart + _field.Offset; return addr; }
public override ulong GetAddress(ClrAppDomain appDomain) { if (_containingType == null) { return(0); } bool shared = _containingType.Shared; IDomainLocalModuleData data = null; if (shared) { ulong id = _containingType.DesktopModule.ModuleId; data = _containingType.DesktopHeap.DesktopRuntime.GetDomainLocalModule(appDomain.Address, id); if (!IsInitialized(data)) { return(0); } } else { ulong modAddr = _containingType.GetModuleAddress(appDomain); if (modAddr != 0) { data = _containingType.DesktopHeap.DesktopRuntime.GetDomainLocalModule(modAddr); } } if (data == null) { return(0); } ulong addr; if (DesktopRuntimeBase.IsPrimitive(ElementType)) { addr = data.NonGCStaticDataStart + _field.Offset; } else { addr = data.GCStaticDataStart + _field.Offset; } return(addr); }