Mercurial > hg > truffle
changeset 20022:eebf140fa6e4
syncronize the access to Source.allSources. Should fix random crashes we experienced before.
author | Christian Wirth <christian.wirth@oracle.com> |
---|---|
date | Tue, 24 Mar 2015 17:19:23 +0100 |
parents | 4b6965a278cf |
children | cef214c6d74a |
files | graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java Tue Mar 24 14:36:57 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java Tue Mar 24 17:19:23 2015 +0100 @@ -81,7 +81,7 @@ /** * All Sources that have been created. */ - private static final List<WeakReference<Source>> allSources = new ArrayList<>(); + private static final List<WeakReference<Source>> allSources = Collections.synchronizedList(new ArrayList<WeakReference<Source>>()); // Files and pseudo files are indexed. private static final Map<String, WeakReference<Source>> filePathToSource = new Hashtable<>(); @@ -273,11 +273,13 @@ */ public static Collection<Source> findSourcesTaggedAs(SourceTag tag) { final List<Source> taggedSources = new ArrayList<>(); - for (WeakReference<Source> ref : allSources) { - Source source = ref.get(); - if (source != null) { - if (tag == null || source.isTaggedAs(tag)) { - taggedSources.add(ref.get()); + synchronized (allSources) { + for (WeakReference<Source> ref : allSources) { + Source source = ref.get(); + if (source != null) { + if (tag == null || source.isTaggedAs(tag)) { + taggedSources.add(ref.get()); + } } } }