12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/zucchini/disassembler.h"
- #include "base/check_op.h"
- namespace zucchini {
- /******** EmptyReferenceReader ********/
- absl::optional<Reference> EmptyReferenceReader::GetNext() {
- return absl::nullopt;
- }
- /******** EmptyReferenceWriter ********/
- void EmptyReferenceWriter::PutNext(Reference /* reference */) {}
- /******** ReferenceGroup ********/
- std::unique_ptr<ReferenceReader> ReferenceGroup::GetReader(
- offset_t lower,
- offset_t upper,
- Disassembler* disasm) const {
- DCHECK_LE(lower, upper);
- DCHECK_LE(upper, disasm->size());
- return (disasm->*reader_factory_)(lower, upper);
- }
- std::unique_ptr<ReferenceReader> ReferenceGroup::GetReader(
- Disassembler* disasm) const {
- return (disasm->*reader_factory_)(0, static_cast<offset_t>(disasm->size()));
- }
- std::unique_ptr<ReferenceWriter> ReferenceGroup::GetWriter(
- MutableBufferView image,
- Disassembler* disasm) const {
- DCHECK_EQ(image.begin(), disasm->image().begin());
- DCHECK_EQ(image.size(), disasm->size());
- return (disasm->*writer_factory_)(image);
- }
- std::unique_ptr<ReferenceMixer> ReferenceGroup::GetMixer(
- ConstBufferView old_image,
- ConstBufferView new_image,
- Disassembler* disasm) const {
- if (mixer_factory_)
- return (disasm->*mixer_factory_)(old_image, new_image);
- return nullptr;
- }
- /******** Disassembler ********/
- Disassembler::Disassembler(int num_equivalence_iterations)
- : num_equivalence_iterations_(num_equivalence_iterations) {}
- Disassembler::~Disassembler() = default;
- } // namespace zucchini
|