Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java @ 21902:e9b787f8134f
Truffle: make transitionMap a ConcurrentHashMap
author | Andreas Woess <andreas.woess@oracle.com> |
---|---|
date | Wed, 10 Jun 2015 20:06:17 +0200 |
parents | 19340125f182 |
children | 1b695a36c4d5 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java Wed Jun 10 20:06:13 2015 +0200 +++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java Wed Jun 10 20:06:17 2015 +0200 @@ -23,6 +23,7 @@ package com.oracle.truffle.object; import java.util.*; +import java.util.concurrent.*; import com.oracle.truffle.api.*; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; @@ -90,7 +91,7 @@ * @see #getTransitionMapForRead() * @see #getTransitionMapForWrite() */ - private HashMap<Transition, ShapeImpl> transitionMap; + private volatile Map<Transition, ShapeImpl> transitionMap; private final Transition transitionFromParent; @@ -303,8 +304,13 @@ if (transitionMap != null) { return transitionMap; } else { - invalidateLeafAssumption(); - return transitionMap = new HashMap<>(); + synchronized (getMutex()) { + if (transitionMap != null) { + return transitionMap; + } + invalidateLeafAssumption(); + return transitionMap = new ConcurrentHashMap<>(); + } } }