comparison src/luan/Luan.java @ 1401:ef1620aa99cb

fix gc issues
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 16 Sep 2019 22:51:41 -0400
parents cc0dbca576dc
children 27efb1fcbcb5
comparison
equal deleted inserted replaced
1400:221eedb0f54e 1401:ef1620aa99cb
1 package luan; 1 package luan;
2 2
3 import java.lang.reflect.Array; 3 import java.lang.reflect.Array;
4 import java.io.Closeable;
5 import java.util.List; 4 import java.util.List;
6 import java.util.ArrayList; 5 import java.util.ArrayList;
7 import java.util.Map; 6 import java.util.Map;
8 import java.util.HashMap; 7 import java.util.HashMap;
9 import java.util.LinkedHashMap; 8 import java.util.LinkedHashMap;
24 23
25 private final List<LuanClosure> stack = new ArrayList<LuanClosure>(); 24 private final List<LuanClosure> stack = new ArrayList<LuanClosure>();
26 private Map registry; 25 private Map registry;
27 private boolean isLocked = false; 26 private boolean isLocked = false;
28 27
29 public interface OnClose extends Closeable {
30 public void onClose(Closeable c);
31 }
32 public OnClose onClose;
33
34 public Luan() { 28 public Luan() {
35 registry = new HashMap(); 29 registry = new HashMap();
36 } 30 }
37 31
38 private Luan(Luan luan) {} 32 private Luan(Luan luan) {}
67 stack.remove(stack.size()-1); 61 stack.remove(stack.size()-1);
68 } 62 }
69 63
70 public Map registry() { 64 public Map registry() {
71 return registry; 65 return registry;
72 }
73
74 public void onClose(Closeable c) {
75 if( onClose != null )
76 onClose.onClose(c);
77 } 66 }
78 67
79 public Object eval(String cmd,Object... args) throws LuanException { 68 public Object eval(String cmd,Object... args) throws LuanException {
80 return load(cmd,"eval").call(args); 69 return load(cmd,"eval").call(args);
81 } 70 }