Yet another strike against the current AA implementation

Georg Wrede georg.wrede at iki.fi
Wed Apr 29 10:49:27 PDT 2009


Andrei Alexandrescu wrote:
> Georg Wrede wrote:
>> Andrei Alexandrescu wrote:
>>> Georg Wrede wrote:
>>>> Andrei Alexandrescu wrote:
>>>>> Computing the stack depth even for non-recursive functions is an 
>>>>> interprocedural analysis so it's difficult to do modularly. The 
>>>>> stack is also unchecked so going with a "good enough" approximation 
>>>>> is bound to be risky.
>>>>
>>>> The old size estimation problem. No matter how big you decide on, 
>>>> somewhere is an idiot who will blow that size too.
>>>>
>>>>
>>>> A runtime solution just occurred to me. The newly allocated stack 
>>>> for a thread is zeroed first, right? Well then, just before the 
>>>> thread finishes, one could scan the stack area, and find the first 
>>>> address that contains a non-zero value.
>>>>
>>>> This isn't bullet proof in theory, but hey, the aim is to help in 
>>>> /estimating/ the needed stack size.
>>>
>>> You can't be more serious than Mark Twain when giving advice on the 
>>> stock market: "Buy some stock. If it goes up, sell it. If it doesn't 
>>> go up, don't buy it."
>>
>> I'd be amazed if the stack usage of hello.d varied from run to run.
> 
> I'd be amazed if hello.d were your prototype of a useful program :o).

Somebody more resourceful than I might /prove/ some maximum for any 
program that doesn't use recursion (be it implicit or explicit 
recursion). Hello.d attempted to be an example of such a program.

> Let's face it. Any program that uses mutual recursion of any kind (even 
> when the user did not set out to use recursion) or that uses alloca 
> (fewer), is bound to have the consumed stack dependent on the input. 

Of course. And there's a limit to the stack size, ultimately at the 
hardware level. For any increase in available stack size, the 
probability of an out-of-stack exception decreases, never reaching zero. 
I agree.

> Even without recursion, various traces of a program depend on a data and 
> have different stack depths. That's why your estimate is utterly 
> useless.

It'd be useless if we were attempting to give 100.000% guarantees.

> I can't believe you brought it up as anything else but jesting 
> (maybe you are and I'm not getting it).

Jesting on a level where you might not get it, wouldn't be fun. And 
definitely boring and confusing to the rest of the crowd. :-)

Maybe I'll have to dig up prior art, or something. Clearly I'm not 
qualified to properly defend the validity of this idea.




More information about the Digitalmars-d mailing list