Reviewers: Toon Verwaest,
Message:
Committed patchset #1 manually as r17709 (presubmit successful).
Description:
Add a flag to lexer-shell to replicate input file.
[email protected]
Committed: https://code.google.com/p/v8/source/detail?r=17709
Please review this at https://chromiumcodereview.appspot.com/71783002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+28, -12 lines):
M tools/lexer-shell.cc
Index: tools/lexer-shell.cc
diff --git a/tools/lexer-shell.cc b/tools/lexer-shell.cc
index
0d256f83d7e34869ead3b4862d57c38d45c2382c..33f469fb9b4ada0430efe22236cd7f8a6de4457c
100644
--- a/tools/lexer-shell.cc
+++ b/tools/lexer-shell.cc
@@ -55,22 +55,30 @@ enum Encoding {
};
-const byte* ReadFile(const char* name, Isolate* isolate, int* size) {
+const byte* ReadFile(const char* name, Isolate* isolate,
+ int* size, int repeat) {
FILE* file = fopen(name, "rb");
*size = 0;
if (file == NULL) return NULL;
fseek(file, 0, SEEK_END);
- *size = ftell(file);
+ int file_size = ftell(file);
rewind(file);
+ *size = file_size * repeat;
+
byte* chars = new byte[*size + 1];
- chars[*size] = 0;
- for (int i = 0; i < *size;) {
- int read = static_cast<int>(fread(&chars[i], 1, *size - i, file));
+ for (int i = 0; i < file_size;) {
+ int read = static_cast<int>(fread(&chars[i], 1, file_size - i, file));
i += read;
}
fclose(file);
+
+ for (int i = file_size; i < *size; i++) {
+ chars[i] = chars[i - file_size];
+ }
+ chars[*size] = 0;
+
return chars;
}
@@ -80,10 +88,11 @@ class BaselineScanner {
BaselineScanner(const char* fname,
Isolate* isolate,
Encoding encoding,
- ElapsedTimer* timer)
+ ElapsedTimer* timer,
+ int repeat)
: stream_(NULL) {
int length = 0;
- source_ = ReadFile(fname, isolate, &length);
+ source_ = ReadFile(fname, isolate, &length, repeat);
unicode_cache_ = new UnicodeCache();
scanner_ = new Scanner(unicode_cache_);
switch (encoding) {
@@ -158,9 +167,10 @@ TimeDelta RunBaselineScanner(const char* fname,
Isolate* isolate,
Encoding encoding,
bool dump_tokens,
- std::vector<TokenWithLocation>* tokens) {
+ std::vector<TokenWithLocation>* tokens,
+ int repeat) {
ElapsedTimer timer;
- BaselineScanner scanner(fname, isolate, encoding, &timer);
+ BaselineScanner scanner(fname, isolate, encoding, &timer, repeat);
Token::Value token;
int beg, end;
do {
@@ -188,7 +198,8 @@ TimeDelta ProcessFile(
const char* fname,
Encoding encoding,
Isolate* isolate,
- bool print_tokens) {
+ bool print_tokens,
+ int repeat) {
if (print_tokens) {
printf("Processing file %s\n", fname);
}
@@ -197,7 +208,7 @@ TimeDelta ProcessFile(
TimeDelta baseline_time;
baseline_time = RunBaselineScanner(
fname, isolate, encoding, print_tokens,
- &baseline_tokens);
+ &baseline_tokens, repeat);
if (print_tokens) {
PrintTokens("Baseline", baseline_tokens);
}
@@ -212,6 +223,7 @@ int main(int argc, char* argv[]) {
bool print_tokens = false;
std::vector<std::string> fnames;
std::string benchmark;
+ int repeat = 1;
for (int i = 0; i < argc; ++i) {
if (strcmp(argv[i], "--latin1") == 0) {
encoding = LATIN1;
@@ -223,6 +235,9 @@ int main(int argc, char* argv[]) {
print_tokens = true;
} else if (strncmp(argv[i], "--benchmark=", 12) == 0) {
benchmark = std::string(argv[i]).substr(12);
+ } else if (strncmp(argv[i], "--repeat=", 9) == 0) {
+ std::string repeat_str = std::string(argv[i]).substr(9);
+ repeat = atoi(repeat_str.c_str());
} else if (i > 0 && argv[i][0] != '-') {
fnames.push_back(std::string(argv[i]));
}
@@ -239,7 +254,8 @@ int main(int argc, char* argv[]) {
double baseline_total = 0;
for (size_t i = 0; i < fnames.size(); i++) {
TimeDelta time;
- time = ProcessFile(fnames[i].c_str(), encoding, isolate,
print_tokens);
+ time = ProcessFile(fnames[i].c_str(), encoding, isolate,
print_tokens,
+ repeat);
baseline_total += time.InMillisecondsF();
}
if (benchmark.empty()) benchmark = "Baseline";
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.