Merge V8 5.3.332.45.  DO NOT MERGE

Test: Manual

FPIIM-449

Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/tools/turbolizer/disassembly-view.js b/tools/turbolizer/disassembly-view.js
new file mode 100644
index 0000000..94150ec
--- /dev/null
+++ b/tools/turbolizer/disassembly-view.js
@@ -0,0 +1,106 @@
+// Copyright 2015 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+"use strict";
+
+class DisassemblyView extends TextView {
+  constructor(id, broker, sortedPositionList) {
+    super(id, broker, null, false);
+    this.pos_start = -1;
+    let view = this;
+    let ADDRESS_STYLE = {
+      css: 'tag',
+      location: function(text) {
+        ADDRESS_STYLE.last_address = text;
+        return undefined;
+      }
+    };
+    let ADDRESS_LINK_STYLE = {
+      css: 'tag',
+      link: function(text) {
+        view.select(function(location) { return location.address == text; }, true, true);
+      }
+    };
+    let UNCLASSIFIED_STYLE = {
+      css: 'com'
+    };
+    let NUMBER_STYLE = {
+      css: 'lit'
+    };
+    let COMMENT_STYLE = {
+      css: 'com'
+    };
+    let POSITION_STYLE = {
+      css: 'com',
+      location: function(text) {
+        view.pos_start = Number(text);
+      }
+    };
+    let OPCODE_STYLE = {
+      css: 'kwd',
+      location: function(text) {
+        return {
+          address: ADDRESS_STYLE.last_address
+        };
+      }
+    };
+    let patterns = [
+      [
+        [/^0x[0-9a-f]{8,16}/, ADDRESS_STYLE, 1],
+        [/^.*/, UNCLASSIFIED_STYLE, -1]
+      ],
+      [
+        [/^\s+\d+\s+[0-9a-f]+\s+/, NUMBER_STYLE, 2],
+        [/^.*/, null, -1]
+      ],
+      [
+        [/^\S+\s+/, OPCODE_STYLE, 3],
+        [/^\S+$/, OPCODE_STYLE, -1],
+        [/^.*/, null, -1]
+      ],
+      [
+        [/^\s+/, null],
+        [/^[^\(;]+$/, null, -1],
+        [/^[^\(;]+/, null],
+        [/^\(/, null, 4],
+        [/^;/, COMMENT_STYLE, 5]
+      ],
+      [
+        [/^0x[0-9a-f]{8,16}/, ADDRESS_LINK_STYLE],
+        [/^[^\)]/, null],
+        [/^\)$/, null, -1],
+        [/^\)/, null, 3]
+      ],
+      [
+        [/^; debug\: position /, COMMENT_STYLE, 6],
+        [/^.+$/, COMMENT_STYLE, -1]
+      ],
+      [
+        [/^\d+$/, POSITION_STYLE, -1],
+      ]
+    ];
+    view.setPatterns(patterns);
+  }
+
+  lineLocation(li) {
+    let view = this;
+    let result = undefined;
+    for (let i = 0; i < li.children.length; ++i) {
+      let fragment = li.children[i];
+      let location = fragment.location;
+      if (location != null) {
+        if (location.address != undefined) {
+          if (result === undefined) result = {};
+          result.address = location.address;
+        }
+        if (view.pos_start != -1) {
+          if (result === undefined) result = {};
+          result.pos_start = view.pos_start;
+          result.pos_end = result.pos_start + 1;
+        }
+      }
+    }
+    return result;
+  }
+}