[fpc-devel] mising ansi string ref increase
Martin
fpc at mfriebe.de
Thu Jul 22 12:17:50 CEST 2010
On 22/07/2010 11:06, Martin wrote:
> On 22/07/2010 09:57, Sergei Gorelkin wrote:
>> Martin пишет:
>>>
>>> Anyone any idea, if there s any code that could cause such an
>>> "optimization" ?
>>>
>> This is by design. 'const' modifier on ansistring and other 'managed'
>> type arguments instucts the compiler to omit refcount changes,
>> yielding a faster code. At the same time it prohibits direct
>> modification to the argument, but nothing can be done if you modify
>> another location that aliases the argument.
>> If you need proper refcounting, you should pass the argument by value
>> (i.e. without 'const' modifier).
>
> So, no need to report as bug then?
Btw, just an idea.
A possibility (probably quicker than inc-string-ref) would be:
In the case that other (none local) strings are used (and modified)
inside such a function/procedure then they are compared (just the
pointer) to the const argument. If equal, then inc-ref can still be called.
Optimization (later) could spot localization of such checks => if the
other string is modified only in a certain spot, (if something) then
checks could be executed only if the conditional block was entered.
Martin
More information about the fpc-devel
mailing list