[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