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

Improve local scheduler

XMLWordPrintable

    • generic
    • generic

      LCM place all loads at the beginning of the loop and then use loaded values. And loaded values are spilled on stack since there are not enough registers :

      java -server ChecksumTime 10000

      281 B19: # B19 B20 <- B18 B19 Loop: B19-B19 inner main of N145 Freq: 607.991
      281 MOV ECX,[ESP + #4]
      285 MOVZX8 ECX,[ECX + #12 + EBX] # ubyte -> int
      28a MOV [ESP + #56],ECX
      28e MOV EDI,[ESP + #4]
      292 MOVZX8 ECX,[EDI + #13 + EBX] # ubyte -> int
      297 MOV [ESP + #96],ECX
      29b MOVZX8 ECX,[EDI + #14 + EBX] # ubyte -> int
      2a0 MOV [ESP + #100],ECX
      2a4 MOVZX8 ECX,[EDI + #27 + EBX] # ubyte -> int
      2a9 MOV [ESP + #12],ECX
      2ad MOVZX8 ECX,[EDI + #26 + EBX] # ubyte -> int
      2b2 MOV [ESP + #16],ECX
      2b6 MOVZX8 ECX,[EDI + #25 + EBX] # ubyte -> int
      2bb MOV [ESP + #20],ECX
      2bf MOVZX8 ECX,[EDI + #24 + EBX] # ubyte -> int
      2c4 MOV [ESP + #24],ECX
      2c8 MOVZX8 ECX,[EDI + #23 + EBX] # ubyte -> int
      2cd MOV [ESP + #28],ECX
      2d1 MOVZX8 ECX,[EDI + #22 + EBX] # ubyte -> int
      2d6 MOV [ESP + #32],ECX
      2da MOVZX8 ECX,[EDI + #21 + EBX] # ubyte -> int
      2df MOV [ESP + #36],ECX
      2e3 MOVZX8 ECX,[EDI + #20 + EBX] # ubyte -> int
      2e8 MOV [ESP + #40],ECX
      2ec MOVZX8 ECX,[EDI + #19 + EBX] # ubyte -> int
      2f1 MOV [ESP + #44],ECX
      2f5 MOVZX8 ECX,[EDI + #18 + EBX] # ubyte -> int
      2fa MOV [ESP + #48],ECX
      2fe MOVZX8 EAX,[EDI + #17 + EBX] # ubyte -> int
      303 MOVZX8 ECX,[EDI + #16 + EBX] # ubyte -> int
      308 MOV EDX,EDI
      30a MOVZX8 EDX,[EDX + #15 + EBX] # ubyte -> int
      30f MOV EDI,[ESP + #8]
      313 ADD EDI,[ESP + #56]
      317 MOV [ESP + #8],EDI
      31b ADD EBP,EDI
      31d MOV EDI,[ESP + #96]
      321 ADD EDI,[ESP + #8]
      325 MOV [ESP + #96],EDI
      329 ADD EBP,EDI
      32b MOV EDI,[ESP + #100]
      32f ADD EDI,[ESP + #96]
      333 ADD EBP,EDI
      335 ADD EDX,EDI
      337 ADD EBP,EDX
      339 ADD ECX,EDX
      33b ADD EBP,ECX
      33d ADD EAX,ECX
      33f ADD EBP,EAX
      341 MOV ECX,[ESP + #48]
      345 ADD ECX,EAX
      347 ADD EBP,ECX
      349 MOV EDI,[ESP + #44]
      34d ADD EDI,ECX
      34f ADD EBP,EDI
      351 MOV ECX,[ESP + #40]
      355 ADD ECX,EDI
      357 ADD EBP,ECX
      359 MOV EDI,[ESP + #36]
      35d ADD EDI,ECX
      35f ADD EBP,EDI
      361 MOV ECX,[ESP + #32]
      365 ADD ECX,EDI
      367 ADD EBP,ECX
      369 MOV EDI,[ESP + #28]
      36d ADD EDI,ECX
      36f ADD EBP,EDI
      371 MOV ECX,[ESP + #24]
      375 ADD ECX,EDI
      377 ADD EBP,ECX
      379 MOV EDI,[ESP + #20]
      37d ADD EDI,ECX
      37f ADD EBP,EDI
      381 MOV ECX,[ESP + #16]
      385 ADD ECX,EDI
      387 ADD EBP,ECX
      389 MOV EAX,[ESP + #12]
      38d ADD EAX,ECX
      38f MOV [ESP + #8],EAX
      393 MOV ECX,[ESP + #0]
      396 MOV [ECX + #8],EAX ! Field Adler32J.adler
      399 ADD EBP,EAX
      39b ADD EBX,#16
      39e CMP EBX,ESI
      3a0 Jl B19 # Loop end P=0.998358 C=257792.000000

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

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: