Skip to content
  • Ted Kremenek's avatar
    SourceManager: Implement "lazy" creation of MemBuffers for source files. · 763ea559
    Ted Kremenek authored
    - Big Idea:
       Source files are now mmaped when ContentCache::getBuffer() is first called.
       While this doesn't change the functionality when lexing regular source files,
       it can result in source files not being paged in when using PTH.
    
    - Performance change:
      - No observable difference (-fsyntax-only/-Eonly) on Cocoa.h when doing
        regular source lexing.
      - No observable time difference (-fsyntax-only/-Eonly) on Cocoa.h when using
        PTH. We do observe, however, a reduction of 279K in memory mapped source
        code (3% reduction). The majority of pages from Cocoa.h (and friends) are
        still being pulled in, however, because any literal will cause
        Preprocessor::getSpelling() to be called (causing the source for the file to
        get pulled in). The next possible optimization is to cache literal strings
        in the PTH file to avoid the need for the original header sources entirely.
    
    - Right now there is a preprocessor directive to toggle between "lazy" and
      "eager" creation of MemBuffers. This is not permanent, and is there in the
      short term to just test additional optimizations.
    
    llvm-svn: 61827
    763ea559
Loading