Index: src/s390/macro-assembler-s390.cc |
diff --git a/src/s390/macro-assembler-s390.cc b/src/s390/macro-assembler-s390.cc |
index 6ae50eea082f3505172048aab719ab5a307aaca9..8465fd71c618d7ec4f4b462b372db3856aa6cf53 100644 |
--- a/src/s390/macro-assembler-s390.cc |
+++ b/src/s390/macro-assembler-s390.cc |
@@ -154,7 +154,14 @@ void MacroAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode, |
void MacroAssembler::Drop(int count) { |
if (count > 0) { |
- la(sp, MemOperand(sp, count * kPointerSize)); |
+ int total = count * kPointerSize; |
+ if (is_uint12(total)) { |
+ la(sp, MemOperand(sp, total)); |
+ } else if (is_int20(total)) { |
+ lay(sp, MemOperand(sp, total)); |
+ } else { |
+ AddP(sp, Operand(total)); |
+ } |
} |
} |