|
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.
Committed: http://code.google.com/p/v8/source/detail?r=6030
Total comments: 1
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+226 lines, -57 lines) |
Patch |
|
M |
src/arm/ic-arm.cc
|
View
|
|
2 chunks |
+7 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/full-codegen.h
|
View
|
|
2 chunks |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/ia32/assembler-ia32.h
|
View
|
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/ia32/code-stubs-ia32.h
|
View
|
|
2 chunks |
+3 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/ia32/code-stubs-ia32.cc
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/ia32/full-codegen-ia32.cc
|
View
|
1
|
17 chunks |
+106 lines, -35 lines |
0 comments
|
Download
|
|
M |
src/ia32/ic-ia32.cc
|
View
|
|
2 chunks |
+51 lines, -3 lines |
1 comment
|
Download
|
|
M |
src/ia32/lithium-codegen-ia32.cc
|
View
|
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/ic.h
|
View
|
|
2 chunks |
+4 lines, -1 line |
0 comments
|
Download
|
|
M |
src/ic.cc
|
View
|
|
3 chunks |
+16 lines, -7 lines |
0 comments
|
Download
|
|
M |
src/type-info.cc
|
View
|
|
3 chunks |
+9 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/x64/ic-x64.cc
|
View
|
|
2 chunks |
+5 lines, -3 lines |
0 comments
|
Download
|
Total messages: 4 (0 generated)
|