# HG changeset patch # User Andreas Woess # Date 1433959577 -7200 # Node ID e9b787f8134fa76a9de53fd42d21d3ec9a3b908b # Parent 19340125f18255e65657cb4ba150bc353d5c1814 Truffle: make transitionMap a ConcurrentHashMap diff -r 19340125f182 -r e9b787f8134f graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java --- 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 transitionMap; + private volatile Map 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<>(); + } } }