[svn:parrot] r49371 - branches/generational_gc/src
bacek at svn.parrot.org
bacek at svn.parrot.org
Tue Sep 28 23:17:10 UTC 2010
Author: bacek
Date: Tue Sep 28 23:17:09 2010
New Revision: 49371
URL: https://trac.parrot.org/parrot/changeset/49371
Log:
Add write barriers where we are changing Sub PMC directly.
Modified:
branches/generational_gc/src/multidispatch.c
Modified: branches/generational_gc/src/multidispatch.c
==============================================================================
--- branches/generational_gc/src/multidispatch.c Tue Sep 28 20:56:46 2010 (r49370)
+++ branches/generational_gc/src/multidispatch.c Tue Sep 28 23:17:09 2010 (r49371)
@@ -560,6 +560,7 @@
if (PMC_IS_NULL(converted_sig))
return PMCNULL;
+ Parrot_gc_write_barrier(interp, sub_pmc);
multi_sig = sub->multi_signature = converted_sig;
}
@@ -598,6 +599,7 @@
GETATTR_NativePCCMethod_mmd_long_signature(interp, pmc, long_sig);
multi_sig = mmd_build_type_tuple_from_long_sig(interp, long_sig);
+ Parrot_gc_write_barrier(interp, pmc);
SETATTR_NativePCCMethod_mmd_multi_sig(interp, pmc, multi_sig);
}
}
@@ -608,6 +610,7 @@
GETATTR_NCI_long_signature(interp, pmc, long_sig);
multi_sig = mmd_build_type_tuple_from_long_sig(interp, long_sig);
+ Parrot_gc_write_barrier(interp, pmc);
SETATTR_NCI_multi_sig(interp, pmc, multi_sig);
}
}
@@ -979,6 +982,8 @@
/* Attach a type tuple array to the sub for multi dispatch */
PMC *multi_sig = mmd_build_type_tuple_from_type_list(interp, type_list);
+ Parrot_gc_write_barrier(interp, sub_obj);
+
if (sub_obj->vtable->base_type == enum_class_NativePCCMethod) {
SETATTR_NativePCCMethod_mmd_multi_sig(interp, sub_obj, multi_sig);
}
@@ -1027,6 +1032,8 @@
PMC *multi_sig = mmd_build_type_tuple_from_long_sig(interp,
long_sig_str);
+ Parrot_gc_write_barrier(interp, sub_obj);
+
VTABLE_set_pointer_keyed_str(interp, sub_obj, short_sig_str,
F2DPTR(multi_func_ptr));
@@ -1072,6 +1079,8 @@
/* Create an NCI sub for the C function */
PMC *sub_obj = Parrot_pmc_new_constant(interp, enum_class_NCI);
+ Parrot_gc_write_barrier(interp, sub_obj);
+
VTABLE_set_pointer_keyed_str(interp, sub_obj, short_sig,
F2DPTR(func_ptr));
More information about the parrot-commits
mailing list