Home | History | Annotate | Download | only in tools
      1 <!DOCTYPE html>
      2 <!-- Copyright 2012 the V8 project authors. All rights reserved.
      3 
      4 Redistribution and use in source and binary forms, with or without
      5 modification, are permitted provided that the following conditions are
      6 met:
      7     * Redistributions of source code must retain the above copyright
      8       notice, this list of conditions and the following disclaimer.
      9     * Redistributions in binary form must reproduce the above
     10       copyright notice, this list of conditions and the following
     11       disclaimer in the documentation and/or other materials provided
     12       with the distribution.
     13     * Neither the name of Google Inc. nor the names of its
     14       contributors may be used to endorse or promote products derived
     15       from this software without specific prior written permission.
     16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     17 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     20 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     21 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
     27 
     28 <html lang="en">
     29 <head>
     30   <meta charset="utf-8"/>
     31   <title>V8 Tick Processor</title>
     32 
     33   <style type="text/css">
     34     body {
     35       font-family: Verdana, Arial, Helvetica, sans-serif;
     36       font-size: 10pt;
     37     }
     38     h4 {
     39       margin-bottom: 0px;
     40     }
     41     p {
     42       margin-top: 0px;
     43     }
     44   </style>
     45 
     46   <script src="splaytree.js"></script>
     47   <script src="codemap.js"></script>
     48   <script src="csvparser.js"></script>
     49   <script src="consarray.js"></script>
     50   <script src="profile.js"></script>
     51   <script src="profile_view.js"></script>
     52   <script src="logreader.js"></script>
     53   <script src="arguments.js"></script>
     54   <script src="tickprocessor.js"></script>
     55 
     56   <script type="text/javascript">
     57 
     58 var v8log_content;
     59 var textout;
     60 
     61 function load_logfile(evt) {
     62   textout.value = "";
     63   var f = evt.target.files[0];
     64   if (f) {
     65     var reader = new FileReader();
     66     reader.onload = function(event) {
     67       v8log_content = event.target.result;
     68       start_process();
     69     };
     70     reader.onerror = function(event) {
     71       console.error("File could not be read! Code " + event.target.error.code);
     72     };
     73     reader.readAsText(f);
     74   } else {
     75     alert("Failed to load file");
     76   }
     77 }
     78 
     79 function print(arg) {
     80   textout.value+=arg+"\n";
     81 }
     82 
     83 function start_process() {
     84   let DEFAULTS = {
     85     logFileName: 'v8.log',
     86     platform: 'unix',
     87     stateFilter: null,
     88     callGraphSize: 5,
     89     ignoreUnknown: false,
     90     separateIc: true,
     91     targetRootFS: '',
     92     nm: 'nm'
     93   };
     94 
     95   var entriesProviders = {
     96     'unix': UnixCppEntriesProvider,
     97     'windows': WindowsCppEntriesProvider,
     98     'mac': MacCppEntriesProvider
     99   };
    100 
    101   var tickProcessor = new TickProcessor(
    102     new (entriesProviders[DEFAULTS.platform])(
    103         DEFAULTS.nm, DEFAULTS.targetRootFS),
    104     DEFAULTS.separateIc, DEFAULTS.callGraphSize,
    105     DEFAULTS.ignoreUnknown, DEFAULTS.stateFilter);
    106 
    107   tickProcessor.processLogChunk(v8log_content);
    108   tickProcessor.printStatistics();
    109 }
    110 
    111 function Load() {
    112   document.getElementById('fileinput').addEventListener(
    113       'change', load_logfile, false);
    114   textout = document.getElementById('textout');
    115 }
    116 </script>
    117 </head>
    118 <body onLoad="Load()">
    119 
    120 <h3 style="margin-top: 2px;">
    121   Chrome V8 profiling log processor
    122 </h3>
    123 <p>
    124 Process V8's profiling information log (sampling profiler tick information)
    125 in your browser. Particularly useful if you don't have the V8 shell (d8)
    126 at hand on your system. You still have to run Chrome with the appropriate
    127 <a href="https://code.google.com/p/v8/wiki/ProfilingChromiumWithV8">
    128   command line flags</a>
    129 to produce the profiling log.
    130 </p>
    131 <h4>Usage:</h4>
    132 <p>
    133 Click on the button and browse to the profiling log file (usually, v8.log).
    134 Process will start automatically and the output will be visible in the below
    135 text area.
    136 </p>
    137 <h4>Limitations and disclaimer:</h4>
    138 <p>
    139 This page offers a subset of the functionalities of the command-line tick
    140 processor utility in the V8 repository. In particular, this page cannot
    141 access the command-line utility that provides library symbol information,
    142 hence the [C++] section of the output stays empty. Also consider that this
    143 web-based tool is provided only for convenience and quick reference, you
    144 should refer to the
    145 <a href="https://code.google.com/p/v8/wiki/V8Profiler">
    146   command-line</a>
    147 version for full output.
    148 </p>
    149 <p>
    150 <input type="file" id="fileinput" />
    151 </p>
    152 <p>
    153 <textarea name="myTextArea" cols="120" rows="40" wrap="off" id="textout"
    154           readonly="yes"></textarea>
    155 </p>
    156 <p style="font-style:italic;">
    157 Copyright the V8 Authors - Last change to this page: 12/12/2012
    158 </p>
    159 
    160 
    161 </body>
    162 </html>
    163