-
Enhancement
-
Resolution: Won't Fix
-
P4
-
None
-
hs19, 9, 10
-
x86
-
generic
% cat .hotspot_compiler
print Decompiler::decodeConstantPool
% /java/re/jdk/7/latest/binaries/solaris-amd64/fastdebug/bin/java -d64 -XX:-UseCompressedOops -XX:+PrintCompilation -Xbatch -XX:CICompilerCount=1 -Xmx128M -jar GCBasher.jar -time:300000
...
010 B1: # B71 B2 <- BLOCK HEAD IS JUNK Freq: 1
010 # stack bang
pushq rbp
subq rsp, #64 # Create frame
01c movq [rsp + #0], RSI # spill
020 movq RSI, [RSI + #32 (8-bit)] # ptr ! Field Decompiler.data
024 testq RSI, RSI # ptr
027 je B71 P=0.000001 C=-1.000000
027
02d B2: # B77 B3 <- B1 Freq: 0.999999
02d movq RBP, [rsp + #0] # spill
031 nop # 2 bytes pad for loops and calls
033 call,static Fastparser::readUnsignedShort
# Decompiler::decodeConstantPool @ bci:5 L[0]=RBP L[1]=_ L[2]=_ L[3]=_ L[4]=_ STK[0]=RBP
# OopMap{rbp=Oop [0]=Oop off=56}
038
038 B3: # B60 B4 <- B2 Freq: 0.999979
# Block is sole successor of call
038 movl RBP, RAX # spill
03a cmpl RAX, #131072 # unsigned
040 jnbe,u B60 P=0.000001 C=-1.000000
040
32bit VM produce more compact code:
00c B1: # B71 B2 <- BLOCK HEAD IS JUNK Freq: 1
00c # stack bang
PUSHL EBP
SUB ESP,56 # Create frame
01a MOV EBP,ECX
01c MOV ECX,[ECX + #16] ! Field Decompiler.data
01f TEST ECX,ECX
021 Je B71 P=0.000001 C=-1.000000
021
027 B2: # B77 B3 <- B1 Freq: 0.999999
027 CALL,static Fastparser::readUnsignedShort
# Decompiler::decodeConstantPool @ bci:5 L[0]=EBP L[1]=_ L[2]=_ L[3]=_ L[4]=_ STK[0]=EBP
# OopMap{ebp=Oop off=44}
02c
02c B3: # B59 B4 <- B2 Freq: 0.999979
# Block is sole successor of call
02c MOV ESI, Thread::current()
034 MOV EBX,EAX
036 CMPu EAX,#262144
03c Jnbe,u B59 P=0.000001 C=-1.000000
03c
print Decompiler::decodeConstantPool
% /java/re/jdk/7/latest/binaries/solaris-amd64/fastdebug/bin/java -d64 -XX:-UseCompressedOops -XX:+PrintCompilation -Xbatch -XX:CICompilerCount=1 -Xmx128M -jar GCBasher.jar -time:300000
...
010 B1: # B71 B2 <- BLOCK HEAD IS JUNK Freq: 1
010 # stack bang
pushq rbp
subq rsp, #64 # Create frame
01c movq [rsp + #0], RSI # spill
020 movq RSI, [RSI + #32 (8-bit)] # ptr ! Field Decompiler.data
024 testq RSI, RSI # ptr
027 je B71 P=0.000001 C=-1.000000
027
02d B2: # B77 B3 <- B1 Freq: 0.999999
02d movq RBP, [rsp + #0] # spill
031 nop # 2 bytes pad for loops and calls
033 call,static Fastparser::readUnsignedShort
# Decompiler::decodeConstantPool @ bci:5 L[0]=RBP L[1]=_ L[2]=_ L[3]=_ L[4]=_ STK[0]=RBP
# OopMap{rbp=Oop [0]=Oop off=56}
038
038 B3: # B60 B4 <- B2 Freq: 0.999979
# Block is sole successor of call
038 movl RBP, RAX # spill
03a cmpl RAX, #131072 # unsigned
040 jnbe,u B60 P=0.000001 C=-1.000000
040
32bit VM produce more compact code:
00c B1: # B71 B2 <- BLOCK HEAD IS JUNK Freq: 1
00c # stack bang
PUSHL EBP
SUB ESP,56 # Create frame
01a MOV EBP,ECX
01c MOV ECX,[ECX + #16] ! Field Decompiler.data
01f TEST ECX,ECX
021 Je B71 P=0.000001 C=-1.000000
021
027 B2: # B77 B3 <- B1 Freq: 0.999999
027 CALL,static Fastparser::readUnsignedShort
# Decompiler::decodeConstantPool @ bci:5 L[0]=EBP L[1]=_ L[2]=_ L[3]=_ L[4]=_ STK[0]=EBP
# OopMap{ebp=Oop off=44}
02c
02c B3: # B59 B4 <- B2 Freq: 0.999979
# Block is sole successor of call
02c MOV ESI, Thread::current()
034 MOV EBX,EAX
036 CMPu EAX,#262144
03c Jnbe,u B59 P=0.000001 C=-1.000000
03c