Ejemplo n.º 1
0
Object allocate(size_t size)
{
    Object object(mbmalloc(size), size, random());
    for (size_t i = 0; i < size / sizeof(long); ++i)
        (static_cast<long*>(object.pointer))[i] = object.uuid;
    return object;
}
Ejemplo n.º 2
0
void Interpreter::doMallocOp(Op op, ThreadId threadId)
{
    switch (op.opcode) {
    case op_malloc: {
        m_objects[op.slot] = { mbmalloc(op.size), op.size };
        assert(m_objects[op.slot].object);
        bzero(m_objects[op.slot].object, op.size);
        break;
    }
    case op_free: {
        if (!m_objects[op.slot].object)
            return;
        mbfree(m_objects[op.slot].object, m_objects[op.slot].size);
        m_objects[op.slot] = { 0, 0 };
        break;
    }
    case op_realloc: {
        if (!m_objects[op.slot].object)
            return;
        m_objects[op.slot] = { mbrealloc(m_objects[op.slot].object, m_objects[op.slot].size, op.size), op.size };
        break;
    }
    case op_align_malloc: {
        size_t alignment = compute2toPower(op.alignLog2);
        m_objects[op.slot] = { mbmemalign(alignment, op.size), op.size };
        assert(m_objects[op.slot].object);
        bzero(m_objects[op.slot].object, op.size);
        break;
    }
    default: {
        fprintf(stderr, "bad opcode: %d\n", op.opcode);
        abort();
        break;
    }
    }
}
Ejemplo n.º 3
0
 void* operator new(size_t size) { return mbmalloc(size); }