[phobos] custom BlkAttr flags
Sean Kelly
sean at invisibleduck.org
Wed Jul 14 09:16:02 PDT 2010
Changed my mind. The array append doesn't really belong in the GC either, so it would simply be continuing a trend :-)
On Jul 14, 2010, at 8:51 AM, Sean Kelly wrote:
> Erm... I a potential issue is that this is moving some logic that could be considered runtime stuff into the GC. Should the GC simply accept a pointer to a custom finalization routine instead?
>
> For Andrei's suggestion, I think it's a good one, but I don't think it would work for arrays of structs.
>
> On Jul 14, 2010, at 8:44 AM, Sean Kelly wrote:
>
>> But in both cases, TypeInfo could be supplied (either at the point of allocation or set later). A bit would be more efficient however. Regarding how this would all work, I was thinking of redefining calloc as:
>>
>> void* calloc(TypeInfo ti, size_t count);
>>
>> So the TypeInfo would replace the 'size' argument from C. This makes calloc a lot more useful than just "malloc with bzero" as it is now.
>>
>> On Jul 14, 2010, at 3:26 AM, Steve Schveighoffer wrote:
>>
>>> I added the fix for the comma, sorry for that. All the other places had an
>>> ALL_BITS enum member, so the NO_MOVE line that I copied and changed had a
>>> comma. I thought I compiled before I checked in, but I guess I did not.
>>>
>>> Regarding the bit being flipped, yes I want the default meaning to be "no
>>> append" because anyone can allocate memory via GC.malloc for any purpose, and
>>> GC.malloc does not initialize the "allocated length" field inside the block, so
>>> it is not appendable. It does not mean you cannot append to the block, it just
>>> means the first append will reallocate into an appendable block.
>>>
>>> Regarding using the typeinfo, that doesn't work. Arrays can easily be created
>>> out of blocks that weren't allocated via the array creation routines. Think of
>>> void[], and GC.malloc above.
>>>
>>> -Steve
>>>
>>>
>>>
>>>
>>> ----- Original Message ----
>>>> From: Sean Kelly <sean at invisibleduck.org>
>>>> To: Discuss the phobos library for D <phobos at puremagic.com>
>>>> Sent: Wed, July 14, 2010 12:25:09 AM
>>>> Subject: Re: [phobos] custom BlkAttr flags
>>>>
>>>> On Jul 13, 2010, at 8:09 AM, Steve Schveighoffer wrote:
>>>>>
>>>>> What I propose to fix this is to allocate one of the block attribute flags
>>>> to
>>>>
>>>>> designate that a block is appendable. The odd part about it, is that the
>>>> GC is
>>>>
>>>>> not aware of appending, so it is somewhat of a "user-defined" flag.
>>>>>
>>>>> My question is, how should we declare the flag? I currently only defined it
>>>> in
>>>>
>>>>> lifetime.d, outside the gc, but I'm thinking it should be defined in the GC
>>>> as
>>>>
>>>>> well. Also, should I allocate the next bit, or one of the higher order
>>>> bits?
>>>>>
>>>>> I'm going to check in my code that defines it in lifetime.d only, and
>>>> depending
>>>>
>>>>> on the responses to this, I'll add it to the GC definition too.
>>>>
>>>> Your checkin doesn't compile. I added the requisite comma for now to fix
>>>> this. That aside, assuming this design were to be kept I think the meaning of
>>>> the bit has to be flipped. The bit defaults to unset, so that should be the
>>>> default meaning. You really don't want all blocks to be appendable by default,
>>>> do you? More generally, if we start holding TypeInfo references in the GC then
>>>> we should be able to determine appendabiility based on whether the TypeInfo is
>>>> an array type. This may not make the next release, but I'd like to address it
>>>> once I've polished std.concurrency a bit more.
>>>> _______________________________________________
>>>> phobos mailing list
>>>> phobos at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list