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.
On 2010/03/17 07:10:39, Lasse Reichstein wrote:
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).

Good point. I'll go for your first suggestion using lea.

http://codereview.chromium.org/987003/diff/5001/6002#newcode6543
src/ia32/codegen-ia32.cc:6543: __ and_(answer.reg(), ~kSmiTagMask);  //
Remove inverted smi-tag.
On 2010/03/17 07:10:39, Lasse Reichstein wrote:
Ditto here.

Done.

http://codereview.chromium.org/987003/diff/5001/6002#newcode6571
src/ia32/codegen-ia32.cc:6571: } else {
On 2010/03/17 07:10:39, Lasse Reichstein wrote:
If operand.number_info().IsInteger32, could that also be propagated?

Done.

http://codereview.chromium.org/987003

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

Reply via email to