/// \brief Represents a contiguous range of either instructions (a TextAtom)
/// or data (a DataAtom). Address ranges are expressed as _closed_ intervals.
class MCAtom {
+ virtual void anchor();
public:
virtual ~MCAtom() {}
const MCDecodedInst &back() const { return Insts.back(); }
const MCDecodedInst &at(size_t n) const { return Insts.at(n); }
- uint64_t size() const { return Insts.size(); }
+ size_t size() const { return Insts.size(); }
/// @}
/// \name Atom type specific split/truncate logic.
/// @{
- MCTextAtom *split(uint64_t SplitPt) LLVM_OVERRIDE;
- void truncate(uint64_t TruncPt) LLVM_OVERRIDE;
+ MCTextAtom *split(uint64_t SplitPt) override;
+ void truncate(uint64_t TruncPt) override;
/// @}
// Class hierarchy.
/// \name Atom type specific split/truncate logic.
/// @{
- MCDataAtom *split(uint64_t SplitPt) LLVM_OVERRIDE;
- void truncate(uint64_t TruncPt) LLVM_OVERRIDE;
+ MCDataAtom *split(uint64_t SplitPt) override;
+ void truncate(uint64_t TruncPt) override;
/// @}
// Class hierarchy.
friend class MCModule;
// Private constructor - only callable by MCModule
MCDataAtom(MCModule *P, uint64_t Begin, uint64_t End)
- : MCAtom(DataAtom, P, Begin, End), Data(End - Begin) {}
+ : MCAtom(DataAtom, P, Begin, End) {
+ Data.reserve(End + 1 - Begin);
+ }
};
}