Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Truffle] Synchronize data access in EncodingManager
Browse files Browse the repository at this point in the history
Brandon Fish committed Sep 19, 2016

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 2e0d7ea commit 8ca1751
Showing 1 changed file with 6 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -57,11 +57,11 @@ public static DynamicObject newRubyEncoding(RubyContext context, Encoding encodi
return Layouts.ENCODING.createEncoding(context.getCoreLibrary().getEncodingFactory(), encoding, string, dummy);
}

public List<DynamicObject> getUnsafeEncodingList() {
public synchronized List<DynamicObject> getUnsafeEncodingList() {
return ENCODING_LIST_BY_ENCODING_LIST_INDEX;
}

public DynamicObject getRubyEncoding(Encoding encoding) {
public synchronized DynamicObject getRubyEncoding(Encoding encoding) {
DynamicObject rubyEncoding = ENCODING_LIST_BY_ENCODING_INDEX.get(encoding.getIndex());

if (rubyEncoding == null) {
@@ -76,17 +76,17 @@ public DynamicObject getRubyEncoding(Encoding encoding) {
}

@TruffleBoundary
public DynamicObject getRubyEncoding(String name) {
public synchronized DynamicObject getRubyEncoding(String name) {
return LOOKUP.get(name.toLowerCase(Locale.ENGLISH));
}

@TruffleBoundary
public DynamicObject getRubyEncoding(int encodingListIndex) {
public synchronized DynamicObject getRubyEncoding(int encodingListIndex) {
return ENCODING_LIST_BY_ENCODING_LIST_INDEX.get(encodingListIndex);
}

@TruffleBoundary
public void defineEncoding(EncodingDB.Entry encodingEntry, byte[] name, int p, int end) {
public synchronized void defineEncoding(EncodingDB.Entry encodingEntry, byte[] name, int p, int end) {
final DynamicObject rubyEncoding = newRubyEncoding(context, null, name, p, end, encodingEntry.isDummy());

assert ENCODING_LIST_BY_ENCODING_LIST_INDEX.size() == encodingEntry.getIndex();
@@ -95,7 +95,7 @@ public void defineEncoding(EncodingDB.Entry encodingEntry, byte[] name, int p, i
}

@TruffleBoundary
public void defineAlias(int encodingListIndex, String name) {
public synchronized void defineAlias(int encodingListIndex, String name) {
final DynamicObject rubyEncoding = getRubyEncoding(encodingListIndex);

LOOKUP.put(name.toLowerCase(Locale.ENGLISH), rubyEncoding);

0 comments on commit 8ca1751

Please sign in to comment.