Changes made.
http://codereview.chromium.org/2862004/diff/4001/5001 File src/x64/codegen-x64.cc (right): http://codereview.chromium.org/2862004/diff/4001/5001#newcode9940 src/x64/codegen-x64.cc:9940: __ jmp(&load_rax); On 2010/06/16 07:48:43, Lasse Reichstein wrote:
Maybe convert this jmp to JumpIfNotSmi(rax, &load_rax_heapnumber), to
utilize
the fallthrough.
But then we might as well duplicate the load of rax's value, it's just
one
instruction.
It's slightly larger, but looks like it should have better "flow".
Do we sometimes know that not both can be smis?
Done. We don't duplicate the load, since we can't use the fall through in either place. We do often know that they are not both smis. We can specialize for that in a separate change. http://codereview.chromium.org/2862004/diff/4001/5001#newcode9962 src/x64/codegen-x64.cc:9962: __ cmpq(FieldOperand(rax, HeapObject::kMapOffset), rcx); On 2010/06/16 07:48:43, Lasse Reichstein wrote:
rcx might not have been loaded here if rdx was a Smi. Put the LoadRoot before the JumpIfSmi(rdx...). It will be unused if both operands are smis, but most of the time we
shouldn't
be converting to double if both are smis anyway.
This might be the cause of going to runtime more, since we
misrecognize the
HeapNumber.
Done. http://codereview.chromium.org/2862004/diff/4001/5001#newcode9963 src/x64/codegen-x64.cc:9963: __ j(equal, &load_float_rax); On 2010/06/16 07:48:43, Lasse Reichstein wrote:
Why not put load_float_rax here, with a jmp to done after it, instead
of a
conditional jump followed by an unconditional one?
Done. http://codereview.chromium.org/2862004/diff/4001/5001#newcode9964 src/x64/codegen-x64.cc:9964: __ jmp(not_numbers); // Argument in eax is not a number. On 2010/06/16 07:48:43, Lasse Reichstein wrote:
eax->rax
Done. http://codereview.chromium.org/2862004/diff/4001/5001#newcode10409 src/x64/codegen-x64.cc:10409: if (static_operands_type_.IsSmi()) { On 2010/06/16 07:48:43, Lasse Reichstein wrote:
If we have HasSmiCodeInStub, this case should have been handled, and
otherwise
we wouldn't call the stub at all with two smis. Could we check if this
case is
ever hit?
Yes, it should never be hit. Changed to an assert. http://codereview.chromium.org/2862004/show -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
