From 2ddf71e0dedb8066cc8b7c19b38e181a31bd80e1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Astor?= Date: Sun, 5 Sep 2021 23:35:09 +0200 Subject: [PATCH] :bomb: shred->gc handling --- src/lib/object_op.c | 21 +++++++++++---------- src/lib/opfunc.c | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lib/object_op.c b/src/lib/object_op.c index d06c65e6..c01ac887 100644 --- a/src/lib/object_op.c +++ b/src/lib/object_op.c @@ -36,20 +36,21 @@ static OP_CHECK(opck_object_at) { CHECK_BO(isa(bin->lhs->type, bin->rhs->type)); return bin->rhs->type; } - +/* static bool exp_func(const Exp exp) { // was is_new - return exp->exp_type == ae_exp_call /*&& - exp->d.exp_call.func->exp_type == ae_exp_dot && - !strcmp(s_name(exp->d.exp_call.func->type->info->func->def->base->xid), "new")*/; + return exp->exp_type == ae_exp_call; +//&& +// exp->d.exp_call.func->exp_type == ae_exp_dot && +// !strcmp(s_name(exp->d.exp_call.func->type->info->func->def->base->xid), "new"): } - +*/ static OP_EMIT(opem_object_at) { - const Exp_Binary *bin = (Exp_Binary *)data; - if(!exp_func(bin->lhs)) { - const Instr addref = emit_add_instr(emit, RegAddRef); - addref->m_val = -SZ_INT * 2; - } +// const Exp_Binary *bin = (Exp_Binary *)data; +// if(!exp_func(bin->lhs)) { + const Instr addref = emit_add_instr(emit, RegAddRef); + addref->m_val = -SZ_INT * 2; +// } (void)emit_add_instr(emit, ObjectAssign); return GW_OK; } diff --git a/src/lib/opfunc.c b/src/lib/opfunc.c index 4bef3204..1b8fc0c4 100644 --- a/src/lib/opfunc.c +++ b/src/lib/opfunc.c @@ -134,7 +134,7 @@ OP_EMIT(opem_new) { unary->ctor.td->array, 0)); // we don't need gc for arrays? // also when in rewrote exp - if(!(unary->ctor.td->array || unary->ctor.exp)) +// if(!(unary->ctor.td->array || unary->ctor.exp)) emit_gc(emit, -SZ_INT); return GW_OK; } -- 2.43.0