QRegularExpression: improve JIT memory handling
authorGiuseppe D'Angelo <dangelog@gmail.com>
Thu, 23 Feb 2012 02:53:08 +0000 (02:53 +0000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 8 Mar 2012 21:00:47 +0000 (22:00 +0100)
commitb5431419923e8f00e2d8a4a75a20f75f66241842
treeb2fcea2e3933c6fa4e4a98afb0b5f41eeb986994
parentc35d65e27d9232452d2e57973cdb132181440bbf
QRegularExpression: improve JIT memory handling

PCRE's JIT uses by default 32K on the pcre_exec caller's stack. This
is fine for most situations, but in some cases (esp. patterns with
lot of recursion) more memory is required.

Therefore, if a match execution fails due to exhausting JIT memory,
we let PCRE allocate up to 512KB to be used for the JIT's stack.

The pointer to the allocated memory is put in thread local storage
(so it can be reused from the same thread, if needed, and automatically
goes away when the thread dies).

Change-Id: Ica5fb7d517068befff88ebb198a603a26ec5d8a7
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
src/corelib/tools/qregularexpression.cpp
tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp
tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h