Exemplo n.º 1
0
void PooledPointTable::reset()
{
    BinaryPointTable table(m_schema);
    pdal::PointRef pointRef(table, 0);

    assert(m_cellNodes.size() >= outstanding());
    Cell::PooledStack cells(m_cellNodes.pop(outstanding()));

    for (auto& cell : cells)
    {
        auto data(m_dataNodes.popOne());
        table.setPoint(*data);

        if (m_origin != invalidOrigin)
        {
            pointRef.setField(pdal::Dimension::Id::PointId, m_index);
            pointRef.setField(pdal::Dimension::Id::OriginId, m_origin);
            ++m_index;
        }

        cell.set(pointRef, std::move(data));
    }

    cells = m_process(std::move(cells));
    for (auto& cell : cells) m_dataNodes.push(cell.acquire());
    m_cellNodes.push(std::move(cells));

    allocate();
}
Exemplo n.º 2
0
uval
MemDescBits::checkSanity(uval page)
{
    uval sane = 1;

    if (KernelInfo::ControlFlagIsSet(KernelInfo::NO_ALLOC_SANITY_CHECK)) {
	return sane;
    }

    uval freeBlocks = countFreeBlocks(page);
    uval numBlocks = ALLOC_PAGE_SIZE / AllocPool::MallocIDToSize(mallocID());

    // code this way to make added more checks easier
    sane = sane && (freeBlocks == (numBlocks - outstanding()));
    tassertWrn(sane, "MDB: %lx - %ld != (%ld - %ld)\n", page,
	       freeBlocks, numBlocks, outstanding());

    return sane;
}