diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-12 15:00:17 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-12 15:00:17 +0800 |
commit | b525cc4808cbbe68132e5941187030d3dd38abc2 (patch) | |
tree | e90d3e160657b33e11606813cbb84ec181f1f845 /builtin.cpp | |
parent | 4e933956abb5045efaad4b68decce1ca4bd43700 (diff) |
Removed uncessary `new UnspecObj()`, use a global pointer instead.
Diffstat (limited to 'builtin.cpp')
-rw-r--r-- | builtin.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
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; } |