Yes, I agree the change most likely reduces performance, but increases
thread-safety (prevent that different Threads may work with different
Metaclasses etc.)
I do not know enough about this area of the code to judge if the lack of
thread-safety is really a concern.
I just merged the pull request because of Jochens +1 vote.
Am 05.01.2016 um 20:31 schrieb John Wagenleitner:
Not sure but wonder if HandleMetaClass#myMetaClass was static to avoid
having to perform a lookup for each HMC instance. Probably not a
issue but thought I'd bring attention to it.
On Tue, Jan 5, 2016 at 10:13 AM, <[email protected]
<mailto:[email protected]>> wrote:
Repository: groovy
Updated Branches:
refs/heads/master 586a316da -> c5f17abbe
Fixing squid:S2444 - Lazy initialization of "static" fields should
be "synchronized"
<snip>
http://git-wip-us.apache.org/repos/asf/groovy/blob/c5f17abb/src/main/org/codehaus/groovy/runtime/HandleMetaClass.java
----------------------------------------------------------------------
diff --git
a/src/main/org/codehaus/groovy/runtime/HandleMetaClass.java
b/src/main/org/codehaus/groovy/runtime/HandleMetaClass.java
index f421131..9167f5c 100644
--- a/src/main/org/codehaus/groovy/runtime/HandleMetaClass.java
+++ b/src/main/org/codehaus/groovy/runtime/HandleMetaClass.java
@@ -24,7 +24,7 @@ import java.lang.reflect.Method;
public class HandleMetaClass extends DelegatingMetaClass {
private Object object;
- private static MetaClass myMetaClass;
+ private MetaClass myMetaClass;
private static final Object NONE = new Object();
public HandleMetaClass(MetaClass mc) {
<snip>