[svn:parrot] r44764 - branches/tt1015/src/pmc
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Mon Mar 8 19:51:26 UTC 2010
Author: plobsing
Date: Mon Mar 8 19:51:23 2010
New Revision: 44764
URL: https://trac.parrot.org/parrot/changeset/44764
Log:
add freeze/thaw for NCI so it can be cloned by VisitClone
Modified:
branches/tt1015/src/pmc/nci.pmc
Modified: branches/tt1015/src/pmc/nci.pmc
==============================================================================
--- branches/tt1015/src/pmc/nci.pmc Mon Mar 8 19:20:56 2010 (r44763)
+++ branches/tt1015/src/pmc/nci.pmc Mon Mar 8 19:51:23 2010 (r44764)
@@ -272,6 +272,31 @@
return ret;
}
+ VTABLE void freeze(PMC *visit) {
+ Parrot_NCI_attributes * const nci = PARROT_NCI(SELF);
+
+ VTABLE_push_integer(INTERP, visit, nci->func);
+ VTABLE_push_integer(INTERP, visit, nci->orig_func);
+ VTABLE_push_string(INTERP, visit, nci->signature);
+ VTABLE_push_string(INTERP, visit, nci->pcc_params_signature);
+ VTABLE_push_integer(INTERP, visit, nci->arity);
+ VTABLE_push_integer(INTERP, visit, nci->jitted);
+ VTABLE_push_integer(INTERP, visit, PObj_get_FLAGS(SELF) & 0x7);
+ }
+
+ VTABLE void thaw(PMC *visit) {
+ Parrot_NCI_attributes * const nci = PARROT_NCI(SELF);
+
+ nci->func = VTABLE_shift_integer(INTERP, visit);
+ nci->orig_func = VTABLE_shift_integer(INTERP, visit);
+ nci->signature = VTABLE_shift_string(INTERP, visit);
+ nci->pcc_params_signature = VTABLE_shift_string(INTERP, visit);
+ nci->arity = VTABLE_shift_integer(INTERP, visit);
+ nci->jitted = VTABLE_shift_integer(INTERP, visit);
+ PObj_get_FLAGS(SELF) |= VTABLE_shift_integer(INTERP, visit);
+ }
+
+
/*
=item C<INTVAL defined()>
More information about the parrot-commits
mailing list