[svn:parrot] r49742 - in branches/gsoc_nci: config/gen/libffi src/pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Sun Oct 31 01:24:40 UTC 2010
Author: plobsing
Date: Sun Oct 31 01:24:40 2010
New Revision: 49742
URL: https://trac.parrot.org/parrot/changeset/49742
Log:
add string nci argument translation and simplify nci.mark()
Modified:
branches/gsoc_nci/config/gen/libffi/nci-ffi.pmc.in
branches/gsoc_nci/src/pmc/nci.pmc
Modified: branches/gsoc_nci/config/gen/libffi/nci-ffi.pmc.in
==============================================================================
--- branches/gsoc_nci/config/gen/libffi/nci-ffi.pmc.in Sat Oct 30 23:37:17 2010 (r49741)
+++ branches/gsoc_nci/config/gen/libffi/nci-ffi.pmc.in Sun Oct 31 01:24:40 2010 (r49742)
@@ -267,16 +267,15 @@
*/
VTABLE void mark() {
- if (PARROT_NCI(SELF)) {
- Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
+ Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
- Parrot_gc_mark_PMC_alive(interp, nci_info->fb_info);
- Parrot_gc_mark_STRING_alive(interp, nci_info->sig_str);
- Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_params_signature);
- Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_return_signature);
- Parrot_gc_mark_STRING_alive(interp, nci_info->long_signature);
- Parrot_gc_mark_PMC_alive(interp, nci_info->multi_sig);
- }
+ Parrot_gc_mark_PMC_alive(interp, nci_info->fb_info);
+ Parrot_gc_mark_PMC_alive(interp, nci_info->signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->sig_str);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_params_signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_return_signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->long_signature);
+ Parrot_gc_mark_PMC_alive(interp, nci_info->multi_sig);
}
/*
@@ -476,6 +475,10 @@
values[i] = &interp;
j_offset++;
break;
+ case enum_nci_sig_string:
+ translation_pointers[i] = *(STRING**)pcc_val[i - j_offset];
+ values[i] = &translation_pointers[i];
+ break;
case enum_nci_sig_cstring:
if (STRING_IS_NULL(*(STRING**)pcc_val[i - j_offset])) {
translation_pointers[i] = (char*) NULL;
Modified: branches/gsoc_nci/src/pmc/nci.pmc
==============================================================================
--- branches/gsoc_nci/src/pmc/nci.pmc Sat Oct 30 23:37:17 2010 (r49741)
+++ branches/gsoc_nci/src/pmc/nci.pmc Sun Oct 31 01:24:40 2010 (r49742)
@@ -267,16 +267,15 @@
*/
VTABLE void mark() {
- if (PARROT_NCI(SELF)) {
- Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
+ Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
- Parrot_gc_mark_PMC_alive(interp, nci_info->fb_info);
- Parrot_gc_mark_STRING_alive(interp, nci_info->sig_str);
- Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_params_signature);
- Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_return_signature);
- Parrot_gc_mark_STRING_alive(interp, nci_info->long_signature);
- Parrot_gc_mark_PMC_alive(interp, nci_info->multi_sig);
- }
+ Parrot_gc_mark_PMC_alive(interp, nci_info->fb_info);
+ Parrot_gc_mark_PMC_alive(interp, nci_info->signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->sig_str);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_params_signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_return_signature);
+ Parrot_gc_mark_STRING_alive(interp, nci_info->long_signature);
+ Parrot_gc_mark_PMC_alive(interp, nci_info->multi_sig);
}
/*
@@ -476,6 +475,10 @@
values[i] = &interp;
j_offset++;
break;
+ case enum_nci_sig_string:
+ translation_pointers[i] = *(STRING**)pcc_val[i - j_offset];
+ values[i] = &translation_pointers[i];
+ break;
case enum_nci_sig_cstring:
if (STRING_IS_NULL(*(STRING**)pcc_val[i - j_offset])) {
translation_pointers[i] = (char*) NULL;
More information about the parrot-commits
mailing list