/// <summary> /// Ands two sets of tag bits and replaces Tag Bits A with the result A & B. /// </summary> /// <param name="lhs">Tag Bits A.</param> /// <param name="rhs">Tag Bits B.</param> internal static void And(ref TagBits lhs, ref TagBits rhs) { ulong hibits = lhs.bits7; lhs.And(ref rhs); lhs.bits7 = TranspileAnd(hibits, rhs.bits7); }
/// <summary> /// Ands two sets of tag bits and replaces Tag Bits A with the result A & B. /// </summary> /// <param name="lhs">Tag Bits A.</param> /// <param name="rhs">Tag Bits B.</param> internal static void And(ref TagBits lhs, ref TagBits rhs) { TagBits bits = lhs; ulong hibits = FIFTH_BIT.Get(lhs); bits.And(ref rhs); // Box into a type to allow the fields to be changed object localBits = bits; FIFTH_BIT.Set(localBits, TranspileAnd(hibits, FIFTH_BIT.Get(rhs))); lhs = (TagBits)localBits; }
public void AndTagBits(ref TagBits rhs) { UpdateTagBits(); rhs.And(ref tagBits); }