Index: tools/tick-processor.html |
diff --git a/tools/tick-processor.html b/tools/tick-processor.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc9f636cb7f7a5ed910daba08931a0d876833597 |
--- /dev/null |
+++ b/tools/tick-processor.html |
@@ -0,0 +1,168 @@ |
+<!DOCTYPE html> |
+<!-- Copyright 2012 the V8 project authors. All rights reserved. |
+ |
+Redistribution and use in source and binary forms, with or without |
+modification, are permitted provided that the following conditions are |
+met: |
+ * Redistributions of source code must retain the above copyright |
+ notice, this list of conditions and the following disclaimer. |
+ * Redistributions in binary form must reproduce the above |
+ copyright notice, this list of conditions and the following |
+ disclaimer in the documentation and/or other materials provided |
+ with the distribution. |
+ * Neither the name of Google Inc. nor the names of its |
+ contributors may be used to endorse or promote products derived |
+ from this software without specific prior written permission. |
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> |
+ |
+<html lang="en"> |
+<head> |
+ <meta charset="utf-8"/> |
+ <title>V8 Tick Processor</title> |
+ |
+ <style type="text/css"> |
+ body { |
+ font-family: Verdana, Arial, Helvetica, sans-serif; |
+ font-size: 10pt; |
+ } |
+ h4 { |
+ margin-bottom: 0px; |
+ } |
+ p { |
+ margin-top: 0px; |
+ } |
+ </style> |
+ |
+ <script src="splaytree.js"></script> |
+ <script src="codemap.js"></script> |
+ <script src="csvparser.js"></script> |
+ <script src="consarray.js"></script> |
+ <script src="profile.js"></script> |
+ <script src="profile_view.js"></script> |
+ <script src="logreader.js"></script> |
+ <script src="tickprocessor.js"></script> |
+ |
+ <script type="text/javascript"> |
+ |
+var v8log_content; |
+var textout; |
+ |
+function load_logfile(evt) { |
+ textout.value = ""; |
+ var f = evt.target.files[0]; |
+ if (f) { |
+ var reader = new FileReader(); |
+ reader.onload = function(event) { |
+ v8log_content = event.target.result; |
+ start_process(); |
+ }; |
+ reader.onerror = function(event) { |
+ console.error("File could not be read! Code " + event.target.error.code); |
+ }; |
+ reader.readAsText(f); |
+ } else { |
+ alert("Failed to load file"); |
+ } |
+} |
+ |
+function print(arg) { |
+ textout.value+=arg+"\n"; |
+} |
+ |
+function start_process() { |
+ ArgumentsProcessor.DEFAULTS = { |
+ logFileName: 'v8.log', |
+ snapshotLogFileName: null, |
+ platform: 'unix', |
+ stateFilter: null, |
+ callGraphSize: 5, |
+ ignoreUnknown: false, |
+ separateIc: false, |
+ targetRootFS: '', |
+ nm: 'nm' |
+ }; |
+ |
+ var entriesProviders = { |
+ 'unix': UnixCppEntriesProvider, |
+ 'windows': WindowsCppEntriesProvider, |
+ 'mac': MacCppEntriesProvider |
+ }; |
+ |
+ var snapshotLogProcessor; // not used |
+ |
+ var tickProcessor = new TickProcessor( |
+ new (entriesProviders[ArgumentsProcessor.DEFAULTS.platform])( |
+ ArgumentsProcessor.DEFAULTS.nm, |
+ ArgumentsProcessor.DEFAULTS.targetRootFS), |
+ ArgumentsProcessor.DEFAULTS.separateIc, |
+ ArgumentsProcessor.DEFAULTS.callGraphSize, |
+ ArgumentsProcessor.DEFAULTS.ignoreUnknown, |
+ ArgumentsProcessor.DEFAULTS.stateFilter, |
+ snapshotLogProcessor); |
+ |
+ tickProcessor.processLogChunk(v8log_content); |
+ tickProcessor.printStatistics(); |
+} |
+ |
+function Load() { |
+ document.getElementById('fileinput').addEventListener( |
+ 'change', load_logfile, false); |
+ textout = document.getElementById('textout'); |
+} |
+</script> |
+</head> |
+<body onLoad="Load()"> |
+ |
+<h3 style="margin-top: 2px;"> |
+ Chrome V8 profiling log processor |
+</h3> |
+<p> |
+Process V8's profiling information log (sampling profiler tick information) |
+in your browser. Particularly useful if you don't have the V8 shell (d8) |
+at hand on your system. You still have to run Chrome with the appropriate |
+<a href="https://code.google.com/p/v8/wiki/ProfilingChromiumWithV8"> |
+ command line flags</a> |
+to produce the profiling log. |
+</p> |
+<h4>Usage:</h4> |
+<p> |
+Click on the button and browse to the profiling log file (usually, v8.log). |
+Process will start automatically and the output will be visible in the below |
+text area. |
+</p> |
+<h4>Limitations and disclaimer:</h4> |
+<p> |
+This page offers a subset of the functionalities of the command-line tick |
+processor utility in the V8 repository. In particular, this page cannot |
+access the command-line utility that provides library symbol information, |
+hence the [C++] section of the output stays empty. Also consider that this |
+web-based tool is provided only for convenience and quick reference, you |
+should refer to the |
+<a href="https://code.google.com/p/v8/wiki/V8Profiler"> |
+ command-line</a> |
+version for full output. |
+</p> |
+<p> |
+<input type="file" id="fileinput" /> |
+</p> |
+<p> |
+<textarea name="myTextArea" cols="120" rows="40" wrap="off" id="textout" |
+ readonly="yes"></textarea> |
+</p> |
+<p style="font-style:italic;"> |
+Copyright the V8 Authors - Last change to this page: 12/12/2012 |
+</p> |
+ |
+ |
+</body> |
+</html> |