xref: /aosp_15_r20/external/zucchini/disassembler.cc (revision a03ca8b91e029cd15055c20c78c2e087c84792e4)
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