void ScanStaticData(DirectReferenceVisitor referenceVisitor)
 {
     Finalizer.VisitBootstrapData(referenceVisitor);
     for (int section = 0; section < sectionCount; section++)
     {
         int size = (int)
                    (*(dataSectionEnd + section) - *(dataSectionBase + section));
         int      iters         = (size + 31) / 32;
         UIntPtr *ptr           = *(dataSectionBase + section);
         uint *   pointerBitmap = *(staticDataPointerBitMap + section);
         for (int i = 0; i < iters; i++)
         {
             uint mask = *pointerBitmap++;
             if (mask != 0)
             {
                 for (int j = 0; j < 32; j++)
                 {
                     if ((mask & 1) != 0 && *ptr != UIntPtr.Zero)
                     {
                         referenceVisitor.Visit(ptr);
                     }
                     ptr++;
                     mask >>= 1;
                 }
             }
             else
             {
                 ptr += 32;
             }
         }
     }
 }