Esempio n. 1
0
JL_DLLEXPORT void jl_method_init_properties(jl_method_t *m)
{
    jl_lambda_info_t *li = m->lambda_template;
    jl_value_t *body1 = skip_meta((jl_array_t*)li->code);
    if (jl_is_linenode(body1)) {
        m->line = jl_linenode_line(body1);
    }
    else if (jl_is_expr(body1) && ((jl_expr_t*)body1)->head == line_sym) {
        m->file = (jl_sym_t*)jl_exprarg(body1, 1);
        m->line = jl_unbox_long(jl_exprarg(body1, 0));
    }

    int i;
    uint8_t called=0;
    for(i=1; i < li->nargs && i <= 8; i++) {
        jl_value_t *ai = jl_array_ptr_ref(li->slotnames,i);
        if (ai == (jl_value_t*)unused_sym) continue;
        if (jl_array_uint8_ref(li->slotflags,i)&64)
            called |= (1<<(i-1));
    }
    m->called = called;
}
Esempio n. 2
0
JL_DLLEXPORT void jl_method_init_properties(jl_method_t *m)
{
    jl_lambda_info_t *li = m->lambda_template;
    size_t j, n = jl_array_len((jl_array_t*)li->code);
    jl_value_t **body = (jl_value_t**)jl_array_data((jl_array_t*)li->code);
    for(j=0; j < n; j++) {
        jl_value_t *st = body[j];
        if (jl_is_expr(st) && ((jl_expr_t*)st)->head == line_sym) {
            m->line = jl_unbox_long(jl_exprarg(st, 0));
            m->file = (jl_sym_t*)jl_exprarg(st, 1);
            body[j] = jl_nothing;
            break;
        }
    }
    int i;
    uint8_t called=0;
    for(i=1; i < li->nargs && i <= 8; i++) {
        jl_value_t *ai = jl_array_ptr_ref(li->slotnames,i);
        if (ai == (jl_value_t*)unused_sym) continue;
        if (jl_array_uint8_ref(li->slotflags,i)&64)
            called |= (1<<(i-1));
    }
    m->called = called;
}