Mercurial > hg > graal-compiler
view .hgignore @ 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 | ec7aad9dfc47 |
children | ee3b959c81b8 |
line wrap: on
line source
^mx/env ^mx/checkstyle-timestamps ^mx/eclipseinit.timestamp ^mx/netbeansinit.timestamp ^mx/eclipse-launches ^mx/ecj.jar ^mx/includes ^build/ ^build-nograal/ ^dist/ ^java/ ^lib/ ^jdk1.(7|8).0 ^java64/ ^work/ \.checkstyle$ \.classpath \.factorypath \.externalToolBuilders \.project \.settings/ \.metadata/ ~$ .gdb_history \.csv$ \.iml$ \.swp$ \.class$ \.log$ \.bak$ \.aux$ \.pdf$ \.dot$ \.pyc$ \.hprof$ \javafilelist.txt$ \.hprof\.txt$ ^graal/.*/build.xml ^graal/.*/nbproject/ dist ^doc/.*/dot_temp_ ^doc/doxygen/.*$ \.orig$ output\.txt$ output\.cfg$ \.cfg /nbproject/private/ ^graal/hotspot/java$ ^scratch/ ^test-output/ scratch/ bin/ src_gen/ ^local/ ^src/share/tools/hsdis/build/ ^src/share/tools/IdealGraphVisualizer/[a-zA-Z0-9]*/build/ ^src/share/tools/IdealGraphVisualizer/build/ ^src/share/tools/IdealGraphVisualizer/dist/ ^visualizer/[a-zA-Z0-9]*/build/ ^visualizer/build/ ^visualizer/dist/ ^visualizer/nbplatform/ ^src/share/tools/IdealGraphVisualizer/nbplatform/ ^.hgtip .DS_Store javadoc/ .idea/ ^cscope.out ^tags syntax: glob *.bgv core.* *.jar *.jar.* eclipse-build.xml rebuild-launch.out coverage jacoco.exec workingsets.xml .buildbot/ graal.options