about summary refs log tree commit diff
path: root/src/rt/rust_upcall.cpp
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-04-19 12:21:57 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-04-19 16:57:13 +0200
commit880be6a94013ba0b7791b0ca1b6e16104f2f0a1c (patch)
treead8c673f13ec8d2d879175be1a006b08cc6d26d3 /src/rt/rust_upcall.cpp
parent6511d471bafd446026462ce0dba8ef5e2ebf462f (diff)
downloadrust-880be6a94013ba0b7791b0ca1b6e16104f2f0a1c.tar.gz
rust-880be6a94013ba0b7791b0ca1b6e16104f2f0a1c.zip
Overhaul logging system in runtime
See https://github.com/graydon/rust/wiki/Logging-vision

The runtime logging categories are now treated in the same way as
modules in compiled code. Each domain now has a log_lvl that can be
used to restrict the logging from that domain (will be used to allow
logging to be restricted to a single domain).

Features dropped (can be brought back to life if there is interest):
  - Logger indentation
  - Multiple categories per log statement
  - I possibly broke some of the color code -- it confuses me
Diffstat (limited to 'src/rt/rust_upcall.cpp')
-rw-r--r--src/rt/rust_upcall.cpp212
1 files changed, 106 insertions, 106 deletions
diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp
index b022b8531a5..9178aac2d30 100644
--- a/src/rt/rust_upcall.cpp
+++ b/src/rt/rust_upcall.cpp
@@ -3,20 +3,19 @@
 // Upcalls.
 
 #ifdef __GNUC__
-#define LOG_UPCALL_ENTRY(task)                              \
-    LOG_I(task, rust_log::UPCALL,                           \
-          "> UPCALL %s - task: %s 0x%" PRIxPTR              \
-          " retpc: x%" PRIxPTR                              \
-          " ref_count: %d",                                 \
-          __FUNCTION__,                                     \
-          (task)->name, (task),                             \
-          __builtin_return_address(0),                      \
-          (task->ref_count));
+#define LOG_UPCALL_ENTRY(task)                            \
+    LOG(task, upcall,                                     \
+        "> UPCALL %s - task: %s 0x%" PRIxPTR              \
+        " retpc: x%" PRIxPTR                              \
+        " ref_count: %d",                                 \
+        __FUNCTION__,                                     \
+        (task)->name, (task),                             \
+        __builtin_return_address(0),                      \
+        (task->ref_count));
 #else
-#define LOG_UPCALL_ENTRY(task)                              \
-    LOG_I(task, rust_log::UPCALL,                           \
-          "> UPCALL task: %s @x%" PRIxPTR,                  \
-          (task)->name, (task));
+#define LOG_UPCALL_ENTRY(task)                            \
+    LOG(task, upcall, "> UPCALL task: %s @x%" PRIxPTR,    \
+        (task)->name, (task));
 #endif
 
 extern "C" CDECL char const *
@@ -29,61 +28,78 @@ upcall_grow_task(rust_task *task, size_t n_frame_bytes) {
 }
 
 extern "C" CDECL
-void upcall_log_int(rust_task *task, int32_t level, int32_t i) {
+void upcall_log_int(rust_task *task, uint32_t level, int32_t i) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::ULOG,
-        "rust: %" PRId32 " (0x%" PRIx32 ")", i, i);
+    if (task->dom->log_lvl >= level)
+        task->dom->log(task, level, "rust: %" PRId32 " (0x%" PRIx32 ")",
+                       i, i);
 }
 
 extern "C" CDECL
-void upcall_log_float(rust_task *task, int32_t level, float f) {
+void upcall_log_int_rustboot(rust_task *task, uint32_t level, int32_t i) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::ULOG,
-        "rust: %12.12f", f);
+    if (task->dom->log_lvl >= level && log_rustboot >= level)
+        task->dom->log(task, level, "rust: %" PRId32 " (0x%" PRIx32 ")",
+                       i, i);
 }
 
 extern "C" CDECL
