Example #1
0
void rstack_link (lua_State *L, GCObject *o, lu_byte tt) {
    RStack *rs = rstack(L);
    o->gch.tt = tt;
    o->gch.next = NULL;
    o->gch.marked = luaC_white(G(L));
    l_setbit(o->gch.marked, FIXEDBIT);
    set_regnum(o, rs->cregnum);
}
Example #2
0
int main(int argc, char** argv) {
    rstack();
    if(argc != 2) {
        printf("usage: %s <signo>\n", argv[0]);
    }
    func3(atoi(argv[1]));
    return 0;
}
Example #3
0
void rstack_init (lua_State *L) {
    RStack *rs = rstack(L);
    rs->state = L;
    rs->rbuf.head = rs->rbuf.last = NULL;
    rs->rbuf.size = 0;
    buf_resize(L, rs, RStack_MINBUFSIZE);
    rs->cregnum = 0;
    rs->creg = rs->regions;
    rs->creg->top = rs->creg->base = rs->rbuf.head;
}
Example #4
0
void *rstack_alloc (lua_State *L, size_t size) {
    RStack *rs = rstack(L);
    Region *r = check_exp(rs->cregnum > 0, rs->creg);
    RObject *top = r->top;
    if (top == rs->rbuf.last) {
        RObject *ohead = rs->rbuf.head;
        buf_resize(L, rs, rs->rbuf.size * 2);
        buf_fix(rs, ohead);
        top = r->top;
    }
    top->body = luaM_malloc(L, size);
    ++r->top;
    return top->body;
}
Example #5
0
void rstack_reject (lua_State *L, GCObject *src) {
    RStack *rs = rstack(L);
    RObject *robj = rstack_getrobj(rs, src);
    lua_assert(robj && src == robj->body);
    luaC_link(L, src, src->gch.tt);
    switch(src->gch.tt) {
    case LUA_TTABLE:
        luaH_reject(L, gco2h(src));
        break;
    case LUA_TUSERDATA:
        luaS_rejectu(L, rawgco2u(src));
        break;
    // TODO: implement
    default:
        lua_assert(0);
    }
    robj->body = NULL;
}
Example #6
0
void rstack_close (lua_State *L) {
    RStack *rs = rstack(L);
    lua_assert(rs->cregnum == 0);
    lua_assert(rs->creg->top == rs->rbuf.head);
    buf_resize(L, rs, 0);
}
Example #7
0
int main() {
    rstack();
    return f2();
}