Index: runtime/vm/intrinsifier_arm.cc |
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc |
index d0b05d8bdfd1c27c78c268cffe27ebc6d45b1853..1b825a3c977880faabefe59a37337368c26c0f41 100644 |
--- a/runtime/vm/intrinsifier_arm.cc |
+++ b/runtime/vm/intrinsifier_arm.cc |
@@ -32,6 +32,20 @@ namespace dart { |
intptr_t Intrinsifier::ParameterSlotFromSp() { return -1; } |
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) { |
+ // Save LR by moving it to a callee saved temporary register. |
+ assembler->Comment("IntrinsicCallPrologue"); |
+ assembler->mov(CALLEE_SAVED_TEMP, Operand(LR)); |
+} |
+ |
+ |
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) { |
+ // Restore LR. |
+ assembler->Comment("IntrinsicCallEpilogue"); |
+ assembler->mov(LR, Operand(CALLEE_SAVED_TEMP)); |
+} |
+ |
+ |
// Intrinsify only for Smi value and index. Non-smi values need a store buffer |
// update. Array length is always a Smi. |
void Intrinsifier::ObjectArraySetIndexed(Assembler* assembler) { |