https://github.com/halide/Halide
Raw File
Tip revision: 2d702263c3d1fd547b4a13e58201c7dbea30aa7c authored by Pranav Bhandarkar on 20 September 2019, 23:17:39 UTC
Add comment explaining why simd_op_check.cpp is being refactored
Tip revision: 2d70226
module_jit_ref_count.cpp
#include "HalideRuntime.h"

/** \file JIT module reference counting support. */

/* The runtime can manipulate a reference count on its code because
 * some allocated data structures returned from the runtime may
 * contain function pointers back to this code. For JIT, the module
 * instantiation logic sets values into the globals below to allow
 * tracking which JITModule the code is in. (The goal being to
 * decouple the runtime from having to know details of the Halide JIT
 * support.)
 *
 * The reference count is increased when a new device allocation is
 * made through the device interface part of the runtime and decreased
 * when such an allocation is freed. The mechanism could be used in
 * other palces however.
 */

extern "C" {

WEAK void *halide_jit_module_argument = NULL;
WEAK void (*halide_jit_module_adjust_ref_count)(void *arg, int32_t count) = NULL;

}

namespace Halide { namespace Runtime { namespace Internal {

WEAK void halide_use_jit_module() {
    if (halide_jit_module_adjust_ref_count == NULL) {
        return;
    } else {
        (*halide_jit_module_adjust_ref_count)(halide_jit_module_argument, 1);
    }
}

WEAK void halide_release_jit_module() {
    if (halide_jit_module_adjust_ref_count == NULL) {
        return;
    } else {
        (*halide_jit_module_adjust_ref_count)(halide_jit_module_argument, -1);
    }
}

}}}
back to top