From: Gabriel Corona Date: Mon, 23 Jun 2014 10:02:49 +0000 (+0200) Subject: [mc] Always inline mc_page_store_get_page (C version of page_store->get_page()) X-Git-Tag: v3_12~956^2~1^2~8 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5838ca84fc5da29f60e79a41454680735eece98f [mc] Always inline mc_page_store_get_page (C version of page_store->get_page()) --- diff --git a/src/mc/mc_page_store.cpp b/src/mc/mc_page_store.cpp index 85ef6a72f5..9d98c5e232 100644 --- a/src/mc/mc_page_store.cpp +++ b/src/mc/mc_page_store.cpp @@ -163,11 +163,6 @@ size_t s_mc_pages_store::store_page(void* page) extern "C" { -const void* mc_page_store_get_page(mc_pages_store_t page_store, size_t pageno) -{ - return page_store->get_page(pageno); -} - mc_pages_store_t mc_pages_store_new() { return new s_mc_pages_store_t(500); diff --git a/src/mc/mc_page_store.h b/src/mc/mc_page_store.h index 3caa88519e..de67f55da2 100644 --- a/src/mc/mc_page_store.h +++ b/src/mc/mc_page_store.h @@ -6,11 +6,13 @@ #include +#ifdef __cplusplus #include #include #include #include +#endif #include @@ -20,6 +22,10 @@ #ifndef MC_PAGE_SNAPSHOT_H #define MC_PAGE_SNAPSHOT_H +struct s_mc_pages_store; + +#ifdef __cplusplus + /** @brief Storage for snapshot memory pages * * The first (lower) layer of the per-page snapshot mechanism is a page @@ -79,7 +85,10 @@ private: // Types typedef boost::unordered_map pages_map_type; private: // Fields: - /** First page */ + /** First page + * + * mc_page_store_get_page expects that this is the first field. + * */ void* memory_; /** Number of available pages in virtual memory */ size_t capacity_; @@ -186,3 +195,14 @@ size_t s_mc_pages_store::capacity() { #endif +/** + */ +static inline __attribute__((always_inline)) +const void* mc_page_store_get_page(mc_pages_store_t page_store, size_t pageno) +{ + // This is page_store->memory_: + void* memory = *(void**)page_store; + return mc_page_from_number(memory, pageno); +} + +#endif diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index 9027f75acd..92aa3ac593 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -146,7 +146,6 @@ void mc_softdirty_reset(); typedef struct s_mc_pages_store s_mc_pages_store_t, * mc_pages_store_t; mc_pages_store_t mc_pages_store_new(); -const void* mc_page_store_get_page(mc_pages_store_t page_store, size_t pageno); static inline __attribute__((always_inline)) bool mc_snapshot_region_linear(mc_mem_region_t region) { diff --git a/src/mc/mc_snapshot.c b/src/mc/mc_snapshot.c index 33f670c84e..07c10079e2 100644 --- a/src/mc/mc_snapshot.c +++ b/src/mc/mc_snapshot.c @@ -8,6 +8,7 @@ #include "mc_private.h" #include "mc_mmu.h" +#include "mc_page_store.h" mc_mem_region_t mc_get_snapshot_region(void* addr, mc_snapshot_t snapshot) {