JDK-7101232 : Improve local scheduler
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs25,8,9,10
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2011-10-14
  • Updated: 2017-03-10
  • Resolved: 2017-03-10
Related Reports
Duplicate :  
Description
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

Comments
Mostly fixed by JDK-8134802.
10-03-2017

8-pool is an invalid affects version. Set 8 and hs25.
12-11-2013