summaryrefslogtreecommitdiff
path: root/build.xml
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-07-08 22:59:56 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2015-07-23 15:02:25 +0200
commita1d471f7ba93f5a2e3a66a77596a41f2677ca9ee (patch)
treeb1d281d19f29b22671c9948c7800322293f5d5b6 /build.xml
parentf5e72765f2705c9bad2d87c4222ee64a2500f2fe (diff)
downloadscala-a1d471f7ba93f5a2e3a66a77596a41f2677ca9ee.tar.gz
scala-a1d471f7ba93f5a2e3a66a77596a41f2677ca9ee.tar.bz2
scala-a1d471f7ba93f5a2e3a66a77596a41f2677ca9ee.zip
[backport] Refactor the ClosureOptimizer, run ProdCons only once per method
Refactor and clean up the ClosureOptimzier. The goal of this change is to run the ProdCons analyzer only once per method, instead of once per closure instantiation. Bootstrapping scala with `-Yopt-inline-heuristics:everything` revealed that ProdCons can take a very long time on large methods, for example ``` [quick.compiler] scala/tools/nsc/backend/jvm/BCodeBodyBuilder$PlainBodyBuilder#genArithmeticOp - analysis: 1 spans, 17755ms [quick.compiler] scala/tools/nsc/typechecker/SuperAccessors$SuperAccTransformer#transform - analysis: 1 spans, 28024ms [quick.compiler] scala/tools/nsc/backend/jvm/BCodeBodyBuilder$PlainBodyBuilder#genInvokeDynamicLambda - analysis: 1 spans, 22100ms ``` With this change and enough time and space (-Xmx6000m), bootstrapping scala succeeds in this test mode.
Diffstat (limited to 'build.xml')
0 files changed, 0 insertions, 0 deletions