[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-hackers] [PATCH][5] Make temporary stack resizable (fixes #
From: |
felix . winkelmann |
Subject: |
Re: [Chicken-hackers] [PATCH][5] Make temporary stack resizable (fixes #1098) |
Date: |
Sun, 01 Nov 2015 01:36:53 +0100 |
> Hi all,
>
> Now that we're using argvectors, we're no longer limited by any arbitrary
> C macros or platform-specific hacks. The only two things that determine
> the number of arguments that can be passed to a procedure are:
>
> 1) The size of the C stack (because that's where argvectors are allocated)
> 2) The size of the temporary stack (because that's where argvectors are
> copied for safekeeping during GC, which blows away the stack)
>
> For now, fixing 1) is a bit of overkill, though it might be possible by
> allocating argvectors in the heap. Doing this will be tricky because now
> we're assuming everywhere that the stack is to be used for argvectors.
>
> But 2) has been a thorn in my side for a long time. It gets dangerously
> close to the "arbitrary limitations" that the Scheme way of life always
> tries so hard to avoid. Especially since the temporary stack can easily
> be resized!
Is this really necessary? I think runtime.c is already complicated enough as it
is. I understand your intent, but I'm always wary of "arbitrary fixes to
reasonable
limitations, just because they are limitations". I think an arg-limit makes
sense,
there are certain constructs that don't scale. If I have to pass 10 million
arguments
to a procedure, I'm probably doing something wrong.
felix