[svn:parrot] r48696 - in trunk: include/parrot src src/pmc
nwellnhof at svn.parrot.org
nwellnhof at svn.parrot.org
Fri Aug 27 17:12:47 UTC 2010
Author: nwellnhof
Date: Fri Aug 27 17:12:46 2010
New Revision: 48696
URL: https://trac.parrot.org/parrot/changeset/48696
Log:
Use flag instead of INTVAL in Scheduler PMC
Modified:
trunk/include/parrot/scheduler_private.h
trunk/src/pmc/scheduler.pmc
trunk/src/scheduler.c
Modified: trunk/include/parrot/scheduler_private.h
==============================================================================
--- trunk/include/parrot/scheduler_private.h Fri Aug 27 16:15:54 2010 (r48695)
+++ trunk/include/parrot/scheduler_private.h Fri Aug 27 17:12:46 2010 (r48696)
@@ -19,7 +19,8 @@
typedef enum {
SCHEDULER_cache_valid_FLAG = PObj_private0_FLAG,
SCHEDULER_wake_requested_FLAG = PObj_private1_FLAG,
- SCHEDULER_terminate_requested_FLAG = PObj_private2_FLAG
+ SCHEDULER_terminate_requested_FLAG = PObj_private2_FLAG,
+ SCHEDULER_in_handler_FLAG = PObj_private3_FLAG
} scheduler_flags_enum;
#define SCHEDULER_get_FLAGS(o) (PObj_get_FLAGS(o))
@@ -42,6 +43,11 @@
#define SCHEDULER_terminate_requested_SET(o) SCHEDULER_flag_SET(terminate_requested, o)
#define SCHEDULER_terminate_requested_CLEAR(o) SCHEDULER_flag_CLEAR(terminate_requested, o)
+/* Mark if the scheduler is inside a handler */
+#define SCHEDULER_in_handler_TEST(o) SCHEDULER_flag_TEST(in_handler, o)
+#define SCHEDULER_in_handler_SET(o) SCHEDULER_flag_SET(in_handler, o)
+#define SCHEDULER_in_handler_CLEAR(o) SCHEDULER_flag_CLEAR(in_handler, o)
+
/*
* Task private flags
*/
Modified: trunk/src/pmc/scheduler.pmc
==============================================================================
--- trunk/src/pmc/scheduler.pmc Fri Aug 27 16:15:54 2010 (r48695)
+++ trunk/src/pmc/scheduler.pmc Fri Aug 27 17:12:46 2010 (r48696)
@@ -30,7 +30,6 @@
ATTR INTVAL max_tid; /* The highest assigned task ID. */
ATTR INTVAL pending; /* A count of pending tasks (cached for fast
lookup). */
- ATTR INTVAL in_handler; /* Set during execution of a handler. */
ATTR PMC *task_list; /* The current list of tasks. */
ATTR PMC *task_index; /* An index into the current list of tasks,
ordered by priority. */
Modified: trunk/src/scheduler.c
==============================================================================
--- trunk/src/scheduler.c Fri Aug 27 16:15:54 2010 (r48695)
+++ trunk/src/scheduler.c Fri Aug 27 17:12:46 2010 (r48696)
@@ -122,13 +122,12 @@
Parrot_cx_handle_tasks(PARROT_INTERP, ARGMOD(PMC *scheduler))
{
ASSERT_ARGS(Parrot_cx_handle_tasks)
- Parrot_Scheduler_attributes * sched_struct = PARROT_SCHEDULER(scheduler);
/* avoid recursive calls */
- if (sched_struct->in_handler)
+ if (SCHEDULER_in_handler_TEST(scheduler))
return;
- sched_struct->in_handler = 1;
+ SCHEDULER_in_handler_SET(scheduler);
SCHEDULER_wake_requested_CLEAR(scheduler);
Parrot_cx_refresh_task_list(interp, scheduler);
@@ -166,7 +165,7 @@
} /* end of pending tasks */
- sched_struct->in_handler = 0;
+ SCHEDULER_in_handler_CLEAR(scheduler);
}
/*
More information about the parrot-commits
mailing list