[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-hackers] [PATCH] Small types.db fixes and some notes/questi
Re: [Chicken-hackers] [PATCH] Small types.db fixes and some notes/questions
Sat, 21 Apr 2012 15:31:12 +0200 (CEST)
> - Maybe the C functions C_inexactp and such should be the ones that raise
> the exception, rather than the Scheme code? I don't know where else
> they are used or what's most consistent/clean.
I would recommend to keep error-checking code out of the C runtime part as
much as possible. This allows the C primitives to be used in an unsafe context,
reduces the overall body of C code used and is easier to maintain.
> - The rewrites in c-platform.scm seem kind of redundant with the rewrites
> done by the scrutinizer and possibly wrong for these cases too, so
> another potential hiding place for many bugs.
> Now that we have the scrutinizer I think they can probably be removed
> altogether without loss of performance in compiled code. This should
> also result in faster compilation times since the rewriting code seems
> rather complicated too (and it's hard to understand, so getting rid of
> it is probably a good idea maintenance-wise too).
> I'm just not sure whether all functionality is truly duplicated in
> types.db. Of course if we remove it, this should wait until after
> 4.8.0 is released.
I agree completely. Specialization makes many rewrites unnecessary.
> - I noticed that with -O4, the following code passes cleanly:
> (define-syntax assert-fail
> (syntax-rules ()
> ((_ exp) (assert (handle-exceptions ex #t exp #f)))))
> (assert (exact? 1))
> (assert (not (exact? 1)))
> (assert-fail (exact? 1))
> Could someone explain how this is possible? -debug o didn't
> really help, nor did ripping the rewrites from c-platform.scm
"assert" expands into "##core#check", which is removed in unsafe mode.