diff options
Diffstat (limited to 'Tools/DumpRenderTree/chromium/DumpRenderTree.cpp')
-rw-r--r-- | Tools/DumpRenderTree/chromium/DumpRenderTree.cpp | 70 |
1 files changed, 32 insertions, 38 deletions
diff --git a/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp b/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp index 3bbba98..6522450 100644 --- a/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp +++ b/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp @@ -32,6 +32,7 @@ #include "TestShell.h" #include "webkit/support/webkit_support.h" +#include <v8/include/v8-testing.h> #include <v8/include/v8.h> #include <wtf/Vector.h> @@ -52,7 +53,8 @@ static const char optionCheckLayoutTestSystemDeps[] = "--check-layout-test-sys-d static const char optionEnableAcceleratedCompositing[] = "--enable-accelerated-compositing"; static const char optionEnableAccelerated2DCanvas[] = "--enable-accelerated-2d-canvas"; -static const char optionMultipleLoads[] = "--multiple-loads="; +static const char optionStressOpt[] = "--stress-opt"; +static const char optionStressDeopt[] = "--stress-deopt"; static const char optionJavaScriptFlags[] = "--js-flags="; static void runTest(TestShell& shell, TestParams& params, const string& testName, bool testShellMode) @@ -82,13 +84,22 @@ static void runTest(TestShell& shell, TestParams& params, const string& testName } params.testUrl = webkit_support::CreateURLForPathOrURL(pathOrURL); webkit_support::SetCurrentDirectoryForFileURL(params.testUrl); - for (int i = 0; i < shell.loadCount(); i++) { - string javaScriptFlags = shell.javaScriptFlagsForLoad(i); - v8::V8::SetFlagsFromString(javaScriptFlags.data(), static_cast<int>(javaScriptFlags.size())); - bool isLastLoad = (i == (shell.loadCount() - 1)); - shell.setDumpWhenFinished(isLastLoad); - shell.resetTestController(); - shell.runFileTest(params); + v8::V8::SetFlagsFromString(shell.javaScriptFlags().c_str(), shell.javaScriptFlags().length()); + if (shell.stressOpt() || shell.stressDeopt()) { + if (shell.stressOpt()) + v8::Testing::SetStressRunType(v8::Testing::kStressTypeOpt); + else + v8::Testing::SetStressRunType(v8::Testing::kStressTypeDeopt); + for (int i = 0; i < v8::Testing::GetStressRuns(); i++) { + v8::Testing::PrepareStressRun(i); + bool isLastLoad = (i == (v8::Testing::GetStressRuns() - 1)); + shell.setDumpWhenFinished(isLastLoad); + shell.resetTestController(); + shell.runFileTest(params); + } + } else { + shell.resetTestController(); + shell.runFileTest(params); } shell.setLayoutTestTimeout(oldTimeoutMsec); } @@ -106,7 +117,8 @@ int main(int argc, char* argv[]) bool startupDialog = false; bool acceleratedCompositingEnabled = false; bool accelerated2DCanvasEnabled = false; - int loadCount = 1; + bool stressOpt = false; + bool stressDeopt = false; string javaScriptFlags; for (int i = 1; i < argc; ++i) { string argument(argv[i]); @@ -132,12 +144,13 @@ int main(int argc, char* argv[]) acceleratedCompositingEnabled = true; else if (argument == optionEnableAccelerated2DCanvas) accelerated2DCanvasEnabled = true; - else if (!argument.find(optionMultipleLoads)) { - string multipleLoadsStr = argument.substr(strlen(optionMultipleLoads)); - loadCount = atoi(multipleLoadsStr.c_str()); - } else if (!argument.find(optionJavaScriptFlags)) { + else if (argument == optionStressOpt) + stressOpt = true; + else if (argument == optionStressDeopt) + stressDeopt = true; + else if (!argument.find(optionJavaScriptFlags)) javaScriptFlags = argument.substr(strlen(optionJavaScriptFlags)); - } else if (argument.size() && argument[0] == '-') + else if (argument.size() && argument[0] == '-') fprintf(stderr, "Unknown option: %s\n", argv[i]); else tests.append(argument); @@ -146,31 +159,11 @@ int main(int argc, char* argv[]) fprintf(stderr, "--pixel-tests with --test-shell requires a file name.\n"); return EXIT_FAILURE; } - if (loadCount < 1) { - fprintf(stderr, "--multiple-loads requires a positive numeric argument.\n"); + if (stressOpt && stressDeopt) { + fprintf(stderr, "--stress-opt and --stress-deopt are mutually exclusive.\n"); return EXIT_FAILURE; } - // The test runner might send a quoted string which needs to be unquoted before further processing. - if (javaScriptFlags.length() > 1 && javaScriptFlags[0] == '"' && javaScriptFlags[javaScriptFlags.length() - 1] == '"') - javaScriptFlags = javaScriptFlags.substr(1, javaScriptFlags.length() - 2); - // Split the JavaScript flags into a list. - Vector<string> flagsList; - size_t start = 0; - while (true) { - size_t commaPos = javaScriptFlags.find_first_of(',', start); - string flags; - if (commaPos == string::npos) - flags = javaScriptFlags.substr(start, javaScriptFlags.length() - start); - else { - flags = javaScriptFlags.substr(start, commaPos - start); - start = commaPos + 1; - } - flagsList.append(flags); - if (commaPos == string::npos) - break; - } - if (startupDialog) openStartupDialog(); @@ -179,8 +172,9 @@ int main(int argc, char* argv[]) shell.setAllowExternalPages(allowExternalPages); shell.setAcceleratedCompositingEnabled(acceleratedCompositingEnabled); shell.setAccelerated2dCanvasEnabled(accelerated2DCanvasEnabled); - shell.setLoadCount(loadCount); - shell.setJavaScriptFlags(flagsList); + shell.setJavaScriptFlags(javaScriptFlags); + shell.setStressOpt(stressOpt); + shell.setStressDeopt(stressDeopt); if (serverMode && !tests.size()) { params.printSeparators = true; char testString[2048]; // 2048 is the same as the sizes of other platforms. |