On May 11, 2012, at 4:26 PM, Adam Heath wrote:

>>>>> @@ -177,10 +184,18 @@ public class GroovyUtil {
>>>>> Class<?> scriptClass = parsedScripts.get(script);
>>>>> if (scriptClass == null) {
>>>>> scriptClass = loadClass(script);
>>>>> - if (Debug.verboseOn()) Debug.logVerbose("Caching Groovy script: "
>>>>> + script, module);
>>>>> - parsedScripts.put(script, scriptClass);
>>>>> + synchronized (parsedScripts) {
>>>>> + Class<?> scriptClassCached = parsedScripts.get(script);
>>>>> + if (scriptClassCached == null) {
>>>>> + if (Debug.verboseOn()) {
>>>>> + Debug.logVerbose("Caching Groovy script: " + script, module);
>>>>> + }
>>>>> + parsedScripts.put(script, scriptClass);
>>>>> + } else {
>>>>> + scriptClass = scriptClassCached;
>>>>> + }
>>>>> + }
>>>>> }
>>>>> -
> 
> This is DCL.

Oh no, you are wrong Adam: it would be DCL if scriptClass was a shared 
variable, which is not: it is a *local* variable.

Jacopo

Reply via email to