History log of /external/valgrind/coregrind/m_transtab.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d4dc5fc0e4091cead54ebbcdfddc60e0f3ff8081 01-May-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> This patch adds a function that allows to directly properly size an xarray
when the size is known in advance.

3 places identified where this function can be used trivially.

The result is a reduction of 'realloc' operations in core
arena, and a small reduction in ttaux arena
(it is the nr of operations that decreases, the memory usage itself
stays the same (ignoring some 'rounding' effects).

E.g. for perf/bigcode 0, we change from
core 1085742/ 216745904 totalloc-blocks/bytes, 1085733 searches
ttaux 5348/ 6732560 totalloc-blocks/bytes, 5326 searches
to
core 712666/ 190998592 totalloc-blocks/bytes, 712657 searches
ttaux 5319/ 6731808 totalloc-blocks/bytes, 5296 searches

For bz2, we switch from
core 50285/ 32383664 totalloc-blocks/bytes, 50256 searches
ttaux 670/ 245160 totalloc-blocks/bytes, 669 searches
to
core 32564/ 29971984 totalloc-blocks/bytes, 32535 searches
ttaux 605/ 243280 totalloc-blocks/bytes, 604 searches

Performance wise, on amd64, this improves memcheck performance
on perf tests by 0.0, 0.1 or 0.2 seconds depending on the test.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15173 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
aa29de28d79933eaa0a9c16ced4c52c6c1d54738 01-Apr-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix infinite loop in sector recycling introduced by r15054
(a regression test that will exercise sector recycling will follow)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15058 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
d28615ccace5f9c79fca7713c73c19e0767f8f47 31-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Further reduction of the size of the sector TTE tables
For default memcheck configuration, 32 bits) this patch
decreases by 13.6 MB ie. from 89945856 to 76317696.

Note that the type EClassNo is introduced only for readibility
purpose (and avoid some cast). That does not change the size
of the TTEntry.
The TTEntry size is reduced by using unions and/or Bool on 1 bit.

No performance impact detected (outer callgrind/inner memcheck bz2
on x86 shows a small improvement).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15054 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
24f33d792e877ceedd68d6f74f40bba34fd72ce5 26-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improve --stats=yes:
* give the avg nr of IPs per execontext
* use the newly introduced %f in m_transtab.c ratio
and in the avg nr of execontext per list



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15041 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
900c5357f377ae0cf0dba255e660b1c2df5d93bc 24-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> * Add in helgrind stats the nr of live/exit/joined/exit and joined threads
* avoid division by 0 in m_transtab.c stats before anything was done



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15037 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
523b5b8ca67d2063afd02342d0138b0dc0ed6706 23-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> This patch further reduces the memory used by TT/TC (by about 15Mb
on 32 bits memcheck default nr of sectors).

Memory is reduced by using UShort typedef-s for Sector no and TTE no.
Note that for TTE no, we had a mixture of UShort, UInt and Int used
depending on the place (a TTE no was in any case constrained to be an UShort).

The bss memory/startup space is also reduced by allocating the htt on demand
(like tt and tc), using mmap the first time a sector is initialised.

Changes:
* pub_core_transtab.h :
* 2 typedef to identify a sector and a tt entry (these 2 types are UShort)
* add 2 #define 'invalid values' for these types
* change the interface to use these types rather than UInt
* m_transtab.c
* use wherever relevant these 2 new types rather than UInt or UShort
* replace the use of -1 by INV_SNO or INV_TTE
* remove now useless typecast from Int/UInt to UShort for tte
* schedule.c: use the new types






git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15036 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
bece82eba7ba26398a673def2fa326341c4f8ef7 19-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Change TT/TC hashing data structure (decreases memory by 50MB for memcheck 32bits)

This patch changes the way the transtab entries hash table is done.
Currently, the hash table is an open hash table considered full at 65%.
This means that in average, 1 entry on 3 is unused.
(all the hash table memory will be 'active' for big applications,
as the active entries are normally reasonably distributed over the hash table).
The size of a transtab entry is significant (about 150 Bytes).

To avoid having 35% of the entries unused, the translation table
is split in 2:
An hash table, that will contain an index pointing at the transtab entries.
With this technique, we are adding a small hash table,
but we spare 35% of the translation table.

