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
