diff options
Diffstat (limited to 'deps/v8/src/arm/macro-assembler-arm.cc')
-rw-r--r-- | deps/v8/src/arm/macro-assembler-arm.cc | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/deps/v8/src/arm/macro-assembler-arm.cc b/deps/v8/src/arm/macro-assembler-arm.cc index 0d0b0ee16e..9294a8c7c6 100644 --- a/deps/v8/src/arm/macro-assembler-arm.cc +++ b/deps/v8/src/arm/macro-assembler-arm.cc @@ -967,7 +967,7 @@ void MacroAssembler::StubPrologue() { add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); if (FLAG_enable_ool_constant_pool) { LoadConstantPoolPointerRegister(); - set_constant_pool_available(true); + set_ool_constant_pool_available(true); } } @@ -992,16 +992,16 @@ void MacroAssembler::Prologue(bool code_pre_aging) { } if (FLAG_enable_ool_constant_pool) { LoadConstantPoolPointerRegister(); - set_constant_pool_available(true); + set_ool_constant_pool_available(true); } } void MacroAssembler::EnterFrame(StackFrame::Type type, - bool load_constant_pool) { + bool load_constant_pool_pointer_reg) { // r0-r3: preserved PushFixedFrame(); - if (FLAG_enable_ool_constant_pool && load_constant_pool) { + if (FLAG_enable_ool_constant_pool && load_constant_pool_pointer_reg) { LoadConstantPoolPointerRegister(); } mov(ip, Operand(Smi::FromInt(type))); @@ -4071,21 +4071,22 @@ void MacroAssembler::TruncatingDiv(Register result, DCHECK(!dividend.is(ip)); DCHECK(!result.is(ip)); base::MagicNumbersForDivision<uint32_t> mag = - base::SignedDivisionByConstant(static_cast<uint32_t>(divisor)); + base::SignedDivisionByConstant(bit_cast<uint32_t>(divisor)); mov(ip, Operand(mag.multiplier)); - smull(ip, result, dividend, ip); - bool neg = (mag.multiplier & (static_cast<uint32_t>(1) << 31)) != 0; + bool neg = (mag.multiplier & (1U << 31)) != 0; if (divisor > 0 && neg) { - add(result, result, Operand(dividend)); - } - if (divisor < 0 && !neg && mag.multiplier > 0) { - sub(result, result, Operand(dividend)); + smmla(result, dividend, ip, dividend); + } else { + smmul(result, dividend, ip); + if (divisor < 0 && !neg && mag.multiplier > 0) { + sub(result, result, Operand(dividend)); + } } if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); add(result, result, Operand(dividend, LSR, 31)); } - -} } // namespace v8::internal +} // namespace internal +} // namespace v8 #endif // V8_TARGET_ARCH_ARM |