[svn:parrot] r49476 - in branches/generational_gc: include/parrot src/call

bacek at svn.parrot.org bacek at svn.parrot.org
Fri Oct 8 10:57:59 UTC 2010


Author: bacek
Date: Fri Oct  8 10:57:58 2010
New Revision: 49476
URL: https://trac.parrot.org/parrot/changeset/49476

Log:
Add write barriers to CallContext mutable accessors

Modified:
   branches/generational_gc/include/parrot/context.h
   branches/generational_gc/src/call/context_accessors.c

Modified: branches/generational_gc/include/parrot/context.h
==============================================================================
--- branches/generational_gc/include/parrot/context.h	Thu Oct  7 23:23:49 2010	(r49475)
+++ branches/generational_gc/include/parrot/context.h	Fri Oct  8 10:57:58 2010	(r49476)
@@ -213,30 +213,34 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_caller_ctx_func(SHIM_INTERP,
+void Parrot_pcc_set_caller_ctx_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN(PMC *caller_ctx))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
-void Parrot_pcc_set_constants_func(SHIM_INTERP,
+void Parrot_pcc_set_constants_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN(struct PackFile_ConstTable *ct))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-void Parrot_pcc_set_continuation_func(SHIM_INTERP,
+void Parrot_pcc_set_continuation_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(PMC *_continuation))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_handlers_func(SHIM_INTERP,
+void Parrot_pcc_set_handlers_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN(PMC *handlers))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
@@ -245,41 +249,47 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_lex_pad_func(SHIM_INTERP,
+void Parrot_pcc_set_lex_pad_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN(PMC *lex_pad))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-void Parrot_pcc_set_namespace_func(SHIM_INTERP,
+void Parrot_pcc_set_namespace_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(PMC *_namespace))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_object_func(SHIM_INTERP,
+void Parrot_pcc_set_object_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(PMC *object))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_outer_ctx_func(SHIM_INTERP,
+void Parrot_pcc_set_outer_ctx_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN(PMC *outer_ctx))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
-void Parrot_pcc_set_pc_func(SHIM_INTERP,
+void Parrot_pcc_set_pc_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(opcode_t *pc))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_pcc_set_signature_func(SHIM_INTERP,
+void Parrot_pcc_set_signature_func(PARROT_INTERP,
     ARGIN(PMC *ctx),
     ARGIN_NULLOK(PMC *sig_object))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
@@ -379,33 +389,43 @@
        PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_caller_ctx_func \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx) \
     , PARROT_ASSERT_ARG(caller_ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_constants_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx) \
     , PARROT_ASSERT_ARG(ct))
 #define ASSERT_ARGS_Parrot_pcc_set_continuation_func \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_handlers_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx) \
     , PARROT_ASSERT_ARG(handlers))
 #define ASSERT_ARGS_Parrot_pcc_set_HLL_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_lex_pad_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx) \
     , PARROT_ASSERT_ARG(lex_pad))
 #define ASSERT_ARGS_Parrot_pcc_set_namespace_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_object_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_outer_ctx_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx) \
     , PARROT_ASSERT_ARG(outer_ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_pc_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_set_signature_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(ctx))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ctx))
 #define ASSERT_ARGS_Parrot_pcc_trace_flags_off_func \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(ctx))

Modified: branches/generational_gc/src/call/context_accessors.c
==============================================================================
--- branches/generational_gc/src/call/context_accessors.c	Thu Oct  7 23:23:49 2010	(r49475)
+++ branches/generational_gc/src/call/context_accessors.c	Fri Oct  8 10:57:58 2010	(r49476)
@@ -98,12 +98,13 @@
 PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 void
-Parrot_pcc_set_constants_func(SHIM_INTERP, ARGIN(PMC *ctx),
+Parrot_pcc_set_constants_func(PARROT_INTERP, ARGIN(PMC *ctx),
         ARGIN(struct PackFile_ConstTable *ct))
 {
     ASSERT_ARGS(Parrot_pcc_set_constants_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->num_constants = ct->num.constants;
     c->str_constants = ct->str.constants;
     c->pmc_constants = ct->pmc.constants;
@@ -197,12 +198,13 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_caller_ctx_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *caller_ctx))
+Parrot_pcc_set_caller_ctx_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *caller_ctx))
 {
     ASSERT_ARGS(Parrot_pcc_set_caller_ctx_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
     PARROT_ASSERT(caller_ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->caller_ctx = caller_ctx;
 }
 
@@ -233,11 +235,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_outer_ctx_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *outer_ctx))
+Parrot_pcc_set_outer_ctx_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *outer_ctx))
 {
     ASSERT_ARGS(Parrot_pcc_set_outer_ctx_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->outer_ctx = outer_ctx;
 }
 
@@ -267,11 +270,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_lex_pad_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *lex_pad))
+Parrot_pcc_set_lex_pad_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *lex_pad))
 {
     ASSERT_ARGS(Parrot_pcc_set_lex_pad_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->lex_pad = lex_pad;
 }
 
@@ -302,11 +306,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_namespace_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *_namespace))
+Parrot_pcc_set_namespace_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *_namespace))
 {
     ASSERT_ARGS(Parrot_pcc_set_namespace_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->current_namespace = _namespace;
 }
 
@@ -371,11 +376,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_handlers_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *handlers))
+Parrot_pcc_set_handlers_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN(PMC *handlers))
 {
     ASSERT_ARGS(Parrot_pcc_set_handlers_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->handlers = handlers;
 }
 
@@ -406,11 +412,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_continuation_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *_continuation))
+Parrot_pcc_set_continuation_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *_continuation))
 {
     ASSERT_ARGS(Parrot_pcc_set_continuation_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->current_cont = _continuation;
 }
 
@@ -441,11 +448,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_signature_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *sig_object))
+Parrot_pcc_set_signature_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *sig_object))
 {
     ASSERT_ARGS(Parrot_pcc_set_signature_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->current_sig = sig_object;
 }
 
@@ -475,11 +483,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_object_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *object))
+Parrot_pcc_set_object_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *object))
 {
     ASSERT_ARGS(Parrot_pcc_set_object_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->current_object = object;
 }
 
@@ -509,11 +518,12 @@
 
 PARROT_EXPORT
 void
-Parrot_pcc_set_pc_func(SHIM_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(opcode_t *pc))
+Parrot_pcc_set_pc_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(opcode_t *pc))
 {
     ASSERT_ARGS(Parrot_pcc_set_pc_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
     PARROT_ASSERT(ctx->vtable->base_type == enum_class_CallContext);
+    Parrot_gc_write_barrier(interp, ctx);
     c->current_pc = pc;
 }
 


More information about the parrot-commits mailing list