Index: runtime/vm/assembler_arm64.h |
=================================================================== |
--- runtime/vm/assembler_arm64.h (revision 35975) |
+++ runtime/vm/assembler_arm64.h (working copy) |
@@ -788,18 +788,14 @@ |
} |
// Branching to ExternalLabels. |
- void BranchPatchable(const ExternalLabel* label, Register pp) { |
- LoadExternalLabel(TMP, label, kPatchable, pp); |
- br(TMP); |
- } |
- |
void Branch(const ExternalLabel* label, Register pp) { |
LoadExternalLabel(TMP, label, kNotPatchable, pp); |
br(TMP); |
} |
// Fixed length branch to label. |
- void BranchFixed(const ExternalLabel* label) { |
+ void BranchPatchable(const ExternalLabel* label) { |
+ // TODO(zra): Use LoadExternalLabelFixed if possible. |
LoadImmediateFixed(TMP, label->address()); |
br(TMP); |
} |
@@ -814,8 +810,10 @@ |
} |
} |
+ // BranchLinkPatchable must be a fixed-length sequence so we can patch it |
+ // with the debugger. |
void BranchLinkPatchable(const ExternalLabel* label) { |
- LoadExternalLabel(TMP, label, kPatchable, PP); |
+ LoadExternalLabelFixed(TMP, label, kPatchable, PP); |
blr(TMP); |
} |
@@ -907,6 +905,7 @@ |
}; |
void LoadWordFromPoolOffset(Register dst, Register pp, uint32_t offset); |
+ void LoadWordFromPoolOffsetFixed(Register dst, Register pp, uint32_t offset); |
intptr_t FindExternalLabel(const ExternalLabel* label, |
Patchability patchable); |
intptr_t FindObject(const Object& obj, Patchability patchable); |
@@ -915,6 +914,10 @@ |
bool CanLoadImmediateFromPool(int64_t imm, Register pp); |
void LoadExternalLabel(Register dst, const ExternalLabel* label, |
Patchability patchable, Register pp); |
+ void LoadExternalLabelFixed(Register dst, |
+ const ExternalLabel* label, |
+ Patchability patchable, |
+ Register pp); |
void LoadObject(Register dst, const Object& obj, Register pp); |
void LoadDecodableImmediate(Register reg, int64_t imm, Register pp); |
void LoadImmediateFixed(Register reg, int64_t imm); |