X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9429688b769a280613358774f87d56857d32ac2..ca82f90e6d610b6bb3b038cd9ee48d378cc8a909:/src/mc/sosp/PageStore.cpp diff --git a/src/mc/sosp/PageStore.cpp b/src/mc/sosp/PageStore.cpp index e9a7fc16aa..e11d6532b4 100644 --- a/src/mc/sosp/PageStore.cpp +++ b/src/mc/sosp/PageStore.cpp @@ -1,27 +1,25 @@ -/* Copyright (c) 2015-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2015-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include // memcpy, memcmp -#include - #include #ifdef __FreeBSD__ #define MAP_POPULATE MAP_PREFAULT_READ #endif -#include "xbt/base.h" +#include "src/internal_config.h" #include "xbt/log.h" #include "xbt/sysdep.h" -#include "src/internal_config.h" - -#include "src/mc/sosp/PageStore.hpp" - +#ifdef SG_HAVE_CPP14 +#include "src/include/xxhash.hpp" +#endif #include "src/mc/mc_mmu.hpp" +#include "src/mc/sosp/PageStore.hpp" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_page_snapshot, mc, "Logging specific to mc_page_snapshot"); +#include // memcpy, memcmp +#include namespace simgrid { namespace mc { @@ -36,6 +34,9 @@ namespace mc { */ static XBT_ALWAYS_INLINE PageStore::hash_type mc_hash_page(const void* data) { +#ifdef SG_HAVE_CPP14 + return xxh::xxhash<64>(data, xbt_pagesize); +#else const std::uint64_t* values = (const uint64_t*)data; std::size_t n = xbt_pagesize / sizeof(uint64_t); @@ -44,6 +45,7 @@ static XBT_ALWAYS_INLINE PageStore::hash_type mc_hash_page(const void* data) for (std::size_t i = 0; i != n; ++i) hash = ((hash << 5) + hash) + values[i]; return hash; +#endif } // ***** snapshot_page_manager @@ -88,7 +90,7 @@ void PageStore::resize(std::size_t size) // Check if expanding worked if (new_memory != (char*)this->memory_ + old_bytesize) { // New memory segment could not be put at the end of this->memory_, - // so cancel this one and try to rellocate everything and copy data + // so cancel this one and try to relocate everything and copy data munmap(new_memory, new_bytesize - old_bytesize); new_memory = mmap(nullptr, new_bytesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE, -1, 0);