-void upcall_log_double(rust_task *task, int32_t level, double *f) {
+void upcall_log_float(rust_task *task, uint32_t level, float f) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::ULOG,
-              "rust: %12.12f", *f);
+    if (task->dom->log_lvl >= level)
+        task->dom->log(task, level, "rust: %12.12f", f);
+}
+
+extern "C" CDECL
+void upcall_log_double(rust_task *task, uint32_t level, double *f) {
+    LOG_UPCALL_ENTRY(task);
+    if (task->dom->log_lvl >= level)
+        task->dom->log(task, level, "rust: %12.12f", *f);
 }
 
 extern "C" CDECL void
-upcall_log_str(rust_task *task, int32_t level, rust_str *str) {
+upcall_log_str_rustboot(rust_task *task, uint32_t level, rust_str *str) {
     LOG_UPCALL_ENTRY(task);
-    const char *c = str_buf(task, str);
-    LOG(task, rust_log::UPCALL | rust_log::ULOG, "rust: %s", c);
+    if (task->dom->log_lvl >= level && log_rustboot >= level) {
+        const char *c = str_buf(task, str);
+        task->dom->log(task, level, "rust: %s", c);
+    }
+}
+
+extern "C" CDECL void
+upcall_log_str(rust_task *task, uint32_t level, rust_str *str) {
+    LOG_UPCALL_ENTRY(task);
+    if (task->dom->log_lvl >= level) {
+        const char *c = str_buf(task, str);
+        task->dom->log(task, level, "rust: %s", c);
+    }
 }
 
 extern "C" CDECL void
 upcall_trace_word(rust_task *task, uintptr_t i) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::TRACE, "trace: 0x%" PRIxPTR "", i,
-              i, (char) i);
+    task->dom->log(task, 2, "trace: 0x%" PRIxPTR "", i, i, (char) i);
 }
 
 extern "C" CDECL void
 upcall_trace_str(rust_task *task, char const *c) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::TRACE, "trace: %s", c);
+    task->dom->log(task, 2, "trace: %s", c);
 }
 
 extern "C" CDECL rust_port*
 upcall_new_port(rust_task *task, size_t unit_sz) {
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
-    LOG(task, rust_log::UPCALL | rust_log::MEM | rust_log::COMM,
-              "upcall_new_port(task=0x%" PRIxPTR " (%s), unit_sz=%d)",
-              (uintptr_t) task, task->name, unit_sz);
+    LOG(task, comm, "upcall_new_port(task=0x%" PRIxPTR " (%s), unit_sz=%d)",
+        (uintptr_t) task, task->name, unit_sz);
     return new (dom) rust_port(task, unit_sz);
 }
 
 extern "C" CDECL void
 upcall_del_port(rust_task *task, rust_port *port) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::MEM | rust_log::COMM,
-              "upcall del_port(0x%" PRIxPTR ")", (uintptr_t) port);
+    LOG(task, comm, "upcall del_port(0x%" PRIxPTR ")", (uintptr_t) port);
     I(task->dom, !port->ref_count);
     delete port;
 }
@@ -95,10 +111,9 @@ extern "C" CDECL rust_chan*
 upcall_new_chan(rust_task *task, rust_port *port) {
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
-    LOG(task, rust_log::UPCALL | rust_log::MEM | rust_log::COMM,
-              "upcall_new_chan("
-              "task=0x%" PRIxPTR " (%s), port=0x%" PRIxPTR ")",
-              (uintptr_t) task, task->name, port);
+    LOG(task, comm, "upcall_new_chan("
+        "task=0x%" PRIxPTR " (%s), port=0x%" PRIxPTR ")",
+        (uintptr_t) task, task->name, port);
     I(dom, port);
     return new (dom) rust_chan(task, port, port->unit_sz);
 }
