Upgrade to 3.29

Update V8 to 3.29.88.17 and update makefiles to support building on
all the relevant platforms.

Bug: 17370214

Change-Id: Ia3407c157fd8d72a93e23d8318ccaf6ecf77fa4e
diff --git a/tools/tick-processor.html b/tools/tick-processor.html
new file mode 100644
index 0000000..bc9f636
--- /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>