diff options
Diffstat (limited to 'src/rt/rust_task.cpp')
| -rw-r--r-- | src/rt/rust_task.cpp | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 28d36a4bf88..b5ecb166175 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -162,7 +162,11 @@ void task_start_wrapper(spawn_args *a) bool threw_exception = false; try { +#ifdef _RUST_STAGE0 + a->f(NULL, a->envptr, a->argptr); +#else a->f(a->envptr, a->argptr); +#endif } catch (rust_task *ex) { assert(ex == task && "Expected this task to be thrown for unwinding"); threw_exception = true; @@ -183,7 +187,11 @@ void task_start_wrapper(spawn_args *a) if(env) { // free the environment (which should be a unique closure). const type_desc *td = env->td; +#ifdef _RUST_STAGE0 + td->drop_glue(NULL, NULL, NULL, box_body(env)); +#else td->drop_glue(NULL, NULL, box_body(env)); +#endif task->kernel->region()->free(env); } | 
