[svn:parrot] r37991 - in trunk: config/gen/platform config/gen/platform/generic config/gen/platform/openbsd src src/jit/i386
Infinoid at svn.parrot.org
Infinoid at svn.parrot.org
Thu Apr 9 02:03:14 UTC 2009
Author: Infinoid
Date: Thu Apr 9 02:03:12 2009
New Revision: 37991
URL: https://trac.parrot.org/parrot/changeset/37991
Log:
[core] Extend the mem_free_executable() API to always take a "size" argument. (needed for munmap)
Extend mem_realloc_executable() to add an "oldsize" argument. (needed for mremap)
Modified:
trunk/config/gen/platform/generic/memexec.c
trunk/config/gen/platform/openbsd/memexec.c
trunk/config/gen/platform/platform_interface.h
trunk/src/jit.c
trunk/src/jit/i386/jit_defs.c
Modified: trunk/config/gen/platform/generic/memexec.c
==============================================================================
--- trunk/config/gen/platform/generic/memexec.c Wed Apr 8 23:50:11 2009 (r37990)
+++ trunk/config/gen/platform/generic/memexec.c Thu Apr 9 02:03:12 2009 (r37991)
@@ -47,21 +47,23 @@
/*
-=item C<void mem_free_executable(void *p)>
+=item C<void mem_free_executable(void *p, size_t)>
+
+Free a buffer allocated with mem_alloc_executable().
=cut
*/
void
-mem_free_executable(void *p)
+mem_free_executable(void *p, size_t size)
{
free(p);
}
/*
-=item C<void * mem_realloc_executable(void* oldp, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
Reallocate executable memory
Round up to page size because the whole page will be marked as executable
@@ -72,7 +74,7 @@
*/
void *
-mem_realloc_executable(void* oldp, size_t newsize)
+mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)
{
void *temp;
void *newp;
Modified: trunk/config/gen/platform/openbsd/memexec.c
==============================================================================
--- trunk/config/gen/platform/openbsd/memexec.c Wed Apr 8 23:50:11 2009 (r37990)
+++ trunk/config/gen/platform/openbsd/memexec.c Thu Apr 9 02:03:12 2009 (r37991)
@@ -49,21 +49,23 @@
/*
-=item C<void mem_free_executable(void *p)>
+=item C<void mem_free_executable(void *p, size_t size)>
+
+Free a buffer allocated with mem_alloc_executable().
=cut
*/
void
-mem_free_executable(void *p)
+mem_free_executable(void *p, size_t size)
{
free(p);
}
/*
-=item C<void * mem_realloc_executable(void* oldp, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
Reallocate executable memory
Round up to page size because the whole page will be marked as executable
@@ -73,7 +75,7 @@
*/
void *
-mem_realloc_executable(void* oldp, size_t newsize)
+mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)
{
size_t pagesize = sysconf(_SC_PAGESIZE);
size_t roundup = (newsize + pagesize - 1) & ~(pagesize-1);
Modified: trunk/config/gen/platform/platform_interface.h
==============================================================================
--- trunk/config/gen/platform/platform_interface.h Wed Apr 8 23:50:11 2009 (r37990)
+++ trunk/config/gen/platform/platform_interface.h Thu Apr 9 02:03:12 2009 (r37991)
@@ -40,12 +40,12 @@
#ifdef PARROT_HAS_EXEC_PROTECT
void *mem_alloc_executable(size_t);
-void mem_free_executable(void *);
-void *mem_realloc_executable(void *, size_t);
+void mem_free_executable(void *, size_t);
+void *mem_realloc_executable(void *, size_t, size_t);
#else
# define mem_alloc_executable mem_sys_allocate
-# define mem_free_executable mem_sys_free
-# define mem_realloc_executable mem_sys_realloc
+# define mem_free_executable(a, b) mem_sys_free(a)
+# define mem_realloc_executable(a, b, c) mem_sys_realloc((a), (c))
#endif
void* Parrot_memcpy_aligned(void*, void*, size_t);
Modified: trunk/src/jit.c
==============================================================================
--- trunk/src/jit.c Wed Apr 8 23:50:11 2009 (r37990)
+++ trunk/src/jit.c Thu Apr 9 02:03:12 2009 (r37991)
@@ -1257,7 +1257,7 @@
}
/* arena stuff */
mem_sys_free(jit_info->arena.op_map);
- mem_free_executable(jit_info->arena.start);
+ mem_free_executable(jit_info->arena.start, jit_info->arena.size);
fixup = jit_info->arena.fixups;
while (fixup) {
next_f = fixup->next;
@@ -1525,7 +1525,7 @@
Parrot_jit_extend_arena(jit_info);
#else
new_arena = (char *)mem_realloc_executable(jit_info->arena.start,
- (size_t)jit_info->arena.size * 2);
+ jit_info->arena.size, (size_t)jit_info->arena.size * 2);
jit_info->arena.size *= 2;
jit_info->native_ptr = new_arena +
(jit_info->native_ptr - jit_info->arena.start);
Modified: trunk/src/jit/i386/jit_defs.c
==============================================================================
--- trunk/src/jit/i386/jit_defs.c Wed Apr 8 23:50:11 2009 (r37990)
+++ trunk/src/jit/i386/jit_defs.c Thu Apr 9 02:03:12 2009 (r37991)
@@ -2289,7 +2289,7 @@
case '2':
case '3':
case '4':
- mem_free_executable(jit_info.native_ptr);
+ mem_free_executable(jit_info.native_ptr, JIT_ALLOC_SIZE);
return NULL;
break;
/* This might be right. Or not... */
@@ -2306,7 +2306,7 @@
* oops unknown signature:
* cleanup and try nci.c
*/
- mem_free_executable(jit_info.native_ptr);
+ mem_free_executable(jit_info.native_ptr, JIT_ALLOC_SIZE);
return NULL;
}
args_offset +=4;
@@ -2435,7 +2435,7 @@
* oops unknown signature:
* cleanup and try nci.c
*/
- mem_free_executable(jit_info.native_ptr);
+ mem_free_executable(jit_info.native_ptr, JIT_ALLOC_SIZE);
return NULL;
}
More information about the parrot-commits
mailing list