3827 result = tree; |
3827 result = tree; |
3828 } |
3828 } |
3829 |
3829 |
3830 @Override |
3830 @Override |
3831 public void visitTry(JCTry tree) { |
3831 public void visitTry(JCTry tree) { |
3832 if (tree.resources.isEmpty()) { |
3832 if (tree.resources.nonEmpty()) { |
3833 /* special case of try without catchers and with finally emtpy. |
3833 result = makeTwrTry(tree); |
3834 * Don't give it a try, translate only the body. |
3834 return; |
3835 */ |
3835 } |
3836 if (tree.catchers.isEmpty() && |
3836 |
3837 tree.finalizer.getStatements().isEmpty()) { |
3837 boolean hasBody = tree.body.getStatements().nonEmpty(); |
|
3838 boolean hasCatchers = tree.catchers.nonEmpty(); |
|
3839 boolean hasFinally = tree.finalizer != null && |
|
3840 tree.finalizer.getStatements().nonEmpty(); |
|
3841 |
|
3842 if (!hasCatchers && !hasFinally) { |
|
3843 result = translate(tree.body); |
|
3844 return; |
|
3845 } |
|
3846 |
|
3847 if (!hasBody) { |
|
3848 if (hasFinally) { |
|
3849 result = translate(tree.finalizer); |
|
3850 } else { |
3838 result = translate(tree.body); |
3851 result = translate(tree.body); |
3839 } else { |
3852 } |
3840 /* also if the body is empty we only need to generate the finalizer |
3853 return; |
3841 * provided that it's not empty. |
3854 } |
3842 */ |
3855 |
3843 if (tree.body.getStatements().isEmpty()) { |
3856 // no optimizations possible |
3844 if (tree.finalizer.getStatements().isEmpty()) { |
3857 super.visitTry(tree); |
3845 result = translate(tree.body); |
|
3846 } else { |
|
3847 result = translate(tree.finalizer); |
|
3848 } |
|
3849 } else { |
|
3850 super.visitTry(tree); |
|
3851 } |
|
3852 } |
|
3853 } else { |
|
3854 result = makeTwrTry(tree); |
|
3855 } |
|
3856 } |
3858 } |
3857 |
3859 |
3858 /************************************************************************** |
3860 /************************************************************************** |
3859 * main method |
3861 * main method |
3860 *************************************************************************/ |
3862 *************************************************************************/ |