LGTM.
http://codereview.chromium.org/601080/diff/8001/9001 File src/ia32/codegen-ia32.cc (right): http://codereview.chromium.org/601080/diff/8001/9001#newcode6478 src/ia32/codegen-ia32.cc:6478: if (!receiver_.is(eax)) { These are pretty hairy to reverse engineer. I think two simple comments help: if (!receiver_.is(eax)) { // Register eax is available for key. ... } else if (!key_.is(edx)) { // Register edx is available for receiver. ... } ... http://codereview.chromium.org/601080/diff/8001/9001#newcode6798 src/ia32/codegen-ia32.cc:6798: Variable* var = expression_->AsVariableProxy()->AsVariable(); It's a separate change, but var is always NULL and is_global is always false. http://codereview.chromium.org/601080/diff/8001/9006 File src/ia32/ic-ia32.cc (right): http://codereview.chromium.org/601080/diff/8001/9006#newcode266 src/ia32/ic-ia32.cc:266: __ mov(eax, ecx); I think this code can be streamlined a bit (as a TODO) if you allow eax to hold values other than the key (obviously preserving the key in a known place). For example, you might eliminate some moves on the fast path like the one just above. http://codereview.chromium.org/601080/diff/8001/9004 File src/ia32/virtual-frame-ia32.cc (right): http://codereview.chromium.org/601080/diff/8001/9004#newcode932 src/ia32/virtual-frame-ia32.cc:932: if (!key.is_register() || !key.reg().is(edx)) { // Register edx is available for receiver. http://codereview.chromium.org/601080/diff/8001/9004#newcode935 src/ia32/virtual-frame-ia32.cc:935: } else if (!receiver.is_register() || !receiver.reg().is(eax)) { // Register eax is available for key. http://codereview.chromium.org/601080 -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
