Ejemplo n.º 1
0
bool native_is_ip_stub(void* ip)
{
    // Synchronizing access to dynamic code list
    LMAutoUnlock dcll(VM_Global_State::loader_env->p_dclist_lock);

    return (native_find_stub(ip) != NULL);
}
Ejemplo n.º 2
0
const char* native_get_stub_name_nocpy(void* ip)
{
    // Synchronizing access to dynamic code list
    LMAutoUnlock dcll(VM_Global_State::loader_env->p_dclist_lock);

    DynamicCode* code = native_find_stub(ip);

    if (!code)
        return NULL;

    return code->name;
}
Ejemplo n.º 3
0
// Adding dynamic generated code info to global list
void compile_add_dynamic_generated_code_chunk(const char* name, bool free_name,
    const void* address, size_t length)
{
    DynamicCode *dc = (DynamicCode *)STD_MALLOC(sizeof(DynamicCode));
    assert(dc);
    dc->name = name;
    dc->free_name = free_name;
    dc->address = address;
    dc->length = length;

    // Synchronizing access to dynamic code list
    LMAutoUnlock dcll(VM_Global_State::loader_env->p_dclist_lock);

    DynamicCode** pdcList = &VM_Global_State::loader_env->dcList;
    dc->next = *pdcList;
    *pdcList = dc;
}
Ejemplo n.º 4
0
char* native_get_stub_name(void* ip, char* buf, size_t buflen)
{
    // Synchronizing access to dynamic code list
    LMAutoUnlock dcll(VM_Global_State::loader_env->p_dclist_lock);

    if (!buf || buflen == 0)
        return NULL;

    DynamicCode* code = native_find_stub(ip);

    if (!code || !code->name)
        return NULL;

    strncpy(buf, code->name, buflen);
    buf[buflen - 1] = '\0';

    return buf;
}