Index: src/s390/macro-assembler-s390.cc |
diff --git a/src/s390/macro-assembler-s390.cc b/src/s390/macro-assembler-s390.cc |
index 8465fd71c618d7ec4f4b462b372db3856aa6cf53..e6abf68f1ed19374a5bebab54ba3480238f46257 100644 |
--- a/src/s390/macro-assembler-s390.cc |
+++ b/src/s390/macro-assembler-s390.cc |
@@ -1929,7 +1929,7 @@ void MacroAssembler::AllocateTwoByteString(Register result, Register length, |
// observing object alignment. |
DCHECK((SeqTwoByteString::kHeaderSize & kObjectAlignmentMask) == 0); |
- ShiftLeft(scratch1, length, Operand(1)); // Length in bytes, not chars. |
+ ShiftLeftP(scratch1, length, Operand(1)); // Length in bytes, not chars. |
AddP(scratch1, Operand(kObjectAlignmentMask + SeqTwoByteString::kHeaderSize)); |
AndP(scratch1, Operand(~kObjectAlignmentMask)); |
@@ -4889,6 +4889,15 @@ void MacroAssembler::StoreMultipleW(Register src1, Register src2, |
} |
// Load 32-bits and sign extend if necessary. |
+void MacroAssembler::LoadW(Register dst, Register src) { |
+#if V8_TARGET_ARCH_S390X |
+ lgfr(dst, src); |
+#else |
+ if (!dst.is(src)) lr(dst, src); |
+#endif |
+} |
+ |
+// Load 32-bits and sign extend if necessary. |
void MacroAssembler::LoadW(Register dst, const MemOperand& mem, |
Register scratch) { |
int offset = mem.offset(); |
@@ -4914,6 +4923,15 @@ void MacroAssembler::LoadW(Register dst, const MemOperand& mem, |
} |
} |
+// Load 32-bits and zero extend if necessary. |
+void MacroAssembler::LoadlW(Register dst, Register src) { |
+#if V8_TARGET_ARCH_S390X |
+ llgfr(dst, src); |
+#else |
+ if (!dst.is(src)) lr(dst, src); |
+#endif |
+} |
+ |
// Variable length depending on whether offset fits into immediate field |
// MemOperand of RX or RXY format |
void MacroAssembler::LoadlW(Register dst, const MemOperand& mem, |