From f4bfffd7146e04ba53419c2ef1855ce0f07c109c Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Thu, 23 Feb 2012 17:13:03 +0200 Subject: [PATCH] global var replaced by thread local --- .../jetbrains/jet/compiler/CompileEnvironment.java | 4 ++-- stdlib/ktSrc/modules/ModuleBuilder.kt | 2 +- stdlib/src/jet/modules/AllModules.java | 11 ++++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 1404bc105cf..9748cec343f 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -212,8 +212,8 @@ public class CompileEnvironment { method.setAccessible(true); method.invoke(null); - ArrayList answer = new ArrayList(AllModules.modules); - AllModules.modules.clear(); + ArrayList answer = new ArrayList(AllModules.modules.get()); + AllModules.modules.get().clear(); return answer; } catch (Exception e) { diff --git a/stdlib/ktSrc/modules/ModuleBuilder.kt b/stdlib/ktSrc/modules/ModuleBuilder.kt index 487ef408f20..301e41930a8 100644 --- a/stdlib/ktSrc/modules/ModuleBuilder.kt +++ b/stdlib/ktSrc/modules/ModuleBuilder.kt @@ -6,7 +6,7 @@ import jet.modules.* fun module(name: String, callback: ModuleBuilder.() -> Unit) { val builder = ModuleBuilder(name) builder.callback() - AllModules.modules?.add(builder) + AllModules.modules.sure().get()?.add(builder) } class SourcesBuilder(val parent: ModuleBuilder) { diff --git a/stdlib/src/jet/modules/AllModules.java b/stdlib/src/jet/modules/AllModules.java index d40c79c1d1f..a6580fe39ed 100644 --- a/stdlib/src/jet/modules/AllModules.java +++ b/stdlib/src/jet/modules/AllModules.java @@ -22,5 +22,14 @@ package jet.modules; import java.util.ArrayList; public class AllModules { - public static final ArrayList modules = new ArrayList(); + + public static final ThreadLocal> modules = new ThreadLocal>() { + @Override + protected ArrayList initialValue() { + return new ArrayList(); + } + }; + + private AllModules() { + } }