import-trace: sliding-window AdvancedMemoryImporter

Initially this was implemented by directly passing through trace
events to the MemoryImporter, keeping a record of conditional jumps
and opcodes, and UPDATEing all inserted rows in a second pass when the
MemoryImporter is finished.

Unfortunately, UPDATE is very slow, and keeping all information in
memory till the end doesn't scale indefinitely.  Therefore the
implementation now delays passing memory access events upwards to the
MemoryImporter only until enough branch history is aggregated, and
taps into Importer's database operations with a set of new virtual
functions that are called downwards.

Change-Id: I159b2533932087087fb3049f4ff07a5f17a25a00
This commit is contained in:
Horst Schirmeier
2013-07-09 13:34:11 +02:00
parent ba7c663551
commit 64b3af299e
5 changed files with 159 additions and 76 deletions

View File

@ -238,9 +238,4 @@ int main(int argc, char *argv[]) {
LOG << "copy_to_database() failed" << endl;
exit(-1);
}
if (!importer->finalize()) {
LOG << "finalize() failed" << endl;
exit(-1);
}
}