aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_disasm.hrl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-02-05 02:46:45 +0100
committerBjörn Gustavsson <[email protected]>2019-02-06 10:34:23 +0100
commit077cfc59f1dca89aa1231ce291100aa4b33c50e0 (patch)
tree3f0eb95adda9f0432b18a7021a3d97599a34fb00 /lib/compiler/src/beam_disasm.hrl
parente82637d6f078409db27449383df5342294df0b63 (diff)
downloadotp-077cfc59f1dca89aa1231ce291100aa4b33c50e0.tar.gz
otp-077cfc59f1dca89aa1231ce291100aa4b33c50e0.tar.bz2
otp-077cfc59f1dca89aa1231ce291100aa4b33c50e0.zip
Optimize ssa_opt_sink for huge functions
The ssa_opt_sink optimization of beam_ssa_opt could get very slow for certain huge functions. 9a190cae9bd7 partly addressed this issue by terminating the optimization early if there happened to be no get_tuple_element instructions at all in the function. This commit addresses the issue more directly by making the dominator calculation in beam_ssa:dominators/1 more efficient. The same algorithm as before is used, but it is implemented in a more efficient way based on the ideas in "A Simple, Fast Dominance Algorithm" (http://www.hipersoft.rice.edu/grads/publications/dom14.pdf). As well as being more efficient, the new implementation also gives an explicit representation of the dominator tree, which makes it possible to simplify and optimize the ssa_opt_sink optimization.
Diffstat (limited to 'lib/compiler/src/beam_disasm.hrl')
0 files changed, 0 insertions, 0 deletions