Index: src/mips/macro-assembler-mips.h |
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
index 9605038f88f86a8022f8a93eeb3da76f967cdda1..26bed6887b7bcb57c0af9433c9725570bf7465a0 100644 |
--- a/src/mips/macro-assembler-mips.h |
+++ b/src/mips/macro-assembler-mips.h |
@@ -797,6 +797,54 @@ class MacroAssembler: public Assembler { |
Register scratch2, |
Register scratch3); |
+ // 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); |
+ |
+ // 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. |
+ void LoadNumber(Register object, |
+ FPURegister dst, |
+ Register heap_number_map, |
+ Register scratch, |
+ Label* not_number); |
+ |
+ // Loads the number from object into double_dst in the double format. |
+ // Control will jump to not_int32 if the value cannot be exactly represented |
+ // by a 32-bit integer. |
+ // Floating point value in the 32-bit integer range that are not exact integer |
+ // won't be loaded. |
+ void LoadNumberAsInt32Double(Register object, |
+ DoubleRegister double_dst, |
+ Register heap_number_map, |
+ Register scratch1, |
+ Register scratch2, |
+ FPURegister double_scratch, |
+ Label* not_int32); |
+ |
+ // Loads the number from object into dst as a 32-bit integer. |
+ // Control will jump to not_int32 if the object cannot be exactly represented |
+ // by a 32-bit integer. |
+ // Floating point value in the 32-bit integer range that are not exact integer |
+ // won't be converted. |
+ void LoadNumberAsInt32(Register object, |
+ Register dst, |
+ Register heap_number_map, |
+ Register scratch1, |
+ Register scratch2, |
+ FPURegister double_scratch0, |
+ FPURegister double_scratch1, |
+ Label* not_int32); |
+ |
// Enter exit frame. |
// argc - argument count to be dropped by LeaveExitFrame. |
// save_doubles - saves FPU registers on stack, currently disabled. |
@@ -986,16 +1034,13 @@ class MacroAssembler: public Assembler { |
// Check to see if maybe_number can be stored as a double in |
// FastDoubleElements. If it can, store it at the index specified by key in |
- // the FastDoubleElements array elements. Otherwise jump to fail, in which |
- // case scratch2, scratch3 and scratch4 are unmodified. |
+ // the FastDoubleElements array elements. Otherwise jump to fail. |
void StoreNumberToDoubleElements(Register value_reg, |
Register key_reg, |
- // All regs below here overwritten. |
Register elements_reg, |
Register scratch1, |
Register scratch2, |
Register scratch3, |
- Register scratch4, |
Label* fail, |
int elements_offset = 0); |
@@ -1280,7 +1325,6 @@ class MacroAssembler: public Assembler { |
// Calls Abort(msg) if the condition cc is not satisfied. |
// Use --debug_code to enable. |
void Assert(Condition cc, BailoutReason reason, Register rs, Operand rt); |
- void AssertRegisterIsRoot(Register reg, Heap::RootListIndex index); |
void AssertFastElements(Register elements); |
// Like Assert(), but always enabled. |
@@ -1367,11 +1411,9 @@ class MacroAssembler: public Assembler { |
// Abort execution if argument is not a name, enabled via --debug-code. |
void AssertName(Register object); |
- // Abort execution if argument is not the root value with the given index, |
+ // Abort execution if reg is not the root value with the given index, |
// enabled via --debug-code. |
- void AssertRootValue(Register src, |
- Heap::RootListIndex root_value_index, |
- BailoutReason reason); |
+ void AssertIsRoot(Register reg, Heap::RootListIndex index); |
// --------------------------------------------------------------------------- |
// HeapNumber utilities. |