Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Unified Diff: runtime/vm/assembler_arm64.h

Issue 274043003: Adds debugger patching to arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/tests/vm/vm.status ('k') | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « runtime/tests/vm/vm.status ('k') | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698