[svn:parrot] r43880 - branches/op_pmcs/src/pmc

whiteknight at svn.parrot.org whiteknight at svn.parrot.org
Thu Feb 11 02:51:32 UTC 2010


Author: whiteknight
Date: Thu Feb 11 02:51:32 2010
New Revision: 43880
URL: https://trac.parrot.org/parrot/changeset/43880

Log:
add some plumbing that I had neglected

Modified:
   branches/op_pmcs/src/pmc/opcode.pmc
   branches/op_pmcs/src/pmc/oplib.pmc

Modified: branches/op_pmcs/src/pmc/opcode.pmc
==============================================================================
--- branches/op_pmcs/src/pmc/opcode.pmc	Thu Feb 11 02:47:56 2010	(r43879)
+++ branches/op_pmcs/src/pmc/opcode.pmc	Thu Feb 11 02:51:32 2010	(r43880)
@@ -5,6 +5,16 @@
     ATTR INTVAL op_number;
     ATTR STRING *full_name_cache;
 
+    VTABLE void init() {
+        PObj_custom_mark_SET(SELF);
+    }
+
+    VTABLE void mark() {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (attrs->full_name_cache)
+            Parrot_gc_mark_STRING_alive(INTERP, attrs->full_name_cache);
+    }
+
     VTABLE void set_pointer(void *i) {
         Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
         attrs->info = i;

Modified: branches/op_pmcs/src/pmc/oplib.pmc
==============================================================================
--- branches/op_pmcs/src/pmc/oplib.pmc	Thu Feb 11 02:47:56 2010	(r43879)
+++ branches/op_pmcs/src/pmc/oplib.pmc	Thu Feb 11 02:51:32 2010	(r43880)
@@ -1,6 +1,19 @@
 #include "parrot/parrot.h"
 
+static PMC *OPLIB_PMC_INSTANCE;
 pmclass OpLib {
+    void class_init() {
+        OPLIB_PMC_INSTANCE = NULL;
+    }
+
+    VTABLE void *get_pointer() {
+        return OPLIB_PMC_INSTANCE;
+    }
+
+    VTABLE void set_pointer(void *ptr) {
+        OPLIB_PMC_INSTANCE = (PMC *)ptr;
+    }
+
     VTABLE PMC *get_pmc_keyed_string(STRING *name) {
         PMC * const family = pmc_new(INTERP, enum_class_OpFamily);
         VTABLE_set_string_native(INTERP, name);


More information about the parrot-commits mailing list