{"shas":[["831f7e006cc3fdbfa29bf9d4af411947d79b1d43","91c3ee4fc807067ccd2d90c5be0d27a10d086566@5e8d7ff9-d8ef-0310-90f0-a4852d11357a","Fixed a bug in the optimizer which was preventing private methods from\nbeing inlined. Also relaxes a condition related to the \"liftedTry\"\nproblem: the inliner has to exclude certain methods from consideration\nif there is a value on the stack and the method being inlined has\nexception handlers. The new condition is as before, except that it does\nnot exclude methods of the \"try/finally\" variety (i.e. finalizers, but\nno other exception handlers.) This is necessary to optimize this common\npattern:\n\n  @inline private def foo(body: => Unit) {\n    val saved = something\n    try body\n    finally something = saved\n  }\n\nThe closure for \"body\" can be fully eliminated, but only if the contents\nof foo can be inlined into the caller.\n\nCloses #4764, review by rompf.\n\ngit-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@25234 5e8d7ff9-d8ef-0310-90f0-a4852d11357a","extempore"]],"ref":"refs/heads/master","size":1,"head":"831f7e006cc3fdbfa29bf9d4af411947d79b1d43","push_id":35666737}