Performance measurements have shown no degradation,
and some platforms have better performance. Not too clear why,
probably this helps platforms with small caches ?).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15023 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
924c852b5883a7b42298dc8c7542116bd9a8a485 15-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> New Option --avg-transtab-entry-size=<number> can be used to tune
the size of the translation table sectors, either to gain memory
or to avoid too many retranslations.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15016 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
87d15de937a7fda829d1916bda59b9bcf62a2fd3 13-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix a warnings introduced by rev 15005


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15008 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5e47e3fae6c8bd8e3b669801a1edbc30ec10499c 12-Mar-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> m_transtab.c statistic/tracing
* common up the identical debug and clo_stat traces
* add in the stats the nr of sectors recycled
* add the avg translation size in each sector recycled
and in the final statistics
(no functional change)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15005 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1bb648db3172e70b73a8ca3a3f3c12ffc1dcd263 05-Mar-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Make printing of transtab: debug-log messages slightly prettier.
No functional change.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14981 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5f1aeb620eb5a3aab662f8b949b031a77a0d14fe 13-Jan-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Export VG_(discard_tranalsations_safely) to the tools. It is
only allowed to be called in certain contexts which is
enforced at runtime.
Change callgrind accordingly.
New header file pub_tool_transtab.h added.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14867 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5f8ced84fdd6ebd260cece49b51477c68437e8ca 10-Jan-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track VEX r3063 (function prototype change).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14863 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
ddd61ff058f02059064e083a8accaefed23d5548 04-Jan-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Change most remaining use of Addr64 in coregrind and the tools to Addr.
Tracking VEX r3056.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14846 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
44bd4465581ff28cef83bb39e684a489297d7b71 29-Dec-2014 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove the type AddrH. The code assumes in many places that the host
and guest architecture are the same. So the type is really pointless
nowadays.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14834 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
518850bf0da07ed3e2244e307268ae0fd80e93a8 23-Oct-2014 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Constify coregrind.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14656 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
597314210494248b4fbefd45525a748439629218 24-Jul-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2910 (infrastructural improvements in representation of
endianness in VEX).

In short: in m_machine.c, VG_(machine_get_hwcaps), get the endianness
of the host, and pass it through to all places (in VEX) where it is
required.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14184 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
0f157ddb404bcde7815a1c5bf2d7e41c114f3d73 18-Oct-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates (20XY-2012 ==> 20XY-2013)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13658 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
a11ec17946cdbafb336e9121b64961c0633af2e7 18-Oct-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Followup to r13652 (make the translation cache size be command-line
controllable): reduce MAX_N_SECTORS to 24, speed up Sector
initialisation, wording tweaks.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13655 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
8e1bee406c191820bc3b22bf55cfa69ef5fdcd8b 18-Oct-2013 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Allow the user to dimension the translation cache
A previous commit had decreased to 6 (on android) and increased to 16
(other platforms) the nr of sectors in the translation cache.
This patch adds a command line option to let the user specify
the nr of sectors as e.g. 16 sectors might be a lot and cause
an out of memory for some workloads or might be too small for
huge executable or executables using a lot of shared libs.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13652 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
2604386ed31a618ee5f2c8d937ada2ef9efc0a55 19-Sep-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Double the size of the (already huge) translation cache on all
non-phone/tablet targets. The previous apparently-huge sizing is
evidently not huge enough for recent apps, eg, recent Firefox requires
circa 350k translations to get started and almost fills an 8-sector
cache merely starting up and then idling.

On Android targets, fall back to 6 sectors; space is critical.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13568 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
3a5322057616d0da214b9e0f897866e203c03e40 25-Feb-2013 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> fix 315545 (find_TTEntry_from_hcode): Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed

Assertion
valgrind: m_transtab.c:674 (find_TTEntry_from_hcode):
Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed.
failure (encountered on some platforms while running gdbsrv tests).

The problem is related to invalidated entries and the host_extents
mapping between hostcode and the translation table entry.

The problem: when an entry is invalidated, the translation table
entry is changed to status Deleted. However, the host extent array
element is not cleaned up.
If a search for a host code address (find_TTEntry_from_hcode)
finds this entry, the translation table entry in Deleted status
is considered as a 'not found', which ensures that the invalidated
entry is not used (e.g. for chaining).
This is all ok.

