Index: src/mips/macro-assembler-mips.h |
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
index 26bed6887b7bcb57c0af9433c9725570bf7465a0..8f0b3b113edb03e687eaed04e3cc2a95256e9a9c 100644 |
--- a/src/mips/macro-assembler-mips.h |
+++ b/src/mips/macro-assembler-mips.h |
@@ -90,6 +90,13 @@ enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; |
enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; |
enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved }; |
+Register GetRegisterThatIsNotOneOf(Register reg1, |
+ Register reg2 = no_reg, |
+ Register reg3 = no_reg, |
+ Register reg4 = no_reg, |
+ Register reg5 = no_reg, |
+ Register reg6 = no_reg); |
+ |
bool AreAliased(Register r1, Register r2, Register r3, Register r4); |
@@ -788,26 +795,36 @@ class MacroAssembler: public Assembler { |
Register scratch); |
// 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, |
+ DoubleRegister 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. |
- // Exits with 'result' holding the answer and all other registers clobbered. |
- void EmitECMATruncate(Register result, |
- FPURegister double_input, |
- FPURegister single_scratch, |
- Register scratch, |
- Register scratch2, |
- Register scratch3); |
+ // Exits with 'result' holding the answer. |
+ void TruncateDoubleToI(Register result, DoubleRegister 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. |
- void ConvertNumberToInt32(Register object, |
- Register dst, |
- Register heap_number_map, |
- Register scratch1, |
- Register scratch2, |
- Register scratch3, |
- FPURegister double_scratch, |
- Label* not_int32); |
+ // 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, |
+ Register scratch2, |
+ Register scratch3, |
+ Label* not_int32); |
// Loads the number from object into dst register. |
// If |object| is neither smi nor heap number, |not_number| is jumped to |