internal override void CompleteBlockingClone(InternalTransaction tx)
{
// First try to complete one of the internal blocking clones
if (tx._phase0Volatiles._dependentClones > 0)
{
// decrement the number of clones
tx._phase0Volatiles._dependentClones--;
// 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);
}
}
}