As we discussed, it might be good to try to avoid calling to number via the INC builtin, since we know we've called it. We should also assess whether the code growth due to the slow case path is worth it.
http://codereview.chromium.org/56151/diff/1007/8 File src/codegen-ia32.cc (right): http://codereview.chromium.org/56151/diff/1007/8#newcode4699 Line 4699: bool target_size) How can this be a bool? Aren't the possible target sizes 0, 1, or 2? http://codereview.chromium.org/56151/diff/1007/8#newcode4721 Line 4721: // Undo the optimistic smi increment. "smi increment or decrement"? "smi operation"? http://codereview.chromium.org/56151/diff/1007/8#newcode4757 Line 4757: // by a new register explicitly, to optimize the fast case. Backed by a register until spilled, but it doesn't seem important to mention it here. http://codereview.chromium.org/56151/diff/1007/8#newcode4785 Line 4785: // old_value must be a register here, so that it is spilled by any call. This is confusing. It's not that we need it to be spilled by a call, it's that it can't be a constant or copy because we (might) modify it and it's below the water mark for the deferred code exit. Since something weird is (intentionally) happening here we should be really explicit about what it is: we are not allowed to modify constants and copies below the water mark on deferred exit frames. http://codereview.chromium.org/56151 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
