[bit-set] Sprinkle a few .arrayZ around

All accesses are valid.
pull/5040/head
Behdad Esfahbod 2 weeks ago
parent 7862c7c5e1
commit a617328005
  1. 34
      src/hb-bit-set.hh

@ -297,9 +297,9 @@ struct hb_bit_set_t
unsigned int write_index = 0; unsigned int write_index = 0;
for (unsigned int i = 0; i < page_map.length; i++) for (unsigned int i = 0; i < page_map.length; i++)
{ {
int m = (int) page_map[i].major; int m = (int) page_map.arrayZ[i].major;
if (m < ds || de < m) if (m < ds || de < m)
page_map[write_index++] = page_map[i]; page_map.arrayZ[write_index++] = page_map.arrayZ[i];
} }
compact (compact_workspace, write_index); compact (compact_workspace, write_index);
resize (write_index); resize (write_index);
@ -389,7 +389,7 @@ struct hb_bit_set_t
{ {
if (page_at (a).is_empty ()) { a++; continue; } if (page_at (a).is_empty ()) { a++; continue; }
if (other.page_at (b).is_empty ()) { b++; continue; } if (other.page_at (b).is_empty ()) { b++; continue; }
if (page_map[a].major != other.page_map[b].major || if (page_map.arrayZ[a].major != other.page_map.arrayZ[b].major ||
!page_at (a).is_equal (other.page_at (b))) !page_at (a).is_equal (other.page_at (b)))
return false; return false;
a++; a++;
@ -412,8 +412,8 @@ struct hb_bit_set_t
uint32_t spi = 0; uint32_t spi = 0;
for (uint32_t lpi = 0; spi < page_map.length && lpi < larger_set.page_map.length; lpi++) for (uint32_t lpi = 0; spi < page_map.length && lpi < larger_set.page_map.length; lpi++)
{ {
uint32_t spm = page_map[spi].major; uint32_t spm = page_map.arrayZ[spi].major;
uint32_t lpm = larger_set.page_map[lpi].major; uint32_t lpm = larger_set.page_map.arrayZ[lpi].major;
auto sp = page_at (spi); auto sp = page_at (spi);
if (spm < lpm && !sp.is_empty ()) if (spm < lpm && !sp.is_empty ())
@ -503,7 +503,7 @@ struct hb_bit_set_t
for (; a < na && b < nb; ) for (; a < na && b < nb; )
{ {
if (page_map[a].major == other.page_map[b].major) if (page_map.arrayZ[a].major == other.page_map.arrayZ[b].major)
{ {
if (!passthru_left) if (!passthru_left)
{ {
@ -512,7 +512,7 @@ struct hb_bit_set_t
// passthru_left is set since no left side pages will be removed // passthru_left is set since no left side pages will be removed
// in that case. // in that case.
if (write_index < a) if (write_index < a)
page_map[write_index] = page_map[a]; page_map.arrayZ[write_index] = page_map.arrayZ[a];
write_index++; write_index++;
} }
@ -520,7 +520,7 @@ struct hb_bit_set_t
a++; a++;
b++; b++;
} }
else if (page_map[a].major < other.page_map[b].major) else if (page_map.arrayZ[a].major < other.page_map.arrayZ[b].major)
{ {
if (passthru_left) if (passthru_left)
count++; count++;
@ -765,8 +765,8 @@ struct hb_bit_set_t
unsigned int initial_size = size; unsigned int initial_size = size;
for (unsigned int i = start_page; i < page_map.length && size; i++) for (unsigned int i = start_page; i < page_map.length && size; i++)
{ {
uint32_t base = major_start (page_map[i].major); uint32_t base = major_start (page_map.arrayZ[i].major);
unsigned int n = pages[page_map[i].index].write (base, start_page_value, out, size); unsigned int n = pages[page_map.arrayZ[i].index].write (base, start_page_value, out, size);
out += n; out += n;
size -= n; size -= n;
start_page_value = 0; start_page_value = 0;
@ -814,8 +814,8 @@ struct hb_bit_set_t
hb_codepoint_t next_value = codepoint + 1; hb_codepoint_t next_value = codepoint + 1;
for (unsigned int i=start_page; i<page_map.length && size; i++) for (unsigned int i=start_page; i<page_map.length && size; i++)
{ {
uint32_t base = major_start (page_map[i].major); uint32_t base = major_start (page_map.arrayZ[i].major);
unsigned int n = pages[page_map[i].index].write_inverted (base, start_page_value, out, size, &next_value); unsigned int n = pages[page_map.arrayZ[i].index].write_inverted (base, start_page_value, out, size, &next_value);
out += n; out += n;
size -= n; size -= n;
start_page_value = 0; start_page_value = 0;
@ -846,8 +846,8 @@ struct hb_bit_set_t
unsigned count = pages.length; unsigned count = pages.length;
for (unsigned i = 0; i < count; i++) for (unsigned i = 0; i < count; i++)
{ {
const auto& map = page_map[i]; const auto& map = page_map.arrayZ[i];
const auto& page = pages[map.index]; const auto& page = pages.arrayZ[map.index];
if (!page.is_empty ()) if (!page.is_empty ())
return map.major * page_t::PAGE_BITS + page.get_min (); return map.major * page_t::PAGE_BITS + page.get_min ();
@ -859,8 +859,8 @@ struct hb_bit_set_t
unsigned count = pages.length; unsigned count = pages.length;
for (signed i = count - 1; i >= 0; i--) for (signed i = count - 1; i >= 0; i--)
{ {
const auto& map = page_map[(unsigned) i]; const auto& map = page_map.arrayZ[(unsigned) i];
const auto& page = pages[map.index]; const auto& page = pages.arrayZ[map.index];
if (!page.is_empty ()) if (!page.is_empty ())
return map.major * page_t::PAGE_BITS + page.get_max (); return map.major * page_t::PAGE_BITS + page.get_max ();
@ -961,7 +961,7 @@ struct hb_bit_set_t
return nullptr; return nullptr;
last_page_lookup = i; last_page_lookup = i;
return &pages.arrayZ[page_map[i].index]; return &pages.arrayZ[page_map.arrayZ[i].index];
} }
page_t &page_at (unsigned int i) page_t &page_at (unsigned int i)
{ {

Loading…
Cancel
Save