Index: src/arm/macro-assembler-arm.h |
diff --git a/src/arm/macro-assembler-arm.h b/src/arm/macro-assembler-arm.h |
index cf2f0457523a2e4fafc5a16f06f5f3fa235e7a1e..9fdbabd2686e833b8eace746e0f4d1965fddec78 100644 |
--- a/src/arm/macro-assembler-arm.h |
+++ b/src/arm/macro-assembler-arm.h |
@@ -933,17 +933,6 @@ class MacroAssembler: public Assembler { |
Register scratch1, |
SwVfpRegister scratch2); |
- // Convert the HeapNumber pointed to by source to a 32bits signed integer |
- // dest. If the HeapNumber does not fit into a 32bits signed integer branch |
- // to not_int32 label. If VFP3 is available double_scratch is used but not |
- // scratch2. |
- void ConvertToInt32(Register source, |
- Register dest, |
- Register scratch, |
- Register scratch2, |
- DwVfpRegister double_scratch, |
- Label *not_int32); |
- |
// Check if a double can be exactly represented as a signed 32-bit integer. |
// Z flag set to one if true. |
void TestDoubleIsInt32(DwVfpRegister double_input, |
@@ -965,26 +954,34 @@ class MacroAssembler: public Assembler { |
Label* done, |
Label* exact); |
- // Helper for EmitECMATruncate. |
- // This will truncate a floating-point value outside of the signed 32bit |
- // integer range to a 32bit signed integer. |
- // Expects the double value loaded in input_high and input_low. |
- // Exits with the answer in 'result'. |
- // Note that this code does not work for values in the 32bit range! |
- void EmitOutOfInt32RangeTruncate(Register result, |
- Register input_high, |
- Register input_low, |
- Register scratch); |
+ // Performs a truncating conversion of a heap floating point number as used by |
+ // the JS bitwise operations. See ECMA-262 9.5: ToInt32. |
+ // Exits with 'result' holding the answer. |
+ void ECMAConvertNumberToInt32(Register source, |
+ Register result, |
+ Register scratch, |
+ Register input_high, |
+ Register input_low, |
+ DwVfpRegister double_scratch1, |
+ DwVfpRegister double_scratch2); |
// 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, |
- DwVfpRegister double_input, |
- DwVfpRegister double_scratch, |
+ void ECMAToInt32VFP(Register result, |
+ DwVfpRegister double_input, |
+ DwVfpRegister double_scratch, |
+ Register scratch, |
+ Register input_high, |
+ Register input_low); |
+ |
+ // 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. |
+ void ECMAToInt32NoVFP(Register result, |
Register scratch, |
- Register scratch2, |
- Register scratch3); |
+ Register input_high, |
+ Register input_low); |
// Count leading zeros in a 32 bit word. On ARM5 and later it uses the clz |
// instruction. On pre-ARM5 hardware this routine gives the wrong answer |
@@ -1365,6 +1362,15 @@ class MacroAssembler: public Assembler { |
// it. See the implementation for register usage. |
void JumpToHandlerEntry(); |
+ // Helper for ECMAToInt32VFP and ECMAToInt32NoVFP. |
ulan
2013/03/11 15:11:03
Description of preconditions for inputs would be h
Rodolph Perfetta
2013/03/12 11:24:45
Done.
|
+ void ECMAToInt32Tail(Register result, |
+ Register scratch, |
+ Register input_high, |
+ Register input_low, |
+ Label* out_of_range, |
+ Label* negate, |
+ Label* done); |
+ |
// Compute memory operands for safepoint stack slots. |
static int SafepointRegisterStackIndex(int reg_code); |
MemOperand SafepointRegisterSlot(Register reg); |