[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