erichkeane added a comment.

In https://reviews.llvm.org/D54547#1301351, @voskresensky.vladimir wrote:

> I have some experience with PTH implementation, because had to fix it for 
> Java-port of Clang (https://github.com/java-port/clank).
>
> It was sometime ago, but making it completely workable was not hard.
>  As I remember the key fix was just to have PTH be EMITTED using raw-Lex mode 
> (where real keyword-IDs are not used, so all Token Kinds nicely fit 8-bits).
>  It worked, because on token automatically became keyword by PTHLexer::Lex:
>  ...
>
>      // Change the kind of this identifier to the appropriate token kind, e.g.
>      // turning "for" into a keyword.
>   Tok.setKind(II->getTokenID());
>
> ...
>
> We used PTH, because multiple translation units are parsed in the context of 
> single run.
>  In this case preprocessing phase was upto 10x faster when token stream was 
> deserialized from PTH (i.e. for all system headers lexed once).
>  Also it was helpful, because we were able to parse from concurrent threads 
> using the same shared immutable mmaped PTH.
>
> I thought clang-d service is using it to speed up indexing.


Presumably, I could also just make PTH use another bit or two for the TokenID 
and it would work fine.  However, when I mentioned this on IRC the general 
response was that it is a 'failed experiment'.  In your use case, I wonder why 
you couldn't just use PCH and get even further performance improvements?


https://reviews.llvm.org/D54547



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to