annotate make/solaris/platform_amd64.gcc @ 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 a49a647afe9a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 os_family = solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
2
a61af66fc99e Initial load
duke
parents:
diff changeset
3 arch = x86
a61af66fc99e Initial load
duke
parents:
diff changeset
4
a61af66fc99e Initial load
duke
parents:
diff changeset
5 arch_model = x86_64
a61af66fc99e Initial load
duke
parents:
diff changeset
6
a61af66fc99e Initial load
duke
parents:
diff changeset
7 os_arch = solaris_x86
a61af66fc99e Initial load
duke
parents:
diff changeset
8
a61af66fc99e Initial load
duke
parents:
diff changeset
9 os_arch_model = solaris_x86_64
a61af66fc99e Initial load
duke
parents:
diff changeset
10
a61af66fc99e Initial load
duke
parents:
diff changeset
11 lib_arch = amd64
a61af66fc99e Initial load
duke
parents:
diff changeset
12
a61af66fc99e Initial load
duke
parents:
diff changeset
13 compiler = gcc
a61af66fc99e Initial load
duke
parents:
diff changeset
14
a61af66fc99e Initial load
duke
parents:
diff changeset
15 sysdefs = -DSOLARIS -D_GNU_SOURCE -DAMD64