10class FunctionWriterA64 :
public FunctionWriter<FunctionWriterA64> {
11 friend class FunctionWriter<FunctionWriterA64>;
13 util::SmallVector<u32, 16> veneers;
14 u32 unresolved_cond_brs, unresolved_test_brs;
16 static const TargetCIEInfo CIEInfo;
19 FunctionWriterA64() noexcept : FunctionWriter(CIEInfo) {}
21 void begin_func(u32 align, u32 expected_size)
noexcept {
24 unresolved_cond_brs = unresolved_test_brs = 0;
25 FunctionWriter::begin_func(align, expected_size);
28 void more_space(u32 size)
noexcept;
30 bool try_write_inst(u32 inst)
noexcept {
38 void write_inst(u32 inst)
noexcept {
43 void write_inst_unchecked(u32 inst)
noexcept {
45 write_unchecked(inst);
48 void label_ref(Label label, u32 off, LabelFixupKind kind)
noexcept {
50 if (kind == LabelFixupKind::AARCH64_COND_BR) {
51 unresolved_cond_brs++;
52 }
else if (kind == LabelFixupKind::AARCH64_TEST_BR) {
53 unresolved_test_brs++;
60 void handle_fixups()
noexcept;