| Index: src/s390/macro-assembler-s390.cc
|
| diff --git a/src/s390/macro-assembler-s390.cc b/src/s390/macro-assembler-s390.cc
|
| index ea1079e4d658244bd75002fedb368afde0500ea2..120b208ae7d79669ea469c229c5fa192dace6a6b 100644
|
| --- a/src/s390/macro-assembler-s390.cc
|
| +++ b/src/s390/macro-assembler-s390.cc
|
| @@ -1925,7 +1925,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));
|
| @@ -4895,6 +4895,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();
|
| @@ -4920,6 +4929,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,
|
|
|