diff --git a/lib/exec.c b/lib/exec.c index 97850e1..5116257 100644 --- a/lib/exec.c +++ b/lib/exec.c @@ -150,7 +150,7 @@ static void terminate_all_processes (hcl_t* hcl); hcl_seterrbfmt (hcl, HCL_EOOMEM, "process exception stack overflow"); \ (hcl)->abort_req = -1; \ } \ - exsp++; ap->slot[exsp] = (ctx_); \ + exsp++; ap->slot[exsp] = (hcl_oop_t)(ctx_); \ exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(ip_); \ exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(clsp_); \ exsp++; ap->slot[exsp] = HCL_SMOOI_TO_OOP(sp_); \ @@ -172,7 +172,7 @@ static void terminate_all_processes (hcl_t* hcl); sp_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ clsp_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ ip_ = HCL_OOP_TO_SMOOI(ap->slot[exsp]); exsp--; \ - ctx_ = ap->slot[exsp]; exsp--; \ + ctx_ = (hcl_oop_context_t)ap->slot[exsp]; exsp--; \ ap->exsp = HCL_SMOOI_TO_OOP(exsp); \ } while (0) @@ -2296,7 +2296,7 @@ static HCL_INLINE int send_message (hcl_t* hcl, hcl_oop_t rcv, hcl_oop_t msg, in if (HCL_UNLIKELY(x <= -1)) return -1; /* update the method owner field of the new context created */ - newctx->owner = owner; + newctx->owner = (hcl_oop_t)owner; SWITCH_ACTIVE_CONTEXT (hcl, newctx); return 0; @@ -2613,7 +2613,7 @@ static int start_initial_process_and_context (hcl_t* hcl, hcl_ooi_t initial_ip, ctx->home = hcl->initial_function->home; /* this should be nil */ ctx->sender = (hcl_oop_context_t)hcl->_nil; /* the initial context has nil in the sender field */ ctx->base = hcl->initial_function; - ctx->receiver = (hcl_oop_context_t)hcl->_nil; /* TODO: change this? keep this in sync with the dummy receiver used in the call instruction generated for xlist */ + ctx->receiver = hcl->_nil; /* TODO: change this? keep this in sync with the dummy receiver used in the call instruction generated for xlist */ HCL_ASSERT (hcl, (hcl_oop_t)ctx->home == hcl->_nil); /* [NOTE] @@ -3184,7 +3184,7 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h SWITCH_ACTIVE_CONTEXT (hcl, (hcl_oop_context_t)hcl->active_context->sender); } - if (HCL_UNLIKELY(sender == hcl->_nil)) + if (HCL_UNLIKELY((hcl_oop_t)sender == hcl->_nil)) { /* non-local return out of the initial context * (defun y(x) (return-from-home (* x x))) @@ -3200,8 +3200,8 @@ static HCL_INLINE int do_return_from_home (hcl_t* hcl, hcl_oop_t return_value, h * when y is called from the second initial context, the home context to return * from the the first initial context. comparing hcl->active_context->home against * hcl->initial_context doesn't return true in this case. */ - HCL_ASSERT (hcl, home->home == hcl->_nil); - HCL_ASSERT (hcl, hcl->active_context->sender == hcl->_nil); + HCL_ASSERT (hcl, (hcl_oop_t)home->home == hcl->_nil); + HCL_ASSERT (hcl, (hcl_oop_t)hcl->active_context->sender == hcl->_nil); home->ip = HCL_SMOOI_TO_OOP(-1); /* mark the home context dead */ goto term_proc; diff --git a/lib/prim.c b/lib/prim.c index 943c45a..d134d38 100644 --- a/lib/prim.c +++ b/lib/prim.c @@ -777,18 +777,18 @@ static hcl_pfrc_t pf_integer_bshift (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs /* ------------------------------------------------------------------------- */ static hcl_pfrc_t pf_va_context (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) { - HCL_STACK_SETRET (hcl, nargs, hcl->active_context); + HCL_STACK_SETRET (hcl, nargs, (hcl_oop_t)hcl->active_context); return HCL_PF_SUCCESS; } static hcl_pfrc_t pf_va_count (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) { - hcl_context_t* ctx; + hcl_oop_context_t ctx; hcl_ooi_t attr_mask, va, fixed_nargs, nrvars, nlvars, nvaargs; if (nargs >= 1) { - ctx = HCL_STACK_GETARG(hcl, nargs, 0); + ctx = (hcl_oop_context_t)HCL_STACK_GETARG(hcl, nargs, 0); if (!HCL_IS_CONTEXT(hcl, ctx)) { hcl_seterrbfmt (hcl, HCL_EINVAL, "not a proper va context - %O", ctx); @@ -819,13 +819,13 @@ static hcl_pfrc_t pf_va_count (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) static hcl_pfrc_t pf_va_get (hcl_t* hcl, hcl_mod_t* mod, hcl_ooi_t nargs) { hcl_oop_t ret; - hcl_context_t* ctx; + hcl_oop_context_t ctx; hcl_ooi_t attr_mask, va, fixed_nargs, nrvars, nlvars, nvaargs; hcl_oow_t index; if (nargs >= 2) { - ctx = HCL_STACK_GETARG(hcl, nargs, 1); + ctx = (hcl_oop_context_t)HCL_STACK_GETARG(hcl, nargs, 1); if (!HCL_IS_CONTEXT(hcl, ctx)) { hcl_seterrbfmt (hcl, HCL_EINVAL, "not a proper va context - %O", ctx);