@@ -124,8 +139,7 @@ extern "C" CDECL
 void upcall_del_chan(rust_task *task, rust_chan *chan) {
     LOG_UPCALL_ENTRY(task);
 
-    LOG(task, rust_log::UPCALL | rust_log::MEM | rust_log::COMM,
-              "upcall del_chan(0x%" PRIxPTR ")", (uintptr_t) chan);
+    LOG(task, comm, "upcall del_chan(0x%" PRIxPTR ")", (uintptr_t) chan);
 
     A(task->dom, chan->ref_count == 0,
       "Channel's ref count should be zero.");
@@ -175,7 +189,7 @@ upcall_clone_chan(rust_task *task, maybe_proxy<rust_task> *target,
         rust_handle<rust_port> *handle =
             task->dom->kernel->get_port_handle(port->as_referent());
         maybe_proxy<rust_port> *proxy = new rust_proxy<rust_port> (handle);
-        LOG(task, rust_log::MEM, "new proxy: " PTR, proxy);
+        LOG(task, mem, "new proxy: " PTR, proxy);
         port = proxy;
         target_task = target->as_proxy()->handle()->referent();
     }
@@ -185,16 +199,16 @@ upcall_clone_chan(rust_task *task, maybe_proxy<rust_task> *target,
 extern "C" CDECL void
 upcall_yield(rust_task *task) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::COMM, "upcall yield()");
+    LOG(task, comm, "upcall yield()");
     task->yield(1);
 }
 
 extern "C" CDECL void
 upcall_sleep(rust_task *task, size_t time_in_us) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::TASK, "elapsed %d",
+    LOG(task, task, "elapsed %d",
               task->yield_timer.get_elapsed_time());
-    LOG(task, rust_log::UPCALL | rust_log::TASK, "sleep %d us", time_in_us);
+    LOG(task, task, "sleep %d us", time_in_us);
     task->yield(2, time_in_us);
 }
 
@@ -228,17 +242,16 @@ extern "C" CDECL void
 upcall_send(rust_task *task, rust_chan *chan, void *sptr) {
     LOG_UPCALL_ENTRY(task);
     chan->send(sptr);
-    LOG(task, rust_log::COMM, "=== sent data ===>");
+    LOG(task, comm, "=== sent data ===>");
 }
 
 extern "C" CDECL void
 upcall_recv(rust_task *task, uintptr_t *dptr, rust_port *port) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::COMM,
