src/share/classes/com/sun/tools/javac/comp/Lower.java

changeset 2013
2de3750d65a5
parent 2009
7c7b4aea6d50
child 2027
4932bb04c4b8
equal deleted inserted replaced
2012:e84587462a47 2013:2de3750d65a5
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 *************************************************************************/

mercurial