src/graph/graph.hh


Log

Author Commit Date CI Message
Garret Rieger e4fff64c 2023-01-24T00:52:26 [repacker] check duplicate() for success. Fixes fuzzer testcase https://oss-fuzz.com/testcase-detail/5475787333828608.
Behdad Esfahbod ed023f66 2023-01-12T17:04:24 Enable -Wformat-signedness And fix the codebase.
Garret Rieger 35233d25 2022-12-07T00:47:28 [repacker] fix fuzzer reported stack overflow. Fixes https://oss-fuzz.com/testcase-detail/6014493291577344.
Garret Rieger f1d34893 2022-12-05T19:33:15 [repacker] bail on failure to alloc assigned_bytes set. Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/5390364397928448.
Garret Rieger 239a5aca 2022-12-05T19:15:36 [repacker] don't allow references to the null object in graph. Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/6714085985353728
Garret Rieger de5a6213 2022-12-01T23:37:16 [repacker] enforce root node having no incoming edges.
Garret Rieger 30e405e4 2022-12-01T22:12:59 [repacker] ensure link obj indices are valid.
Garret Rieger 554ed06f 2022-12-01T21:51:17 [repacker] add cycle detection to the graph sort. This allows us to bail early if the graph is not acyclic.
Garret Rieger 9e99d084 2022-09-08T23:19:02 [repacker] validate link widths during repacker setup.
Garret Rieger edf7a295 2022-09-08T22:59:34 [repacker] Validate link positions before running the repacker.
Garret Rieger deca30b2 2022-09-08T21:10:06 [repacker] get repacker fuzzer working. Additionally add helper method that allows a graph to be saved as a fuzzer seed.
Garret Rieger 985b19f6 2022-09-07T22:21:16 [repacker] begin implementing a fuzzer for the repacker api.
Behdad Esfahbod 915c1a00 2022-11-26T14:48:57 [vector] Add remove_unordered Saves 5% in NotoNastaliq/1000 subset benchmark.
Joel Auterson c813f842 2022-10-20T19:45:23 Make build work for arm-none-eabi
Garret Rieger 99f4668e 2022-09-29T19:39:59 [repacker] use mutable copies of Coverage/ClassDef in MarkBasePos shrink operation. Also make mutable copies (when needed) of the top level subtables during a split operation.
Behdad Esfahbod 56c46709 2022-09-20T17:39:54 [subset] Fix compiler warning Fixes https://github.com/harfbuzz/harfbuzz/issues/3823
Garret Rieger 29e3b246 2022-08-18T01:19:54 [repacker] optimzie remove_real_links as it's a hot method.
Garret Rieger 46b5dbd7 2022-08-18T01:18:16 [repacker] optimize index_for_offset.
Garret Rieger ac1a853a 2022-08-18T00:55:47 [repacker] implement sanitize methods for MarkBasePos.
Garret Rieger a3ed9f90 2022-08-17T23:39:11 [repacker] fix graph comparison, and mark base pos generation for the tests.
Garret Rieger 1405f96b 2022-08-15T23:48:00 [repacker] change run_resolve_overflow_test to check for graph equivalence. Replaces a check for an exact match on the final serialized bytes. The previous check enforced equivalent topological sorting between result and expected, but we only really care that the graph's are equivalent and don't overflow.
Garret Rieger 07fd0528 2022-08-15T23:16:51 [repacker] add graph equality check. Does not compare topological sorting, but looks for equivalence of the two graphs.
Garret Rieger 5cf2a25a 2022-08-15T22:49:24 [repacker] Expose on internal method in the repacker that allows the caller to pass in/out a graph. Will be used in testing so we can compare graphs instead of packed result.
Garret Rieger 0083fd10 2022-08-11T22:09:46 [repacker] add as_table() helper to graph.
Garret Rieger b00eb776 2022-08-11T20:33:21 [repack] Add add_link helper to graph.
Garret Rieger 1acd2a8b 2022-08-11T20:22:31 [repacker] implement MarkBasePosFormat1::clone_range.
Garret Rieger 5d824c09 2022-08-05T01:37:14 [repacker] during table splits don't mutate shared coverage/classdef in place. If other subtables are sharing coverage with a subtable being split we have to duplicate the coverage/classdef tables before they are modified during the shrink operation.
Garret Rieger 3b91fb2a 2022-07-29T20:04:42 [repacker] cleanup todo.
Garret Rieger fb3f6ad7 2022-07-29T00:25:19 [repacker] ensure lookup map is updated when lookup memory location changes.
Garret Rieger 65afed04 2022-07-28T20:54:28 [repacker] more bug fixes.
Garret Rieger 1002a3dc 2022-07-28T20:17:36 [repacker] bug fixes.
Garret Rieger 29cb8818 2022-07-27T21:02:48 [repacker] new coverage serialization in PairPosFormat1.
Garret Rieger 8d63f60e 2022-07-27T20:36:20 [repack] add graph_t::move_child helper function.
Garret Rieger 241ebc93 2022-07-26T00:04:20 [repacker] fix include paths.
Garret Rieger 9d0b2da5 2022-07-25T20:46:49 [repacker] count subtable size in each group of consecutive layers for extension promotion decisions. Enforce that the following groups are all <64k in size: - LookupList + Lookups - Lookups + SubTables - SubTables + Descendants
Garret Rieger 9db3beb7 2022-07-25T19:42:58 [repacker] include LookupList size when calculating size of 16bit space for ext promotion decisions.
Garret Rieger ad0041f5 2022-07-21T22:50:14 [repacker] Add basic version of the extension promotion selection algorithm.
Garret Rieger ae290ff4 2022-07-21T21:45:04 [repacker] add sanitization for GSUB/LookupList/Lookup during extension promotion.
Garret Rieger ce03c353 2022-07-21T19:07:55 [repacker] add make_extension_context_t.
Garret Rieger 815bb82b 2022-07-20T18:17:29 [repack] fix incorrect extension object bounds.
Garret Rieger 7e6f6c3e 2022-07-20T03:26:29 [repack] fix new node bounds.
Garret Rieger b1d38a6d 2022-07-19T23:33:16 [repack] WIP implement extension promotion mechanism.
Garret Rieger 3f7a74ff 2022-07-19T21:50:13 [repacker] WIP extension promotion implementation.
Garret Rieger b4f561db 2022-07-06T18:49:23 [subset] Add some comments to find_space_roots/find_32_bit_roots methods.
Garret Rieger 401066bf 2022-07-06T18:44:40 [subset] Prepare the repacker for handling 24bit offsets in GSUB/GPOS. The boring expansion (https://github.com/be-fonts/boring-expansion-spec) plans to introduce 24bit offsets into GSUB/GPOS. This changes the repacker to treat 24 bit offsets similar to 32 bit offsets and assign the top level 24 bit offsets into spaces to improve packing.
Garret Rieger 2674962c 2022-06-24T21:00:54 [repacker] Add comment to graph class.
Garret Rieger 7078560e 2022-06-24T19:20:20 [repacker] extract graph serialization code into a seperate file.
Garret Rieger 20b02a67 2022-06-24T18:58:17 [repacker] Begin splitting up the repacker implementation into several files.