summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/pcre/sljit/sljitExecAllocator.c
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2013-12-16 11:11:47 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-19 17:23:29 +0100
commit492d922207a318b721a63f7c2b46d5d5012df1cf (patch)
tree9ffbf28515d4a7b1dd772fcb1cb7a5979c235974 /src/3rdparty/pcre/sljit/sljitExecAllocator.c
parent2975aa39e67e234e6478ed056da4d1b0995b121f (diff)
Upgrade the PCRE bundle to 8.34
New upstream version, changelogs at: http://pcre.org/news.txt http://pcre.org/changelog.txt Qt still requires 8.30. Change-Id: I76794a3079601b07c469b952367f71f794079edc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/3rdparty/pcre/sljit/sljitExecAllocator.c')
-rw-r--r--src/3rdparty/pcre/sljit/sljitExecAllocator.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/3rdparty/pcre/sljit/sljitExecAllocator.c b/src/3rdparty/pcre/sljit/sljitExecAllocator.c
index 75a38991d5..f24ed33797 100644
--- a/src/3rdparty/pcre/sljit/sljitExecAllocator.c
+++ b/src/3rdparty/pcre/sljit/sljitExecAllocator.c
@@ -287,3 +287,26 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr)
allocator_release_lock();
}
+
+SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void)
+{
+ struct free_block* free_block;
+ struct free_block* next_free_block;
+
+ allocator_grab_lock();
+
+ free_block = free_blocks;
+ while (free_block) {
+ next_free_block = free_block->next;
+ if (!free_block->header.prev_size &&
+ AS_BLOCK_HEADER(free_block, free_block->size)->size == 1) {
+ total_size -= free_block->size;
+ sljit_remove_free_block(free_block);
+ free_chunk(free_block, free_block->size + sizeof(struct block_header));
+ }
+ free_block = next_free_block;
+ }
+
+ SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks));
+ allocator_release_lock();
+}