printer: fix the write_ugly method for bclosure

We've made an implicit cast from bclosure to bytecodes, so instead of a name
we've printed bytecodes itself.

Except from thsi fix we also write the closure address to make it possible to
distinguish two different closures over the same function.
This commit is contained in:
Daniel Kochmański 2024-12-18 10:45:47 +01:00
parent 58ffd18cc5
commit 295dfc0cd8

View file

@ -56,13 +56,13 @@ _ecl_write_bclosure(cl_object x, cl_object stream)
if (ecl_print_readably()) {
_ecl_write_bytecodes_readably(x->bclosure.code, stream, x->bclosure.lex);
} else {
cl_object name = x->bytecodes.name;
cl_object name = x->bclosure.code->bytecodes.name;
writestr_stream("#<bytecompiled-closure ", stream);
if (name != ECL_NIL) {
si_write_ugly_object(name, stream);
} else {
_ecl_write_addr((void *)x, stream);
writestr_stream(" ", stream);
}
_ecl_write_addr((void *)x, stream);
ecl_write_char('>', stream);
}
}