Mercurial > hg > graal-compiler
view GRAAL_AUTHORS @ 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 | e4019a78c938 |
children |
line wrap: on
line source
Gilles Duboscq (gdub) Peter Hofer Christian Haeubl (chaeubl) Christian Humer (chumer) Roland Schatz Doug Simon (dnsimon) Lukas Stadler (lstadler) Alexander Stipsits Katrin Strassl Christian Wimmer (cwimmer) Andreas Woess (aw) Thomas Wuerthinger (thomaswue)