Mercurial Hosting > luan
diff core/src/luan/impl/LuanStateImpl.java @ 208:5ba136769034
remove MetatableGetter and use a generic metatable instead
git-svn-id: https://luan-java.googlecode.com/svn/trunk@209 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 08 Jul 2014 07:04:47 +0000 |
parents | 9fb218211763 |
children | a6bf8ff720f8 |
line wrap: on
line diff
--- a/core/src/luan/impl/LuanStateImpl.java Tue Jul 08 02:04:24 2014 +0000 +++ b/core/src/luan/impl/LuanStateImpl.java Tue Jul 08 07:04:47 2014 +0000 @@ -8,7 +8,6 @@ import luan.LuanState; import luan.LuanTable; import luan.LuanFunction; -import luan.MetatableGetter; import luan.LuanException; import luan.LuanElement; import luan.DeepCloner; @@ -21,7 +20,6 @@ final Closure closure; final Object[] stack; final Object[] varArgs; - MtGetterLink mtGetterLink; UpValue[] downValues = null; Frame( Frame previousFrame, Closure closure, int stackSize, Object[] varArgs) { @@ -29,7 +27,6 @@ this.closure = closure; this.stack = new Object[stackSize]; this.varArgs = varArgs; - this.mtGetterLink = closure.mtGetterLink(); } void stackClear(int start,int end) { @@ -54,17 +51,11 @@ downValues[index] = new UpValue(stack,index); return downValues[index]; } - - void addMetatableGetter(MetatableGetter mg) { - if( mtGetterLink==null || !mtGetterLink.contains(mg) ) - mtGetterLink = new MtGetterLink(mg,mtGetterLink); - } } private Frame frame = null; Object returnValues; Closure tailFn; - MtGetterLink mtGetterLink = null; LuanStateImpl() {} @@ -89,7 +80,6 @@ void popFrame() { returnValues = LuanFunction.NOTHING; tailFn = null; - mtGetterLink = frame.mtGetterLink; frame = frame.previousFrame; } @@ -123,21 +113,4 @@ return (LuanTable)frame.closure.upValues()[0].get(); } - MtGetterLink mtGetterLink() { - return frame==null ? null : frame.mtGetterLink; - } - - @Override public LuanTable getMetatable(Object obj,MetatableGetter beforeThis) { - if( obj instanceof LuanTable ) { - LuanTable table = (LuanTable)obj; - return table.getMetatable(); - } - MtGetterLink mtGetterLink = mtGetterLink(); - return mtGetterLink==null ? null : mtGetterLink.getMetatable(obj,beforeThis); - } - - @Override public void addMetatableGetter(MetatableGetter mg) { - frame.addMetatableGetter(mg); - } - }