Closed Bug 563944 Opened 15 years ago Closed 14 years ago

Inline branchover labels reset too much optimizer state

Categories

(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect, P3)

Tracking

(Not tracked)

RESOLVED FIXED
Q3 11 - Serrano

People

(Reporter: edwsmith, Assigned: wmaddox)

References

Details

(Whiteboard: PACMAN)

Method inlining generally, and inlining fast paths for partly typed and untyped operators requires creating diamond-shape local control flow. This currently causes VarTracker and CSEFilter to completely reset their state, suppressing desireable optimizations in the surrounding code. bug 542905 discusses the problems with CSEFilter.
Depends on: 542905
Blocks: 561249, 562744
Flags: flashplayer-qrb+
Priority: -- → P3
Target Milestone: --- → flash10.2
Depends on: 564580
Whiteboard: PACMAN
Assignee: nobody → wmaddox
Suspend/Resume CSE around synthetic control flow diamonds: https://bugzilla.mozilla.org/attachment.cgi?id=471365&action=diff Propagate VarTracker state along forward branches: https://bugzilla.mozilla.org/attachment.cgi?id=468889&action=diff Comparing the performance of a stack of arithmetic inlining patches without the above, and with. I.e., '+' represents improvement due to vartracker and cse patches. Metric: time Dir: jsbench/ Crypt 4122 4125 3946 3956.5 4.3 4.1 + Euler 7996 8020 7864 7878 1.7 1.8 + FFT 7901 7951.5 7396 7430 6.4 6.6 ++ HeapSort 3227 3228 3245 3251.5 -0.6 -0.7 - LUFact 6165 6166.5 5936 5964 3.7 3.3 + Moldyn 8061 8070.5 7985 7985.5 0.9 1.1 + RayTracer 7606 7611 7454 7465 2.0 1.9 + SOR 36566 36639 36162 36164 1.1 1.3 + Series 9675 9682.5 9512 9519.5 1.7 1.7 + SparseMatmult 10510 10572 10649 10723 -1.3 -1.4 - Dir: jsbench/typed/ Crypt 1076 1076.5 1066 1066 0.9 1.0 + Euler 10438 10442 10272 10280.5 1.6 1.5 + FFT 4670 4681.5 4382 4391 6.2 6.2 ++ HeapSort 1600 1601.5 1653 1654.5 -3.3 -3.3 - LUFact 8274 8297.5 7917 7919 4.3 4.6 + Moldyn 4687 4695 4575 4589.5 2.4 2.2 + RayTracer 1377 1379 1335 1339 3.1 2.9 + SOR 24191 24216 23496 23521 2.9 2.9 + Series 8094 8099 8173 8173.5 -1.0 -0.9 - SparseMatmult 2507 2507.5 2505 2512.5 0.1 -0.2 Metric: v8 custom v8 normalized metric (hardcoded in the test) Dir: v8/ crypto 401 399.5 427 427 6.5 6.9 ++ deltablue 1694 1688.5 1714 1707.5 1.2 1.1 + earley-boyer 977 970.5 989 987 1.2 1.7 + raytrace 2714 2709.5 2768 2765 2.0 2.0 + richards 1017 1016 1036 1036 1.9 2.0 + Dir: v8/typed/ crypto 406 405.5 436 434 7.4 7.0 ++ deltablue 2399 2396.5 2408 2404.5 0.4 0.3 + earley-boyer 985 983 974 971.5 -1.1 -1.2 - raytrace 5957 5948 6062 6056 1.8 1.8 + richards 2056 2054.5 2058 2057 0.1 0.1 Dir: v8.5/js/ crypto 364 363.5 383 383 5.2 5.4 ++ deltablue 293 293 290 290 -1.0 -1.0 - earley-boyer 971 970 967 965.5 -0.4 -0.5 - raytrace 632 632 633 631.5 0.2 -0.1 regexp 79.4 79.2 80.1 80.0 0.9 1.0 richards 244 244 240 240 -1.6 -1.6 - splay 708 705.5 713 708 0.7 0.4 Dir: v8.5/optimized/ crypto 3526 3525.5 3529 3524.5 0.1 -0.0 deltablue 2844 2834 2852 2847.5 0.3 0.5 earley-boyer 981 980.5 976 971 -0.5 -1.0 raytrace 7189 7175 7310 7310 1.7 1.9 + regexp 79.4 79.4 80.2 80.1 1.0 0.9 + richards 3475 3473 3623 3619 4.3 4.2 + splay 5223 5193 5242 5217 0.4 0.5 Dir: v8.5/typed/ crypto 2173 2173 2183 2182 0.5 0.4 + deltablue 3157 3152.5 3164 3160 0.2 0.2 earley-boyer 975 969.5 981 979.5 0.6 1.0 raytrace 7203 7196 7296 7282 1.3 1.2 + regexp 78.4 78.3 80.4 80.2 2.6 2.4 + richards 3471 3469.5 3615 3615 4.1 4.2 + splay 882 881 885 883 0.3 0.2 + Dir: v8.5/untyped/ crypto 392 392 422 421 7.7 7.4 ++ deltablue 1710 1708 1716 1715 0.4 0.4 + earley-boyer 975 964.5 983 983 0.8 1.9 raytrace 2909 2902 2967 2962.5 2.0 2.1 + regexp 78.9 78.9 80 80.0 1.4 1.3 + richards 423 422.5 423 422.5 0 0 splay 841 840.5 855 854.5 1.7 1.7 +
Blocks: 515722
Dependent bugs fixed, closing.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Flags: flashplayer-bug+
You need to log in before you can comment on or make changes to this bug.