public override SyncBlockComFlags GetComFlags(ulong obj) { if (obj == 0) { return(SyncBlockComFlags.None); } const ulong mask = ~0xe000000000000000; ulong lastComFlags = _lastComFlags; if ((lastComFlags & mask) == obj) { return((SyncBlockComFlags)(lastComFlags >> 61)); } VolatileSyncBlockData?syncBlocks = _volatileSyncBlocks; if (syncBlocks is null) { syncBlocks = new VolatileSyncBlockData(_helpers); _volatileSyncBlocks = syncBlocks; } SyncBlockComFlags flags = syncBlocks.GetComFlags(obj); _lastComFlags = ((ulong)flags << 61) | (obj & mask); return(flags); }
public ComSyncBlock(ulong obj, uint comFlags) : base(obj) { ComFlags = (SyncBlockComFlags)comFlags; }