Thank you for the comments, Soeren and Rodolph. I have uploaded a new version,
please have another look.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc
File src/arm/code-stubs-arm.cc (right):

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode406
src/arm/code-stubs-arm.cc:406: static void
LoadNumberAsInteger(MacroAssembler* masm,
Done. I renamed the function to ConvertNumberToInt32 and updated the
comment, including a reference to the specification.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode638
src/arm/code-stubs-arm.cc:638: CpuFeatures::Scope scope(VFP3);
Done, see comment below.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode639
src/arm/code-stubs-arm.cc:639: __ vldr(double_scratch,
FieldMemOperand(object, HeapNumber::kValueOffset));
I decided to use two ldr instructions to avoid putting constraints on
the scratch registers. If this is a major performance issue, I can
change it to ldrd.

This way the code is also safe for big-endian floating points, although
that may be less relevant.

Either way the function does not require VFP anymore.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode643
src/arm/code-stubs-arm.cc:643: // sign, exponent and mantissa.
On 2011/03/10 14:36:44, Rodolph Perfetta wrote:
the and and mov could be rewritten as a Ubfx

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode646
src/arm/code-stubs-arm.cc:646: __ sub(dst, dst, Operand(1023));
On 2011/03/10 14:20:30, Søren Gjesse wrote:
1023 -> HeapNumber::kExponentBias

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode652
src/arm/code-stubs-arm.cc:652: __ sub(dst, dst, Operand(31));
On 2011/03/10 14:20:30, Søren Gjesse wrote:
You could combine this sub with the one before subtracting the bias.

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode653
src/arm/code-stubs-arm.cc:653: __ cmp(dst, Operand(53));
Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode678
src/arm/code-stubs-arm.cc:678: // scratch3 = 32 - scratch3.
On 2011/03/10 14:36:44, Rodolph Perfetta wrote:
__ rsb(scratch3, scratch3, Operand(32), SetCC) can replace all the
instruction
below

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode684
src/arm/code-stubs-arm.cc:684: // Negate scratch3.
On 2011/03/10 14:36:44, Rodolph Perfetta wrote:
__ rsb(scratch3, scratch3, Operand(0)) will neagete scratch3

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode693
src/arm/code-stubs-arm.cc:693: __ bind(&neg_shift);
On 2011/03/10 14:20:30, Søren Gjesse wrote:
neg_shift -> shift_done?

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode696
src/arm/code-stubs-arm.cc:696: // Restore sign if necessary.
On 2011/03/10 14:36:44, Rodolph Perfetta wrote:
__ cmp(sign, Operand(0));

Done.

http://codereview.chromium.org/6658034/diff/2001/src/arm/code-stubs-arm.cc#newcode697
src/arm/code-stubs-arm.cc:697: __ tst(sign, sign);
On 2011/03/10 14:36:44, Rodolph Perfetta wrote:
rsb again here.

Done.

http://codereview.chromium.org/6658034/

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to