[PATCH] Some infrastructure work for virtual file system (now on phab)

Douglas Gregor dgregor at apple.com
Wed Feb 12 14:37:23 PST 2014


On Feb 12, 2014, at 2:32 PM, Rafael Espíndola <rafael.espindola at gmail.com> wrote:

>>> Why is the reference count necessary? Given its nature I would expect the FS to outlive the file manger, in which case the FileManager could have just a pointer to the FileSystem.
>> 
>> 
>> The FS is likely to get shared among a number of FileManagers in different compiler instances within a thread. Yes, we could try to establish and maintain relationships among these, but it’s simpler and costs us effectively nothing to make this ref-counted.
> 
> It costs simplicity in understanding the code. If there is a complex
> logic as to when a FS needs to be created, I can understand that a
> reference count might be semantically the simplest option.

Look at CompilerInstance. It has a number of IntrusiveRefCntPtr’s that exist because we consistently ran into problems with other clients needing to hold onto these core, cooperating objects for longer than the given CompilerInstance. ASTUnit is one of the major culprits here, but it’s not the only one.

> But is it not the case that
> * A clang process will always use a single FS.
> * The decision as to which to use can happen just after parsing the
> command line arguments?


We may spawn a number of Clang invocations within the same thread to build modules from headers, and they all need to share the same FS.

	- Doug





More information about the cfe-commits mailing list