diff options
author | Kelvin Zhang <zhangkelvin@google.com> | 2021-11-02 21:28:18 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-11-02 21:28:18 +0000 |
commit | 58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b (patch) | |
tree | 0a310ca653ef73c547d80da63c87fcb2c0636bcb /equivalence_map.h | |
parent | 919a460e14c48a672288254f67db3e0c28166e82 (diff) | |
parent | d9eed84a58f90af50d84b02ca6a38d805b425a95 (diff) | |
download | zucchini-58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b.tar.gz |
Merge remote-tracking branch 'aosp/upstream-main' into dev am: a90c04389f am: ddc43dc959 am: d9eed84a58
Original change: https://android-review.googlesource.com/c/platform/external/zucchini/+/1877854
Change-Id: I7de3d8374e868066777abb326d3e20c1e4b44803
Diffstat (limited to 'equivalence_map.h')
-rw-r--r-- | equivalence_map.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/equivalence_map.h b/equivalence_map.h index 8b716a1..af99ac4 100644 --- a/equivalence_map.h +++ b/equivalence_map.h @@ -7,6 +7,7 @@ #include <stddef.h> +#include <deque> #include <limits> #include <vector> @@ -82,13 +83,13 @@ EquivalenceCandidate VisitEquivalenceSeed( // bytes in |old_image| and |new_image|) one-to-one. class OffsetMapper { public: - using const_iterator = std::vector<Equivalence>::const_iterator; + using const_iterator = std::deque<Equivalence>::const_iterator; // Constructors for various data sources. "Old" and "new" image sizes are // needed for bounds checks and to handle dangling targets. // - From a list of |equivalences|, already sorted (by |src_offset|) and // pruned, useful for tests. - OffsetMapper(std::vector<Equivalence>&& equivalences, + OffsetMapper(std::deque<Equivalence>&& equivalences, offset_t old_image_size, offset_t new_image_size); // - From a generator, useful for Zucchini-apply. @@ -128,10 +129,10 @@ class OffsetMapper { // Given sorted |offsets|, applies a projection in-place of all offsets that // are part of a pruned equivalence from |old_image| to |new_image|. Other // offsets are removed from |offsets|. - void ForwardProjectAll(std::vector<offset_t>* offsets) const; + void ForwardProjectAll(std::deque<offset_t>* offsets) const; // Accessor for testing. - const std::vector<Equivalence> equivalences() const { return equivalences_; } + const std::deque<Equivalence> equivalences() const { return equivalences_; } // Sorts |equivalences| by |src_offset| and removes all source overlaps; so a // source location that was covered by some Equivalence would become covered @@ -140,12 +141,12 @@ class OffsetMapper { // of a tie, the Equivalence with minimal |src_offset|. |equivalences| may // change in size since empty Equivalences are removed. static void PruneEquivalencesAndSortBySource( - std::vector<Equivalence>* equivalences); + std::deque<Equivalence>* equivalences); private: // |equivalences_| is pruned, i.e., no "old" blocks overlap (and no "new" // block overlaps). Also, it is sorted by "old" offsets. - std::vector<Equivalence> equivalences_; + std::deque<Equivalence> equivalences_; const offset_t old_image_size_; const offset_t new_image_size_; }; |