Reviewers: Vitaly, Kasper Lund, Description: Second attempt: Improve our type feedback by recogizining never-executed IC calls for binary operations.
This is an improved version of my earlier change r5970. It avoids degrading the
non-optimized code. Initially we emit a conditional branch that is either always- or never-taken after a smi-check (depending on whether we test for smi for for non-smi) Since test-eax always sets the carry-flag to 0 we use jump-if-carry and jump-if-not-carry. The first invocation of the stub patches a jc with a jz and jnc with a jnz-instruction so that the code looks exactly as it was without patching. The only difference is the test- or nop-instruction after the IC-call. Please review this at http://codereview.chromium.org/5763004/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/ic-arm.cc M src/full-codegen.h M src/ia32/assembler-ia32.h M src/ia32/code-stubs-ia32.h M src/ia32/code-stubs-ia32.cc M src/ia32/full-codegen-ia32.cc M src/ia32/ic-ia32.cc M src/ia32/lithium-codegen-ia32.cc M src/ic.h M src/ic.cc M src/type-info.cc M src/x64/ic-x64.cc -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
