From c77bdf1dcf86dcad79e90643a5f4e7d04fbae975 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Fri, 24 Sep 2021 15:58:57 -0700 Subject: [PATCH 01/15] [repacker] begin storing each nodes parents. Will be used for connected component search. --- src/hb-repacker.hh | 132 +++++++++++++++++++++++++++++---------------- 1 file changed, 87 insertions(+), 45 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index fa2dd42b4..49a4b24ad 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -41,7 +41,7 @@ struct graph_t vertex_t () : distance (0), space (0), - incoming_edges (0), + parents (), start (0), end (0), priority(0) {} @@ -51,14 +51,44 @@ struct graph_t hb_serialize_context_t::object_t obj; int64_t distance; int64_t space; - unsigned incoming_edges; + hb_vector_t parents; unsigned start; unsigned end; unsigned priority; bool is_shared () const { - return incoming_edges > 1; + return parents.length > 1; + } + + unsigned incoming_edges () const + { + return parents.length; + } + + void remove_parent (unsigned parent_index) + { + for (unsigned i = 0; i < parents.length; i++) + { + if (parents[i] != parent_index) continue; + parents.remove (i); + break; + } + } + + void remap_parents (const hb_vector_t& id_map) + { + for (unsigned i = 0; i < parents.length; i++) + parents[i] = id_map[parents[i]]; + } + + void remap_parent (unsigned old_index, unsigned new_index) + { + for (unsigned i = 0; i < parents.length; i++) + { + if (parents[i] == old_index) + parents[i] = new_index; + } } bool is_leaf () const @@ -131,7 +161,7 @@ struct graph_t * serializer */ graph_t (const hb_vector_t& objects) - : edge_count_invalid (true), + : parents_invalid (true), distance_invalid (true), positions_invalid (true), successful (true) @@ -233,7 +263,7 @@ struct graph_t hb_vector_t removed_edges; if (unlikely (!check_success (removed_edges.resize (vertices_.length)))) return; - update_incoming_edge_count (); + update_parents (); queue.push (root_idx ()); int new_id = vertices_.length - 1; @@ -249,7 +279,7 @@ struct graph_t for (const auto& link : next.obj.links) { removed_edges[link.objidx]++; - if (!(vertices_[link.objidx].incoming_edges - removed_edges[link.objidx])) + if (!(vertices_[link.objidx].incoming_edges () - removed_edges[link.objidx])) queue.push (link.objidx); } } @@ -259,7 +289,7 @@ struct graph_t if (!check_success (new_id == -1)) DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); - remap_obj_indices (id_map, &sorted_graph); + remap_all_obj_indices (id_map, &sorted_graph); sorted_graph.as_array ().reverse (); @@ -290,7 +320,7 @@ struct graph_t hb_vector_t removed_edges; if (unlikely (!check_success (removed_edges.resize (vertices_.length)))) return; - update_incoming_edge_count (); + update_parents (); queue.insert (root ().modified_distance (0), root_idx ()); int new_id = root_idx (); @@ -305,7 +335,7 @@ struct graph_t for (const auto& link : next.obj.links) { removed_edges[link.objidx]++; - if (!(vertices_[link.objidx].incoming_edges - removed_edges[link.objidx])) + if (!(vertices_[link.objidx].incoming_edges () - removed_edges[link.objidx])) // Add the order that the links were encountered to the priority. // This ensures that ties between priorities objects are broken in a consistent // way. More specifically this is set up so that if a set of objects have the same @@ -321,7 +351,7 @@ struct graph_t if (!check_success (new_id == -1)) DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); - remap_obj_indices (id_map, &sorted_graph); + remap_all_obj_indices (id_map, &sorted_graph); sorted_graph.as_array ().reverse (); @@ -366,12 +396,12 @@ struct graph_t */ bool isolate_subgraph (unsigned root_idx) { - update_incoming_edge_count (); + update_parents (); hb_hashmap_t subgraph; // incoming edges to root_idx should be all 32 bit in length so we don't need to de-dup these // set the subgraph incoming edge count to match all of root_idx's incoming edges - subgraph.set (root_idx, vertices_[root_idx].incoming_edges); + subgraph.set (root_idx, vertices_[root_idx].incoming_edges ()); find_subgraph (root_idx, subgraph); hb_hashmap_t index_map; @@ -381,7 +411,7 @@ struct graph_t const auto& node = vertices_[entry.first]; unsigned subgraph_incoming_edges = entry.second; - if (subgraph_incoming_edges < node.incoming_edges) + if (subgraph_incoming_edges < node.incoming_edges ()) { // Only de-dup objects with incoming links from outside the subgraph. made_changes = true; @@ -454,12 +484,13 @@ struct graph_t clone->obj.tail = buffer->tail; clone->distance = child.distance; clone->space = child.space; - clone->incoming_edges = 0; + clone->parents.reset (); + unsigned clone_idx = vertices_.length - 2; for (const auto& l : child.obj.links) { clone->obj.links.push (l); - vertices_[l.objidx].incoming_edges++; + vertices_[l.objidx].parents.push (clone_idx); } check_success (!clone->obj.links.in_error ()); @@ -468,10 +499,10 @@ struct graph_t // The root's obj idx does change, however since it's root nothing else refers to it. // all other obj idx's will be unaffected. vertex_t root = vertices_[vertices_.length - 2]; - vertices_[vertices_.length - 2] = *clone; + vertices_[clone_idx] = *clone; vertices_[vertices_.length - 1] = root; - return vertices_.length - 2; + return clone_idx; } /* @@ -481,7 +512,7 @@ struct graph_t */ bool duplicate (unsigned parent_idx, unsigned child_idx) { - update_incoming_edge_count (); + update_parents (); unsigned links_to_child = 0; for (const auto& l : vertices_[parent_idx].obj.links) @@ -489,7 +520,7 @@ struct graph_t if (l.objidx == child_idx) links_to_child++; } - if (vertices_[child_idx].incoming_edges <= links_to_child) + if (vertices_[child_idx].incoming_edges () <= links_to_child) { // Can't duplicate this node, doing so would orphan the original one as all remaining links // to child are from parent. @@ -504,20 +535,19 @@ struct graph_t unsigned clone_idx = duplicate (child_idx); if (clone_idx == (unsigned) -1) return false; // duplicate shifts the root node idx, so if parent_idx was root update it. + unsigned original_parent_idx = parent_idx; if (parent_idx == clone_idx) parent_idx++; - auto& clone = vertices_[clone_idx]; - auto& child = vertices_[child_idx]; auto& parent = vertices_[parent_idx]; for (unsigned i = 0; i < parent.obj.links.length; i++) { auto& l = parent.obj.links[i]; - if (l.objidx == child_idx) - { - l.objidx = clone_idx; - clone.incoming_edges++; - child.incoming_edges--; - } + if (original_parent_idx != parent_idx) + vertices_[l.objidx].remap_parent (original_parent_idx, parent_idx); + if (l.objidx != child_idx) + continue; + + reassign_link (l, parent_idx, clone_idx); } return true; @@ -571,7 +601,7 @@ struct graph_t { if (!DEBUG_ENABLED(SUBSET_REPACK)) return; - update_incoming_edge_count (); + update_parents (); for (const auto& o : overflows) { const auto& parent = vertices_[o.parent]; @@ -579,10 +609,10 @@ struct graph_t DEBUG_MSG (SUBSET_REPACK, nullptr, " overflow from %d (%d in, %d out) => %d (%d in, %d out)", o.parent, - parent.incoming_edges, + parent.incoming_edges (), parent.obj.links.length, o.child, - child.incoming_edges, + child.incoming_edges (), child.obj.links.length); } } @@ -597,22 +627,20 @@ struct graph_t /* * Creates a map from objid to # of incoming edges. */ - void update_incoming_edge_count () + void update_parents () { - if (!edge_count_invalid) return; + if (!parents_invalid) return; for (unsigned i = 0; i < vertices_.length; i++) - vertices_[i].incoming_edges = 0; + vertices_[i].parents.reset (); - for (const vertex_t& v : vertices_) + for (unsigned p = 0; p < vertices_.length; p++) { - for (auto& l : v.obj.links) - { - vertices_[l.objidx].incoming_edges++; - } + for (auto& l : vertices_[p].obj.links) + vertices_[l.objidx].parents.push (p); } - edge_count_invalid = false; + parents_invalid = false; } /* @@ -742,6 +770,20 @@ struct graph_t } } + /* + * Updates a link in the graph to point to a different object. Corrects the + * parents vector on the previous and new child nodes. + */ + void reassign_link (hb_serialize_context_t::object_t::link_t& link, + unsigned parent_idx, + unsigned new_idx) + { + unsigned old_idx = link.objidx; + link.objidx = new_idx; + vertices_[old_idx].remove_parent (parent_idx); + vertices_[new_idx].parents.push (parent_idx); + } + /* * Updates all objidx's in all links using the provided mapping. Corrects incoming edge counts. */ @@ -756,9 +798,8 @@ struct graph_t { auto& link = vertices_[i].obj.links[j]; if (!id_map.has (link.objidx)) continue; - vertices_[link.objidx].incoming_edges--; - link.objidx = id_map[link.objidx]; - vertices_[link.objidx].incoming_edges++; + + reassign_link (link, i, id_map[link.objidx]); } } } @@ -766,11 +807,12 @@ struct graph_t /* * Updates all objidx's in all links using the provided mapping. */ - void remap_obj_indices (const hb_vector_t& id_map, - hb_vector_t* sorted_graph) const + void remap_all_obj_indices (const hb_vector_t& id_map, + hb_vector_t* sorted_graph) const { for (unsigned i = 0; i < sorted_graph->length; i++) { + (*sorted_graph)[i].remap_parents (id_map); for (unsigned j = 0; j < (*sorted_graph)[i].obj.links.length; j++) { auto& link = (*sorted_graph)[i].obj.links[j]; @@ -830,7 +872,7 @@ struct graph_t hb_vector_t vertices_; private: hb_vector_t clone_buffers_; - bool edge_count_invalid; + bool parents_invalid; bool distance_invalid; bool positions_invalid; bool successful; From 307acf7fb0d4c767b4b78ba6c80ab83399d16cb4 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 28 Sep 2021 12:08:18 -0700 Subject: [PATCH 02/15] [repacker] add space assignment based on connected components. Assign each connected component that is underneath one or more 32 bit offsets into a unique space. This ensures that 32 bit subgraphs which are connected are packed into the same space. --- src/hb-repacker.hh | 79 +++++++++++++++++++++++++++- src/test-repacker.cc | 122 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 182 insertions(+), 19 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 49a4b24ad..fdcef0f58 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -360,6 +360,50 @@ struct graph_t sorted_graph.fini_deep (); } + /* + * Assign unique space numbers to each connected subgraph of 32 bit offset(s). + */ + bool assign_32bit_spaces () + { + unsigned root_index = root_idx (); + hb_set_t visited; + hb_set_t roots; + for (unsigned i = 0; i <= root_index; i++) + { + for (auto& l : vertices_[i].obj.links) + { + if (l.width == 4 && !l.is_signed) + { + visited.add (i); + roots.add (l.objidx); + } + } + } + + if (!roots) return false; + + unsigned space = 0; + while (roots) + { + unsigned next = HB_SET_VALUE_INVALID; + if (!roots.next (&next)) break; + + hb_set_t connected_roots; + find_connected_nodes (next, roots, visited, connected_roots); + + space++; + for (unsigned root : connected_roots) + { + DEBUG_MSG (SUBSET_REPACK, nullptr, "Subgraph %u gets space %u", root, space); + vertices_[root].space = space; + distance_invalid = true; + positions_invalid = true; + } + } + + return true; + } + /* * Finds any links using 32 bits and isolates the subgraphs they point too. */ @@ -867,6 +911,37 @@ struct graph_t } } + /* + * Finds all nodes in targets that are reachable from start_idx, nodes in visited will be skipped. + * For this search the graph is treated as being undirected. + * + * Connected targets will be added to connected and removed from targets. All visited nodes + * will be added to visited. + */ + void find_connected_nodes (unsigned start_idx, + hb_set_t& targets, + hb_set_t& visited, + hb_set_t& connected) + { + if (visited.has (start_idx)) return; + visited.add (start_idx); + + if (targets.has (start_idx)) + { + targets.del (start_idx); + connected.add (start_idx); + } + + const auto& v = vertices_[start_idx]; + + // Graph is treated as undirected so search children and parents of start_idx + for (const auto& l : v.obj.links) + find_connected_nodes (l.objidx, targets, visited, connected); + + for (unsigned p : v.parents) + find_connected_nodes (p, targets, visited, connected); + } + public: // TODO(garretrieger): make private, will need to move most of offset overflow code into graph. hb_vector_t vertices_; @@ -956,9 +1031,9 @@ hb_resolve_overflows (const hb_vector_t& pac || table_tag == HB_OT_TAG_GSUB) && sorted_graph.will_overflow ()) { - if (sorted_graph.isolate_32bit_links ()) + if (sorted_graph.assign_32bit_spaces ()) { - DEBUG_MSG (SUBSET_REPACK, nullptr, "Isolated extension sub tables."); + DEBUG_MSG (SUBSET_REPACK, nullptr, "Assigning spaces to 32 bit subgraphs."); sorted_graph.sort_shortest_distance (); } } diff --git a/src/test-repacker.cc b/src/test-repacker.cc index 32228f7a7..b3776766e 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -75,7 +75,7 @@ populate_serializer_simple (hb_serialize_context_t* c) start_object ("abc", 3, c); add_offset (obj_2, c); add_offset (obj_1, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -94,7 +94,7 @@ populate_serializer_with_overflow (hb_serialize_context_t* c) add_offset (obj_3, c); add_offset (obj_2, c); add_offset (obj_1, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -129,16 +129,16 @@ populate_serializer_with_isolation_overflow (hb_serialize_context_t* c) start_object (large_string.c_str(), 60000, c); add_offset (obj_4, c); - unsigned obj_3 = c->pop_pack (); + unsigned obj_3 = c->pop_pack (false); start_object (large_string.c_str(), 10000, c); add_offset (obj_4, c); - unsigned obj_2 = c->pop_pack (); + unsigned obj_2 = c->pop_pack (false); start_object ("1", 1, c); add_wide_offset (obj_3, c); add_offset (obj_2, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -153,29 +153,33 @@ populate_serializer_with_isolation_overflow_complex (hb_serialize_context_t* c) start_object ("e", 1, c); add_offset (obj_f, c); - unsigned obj_e = c->pop_pack (); + unsigned obj_e = c->pop_pack (false); start_object ("cc", 2, c); add_offset (obj_e, c); - unsigned obj_c = c->pop_pack (); + unsigned obj_c = c->pop_pack (false); start_object ("d", 1, c); add_offset (obj_e, c); - unsigned obj_d = c->pop_pack (); + unsigned obj_d = c->pop_pack (false); + + start_object (large_string.c_str(), 60000, c); + add_offset (obj_d, c); + unsigned obj_h = c->pop_pack (false); start_object (large_string.c_str(), 60000, c); add_offset (obj_c, c); - add_offset (obj_d, c); - unsigned obj_b = c->pop_pack (); + add_offset (obj_h, c); + unsigned obj_b = c->pop_pack (false); start_object (large_string.c_str(), 10000, c); add_offset (obj_d, c); - unsigned obj_g = c->pop_pack (); + unsigned obj_g = c->pop_pack (false); start_object ("a", 1, c); add_wide_offset (obj_b, c); add_offset (obj_g, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -255,6 +259,57 @@ populate_serializer_with_isolation_overflow_spaces (hb_serialize_context_t* c) c->end_serialize(); } +static void +populate_serializer_spaces (hb_serialize_context_t* c, bool with_overflow) +{ + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_i; + + if (with_overflow) + obj_i = add_object ("i", 1, c); + + // Space 2 + unsigned obj_h = add_object ("h", 1, c); + + start_object (large_string.c_str(), 30000, c); + add_offset (obj_h, c); + unsigned obj_e = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_e, c); + unsigned obj_b = c->pop_pack (false); + + // Space 1 + if (!with_overflow) + obj_i = add_object ("i", 1, c); + + start_object (large_string.c_str(), 30000, c); + add_offset (obj_i, c); + unsigned obj_g = c->pop_pack (false); + + start_object (large_string.c_str(), 30000, c); + add_offset (obj_i, c); + unsigned obj_f = c->pop_pack (false); + + start_object ("d", 1, c); + add_offset (obj_g, c); + unsigned obj_d = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_f, c); + unsigned obj_c = c->pop_pack (false); + + start_object ("a", 1, c); + add_wide_offset (obj_b, c); + add_wide_offset (obj_c, c); + add_wide_offset (obj_d, c); + c->pop_pack (false); + + c->end_serialize(); +} + static void populate_serializer_complex_1 (hb_serialize_context_t* c) { @@ -270,7 +325,7 @@ populate_serializer_complex_1 (hb_serialize_context_t* c) start_object ("abc", 3, c); add_offset (obj_2, c); add_offset (obj_4, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -296,7 +351,7 @@ populate_serializer_complex_2 (hb_serialize_context_t* c) add_offset (obj_2, c); add_offset (obj_4, c); add_offset (obj_5, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -326,7 +381,7 @@ populate_serializer_complex_3 (hb_serialize_context_t* c) add_offset (obj_2, c); add_offset (obj_4, c); add_offset (obj_5, c); - c->pop_pack (); + c->pop_pack (false); c->end_serialize(); } @@ -608,6 +663,38 @@ static void test_resolve_overflows_via_duplication () free (out_buffer); } +static void test_resolve_overflows_via_space_assignment () +{ + size_t buffer_size = 160000; + void* buffer = malloc (buffer_size); + hb_serialize_context_t c (buffer, buffer_size); + populate_serializer_spaces (&c, true); + graph_t graph (c.object_graph ()); + + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (c.offset_overflow ()); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + void* expected_buffer = malloc (buffer_size); + hb_serialize_context_t e (expected_buffer, buffer_size); + assert (!e.offset_overflow ()); + populate_serializer_spaces (&e, false); + hb_bytes_t expected_result = e.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < result.length; i++) + assert (result[i] == expected_result[i]); + + result.fini (); + expected_result.fini (); + free (buffer); + free (expected_buffer); + free (out_buffer); +} static void test_resolve_overflows_via_isolation () { @@ -621,7 +708,7 @@ static void test_resolve_overflows_via_isolation () hb_serialize_context_t out (out_buffer, buffer_size); assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); assert (!out.offset_overflow ()); hb_bytes_t result = out.copy_bytes (); assert (result.length == (1 + 10000 + 60000 + 1 + 1 @@ -644,7 +731,7 @@ static void test_resolve_overflows_via_isolation_with_recursive_duplication () hb_serialize_context_t out (out_buffer, buffer_size); assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); assert (!out.offset_overflow ()); hb_bytes_t result = out.copy_bytes (); @@ -705,6 +792,7 @@ main (int argc, char **argv) test_will_overflow_3 (); test_resolve_overflows_via_sort (); test_resolve_overflows_via_duplication (); + test_resolve_overflows_via_space_assignment (); test_resolve_overflows_via_isolation (); test_resolve_overflows_via_isolation_with_recursive_duplication (); test_resolve_overflows_via_isolation_spaces (); From 67eb222b8eae1a10d0fd485a04254144e4051d46 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 28 Sep 2021 13:36:06 -0700 Subject: [PATCH 03/15] [repacker] when assigning each connected subgraph a space, also isolate it. This will break any links coming from space 0 (ie. the 16 bit offset only space). --- src/hb-repacker.hh | 46 ++++++++++++--------------------------- src/test-repacker.cc | 52 +++++++++++++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index fdcef0f58..6df7c42aa 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -382,6 +382,8 @@ struct graph_t if (!roots) return false; + // TODO(grieger): add 16 bit only space to visited so it can't be used to connect 32 bit + // subgraphs. unsigned space = 0; while (roots) { @@ -399,54 +401,34 @@ struct graph_t distance_invalid = true; positions_invalid = true; } + // TODO(grieger): special case for GSUB/GPOS use extension promotions to move 16 bit space + // into the 32 bit space as needed, instead of using isolation. + isolate_subgraph (connected_roots); } return true; } - /* - * Finds any links using 32 bits and isolates the subgraphs they point too. - */ - bool isolate_32bit_links () - { - bool made_changes = false; - hb_set_t target_links; - unsigned root_index = root_idx (); - int64_t next_space = 0; - for (unsigned i = 0; i <= root_index; i++) - { - if (i == root_index && root_idx () > i) - // root index may have moved due to graph modifications. - i = root_idx (); - - for (auto& l : vertices_[i].obj.links) - { - if (l.width == 4 && !l.is_signed) - { - isolate_subgraph (l.objidx); - vertices_[l.objidx].space = next_space++; - distance_invalid = true; - made_changes = true; - } - } - } - return made_changes; - } - /* * Isolates the subgraph of nodes reachable from root. Any links to nodes in the subgraph * that originate from outside of the subgraph will be removed by duplicating the linked to * object. */ - bool isolate_subgraph (unsigned root_idx) + bool isolate_subgraph (hb_set_t roots) { update_parents (); hb_hashmap_t subgraph; // incoming edges to root_idx should be all 32 bit in length so we don't need to de-dup these // set the subgraph incoming edge count to match all of root_idx's incoming edges - subgraph.set (root_idx, vertices_[root_idx].incoming_edges ()); - find_subgraph (root_idx, subgraph); + // + // TODO(grieger): the above assumption does not always hold, as there are 16 bit incoming + // edges, handle that case here by not including them in the count. + for (unsigned root_idx : roots) + { + subgraph.set (root_idx, vertices_[root_idx].incoming_edges ()); + find_subgraph (root_idx, subgraph); + } hb_hashmap_t index_map; bool made_changes = false; diff --git a/src/test-repacker.cc b/src/test-repacker.cc index b3776766e..55c906c6d 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -155,7 +155,7 @@ populate_serializer_with_isolation_overflow_complex (hb_serialize_context_t* c) add_offset (obj_f, c); unsigned obj_e = c->pop_pack (false); - start_object ("cc", 2, c); + start_object ("c", 1, c); add_offset (obj_e, c); unsigned obj_c = c->pop_pack (false); @@ -176,9 +176,14 @@ populate_serializer_with_isolation_overflow_complex (hb_serialize_context_t* c) add_offset (obj_d, c); unsigned obj_g = c->pop_pack (false); + start_object (large_string.c_str(), 11000, c); + add_offset (obj_d, c); + unsigned obj_i = c->pop_pack (false); + start_object ("a", 1, c); add_wide_offset (obj_b, c); add_offset (obj_g, c); + add_offset (obj_i, c); c->pop_pack (false); c->end_serialize(); @@ -190,45 +195,58 @@ populate_serializer_with_isolation_overflow_complex_expected (hb_serialize_conte std::string large_string(70000, 'a'); c->start_serialize (); - // 32 bit subgraph + + // space 1 + unsigned obj_f_prime = add_object ("f", 1, c); start_object ("e", 1, c); add_offset (obj_f_prime, c); - unsigned obj_e_prime = c->pop_pack (); - - start_object ("cc", 2, c); - add_offset (obj_e_prime, c); - unsigned obj_c = c->pop_pack (); + unsigned obj_e_prime = c->pop_pack (false); start_object ("d", 1, c); add_offset (obj_e_prime, c); - unsigned obj_d_prime = c->pop_pack (); + unsigned obj_d_prime = c->pop_pack (false); + + start_object (large_string.c_str(), 60000, c); + add_offset (obj_d_prime, c); + unsigned obj_h = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e_prime, c); + unsigned obj_c = c->pop_pack (false); start_object (large_string.c_str(), 60000, c); add_offset (obj_c, c); - add_offset (obj_d_prime, c); - unsigned obj_b = c->pop_pack (); + add_offset (obj_h, c); + unsigned obj_b = c->pop_pack (false); + + // space 0 - // 16 bit subgraph unsigned obj_f = add_object ("f", 1, c); start_object ("e", 1, c); add_offset (obj_f, c); - unsigned obj_e = c->pop_pack (); + unsigned obj_e = c->pop_pack (false); + start_object ("d", 1, c); add_offset (obj_e, c); - unsigned obj_d = c->pop_pack (); + unsigned obj_d = c->pop_pack (false); + + start_object (large_string.c_str(), 11000, c); + add_offset (obj_d, c); + unsigned obj_i = c->pop_pack (false); start_object (large_string.c_str(), 10000, c); add_offset (obj_d, c); - unsigned obj_g = c->pop_pack (); + unsigned obj_g = c->pop_pack (false); start_object ("a", 1, c); add_wide_offset (obj_b, c); add_offset (obj_g, c); - c->pop_pack (); + add_offset (obj_i, c); + c->pop_pack (false); c->end_serialize(); } @@ -708,7 +726,7 @@ static void test_resolve_overflows_via_isolation () hb_serialize_context_t out (out_buffer, buffer_size); assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); assert (!out.offset_overflow ()); hb_bytes_t result = out.copy_bytes (); assert (result.length == (1 + 10000 + 60000 + 1 + 1 @@ -731,7 +749,7 @@ static void test_resolve_overflows_via_isolation_with_recursive_duplication () hb_serialize_context_t out (out_buffer, buffer_size); assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); assert (!out.offset_overflow ()); hb_bytes_t result = out.copy_bytes (); From 816c5302a7f5bfbbac1b89a72f9d50871085ddf3 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 28 Sep 2021 16:04:27 -0700 Subject: [PATCH 04/15] [repacker] restrict 32 bit subgraph connected component search to only nodes reachable via directed links. --- src/hb-repacker.hh | 20 ++++--- src/test-repacker.cc | 122 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+), 6 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 6df7c42aa..5016625c2 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -374,16 +374,18 @@ struct graph_t { if (l.width == 4 && !l.is_signed) { - visited.add (i); roots.add (l.objidx); + find_subgraph (l.objidx, visited); } } } + // Mark everything not in the subgraphs of 32 bit roots as visited. + // This prevents 32 bit subgraphs from being connected via nodes not in the 32 bit subgraphs. + visited.invert (); + if (!roots) return false; - // TODO(grieger): add 16 bit only space to visited so it can't be used to connect 32 bit - // subgraphs. unsigned space = 0; while (roots) { @@ -473,6 +475,14 @@ struct graph_t } } + void find_subgraph (unsigned node_idx, hb_set_t& subgraph) + { + if (subgraph.has (node_idx)) return; + subgraph.add (node_idx); + for (const auto& link : vertices_[node_idx].obj.links) + find_subgraph (link.objidx, subgraph); + } + /* * duplicates all nodes in the subgraph reachable from node_idx. Does not re-assign * links. index_map is updated with mappings from old id to new id. If a duplication has already @@ -1013,11 +1023,9 @@ hb_resolve_overflows (const hb_vector_t& pac || table_tag == HB_OT_TAG_GSUB) && sorted_graph.will_overflow ()) { + DEBUG_MSG (SUBSET_REPACK, nullptr, "Assigning spaces to 32 bit subgraphs."); if (sorted_graph.assign_32bit_spaces ()) - { - DEBUG_MSG (SUBSET_REPACK, nullptr, "Assigning spaces to 32 bit subgraphs."); sorted_graph.sort_shortest_distance (); - } } unsigned round = 0; diff --git a/src/test-repacker.cc b/src/test-repacker.cc index 55c906c6d..a143cac98 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -328,6 +328,93 @@ populate_serializer_spaces (hb_serialize_context_t* c, bool with_overflow) c->end_serialize(); } +static void +populate_serializer_spaces_16bit_connection (hb_serialize_context_t* c) +{ + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_g = add_object ("g", 1, c); + unsigned obj_h = add_object ("h", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_g, c); + unsigned obj_e = c->pop_pack (false); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_h, c); + unsigned obj_f = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + start_object ("d", 1, c); + add_offset (obj_f, c); + unsigned obj_d = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_e, c); + add_offset (obj_h, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_c, c); + add_wide_offset (obj_d, c); + c->pop_pack (false); + + c->end_serialize(); +} + +static void +populate_serializer_spaces_16bit_connection_expected (hb_serialize_context_t* c) +{ + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_g_prime = add_object ("g", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_g_prime, c); + unsigned obj_e_prime = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e_prime, c); + unsigned obj_c = c->pop_pack (false); + + unsigned obj_h_prime = add_object ("h", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_h_prime, c); + unsigned obj_f = c->pop_pack (false); + + start_object ("d", 1, c); + add_offset (obj_f, c); + unsigned obj_d = c->pop_pack (false); + + unsigned obj_g = add_object ("g", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_g, c); + unsigned obj_e = c->pop_pack (false); + + unsigned obj_h = add_object ("h", 1, c); + + start_object ("b", 1, c); + add_offset (obj_e, c); + add_offset (obj_h, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_c, c); + add_wide_offset (obj_d, c); + c->pop_pack (false); + + c->end_serialize (); +} + static void populate_serializer_complex_1 (hb_serialize_context_t* c) { @@ -770,6 +857,40 @@ static void test_resolve_overflows_via_isolation_with_recursive_duplication () free (out_buffer); } +static void test_resolve_overflows_via_isolating_16bit_space () +{ + size_t buffer_size = 160000; + void* buffer = malloc (buffer_size); + hb_serialize_context_t c (buffer, buffer_size); + populate_serializer_spaces_16bit_connection (&c); + graph_t graph (c.object_graph ()); + + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (c.offset_overflow ()); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + void* expected_buffer = malloc (buffer_size); + hb_serialize_context_t e (expected_buffer, buffer_size); + assert (!e.offset_overflow ()); + populate_serializer_spaces_16bit_connection_expected (&e); + hb_bytes_t expected_result = e.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < result.length; i++) + assert (result[i] == expected_result[i]); + + result.fini (); + expected_result.fini (); + free (buffer); + free (expected_buffer); + free (out_buffer); +} + + static void test_resolve_overflows_via_isolation_spaces () { size_t buffer_size = 160000; @@ -814,6 +935,7 @@ main (int argc, char **argv) test_resolve_overflows_via_isolation (); test_resolve_overflows_via_isolation_with_recursive_duplication (); test_resolve_overflows_via_isolation_spaces (); + test_resolve_overflows_via_isolating_16bit_space (); test_duplicate_leaf (); test_duplicate_interior (); } From 0dccbf368f1158f474f7ec3c6647932fbdda4e60 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 29 Sep 2021 14:28:27 -0700 Subject: [PATCH 05/15] [repacker] Handle the case where a subgraph root has an incoming 32 and 16 bit edge. In this case the entire subgraph from that root will be duplicated. --- src/hb-repacker.hh | 49 ++++++++++++++++---- src/test-repacker.cc | 105 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+), 8 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 5016625c2..dfe9c44d6 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -416,22 +416,21 @@ struct graph_t * that originate from outside of the subgraph will be removed by duplicating the linked to * object. */ - bool isolate_subgraph (hb_set_t roots) + bool isolate_subgraph (const hb_set_t& roots) { update_parents (); hb_hashmap_t subgraph; // incoming edges to root_idx should be all 32 bit in length so we don't need to de-dup these // set the subgraph incoming edge count to match all of root_idx's incoming edges - // - // TODO(grieger): the above assumption does not always hold, as there are 16 bit incoming - // edges, handle that case here by not including them in the count. + hb_set_t parents; for (unsigned root_idx : roots) { - subgraph.set (root_idx, vertices_[root_idx].incoming_edges ()); + subgraph.set (root_idx, wide_parents (root_idx, parents)); find_subgraph (root_idx, subgraph); } + unsigned original_root_idx = root_idx (); hb_hashmap_t index_map; bool made_changes = false; for (auto entry : subgraph.iter ()) @@ -450,6 +449,14 @@ struct graph_t if (!made_changes) return false; + if (original_root_idx != root_idx () + && parents.has (original_root_idx)) + { + // If the root idx has changed since parents was determined, update root idx in parents + parents.add (root_idx ()); + parents.del (original_root_idx); + } + auto new_subgraph = + subgraph.keys () | hb_map([&] (unsigned node_idx) { @@ -457,7 +464,10 @@ struct graph_t return node_idx; }) ; + remap_obj_indices (index_map, new_subgraph); + remap_obj_indices (index_map, parents.iter ()); + return true; } @@ -538,6 +548,10 @@ struct graph_t vertices_[clone_idx] = *clone; vertices_[vertices_.length - 1] = root; + // Since the root moved, update the parents arrays of all children on the root. + for (const auto& l : root.obj.links) + vertices_[l.objidx].remap_parent (root_idx () - 1, root_idx ()); + return clone_idx; } @@ -571,15 +585,12 @@ struct graph_t unsigned clone_idx = duplicate (child_idx); if (clone_idx == (unsigned) -1) return false; // duplicate shifts the root node idx, so if parent_idx was root update it. - unsigned original_parent_idx = parent_idx; if (parent_idx == clone_idx) parent_idx++; auto& parent = vertices_[parent_idx]; for (unsigned i = 0; i < parent.obj.links.length; i++) { auto& l = parent.obj.links[i]; - if (original_parent_idx != parent_idx) - vertices_[l.objidx].remap_parent (original_parent_idx, parent_idx); if (l.objidx != child_idx) continue; @@ -657,6 +668,26 @@ struct graph_t private: + /* + * Returns the numbers of incoming edges that are 32bits wide. + */ + unsigned wide_parents (unsigned node_idx, hb_set_t& parents) const + { + unsigned count = 0; + for (unsigned p : vertices_[node_idx].parents) + { + for (const auto& l : vertices_[p].obj.links) + { + if (l.objidx == node_idx && l.width == 4 && !l.is_signed) + { + count++; + parents.add (p); + } + } + } + return count; + } + bool check_success (bool success) { return this->successful && (success || (err_other_error (), false)); } @@ -673,7 +704,9 @@ struct graph_t for (unsigned p = 0; p < vertices_.length; p++) { for (auto& l : vertices_[p].obj.links) + { vertices_[l.objidx].parents.push (p); + } } parents_invalid = false; diff --git a/src/test-repacker.cc b/src/test-repacker.cc index a143cac98..1cfa487d5 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -415,6 +415,74 @@ populate_serializer_spaces_16bit_connection_expected (hb_serialize_context_t* c) c->end_serialize (); } +static void +populate_serializer_short_and_wide_subgraph_root (hb_serialize_context_t* c) +{ + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_e = add_object ("e", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_c, c); + unsigned obj_d = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_c, c); + add_offset (obj_e, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_c, c); + add_wide_offset (obj_d, c); + c->pop_pack (false); + + c->end_serialize(); +} + +static void +populate_serializer_short_and_wide_subgraph_root_expected (hb_serialize_context_t* c) +{ + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_e_prime = add_object ("e", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_e_prime, c); + unsigned obj_c_prime = c->pop_pack (false); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_c_prime, c); + unsigned obj_d = c->pop_pack (false); + + unsigned obj_e = add_object ("e", 1, c); + + start_object (large_string.c_str (), 40000, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + + start_object ("b", 1, c); + add_offset (obj_c, c); + add_offset (obj_e, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_c_prime, c); + add_wide_offset (obj_d, c); + c->pop_pack (false); + + c->end_serialize(); +} + + static void populate_serializer_complex_1 (hb_serialize_context_t* c) { @@ -890,6 +958,42 @@ static void test_resolve_overflows_via_isolating_16bit_space () free (out_buffer); } +static void test_resolve_overflows_via_isolating_16bit_space_2 () +{ + size_t buffer_size = 160000; + void* buffer = malloc (buffer_size); + hb_serialize_context_t c (buffer, buffer_size); + populate_serializer_short_and_wide_subgraph_root (&c); + graph_t graph (c.object_graph ()); + + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (c.offset_overflow ()); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + void* expected_buffer = malloc (buffer_size); + hb_serialize_context_t e (expected_buffer, buffer_size); + assert (!e.offset_overflow ()); + populate_serializer_short_and_wide_subgraph_root_expected (&e); + hb_bytes_t expected_result = e.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < expected_result.length; i++) + { + assert (result[i] == expected_result[i]); + } + + result.fini (); + expected_result.fini (); + free (buffer); + free (expected_buffer); + free (out_buffer); +} + + static void test_resolve_overflows_via_isolation_spaces () { @@ -936,6 +1040,7 @@ main (int argc, char **argv) test_resolve_overflows_via_isolation_with_recursive_duplication (); test_resolve_overflows_via_isolation_spaces (); test_resolve_overflows_via_isolating_16bit_space (); + test_resolve_overflows_via_isolating_16bit_space_2 (); test_duplicate_leaf (); test_duplicate_interior (); } From 375a6c8f81a894ac15be7542e17571ad3ebdf16a Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 29 Sep 2021 18:14:57 -0700 Subject: [PATCH 06/15] [repacker] add the ability to move subgraphs from a shared space into their own space. Used to resolve overflows during manual resolution. --- src/hb-repacker.hh | 93 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 9 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index dfe9c44d6..0273325d6 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -166,6 +166,7 @@ struct graph_t positions_invalid (true), successful (true) { + num_roots_for_space.push (1); bool removed_nil = false; for (unsigned i = 0; i < objects.length; i++) { @@ -386,7 +387,6 @@ struct graph_t if (!roots) return false; - unsigned space = 0; while (roots) { unsigned next = HB_SET_VALUE_INVALID; @@ -395,11 +395,14 @@ struct graph_t hb_set_t connected_roots; find_connected_nodes (next, roots, visited, connected_roots); - space++; + + unsigned next_space = this->next_space (); + num_roots_for_space.push (0); for (unsigned root : connected_roots) { - DEBUG_MSG (SUBSET_REPACK, nullptr, "Subgraph %u gets space %u", root, space); - vertices_[root].space = space; + DEBUG_MSG (SUBSET_REPACK, nullptr, "Subgraph %u gets space %u", root, next_space); + vertices_[root].space = next_space; + num_roots_for_space[next_space] = num_roots_for_space[next_space] + 1; distance_invalid = true; positions_invalid = true; } @@ -654,16 +657,58 @@ struct graph_t const auto& parent = vertices_[o.parent]; const auto& child = vertices_[o.child]; DEBUG_MSG (SUBSET_REPACK, nullptr, - " overflow from %d (%d in, %d out) => %d (%d in, %d out)", + " overflow from " + "%4d (%4d in, %4d out, space %2d) => " + "%4d (%4d in, %4d out, space %2d)", o.parent, parent.incoming_edges (), parent.obj.links.length, + space_for (o.parent), o.child, child.incoming_edges (), - child.obj.links.length); + child.obj.links.length, + space_for (o.child)); } } + unsigned num_roots_in_space (unsigned space) const + { + return num_roots_for_space[space]; + } + + unsigned next_space () const + { + return num_roots_for_space.length; + } + + void move_to_new_space (unsigned index) + { + auto& node = vertices_[index]; + num_roots_for_space.push (1); + num_roots_for_space[node.space] = num_roots_for_space[node.space] - 1; + node.space = num_roots_for_space.length - 1; + } + + unsigned space_for (unsigned index, unsigned* root = nullptr) const + { + const auto& node = vertices_[index]; + if (node.space) + { + if (root != nullptr) + *root = index; + return node.space; + } + + if (!node.parents) + { + if (root) + *root = index; + return 0; + } + + return space_for (node.parents[0], root); + } + void err_other_error () { this->successful = false; } private: @@ -976,8 +1021,34 @@ struct graph_t bool distance_invalid; bool positions_invalid; bool successful; + hb_vector_t num_roots_for_space; }; +static bool _try_isolating_subgraphs (const hb_vector_t& overflows, + graph_t& sorted_graph) +{ + for (int i = overflows.length - 1; i >= 0; i--) + { + const graph_t::overflow_record_t& r = overflows[i]; + unsigned root = 0; + unsigned space = sorted_graph.space_for (r.parent, &root); + if (!space) continue; + if (sorted_graph.num_roots_in_space (space) <= 1) continue; + + DEBUG_MSG (SUBSET_REPACK, nullptr, "Overflow in space %d moving subgraph %d to space %d.", + space, + root, + sorted_graph.next_space ()); + + hb_set_t roots; + roots.add (root); + sorted_graph.isolate_subgraph (roots); + sorted_graph.move_to_new_space (root); + return true; + } + return false; +} + static bool _process_overflows (const hb_vector_t& overflows, hb_set_t& priority_bumped_parents, graph_t& sorted_graph) @@ -1071,10 +1142,14 @@ hb_resolve_overflows (const hb_vector_t& pac sorted_graph.print_overflows (overflows); hb_set_t priority_bumped_parents; - if (!_process_overflows (overflows, priority_bumped_parents, sorted_graph)) + + if (!_try_isolating_subgraphs (overflows, sorted_graph)) { - DEBUG_MSG (SUBSET_REPACK, nullptr, "No resolution available :("); - break; + if (!_process_overflows (overflows, priority_bumped_parents, sorted_graph)) + { + DEBUG_MSG (SUBSET_REPACK, nullptr, "No resolution available :("); + break; + } } sorted_graph.sort_shortest_distance (); From d97bd4268a8acdbc3628855057743d2b22e85341 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 5 Oct 2021 10:53:05 -0700 Subject: [PATCH 07/15] [repacker] when assigning spaces use post isolation node indices. isolate_subgraph can result in some of the roots being duplicated and moved to new indices, so do subgraph isolation before assign roots to spaces. --- src/hb-repacker.hh | 69 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 0273325d6..d7b4dd3c4 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -166,7 +166,7 @@ struct graph_t positions_invalid (true), successful (true) { - num_roots_for_space.push (1); + num_roots_for_space_.push (1); bool removed_nil = false; for (unsigned i = 0; i < objects.length; i++) { @@ -198,7 +198,10 @@ struct graph_t bool in_error () const { - return !successful || vertices_.in_error () || clone_buffers_.in_error (); + return !successful || + vertices_.in_error () || + clone_buffers_.in_error () || + num_roots_for_space_.in_error (); } const vertex_t& root () const @@ -288,7 +291,7 @@ struct graph_t check_success (!queue.in_error ()); check_success (!sorted_graph.in_error ()); if (!check_success (new_id == -1)) - DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); + print_orphaned_nodes (); remap_all_obj_indices (id_map, &sorted_graph); @@ -350,7 +353,7 @@ struct graph_t check_success (!queue.in_error ()); check_success (!sorted_graph.in_error ()); if (!check_success (new_id == -1)) - DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); + print_orphaned_nodes (); remap_all_obj_indices (id_map, &sorted_graph); @@ -394,21 +397,21 @@ struct graph_t hb_set_t connected_roots; find_connected_nodes (next, roots, visited, connected_roots); - + isolate_subgraph (connected_roots); unsigned next_space = this->next_space (); - num_roots_for_space.push (0); + num_roots_for_space_.push (0); for (unsigned root : connected_roots) { DEBUG_MSG (SUBSET_REPACK, nullptr, "Subgraph %u gets space %u", root, next_space); vertices_[root].space = next_space; - num_roots_for_space[next_space] = num_roots_for_space[next_space] + 1; + num_roots_for_space_[next_space] = num_roots_for_space_[next_space] + 1; distance_invalid = true; positions_invalid = true; } + // TODO(grieger): special case for GSUB/GPOS use extension promotions to move 16 bit space // into the 32 bit space as needed, instead of using isolation. - isolate_subgraph (connected_roots); } return true; @@ -418,8 +421,10 @@ struct graph_t * Isolates the subgraph of nodes reachable from root. Any links to nodes in the subgraph * that originate from outside of the subgraph will be removed by duplicating the linked to * object. + * + * Indices stored in roots will be updated if any of the roots are duplicated to new indices. */ - bool isolate_subgraph (const hb_set_t& roots) + bool isolate_subgraph (hb_set_t& roots) { update_parents (); hb_hashmap_t subgraph; @@ -471,6 +476,18 @@ struct graph_t remap_obj_indices (index_map, new_subgraph); remap_obj_indices (index_map, parents.iter ()); + // Update roots set with new indices as needed. + unsigned next = HB_SET_VALUE_INVALID; + while (roots.next (&next)) + { + if (index_map.has (next)) + { + printf ("Updated root %u to %u.\n", next, index_map[next]); + roots.del (next); + roots.add (index_map[next]); + } + } + return true; } @@ -647,6 +664,22 @@ struct graph_t return overflows->length; } + void print_orphaned_nodes () + { + if (!DEBUG_ENABLED(SUBSET_REPACK)) return; + + DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); + parents_invalid = true; + update_parents(); + + for (unsigned i = 0; i < root_idx (); i++) + { + const auto& v = vertices_[i]; + if (!v.parents) + DEBUG_MSG (SUBSET_REPACK, nullptr, "Node %u is orphaned.", i); + } + } + void print_overflows (const hb_vector_t& overflows) { if (!DEBUG_ENABLED(SUBSET_REPACK)) return; @@ -671,22 +704,22 @@ struct graph_t } } - unsigned num_roots_in_space (unsigned space) const + unsigned num_roots_for_space (unsigned space) const { - return num_roots_for_space[space]; + return num_roots_for_space_[space]; } unsigned next_space () const { - return num_roots_for_space.length; + return num_roots_for_space_.length; } void move_to_new_space (unsigned index) { auto& node = vertices_[index]; - num_roots_for_space.push (1); - num_roots_for_space[node.space] = num_roots_for_space[node.space] - 1; - node.space = num_roots_for_space.length - 1; + num_roots_for_space_.push (1); + num_roots_for_space_[node.space] = num_roots_for_space_[node.space] - 1; + node.space = num_roots_for_space_.length - 1; } unsigned space_for (unsigned index, unsigned* root = nullptr) const @@ -835,7 +868,7 @@ struct graph_t check_success (!queue.in_error ()); if (!check_success (queue.is_empty ())) { - DEBUG_MSG (SUBSET_REPACK, nullptr, "Graph is not fully connected."); + print_orphaned_nodes (); return; } @@ -1021,7 +1054,7 @@ struct graph_t bool distance_invalid; bool positions_invalid; bool successful; - hb_vector_t num_roots_for_space; + hb_vector_t num_roots_for_space_; }; static bool _try_isolating_subgraphs (const hb_vector_t& overflows, @@ -1033,7 +1066,7 @@ static bool _try_isolating_subgraphs (const hb_vector_t Date: Tue, 5 Oct 2021 11:30:04 -0700 Subject: [PATCH 08/15] [repacker] add test for splitting spaces. --- src/test-repacker.cc | 105 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/src/test-repacker.cc b/src/test-repacker.cc index 1cfa487d5..785d7e77c 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -482,6 +482,74 @@ populate_serializer_short_and_wide_subgraph_root_expected (hb_serialize_context_ c->end_serialize(); } +static void +populate_serializer_with_split_spaces (hb_serialize_context_t* c) +{ + // Overflow needs to be resolved by splitting the single space + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_f = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_d = c->pop_pack (false); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_e = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_d, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + start_object ("a", 1, c); + add_wide_offset (obj_b, c); + add_wide_offset (obj_c, c); + c->pop_pack (false); + + c->end_serialize(); +} + +static void +populate_serializer_with_split_spaces_expected (hb_serialize_context_t* c) +{ + // Overflow needs to be resolved by splitting the single space + + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_f_prime = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f_prime, c); + unsigned obj_d = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_d, c); + unsigned obj_b = c->pop_pack (false); + + unsigned obj_f = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_e = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + start_object ("a", 1, c); + add_wide_offset (obj_b, c); + add_wide_offset (obj_c, c); + c->pop_pack (false); + + c->end_serialize(); +} static void populate_serializer_complex_1 (hb_serialize_context_t* c) @@ -1020,6 +1088,42 @@ static void test_resolve_overflows_via_isolation_spaces () free (out_buffer); } +static void test_resolve_overflows_via_splitting_spaces () +{ + size_t buffer_size = 160000; + void* buffer = malloc (buffer_size); + hb_serialize_context_t c (buffer, buffer_size); + populate_serializer_with_split_spaces (&c); + graph_t graph (c.object_graph ()); + + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (c.offset_overflow ()); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + void* expected_buffer = malloc (buffer_size); + hb_serialize_context_t e (expected_buffer, buffer_size); + assert (!e.offset_overflow ()); + populate_serializer_with_split_spaces_expected (&e); + hb_bytes_t expected_result = e.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < expected_result.length; i++) + { + assert (result[i] == expected_result[i]); + } + + result.fini (); + expected_result.fini (); + free (buffer); + free (expected_buffer); + free (out_buffer); + +} + // TODO(garretrieger): update will_overflow tests to check the overflows array. // TODO(garretrieger): add tests for priority raising. @@ -1041,6 +1145,7 @@ main (int argc, char **argv) test_resolve_overflows_via_isolation_spaces (); test_resolve_overflows_via_isolating_16bit_space (); test_resolve_overflows_via_isolating_16bit_space_2 (); + test_resolve_overflows_via_splitting_spaces (); test_duplicate_leaf (); test_duplicate_interior (); } From 7883b7ed95fcf577e4a5771daeaa01a89058eade Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 5 Oct 2021 12:46:59 -0700 Subject: [PATCH 09/15] [repacker] Add additional splitting spaces test. Fix issues it uncovered. --- src/hb-repacker.hh | 11 ++-- src/test-repacker.cc | 125 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 3 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index d7b4dd3c4..1e8f49118 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -474,7 +474,7 @@ struct graph_t ; remap_obj_indices (index_map, new_subgraph); - remap_obj_indices (index_map, parents.iter ()); + remap_obj_indices (index_map, parents.iter (), true); // Update roots set with new indices as needed. unsigned next = HB_SET_VALUE_INVALID; @@ -482,7 +482,6 @@ struct graph_t { if (index_map.has (next)) { - printf ("Updated root %u to %u.\n", next, index_map[next]); roots.del (next); roots.add (index_map[next]); } @@ -752,8 +751,12 @@ struct graph_t unsigned wide_parents (unsigned node_idx, hb_set_t& parents) const { unsigned count = 0; + hb_set_t visited; for (unsigned p : vertices_[node_idx].parents) { + if (visited.has (p)) continue; + visited.add (p); + for (const auto& l : vertices_[p].obj.links) { if (l.objidx == node_idx && l.width == 4 && !l.is_signed) @@ -936,7 +939,8 @@ struct graph_t */ template void remap_obj_indices (const hb_hashmap_t& id_map, - Iterator subgraph) + Iterator subgraph, + bool only_wide = false) { if (!id_map) return; for (unsigned i : subgraph) @@ -945,6 +949,7 @@ struct graph_t { auto& link = vertices_[i].obj.links[j]; if (!id_map.has (link.objidx)) continue; + if (only_wide && !(link.width == 4 && !link.is_signed)) continue; reassign_link (link, i, id_map[link.objidx]); } diff --git a/src/test-repacker.cc b/src/test-repacker.cc index 785d7e77c..26826d4cd 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -515,6 +515,40 @@ populate_serializer_with_split_spaces (hb_serialize_context_t* c) c->end_serialize(); } +static void +populate_serializer_with_split_spaces_2 (hb_serialize_context_t* c) +{ + // Overflow needs to be resolved by splitting the single space + std::string large_string(70000, 'a'); + c->start_serialize (); + + unsigned obj_f = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_d = c->pop_pack (false); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_e = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_d, c); + unsigned obj_b = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_b, c); + add_wide_offset (obj_c, c); + c->pop_pack (false); + + c->end_serialize(); +} + static void populate_serializer_with_split_spaces_expected (hb_serialize_context_t* c) { @@ -551,6 +585,60 @@ populate_serializer_with_split_spaces_expected (hb_serialize_context_t* c) c->end_serialize(); } +static void +populate_serializer_with_split_spaces_expected_2 (hb_serialize_context_t* c) +{ + // Overflow needs to be resolved by splitting the single space + + std::string large_string(70000, 'a'); + c->start_serialize (); + + // Space 2 + + unsigned obj_f_double_prime = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f_double_prime, c); + unsigned obj_d_prime = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_d_prime, c); + unsigned obj_b_prime = c->pop_pack (false); + + // Space 1 + + unsigned obj_f_prime = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f_prime, c); + unsigned obj_e = c->pop_pack (false); + + start_object ("c", 1, c); + add_offset (obj_e, c); + unsigned obj_c = c->pop_pack (false); + + // Space 0 + + unsigned obj_f = add_object ("f", 1, c); + + start_object (large_string.c_str(), 40000, c); + add_offset (obj_f, c); + unsigned obj_d = c->pop_pack (false); + + start_object ("b", 1, c); + add_offset (obj_d, c); + unsigned obj_b = c->pop_pack (false); + + // Root + start_object ("a", 1, c); + add_offset (obj_b, c); + add_wide_offset (obj_b_prime, c); + add_wide_offset (obj_c, c); + c->pop_pack (false); + + c->end_serialize(); +} + static void populate_serializer_complex_1 (hb_serialize_context_t* c) { @@ -1124,6 +1212,42 @@ static void test_resolve_overflows_via_splitting_spaces () } +static void test_resolve_overflows_via_splitting_spaces_2 () +{ + size_t buffer_size = 160000; + void* buffer = malloc (buffer_size); + hb_serialize_context_t c (buffer, buffer_size); + populate_serializer_with_split_spaces_2 (&c); + graph_t graph (c.object_graph ()); + + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (c.offset_overflow ()); + hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + void* expected_buffer = malloc (buffer_size); + hb_serialize_context_t e (expected_buffer, buffer_size); + assert (!e.offset_overflow ()); + populate_serializer_with_split_spaces_expected_2 (&e); + hb_bytes_t expected_result = e.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < expected_result.length; i++) + { + assert (result[i] == expected_result[i]); + } + + result.fini (); + expected_result.fini (); + free (buffer); + free (expected_buffer); + free (out_buffer); + +} + // TODO(garretrieger): update will_overflow tests to check the overflows array. // TODO(garretrieger): add tests for priority raising. @@ -1146,6 +1270,7 @@ main (int argc, char **argv) test_resolve_overflows_via_isolating_16bit_space (); test_resolve_overflows_via_isolating_16bit_space_2 (); test_resolve_overflows_via_splitting_spaces (); + test_resolve_overflows_via_splitting_spaces_2 (); test_duplicate_leaf (); test_duplicate_interior (); } From 79937d24b75d3039d70feafa2e5ca9836d72689b Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 5 Oct 2021 12:53:21 -0700 Subject: [PATCH 10/15] [repacker] Add repacker test that requires space splitting. --- test/subset/data/fonts/Harmattan-Regular.ttf | Bin 0 -> 835156 bytes test/subset/data/repack_tests/Makefile.sources | 3 ++- .../data/repack_tests/space_splitting.tests | 2 ++ test/subset/meson.build | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 test/subset/data/fonts/Harmattan-Regular.ttf create mode 100644 test/subset/data/repack_tests/space_splitting.tests diff --git a/test/subset/data/fonts/Harmattan-Regular.ttf b/test/subset/data/fonts/Harmattan-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0100cf48508fe7e0ba9e7244b347f57f246489bc GIT binary patch literal 835156 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�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%0A*d7Ls|+Dtbu0Rvps$;F;#KE~SDnkiJ!^(wPe6n| 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 z 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%0A6#Y25Ao^_?Nbij9GLYVp`K`acTfP;< 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

bU3aC4qTQP0)b+sG>} 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%0ARAGW5S+}!=7#d3=qjC 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 E2dW#}E&u=k literal 0 HcmV?d00001 diff --git a/test/subset/data/repack_tests/Makefile.sources b/test/subset/data/repack_tests/Makefile.sources index a9ffc81fb..9e85174b3 100644 --- a/test/subset/data/repack_tests/Makefile.sources +++ b/test/subset/data/repack_tests/Makefile.sources @@ -3,10 +3,11 @@ TESTS = \ prioritization.tests \ table_duplication.tests \ isolation.tests \ + advanced_prioritization.tests \ + space_splitting.tests \ $(NULL) XFAIL_TESTS = \ - advanced_prioritization.tests \ $(NULL) DISABLED_TESTS = \ diff --git a/test/subset/data/repack_tests/space_splitting.tests b/test/subset/data/repack_tests/space_splitting.tests new file mode 100644 index 000000000..0c1f1793f --- /dev/null +++ b/test/subset/data/repack_tests/space_splitting.tests @@ -0,0 +1,2 @@ +Harmattan-Regular.ttf +* diff --git a/test/subset/meson.build b/test/subset/meson.build index 09936e2e5..05fbf8aeb 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -47,6 +47,8 @@ repack_tests = [ 'prioritization', 'table_duplication', 'isolation', + 'advanced_prioritization', + 'space_splitting', ] From 7f0ede4f04f3f3eeb985bf40907e127952c7390c Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 5 Oct 2021 13:10:01 -0700 Subject: [PATCH 11/15] [repacker] refactor resolve overflow tests to use a helper. --- src/test-repacker.cc | 165 ++++++++++++++----------------------------- 1 file changed, 53 insertions(+), 112 deletions(-) diff --git a/src/test-repacker.cc b/src/test-repacker.cc index 26826d4cd..aa4872535 100644 --- a/src/test-repacker.cc +++ b/src/test-repacker.cc @@ -64,6 +64,39 @@ static void add_wide_offset (unsigned id, c->add_link (*offset, id); } +static void run_resolve_overflow_test (const char* name, + hb_serialize_context_t& overflowing, + hb_serialize_context_t& expected, + unsigned num_iterations = 0) +{ + printf (">>> Testing overflowing resolution for %s\n", + name); + + graph_t graph (overflowing.object_graph ()); + + unsigned buffer_size = overflowing.end - overflowing.start; + void* out_buffer = malloc (buffer_size); + hb_serialize_context_t out (out_buffer, buffer_size); + + assert (overflowing.offset_overflow ()); + hb_resolve_overflows (overflowing.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, num_iterations); + assert (!out.offset_overflow ()); + hb_bytes_t result = out.copy_bytes (); + + assert (!expected.offset_overflow ()); + hb_bytes_t expected_result = expected.copy_bytes (); + + assert (result.length == expected_result.length); + for (unsigned i = 0; i < expected_result.length; i++) + { + assert (result[i] == expected_result[i]); + } + + result.fini (); + expected_result.fini (); + free (out_buffer); +} + static void populate_serializer_simple (hb_serialize_context_t* c) { @@ -998,31 +1031,17 @@ static void test_resolve_overflows_via_space_assignment () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_spaces (&c, true); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_spaces (&e, false); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < result.length; i++) - assert (result[i] == expected_result[i]); + run_resolve_overflow_test ("test_resolve_overflows_via_space_assignment", + c, + e); - result.fini (); - expected_result.fini (); free (buffer); free (expected_buffer); - free (out_buffer); } static void test_resolve_overflows_via_isolation () @@ -1054,31 +1073,16 @@ static void test_resolve_overflows_via_isolation_with_recursive_duplication () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_with_isolation_overflow_complex (&c); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_with_isolation_overflow_complex_expected (&e); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < result.length; i++) - assert (result[i] == expected_result[i]); - - result.fini (); - expected_result.fini (); + run_resolve_overflow_test ("test_resolve_overflows_via_isolation_with_recursive_duplication", + c, + e); free (buffer); free (expected_buffer); - free (out_buffer); } static void test_resolve_overflows_via_isolating_16bit_space () @@ -1087,31 +1091,17 @@ static void test_resolve_overflows_via_isolating_16bit_space () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_spaces_16bit_connection (&c); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_spaces_16bit_connection_expected (&e); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < result.length; i++) - assert (result[i] == expected_result[i]); + run_resolve_overflow_test ("test_resolve_overflows_via_isolating_16bit_space", + c, + e); - result.fini (); - expected_result.fini (); free (buffer); free (expected_buffer); - free (out_buffer); } static void test_resolve_overflows_via_isolating_16bit_space_2 () @@ -1120,37 +1110,19 @@ static void test_resolve_overflows_via_isolating_16bit_space_2 () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_short_and_wide_subgraph_root (&c); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 0); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_short_and_wide_subgraph_root_expected (&e); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < expected_result.length; i++) - { - assert (result[i] == expected_result[i]); - } + run_resolve_overflow_test ("test_resolve_overflows_via_isolating_16bit_space_2", + c, + e); - result.fini (); - expected_result.fini (); free (buffer); free (expected_buffer); - free (out_buffer); } - - static void test_resolve_overflows_via_isolation_spaces () { size_t buffer_size = 160000; @@ -1182,33 +1154,18 @@ static void test_resolve_overflows_via_splitting_spaces () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_with_split_spaces (&c); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_with_split_spaces_expected (&e); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < expected_result.length; i++) - { - assert (result[i] == expected_result[i]); - } + run_resolve_overflow_test ("test_resolve_overflows_via_splitting_spaces", + c, + e, + 1); - result.fini (); - expected_result.fini (); free (buffer); free (expected_buffer); - free (out_buffer); } @@ -1218,33 +1175,17 @@ static void test_resolve_overflows_via_splitting_spaces_2 () void* buffer = malloc (buffer_size); hb_serialize_context_t c (buffer, buffer_size); populate_serializer_with_split_spaces_2 (&c); - graph_t graph (c.object_graph ()); - - void* out_buffer = malloc (buffer_size); - hb_serialize_context_t out (out_buffer, buffer_size); - - assert (c.offset_overflow ()); - hb_resolve_overflows (c.object_graph (), HB_TAG ('G', 'S', 'U', 'B'), &out, 1); - assert (!out.offset_overflow ()); - hb_bytes_t result = out.copy_bytes (); void* expected_buffer = malloc (buffer_size); hb_serialize_context_t e (expected_buffer, buffer_size); - assert (!e.offset_overflow ()); populate_serializer_with_split_spaces_expected_2 (&e); - hb_bytes_t expected_result = e.copy_bytes (); - assert (result.length == expected_result.length); - for (unsigned i = 0; i < expected_result.length; i++) - { - assert (result[i] == expected_result[i]); - } - - result.fini (); - expected_result.fini (); + run_resolve_overflow_test ("test_resolve_overflows_via_splitting_spaces_2", + c, + e, + 1); free (buffer); free (expected_buffer); - free (out_buffer); } From 8cae8b653ddae37b1a5410a5997a14e44bf934a0 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 5 Oct 2021 14:03:02 -0700 Subject: [PATCH 12/15] [repacker] add missing fini for parents vector. --- src/hb-repacker.hh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 1e8f49118..df4efa80f 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -46,7 +46,10 @@ struct graph_t end (0), priority(0) {} - void fini () { obj.fini (); } + void fini () { + obj.fini (); + parents.fini (); + } hb_serialize_context_t::object_t obj; int64_t distance; From ff7a86e9b06f7c9b4c82fb931d681b08be1e0b27 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 6 Oct 2021 10:51:45 -0700 Subject: [PATCH 13/15] [repacker] remove clone buffer, they are unnessecary. When nodes are duplicated it's fine to just reuse head, tail from the node being cloned since we don't modify the contents. --- src/hb-repacker.hh | 39 +++------------------------------------ 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index df4efa80f..1320b4220 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -129,33 +129,6 @@ struct graph_t unsigned child; }; - struct clone_buffer_t - { - clone_buffer_t () : head (nullptr), tail (nullptr) {} - - bool copy (const hb_serialize_context_t::object_t& object) - { - fini (); - unsigned size = object.tail - object.head; - head = (char*) hb_malloc (size); - if (!head) return false; - - memcpy (head, object.head, size); - tail = head + size; - return true; - } - - char* head; - char* tail; - - void fini () - { - if (!head) return; - hb_free (head); - head = nullptr; - } - }; - /* * A topological sorting of an object graph. Ordered * in reverse serialization order (first object in the @@ -196,14 +169,12 @@ struct graph_t ~graph_t () { vertices_.fini_deep (); - clone_buffers_.fini_deep (); } bool in_error () const { return !successful || vertices_.in_error () || - clone_buffers_.in_error () || num_roots_for_space_.in_error (); } @@ -541,15 +512,12 @@ struct graph_t auto* clone = vertices_.push (); auto& child = vertices_[node_idx]; - clone_buffer_t* buffer = clone_buffers_.push (); - if (vertices_.in_error () - || clone_buffers_.in_error () - || !check_success (buffer->copy (child.obj))) { + if (vertices_.in_error ()) { return -1; } - clone->obj.head = buffer->head; - clone->obj.tail = buffer->tail; + clone->obj.head = child.obj.head; + clone->obj.tail = child.obj.tail; clone->distance = child.distance; clone->space = child.space; clone->parents.reset (); @@ -1057,7 +1025,6 @@ struct graph_t // TODO(garretrieger): make private, will need to move most of offset overflow code into graph. hb_vector_t vertices_; private: - hb_vector_t clone_buffers_; bool parents_invalid; bool distance_invalid; bool positions_invalid; From 5b882c420adc8f0556a0d966a641aef4c812079e Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 6 Oct 2021 11:12:32 -0700 Subject: [PATCH 14/15] [repacker] performance optimizations for topological sorting. - Presize the output sorted graph and write it once in the correct order to avoid needing to reverse. - Swap the old/new graph vectors instead of copying. - Use a boolean vector for tracking visited instead of a set. --- src/hb-repacker.hh | 25 +++++++++++-------------- src/hb-vector.hh | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 1320b4220..14e105694 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -236,6 +236,7 @@ struct graph_t hb_vector_t queue; hb_vector_t sorted_graph; + if (unlikely (!check_success (sorted_graph.resize (vertices_.length)))) return; hb_vector_t id_map; if (unlikely (!check_success (id_map.resize (vertices_.length)))) return; @@ -252,7 +253,7 @@ struct graph_t queue.remove (0); vertex_t& next = vertices_[next_id]; - sorted_graph.push (next); + sorted_graph[new_id] = next; id_map[next_id] = new_id--; for (const auto& link : next.obj.links) { @@ -269,10 +270,7 @@ struct graph_t remap_all_obj_indices (id_map, &sorted_graph); - sorted_graph.as_array ().reverse (); - - vertices_.fini_deep (); - vertices_ = sorted_graph; + vertices_.swap (sorted_graph); sorted_graph.fini_deep (); } @@ -293,6 +291,7 @@ struct graph_t hb_priority_queue_t queue; hb_vector_t sorted_graph; + if (unlikely (!check_success (sorted_graph.resize (vertices_.length)))) return; hb_vector_t id_map; if (unlikely (!check_success (id_map.resize (vertices_.length)))) return; @@ -308,7 +307,7 @@ struct graph_t unsigned next_id = queue.pop_minimum().second; vertex_t& next = vertices_[next_id]; - sorted_graph.push (next); + sorted_graph[new_id] = next; id_map[next_id] = new_id--; for (const auto& link : next.obj.links) { @@ -331,10 +330,7 @@ struct graph_t remap_all_obj_indices (id_map, &sorted_graph); - sorted_graph.as_array ().reverse (); - - vertices_.fini_deep (); - vertices_ = sorted_graph; + vertices_.swap (sorted_graph); sorted_graph.fini_deep (); } @@ -812,19 +808,20 @@ struct graph_t hb_priority_queue_t queue; queue.insert (0, vertices_.length - 1); - hb_set_t visited; + hb_vector_t visited; + visited.resize (vertices_.length); while (!queue.in_error () && !queue.is_empty ()) { unsigned next_idx = queue.pop_minimum ().second; - if (visited.has (next_idx)) continue; + if (visited[next_idx]) continue; const auto& next = vertices_[next_idx]; int64_t next_distance = vertices_[next_idx].distance; - visited.add (next_idx); + visited[next_idx] = true; for (const auto& link : next.obj.links) { - if (visited.has (link.objidx)) continue; + if (visited[link.objidx]) continue; const auto& child = vertices_[link.objidx].obj; int64_t child_weight = (child.tail - child.head) + diff --git a/src/hb-vector.hh b/src/hb-vector.hh index 110d457ca..95b5295ba 100644 --- a/src/hb-vector.hh +++ b/src/hb-vector.hh @@ -87,6 +87,21 @@ struct hb_vector_t resize (0); } + void swap (hb_vector_t& other) + { + int allocated_copy = allocated; + unsigned int length_copy = length; + Type *arrayZ_copy = arrayZ; + + allocated = other.allocated; + length = other.length; + arrayZ = other.arrayZ; + + other.allocated = allocated_copy; + other.length = length_copy; + other.arrayZ = arrayZ_copy; + } + hb_vector_t& operator = (const hb_vector_t &o) { reset (); From d17155f5d26f7ecb75d24d190c28a46f179c5d37 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 13 Oct 2021 14:40:00 -0700 Subject: [PATCH 15/15] [repacker] use possibly updated root idx after isolate_subgraph. isolate_subgraph can change the root indices in some cases. So operations after the isolation need to use the roots from the output of isolate_subgraph. --- src/hb-repacker.hh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 14e105694..288bae55f 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -1048,7 +1048,8 @@ static bool _try_isolating_subgraphs (const hb_vector_t