[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