RFC, ensureHeaped
Steven Schveighoffer
schveiguy at yahoo.com
Tue Nov 16 10:31:43 PST 2010
On Tue, 16 Nov 2010 13:04:32 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> On 11/16/10 4:40 AM, Steven Schveighoffer wrote:
>> On Mon, 15 Nov 2010 17:02:27 -0500, bearophile
>> <bearophileHUGS at lycos.com> wrote:
>>> I have even suggested a transitive @noheap annotation, similar to
>>> @nothrow, that makes sure a function contains no heap allocations and
>>> doesn't call other things that perform heap allocations:
>>> http://d.puremagic.com/issues/show_bug.cgi?id=5219
>>> The proliferation of function attributes produces "interesting"
>>> results:
>>> @noheap @safe nothrow pure real sin(in real x) { ... }
>>
>> This is a bit much. Introducing these attributes is viral -- once you go
>> @noheap, anything you call must be @noheap, and the majority of
>> functions will need to be marked @noheap. The gain is marginal at best
>> anyways.
>
> Hm, interestingly a data qualifier @noheap would not need to be
> transitive as data on the stack may refer to data on the heap.
I think he means transitive the same way pure is transitive. Not sure
what the term would be, functionally transitive?
in other words, if your function is marked @noheap, it cannot allocate any
memory, which means it cannot call any *other* functions that allocate
memory.
-Steve
More information about the Digitalmars-d
mailing list