Mercurial Hosting > luan
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 } |