diff --git a/src/codechicken/nei/asm/OreDictionaryVisitor.java b/src/codechicken/nei/asm/OreDictionaryVisitor.java index c8add503..33553326 100644 --- a/src/codechicken/nei/asm/OreDictionaryVisitor.java +++ b/src/codechicken/nei/asm/OreDictionaryVisitor.java @@ -7,6 +7,47 @@ import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; +/** + * Code without this patch + *
+ public class OreDictionary {
+ public static int getOreID(String name) {
+ Integer val = nameToId.get(name);
+ if (val == null)
+ {
+ idToName.add(name);
+ val = idToName.size() - 1; //0 indexed
+ nameToId.put(name, val);
+ idToStack.add(new ArrayList());
+ idToStackUn.add(new UnmodifiableArrayList(idToStack.get(val)));
+ }
+ return val;
+ }
+ }
+
+ Code with this patch
+
+ public class OreDictionary {
+ private static final Object emptyEntryCreationLock = new Object();
+ public static int getOreID(String name) {
+ Integer val = nameToId.get(name);
+ if (val == null)
+ {
+ synchronized (emptyEntryCreationLock) {
+ if ((val = nameToId.get(name)) != null)
+ return val;
+ idToName.add(name);
+ val = idToName.size() - 1; //0 indexed
+ nameToId.put(name, val);
+ idToStack.add(new ArrayList());
+ idToStackUn.add(new UnmodifiableArrayList(idToStack.get(val)));
+ }
+ }
+ return val;
+ }
+ }
+ *
+ */
public class OreDictionaryVisitor extends ClassVisitor {
private static class GetOreIDVisitor extends MethodVisitor {
Label jumpEnd;