diff src/luan/modules/ThreadLuan.java @ 782:655280eab1e2

start limited cloning
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 30 Aug 2016 01:29:33 -0600
parents fbbdd369a13a
children d69d3c51c44e
line wrap: on
line diff
--- a/src/luan/modules/ThreadLuan.java	Mon Aug 29 22:49:32 2016 -0600
+++ b/src/luan/modules/ThreadLuan.java	Tue Aug 30 01:29:33 2016 -0600
@@ -19,10 +19,10 @@
 	private static final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
 
 	public static void fork(LuanState luan,LuanFunction fn,Object... args) {
-		LuanCloner cloner = new LuanCloner();
-		final LuanState newLuan = (LuanState)cloner.deepClone(luan);
+		LuanCloner cloner = new LuanCloner(true);
+		final LuanState newLuan = (LuanState)cloner.clone(luan);
 		final LuanFunction newFn = (LuanFunction)cloner.get(fn);
-		final Object[] newArgs = cloner.deepClone(args);
+		final Object[] newArgs = cloner.clone(args);
 		exec.execute(new Runnable(){public void run() {
 			try {
 				newFn.call(newLuan,newArgs);
@@ -44,10 +44,10 @@
 	}
 
 	public static void schedule(LuanState luan,long delay,boolean repeat,LuanFunction fn,Object... args) {
-		LuanCloner cloner = new LuanCloner();
-		final LuanState newLuan = (LuanState)cloner.deepClone(luan);
+		LuanCloner cloner = new LuanCloner(true);
+		final LuanState newLuan = (LuanState)cloner.clone(luan);
 		final LuanFunction newFn = (LuanFunction)cloner.get(fn);
-		final Object[] newArgs = cloner.deepClone(args);
+		final Object[] newArgs = cloner.clone(args);
 		Runnable r = new Runnable(){public void run() {
 			try {
 				newFn.call(newLuan,newArgs);