However, it might be that this Deleted entry is re-used
(see function VG_(add_to_transtab), searching for a Empty
or Deleted entry.
If the Deleted entry is re-used, then a search for the
dead host code can give a result pointing to the re-used
entry. That is clearly wrong.
Note that it is unclear if this bug can only be triggered
while using gdbsrv or if this bug can be triggered with
just the "normal" invalidation logic of translation.
gdbsrv being a heavy "user" of invalidation, it might
be it helps to trigger the code. Alternatively, as gdbsrv
invalidation is special (e.g. invalidation of some entries
is done during translation of other entries), it might be
the bug is specific to gdbsrv.

In any case, to avoid the bug:
searching for an host code address must not only
ignore Deleted entries, but must also ignore an entry
found via a host_extent element which is for a Deleted
entry that was re-used afterwards (pointed to by a
newer host_extent element).


Multiple solutions are possible for fixing the bug:
Sol1: cleanup the host_extents array when an entry is deleted.
The cleanup is however deemed costly:
Each invalidate operation must do a search in the host_extents.
The host_extents array must then be "compacted" to remove
the "dead" host extent element from the array.
The compact operation can be avoided if instead of removing
the element, one marks instead the element as "dead"
e.g. by using one bit of UInt len for that:
UInt len : 31;
Bool dead : 1;
This avoids the compact, but still incurrs the cost of
search and modify the host_extent for each entry invalidated.
Invalidating entries seems to be a critical operation
(e.g. specific ECLASS related data structures have been
done to allow fast deletion).
=> it is deemed that a solution not incurring cost during
invaliation is preferrable.

* Sol 2: detect in find_TTEntry_from_hcode
that the host_extent element is re-used, and handle it similarly
to an host_extents which points at a Deleted entry.
This detection is possible as if an entry is re-used after
having been deleted, this implies that its host code will be
after the end of the host code of the deleted entry
(as host code of a sector is not re-used).
The attached patch implements this solution.

* Sol 3: avoid re-using an entry : the entry would then stay
in Deleted state. This is deemed not ok as it would
imply that invalidation of entries will cause a sector to
become full faster.

The patch:
* adds a new function
Bool HostExtent__is_dead (const HostExtent* hx, const Sector* sec)
telling if the host extent hx from sector sec is a dead entry.
* this function is used in find_TTEntry_from_hcode so that
dead host extents are not resulting in host code to be found.
* adds a regression test which caused the assert failure before
(bug was found/reported/isolated in a small test case by Dejan Jevtic).
* To check the logic of HostExtent__is_dead, m_transtab.c sanity check is
completed to verify that the nr of entries in use in a sector is equal
to the nr of non dead entries in the host extent array.
* adds/improves traces in m_transtab.c (enabled at compile
time using #define DEBUG_TRANSTAB).
Some already existing 'if (0)' conditions are replaced
by if (DEBUG_TRANSTAB)

Regression tested on
f12/x86
debian6/amd64 (also with export EXTRA_REGTEST_OPTS=--sanity-level=4)




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13290 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
17c5e2e3a2f48970063ea43a9abee3e11c72cb04 28-Dec-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improvements to the built-in profiling infrastructure:

--profile-flags=00000000 now prints summary statistics, one line per
profiled block, but with no translation details. Previously it had
no effect.

--profile-interval=<number> is a new flag that causes the profile data
to be dumped and zeroed every <number> event checks. This makes it
possible to get profile data without waiting for runs to end, and to
get profile data which depends on the current workload etc. If
--profile-interval=0 or is unset, the profile is printed only once, at
the end of the run, as before.

--profile-flags=XXXXXXXX (for at least one nonzero X) prints the
summary lines both at the start and end of the profile, so you don't
have to scroll back up to the top to see the summary.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13213 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
059838bd94f9d06cd31648dc9bbf7da71c3db957 17-Dec-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> With --stats=yes, also print TT/TC stats.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13185 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
6bd9dc18c043927c1196caba20a327238a179c42 23-Nov-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changes to allow compilation with -Wwrite-strings. That compiler option
is not used for testcases, just for valgrind proper.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13137 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1636d33c13958b9c0e7d3059cdd5005746418eb2 15-Nov-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Char/HChar fixups for m_debuginfo and m_gdbserver.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13122 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
19f91bbaedb4caef8a60ce94b0f507193cc0bc10 10-Nov-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix more Char/HChar mixups. Closing in...


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13119 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
54fe2021b87b9e5edb8ec8070f47b86d5cafb8aa 28-Oct-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Char/HChar and constness fixes. Mostly cost center
on allocators which is always a const HChar *


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13089 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
03f8d3fc25f5a45c5826259d1b33b7f310117279 05-Aug-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates to include 2012.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12843 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
b7301c690606964dd1ece81ce2fd2b6fd90ab012 24-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> For --profile-flags=, weight the counts by the number of guest insns
in each IRSB, rather than considering each IRSB to have a weight of 1.
This probably gives more representative profiles, especially post
t-chain merge, which made inter-SB transitions more or less free
compared to what they were before.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12542 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
e25053c5aaefc6a4039dcd557adf24d8bb23db69 23-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Disable debug printing w.r.t. sector unlinking.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12539 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
291849fb0285e0998b4c9e33eb153eb3373c4a88 21-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge branches/TCHAIN from r12476 (its creation point) into trunk.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12517 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
ec062e8d96a361af9905b5447027819dfbfee01a 23-Oct-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update all copyright dates, from 20xy-2010 to 20xy-2011.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12206 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
b5b87408c0c99f9f6938d8cd921e2a5f420577c4 07-Mar-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add a port to IBM z/Architecture (s390x) running Linux -- Valgrind
side components. (Florian Krohm <britzel@acm.org> and Christian
Borntraeger <borntraeger@de.ibm.com>). Fixes #243404.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11604 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1e0fff690e9c571275e8025eb2dcff7bf29b53af 10-Jan-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Memcheck, None: update avg translation size to be more realistic.
Massif: specify avg translation size at all, so as to avoid excessive
retranslations caused by the fact that the default value is far below
reality for Massif.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11494 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
9eecbbb9a9cbbd30b903c09a9e04d8efc20bda33 03-May-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates to 2010.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11121 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5d0d1f3a78d6c5c765360982a08d87a068ce7f1c 14-Mar-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improve performance of the fallback path when a translation is not
found in the fast-cache.

* reduce max loading of the per-sector TT hash tables from 80% to 65%.
This reduces the number of required probes by a factor of 3.

* when searching for a translation, don't visit the sectors in a fixed
order. Instead, use an MTF array in which the most popular sectors
(in terms of most likely to hold the translation we're looking for)
are visited first. This reduces the number of required probes by
another factor of 2.

These improvements have no effect on small programs, but improve
scalability on big apps. For an application comprising 300k
translations, runtime on Memcheck is reduced by 3% and on None by
about 20%. The average number of probes per fast-cache miss is
reduced from around 22 to less than 5.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11091 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
59570ffbe31930ab4d678754daaeec0715117a3d 01-Jan-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge from branches/ARM, all parts of the ARM-Linux port except for
the changes to do with reading and using ELF and DWARF3 info.
This breaks all targets except amd64-linux and x86-linux.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10982 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
738856f99eea33d86ce91dcb1d6cd5b151e307ca 15-Jul-2009 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge coregrind/ changes from branches/MESSAGING_TIDYUP r10464.

This commit tidies up and rationalises what could be called the
"messaging" system -- that part of V to do with presenting output to
the user. In particular it brings significant improvements to XML
output.

Changes are:

* XML and normal text output now have separate file descriptors,
which solves longstanding problems for XML consumers caused by
the XML output getting polluted by unexpected non-XML output.

* This also means that we no longer have to hardwire all manner
of output settings (verbosity, etc) when XML is requested.

* The XML output format has been revised, cleaned up, and made
more suitable for use by error detecting tools in general
(various Memcheck-specific features have been removed). XML
output is enabled for Ptrcheck and Helgrind, and Memcheck is
updated to the new format.

* One side effect is that the behaviour of VG_(message) has been
made to be consistent with printf: it no longer automatically
adds a newline at the end of the output. This means multiple
calls to it can be used to build up a single line message; or a
single call can write a multi-line message. The ==pid==
preamble is automatically inserted at each newline.

* VG_(message)(Vg_UserMsg, ..args..) now has the abbreviated form
VG_(UMSG)(..args..); ditto VG_(DMSG) for Vg_DebugMsg and
VG_(EMSG) for Vg_DebugExtraMsg. A couple of other useful
printf derivatives have been added to pub_tool_libcprint.h,
most particularly VG_(vcbprintf).

* There's a small change in the core-tool interface to do with
error handling: VG_(needs_tool_errors) has a new method
void (*before_pp_Error)(Error* err) which, if non-NULL, is
called just before void (*pp_Error)(Error* err). This is to
give tools the chance to look at errors before any part of them
is printed, so they can print any XML preamble they like.

* coregrind/m_errormgr.c has been overhauled and cleaned up, and
is a bit simpler and more commented. In particular pp_Error
and VG_(maybe_record_error) are significantly changed.

The diff is huge, but mostly very boring. Most of the changes
are of the form

- VG_(message)(Vg_UserMsg, "this is a message %d", n);
+ VG_(message)(Vg_UserMsg, "this is a message %d\n", n);

Unfortunately as a result of this, it touches a large number
of source files.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10465 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
cda2f0fbda4c4b2644babc830244be8aed95de1d 18-May-2009 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merged non-Darwin-specific parts of r9397,r9423,r9490, 9461, 9462 from the
DARWIN branch. A big ugly DARWIN/trunk sync commit, mostly to do with
changing the representation of SysRes and vki_sigset_t. Functionality of
the trunk shouldn't be changed by it.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9876 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
9f207460d70d38c46c9e81996a3dcdf90961c6db 10-Mar-2009 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Updated copyright years.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9344 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1dcee097db02f9ef3ba355162c4373d90d0e895c 24-Feb-2009 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove a number of unused parameters, found with -Wunused-parameter.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9248 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
9c606bd8634cd6b67bb41fa645b5c639668cfa2d 18-Sep-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge all remaining changes from branches/PTRCHECK. These are some
relatively minor extensions to m_debuginfo, a major overhaul of
m_debuginfo/readdwarf3.c to get its space usage under control, and
changes throughout the system to enable heap-use profiling.

The majority of the merged changes were committed into
branches/PTRCHECK as the following revs: 8591 8595 8598 8599 8601 and
8161.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8621 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
a0b6b2cf9abc7b0d87be1215a245eaccc0452af9 07-Jul-2008 bart <bart@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merged FORMATCHECK branch (r8368) to trunk.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8369 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
89230cace4f5acad8037e4cb4b3e49e83d3a275b 29-May-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Allow 64-byte line sizes (PA6T cpu).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8151 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
4d474d086188fd1f29fa97dbd84d8ea2e589a9b8 11-Feb-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates ("200X-2007" --> "200X-2008").


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7398 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5f76de086a6d643db51e50a4e623df7dfc9b6161 11-Feb-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Redo the dispatcher's fast-cache mechanism (VG_(tt_fast) et al) to be
more cache friendly. This changes the mechanism from being a table of
pointers to (guest address, translated code pairs) to being a table of
pairs (guest address, pointer to translated code). The effect ranges
from zero up to about 20% performance improvement on memcheck, the
biggest effects being seen for programs which jump around a large
number of blocks of code and whose data set does not fit in L2.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6582 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
9ebd6e0c607fa30301b1325874eb8de871c21cc5 08-Jan-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6488 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
0b9d74abd0a663b530d290b2b788ddeda46e5400 24-Dec-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Non-functional commit: track IR renaming in vex r1689.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6416 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
d1c6fa2e77dcffc271175822c9c547bd64febca9 17-Oct-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Ensure VG_(tt_fastN) always stays as an array of NULLs if BB profiling
isn't in effect. This should cause the dispatcher to segfault if it
should ever inadvertantly end up running the profiled dispatch loop
when it shouldn't. [The alternative is to run slowly for no apparent
reason.]



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6310 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
e808930793aeddc4cfd3e7a94b665913bec2566c 17-Oct-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track SysRes change.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6294 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
e4b0bf07b0ee0a18eacc5aba91686ab5fc1d327b 06-Jun-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5954 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
c0a02f88a9b5ca7cebebf67e1f2f5ebcadb1e238 07-Apr-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Oops: when adding translations to the auxiliary transtab, don't forget to
ensure D-I cache coherence. Fixes SIGILLs in fn wrapping failures on low end
PowerPCs.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5835 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
78c0c09d429c95115e826ef769ecaa6cff2ac338 13-Jan-2006 tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9> Use VG_(am_mmap_anon_float_valgrind) to allocate the unredirected
translation cache. This ensures that the cache space is executable
which it isn't when it is allocated as a static variable in the data
segment, at least on my amd64 box.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5525 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
0ec07f32bbbb209d749b9974408e6f025ad40b31 12-Jan-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge in function wrapping support from the FNWRAP branch. That
branch hereby becomes inactive. This currently breaks everything
except x86; fixes for amd64/ppc32 to follow.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5520 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
3387dda4479102751d544c176a7bfc24f3766669 26-Dec-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> More dispatcher tuning for ppc32/64. Makes a big difference for
perf/tinycc.

- run_thread_for_a_while: just clear this thread's reservation when
starting, not all of them.

- use a different fast-cache hashing function for ppc32/64 than for
x86/amd64. This allows the former to use all the fast-cache entries
rather than just 1/4 of them.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5441 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1f0d814045aba94e01e62e04e968ca8b970b3d44 23-Dec-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track changes to PPC naming convention - VEX r1504



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5416 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5096a39f831d8f7d9dbdfb43e0de0d8b13d4d950 13-Dec-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improve vg_SP_update_pass() to catch more constant offset cases. Improves
performance by 1--3% on several programs on my machine.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5331 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
2c48c7b0a453d32375a4df17e153011b797ef28c 29-Nov-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add framework for ppc64 support. Apologies in advance for the
inevitable breakage to other platforms.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5250 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
e3826cfe34ec9a0caa570a0d15647b28711584a0 13-Nov-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Hook the ppc32 stuff up to the revised CPU detection machinery, and
add a bunch of code to detect what the cpu can do at startup by
catching SIGILLs. Shame PPC doesn't offer any sane mechanism for
finding out what instruction subsets the CPU is capable of (a la
x86/amd64 cpuid).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5108 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
65e193939481231a8f6699201258e0a2828357e8 19-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Snap up some easy pickings pointed out by cachegrinding nulgrind on ppc32.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4945 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
4ba057cce1d81a949f5a899b5abb99e90a731bcc 18-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Change the core-tool interface so that tools are fully aware of both
the guest extents for the presented translation and also its original
un-redirected guest address. These changes are needed in particular
to make cachegrind's code cache management work properly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4943 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
6c1bbbb1799cc34d05e2c1bae06f5533151eaaa3 18-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add extra auxiliary data structures which make it possible to quickly
find and delete all translations intersecting with small address
ranges (8 k or less, currently). This makes it possible to simulate
ppc32 icbi instructions in reasonable time, and finally makes the
ppc32 port run at a usable speed.

The scheme is based around partitioning translations into equivalence
classes based on address ranges. For deletions whose range falls
within a single class, all translations intersecting it can be found
by inspecting just that class and one other. Given that there are 256
classes, this cuts the cost, relative to scanning the entire TC, by
approximately half that factor (viz, 128), assuming the translations
are distributed evenly over the classes.

The whole business is more complex and difficult than I would like.

A detailed comment will later be added.

Very thorough sanity checking has been added
(sanity_check_eclasses_in_sector). This is engaged at
--sanity-level=4 and above.

The TT hash function (HASH_TT) has been improved to reduce its
tendency to cluster TT entries in some circumstances. This has
allowed the TT maximum loading factor to be increased from 66% to 80%
and so the absolute size of the TC (in each sector) to be less than
2^16 entries. The latter change is important for the fast-deletion
changes.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4942 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
3786772222c5b31fd6cc5586bcd1ce0da58f1dbe 12-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Notify the tool via tool_discard_basic_block_info() about translations
thrown away due to lack of space.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4908 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
5155dec2ac1d0855fcdc5060503e1d98a281b26a 12-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Redo the way cachegrind generates instrumentation code, so that it can
deal with any IR that happens to show up. This makes it work on ppc32
and should fix occasionally-reported bugs on x86/amd64 where it bombs
due to having to deal with multiple date references in a single
instruction.

The new scheme is based around the idea of a queue of memory events
which are outstanding, in the sense that no IR has yet been generated
to do the relevant helper calls. The presence of the queue --
currently 16 entries deep -- gives cachegrind more scope for combining
multiple memory references into a single helper function call. As a
result it runs 3%-5% faster than the previous version, on x86.

This commit also changes the type of the tool interface function
'tool_discard_basic_block_info' and clarifies its meaning. See
comments in include/pub_tool_tooliface.h.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4903 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
0fd92f4126a029b2c73fd217b337121c38070066 06-Oct-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changed some overflow-prone counters from UInt to ULong.

Changed some printf specifiers accordingly, plus some more that were
incorrect.

Also put commas in various output numbers, eg. the leak check stats.
This makes them much easier to read when they get big. One
exception is in XML number-only fields such as <leakedbytes>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4874 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
a16ea0a5fa05dac343e63feddf63f51cb0c340bd 30-Sep-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> When a sector is full, debug-print TC/TT loading for it, so as to give
better info on sizing decisions.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4837 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
34483bcaeda3136ec238bcfd7f9e691cf8a6d0dc 28-Sep-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Increase some sizes to deal better with the new multigigabyte world:

- on 64-bit platforms, double the size of the supported address
space to 32G.

- Increase the size of the ExeContext table 6 times. Some very
large apps have been observed to have been doing a lot of
searching in the old 4999 entry table. This table may be
OSetified in the fullness of time.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4808 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
45f4e7c91119c7d01a59f5e827c67841632c9314 27-Sep-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> This commit merges in changes from branches/ASPACEM (specifically,
changes from r4341 through r4787 inclusive). That branch is now dead.
Please do not commit anything else to it.

For the most part the merge was not troublesome. The main areas of
uncertainty are:

- build system: I had to import by hand Makefile.core-AM_CPPFLAGS.am
and include it in a couple of places. Building etc seems to still
work, but I haven't tried building the documentation.

- syscall wrappers: Following analysis by Greg & Nick, a whole lot of
stuff was moved from -generic to -linux after the branch was created.
I think that is satisfactorily glued back together now.

- Regtests: although this appears to work, no .out files appear, which
is strange, and makes it hard to diagnose regtest failures. In
particular memcheck/tests/x86/scalar.stderr.exp remains in a
conflicted state.

- amd64 is broken (slightly), and ppc32 will be unbuildable. I'll
attend to the former shortly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4789 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
a30545069556d3dca4ca3feb7c621bdcb7b34107 27-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Make VG_(discard_translations) 64-bit clean. As JosefW points out, it
doesn't make much sense to have a 64-bit base address but only a
32-bit length.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4273 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
1bf724aa02205d70a8ce168b5eb477f21bb0bfd1 27-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix a very suspicious-looking bug in the translation-discard stuff.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4272 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
26412bd2c4ef3e55683141f132ebd1eb32d8530b 07-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Support for self modifying code on unfriendly platforms (x86, amd64)
via the use of self-checking translations. (Friendly platforms which
have icache-invalidation instructions we can observe, such as ppc32,
are already handled correctly.) This should finally fix the
longstanding problem of V incorrectly handling calls of statically
nested functions (a gcc extension), and more generally make it a lot
easier to use V to debug dynamic code generation systems.

Since self-checking is a large performance overhead, there is some
control via a command line flag:

--smc-support=none

Don't make any translations self-checking.

--smc-support=stack

Add checking code for translations taken from segments which
have the SF_GROWDOWN flag set -- stacks, basically.
This is the default. It should make gcc nested functions and
GNU Ada work correctly with no intervention from the user.

--smc-support=all

Make all translations self-checking. This is expensive and
you want to do this if you're debugging a JIT compiler or
some such.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4122 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
2bf6ba55b04ea9a58098f041c5ee149539c0f081 30-Jun-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Restrict assertion to cache lines we know we need.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4068 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
db8f033805acb0a7fe53052b04726b8aedbd8cf8 29-Jun-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> It's official. I am a moron.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4053 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
10f08cf5b84882eebbb6712a7be890577650e8ad 29-Jun-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> ppc32: reinstate collection of cache-line-size info from the auxv
array at startup. This is used in m_transtab. However this info is
not yet fed to Vex, so it's still important to zero-out the auxv field
holding cache line size info passed to the client, so as to stop the
client's glibc using dcbz. This will be fixed.

Also get rid of a bunch more ppc32-specific vdso stuff in m_main that
doesn't need to be done. This now means ppc32-linux specifics in
m_main are only marginally intrusive than the x86-linux or amd64-linux
specifics in m_main.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4052 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
2025cf98a3210c175a90fc77cb599cca1643bd68 26-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Break up VG_(show_BB_profile)(), and move half of it into m_main. This
removes m_transtab's dependence on m_translate (breaking a circular
dependence) and m_debuginfo, hooray.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4035 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
856c54e8c6a56e5a29124a5ee3cb12b37b850342 26-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Combine the percentify() functions from Cachegrind and m_transtab into
a single more general one exported from m_libcprint.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4034 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
d666ea764c78610934bd995eb1c5007d9cd9d56d 26-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove empty sanity check function. And clean up sanity checking in
m_scheduler a little.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4033 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
85665ca6fa29dd64754dabe50eb98f25896e752a 20-Jun-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> Finally, valgrind on ppc32.
Plenty still to do, but simple programs like ls seem to run ok

Thanks, Paul, for having your ppc port of valgrind 2.4 to work from!




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3969 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
24a6efb2f94eb0cb5d53174d580e1dc00893a6d6 20-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove some unnecessary #includes, comment some others.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3966 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
394213a582d2c388eea41c142b4455fb8c2c48a4 19-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Move VG_(bbs_done) out of main and make it local in scheduler.c. This
removes the dependence of m_translate.c and m_libcassert.c on m_main.c.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3954 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
c7561b931e249acf3768ead77638545b0ccaa8f1 19-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Final commit for the initial modularisation pass:

- Broke part of m_scheduler off into a new module m_threadstate. It
contains ThreadState, VG_(threads)[] and some basic operations on the
thread table. All simple stuff, the complex stuff stays in m_scheduler.
This avoids lots of circular dependencies between m_scheduler and other
modules.

- Managed to finally remove core.h and tool.h, double hurrah!

- Introduced pub_tool_basics.h and pub_core_basics.h, one of which is
include by every single C file.

- Lots of little cleanups and changes related to the above.

- I even did a small amount of documentation updating.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3944 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
e9befc6536670e4a494b7035363fc080eda98644 11-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularised the libc low-level memory management stuff (mmap, etc).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3891 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
132bfccd21960e462352175f8553a5bdce8a210c 04-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularised assertions and panics in m_libcassert.

As part of this, killed the VG_STRINGIFY macro, which was used to expand
out names like "VG_(foo)" and "vgPlain_foo" in assertion failure
messages. This is good since we actually want the "VG_(foo)" form used
in these messages.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3842 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
36a20fa5f779a0a6fb7b4a90dcaa6376481f1faa 03-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularise printing functions in m_libcprint.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3840 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
97405b2d134b52880d6dbec3eb2929e2002c2542 02-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Started modularising vg_mylibc. Put all the standalone stuff -- ie. not
relying on any other modules -- in m_libcbase.

Also converted the 'size' parameters to functions like VG_(memcpy) and
VG_(strncpy) from Int to SizeT, as they should be.

Also removed VG_(atoll16) and VG_(toupper), which weren't being used.

Also made VG_(atoll36) less flexible -- it now only does base-36 numbers
instead of any base in the range 2..36, since base-36 is the only one we
need. As part of that, I fixed a horrible bug in it which caused it to
return incorrect answers for any number containing the digits 'A'..'I'!
(Eg. for "A; it would return 17 instead of 10!)

Had to disable the assertions in VG_(string_match), since this module can't
see vg_assert, which wasn't ideal but also isn't a disaster.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3838 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
ea27e4627518665dd6c81213c0ba1f7ff0218e1a 31-May-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularised all the debug info stuff as m_debuginfo/. It's a mess
and needs further cleaning up, but it's a start.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3821 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
2024234c590f408994b373abfb00bc2cd2a90c48 17-May-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Added module m_options for holding all the command-line option stuff.
Perhaps parts of process_cmd_line_option() should go in here, but I've
not done that for now.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3751 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c
8bddf58af8cc7342d4bde6712c5a6a33bf2850d4 14-May-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularised vg_transtab.c as m_transtab.

Renamed add_to_trans_tab() as add_to_transtab() for consistency
with the other names.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3703 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/coregrind/m_transtab.c