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