-
Enhancement
-
Resolution: Unresolved
-
P4
-
19
Profiling based inlining for three receivers, there are 7.6% virtual call sites which have 3 receiver types in specjbb2015, it's able to add trimorphic inlining support:
1 receiver: 3605.0/6523.0 (55.5%)
2 receiver: 1098.0/6523.0 (16.8%)
3 receiver: 500.0/6523.0 (7.6%)
4 receiver: 313.0/6523.0 (4.7%)
5 receiver: 256.0/6523.0 (3.9%)
6 receiver: 258.0/6523.0 (3.9%)
7 receiver: 251.0/6523.0 (3.8%)
8 receiver: 233.0/6523.0 (3.5%)
Some benchmark result:
SpecJBB 2015:
+UseTrimorphicInlining
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 90677, max-jOPS = 50062, critical-jOPS = 38306
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 85156, max-jOPS = 14304, critical-jOPS = 14304
-UseTrimorphicInlining
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 85156, max-jOPS = 85821, critical-jOPS = 22032
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 88990, max-jOPS = 49041, critical-jOPS = 42515
Nexmark:
+UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |1.8 M |16.08 |113 K |
|q1 |1.8 M |15.9 |114 K |
|q2 |1.9 M |15.91 |119 K |
|q3 |1.7 M |17.15 |102 K |
|q4 |1.6 M |20.69 |80 K |
|q5 |271 K |22.46 |12 K |
|q7 |144 K |23.4 |6.1 K |
|q8 |1.6 M |25.13 |66 K |
|q9 |143 K |13.16 |10 K |
|q10 |567 K |8.81 |64 K |
|q11 |246 K |11.77 |20 K |
|q12 |81 K |16.93 |4.7 K |
|q13 |1.2 M |19.79 |61 K |
|q14 |1.7 M |19.58 |88 K |
|q15 |597 K |20.5 |29 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.08 |253 K |
|q1 |1.9 M |8.08 |245 K |
|q2 |2.1 M |8.03 |271 K |
|q3 |1.8 M |9.41 |201 K |
|q4 |304 K |11.4 |26 K |
|q5 |334 K |11.49 |29 K |
|q7 |11 K |1.53 |7.6 K |
|q8 |1.7 M |11.86 |150 K |
|q9 |192 K |11.74 |16 K |
|q10 |613 K |8.04 |76 K |
|q11 |424 K |10.29 |41 K |
|q12 |1 M |12.92 |81 K |
|q13 |1.2 M |8.04 |161 K |
|q14 |1.5 M |8.02 |198 K |
|q15 |684 K |8.68 |78 K |
+-------------------+-------------------+-------------------+-------------------+
-UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |1.6 M |19.85 |82 K |
|q1 |1.4 M |20.14 |72 K |
|q2 |2.1 M |20.28 |106 K |
|q3 |1.3 M |19.19 |69 K |
|q4 |270 K |22.83 |11 K |
|q5 |308 K |23.19 |13 K |
|q7 |159 K |24.23 |6.5 K |
|q8 |1.5 M |23.41 |65 K |
|q9 |171 K |23.18 |7.3 K |
|q10 |527 K |19.58 |26 K |
|q11 |344 K |21.83 |15 K |
|q12 |815 K |23.61 |34 K |
|q13 |1 M |19.3 |53 K |
|q14 |1.2 M |19.41 |62 K |
|q15 |607 K |19.9 |30 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.07 |256 K |
|q1 |2 M |8.08 |248 K |
|q2 |2.1 M |8.04 |272 K |
|q3 |2 M |9.2 |218 K |
|q4 |329 K |9.35 |35 K |
|q5 |325 K |11.25 |28 K |
|q7 |182 K |12.69 |14 K |
|q8 |2 M |10.85 |192 K |
|q9 |85 K |4.66 |18 K |
|q10 |656 K |8.02 |81 K |
|q11 |416 K |9.78 |42 K |
|q12 |1 M |12.04 |88 K |
|q13 |1.5 M |8.05 |188 K |
|q14 |1.9 M |8.04 |245 K |
|q15 |783 K |8.69 |90 K |
+-------------------+-------------------+-------------------+-------------------+
+UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.07 |250 K |
|q1 |1.9 M |8.09 |238 K |
|q2 |2.1 M |8.03 |272 K |
|q3 |1.9 M |9.18 |214 K |
|q4 |323 K |11 |29 K |
|q5 |323 K |11.21 |28 K |
|q7 |170 K |12.14 |14 K |
|q8 |1.7 M |12.13 |144 K |
|q9 |141 K |8.31 |17 K |
|q10 |593 K |8.03 |73 K |
|q11 |393 K |9.7 |40 K |
|q12 |1 M |12.41 |81 K |
|q13 |1.3 M |8.05 |161 K |
|q14 |1.5 M |8.03 |197 K |
|q15 |674 K |8.61 |78 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.06 |251 K |
|q1 |1.9 M |8.07 |242 K |
|q2 |2.1 M |8.02 |269 K |
|q3 |1.9 M |9.16 |216 K |
|q4 |334 K |10.86 |30 K |
|q5 |327 K |11.24 |29 K |
|q7 |177 K |13.14 |13 K |
|q8 |1.7 M |12.08 |148 K |
|q9 |210 K |13.17 |16 K |
|q10 |642 K |8.02 |80 K |
|q11 |441 K |10.26 |43 K |
|q12 |1 M |13.01 |84 K |
|q13 |1.3 M |8.04 |164 K |
|q14 |1.6 M |8.02 |200 K |
|q15 |673 K |8.63 |78 K |
+-------------------+-------------------+-------------------+-------------------+
-UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.06 |249 K |
|q1 |1.9 M |8.09 |245 K |
|q2 |2.1 M |8.05 |271 K |
|q3 |2 M |9.13 |220 K |
|q4 |41 K |1.02 |40 K |
|q5 |322 K |11.2 |28 K |
|q7 |164 K |11.2 |14 K |
|q8 |2.1 M |13.24 |161 K |
|q9 |180 K |10 |18 K |
|q10 |691 K |8.03 |86 K |
|q11 |415 K |9.9 |41 K |
|q12 |989 K |11.66 |84 K |
|q13 |1.5 M |8.05 |189 K |
|q14 |1.9 M |8.03 |241 K |
|q15 |780 K |8.75 |89 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.05 |255 K |
|q1 |1.9 M |8.07 |246 K |
|q2 |2.1 M |8.06 |269 K |
|q3 |2 M |9.21 |222 K |
|q4 |340 K |11.19 |30 K |
|q5 |337 K |11.29 |29 K |
|q7 |175 K |12.95 |13 K |
|q8 |2.2 M |13.23 |166 K |
|q9 |180 K |10.12 |17 K |
|q10 |709 K |8.01 |88 K |
|q11 |420 K |9.71 |43 K |
|q12 |1 M |11.87 |89 K |
|q13 |1.5 M |8.04 |196 K |
|q14 |1.9 M |8.03 |246 K |
|q15 |792 K |8.71 |90 K |
+-------------------+-------------------+-------------------+-------------------+
1 receiver: 3605.0/6523.0 (55.5%)
2 receiver: 1098.0/6523.0 (16.8%)
3 receiver: 500.0/6523.0 (7.6%)
4 receiver: 313.0/6523.0 (4.7%)
5 receiver: 256.0/6523.0 (3.9%)
6 receiver: 258.0/6523.0 (3.9%)
7 receiver: 251.0/6523.0 (3.8%)
8 receiver: 233.0/6523.0 (3.5%)
Some benchmark result:
SpecJBB 2015:
+UseTrimorphicInlining
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 90677, max-jOPS = 50062, critical-jOPS = 38306
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 85156, max-jOPS = 14304, critical-jOPS = 14304
-UseTrimorphicInlining
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 85156, max-jOPS = 85821, critical-jOPS = 22032
RUN RESULT: hbIR (max attempted) = 102168, hbIR (settled) = 88990, max-jOPS = 49041, critical-jOPS = 42515
Nexmark:
+UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |1.8 M |16.08 |113 K |
|q1 |1.8 M |15.9 |114 K |
|q2 |1.9 M |15.91 |119 K |
|q3 |1.7 M |17.15 |102 K |
|q4 |1.6 M |20.69 |80 K |
|q5 |271 K |22.46 |12 K |
|q7 |144 K |23.4 |6.1 K |
|q8 |1.6 M |25.13 |66 K |
|q9 |143 K |13.16 |10 K |
|q10 |567 K |8.81 |64 K |
|q11 |246 K |11.77 |20 K |
|q12 |81 K |16.93 |4.7 K |
|q13 |1.2 M |19.79 |61 K |
|q14 |1.7 M |19.58 |88 K |
|q15 |597 K |20.5 |29 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.08 |253 K |
|q1 |1.9 M |8.08 |245 K |
|q2 |2.1 M |8.03 |271 K |
|q3 |1.8 M |9.41 |201 K |
|q4 |304 K |11.4 |26 K |
|q5 |334 K |11.49 |29 K |
|q7 |11 K |1.53 |7.6 K |
|q8 |1.7 M |11.86 |150 K |
|q9 |192 K |11.74 |16 K |
|q10 |613 K |8.04 |76 K |
|q11 |424 K |10.29 |41 K |
|q12 |1 M |12.92 |81 K |
|q13 |1.2 M |8.04 |161 K |
|q14 |1.5 M |8.02 |198 K |
|q15 |684 K |8.68 |78 K |
+-------------------+-------------------+-------------------+-------------------+
-UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |1.6 M |19.85 |82 K |
|q1 |1.4 M |20.14 |72 K |
|q2 |2.1 M |20.28 |106 K |
|q3 |1.3 M |19.19 |69 K |
|q4 |270 K |22.83 |11 K |
|q5 |308 K |23.19 |13 K |
|q7 |159 K |24.23 |6.5 K |
|q8 |1.5 M |23.41 |65 K |
|q9 |171 K |23.18 |7.3 K |
|q10 |527 K |19.58 |26 K |
|q11 |344 K |21.83 |15 K |
|q12 |815 K |23.61 |34 K |
|q13 |1 M |19.3 |53 K |
|q14 |1.2 M |19.41 |62 K |
|q15 |607 K |19.9 |30 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.07 |256 K |
|q1 |2 M |8.08 |248 K |
|q2 |2.1 M |8.04 |272 K |
|q3 |2 M |9.2 |218 K |
|q4 |329 K |9.35 |35 K |
|q5 |325 K |11.25 |28 K |
|q7 |182 K |12.69 |14 K |
|q8 |2 M |10.85 |192 K |
|q9 |85 K |4.66 |18 K |
|q10 |656 K |8.02 |81 K |
|q11 |416 K |9.78 |42 K |
|q12 |1 M |12.04 |88 K |
|q13 |1.5 M |8.05 |188 K |
|q14 |1.9 M |8.04 |245 K |
|q15 |783 K |8.69 |90 K |
+-------------------+-------------------+-------------------+-------------------+
+UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.07 |250 K |
|q1 |1.9 M |8.09 |238 K |
|q2 |2.1 M |8.03 |272 K |
|q3 |1.9 M |9.18 |214 K |
|q4 |323 K |11 |29 K |
|q5 |323 K |11.21 |28 K |
|q7 |170 K |12.14 |14 K |
|q8 |1.7 M |12.13 |144 K |
|q9 |141 K |8.31 |17 K |
|q10 |593 K |8.03 |73 K |
|q11 |393 K |9.7 |40 K |
|q12 |1 M |12.41 |81 K |
|q13 |1.3 M |8.05 |161 K |
|q14 |1.5 M |8.03 |197 K |
|q15 |674 K |8.61 |78 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.06 |251 K |
|q1 |1.9 M |8.07 |242 K |
|q2 |2.1 M |8.02 |269 K |
|q3 |1.9 M |9.16 |216 K |
|q4 |334 K |10.86 |30 K |
|q5 |327 K |11.24 |29 K |
|q7 |177 K |13.14 |13 K |
|q8 |1.7 M |12.08 |148 K |
|q9 |210 K |13.17 |16 K |
|q10 |642 K |8.02 |80 K |
|q11 |441 K |10.26 |43 K |
|q12 |1 M |13.01 |84 K |
|q13 |1.3 M |8.04 |164 K |
|q14 |1.6 M |8.02 |200 K |
|q15 |673 K |8.63 |78 K |
+-------------------+-------------------+-------------------+-------------------+
-UseTrimorphicInlining
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.06 |249 K |
|q1 |1.9 M |8.09 |245 K |
|q2 |2.1 M |8.05 |271 K |
|q3 |2 M |9.13 |220 K |
|q4 |41 K |1.02 |40 K |
|q5 |322 K |11.2 |28 K |
|q7 |164 K |11.2 |14 K |
|q8 |2.1 M |13.24 |161 K |
|q9 |180 K |10 |18 K |
|q10 |691 K |8.03 |86 K |
|q11 |415 K |9.9 |41 K |
|q12 |989 K |11.66 |84 K |
|q13 |1.5 M |8.05 |189 K |
|q14 |1.9 M |8.03 |241 K |
|q15 |780 K |8.75 |89 K |
+-------------------+-------------------+-------------------+-------------------+
+-------------------+-------------------+-------------------+-------------------+
| Nexmark Query | Throughput (r/s) | Cores | Throughput/Cores |
+-------------------+-------------------+-------------------+-------------------+
|q0 |2 M |8.05 |255 K |
|q1 |1.9 M |8.07 |246 K |
|q2 |2.1 M |8.06 |269 K |
|q3 |2 M |9.21 |222 K |
|q4 |340 K |11.19 |30 K |
|q5 |337 K |11.29 |29 K |
|q7 |175 K |12.95 |13 K |
|q8 |2.2 M |13.23 |166 K |
|q9 |180 K |10.12 |17 K |
|q10 |709 K |8.01 |88 K |
|q11 |420 K |9.71 |43 K |
|q12 |1 M |11.87 |89 K |
|q13 |1.5 M |8.04 |196 K |
|q14 |1.9 M |8.03 |246 K |
|q15 |792 K |8.71 |90 K |
+-------------------+-------------------+-------------------+-------------------+