-              "port: 0x%" PRIxPTR ", dptr: 0x%" PRIxPTR
-              ", size: 0x%" PRIxPTR ", chan_no: %d",
-              (uintptr_t) port, (uintptr_t) dptr, port->unit_sz,
-              port->chans.length());
+    LOG(task, comm, "port: 0x%" PRIxPTR ", dptr: 0x%" PRIxPTR
+        ", size: 0x%" PRIxPTR ", chan_no: %d",
+        (uintptr_t) port, (uintptr_t) dptr, port->unit_sz,
+        port->chans.length());
 
     if (port->receive(dptr)) {
         return;
@@ -248,7 +261,7 @@ upcall_recv(rust_task *task, uintptr_t *dptr, rust_port *port) {
     // on the port. Remember the rendezvous location so that any sender
     // task can write to it before waking up this task.
 
-    LOG(task, rust_log::COMM, "<=== waiting for rendezvous data ===");
+    LOG(task, comm, "<=== waiting for rendezvous data ===");
     task->rendezvous_ptr = dptr;
     task->block(port, "waiting for rendezvous data");
     task->yield(3);
@@ -260,8 +273,7 @@ upcall_fail(rust_task *task,
             char const *file,
             size_t line) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::ERR,
-              "upcall fail '%s', %s:%" PRIdPTR, expr, file, line);
+    LOG_ERR(task, upcall, "upcall fail '%s', %s:%" PRIdPTR, expr, file, line);
     task->fail(4);
     if (getenv("RUST_TRAP_FAILURE")) {
         // FIXME: x86-ism.
@@ -292,8 +304,7 @@ upcall_kill(rust_task *task, maybe_proxy<rust_task> *target) {
 extern "C" CDECL void
 upcall_exit(rust_task *task) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::TASK,
-              "task ref_count: %d", task->ref_count);
+    LOG(task, task, "task ref_count: %d", task->ref_count);
     A(task->dom, task->ref_count >= 0,
       "Task ref_count should not be negative on exit!");
     task->die();
@@ -305,12 +316,12 @@ extern "C" CDECL uintptr_t
 upcall_malloc(rust_task *task, size_t nbytes, type_desc *td) {
     LOG_UPCALL_ENTRY(task);
 
-    LOG(task, rust_log::UPCALL|rust_log::MEM,
+    LOG(task, mem,
                    "upcall malloc(%" PRIdPTR ", 0x%" PRIxPTR ")"
                    " with gc-chain head = 0x%" PRIxPTR,
                    nbytes, td, task->gc_alloc_chain);
     void *p = task->malloc(nbytes, td);
-    LOG(task, rust_log::UPCALL|rust_log::MEM,
+    LOG(task, mem,
                    "upcall malloc(%" PRIdPTR ", 0x%" PRIxPTR
                    ") = 0x%" PRIxPTR
                    " with gc-chain head = 0x%" PRIxPTR,
@@ -325,7 +336,7 @@ extern "C" CDECL void
 upcall_free(rust_task *task, void* ptr, uintptr_t is_gc) {
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
-    DLOG(dom, rust_log::UPCALL|rust_log::MEM,
+    DLOG(dom, mem,
              "upcall free(0x%" PRIxPTR ", is_gc=%" PRIdPTR ")",
              (uintptr_t)ptr, is_gc);
     task->free(ptr, (bool) is_gc);
@@ -339,8 +350,7 @@ upcall_mark(rust_task *task, void* ptr) {
     if (ptr) {
         gc_alloc *gcm = (gc_alloc*) (((char*)ptr) - sizeof(gc_alloc));
         uintptr_t marked = (uintptr_t) gcm->mark();
-        DLOG(dom, rust_log::UPCALL|rust_log::MEM|rust_log::GC,
-                 "upcall mark(0x%" PRIxPTR ") = %" PRIdPTR,
+        DLOG(dom, gc, "upcall mark(0x%" PRIxPTR ") = %" PRIdPTR,
                  (uintptr_t)gcm, marked);
         return marked;
     }
@@ -358,9 +368,9 @@ upcall_new_str(rust_task *task, char const *s, size_t fill) {
         return NULL;
     }
     rust_str *st = new (mem) rust_str(dom, alloc, fill, (uint8_t const *) s);
-    LOG(task, rust_log::UPCALL | rust_log::MEM,
-              "upcall new_str('%s', %" PRIdPTR ") = 0x%" PRIxPTR,
-              s, fill, st);
+    LOG(task, mem,
+        "upcall new_str('%s', %" PRIdPTR ") = 0x%" PRIxPTR,
+        s, fill, st);
     return st;
 }
 
@@ -368,9 +378,7 @@ extern "C" CDECL rust_vec *
 upcall_new_vec(rust_task *task, size_t fill, type_desc *td) {
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
-    DLOG(dom, rust_log::UPCALL|rust_log::MEM,
-             "upcall new_vec(%" PRIdPTR ")",
-             fill);
+    DLOG(dom, mem, "upcall new_vec(%" PRIdPTR ")", fill);
     size_t alloc = next_power_of_two(sizeof(rust_vec) + fill);
     void *mem = task->malloc(alloc, td);
     if (!mem) {
@@ -378,7 +386,7 @@ upcall_new_vec(rust_task *task, size_t fill, type_desc *td) {
         return NULL;
     }
     rust_vec *v = new (mem) rust_vec(dom, alloc, 0, NULL);
-    LOG(task, rust_log::UPCALL | rust_log::MEM,
+    LOG(task, mem,
               "upcall new_vec(%" PRIdPTR ") = 0x%" PRIxPTR, fill, v);
     return v;
 }
@@ -392,7 +400,7 @@ upcall_vec_grow(rust_task *task,
 {
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
-    LOG(task, rust_log::UPCALL | rust_log::MEM,
+    LOG(task, mem,
               "upcall vec_grow(0x%" PRIxPTR ", %" PRIdPTR
               "), alloc=%" PRIdPTR ", fill=%" PRIdPTR
               ", need_copy=0x%" PRIxPTR,
@@ -405,12 +413,12 @@ upcall_vec_grow(rust_task *task,
 
         // Fastest path: already large enough.
         if (v->alloc >= alloc) {
-            LOG(task, rust_log::UPCALL | rust_log::MEM, "no-growth path");
+            LOG(task, mem, "no-growth path");
             return v;
         }
 
         // Second-fastest path: can at least realloc.
-        LOG(task, rust_log::UPCALL | rust_log::MEM, "realloc path");
+        LOG(task, mem, "realloc path");
         v = (rust_vec*) task->realloc(v, alloc, td->is_stateful);
         if (!v) {
             task->fail(4);
@@ -432,7 +440,7 @@ upcall_vec_grow(rust_task *task,
          * need_copy outparam flag to indicate to our caller (vec-copy glue)
          * that we need the copies performed for us.
          */
-        LOG(task, rust_log::UPCALL | rust_log::MEM, "new vec path");
+        LOG(task, mem, "new vec path");
         void *mem = task->malloc(alloc, td);
         if (!mem) {
             task->fail(4);
@@ -472,24 +480,22 @@ upcall_require_rust_sym(rust_task *task,
     LOG_UPCALL_ENTRY(task);
     rust_dom *dom = task->dom;
 
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "upcall require rust sym: lib #%" PRIdPTR
-              " = %s, c_sym #%" PRIdPTR
-              ", rust_sym #%" PRIdPTR
-              ", curr_crate = 0x%" PRIxPTR, lib_num, library, c_sym_num,
-              rust_sym_num, curr_crate);
+    LOG(task, cache, "upcall require rust sym: lib #%" PRIdPTR
+        " = %s, c_sym #%" PRIdPTR
+        ", rust_sym #%" PRIdPTR
+        ", curr_crate = 0x%" PRIxPTR, lib_num, library, c_sym_num,
+        rust_sym_num, curr_crate);
     for (char const **c = crate_rel(curr_crate, path); *c; ++c) {
-        LOG(task, rust_log::UPCALL, " + %s", crate_rel(curr_crate, *c));
+        LOG(task, upcall, " + %s", crate_rel(curr_crate, *c));
     }
 
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "require C symbol 'rust_crate' from lib #%" PRIdPTR, lib_num);
+    LOG(task, cache, "require C symbol 'rust_crate' from lib #%" PRIdPTR,
+        lib_num);
     rust_crate_cache::c_sym *c =
             fetch_c_sym(task, curr_crate, lib_num, c_sym_num, library,
                         "rust_crate");
 
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "require rust symbol inside crate");
+    LOG(task, cache, "require rust symbol inside crate");
     rust_crate_cache::rust_sym *s = task->cache->get_rust_sym(rust_sym_num,
                                                               dom,
                                                               curr_crate, c,
@@ -497,11 +503,9 @@ upcall_require_rust_sym(rust_task *task,
 
     uintptr_t addr = s->get_val();
     if (addr) {
-        LOG(task, rust_log::UPCALL | rust_log::CACHE,
-                  "found-or-cached addr: 0x%" PRIxPTR, addr);
+        LOG(task, cache, "found-or-cached addr: 0x%" PRIxPTR, addr);
     } else {
-        LOG(task, rust_log::UPCALL | rust_log::CACHE | rust_log::ERR,
-                  "failed to resolve symbol");
+        LOG_ERR(task, cache, "failed to resolve symbol");
         task->fail(7);
     }
     return addr;
@@ -516,23 +520,22 @@ upcall_require_c_sym(rust_task *task,
                      char const *symbol) {
     LOG_UPCALL_ENTRY(task);
 
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "upcall require c sym: lib #%" PRIdPTR
-              " = %s, c_sym #%" PRIdPTR
-              " = %s"
-              ", curr_crate = 0x%" PRIxPTR, lib_num, library, c_sym_num,
-              symbol, curr_crate);
+    LOG(task, cache, "upcall require c sym: lib #%" PRIdPTR
+        " = %s, c_sym #%" PRIdPTR
+        " = %s"
+        ", curr_crate = 0x%" PRIxPTR, lib_num, library, c_sym_num,
+        symbol, curr_crate);
 
     rust_crate_cache::c_sym *c = fetch_c_sym(task, curr_crate, lib_num,
                                              c_sym_num, library, symbol);
 
     uintptr_t addr = c->get_val();
     if (addr) {
-        LOG(task, rust_log::UPCALL | rust_log::CACHE,
+        LOG(task, cache,
                   "found-or-cached addr: 0x%" PRIxPTR, addr);
     } else {
-        LOG(task, rust_log::UPCALL | rust_log::CACHE | rust_log::ERR,
-                  "failed to resolve symbol %s in %s", symbol, library);
+        LOG_ERR(task, cache, "failed to resolve symbol %s in %s",
+                symbol, library);
         task->fail(6);
     }
     return addr;
@@ -546,14 +549,12 @@ upcall_get_type_desc(rust_task *task,
                      size_t n_descs,
                      type_desc const **descs) {
     LOG_UPCALL_ENTRY(task);
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "upcall get_type_desc with size=%" PRIdPTR
-              ", align=%" PRIdPTR ", %" PRIdPTR " descs", size, align,
-              n_descs);
+    LOG(task, cache, "upcall get_type_desc with size=%" PRIdPTR
+        ", align=%" PRIdPTR ", %" PRIdPTR " descs", size, align,
+        n_descs);
     rust_crate_cache *cache = task->get_crate_cache(curr_crate);
     type_desc *td = cache->get_type_desc(size, align, n_descs, descs);
-    LOG(task, rust_log::UPCALL | rust_log::CACHE,
-              "returning tydesc 0x%" PRIxPTR, td);
+    LOG(task, cache, "returning tydesc 0x%" PRIxPTR, td);
     return td;
 }
 
@@ -575,7 +576,7 @@ upcall_start_task(rust_task *spawner,
     LOG_UPCALL_ENTRY(spawner);
 
     rust_dom *dom = spawner->dom;
-    DLOG(dom, rust_log::UPCALL | rust_log::MEM | rust_log::TASK,
+    DLOG(dom, task,
              "upcall start_task(task %s @0x%" PRIxPTR
              " exit_task_glue 0x%" PRIxPTR
              ", spawnee 0x%" PRIxPTR
@@ -598,10 +599,9 @@ upcall_new_thread(rust_task *task, const char *name) {
         kernel->create_domain(parent_dom->root_crate, name);
     rust_handle<rust_task> *child_task_handle =
         kernel->get_task_handle(child_dom_handle->referent()->root_task);
-    LOG(task, rust_log::UPCALL | rust_log::MEM,
-              "child name: %s, child_dom_handle: " PTR
-              ", child_task_handle: " PTR,
-              name, child_dom_handle, child_task_handle);
+    LOG(task, mem, "child name: %s, child_dom_handle: " PTR
+        ", child_task_handle: " PTR,
+        name, child_dom_handle, child_task_handle);
     rust_proxy<rust_task> *child_task_proxy =
         new rust_proxy<rust_task> (child_task_handle);
     return child_task_proxy;
@@ -641,7 +641,7 @@ upcall_start_thread(rust_task *task,
     LOG_UPCALL_ENTRY(task);
     rust_dom *parenet_dom = task->dom;
     rust_handle<rust_task> *child_task_handle = child_task_proxy->handle();
-    LOG(task, rust_log::UPCALL | rust_log::MEM | rust_log::TASK,
+    LOG(task, task,
               "exit_task_glue: " PTR ", spawnee_fn " PTR
               ", callsz %" PRIdPTR ")",
               exit_task_glue, spawnee_fn, callsz);