internal override void CompleteBlockingClone(InternalTransaction tx)
{
// A blocking clone simulates a phase 0 volatile
// decrement the number of dependentClones
tx._phase0Volatiles._dependentClones--;
Debug.Assert(tx._phase0Volatiles._dependentClones >= 0);
// Make certain we increment the right list.
Debug.Assert(tx._phase0Volatiles._preparedVolatileEnlistments <=
tx._phase0Volatiles._volatileEnlistmentCount + tx._phase0Volatiles._dependentClones);
// Check to see if all of the volatile enlistments are done.
if (tx._phase0Volatiles._preparedVolatileEnlistments ==
tx._phase0VolatileWaveCount + tx._phase0Volatiles._dependentClones)
{
tx.State.Phase0VolatilePrepareDone(tx);
}
}