changeset 194:08df375e2e5f

remove EnvGetter git-svn-id: https://luan-java.googlecode.com/svn/trunk@195 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Wed, 02 Jul 2014 04:52:25 +0000
parents 66ed8886abc0
children 24ede40ee0aa
files core/src/luan/impl/LuanCompiler.java core/src/luan/impl/LuanStateImpl.java core/src/luan/impl/UpValue.java
diffstat 3 files changed, 5 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/core/src/luan/impl/LuanCompiler.java	Wed Jul 02 03:27:35 2014 +0000
+++ b/core/src/luan/impl/LuanCompiler.java	Wed Jul 02 04:52:25 2014 +0000
@@ -13,7 +13,10 @@
 	private LuanCompiler() {}  // never
 
 	public static LuanFunction compile(LuanState luan,LuanSource src,LuanTable env,boolean allowExpr) throws LuanException {
-		UpValue.Getter envGetter = env!=null ? new UpValue.ValueGetter(env) : new UpValue.EnvGetter();
+		boolean passedEnv = env != null;
+		if( !passedEnv )
+			env = new LuanTable();
+		UpValue.Getter envGetter = new UpValue.ValueGetter(env);
 		LuanParser parser = new LuanParser(src,envGetter);
 		for( Map.Entry<Object,Object> entry : luan.global() ) {
 			Object key = entry.getKey();
@@ -21,7 +24,7 @@
 				parser.addVar( (String)key, entry.getValue() );
 		}
 		FnDef fnDef = parse(luan,parser,allowExpr);
-		if( env != null )
+		if( passedEnv )
 			return new Closure((LuanStateImpl)luan,fnDef);
 		final Closure c = new Closure((LuanStateImpl)luan,fnDef);
 		return new LuanFunction() {
--- a/core/src/luan/impl/LuanStateImpl.java	Wed Jul 02 03:27:35 2014 +0000
+++ b/core/src/luan/impl/LuanStateImpl.java	Wed Jul 02 04:52:25 2014 +0000
@@ -57,7 +57,6 @@
 	private Frame frame = null;
 	Object returnValues;
 	Closure tailFn;
-	Map<UpValue.EnvGetter,UpValue> envs = new HashMap<UpValue.EnvGetter,UpValue>();
 
 	LuanStateImpl() {}
 
@@ -71,15 +70,6 @@
 		return new LuanStateImpl(this);
 	}
 
-	@Override public void deepenClone(LuanState clone,DeepCloner cloner) {
-		super.deepenClone(clone,cloner);
-		LuanStateImpl cloneImpl = (LuanStateImpl)clone;
-		cloneImpl.envs = new HashMap<UpValue.EnvGetter,UpValue>();
-		for( Map.Entry<UpValue.EnvGetter,UpValue> entry : envs.entrySet() ) {
-			cloneImpl.envs.put( entry.getKey(), cloner.deepClone(entry.getValue()) );
-		}
-	}
-
 	// returns stack
 	Object[] newFrame(Closure closure, int stackSize, Object[] varArgs) {
 		returnValues = LuanFunction.NOTHING;
@@ -118,16 +108,6 @@
 		return frame.getUpValue(index);
 	}
 
-	UpValue getUpValue(UpValue.EnvGetter getter) throws LuanException {
-		UpValue uv = envs.get(getter);
-		if( uv == null ) {
-			LuanTable env = new LuanTable();
-			uv = new UpValue(env);
-			envs.put(getter,uv);
-		}
-		return uv;
-	}
-
 	@Override public LuanTable currentEnvironment() {
 		if( frame==null )
 			return null;
--- a/core/src/luan/impl/UpValue.java	Wed Jul 02 03:27:35 2014 +0000
+++ b/core/src/luan/impl/UpValue.java	Wed Jul 02 04:52:25 2014 +0000
@@ -83,13 +83,6 @@
 		}
 	}
 
-	static final class EnvGetter implements Getter {
-
-		public UpValue get(LuanStateImpl luan) throws LuanException {
-			return luan.getUpValue(this);
-		}
-	}
-
 	static final class ValueGetter implements Getter {
 		private final UpValue upValue;