http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-arm.cc File src/arm/lithium-arm.cc (right):
http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-arm.cc#newcode1242 src/arm/lithium-arm.cc:1242: // TODO(karlklose) The fixed register allocation On 2011/01/13 08:28:38, Søren Gjesse wrote:
Please open a bug to track this, and change to TODO(number).
Done. http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-codegen-arm.cc File src/arm/lithium-codegen-arm.cc (right): http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-codegen-arm.cc#newcode884 src/arm/lithium-codegen-arm.cc:884: const int32_t kTwoHighestBits = 3<<30; I have created a TrySmiTag instruction in the macro assembler to abstract over this code. http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-codegen-arm.cc#newcode885 src/arm/lithium-codegen-arm.cc:885: __ and_(scratch, left, Operand(kTwoHighestBits)); s.a. http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-codegen-arm.cc#newcode888 src/arm/lithium-codegen-arm.cc:888: __ b(eq, &deoptimize); s.a. http://codereview.chromium.org/6164005/diff/1/src/arm/lithium-codegen-arm.cc#newcode897 src/arm/lithium-codegen-arm.cc:897: GenericBinaryOpStub stub(Token::DIV, OVERWRITE_LEFT, left, right); On 2011/01/13 08:28:38, Søren Gjesse wrote:
The LDivI instruction is not marked as call which means that it will
not spill
registers to the stack. Therefore it is not safe to call a stub. It
needs to be
called from deferred code and marked with
"RecordSafepointWithRegisters". As the
GenericBinaryOpStub might touch floating point registers as well we
need to have
a safepoint with both registers and doubles.
Done. http://codereview.chromium.org/6164005/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
