[svn:parrot] r49760 - branches/gsoc_nci/src/pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Mon Nov 1 00:06:05 UTC 2010
Author: plobsing
Date: Mon Nov 1 00:06:05 2010
New Revision: 49760
URL: https://trac.parrot.org/parrot/changeset/49760
Log:
fix calculation of number of elements in values
Modified:
branches/gsoc_nci/src/pmc/nci.pmc
Modified: branches/gsoc_nci/src/pmc/nci.pmc
==============================================================================
--- branches/gsoc_nci/src/pmc/nci.pmc Sun Oct 31 16:27:16 2010 (r49759)
+++ branches/gsoc_nci/src/pmc/nci.pmc Mon Nov 1 00:06:05 2010 (r49760)
@@ -492,18 +492,8 @@
}
{
- size_t values_size = 0;
-
- /* Add up the size of memory needed for the actual call */
- for (i = 0; i < (size_t)nci_info->arity; i++) {
- values_size += cif->arg_types[i]->size;
- }
-
- /* Allocate enough room for the values passed to the ffi function plus add some
- padding just to be sure we have enough space. */
- values = mem_internal_allocate_zeroed(values_size + 2 * sizeof(void*));
- /* Middle man is used to contain */
- middle_man = mem_internal_allocate_n_zeroed_typed(nci_info->arity, void*);
+ values = mem_gc_allocate_n_zeroed_typed(interp, nci_info->arity, void *);
+ middle_man = mem_gc_allocate_n_zeroed_typed(interp, nci_info->arity, void *);
/*
* Apply Argument Transformations
@@ -634,7 +624,7 @@
* This will allow for any type of datat to be returned.
* Including one day Structures
*/
- return_data = mem_internal_allocate_zeroed(cif->rtype->size);
+ return_data = mem_sys_allocate(cif->rtype->size);
ffi_call(cif, FFI_FN(func), return_data, values);
@@ -744,9 +734,9 @@
}
}
- mem_sys_free(middle_man);
- mem_sys_free(return_data);
- mem_sys_free(values);
+ mem_gc_free(interp, middle_man);
+ mem_gc_free(interp, return_data);
+ mem_gc_free(interp, values);
cont = INTERP->current_cont;
More information about the parrot-commits
mailing list