I think the change can be made smaller and simpler, see comments.


http://codereview.chromium.org/6812046/diff/1/src/v8globals.h
File src/v8globals.h (right):

http://codereview.chromium.org/6812046/diff/1/src/v8globals.h#newcode350
src/v8globals.h:350: explicit DoubleRepresentation(double x) {
memcpy(&bits, &x, sizeof(bits)); }
Leave as is, or use BitCast - we don't want yet a third way of doing
this.

http://codereview.chromium.org/6812046/diff/1/src/x64/code-stubs-x64.cc
File src/x64/code-stubs-x64.cc (right):

http://codereview.chromium.org/6812046/diff/1/src/x64/code-stubs-x64.cc#newcode1168
src/x64/code-stubs-x64.cc:1168: __ SmiOr(right, right, left);  // BIT_OR
is commutative.
Change to SmiOrAndJumpIfNotBothSmi(right, right, left, rcx), and leave
the functionality as is. The second time you reach this (after
LoadUnknownsAsSmis), you know that it will succeed, so no infinite loop.

http://codereview.chromium.org/6812046/diff/1/src/x64/code-stubs-x64.cc#newcode1245
src/x64/code-stubs-x64.cc:1245: {  // See if there were smi values
stored in HeapNumbers.
I would use LoadAsIntegers (really LoadUnknownsAsIntegers), followed by
SmiTag(), for simplicity's sake.

If you really want to avoid the extra smi-tagging, then I would write
the LoadUnknownsAsSmis function, and call that.  But this code is not
that fast anyway - at most you could make a ToDo for this optimization.

http://codereview.chromium.org/6812046/

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

Reply via email to