static void * myth_chpl_wrap(void * a_) { chpl_task_bundle_t * arg = myth_wsapi_get_hint_ptr(0); chpl_fn_int_t fid = arg->requested_fid; int32_t filename = arg->filename; int lineno = arg->lineno; chpl_taskID_t id = arg->id; chpl_bool is_executeOn = arg->is_executeOn; chpl_bool serial_state = arg->serial_state; if (serial_state) { chpl_task_setSerial(serial_state); } chpl_task_do_callbacks(chpl_task_cb_event_kind_begin, fid, filename, lineno, id, is_executeOn); chpl_ftable[fid](arg); chpl_task_do_callbacks(chpl_task_cb_event_kind_end, fid, filename, lineno, id, is_executeOn); return 0; }
static aligned_t spawn_wrapper(void *arg) { spawn_wrapper_args_t * const rarg = arg; qthread_debug(CHAPEL_BEHAVIOR, "[%d] executing fn %d with arg-size %d\n", chpl_localeID, rarg->fid, rarg->arg_size); chpl_task_setSerial(rarg->serial_state); (*chpl_ftable[rarg->fid])(rarg->arg); return 0; }