Reviewers: Søren Gjesse, Mads Ager, Erik Corry, rodolph,
Message:
the patch set 7 makes the change by creating a ToBooleanStub stub in
codegen-arm.cc.
Further, the JITed code has been organized to check for the HeapNumbers
ahead of
the others, since in raytrace benchmark (in v8 suite) that's the most
frequently
taken path (after the current inlined smi, boolean, undefined).
Also verified that there is no noticeable performance difference by
inlining the
HeapNumber related code, hence preferred to keep it within the Stub.
This change uses PopToR0() instead of PopToRegister() so that "tos" is in r0
(needed by the ABI for the stub calls)
The main performance improvement is in the raytrace test (in v8 suite),
which
accounted for most of the earlier runtime calls to the ToBool.
Description:
Upgraded the CodeGenerator::ToBoolean() function in the ARM backend to use
complete JIT code generation and not make runtime calls to ToBool (when VFP
is
enabled).
This change also includes the vcmp VFP instruction that supports a constant
0.0
as the second operand.
Also, some of the earlier patches in this change included:
(i) a customized version of boolean conversion, called kToBoolSlowPart in
the
runtime that does not need to implement the true/false/Smi condition checks.
(ii) provides a simplified implementation of the Heap::HeapNumberToBoolean()
function, since in JavaScript floating point is always double precision.
Please review this at http://codereview.chromium.org/3068001/show
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/arm/assembler-arm.h
M src/arm/assembler-arm.cc
M src/arm/codegen-arm.cc
M src/arm/disasm-arm.cc
M src/arm/simulator-arm.cc
M src/codegen.h
M src/globals.h
M src/objects.h
M src/objects.cc
M src/runtime.h
M src/runtime.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev