From b525cc4808cbbe68132e5941187030d3dd38abc2 Mon Sep 17 00:00:00 2001 From: Teddy Date: Mon, 12 Aug 2013 15:00:17 +0800 Subject: Removed uncessary `new UnspecObj()`, use a global pointer instead. --- builtin.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'builtin.cpp') diff --git a/builtin.cpp b/builtin.cpp index 1096d7a..760aa2a 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -9,8 +9,9 @@ #include "types.h" using std::stringstream; -extern EmptyList *empty_list; +extern EmptyList *empty_list; +extern UnspecObj *unspec_obj; SpecialOptIf::SpecialOptIf() : SpecialOptObj("if") {} @@ -72,7 +73,7 @@ Pair *SpecialOptIf::call(Pair *args, Environment * &envt, } else { - *top_ptr++ = new UnspecObj(); + *top_ptr++ = unspec_obj; return ret_addr->next; } } @@ -232,7 +233,7 @@ Pair *SpecialOptDefine::call(Pair *args, Environment * &envt, obj = new ProcObj(body, envt, params); } envt->add_binding(id, obj); - *top_ptr++ = new UnspecObj(); + *top_ptr++ = unspec_obj; return ret_addr->next; } @@ -276,7 +277,7 @@ Pair *SpecialOptSet::call(Pair *args, Environment * &envt, bool flag = envt->add_binding(id, TO_PAIR(args->cdr)->car, false); if (!flag) throw TokenError(id->ext_repr(), RUN_ERR_UNBOUND_VAR); - *top_ptr++ = new UnspecObj(); + *top_ptr++ = unspec_obj; return ret_addr->next; } @@ -804,7 +805,7 @@ BUILTIN_PROC_DEF(pair_set_car) { if (!args->car->is_pair_obj()) throw TokenError("pair", RUN_ERR_WRONG_TYPE); TO_PAIR(args->car)->car = TO_PAIR(args->cdr)->car; - return new UnspecObj(); + return unspec_obj; } BUILTIN_PROC_DEF(pair_set_cdr) { @@ -812,7 +813,7 @@ BUILTIN_PROC_DEF(pair_set_cdr) { if (!args->car->is_pair_obj()) throw TokenError("pair", RUN_ERR_WRONG_TYPE); TO_PAIR(args->car)->cdr = TO_PAIR(args->cdr)->car; - return new UnspecObj(); + return unspec_obj; } BUILTIN_PROC_DEF(is_null) { @@ -1282,7 +1283,7 @@ BUILTIN_PROC_DEF(make_vector) { args = TO_PAIR(args->cdr); if (args == empty_list) - fill = new UnspecObj(); + fill = unspec_obj; else if (args->cdr == empty_list) fill = args->car; else @@ -1317,7 +1318,7 @@ BUILTIN_PROC_DEF(vector_set) { throw TokenError(name, RUN_ERR_WRONG_NUM_OF_ARGS); vect->set(k, args->car); - return new UnspecObj(); + return unspec_obj; } BUILTIN_PROC_DEF(vector_ref) { @@ -1356,5 +1357,5 @@ BUILTIN_PROC_DEF(vector_length) { BUILTIN_PROC_DEF(display) { ARGS_EXACTLY_ONE; printf("%s", args->car->ext_repr().c_str()); - return new UnspecObj(); + return unspec_obj; } -- cgit v1.2.3