Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[PMC] Fixed compiler warnings (use of uninitialized variables) and ti…

…ded code.

git-svn-id: https://svn.parrot.org/parrot/trunk@30151 d31e2699-5ff4-0310-a27c-f18f2fbe73fe
  • Loading branch information...
commit be7602b4cc88c2bf90be3b8a0b6be40ecdd39552 1 parent e665d65
@chromatic chromatic authored
Showing with 98 additions and 78 deletions.
  1. +98 −78 src/pmc/scheduler.pmc
View
176 src/pmc/scheduler.pmc
@@ -41,7 +41,7 @@ pmclass Scheduler need_ext {
=item C<void init()>
-Initialize a concurrency scheduler object.
+Initializes a concurrency scheduler object.
=cut
@@ -68,6 +68,7 @@ Initialize a concurrency scheduler object.
MUTEX_INIT(core_struct->msg_lock);
}
+
/*
=item C<void init_pmc(PMC *data)>
@@ -82,30 +83,33 @@ An C<Integer> representing the unique identifier for this scheduler.
=back
+=cut
+
*/
VTABLE void init_pmc(PMC *data) {
PMC *elem;
Parrot_Scheduler *core_struct;
- if (! VTABLE_isa(INTERP, data, CONST_STRING(INTERP, "Hash")))
+ if (!VTABLE_isa(INTERP, data, CONST_STRING(INTERP, "Hash")))
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Scheduler initializer must be a Hash");
SELF.init();
- core_struct = PARROT_SCHEDULER(SELF);
- elem = VTABLE_get_pmc_keyed_str(INTERP, data, CONST_STRING(INTERP, "id"));
+ core_struct = PARROT_SCHEDULER(SELF);
+ elem = VTABLE_get_pmc_keyed_str(INTERP, data, CONST_STRING(INTERP, "id"));
- if (! PMC_IS_NULL(elem))
- core_struct->id = VTABLE_get_integer(INTERP, elem);
+ if (!PMC_IS_NULL(elem))
+ core_struct->id = VTABLE_get_integer(INTERP, elem);
}
+
/*
=item C<void push_pmc(PMC *value)>
-Insert a task into the task list, giving it a task ID one higher than the
+Inserts a task into the task list, giving it a task ID one higher than the
current maximum, and a birthtime of the current time.
=cut
@@ -114,26 +118,23 @@ current maximum, and a birthtime of the current time.
void push_pmc(PMC *task) {
Parrot_Scheduler * const core_struct = PARROT_SCHEDULER(SELF);
- STRING *task_id_str;
- INTVAL new_tid;
+ STRING *task_id_str;
+ INTVAL new_tid;
task = VTABLE_share_ro(INTERP, task);
VTABLE_set_number_native(INTERP, task, Parrot_floatval_time());
- new_tid = ++(core_struct->max_tid);
+ new_tid = ++(core_struct->max_tid);
VTABLE_set_integer_native(INTERP, task, new_tid);
task_id_str = string_from_int(INTERP, new_tid);
- VTABLE_set_pmc_keyed_str(INTERP, core_struct->task_list, task_id_str, task);
+ VTABLE_set_pmc_keyed_str(INTERP, core_struct->task_list,
+ task_id_str, task);
-
- if (task->vtable->base_type == enum_class_Timer) {
+ if (task->vtable->base_type == enum_class_Timer)
VTABLE_push_integer(INTERP, core_struct->wait_index, new_tid);
- }
- else {
+ else
VTABLE_push_integer(INTERP, core_struct->task_index, new_tid);
- }
-
SCHEDULER_cache_valid_CLEAR(SELF);
@@ -141,12 +142,13 @@ current maximum, and a birthtime of the current time.
Parrot_cx_runloop_wake(core_struct->interp, SELF);
}
+
/*
=item C<PMC *pop_pmc()>
-Retrieve the next task from the task list. If the task index is invalid,
-recalculate it before retrieving the next task.
+Retrieves the next task from the task list. If the task index is invalid,
+recalculates it before retrieving the next task.
=cut
@@ -158,20 +160,24 @@ recalculate it before retrieving the next task.
/* Pull the next valid task off the task list, skipping expired and
* deleted tasks. */
- while (PMC_IS_NULL(task) && VTABLE_elements(INTERP, core_struct->task_index) > 0) {
+ while (PMC_IS_NULL(task)
+ && VTABLE_elements(INTERP, core_struct->task_index) > 0) {
INTVAL tid = VTABLE_shift_integer(INTERP, core_struct->task_index);
+
if (tid > 0)
- task = VTABLE_get_pmc_keyed_int(INTERP, core_struct->task_list, tid);
+ task = VTABLE_get_pmc_keyed_int(INTERP,
+ core_struct->task_list, tid);
}
return task;
}
+
/*
=item C<INTVAL get_integer()>
-Retrieve the number of pending tasks in the scheduler's task list.
+Retrieves the number of pending tasks in the scheduler's task list.
=cut
@@ -194,46 +200,48 @@ Removes the task with the given task ID from the task list.
*/
VTABLE void delete_keyed_int(INTVAL key) {
- Parrot_Scheduler * core_struct = PARROT_SCHEDULER(SELF);
- STRING *task_id_str = string_from_int(INTERP, key);
+ Parrot_Scheduler *core_struct = PARROT_SCHEDULER(SELF);
+ STRING *task_id_str = string_from_int(INTERP, key);
VTABLE_delete_keyed_str(INTERP, core_struct->task_list, task_id_str);
SCHEDULER_cache_valid_CLEAR(SELF);
}
+
/*
=item C<PMC *share_ro()>
-Set this PMC as shared.
+Sets this PMC as shared.
=cut
*/
VTABLE PMC *share_ro() {
- PMC *shared_self;
- Parrot_Scheduler *shared_struct;
+ PMC *shared_self;
+ Parrot_Scheduler *sched;
if (PObj_is_PMC_shared_TEST(SELF))
return SELF;
- shared_self = pt_shared_fixup(INTERP, SELF);
- shared_struct = PARROT_SCHEDULER(shared_self);
+ shared_self = pt_shared_fixup(INTERP, SELF);
+ sched = PARROT_SCHEDULER(shared_self);
- shared_struct->task_list = pt_shared_fixup(INTERP, shared_struct->task_list);
- shared_struct->task_index = pt_shared_fixup(INTERP, shared_struct->task_index);
- shared_struct->wait_index = pt_shared_fixup(INTERP, shared_struct->wait_index);
- shared_struct->handlers = pt_shared_fixup(INTERP, shared_struct->handlers);
- shared_struct->messages = pt_shared_fixup(INTERP, shared_struct->messages);
+ sched->task_list = pt_shared_fixup(INTERP, sched->task_list);
+ sched->task_index = pt_shared_fixup(INTERP, sched->task_index);
+ sched->wait_index = pt_shared_fixup(INTERP, sched->wait_index);
+ sched->handlers = pt_shared_fixup(INTERP, sched->handlers);
+ sched->messages = pt_shared_fixup(INTERP, sched->messages);
return shared_self;
}
+
/*
=item C<void destroy()>
-Free the scheduler's underlying struct.
+Frees the scheduler's underlying struct.
=cut
@@ -244,11 +252,12 @@ Free the scheduler's underlying struct.
mem_sys_free(core_struct);
}
+
/*
=item C<void mark()>
-Mark any referenced strings and PMCs.
+Marks any referenced strings and PMCs as live.
=cut
@@ -258,25 +267,26 @@ Mark any referenced strings and PMCs.
Parrot_Scheduler * const core_struct = PARROT_SCHEDULER(SELF);
if (core_struct->task_list)
- pobject_lives(interp, (PObj*)core_struct->task_list);
+ pobject_lives(interp, (PObj *)core_struct->task_list);
if (core_struct->task_index)
- pobject_lives(interp, (PObj*)core_struct->task_index);
+ pobject_lives(interp, (PObj *)core_struct->task_index);
if (core_struct->wait_index)
- pobject_lives(interp, (PObj*)core_struct->wait_index);
+ pobject_lives(interp, (PObj *)core_struct->wait_index);
if (core_struct->handlers)
- pobject_lives(interp, (PObj*)core_struct->handlers);
+ pobject_lives(interp, (PObj *)core_struct->handlers);
if (core_struct->messages)
- pobject_lives(interp, (PObj*)core_struct->messages);
+ pobject_lives(interp, (PObj *)core_struct->messages);
}
}
+
/*
=item C<void visit(visit_info *info)>
-This is used by freeze/thaw to visit the contents of the scheduler.
+Visits the contents of the scheduler (used by freeze/thaw).
-C<*info> is the visit info, (see F<include/parrot/pmc_freeze.h>).
+C<*info> is the visit info (see F<include/parrot/pmc_freeze.h>).
=cut
@@ -297,11 +307,12 @@ C<*info> is the visit info, (see F<include/parrot/pmc_freeze.h>).
(info->visit_pmc_now)(INTERP, *pos, info);
}
+
/*
=item C<void freeze(visit_info *info)>
-Used to archive the scheduler.
+Archives the scheduler.
=cut
@@ -318,11 +329,12 @@ Used to archive the scheduler.
VTABLE_push_integer(INTERP, io, core_struct->max_tid);
}
+
/*
=item C<void thaw(visit_info *info)>
-Used to unarchive the scheduler.
+Unarchives the scheduler.
=cut
@@ -347,11 +359,12 @@ Used to unarchive the scheduler.
PARROT_SCHEDULER(SELF)->max_tid = max_tid;
}
+
/*
=item C<void thawfinish(visit_info *info)>
-Called after the scheduler has been thawed.
+Finishes thawing the scheduler.
=cut
@@ -361,6 +374,7 @@ Called after the scheduler has been thawed.
Parrot_cx_refresh_task_list(INTERP, SELF);
}
+
/*
=back
@@ -377,48 +391,51 @@ Called after the scheduler has been thawed.
=item C<METHOD add_handler(PMC *handler)>
-Add a handler to the scheduler.
+Adds a handler to the scheduler.
=cut
*/
METHOD add_handler(PMC *handler) {
- Parrot_Scheduler * core_struct = PARROT_SCHEDULER(SELF);
+ Parrot_Scheduler *core_struct = PARROT_SCHEDULER(SELF);
VTABLE_unshift_pmc(INTERP, core_struct->handlers, handler);
}
+
/*
-=item C<METHOD delete_handler(STRING *type :optional, INTVAL got_type :opt_flag)>
+=item C<METHOD delete_handler(STRING *type :optional, INTVAL have_type :opt_flag)>
-Delete a handler from the scheduler.
+Deletes a handler from the scheduler.
=cut
*/
- METHOD delete_handler(STRING *type :optional, INTVAL got_type :opt_flag) {
- PMC *handlers;
- INTVAL elements, index;
+ METHOD delete_handler(STRING *type :optional, INTVAL have_type :opt_flag) {
+ PMC *handlers;
+ INTVAL elements, index;
+ STRING *except_str = CONST_STRING(INTERP, "exception");
+ STRING *event_str = CONST_STRING(INTERP, "event");
GET_ATTR_handlers(INTERP, SELF, handlers);
elements = VTABLE_elements(INTERP, handlers);
- if (!got_type)
+ if (!have_type)
VTABLE_shift_pmc(INTERP, handlers);
/* Loop from newest handler to oldest handler. */
for (index = 0; index < elements; ++index) {
PMC *handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
if (!PMC_IS_NULL(handler)) {
- if (string_equal(INTERP, type, CONST_STRING(INTERP, "exception")) == 0
- && handler->vtable->base_type == enum_class_ExceptionHandler) {
+ if (string_equal(INTERP, type, except_str) == 0
+ && handler->vtable->base_type == enum_class_ExceptionHandler) {
VTABLE_set_pmc_keyed_int(INTERP, handlers, index, PMCNULL);
RETURN(void);
}
- else if (string_equal(INTERP, type, CONST_STRING(INTERP, "event")) == 0
- && handler->vtable->base_type == enum_class_EventHandler) {
+ else if (string_equal(INTERP, type, event_str) == 0
+ && handler->vtable->base_type == enum_class_EventHandler) {
VTABLE_set_pmc_keyed_int(INTERP, handlers, index, PMCNULL);
RETURN(void);
}
@@ -429,11 +446,12 @@ Delete a handler from the scheduler.
"No handler to delete.");
}
+
/*
=item C<METHOD find_handler(PMC *task)>
-Search for a handler for the given task. If no handler is found, return
+Searchs for a handler for the given task. If no handler is found, returns
PMCNULL.
=cut
@@ -445,8 +463,8 @@ PMCNULL.
/* Exceptions store the handler iterator for rethrow, other kinds of
* tasks don't (though they could). */
- if (task->vtable->base_type == enum_class_Exception &&
- VTABLE_get_integer_keyed_str(interp, task,
+ if (task->vtable->base_type == enum_class_Exception
+ && VTABLE_get_integer_keyed_str(interp, task,
CONST_STRING(interp, "handled")) == -1) {
iter = VTABLE_get_attr_str(interp, task,
CONST_STRING(interp, "handler_iter"));
@@ -483,42 +501,44 @@ PMCNULL.
/*
-=item C<METHOD count_handlers(STRING *type :optional, INTVAL got_type :opt_flag)>
+=item C<METHOD count_handlers(STRING *type :optional, INTVAL have_type :opt_flag)>
-Return the number of handlers currently held by the scheduler. If a type
-argument is passed, only count handlers of that type (C<event>, C<exception>).
-If no type argument is passed, count all handlers.
+Returns the number of handlers currently held by the scheduler. If a type
+argument is passed, only counts handlers of that type (C<event>, C<exception>).
+If no type argument is passed, counts all handlers.
=cut
*/
- METHOD count_handlers(STRING *type :optional, INTVAL got_type :opt_flag) {
- PMC *handlers;
+ METHOD count_handlers(STRING *type :optional, INTVAL have_type :opt_flag) {
+ /* avoid uninitialized value warning */
+ PMC *handlers = NULL;
INTVAL elements = VTABLE_elements(INTERP, handlers);
- INTVAL index, count;
+ INTVAL count = 0;
+ INTVAL index;
GET_ATTR_handlers(INTERP, SELF, handlers);
- if (!got_type)
- RETURN(INTVAL elements);
+ if (!have_type)
+ RETURN(INTVAL elements);
for (index = 0; index < elements; ++index) {
- PMC *handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
+ PMC *handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
+ STRING *exception = CONST_STRING(INTERP, "exception");
+ STRING *event = CONST_STRING(INTERP, "event");
+
if (!PMC_IS_NULL(handler)) {
- if (string_equal(INTERP, type, CONST_STRING(INTERP, "exception")) == 0
- && handler->vtable->base_type == enum_class_ExceptionHandler)
- count++;
- else if (string_equal(INTERP, type, CONST_STRING(INTERP, "event")) == 0
- && handler->vtable->base_type == enum_class_EventHandler)
+ if (((string_equal(INTERP, type, exception) == 0)
+ && handler->vtable->base_type == enum_class_ExceptionHandler)
+ || ((string_equal(INTERP, type, event) == 0)
+ && handler->vtable->base_type == enum_class_EventHandler))
count++;
}
}
RETURN(INTVAL count);
}
-
-
}
/*
Please sign in to comment.
Something went wrong with that request. Please try again.