Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/orc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'orc/orccompiler.c')
-rw-r--r--orc/orccompiler.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index 7f7b4d4..a391e86 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -6,6 +6,10 @@
#include <stdlib.h>
#include <stdarg.h>
+#if defined(HAVE_PTHREAD_JIT)
+ #include <pthread.h>
+#endif
+
#if defined(HAVE_CODEMEM_VIRTUALALLOC)
#include <windows.h>
#ifdef ORC_WINAPI_ONLY_APP
@@ -122,6 +126,11 @@ _orc_compiler_init (void)
}
}
#endif
+
+#if defined(HAVE_PTHREAD_JIT)
+ ORC_INFO("pthread_jit_write_protect_supported_np() = %i",
+ pthread_jit_write_protect_supported_np());
+#endif
}
int
@@ -447,6 +456,9 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
program->orccode->code_size = compiler->codeptr - compiler->code;
orc_code_allocate_codemem (program->orccode, program->orccode->code_size);
+#if defined(HAVE_PTHREAD_JIT)
+ pthread_jit_write_protect_np(0);
+#endif
#if defined(HAVE_CODEMEM_VIRTUALALLOC)
/* Ensure that code region is writable before memcpy */
_set_virtual_protect (program->orccode->code, program->orccode->code_size,
@@ -463,6 +475,9 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
compiler->target->flush_cache (program->orccode);
}
+#if defined(HAVE_PTHREAD_JIT)
+ pthread_jit_write_protect_np(1);
+#endif
#if defined(HAVE_CODEMEM_VIRTUALALLOC)
/* Code region is now ready for execution */
if (!_set_virtual_protect (program->orccode->exec, program->orccode->code_size,