[ https://issues.apache.org/jira/browse/HARMONY-5584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Cheng, BuQi updated HARMONY-5584: --------------------------------- Attachment: escanalyzer_h.patch > [drlvm][jit][opt][performance] Inliner heuristics improvements: hotness and instance initializer bonuses > -------------------------------------------------------------------------------------------------------- > > Key: HARMONY-5584 > URL: https://issues.apache.org/jira/browse/HARMONY-5584 > Project: Harmony > Issue Type: Improvement > Components: DRLVM > Environment: all > Reporter: Aleksey Shipilev > Assignee: Mikhail Fursov > Attachments: escanalyzer_h.patch, H5584-inliner-heuristics.patch, H5584-inliner-heuristics.patch, inliner_cpp.patch > > > During the profiling of Scimark2 [1] it was found that inliner misses the inline opportunities for monte_carlo. > This is the code for hottest method: > public static final double integrate(int Num_samples) > { > Random R = new Random(SEED); > int under_curve = 0; > for (int count=0; count { > double x= R.nextDouble(); > double y= R.nextDouble(); > if ( x*x + y*y <= 1.0) > under_curve ++; > > } > return ((double) under_curve / Num_samples) * 4.0; > } > Problems are: > 1. nextDouble is not inlined > 2. nextDouble is internally synchronized > Attached patch solves these two problems: > 1. fixing hotness bonus calculation. This is the issue Random.nextDouble() hit on: this method called in hot cycle and missing inline opportunity due to glitch in scaling function, which should be more additive rather than multiplicative. > 2. introducing instance initializer bonus. This helps to inline constructor with all corresponding methods to help scalar replacement with scalarizing of R (and eliminating synchronization too). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.