Chromium Code Reviews| Index: vm/benchmark_test.cc |
| =================================================================== |
| --- vm/benchmark_test.cc (revision 7204) |
| +++ vm/benchmark_test.cc (working copy) |
| @@ -2,9 +2,12 @@ |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| +#include "vm/benchmark_test.h" |
| + |
| +#include "bin/file.h" |
| + |
| #include "platform/assert.h" |
| -#include "vm/benchmark_test.h" |
| #include "vm/dart_api_impl.h" |
| #include "vm/stack_frame.h" |
| #include "vm/unit_test.h" |
| @@ -13,8 +16,10 @@ |
| Benchmark* Benchmark::first_ = NULL; |
| Benchmark* Benchmark::tail_ = NULL; |
| +const char* Benchmark::executable_ = NULL; |
| -void Benchmark::RunAll() { |
| +void Benchmark::RunAll(const char* executable) { |
| + SetExecutable(executable); |
| Benchmark* benchmark = first_; |
| while (benchmark != NULL) { |
| benchmark->RunBenchmark(); |
| @@ -181,10 +186,34 @@ |
| } |
| -#if 0 |
| // |
| // Measure compile of all dart2js(compiler) functions. |
| // |
| +static char* ComputeDart2JSPath(const char* arg) { |
| + char buffer[2048]; |
| + char* dart2js_path = strdup(File::GetCanonicalPath(arg)); |
| + const char* compiler_path = "%s%slib%scompiler%scompiler.dart"; |
| + char* ptr = strrchr(dart2js_path, File::PathSeparatorCharacter()); |
|
cshapiro
2012/05/01 21:41:52
Why not assert that the path separator is 1 charac
siva
2012/05/01 22:02:49
Done.
|
| + while (ptr != NULL) { |
| + *ptr = '\0'; |
| + OS::SNPrint(buffer, 2048, compiler_path, |
| + dart2js_path, |
| + File::PathSeparator(), |
| + File::PathSeparator(), |
| + File::PathSeparator()); |
| + if (File::Exists(buffer)) { |
| + break; |
| + } |
| + ptr = strrchr(dart2js_path, File::PathSeparatorCharacter()); |
|
cshapiro
2012/05/01 21:41:52
Same here.
siva
2012/05/01 22:02:49
Done.
|
| + } |
| + if (ptr == NULL) { |
| + free(dart2js_path); |
| + dart2js_path = NULL; |
| + } |
| + return dart2js_path; |
| +} |
| + |
| + |
| static void func(Dart_NativeArguments args) { |
| } |
| @@ -196,10 +225,21 @@ |
| BENCHMARK(Dart2JSCompileAll) { |
| - const char* kScriptChars = "#import('lib/compiler/compiler.dart');"; |
| + char* dart_root = ComputeDart2JSPath(Benchmark::Executable()); |
| + Dart_Handle import_map; |
| + if (dart_root != NULL) { |
| + import_map = Dart_NewList(2); |
| + Dart_ListSetAt(import_map, 0, Dart_NewString("DART_ROOT")); |
| + Dart_ListSetAt(import_map, 1, Dart_NewString(dart_root)); |
| + } else { |
| + import_map = Dart_NewList(0); |
| + } |
| + const char* kScriptChars = |
| + "#import('${DART_ROOT}/lib/compiler/compiler.dart');"; |
| Dart_Handle lib = TestCase::LoadTestScript( |
| kScriptChars, |
| - reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver)); |
| + reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver), |
| + import_map); |
| EXPECT(!Dart_IsError(lib)); |
| Timer timer(true, "Compile all of dart2js benchmark"); |
| timer.Start(); |
| @@ -208,8 +248,8 @@ |
| timer.Stop(); |
| int64_t elapsed_time = timer.TotalElapsedTime(); |
| benchmark->set_score(elapsed_time); |
| + free(dart_root); |
| } |
| -#endif |
| // |