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

Unified Diff: runtime/vm/instructions_x64.cc

Issue 1192103004: VM: New calling convention for generated code. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
Index: runtime/vm/instructions_x64.cc
diff --git a/runtime/vm/instructions_x64.cc b/runtime/vm/instructions_x64.cc
index 51128dd23901b88e6fcec7c2b64b5a5b046c8ad4..58322927d16a88ce2614ea1f18467ad3daba3193 100644
--- a/runtime/vm/instructions_x64.cc
+++ b/runtime/vm/instructions_x64.cc
@@ -36,25 +36,34 @@ bool InstructionPattern::TestBytesWith(const int* data, int num_bytes) const {
}
-uword JumpPattern::TargetAddress() const {
+RawCode* JumpPattern::TargetCode() const {
ASSERT(IsValid());
int index = InstructionPattern::IndexFromPPLoad(start() + 3);
- return object_pool_.RawValueAt(index);
+ Code& code = Code::Handle();
+ code ^= object_pool_.ObjectAt(index);
+ return code.raw();
}
-void JumpPattern::SetTargetAddress(uword target) const {
+void JumpPattern::SetTargetCode(const Code& target) const {
ASSERT(IsValid());
int index = InstructionPattern::IndexFromPPLoad(start() + 3);
- object_pool_.SetRawValueAt(index, target);
+ object_pool_.SetObjectAt(index, target);
// No need to flush the instruction cache, since the code is not modified.
}
const int* JumpPattern::pattern() const {
- // 07: 41 ff a7 imm32 jmpq [reg + off]
+ // 0: 4d 8b a5 imm32 movq CR, [PP + offs]
+ // 7: 4d 8b 5c 24 07 movq TMP, [CR + insns_offs]
+ // 12: 49 83 c3 1f addq TMP, entry_offs
+ // 16: 41 ff e3 jmp TMP
+ // 19:
static const int kJumpPattern[kLengthInBytes] =
- {0x41, 0xFF, -1, -1, -1, -1, -1};
+ {0x4d, 0x8b, -1, -1, -1, -1, -1,
+ 0x4d, 0x8b, 0x5c, 0x24, 0x07,
+ 0x49, 0x83, 0xc3, 0x1f,
+ 0x41, 0xff, 0xe3};
return kJumpPattern;
}

Powered by Google App Engine
This is Rietveld 408576698