[svn:parrot] r40896 - in branches/context_pmc3: include/parrot src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Mon Aug 31 22:48:54 UTC 2009
Author: bacek
Date: Mon Aug 31 22:48:52 2009
New Revision: 40896
URL: https://trac.parrot.org/parrot/changeset/40896
Log:
Add get_regs_used accessor
Modified:
branches/context_pmc3/include/parrot/register.h
branches/context_pmc3/src/gc/alloc_register.c
Modified: branches/context_pmc3/include/parrot/register.h
==============================================================================
--- branches/context_pmc3/include/parrot/register.h Mon Aug 31 22:15:14 2009 (r40895)
+++ branches/context_pmc3/include/parrot/register.h Mon Aug 31 22:48:52 2009 (r40896)
@@ -104,6 +104,11 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+int Parrot_pcc_get_regs_used(PARROT_INTERP, ARGIN(PMC *ctx), int type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING ** Parrot_pcc_get_STRING_reg(PARROT_INTERP,
ARGIN(PMC *ctx),
@@ -159,6 +164,9 @@
#define ASSERT_ARGS_Parrot_pcc_get_PMC_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp) \
|| PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_Parrot_pcc_get_regs_used __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
#define ASSERT_ARGS_Parrot_pcc_get_STRING_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp) \
|| PARROT_ASSERT_ARG(ctx)
Modified: branches/context_pmc3/src/gc/alloc_register.c
==============================================================================
--- branches/context_pmc3/src/gc/alloc_register.c Mon Aug 31 22:15:14 2009 (r40895)
+++ branches/context_pmc3/src/gc/alloc_register.c Mon Aug 31 22:48:52 2009 (r40896)
@@ -467,7 +467,7 @@
{
ASSERT_ARGS(Parrot_clear_i)
int i;
- for (i = 0; i < CURRENT_CONTEXT_FIELD(interp, n_regs_used[REGNO_INT]); ++i)
+ for (i = 0; i < Parrot_pcc_get_regs_used(interp, CONTEXT(interp), REGNO_INT); ++i)
REG_INT(interp, i) = 0;
}
@@ -488,7 +488,7 @@
{
ASSERT_ARGS(Parrot_clear_s)
int i;
- for (i = 0; i < CURRENT_CONTEXT_FIELD(interp, n_regs_used[REGNO_STR]); ++i)
+ for (i = 0; i < Parrot_pcc_get_regs_used(interp, CONTEXT(interp), REGNO_STR); ++i)
REG_STR(interp, i) = NULL;
}
@@ -509,7 +509,7 @@
{
ASSERT_ARGS(Parrot_clear_p)
int i;
- for (i = 0; i < CURRENT_CONTEXT_FIELD(interp, n_regs_used[REGNO_PMC]); ++i)
+ for (i = 0; i < Parrot_pcc_get_regs_used(interp, CONTEXT(interp), REGNO_PMC); ++i)
REG_PMC(interp, i) = PMCNULL;
}
@@ -530,7 +530,7 @@
{
ASSERT_ARGS(Parrot_clear_n)
int i;
- for (i = 0; i < CURRENT_CONTEXT_FIELD(interp, n_regs_used[REGNO_NUM]); ++i)
+ for (i = 0; i < Parrot_pcc_get_regs_used(interp, CONTEXT(interp), REGNO_NUM); ++i)
REG_NUM(interp, i) = 0.0;
}
@@ -612,7 +612,39 @@
return &(Parrot_pcc_get_context_struct(interp, ctx)->bp_ps.regs_p[-1L - idx]);
}
+/*
+
+=item C<int Parrot_pcc_get_regs_used(PARROT_INTERP, PMC *ctx, int type)>
+
+Return number of used registers of particular type.
+=cut
+
+*/
+PARROT_EXPORT
+int
+Parrot_pcc_get_regs_used(PARROT_INTERP, ARGIN(PMC *ctx), int type)
+{
+ ASSERT_ARGS(Parrot_pcc_get_regs_used)
+ return Parrot_pcc_get_context_struct(interp, ctx)->n_regs_used[type];
+}
+
+/*
+
+=item C<int Parrot_pcc_set_regs_used(PARROT_INTERP, PMC *ctx, int type)>
+
+Set number of used registers of particular type.
+
+=cut
+
+*/
+PARROT_EXPORT
+void
+Parrot_pcc_set_regs_used(PARROT_INTERP, ARGIN(PMC *ctx), int type, INTVAL num)
+{
+ ASSERT_ARGS(Parrot_pcc_get_regs_used)
+ Parrot_pcc_get_context_struct(interp, ctx)->n_regs_used[type] = num;
+}
/*
More information about the parrot-commits
mailing list