Value* allocate(Value v) {
    Value *loc;

    pushreg(&v);
    loc = allocloc();
    popreg(&v);
    assert(loc != NULL);
    *loc = v;
    return loc;
}
Value* allocate(Value v) {
    Value *loc;

    pushroot(mkStackvalueroot(&v));
    loc = allocloc();
    assert(loc != NULL);
    poproot(mkStackvalueroot(&v));
    *loc = v;
    return loc;
}