LGTM
http://codereview.chromium.org/987003/diff/5001/6002 File src/ia32/codegen-ia32.cc (right): http://codereview.chromium.org/987003/diff/5001/6002#newcode6525 src/ia32/codegen-ia32.cc:6525: __ and_(operand.reg(), ~kSmiTagMask); // Remove inverted smi-tag. ASSERT_EQ(0, kSmiTag). Seems wasteful to use a 32-bit immediate to clear one bit. How about: lea(operand.reg(), Operand(operand.reg(), kSmiTagMask)); not(operand.reg()); (i.e., set it before not'ing and use lea to reduce size). That, or use and_b (but that's a partial register write, I'm not sure that's good for efficiency). http://codereview.chromium.org/987003/diff/5001/6002#newcode6543 src/ia32/codegen-ia32.cc:6543: __ and_(answer.reg(), ~kSmiTagMask); // Remove inverted smi-tag. Ditto here. http://codereview.chromium.org/987003/diff/5001/6002#newcode6571 src/ia32/codegen-ia32.cc:6571: } else { If operand.number_info().IsInteger32, could that also be propagated? http://codereview.chromium.org/987003 -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
