1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/zucchini/disassembler.h"
6
7 #include "base/check_op.h"
8
9 namespace zucchini {
10
11 /******** EmptyReferenceReader ********/
12
GetNext()13 std::optional<Reference> EmptyReferenceReader::GetNext() {
14 return std::nullopt;
15 }
16
17 /******** EmptyReferenceWriter ********/
18
PutNext(Reference)19 void EmptyReferenceWriter::PutNext(Reference /* reference */) {}
20
21 /******** ReferenceGroup ********/
22
GetReader(offset_t lower,offset_t upper,Disassembler * disasm) const23 std::unique_ptr<ReferenceReader> ReferenceGroup::GetReader(
24 offset_t lower,
25 offset_t upper,
26 Disassembler* disasm) const {
27 DCHECK_LE(lower, upper);
28 DCHECK_LE(upper, disasm->size());
29 return (disasm->*reader_factory_)(lower, upper);
30 }
31
GetReader(Disassembler * disasm) const32 std::unique_ptr<ReferenceReader> ReferenceGroup::GetReader(
33 Disassembler* disasm) const {
34 return (disasm->*reader_factory_)(0, static_cast<offset_t>(disasm->size()));
35 }
36
GetWriter(MutableBufferView image,Disassembler * disasm) const37 std::unique_ptr<ReferenceWriter> ReferenceGroup::GetWriter(
38 MutableBufferView image,
39 Disassembler* disasm) const {
40 DCHECK_EQ(image.begin(), disasm->image().begin());
41 DCHECK_EQ(image.size(), disasm->size());
42 return (disasm->*writer_factory_)(image);
43 }
44
45 /******** Disassembler ********/
46
Disassembler(int num_equivalence_iterations)47 Disassembler::Disassembler(int num_equivalence_iterations)
48 : num_equivalence_iterations_(num_equivalence_iterations) {}
49
50 Disassembler::~Disassembler() = default;
51
52 } // namespace zucchini
53