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);
-	}
-
 }