Mercurial > hg > truffle
annotate test/compiler/5091921/output6890943.txt @ 11825:463f51256c86
AMD64HotSpot: emit jump to IC miss handler directly instead of emitting it inside verfied_entry
for empty methods we emitted something like this if a inline cache is needed:
prefix:
00: < IC check >
...
0b: jne <ic_miss_call>
11: nop
...
verified_entry:
20: ret
ic_miss_call:
21: jmp <entry of runtime function>
when a method is deoptimized, HotSpot patches the verified_entry (0x20) with a
jump to a stub that handles call-sites that has been made non-entrant. since this jump
is 5 bytes long, it will overwrite ic_miss_call and blow up every caller that
calls this method via the unverified entry (prefix).
the fix is to emit the jump to the runtime function inside the unverfied entry:
prefix:
00: < IC check >
...
0b: je <verified_entry>
11: jeq <entry of runtime function>
16: nop
...
verified_entry:
20: ret
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Mon, 30 Sep 2013 09:32:18 +0200 |
parents | bad7ecd0b6ed |
children |
rev | line source |
---|---|
3345 | 1 Case #1: Yes 2 |
2 Case #2: Yes 2 | |
3 Case #3: Yes 1 | |
4 Case #4: Yes 0 | |
5 Case #5: No | |
6 Case #6: No | |
7 Case #7: Yes 6 | |
8 Case #8: Yes 6 | |
9 Case #9: No | |
10 Case #10: Yes 1 | |
11 Case #11: Yes 6 | |
12 Case #12: Yes 0 | |
13 Case #13: No | |
14 Case #14: Yes 22 | |
15 Case #15: Yes 1225 | |
16 Case #16: Yes 178 | |
17 Case #17: No | |
18 Case #18: Yes 1 | |
19 Case #19: Yes 7 | |
20 Case #20: Yes 2 | |
21 Case #21: Yes 1 | |
22 Case #22: No | |
23 Case #23: Yes 3 | |
24 Case #24: Yes 1 | |
25 Case #25: Yes 7 | |
26 Case #26: No | |
27 Case #27: Yes 2 | |
28 Case #28: Yes 4 | |
29 Case #29: Yes 2 | |
30 Case #30: Yes 1 | |
31 Case #31: Yes 2 | |
32 Case #32: Yes 20 | |
33 Case #33: Yes 161 | |
34 Case #34: Yes 48 | |
35 Case #35: No | |
36 Case #36: Yes 218 | |
37 Case #37: Yes 51 | |
38 Case #38: Yes 247 | |
39 Case #39: Yes 32 | |
40 Case #40: Yes 31 | |
41 Case #41: Yes 31 | |
42 Case #42: Yes 25 | |
43 Case #43: Yes 17 | |
44 Case #44: Yes 2 | |
45 Case #45: Yes 61 | |
46 Case #46: Yes 25 | |
47 Case #47: No | |
48 Case #48: No | |
49 Case #49: Yes 8 | |
50 Case #50: Yes 0 |