Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6958831

64-bit VM RA spills debug info value from stack into register

    XMLWordPrintable

Details

    • Enhancement
    • Resolution: Won't Fix
    • P4
    • None
    • hs19, 9, 10
    • hotspot
    • x86
    • generic

    Description

      % 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

      Attachments

        Activity

          People

            Unassigned Unassigned
            kvn Vladimir Kozlov
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: