From 0b9350e8b619bc556f36652cde6f73211be5b85b Mon Sep 17 00:00:00 2001 From: Vicente Romero Date: Mon, 22 Apr 2024 16:31:32 +0000 Subject: [PATCH] 8322992: Javac fails with StackOverflowError when compiling deeply nested synchronized blocks Reviewed-by: jlahoda --- .../classes/com/sun/tools/javac/jvm/Gen.java | 45 +- .../patterns/SOEDeeplyNestedBlocksTest.java | 1187 +++++++++++++++++ 2 files changed, 1214 insertions(+), 18 deletions(-) create mode 100644 test/langtools/tools/javac/patterns/SOEDeeplyNestedBlocksTest.java diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java index 8a546cd3f42..37846b8b966 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java @@ -1074,29 +1074,38 @@ public class Gen extends JCTree.Visitor { } public void visitBlock(JCBlock tree) { + /* this method is heavily invoked, as expected, for deeply nested blocks, if blocks doesn't happen to have + * patterns there will be an unnecessary tax on memory consumption every time this method is executed, for this + * reason we have created helper methods and here at a higher level we just discriminate depending on the + * presence, or not, of patterns in a given block + */ if (tree.patternMatchingCatch != null) { - Set prevInvocationsWithPatternMatchingCatch = invocationsWithPatternMatchingCatch; - ListBuffer prevRanges = patternMatchingInvocationRanges; - State startState = code.state.dup(); - try { - invocationsWithPatternMatchingCatch = tree.patternMatchingCatch.calls2Handle(); - patternMatchingInvocationRanges = new ListBuffer<>(); - doVisitBlock(tree); - } finally { - Chain skipCatch = code.branch(goto_); - JCCatch handler = tree.patternMatchingCatch.handler(); - code.entryPoint(startState, handler.param.sym.type); - genPatternMatchingCatch(handler, env, patternMatchingInvocationRanges.toList()); - code.resolve(skipCatch); - invocationsWithPatternMatchingCatch = prevInvocationsWithPatternMatchingCatch; - patternMatchingInvocationRanges = prevRanges; - } + visitBlockWithPatterns(tree); } else { - doVisitBlock(tree); + internalVisitBlock(tree); } } - private void doVisitBlock(JCBlock tree) { + private void visitBlockWithPatterns(JCBlock tree) { + Set prevInvocationsWithPatternMatchingCatch = invocationsWithPatternMatchingCatch; + ListBuffer prevRanges = patternMatchingInvocationRanges; + State startState = code.state.dup(); + try { + invocationsWithPatternMatchingCatch = tree.patternMatchingCatch.calls2Handle(); + patternMatchingInvocationRanges = new ListBuffer<>(); + internalVisitBlock(tree); + } finally { + Chain skipCatch = code.branch(goto_); + JCCatch handler = tree.patternMatchingCatch.handler(); + code.entryPoint(startState, handler.param.sym.type); + genPatternMatchingCatch(handler, env, patternMatchingInvocationRanges.toList()); + code.resolve(skipCatch); + invocationsWithPatternMatchingCatch = prevInvocationsWithPatternMatchingCatch; + patternMatchingInvocationRanges = prevRanges; + } + } + + private void internalVisitBlock(JCBlock tree) { int limit = code.nextreg; Env localEnv = env.dup(tree, new GenContext()); genStats(tree.stats, localEnv); diff --git a/test/langtools/tools/javac/patterns/SOEDeeplyNestedBlocksTest.java b/test/langtools/tools/javac/patterns/SOEDeeplyNestedBlocksTest.java new file mode 100644 index 00000000000..e521f062748 --- /dev/null +++ b/test/langtools/tools/javac/patterns/SOEDeeplyNestedBlocksTest.java @@ -0,0 +1,1187 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8322992 + * @summary Javac fails with StackOverflowError when compiling deeply nested synchronized blocks + * @compile SOEDeeplyNestedBlocksTest.java + */ + +public class SOEDeeplyNestedBlocksTest { + + public static void test() { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + synchronized (SOEDeeplyNestedBlocksTest.class) { + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +}