aboutsummaryrefslogtreecommitdiff
path: root/zucchini_gen.cc
diff options
context:
space:
mode:
authorEtienne Pierre-doray <etiennep@chromium.org>2018-08-13 18:49:00 +0000
committerCopybara-Service <copybara-worker@google.com>2021-07-25 20:34:45 -0700
commit8f9a9e7376eac67e03f3f2aea2c020132f9f2fe9 (patch)
tree6cca9d6c234f1bfc0d6f528e8de798fca318f064 /zucchini_gen.cc
parente57c4e6bb4c122686c16f40e0b9d50a2e683d42b (diff)
downloadzucchini-8f9a9e7376eac67e03f3f2aea2c020132f9f2fe9.tar.gz
[Zucchini]: Remove IndirectReference.
IndirectReference brings complexity conceptually. The purpose of IndirectReference was to speed-up look-ups. Turns out that there is no significant impact on patching time when using direct references. Furthermore, this reduces coupling between TargetPool and ReferenceSet. Change-Id: Ic50dbf59e483a7fa1480c8eb37f4b1d01a53401a Reviewed-on: https://chromium-review.googlesource.com/1136578 Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by: Samuel Huang <huangs@chromium.org> Cr-Commit-Position: refs/heads/master@{#582653} NOKEYCHECK=True GitOrigin-RevId: 0434f5b4a564c6295e62a3996826f8627b8aa617
Diffstat (limited to 'zucchini_gen.cc')
-rw-r--r--zucchini_gen.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/zucchini_gen.cc b/zucchini_gen.cc
index 0bb4658..38bd8b1 100644
--- a/zucchini_gen.cc
+++ b/zucchini_gen.cc
@@ -202,21 +202,19 @@ bool GenerateReferencesDelta(const ReferenceSet& src_refs,
equiv.src_offset + (dst_ref->location - equiv.dst_offset);
auto src_ref = std::lower_bound(
src_refs.begin(), src_refs.end(), src_loc,
- [](const IndirectReference& a, offset_t b) { return a.location < b; });
+ [](const Reference& a, offset_t b) { return a.location < b; });
for (; dst_ref != dst_refs.end() &&
dst_ref->location + ref_width <= equiv.dst_end();
++dst_ref, ++src_ref) {
// Local offset of |src_ref| should match that of |dst_ref|.
DCHECK_EQ(src_ref->location - equiv.src_offset,
dst_ref->location - equiv.dst_offset);
- offset_t old_offset =
- src_refs.target_pool().OffsetForKey(src_ref->target_key);
+ offset_t old_offset = src_ref->target;
offset_t new_estimated_offset =
offset_mapper.ExtendedForwardProject(old_offset);
offset_t new_estimated_key =
projected_target_pool.KeyForNearestOffset(new_estimated_offset);
- offset_t new_offset =
- dst_refs.target_pool().OffsetForKey(dst_ref->target_key);
+ offset_t new_offset = dst_ref->target;
offset_t new_key = projected_target_pool.KeyForOffset(new_offset);
reference_delta_sink->PutNext(