Index: runtime/vm/assembler_x64.cc |
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc |
index 213b8cb2cd5bdb6480de789e4bd367452b916df4..ea2c95d5fe1a7795990240932f2c627bc1230e08 100644 |
--- a/runtime/vm/assembler_x64.cc |
+++ b/runtime/vm/assembler_x64.cc |
@@ -3335,9 +3335,7 @@ void Assembler::NoMonomorphicCheckedEntry() { |
void Assembler::MonomorphicCheckedEntry() { |
Label immediate, have_cid, miss; |
Bind(&miss); |
- movq(CODE_REG, Address(THR, Thread::monomorphic_miss_stub_offset())); |
- movq(RCX, FieldAddress(CODE_REG, Code::entry_point_offset())); |
- jmp(RCX); |
+ jmp(Address(THR, Thread::monomorphic_miss_entry_offset())); |
Bind(&immediate); |
movq(R10, Immediate(kSmiCid)); |
@@ -3354,6 +3352,7 @@ void Assembler::MonomorphicCheckedEntry() { |
Bind(&have_cid); |
cmpq(R10, RBX); |
j(NOT_EQUAL, &miss, Assembler::kNearJump); |
+ nop(); |
Florian Schneider
2016/10/10 21:10:39
Why is this nop needed?
rmacnak
2016/10/11 20:31:04
IC calls in AOT store the entry as a Smi.
|
// Fall through to unchecked entry. |
ASSERT(CodeSize() == Instructions::kUncheckedEntryOffset); |