Mercurial Hosting > luan
diff src/luan/LuanException.java @ 1578:c922446f53aa
immutable threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 08 Feb 2021 14:16:19 -0700 |
parents | adba594db0b4 |
children | a9ff30fb5d89 |
line wrap: on
line diff
--- a/src/luan/LuanException.java Sun Jan 31 16:04:39 2021 -0700 +++ b/src/luan/LuanException.java Mon Feb 08 14:16:19 2021 -0700 @@ -9,9 +9,10 @@ import java.util.HashMap; -public final class LuanException extends Exception implements LuanCloneable { +public final class LuanException extends Exception implements LuanMutable { private LuanTable table; private Map extra = new HashMap(); + private boolean immutable = false; public LuanException(String msg,Throwable cause) { super(msg,cause); @@ -25,19 +26,16 @@ super(cause); } - @Override public LuanException shallowClone() { - return new LuanException(getMessage(),getCause()); + @Override public boolean isImmutable() { + return immutable; } - @Override public void deepenClone(LuanCloneable dc,LuanCloner cloner) { - LuanException clone = (LuanException)dc; - clone.table = (LuanTable)cloner.clone(table); - clone.extra = (Map)cloner.clone(extra); - } - - @Override public void makeImmutable(LuanImmutabler immutabler) throws LuanException { - immutabler.makeImmutable(table); - immutabler.makeImmutable(extra); + @Override public void makeImmutable() { + if(immutable) + return; + immutable = true; + LuanMutable.makeImmutable(table); + LuanMutable.makeImmutable(extra); } public void put(String key,Object value) throws LuanException {