Parser::doBlockLevels() constructs regular expressions with unique strip markers. Each regular expression pattern is turned into a StaticString, which HHVM uses as a lookup key for the cached PCRE table. Since patterns with strip markers are unique by design, they are cache misses, and they get compiled and cached.
The results are:
- The PCRE table fills up with garbage (patterns that are identical save for the strip markers).
- Memory bloats with pattern StaticStrings.