|  | <!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> | 
|  | 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="arguments.js"></script> | 
|  | <script src="tickprocessor.js"></script> | 
|  |  | 
|  | <script> | 
|  |  | 
|  | 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() { | 
|  | let DEFAULTS = { | 
|  | logFileName: 'v8.log', | 
|  | platform: 'unix', | 
|  | stateFilter: null, | 
|  | callGraphSize: 5, | 
|  | ignoreUnknown: false, | 
|  | separateIc: true, | 
|  | targetRootFS: '', | 
|  | apkEmbeddedLibrary: '', | 
|  | nm: 'nm' | 
|  | }; | 
|  |  | 
|  | var entriesProviders = { | 
|  | 'unix': UnixCppEntriesProvider, | 
|  | 'windows': WindowsCppEntriesProvider, | 
|  | 'mac': MacCppEntriesProvider | 
|  | }; | 
|  |  | 
|  | var tickProcessor = new TickProcessor( | 
|  | new (entriesProviders[DEFAULTS.platform])( | 
|  | DEFAULTS.nm, DEFAULTS.targetRootFS, DEFAULTS.apkEmbeddedLibrary), | 
|  | DEFAULTS.separateIc, DEFAULTS.callGraphSize, | 
|  | DEFAULTS.ignoreUnknown, DEFAULTS.stateFilter); | 
|  |  | 
|  | 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> |