Skip to content

Commit

Permalink
py: Implement (non-compliant) support for delete_fast in native emitter.
Browse files Browse the repository at this point in the history
This implementation is smaller (in code size) than #1024.
  • Loading branch information
dpgeorge committed Apr 3, 2015
1 parent c0dcf6e commit 2cc5473
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions py/emitnative.c
Expand Up @@ -1614,14 +1614,11 @@ STATIC void emit_native_store_subscr(emit_t *emit) {
}

STATIC void emit_native_delete_fast(emit_t *emit, qstr qst, mp_uint_t local_num) {
// TODO implement me!
// could support for Python types, just set to None (so GC can reclaim it)
// local is automatically deleted for exception block "as" var, and the message
// breaks tests.
//mp_emitter_warning(emit->pass, "Native codegeneration doesn't support deleting local");
(void)emit;
(void)qst;
(void)local_num;
// TODO: This is not compliant implementation. We could use MP_OBJ_SENTINEL
// to mark deleted vars but then every var would need to be checked on
// each access. Very inefficient, so just set value to None to enable GC.
emit_native_load_const_tok(emit, MP_TOKEN_KW_NONE);
emit_native_store_fast(emit, qst, local_num);
}

STATIC void emit_native_delete_deref(emit_t *emit, qstr qst, mp_uint_t local_num) {
Expand Down

0 comments on commit 2cc5473

Please sign in to comment.