| Index: src/arm/macro-assembler-arm.h
|
| diff --git a/src/arm/macro-assembler-arm.h b/src/arm/macro-assembler-arm.h
|
| index 8b9fa2b22162bf0e1b1e1d8343bb3ebd1771fa10..f3716c27c0e9e1cb2160bacf99bb2681e1c732cf 100644
|
| --- a/src/arm/macro-assembler-arm.h
|
| +++ b/src/arm/macro-assembler-arm.h
|
| @@ -62,6 +62,14 @@ enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
|
| enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
|
|
|
|
|
| +Register GetRegisterThatIsNotOneOf(Register reg1,
|
| + Register reg2 = no_reg,
|
| + Register reg3 = no_reg,
|
| + Register reg4 = no_reg,
|
| + Register reg5 = no_reg,
|
| + Register reg6 = no_reg);
|
| +
|
| +
|
| #ifdef DEBUG
|
| bool AreAliased(Register reg1,
|
| Register reg2,
|
| @@ -491,19 +499,6 @@ class MacroAssembler: public Assembler {
|
| void VmovLow(Register dst, DwVfpRegister src);
|
| void VmovLow(DwVfpRegister dst, Register src);
|
|
|
| - // Converts the smi or heap number in object to an int32 using the rules
|
| - // for ToInt32 as described in ECMAScript 9.5.: the value is truncated
|
| - // and brought into the range -2^31 .. +2^31 - 1.
|
| - void ConvertNumberToInt32(Register object,
|
| - Register dst,
|
| - Register heap_number_map,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - DwVfpRegister double_scratch1,
|
| - LowDwVfpRegister double_scratch2,
|
| - Label* not_int32);
|
| -
|
| // Loads the number from object into dst register.
|
| // If |object| is neither smi nor heap number, |not_number| is jumped to
|
| // with |object| still intact.
|
| @@ -989,15 +984,34 @@ class MacroAssembler: public Assembler {
|
| Label* exact);
|
|
|
| // Performs a truncating conversion of a floating point number as used by
|
| + // the JS bitwise operations. See ECMA-262 9.5: ToInt32. Goes to 'done' if it
|
| + // succeeds, otherwise falls through if result is saturated. On return
|
| + // 'result' either holds answer, or is clobbered on fall through.
|
| + //
|
| + // Only public for the test code in test-code-stubs-arm.cc.
|
| + void TryInlineTruncateDoubleToI(Register result,
|
| + DwVfpRegister input,
|
| + Label* done);
|
| +
|
| + // Performs a truncating conversion of a floating point number as used by
|
| // the JS bitwise operations. See ECMA-262 9.5: ToInt32.
|
| - // Double_scratch must be between d0 and d15.
|
| - // Exits with 'result' holding the answer and all other registers clobbered.
|
| - void ECMAToInt32(Register result,
|
| - DwVfpRegister double_input,
|
| - Register scratch,
|
| - Register scratch_high,
|
| - Register scratch_low,
|
| - LowDwVfpRegister double_scratch);
|
| + // Exits with 'result' holding the answer.
|
| + void TruncateDoubleToI(Register result, DwVfpRegister double_input);
|
| +
|
| + // Performs a truncating conversion of a heap number as used by
|
| + // the JS bitwise operations. See ECMA-262 9.5: ToInt32. 'result' and 'input'
|
| + // must be different registers. Exits with 'result' holding the answer.
|
| + void TruncateHeapNumberToI(Register result, Register object);
|
| +
|
| + // Converts the smi or heap number in object to an int32 using the rules
|
| + // for ToInt32 as described in ECMAScript 9.5.: the value is truncated
|
| + // and brought into the range -2^31 .. +2^31 - 1. 'result' and 'input' must be
|
| + // different registers.
|
| + void TruncateNumberToI(Register object,
|
| + Register result,
|
| + Register heap_number_map,
|
| + Register scratch1,
|
| + Label* not_int32);
|
|
|
| // Check whether d16-d31 are available on the CPU. The result is given by the
|
| // Z condition flag: Z==0 if d16-d31 available, Z==1 otherwise.
|
|
|