mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-07 04:38:00 +00:00
32- and 64-bit targets, little- and big-endian. It does more or less work on x86 as-is, although is unusably slow since I have knocked out all the fast-path cases and am concentrating on getting the baseline functionality correct. The fast cases will go back in in due course. The fundamental idea is to retain the old 2-level indexing for speed, even on a 64-bit target. Since that's clearly unviable on a 64-bit target, the primary map handles only first N gigabytes of address space (probably to be set to 16, 32 or 64G). Addresses above that are handled slowly using an auxiliary primary map which explicitly lists (base, &-of-secondary-map) pairs. The goal is to have the address-space-manager try and put everything below the 16/32/64G boundary, so we hit the fast cases almost all the time. Performance of the 32-bit case should be unaffected since the fast map will always cover at least the lowest 4G of address space. There are many word-size and endianness cleanups. Jeremy's distinguished-map space-compression scheme is retained, in modified form, as it is simple and seems effective at reducing Memcheck's space use. Note this is all subject to rapid change. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3535