Index: runtime/vm/assembler_x64.cc |
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc |
index 3c3dc2eb4c3f1d6cdd96ab02004421bd3eebc66d..fd27c9a30d40992c54290ae2aa96d3b8a426e89c 100644 |
--- a/runtime/vm/assembler_x64.cc |
+++ b/runtime/vm/assembler_x64.cc |
@@ -99,6 +99,18 @@ void Assembler::Call(const ExternalLabel* label) { |
} |
+void Assembler::CallPatchable(const StubEntry& stub_entry) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ CallPatchable(&label); |
+} |
+ |
+ |
+void Assembler::Call(const StubEntry& stub_entry) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ Call(&label); |
+} |
+ |
+ |
void Assembler::pushq(Register reg) { |
AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
EmitRegisterREX(reg, REX_NONE); |
@@ -2551,6 +2563,13 @@ void Assembler::J(Condition condition, const ExternalLabel* label, |
} |
+void Assembler::J(Condition condition, const StubEntry& stub_entry, |
+ Register pp) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ J(condition, &label, pp); |
+} |
+ |
+ |
void Assembler::jmp(Register reg) { |
AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
Operand operand(reg); |
@@ -2606,6 +2625,12 @@ void Assembler::jmp(const ExternalLabel* label) { |
} |
+void Assembler::jmp(const StubEntry& stub_entry) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ jmp(&label); |
+} |
+ |
+ |
void Assembler::JmpPatchable(const ExternalLabel* label, Register pp) { |
ASSERT((pp != PP) || constant_pool_allowed()); |
intptr_t call_start = buffer_.GetPosition(); |
@@ -2617,6 +2642,12 @@ void Assembler::JmpPatchable(const ExternalLabel* label, Register pp) { |
} |
+void Assembler::JmpPatchable(const StubEntry& stub_entry, Register pp) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ JmpPatchable(&label, pp); |
+} |
+ |
+ |
void Assembler::Jmp(const ExternalLabel* label, Register pp) { |
ASSERT((pp != PP) || constant_pool_allowed()); |
const int32_t offset = ObjectPool::element_offset( |
@@ -2625,6 +2656,12 @@ void Assembler::Jmp(const ExternalLabel* label, Register pp) { |
} |
+void Assembler::Jmp(const StubEntry& stub_entry, Register pp) { |
+ const ExternalLabel label(stub_entry.EntryPoint()); |
+ Jmp(&label, pp); |
+} |
+ |
+ |
void Assembler::lock() { |
AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
EmitUint8(0xF0); |
@@ -3188,7 +3225,7 @@ void Assembler::Stop(const char* message, bool fixed_length_encoding) { |
} else { |
LoadImmediate(RDI, Immediate(message_address)); |
} |
- call(&StubCode::PrintStopMessageLabel()); |
+ call(&StubCode::PrintStopMessage_entry()->label()); |
popq(RDI); // Restore RDI register. |
popq(TMP); // Restore TMP register. |
} else { |