[fpc-devel] Improving Ref Counting
Jamie McCracken
jamie-junk at blueyonder.co.uk
Sun Feb 27 13:22:09 CET 2005
Marco van de Voort wrote:
>>>a valid/invalid reference without accessing memory that is invalid in the mean
>>>time.
>>
>>How does a GC do this? It would have the same problem?
>
>
> A GC manages all memory, local variable allocation inclusive. IOW, the
> way a GC does it, is not possible in a mixed environment.
Are you saying it would be a managed pointer then which is allocated on
the heap? (I had assumed the pointer would be on the stack and the
object in the heap)
>
>
>>>Also note that the list of references must be a dynamically size structure,
>>>incurring getmem and size-change overhead on a simple assignment.
>>
>>yes a "single linked list" is a very efficient dynamically sized
>>structure and much cheaper than try..finally or using Tlist.
>
>
> It's very expensive. getmem is quite expensive, and you need it for every
> reference this way.
Okay then use Tlist with preallocation of say half a dozen references -
that should be efficient for 99% of cases for an individual object's
references.
>
>
>>>I doubt performance would improve, specially since the edge of this problem
>>>(the worst 90%) can be taken off by simply disabling try...finally generation
>>>in places where they are unlikely to happen.
>>
>>Is there a real failsafe way of doing that?
>
>
> Nothing is failsafe. However e.g. in RTL string routines exceptions
> shouldn't occur unless memory is exhausted, in case it doesn't matter
> much anyway.
What about all other non string exceptions that can occur between
creation and destruction of the ansistring?
Multithreaded environments too?
jamie.
>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
>
More information about the fpc-devel
mailing list