[cfe-dev] Modifying an AST and Sema's dependency on an AST consumer
steve naroff
snaroff at apple.com
Thu Dec 4 09:11:11 PST 2008
On Dec 4, 2008, at 12:04 PM, Ted Kremenek wrote:
> On Dec 4, 2008, at 8:42 AM, steve naroff <snaroff at apple.com> wrote:
>
>>
>> On Dec 4, 2008, at 11:27 AM, Ted Kremenek wrote:
>>
>>> On Dec 4, 2008, at 7:26 AM, steve naroff <snaroff at apple.com> wrote:
>>>
>>>>
>>>> On Dec 4, 2008, at 9:54 AM, Lukasz Janyst wrote:
>>>>
>>>>> On Wed, Dec 3, 2008 at 3:26 PM, Lukasz Janyst <ljanyst at cern.ch>
>>>>> wrote:
>>>>>> tables in it. Yet still I seem to experience some strange memory
>>>>>> issues when the modified TU gets processed by the CodeGen.
>>>>>
>>>>> I sorted it out. The problem was the object ownership. It seemed
>>>>> natural to me that the identifier table should be owned by the
>>>>> ASTContext, but it is owned by the Preprocessor object which I
>>>>> deleted
>>>>> after I was done with the parsing.
>>>>>
>>>>
>>>> The IdentifierTable should be owned by ASTContext (as you
>>>> expected).
>>>>
>>>> This is a bug (that I thought we fixed a long time ago...apparently
>>>> not).
>>>>
>>>> snaroff
>>>
>>> I don't think this is a bug. See my other email.
>>
>> Hey Ted,
>>
>> I read your email but I'm still not convinced there isn't an issue
>> here (though it certainly isn't critical to deal with now).
>>
>> No doubt that running the preprocessor standalone will require an
>> IdentifierTable.
>>
>> When a preprocessor is being run in a larger context (where AST's
>> are being generated), it makes more sense (to me) if the "larger
>> context" owns the IdentifierTable. In this instance, ASTContext.
>>
>> From my perspective, an instance of the Preprocessor is transient,
>> while ASTContext is more long-lived.
>
> That's a fair argument, as a Preprocessor is more of a "worker"
> object that is used to do a single pass over the source in a
> translation unit. One possible solution is to have the
> IdentifierTable object be passed-by-reference to the constructor of
> Preprocessor with the assumption that the ownership of the
> IdentifiedTable lies elsewhere.
>
> I'm not certain, however, what the performance implications would be
> of such a change. After mucking around in the Preprocessor for the
> last couple of weeks I'm convinced that even small changes can have
> an unanticipated adverse effect on performance.
Understood. I don't think we need to act on this now.
snaroff
More information about the cfe-dev
mailing list