aboutsummaryrefslogtreecommitdiff
path: root/eval.cpp
diff options
context:
space:
mode:
authorTeddy <ted.sybil@gmail.com>2013-08-14 23:28:20 +0800
committerTeddy <ted.sybil@gmail.com>2013-08-14 23:28:20 +0800
commitaddbfae58d8afceb06d92f6ef1cdfed89c07518b (patch)
tree22668b260beac6177871ea5570452c5bfdedd08f /eval.cpp
parent640a20d0b6a2137617b7f217defce7979338e289 (diff)
significant improvement on gc efficiency
Diffstat (limited to 'eval.cpp')
-rw-r--r--eval.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/eval.cpp b/eval.cpp
index 2576157..fd301e7 100644
--- a/eval.cpp
+++ b/eval.cpp
@@ -11,7 +11,11 @@ EvalObj *eval_stack[EVAL_STACK_SIZE];
void Evaluator::add_builtin_routines() {
#define ADD_ENTRY(name, rout) \
- envt->add_binding(new SymObj(name), rout)
+do { \
+ SymObj *tmp = new SymObj(name); \
+ envt->add_binding(tmp, rout); \
+ delete tmp; \
+} while (0)
#define ADD_BUILTIN_PROC(name, rout) \
ADD_ENTRY(name, new BuiltinProcObj(rout, name))