示例#1
0
static sys::MemoryBlock trimBlockToPageSize(sys::MemoryBlock M) {
    static const size_t PageSize = sys::Process::getPageSize();

    size_t StartOverlap = (PageSize - ((uintptr_t)M.base() % PageSize)) % PageSize;

    size_t TrimmedSize = M.size();
    TrimmedSize -= StartOverlap;
    TrimmedSize -= TrimmedSize % PageSize;

    sys::MemoryBlock Trimmed((void*)((uintptr_t)M.base() + StartOverlap), TrimmedSize);

    assert(((uintptr_t)Trimmed.base() % PageSize) == 0);
    assert((Trimmed.size() % PageSize) == 0);
    assert(M.base() <= Trimmed.base() && Trimmed.size() <= M.size());

    return Trimmed;
}
示例#2
0
bool StringLatin1::IsEmpty() const
{
    if (Trimmed().length() == 0)
        return true;
    return false;
}