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

Reply via email to