libv8 3.11.8.17 → 3.16.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -2
  3. data/Gemfile +1 -1
  4. data/Rakefile +6 -7
  5. data/lib/libv8/version.rb +1 -1
  6. data/vendor/v8/.gitignore +24 -3
  7. data/vendor/v8/AUTHORS +7 -0
  8. data/vendor/v8/ChangeLog +839 -0
  9. data/vendor/v8/DEPS +1 -1
  10. data/vendor/v8/Makefile.android +92 -0
  11. data/vendor/v8/OWNERS +11 -0
  12. data/vendor/v8/PRESUBMIT.py +71 -0
  13. data/vendor/v8/SConstruct +34 -39
  14. data/vendor/v8/build/android.gypi +56 -37
  15. data/vendor/v8/build/common.gypi +112 -30
  16. data/vendor/v8/build/gyp_v8 +1 -1
  17. data/vendor/v8/build/standalone.gypi +15 -11
  18. data/vendor/v8/include/v8-debug.h +9 -1
  19. data/vendor/v8/include/v8-preparser.h +4 -3
  20. data/vendor/v8/include/v8-profiler.h +25 -25
  21. data/vendor/v8/include/v8-testing.h +4 -3
  22. data/vendor/v8/include/v8.h +994 -540
  23. data/vendor/v8/preparser/preparser-process.cc +3 -3
  24. data/vendor/v8/samples/lineprocessor.cc +20 -27
  25. data/vendor/v8/samples/process.cc +18 -14
  26. data/vendor/v8/samples/shell.cc +16 -15
  27. data/vendor/v8/src/SConscript +15 -14
  28. data/vendor/v8/src/accessors.cc +169 -77
  29. data/vendor/v8/src/accessors.h +4 -0
  30. data/vendor/v8/src/allocation-inl.h +2 -2
  31. data/vendor/v8/src/allocation.h +7 -7
  32. data/vendor/v8/src/api.cc +810 -497
  33. data/vendor/v8/src/api.h +85 -60
  34. data/vendor/v8/src/arm/assembler-arm-inl.h +179 -22
  35. data/vendor/v8/src/arm/assembler-arm.cc +633 -264
  36. data/vendor/v8/src/arm/assembler-arm.h +264 -197
  37. data/vendor/v8/src/arm/builtins-arm.cc +117 -27
  38. data/vendor/v8/src/arm/code-stubs-arm.cc +1241 -700
  39. data/vendor/v8/src/arm/code-stubs-arm.h +35 -138
  40. data/vendor/v8/src/arm/codegen-arm.cc +285 -16
  41. data/vendor/v8/src/arm/codegen-arm.h +22 -0
  42. data/vendor/v8/src/arm/constants-arm.cc +5 -3
  43. data/vendor/v8/src/arm/constants-arm.h +24 -11
  44. data/vendor/v8/src/arm/debug-arm.cc +3 -3
  45. data/vendor/v8/src/arm/deoptimizer-arm.cc +382 -92
  46. data/vendor/v8/src/arm/disasm-arm.cc +61 -12
  47. data/vendor/v8/src/arm/frames-arm.h +0 -14
  48. data/vendor/v8/src/arm/full-codegen-arm.cc +332 -304
  49. data/vendor/v8/src/arm/ic-arm.cc +180 -259
  50. data/vendor/v8/src/arm/lithium-arm.cc +364 -316
  51. data/vendor/v8/src/arm/lithium-arm.h +512 -275
  52. data/vendor/v8/src/arm/lithium-codegen-arm.cc +1768 -809
  53. data/vendor/v8/src/arm/lithium-codegen-arm.h +97 -35
  54. data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +12 -5
  55. data/vendor/v8/src/arm/macro-assembler-arm.cc +439 -228
  56. data/vendor/v8/src/arm/macro-assembler-arm.h +116 -70
  57. data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +54 -44
  58. data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +3 -10
  59. data/vendor/v8/src/arm/simulator-arm.cc +272 -238
  60. data/vendor/v8/src/arm/simulator-arm.h +38 -8
  61. data/vendor/v8/src/arm/stub-cache-arm.cc +522 -895
  62. data/vendor/v8/src/array.js +101 -70
  63. data/vendor/v8/src/assembler.cc +270 -19
  64. data/vendor/v8/src/assembler.h +110 -15
  65. data/vendor/v8/src/ast.cc +79 -69
  66. data/vendor/v8/src/ast.h +255 -301
  67. data/vendor/v8/src/atomicops.h +7 -1
  68. data/vendor/v8/src/atomicops_internals_tsan.h +335 -0
  69. data/vendor/v8/src/bootstrapper.cc +481 -418
  70. data/vendor/v8/src/bootstrapper.h +4 -4
  71. data/vendor/v8/src/builtins.cc +498 -311
  72. data/vendor/v8/src/builtins.h +75 -47
  73. data/vendor/v8/src/checks.cc +2 -1
  74. data/vendor/v8/src/checks.h +8 -0
  75. data/vendor/v8/src/code-stubs-hydrogen.cc +253 -0
  76. data/vendor/v8/src/code-stubs.cc +249 -84
  77. data/vendor/v8/src/code-stubs.h +501 -169
  78. data/vendor/v8/src/codegen.cc +36 -18
  79. data/vendor/v8/src/codegen.h +25 -3
  80. data/vendor/v8/src/collection.js +54 -17
  81. data/vendor/v8/src/compilation-cache.cc +24 -16
  82. data/vendor/v8/src/compilation-cache.h +15 -6
  83. data/vendor/v8/src/compiler.cc +497 -195
  84. data/vendor/v8/src/compiler.h +246 -38
  85. data/vendor/v8/src/contexts.cc +64 -24
  86. data/vendor/v8/src/contexts.h +60 -29
  87. data/vendor/v8/src/conversions-inl.h +24 -14
  88. data/vendor/v8/src/conversions.h +7 -4
  89. data/vendor/v8/src/counters.cc +21 -12
  90. data/vendor/v8/src/counters.h +44 -16
  91. data/vendor/v8/src/cpu-profiler.h +1 -1
  92. data/vendor/v8/src/d8-debug.cc +2 -2
  93. data/vendor/v8/src/d8-readline.cc +13 -2
  94. data/vendor/v8/src/d8.cc +681 -273
  95. data/vendor/v8/src/d8.gyp +4 -4
  96. data/vendor/v8/src/d8.h +38 -18
  97. data/vendor/v8/src/d8.js +0 -617
  98. data/vendor/v8/src/data-flow.h +55 -0
  99. data/vendor/v8/src/date.js +1 -42
  100. data/vendor/v8/src/dateparser-inl.h +5 -1
  101. data/vendor/v8/src/debug-agent.cc +10 -15
  102. data/vendor/v8/src/debug-debugger.js +147 -149
  103. data/vendor/v8/src/debug.cc +323 -164
  104. data/vendor/v8/src/debug.h +26 -14
  105. data/vendor/v8/src/deoptimizer.cc +765 -290
  106. data/vendor/v8/src/deoptimizer.h +130 -28
  107. data/vendor/v8/src/disassembler.cc +10 -4
  108. data/vendor/v8/src/elements-kind.cc +7 -2
  109. data/vendor/v8/src/elements-kind.h +19 -0
  110. data/vendor/v8/src/elements.cc +607 -285
  111. data/vendor/v8/src/elements.h +36 -13
  112. data/vendor/v8/src/execution.cc +52 -31
  113. data/vendor/v8/src/execution.h +4 -4
  114. data/vendor/v8/src/extensions/externalize-string-extension.cc +5 -4
  115. data/vendor/v8/src/extensions/gc-extension.cc +5 -1
  116. data/vendor/v8/src/extensions/statistics-extension.cc +153 -0
  117. data/vendor/v8/src/{inspector.h → extensions/statistics-extension.h} +12 -23
  118. data/vendor/v8/src/factory.cc +101 -134
  119. data/vendor/v8/src/factory.h +36 -31
  120. data/vendor/v8/src/flag-definitions.h +102 -25
  121. data/vendor/v8/src/flags.cc +9 -5
  122. data/vendor/v8/src/frames-inl.h +10 -0
  123. data/vendor/v8/src/frames.cc +116 -26
  124. data/vendor/v8/src/frames.h +96 -12
  125. data/vendor/v8/src/full-codegen.cc +219 -74
  126. data/vendor/v8/src/full-codegen.h +63 -21
  127. data/vendor/v8/src/func-name-inferrer.cc +8 -7
  128. data/vendor/v8/src/func-name-inferrer.h +5 -3
  129. data/vendor/v8/src/gdb-jit.cc +71 -57
  130. data/vendor/v8/src/global-handles.cc +230 -101
  131. data/vendor/v8/src/global-handles.h +26 -27
  132. data/vendor/v8/src/globals.h +17 -19
  133. data/vendor/v8/src/handles-inl.h +59 -12
  134. data/vendor/v8/src/handles.cc +180 -200
  135. data/vendor/v8/src/handles.h +80 -11
  136. data/vendor/v8/src/hashmap.h +60 -40
  137. data/vendor/v8/src/heap-inl.h +107 -45
  138. data/vendor/v8/src/heap-profiler.cc +38 -19
  139. data/vendor/v8/src/heap-profiler.h +24 -14
  140. data/vendor/v8/src/heap.cc +1123 -738
  141. data/vendor/v8/src/heap.h +385 -146
  142. data/vendor/v8/src/hydrogen-instructions.cc +700 -217
  143. data/vendor/v8/src/hydrogen-instructions.h +1158 -472
  144. data/vendor/v8/src/hydrogen.cc +3319 -1662
  145. data/vendor/v8/src/hydrogen.h +411 -170
  146. data/vendor/v8/src/ia32/assembler-ia32-inl.h +46 -16
  147. data/vendor/v8/src/ia32/assembler-ia32.cc +131 -61
  148. data/vendor/v8/src/ia32/assembler-ia32.h +115 -57
  149. data/vendor/v8/src/ia32/builtins-ia32.cc +99 -5
  150. data/vendor/v8/src/ia32/code-stubs-ia32.cc +787 -495
  151. data/vendor/v8/src/ia32/code-stubs-ia32.h +10 -100
  152. data/vendor/v8/src/ia32/codegen-ia32.cc +227 -23
  153. data/vendor/v8/src/ia32/codegen-ia32.h +14 -0
  154. data/vendor/v8/src/ia32/deoptimizer-ia32.cc +428 -87
  155. data/vendor/v8/src/ia32/disasm-ia32.cc +28 -1
  156. data/vendor/v8/src/ia32/frames-ia32.h +6 -16
  157. data/vendor/v8/src/ia32/full-codegen-ia32.cc +280 -272
  158. data/vendor/v8/src/ia32/ic-ia32.cc +150 -250
  159. data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +1600 -517
  160. data/vendor/v8/src/ia32/lithium-codegen-ia32.h +90 -24
  161. data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +10 -6
  162. data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.h +2 -2
  163. data/vendor/v8/src/ia32/lithium-ia32.cc +405 -302
  164. data/vendor/v8/src/ia32/lithium-ia32.h +526 -271
  165. data/vendor/v8/src/ia32/macro-assembler-ia32.cc +378 -119
  166. data/vendor/v8/src/ia32/macro-assembler-ia32.h +62 -28
  167. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +43 -30
  168. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +2 -10
  169. data/vendor/v8/src/ia32/stub-cache-ia32.cc +492 -678
  170. data/vendor/v8/src/ic-inl.h +9 -4
  171. data/vendor/v8/src/ic.cc +836 -923
  172. data/vendor/v8/src/ic.h +228 -247
  173. data/vendor/v8/src/incremental-marking-inl.h +26 -30
  174. data/vendor/v8/src/incremental-marking.cc +276 -248
  175. data/vendor/v8/src/incremental-marking.h +29 -37
  176. data/vendor/v8/src/interface.cc +34 -25
  177. data/vendor/v8/src/interface.h +69 -25
  178. data/vendor/v8/src/interpreter-irregexp.cc +2 -2
  179. data/vendor/v8/src/isolate.cc +382 -76
  180. data/vendor/v8/src/isolate.h +109 -56
  181. data/vendor/v8/src/json-parser.h +217 -104
  182. data/vendor/v8/src/json-stringifier.h +745 -0
  183. data/vendor/v8/src/json.js +10 -132
  184. data/vendor/v8/src/jsregexp-inl.h +106 -0
  185. data/vendor/v8/src/jsregexp.cc +517 -285
  186. data/vendor/v8/src/jsregexp.h +145 -117
  187. data/vendor/v8/src/list-inl.h +35 -22
  188. data/vendor/v8/src/list.h +46 -19
  189. data/vendor/v8/src/lithium-allocator-inl.h +22 -2
  190. data/vendor/v8/src/lithium-allocator.cc +85 -70
  191. data/vendor/v8/src/lithium-allocator.h +21 -39
  192. data/vendor/v8/src/lithium.cc +259 -5
  193. data/vendor/v8/src/lithium.h +131 -32
  194. data/vendor/v8/src/liveedit-debugger.js +52 -3
  195. data/vendor/v8/src/liveedit.cc +393 -113
  196. data/vendor/v8/src/liveedit.h +7 -3
  197. data/vendor/v8/src/log-utils.cc +4 -2
  198. data/vendor/v8/src/log.cc +170 -140
  199. data/vendor/v8/src/log.h +62 -11
  200. data/vendor/v8/src/macro-assembler.h +17 -0
  201. data/vendor/v8/src/macros.py +2 -0
  202. data/vendor/v8/src/mark-compact-inl.h +3 -23
  203. data/vendor/v8/src/mark-compact.cc +801 -830
  204. data/vendor/v8/src/mark-compact.h +154 -47
  205. data/vendor/v8/src/marking-thread.cc +85 -0
  206. data/vendor/v8/src/{inspector.cc → marking-thread.h} +32 -24
  207. data/vendor/v8/src/math.js +12 -18
  208. data/vendor/v8/src/messages.cc +18 -8
  209. data/vendor/v8/src/messages.js +314 -261
  210. data/vendor/v8/src/mips/assembler-mips-inl.h +58 -6
  211. data/vendor/v8/src/mips/assembler-mips.cc +92 -75
  212. data/vendor/v8/src/mips/assembler-mips.h +54 -60
  213. data/vendor/v8/src/mips/builtins-mips.cc +116 -17
  214. data/vendor/v8/src/mips/code-stubs-mips.cc +919 -556
  215. data/vendor/v8/src/mips/code-stubs-mips.h +22 -131
  216. data/vendor/v8/src/mips/codegen-mips.cc +281 -6
  217. data/vendor/v8/src/mips/codegen-mips.h +22 -0
  218. data/vendor/v8/src/mips/constants-mips.cc +2 -0
  219. data/vendor/v8/src/mips/constants-mips.h +12 -2
  220. data/vendor/v8/src/mips/deoptimizer-mips.cc +286 -50
  221. data/vendor/v8/src/mips/disasm-mips.cc +13 -0
  222. data/vendor/v8/src/mips/full-codegen-mips.cc +297 -284
  223. data/vendor/v8/src/mips/ic-mips.cc +182 -263
  224. data/vendor/v8/src/mips/lithium-codegen-mips.cc +1208 -556
  225. data/vendor/v8/src/mips/lithium-codegen-mips.h +72 -19
  226. data/vendor/v8/src/mips/lithium-gap-resolver-mips.cc +9 -2
  227. data/vendor/v8/src/mips/lithium-mips.cc +290 -302
  228. data/vendor/v8/src/mips/lithium-mips.h +463 -266
  229. data/vendor/v8/src/mips/macro-assembler-mips.cc +208 -115
  230. data/vendor/v8/src/mips/macro-assembler-mips.h +67 -24
  231. data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +40 -25
  232. data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +3 -9
  233. data/vendor/v8/src/mips/simulator-mips.cc +112 -40
  234. data/vendor/v8/src/mips/simulator-mips.h +5 -0
  235. data/vendor/v8/src/mips/stub-cache-mips.cc +502 -884
  236. data/vendor/v8/src/mirror-debugger.js +157 -30
  237. data/vendor/v8/src/mksnapshot.cc +88 -14
  238. data/vendor/v8/src/object-observe.js +235 -0
  239. data/vendor/v8/src/objects-debug.cc +178 -176
  240. data/vendor/v8/src/objects-inl.h +1333 -486
  241. data/vendor/v8/src/objects-printer.cc +125 -43
  242. data/vendor/v8/src/objects-visiting-inl.h +578 -6
  243. data/vendor/v8/src/objects-visiting.cc +2 -2
  244. data/vendor/v8/src/objects-visiting.h +172 -79
  245. data/vendor/v8/src/objects.cc +3533 -2885
  246. data/vendor/v8/src/objects.h +1352 -1131
  247. data/vendor/v8/src/optimizing-compiler-thread.cc +152 -0
  248. data/vendor/v8/src/optimizing-compiler-thread.h +111 -0
  249. data/vendor/v8/src/parser.cc +390 -500
  250. data/vendor/v8/src/parser.h +45 -33
  251. data/vendor/v8/src/platform-cygwin.cc +10 -21
  252. data/vendor/v8/src/platform-freebsd.cc +36 -41
  253. data/vendor/v8/src/platform-linux.cc +160 -124
  254. data/vendor/v8/src/platform-macos.cc +30 -27
  255. data/vendor/v8/src/platform-nullos.cc +17 -1
  256. data/vendor/v8/src/platform-openbsd.cc +19 -50
  257. data/vendor/v8/src/platform-posix.cc +14 -0
  258. data/vendor/v8/src/platform-solaris.cc +20 -53
  259. data/vendor/v8/src/platform-win32.cc +49 -26
  260. data/vendor/v8/src/platform.h +40 -1
  261. data/vendor/v8/src/preparser.cc +8 -5
  262. data/vendor/v8/src/preparser.h +2 -2
  263. data/vendor/v8/src/prettyprinter.cc +16 -0
  264. data/vendor/v8/src/prettyprinter.h +2 -0
  265. data/vendor/v8/src/profile-generator-inl.h +1 -0
  266. data/vendor/v8/src/profile-generator.cc +209 -147
  267. data/vendor/v8/src/profile-generator.h +15 -12
  268. data/vendor/v8/src/property-details.h +46 -31
  269. data/vendor/v8/src/property.cc +27 -46
  270. data/vendor/v8/src/property.h +163 -83
  271. data/vendor/v8/src/proxy.js +7 -2
  272. data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +4 -13
  273. data/vendor/v8/src/regexp-macro-assembler-irregexp.h +1 -2
  274. data/vendor/v8/src/regexp-macro-assembler-tracer.cc +1 -11
  275. data/vendor/v8/src/regexp-macro-assembler-tracer.h +0 -1
  276. data/vendor/v8/src/regexp-macro-assembler.cc +31 -14
  277. data/vendor/v8/src/regexp-macro-assembler.h +14 -11
  278. data/vendor/v8/src/regexp-stack.cc +1 -0
  279. data/vendor/v8/src/regexp.js +9 -8
  280. data/vendor/v8/src/rewriter.cc +18 -7
  281. data/vendor/v8/src/runtime-profiler.cc +52 -43
  282. data/vendor/v8/src/runtime-profiler.h +0 -25
  283. data/vendor/v8/src/runtime.cc +2006 -2023
  284. data/vendor/v8/src/runtime.h +56 -49
  285. data/vendor/v8/src/safepoint-table.cc +12 -18
  286. data/vendor/v8/src/safepoint-table.h +11 -8
  287. data/vendor/v8/src/scanner.cc +1 -0
  288. data/vendor/v8/src/scanner.h +4 -10
  289. data/vendor/v8/src/scopeinfo.cc +35 -9
  290. data/vendor/v8/src/scopeinfo.h +64 -3
  291. data/vendor/v8/src/scopes.cc +251 -156
  292. data/vendor/v8/src/scopes.h +61 -27
  293. data/vendor/v8/src/serialize.cc +348 -396
  294. data/vendor/v8/src/serialize.h +125 -114
  295. data/vendor/v8/src/small-pointer-list.h +11 -11
  296. data/vendor/v8/src/{smart-array-pointer.h → smart-pointers.h} +64 -15
  297. data/vendor/v8/src/snapshot-common.cc +64 -15
  298. data/vendor/v8/src/snapshot-empty.cc +7 -1
  299. data/vendor/v8/src/snapshot.h +9 -2
  300. data/vendor/v8/src/spaces-inl.h +17 -0
  301. data/vendor/v8/src/spaces.cc +477 -183
  302. data/vendor/v8/src/spaces.h +238 -58
  303. data/vendor/v8/src/splay-tree-inl.h +8 -7
  304. data/vendor/v8/src/splay-tree.h +24 -10
  305. data/vendor/v8/src/store-buffer.cc +12 -5
  306. data/vendor/v8/src/store-buffer.h +2 -4
  307. data/vendor/v8/src/string-search.h +22 -6
  308. data/vendor/v8/src/string-stream.cc +11 -8
  309. data/vendor/v8/src/string.js +47 -15
  310. data/vendor/v8/src/stub-cache.cc +461 -224
  311. data/vendor/v8/src/stub-cache.h +164 -102
  312. data/vendor/v8/src/sweeper-thread.cc +105 -0
  313. data/vendor/v8/src/sweeper-thread.h +81 -0
  314. data/vendor/v8/src/token.h +1 -0
  315. data/vendor/v8/src/transitions-inl.h +220 -0
  316. data/vendor/v8/src/transitions.cc +160 -0
  317. data/vendor/v8/src/transitions.h +207 -0
  318. data/vendor/v8/src/type-info.cc +182 -181
  319. data/vendor/v8/src/type-info.h +31 -19
  320. data/vendor/v8/src/unicode-inl.h +62 -106
  321. data/vendor/v8/src/unicode.cc +57 -67
  322. data/vendor/v8/src/unicode.h +45 -91
  323. data/vendor/v8/src/uri.js +57 -29
  324. data/vendor/v8/src/utils.h +105 -5
  325. data/vendor/v8/src/v8-counters.cc +54 -11
  326. data/vendor/v8/src/v8-counters.h +134 -19
  327. data/vendor/v8/src/v8.cc +29 -29
  328. data/vendor/v8/src/v8.h +1 -0
  329. data/vendor/v8/src/v8conversions.cc +26 -22
  330. data/vendor/v8/src/v8globals.h +56 -43
  331. data/vendor/v8/src/v8natives.js +83 -30
  332. data/vendor/v8/src/v8threads.cc +42 -21
  333. data/vendor/v8/src/v8threads.h +4 -1
  334. data/vendor/v8/src/v8utils.cc +9 -93
  335. data/vendor/v8/src/v8utils.h +37 -33
  336. data/vendor/v8/src/variables.cc +6 -3
  337. data/vendor/v8/src/variables.h +6 -13
  338. data/vendor/v8/src/version.cc +2 -2
  339. data/vendor/v8/src/vm-state-inl.h +11 -0
  340. data/vendor/v8/src/x64/assembler-x64-inl.h +39 -8
  341. data/vendor/v8/src/x64/assembler-x64.cc +78 -64
  342. data/vendor/v8/src/x64/assembler-x64.h +38 -33
  343. data/vendor/v8/src/x64/builtins-x64.cc +105 -7
  344. data/vendor/v8/src/x64/code-stubs-x64.cc +790 -413
  345. data/vendor/v8/src/x64/code-stubs-x64.h +10 -106
  346. data/vendor/v8/src/x64/codegen-x64.cc +210 -8
  347. data/vendor/v8/src/x64/codegen-x64.h +20 -1
  348. data/vendor/v8/src/x64/deoptimizer-x64.cc +336 -75
  349. data/vendor/v8/src/x64/disasm-x64.cc +15 -0
  350. data/vendor/v8/src/x64/frames-x64.h +0 -14
  351. data/vendor/v8/src/x64/full-codegen-x64.cc +293 -270
  352. data/vendor/v8/src/x64/ic-x64.cc +153 -251
  353. data/vendor/v8/src/x64/lithium-codegen-x64.cc +1379 -531
  354. data/vendor/v8/src/x64/lithium-codegen-x64.h +67 -23
  355. data/vendor/v8/src/x64/lithium-gap-resolver-x64.cc +2 -2
  356. data/vendor/v8/src/x64/lithium-x64.cc +349 -289
  357. data/vendor/v8/src/x64/lithium-x64.h +460 -250
  358. data/vendor/v8/src/x64/macro-assembler-x64.cc +350 -177
  359. data/vendor/v8/src/x64/macro-assembler-x64.h +67 -49
  360. data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +46 -33
  361. data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +2 -3
  362. data/vendor/v8/src/x64/stub-cache-x64.cc +484 -653
  363. data/vendor/v8/src/zone-inl.h +9 -27
  364. data/vendor/v8/src/zone.cc +5 -5
  365. data/vendor/v8/src/zone.h +53 -27
  366. data/vendor/v8/test/benchmarks/testcfg.py +5 -0
  367. data/vendor/v8/test/cctest/cctest.cc +4 -0
  368. data/vendor/v8/test/cctest/cctest.gyp +3 -1
  369. data/vendor/v8/test/cctest/cctest.h +57 -9
  370. data/vendor/v8/test/cctest/cctest.status +15 -15
  371. data/vendor/v8/test/cctest/test-accessors.cc +26 -0
  372. data/vendor/v8/test/cctest/test-alloc.cc +22 -30
  373. data/vendor/v8/test/cctest/test-api.cc +1943 -314
  374. data/vendor/v8/test/cctest/test-assembler-arm.cc +133 -13
  375. data/vendor/v8/test/cctest/test-assembler-ia32.cc +1 -1
  376. data/vendor/v8/test/cctest/test-assembler-mips.cc +12 -0
  377. data/vendor/v8/test/cctest/test-ast.cc +4 -2
  378. data/vendor/v8/test/cctest/test-compiler.cc +61 -29
  379. data/vendor/v8/test/cctest/test-dataflow.cc +2 -2
  380. data/vendor/v8/test/cctest/test-debug.cc +212 -33
  381. data/vendor/v8/test/cctest/test-decls.cc +257 -11
  382. data/vendor/v8/test/cctest/test-dictionary.cc +24 -10
  383. data/vendor/v8/test/cctest/test-disasm-arm.cc +118 -1
  384. data/vendor/v8/test/cctest/test-disasm-ia32.cc +3 -2
  385. data/vendor/v8/test/cctest/test-flags.cc +14 -1
  386. data/vendor/v8/test/cctest/test-func-name-inference.cc +7 -4
  387. data/vendor/v8/test/cctest/test-global-object.cc +51 -0
  388. data/vendor/v8/test/cctest/test-hashing.cc +32 -23
  389. data/vendor/v8/test/cctest/test-heap-profiler.cc +131 -77
  390. data/vendor/v8/test/cctest/test-heap.cc +1084 -143
  391. data/vendor/v8/test/cctest/test-list.cc +1 -1
  392. data/vendor/v8/test/cctest/test-liveedit.cc +3 -2
  393. data/vendor/v8/test/cctest/test-lockers.cc +12 -13
  394. data/vendor/v8/test/cctest/test-log.cc +10 -8
  395. data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +2 -2
  396. data/vendor/v8/test/cctest/test-mark-compact.cc +44 -22
  397. data/vendor/v8/test/cctest/test-object-observe.cc +434 -0
  398. data/vendor/v8/test/cctest/test-parsing.cc +86 -39
  399. data/vendor/v8/test/cctest/test-platform-linux.cc +6 -0
  400. data/vendor/v8/test/cctest/test-platform-win32.cc +7 -0
  401. data/vendor/v8/test/cctest/test-random.cc +5 -4
  402. data/vendor/v8/test/cctest/test-regexp.cc +137 -101
  403. data/vendor/v8/test/cctest/test-serialize.cc +150 -230
  404. data/vendor/v8/test/cctest/test-sockets.cc +1 -1
  405. data/vendor/v8/test/cctest/test-spaces.cc +139 -0
  406. data/vendor/v8/test/cctest/test-strings.cc +736 -74
  407. data/vendor/v8/test/cctest/test-thread-termination.cc +10 -11
  408. data/vendor/v8/test/cctest/test-threads.cc +4 -4
  409. data/vendor/v8/test/cctest/test-utils.cc +16 -0
  410. data/vendor/v8/test/cctest/test-weakmaps.cc +7 -3
  411. data/vendor/v8/test/cctest/testcfg.py +64 -5
  412. data/vendor/v8/test/es5conform/testcfg.py +5 -0
  413. data/vendor/v8/test/message/message.status +1 -1
  414. data/vendor/v8/test/message/overwritten-builtins.out +3 -0
  415. data/vendor/v8/test/message/testcfg.py +89 -8
  416. data/vendor/v8/test/message/try-catch-finally-no-message.out +26 -26
  417. data/vendor/v8/test/mjsunit/accessor-map-sharing.js +18 -2
  418. data/vendor/v8/test/mjsunit/allocation-site-info.js +126 -0
  419. data/vendor/v8/test/mjsunit/array-bounds-check-removal.js +62 -1
  420. data/vendor/v8/test/mjsunit/array-iteration.js +1 -1
  421. data/vendor/v8/test/mjsunit/array-literal-transitions.js +2 -0
  422. data/vendor/v8/test/mjsunit/array-natives-elements.js +317 -0
  423. data/vendor/v8/test/mjsunit/array-reduce.js +8 -8
  424. data/vendor/v8/test/mjsunit/array-slice.js +12 -0
  425. data/vendor/v8/test/mjsunit/array-store-and-grow.js +4 -1
  426. data/vendor/v8/test/mjsunit/assert-opt-and-deopt.js +1 -1
  427. data/vendor/v8/test/mjsunit/bugs/bug-2337.js +53 -0
  428. data/vendor/v8/test/mjsunit/compare-known-objects-slow.js +69 -0
  429. data/vendor/v8/test/mjsunit/compiler/alloc-object-huge.js +3 -1
  430. data/vendor/v8/test/mjsunit/compiler/inline-accessors.js +368 -0
  431. data/vendor/v8/test/mjsunit/compiler/inline-arguments.js +87 -1
  432. data/vendor/v8/test/mjsunit/compiler/inline-closures.js +49 -0
  433. data/vendor/v8/test/mjsunit/compiler/inline-construct.js +55 -43
  434. data/vendor/v8/test/mjsunit/compiler/inline-literals.js +39 -0
  435. data/vendor/v8/test/mjsunit/compiler/multiply-add.js +69 -0
  436. data/vendor/v8/test/mjsunit/compiler/optimized-closures.js +57 -0
  437. data/vendor/v8/test/mjsunit/compiler/parallel-proto-change.js +44 -0
  438. data/vendor/v8/test/mjsunit/compiler/property-static.js +69 -0
  439. data/vendor/v8/test/mjsunit/compiler/proto-chain-constant.js +55 -0
  440. data/vendor/v8/test/mjsunit/compiler/proto-chain-load.js +44 -0
  441. data/vendor/v8/test/mjsunit/compiler/regress-gvn.js +3 -2
  442. data/vendor/v8/test/mjsunit/compiler/regress-or.js +6 -2
  443. data/vendor/v8/test/mjsunit/compiler/rotate.js +224 -0
  444. data/vendor/v8/test/mjsunit/compiler/uint32.js +173 -0
  445. data/vendor/v8/test/mjsunit/count-based-osr.js +2 -1
  446. data/vendor/v8/test/mjsunit/d8-os.js +3 -3
  447. data/vendor/v8/test/mjsunit/date-parse.js +3 -0
  448. data/vendor/v8/test/mjsunit/date.js +22 -0
  449. data/vendor/v8/test/mjsunit/debug-break-inline.js +1 -0
  450. data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized-double.js +22 -12
  451. data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized.js +21 -10
  452. data/vendor/v8/test/mjsunit/debug-liveedit-compile-error.js +60 -0
  453. data/vendor/v8/test/mjsunit/debug-liveedit-double-call.js +142 -0
  454. data/vendor/v8/test/mjsunit/debug-liveedit-literals.js +94 -0
  455. data/vendor/v8/test/mjsunit/debug-liveedit-restart-frame.js +153 -0
  456. data/vendor/v8/test/mjsunit/debug-multiple-breakpoints.js +1 -1
  457. data/vendor/v8/test/mjsunit/debug-script-breakpoints-closure.js +67 -0
  458. data/vendor/v8/test/mjsunit/debug-script-breakpoints-nested.js +82 -0
  459. data/vendor/v8/test/mjsunit/debug-script.js +4 -2
  460. data/vendor/v8/test/mjsunit/debug-set-variable-value.js +308 -0
  461. data/vendor/v8/test/mjsunit/debug-stepout-scope-part1.js +190 -0
  462. data/vendor/v8/test/mjsunit/debug-stepout-scope-part2.js +83 -0
  463. data/vendor/v8/test/mjsunit/debug-stepout-scope-part3.js +80 -0
  464. data/vendor/v8/test/mjsunit/debug-stepout-scope-part4.js +80 -0
  465. data/vendor/v8/test/mjsunit/debug-stepout-scope-part5.js +77 -0
  466. data/vendor/v8/test/mjsunit/debug-stepout-scope-part6.js +79 -0
  467. data/vendor/v8/test/mjsunit/debug-stepout-scope-part7.js +79 -0
  468. data/vendor/v8/test/mjsunit/{debug-stepout-scope.js → debug-stepout-scope-part8.js} +0 -189
  469. data/vendor/v8/test/mjsunit/delete-non-configurable.js +74 -0
  470. data/vendor/v8/test/mjsunit/deopt-minus-zero.js +56 -0
  471. data/vendor/v8/test/mjsunit/elements-kind.js +6 -4
  472. data/vendor/v8/test/mjsunit/elements-length-no-holey.js +33 -0
  473. data/vendor/v8/test/mjsunit/elements-transition-hoisting.js +46 -19
  474. data/vendor/v8/test/mjsunit/error-accessors.js +54 -0
  475. data/vendor/v8/test/mjsunit/error-constructors.js +1 -14
  476. data/vendor/v8/test/mjsunit/error-tostring.js +8 -0
  477. data/vendor/v8/test/mjsunit/eval-stack-trace.js +204 -0
  478. data/vendor/v8/test/mjsunit/external-array.js +364 -1
  479. data/vendor/v8/test/mjsunit/fast-array-length.js +37 -0
  480. data/vendor/v8/test/mjsunit/fast-non-keyed.js +113 -0
  481. data/vendor/v8/test/mjsunit/fast-prototype.js +117 -0
  482. data/vendor/v8/test/mjsunit/function-call.js +14 -18
  483. data/vendor/v8/test/mjsunit/fuzz-natives-part1.js +230 -0
  484. data/vendor/v8/test/mjsunit/fuzz-natives-part2.js +229 -0
  485. data/vendor/v8/test/mjsunit/fuzz-natives-part3.js +229 -0
  486. data/vendor/v8/test/mjsunit/{fuzz-natives.js → fuzz-natives-part4.js} +12 -2
  487. data/vendor/v8/test/mjsunit/generated-transition-stub.js +218 -0
  488. data/vendor/v8/test/mjsunit/greedy.js +1 -1
  489. data/vendor/v8/test/mjsunit/harmony/block-conflicts.js +2 -1
  490. data/vendor/v8/test/mjsunit/harmony/block-let-crankshaft.js +1 -1
  491. data/vendor/v8/test/mjsunit/harmony/collections.js +69 -11
  492. data/vendor/v8/test/mjsunit/harmony/debug-blockscopes.js +2 -2
  493. data/vendor/v8/test/mjsunit/harmony/module-linking.js +180 -3
  494. data/vendor/v8/test/mjsunit/harmony/module-parsing.js +31 -0
  495. data/vendor/v8/test/mjsunit/harmony/module-recompile.js +87 -0
  496. data/vendor/v8/test/mjsunit/harmony/module-resolution.js +15 -2
  497. data/vendor/v8/test/mjsunit/harmony/object-observe.js +1056 -0
  498. data/vendor/v8/test/mjsunit/harmony/proxies-json.js +178 -0
  499. data/vendor/v8/test/mjsunit/harmony/proxies.js +25 -10
  500. data/vendor/v8/test/mjsunit/json-parser-recursive.js +33 -0
  501. data/vendor/v8/test/mjsunit/json-stringify-recursive.js +52 -0
  502. data/vendor/v8/test/mjsunit/json.js +38 -2
  503. data/vendor/v8/test/mjsunit/json2.js +153 -0
  504. data/vendor/v8/test/mjsunit/limit-locals.js +5 -4
  505. data/vendor/v8/test/mjsunit/manual-parallel-recompile.js +79 -0
  506. data/vendor/v8/test/mjsunit/math-exp-precision.js +64 -0
  507. data/vendor/v8/test/mjsunit/math-floor-negative.js +59 -0
  508. data/vendor/v8/test/mjsunit/math-floor-of-div-minus-zero.js +41 -0
  509. data/vendor/v8/test/mjsunit/math-floor-of-div-nosudiv.js +288 -0
  510. data/vendor/v8/test/mjsunit/math-floor-of-div.js +81 -9
  511. data/vendor/v8/test/mjsunit/{math-floor.js → math-floor-part1.js} +1 -72
  512. data/vendor/v8/test/mjsunit/math-floor-part2.js +76 -0
  513. data/vendor/v8/test/mjsunit/math-floor-part3.js +78 -0
  514. data/vendor/v8/test/mjsunit/math-floor-part4.js +76 -0
  515. data/vendor/v8/test/mjsunit/mirror-object.js +43 -9
  516. data/vendor/v8/test/mjsunit/mjsunit.js +1 -1
  517. data/vendor/v8/test/mjsunit/mjsunit.status +52 -27
  518. data/vendor/v8/test/mjsunit/mul-exhaustive-part1.js +491 -0
  519. data/vendor/v8/test/mjsunit/mul-exhaustive-part10.js +470 -0
  520. data/vendor/v8/test/mjsunit/mul-exhaustive-part2.js +525 -0
  521. data/vendor/v8/test/mjsunit/mul-exhaustive-part3.js +532 -0
  522. data/vendor/v8/test/mjsunit/mul-exhaustive-part4.js +509 -0
  523. data/vendor/v8/test/mjsunit/mul-exhaustive-part5.js +505 -0
  524. data/vendor/v8/test/mjsunit/mul-exhaustive-part6.js +554 -0
  525. data/vendor/v8/test/mjsunit/mul-exhaustive-part7.js +497 -0
  526. data/vendor/v8/test/mjsunit/mul-exhaustive-part8.js +526 -0
  527. data/vendor/v8/test/mjsunit/mul-exhaustive-part9.js +533 -0
  528. data/vendor/v8/test/mjsunit/new-function.js +34 -0
  529. data/vendor/v8/test/mjsunit/numops-fuzz-part1.js +1172 -0
  530. data/vendor/v8/test/mjsunit/numops-fuzz-part2.js +1178 -0
  531. data/vendor/v8/test/mjsunit/numops-fuzz-part3.js +1178 -0
  532. data/vendor/v8/test/mjsunit/numops-fuzz-part4.js +1177 -0
  533. data/vendor/v8/test/mjsunit/object-define-property.js +107 -2
  534. data/vendor/v8/test/mjsunit/override-read-only-property.js +6 -4
  535. data/vendor/v8/test/mjsunit/packed-elements.js +2 -2
  536. data/vendor/v8/test/mjsunit/parse-int-float.js +4 -4
  537. data/vendor/v8/test/mjsunit/pixel-array-rounding.js +1 -1
  538. data/vendor/v8/test/mjsunit/readonly.js +228 -0
  539. data/vendor/v8/test/mjsunit/regexp-capture-3.js +16 -18
  540. data/vendor/v8/test/mjsunit/regexp-capture.js +2 -0
  541. data/vendor/v8/test/mjsunit/regexp-global.js +122 -0
  542. data/vendor/v8/test/mjsunit/regexp-results-cache.js +78 -0
  543. data/vendor/v8/test/mjsunit/regress/regress-1117.js +12 -3
  544. data/vendor/v8/test/mjsunit/regress/regress-1118.js +1 -1
  545. data/vendor/v8/test/mjsunit/regress/regress-115100.js +36 -0
  546. data/vendor/v8/test/mjsunit/regress/regress-1199637.js +1 -3
  547. data/vendor/v8/test/mjsunit/regress/regress-121407.js +1 -1
  548. data/vendor/v8/test/mjsunit/regress/regress-131923.js +30 -0
  549. data/vendor/v8/test/mjsunit/regress/regress-131994.js +70 -0
  550. data/vendor/v8/test/mjsunit/regress/regress-133211.js +35 -0
  551. data/vendor/v8/test/mjsunit/regress/regress-133211b.js +39 -0
  552. data/vendor/v8/test/mjsunit/regress/regress-136048.js +34 -0
  553. data/vendor/v8/test/mjsunit/regress/regress-137768.js +73 -0
  554. data/vendor/v8/test/mjsunit/regress/regress-143967.js +34 -0
  555. data/vendor/v8/test/mjsunit/regress/regress-145201.js +107 -0
  556. data/vendor/v8/test/mjsunit/regress/regress-147497.js +45 -0
  557. data/vendor/v8/test/mjsunit/regress/regress-148378.js +38 -0
  558. data/vendor/v8/test/mjsunit/regress/regress-1563.js +1 -1
  559. data/vendor/v8/test/mjsunit/regress/regress-1591.js +48 -0
  560. data/vendor/v8/test/mjsunit/regress/regress-164442.js +45 -0
  561. data/vendor/v8/test/mjsunit/regress/regress-165637.js +61 -0
  562. data/vendor/v8/test/mjsunit/regress/regress-166379.js +39 -0
  563. data/vendor/v8/test/mjsunit/regress/regress-166553.js +33 -0
  564. data/vendor/v8/test/mjsunit/regress/regress-1692.js +1 -1
  565. data/vendor/v8/test/mjsunit/regress/regress-171641.js +40 -0
  566. data/vendor/v8/test/mjsunit/regress/regress-1980.js +1 -1
  567. data/vendor/v8/test/mjsunit/regress/regress-2073.js +99 -0
  568. data/vendor/v8/test/mjsunit/regress/regress-2119.js +36 -0
  569. data/vendor/v8/test/mjsunit/regress/regress-2156.js +39 -0
  570. data/vendor/v8/test/mjsunit/regress/regress-2163.js +70 -0
  571. data/vendor/v8/test/mjsunit/regress/regress-2170.js +58 -0
  572. data/vendor/v8/test/mjsunit/regress/regress-2172.js +35 -0
  573. data/vendor/v8/test/mjsunit/regress/regress-2185-2.js +145 -0
  574. data/vendor/v8/test/mjsunit/regress/regress-2185.js +38 -0
  575. data/vendor/v8/test/mjsunit/regress/regress-2186.js +49 -0
  576. data/vendor/v8/test/mjsunit/regress/regress-2193.js +58 -0
  577. data/vendor/v8/test/mjsunit/regress/regress-2219.js +32 -0
  578. data/vendor/v8/test/mjsunit/regress/regress-2225.js +65 -0
  579. data/vendor/v8/test/mjsunit/regress/regress-2226.js +36 -0
  580. data/vendor/v8/test/mjsunit/regress/regress-2234.js +41 -0
  581. data/vendor/v8/test/mjsunit/regress/regress-2243.js +31 -0
  582. data/vendor/v8/test/mjsunit/regress/regress-2249.js +33 -0
  583. data/vendor/v8/test/mjsunit/regress/regress-2250.js +68 -0
  584. data/vendor/v8/test/mjsunit/regress/regress-2261.js +113 -0
  585. data/vendor/v8/test/mjsunit/regress/regress-2263.js +30 -0
  586. data/vendor/v8/test/mjsunit/regress/regress-2284.js +32 -0
  587. data/vendor/v8/test/mjsunit/regress/regress-2285.js +32 -0
  588. data/vendor/v8/test/mjsunit/regress/regress-2286.js +32 -0
  589. data/vendor/v8/test/mjsunit/regress/regress-2289.js +34 -0
  590. data/vendor/v8/test/mjsunit/regress/regress-2291.js +36 -0
  591. data/vendor/v8/test/mjsunit/regress/regress-2294.js +70 -0
  592. data/vendor/v8/test/mjsunit/regress/regress-2296.js +40 -0
  593. data/vendor/v8/test/mjsunit/regress/regress-2315.js +40 -0
  594. data/vendor/v8/test/mjsunit/regress/regress-2318.js +66 -0
  595. data/vendor/v8/test/mjsunit/regress/regress-2322.js +36 -0
  596. data/vendor/v8/test/mjsunit/regress/regress-2326.js +54 -0
  597. data/vendor/v8/test/mjsunit/regress/regress-2336.js +53 -0
  598. data/vendor/v8/test/mjsunit/regress/regress-2339.js +59 -0
  599. data/vendor/v8/test/mjsunit/regress/regress-2346.js +123 -0
  600. data/vendor/v8/test/mjsunit/regress/regress-2373.js +29 -0
  601. data/vendor/v8/test/mjsunit/regress/regress-2374.js +33 -0
  602. data/vendor/v8/test/mjsunit/regress/regress-2398.js +41 -0
  603. data/vendor/v8/test/mjsunit/regress/regress-2410.js +36 -0
  604. data/vendor/v8/test/mjsunit/regress/regress-2416.js +75 -0
  605. data/vendor/v8/test/mjsunit/regress/regress-2419.js +37 -0
  606. data/vendor/v8/test/mjsunit/regress/regress-2433.js +36 -0
  607. data/vendor/v8/test/mjsunit/regress/regress-2437.js +156 -0
  608. data/vendor/v8/test/mjsunit/regress/regress-2438.js +52 -0
  609. data/vendor/v8/test/mjsunit/regress/regress-2443.js +129 -0
  610. data/vendor/v8/test/mjsunit/regress/regress-2444.js +120 -0
  611. data/vendor/v8/test/mjsunit/regress/regress-2489.js +50 -0
  612. data/vendor/v8/test/mjsunit/regress/regress-2499.js +40 -0
  613. data/vendor/v8/test/mjsunit/regress/regress-334.js +1 -1
  614. data/vendor/v8/test/mjsunit/regress/regress-492.js +39 -1
  615. data/vendor/v8/test/mjsunit/regress/regress-builtin-array-op.js +38 -0
  616. data/vendor/v8/test/mjsunit/regress/regress-cnlt-elements.js +43 -0
  617. data/vendor/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js +45 -0
  618. data/vendor/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js +46 -0
  619. data/vendor/v8/test/mjsunit/regress/regress-convert-enum.js +60 -0
  620. data/vendor/v8/test/mjsunit/regress/regress-convert-enum2.js +46 -0
  621. data/vendor/v8/test/mjsunit/regress/regress-convert-transition.js +40 -0
  622. data/vendor/v8/test/mjsunit/regress/regress-crbug-119926.js +3 -1
  623. data/vendor/v8/test/mjsunit/regress/regress-crbug-125148.js +90 -0
  624. data/vendor/v8/test/mjsunit/regress/regress-crbug-134055.js +63 -0
  625. data/vendor/v8/test/mjsunit/regress/regress-crbug-134609.js +59 -0
  626. data/vendor/v8/test/mjsunit/regress/regress-crbug-135008.js +45 -0
  627. data/vendor/v8/test/mjsunit/regress/regress-crbug-135066.js +55 -0
  628. data/vendor/v8/test/mjsunit/regress/regress-crbug-137689.js +47 -0
  629. data/vendor/v8/test/mjsunit/regress/regress-crbug-138887.js +48 -0
  630. data/vendor/v8/test/mjsunit/regress/regress-crbug-140083.js +44 -0
  631. data/vendor/v8/test/mjsunit/regress/regress-crbug-142087.js +38 -0
  632. data/vendor/v8/test/mjsunit/regress/regress-crbug-142218.js +44 -0
  633. data/vendor/v8/test/mjsunit/regress/regress-crbug-145961.js +39 -0
  634. data/vendor/v8/test/mjsunit/regress/regress-crbug-146910.js +33 -0
  635. data/vendor/v8/test/mjsunit/regress/regress-crbug-147475.js +48 -0
  636. data/vendor/v8/test/mjsunit/regress/regress-crbug-148376.js +35 -0
  637. data/vendor/v8/test/mjsunit/regress/regress-crbug-150545.js +53 -0
  638. data/vendor/v8/test/mjsunit/regress/regress-crbug-150729.js +39 -0
  639. data/vendor/v8/test/mjsunit/regress/regress-crbug-157019.js +54 -0
  640. data/vendor/v8/test/mjsunit/regress/regress-crbug-157520.js +38 -0
  641. data/vendor/v8/test/mjsunit/regress/regress-crbug-158185.js +39 -0
  642. data/vendor/v8/test/mjsunit/regress/regress-crbug-160010.js +35 -0
  643. data/vendor/v8/test/mjsunit/regress/regress-crbug-162085.js +71 -0
  644. data/vendor/v8/test/mjsunit/regress/regress-crbug-168545.js +34 -0
  645. data/vendor/v8/test/mjsunit/regress/regress-crbug-170856.js +33 -0
  646. data/vendor/v8/test/mjsunit/regress/regress-crbug-172345.js +34 -0
  647. data/vendor/v8/test/mjsunit/regress/regress-crbug-173974.js +36 -0
  648. data/vendor/v8/test/mjsunit/regress/regress-crbug-18639.js +9 -5
  649. data/vendor/v8/test/mjsunit/regress/regress-debug-code-recompilation.js +2 -1
  650. data/vendor/v8/test/mjsunit/regress/regress-deep-proto.js +45 -0
  651. data/vendor/v8/test/mjsunit/regress/regress-delete-empty-double.js +40 -0
  652. data/vendor/v8/test/mjsunit/regress/regress-iteration-order.js +42 -0
  653. data/vendor/v8/test/mjsunit/regress/regress-json-stringify-gc.js +41 -0
  654. data/vendor/v8/test/mjsunit/regress/regress-latin-1.js +78 -0
  655. data/vendor/v8/test/mjsunit/regress/regress-load-elements.js +49 -0
  656. data/vendor/v8/test/mjsunit/regress/regress-observe-empty-double-array.js +38 -0
  657. data/vendor/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js +37 -0
  658. data/vendor/v8/test/mjsunit/shift-for-integer-div.js +59 -0
  659. data/vendor/v8/test/mjsunit/stack-traces-gc.js +119 -0
  660. data/vendor/v8/test/mjsunit/stack-traces-overflow.js +122 -0
  661. data/vendor/v8/test/mjsunit/stack-traces.js +39 -1
  662. data/vendor/v8/test/mjsunit/str-to-num.js +7 -2
  663. data/vendor/v8/test/mjsunit/strict-mode.js +36 -11
  664. data/vendor/v8/test/mjsunit/string-charcodeat.js +3 -0
  665. data/vendor/v8/test/mjsunit/string-natives.js +72 -0
  666. data/vendor/v8/test/mjsunit/string-split.js +17 -0
  667. data/vendor/v8/test/mjsunit/testcfg.py +76 -6
  668. data/vendor/v8/test/mjsunit/tools/tickprocessor.js +4 -1
  669. data/vendor/v8/test/mjsunit/try-finally-continue.js +72 -0
  670. data/vendor/v8/test/mjsunit/typed-array-slice.js +61 -0
  671. data/vendor/v8/test/mjsunit/unbox-double-arrays.js +2 -0
  672. data/vendor/v8/test/mjsunit/uri.js +12 -0
  673. data/vendor/v8/test/mjsunit/with-readonly.js +4 -2
  674. data/vendor/v8/test/mozilla/mozilla.status +19 -113
  675. data/vendor/v8/test/mozilla/testcfg.py +122 -3
  676. data/vendor/v8/test/preparser/preparser.status +5 -0
  677. data/vendor/v8/test/preparser/strict-identifiers.pyt +1 -1
  678. data/vendor/v8/test/preparser/testcfg.py +101 -5
  679. data/vendor/v8/test/sputnik/sputnik.status +1 -1
  680. data/vendor/v8/test/sputnik/testcfg.py +5 -0
  681. data/vendor/v8/test/test262/README +2 -2
  682. data/vendor/v8/test/test262/test262.status +13 -36
  683. data/vendor/v8/test/test262/testcfg.py +102 -8
  684. data/vendor/v8/tools/android-build.sh +0 -0
  685. data/vendor/v8/tools/android-ll-prof.sh +69 -0
  686. data/vendor/v8/tools/android-run.py +109 -0
  687. data/vendor/v8/tools/android-sync.sh +105 -0
  688. data/vendor/v8/tools/bash-completion.sh +0 -0
  689. data/vendor/v8/tools/check-static-initializers.sh +0 -0
  690. data/vendor/v8/tools/common-includes.sh +15 -22
  691. data/vendor/v8/tools/disasm.py +4 -4
  692. data/vendor/v8/tools/fuzz-harness.sh +0 -0
  693. data/vendor/v8/tools/gen-postmortem-metadata.py +6 -8
  694. data/vendor/v8/tools/grokdump.py +404 -129
  695. data/vendor/v8/tools/gyp/v8.gyp +105 -43
  696. data/vendor/v8/tools/linux-tick-processor +5 -5
  697. data/vendor/v8/tools/ll_prof.py +75 -15
  698. data/vendor/v8/tools/merge-to-branch.sh +2 -2
  699. data/vendor/v8/tools/plot-timer-events +70 -0
  700. data/vendor/v8/tools/plot-timer-events.js +510 -0
  701. data/vendor/v8/tools/presubmit.py +1 -0
  702. data/vendor/v8/tools/push-to-trunk.sh +14 -4
  703. data/vendor/v8/tools/run-llprof.sh +69 -0
  704. data/vendor/v8/tools/run-tests.py +372 -0
  705. data/vendor/v8/tools/run-valgrind.py +1 -1
  706. data/vendor/v8/tools/status-file-converter.py +39 -0
  707. data/vendor/v8/tools/test-server.py +224 -0
  708. data/vendor/v8/tools/test-wrapper-gypbuild.py +13 -16
  709. data/vendor/v8/tools/test.py +10 -19
  710. data/vendor/v8/tools/testrunner/README +174 -0
  711. data/vendor/v8/tools/testrunner/__init__.py +26 -0
  712. data/vendor/v8/tools/testrunner/local/__init__.py +26 -0
  713. data/vendor/v8/tools/testrunner/local/commands.py +153 -0
  714. data/vendor/v8/tools/testrunner/local/execution.py +182 -0
  715. data/vendor/v8/tools/testrunner/local/old_statusfile.py +460 -0
  716. data/vendor/v8/tools/testrunner/local/progress.py +238 -0
  717. data/vendor/v8/tools/testrunner/local/statusfile.py +145 -0
  718. data/vendor/v8/tools/testrunner/local/testsuite.py +187 -0
  719. data/vendor/v8/tools/testrunner/local/utils.py +108 -0
  720. data/vendor/v8/tools/testrunner/local/verbose.py +99 -0
  721. data/vendor/v8/tools/testrunner/network/__init__.py +26 -0
  722. data/vendor/v8/tools/testrunner/network/distro.py +90 -0
  723. data/vendor/v8/tools/testrunner/network/endpoint.py +124 -0
  724. data/vendor/v8/tools/testrunner/network/network_execution.py +253 -0
  725. data/vendor/v8/tools/testrunner/network/perfdata.py +120 -0
  726. data/vendor/v8/tools/testrunner/objects/__init__.py +26 -0
  727. data/vendor/v8/tools/testrunner/objects/context.py +50 -0
  728. data/vendor/v8/tools/testrunner/objects/output.py +60 -0
  729. data/vendor/v8/tools/testrunner/objects/peer.py +80 -0
  730. data/vendor/v8/tools/testrunner/objects/testcase.py +83 -0
  731. data/vendor/v8/tools/testrunner/objects/workpacket.py +90 -0
  732. data/vendor/v8/tools/testrunner/server/__init__.py +26 -0
  733. data/vendor/v8/tools/testrunner/server/compression.py +111 -0
  734. data/vendor/v8/tools/testrunner/server/constants.py +51 -0
  735. data/vendor/v8/tools/testrunner/server/daemon.py +147 -0
  736. data/vendor/v8/tools/testrunner/server/local_handler.py +119 -0
  737. data/vendor/v8/tools/testrunner/server/main.py +245 -0
  738. data/vendor/v8/tools/testrunner/server/presence_handler.py +120 -0
  739. data/vendor/v8/tools/testrunner/server/signatures.py +63 -0
  740. data/vendor/v8/tools/testrunner/server/status_handler.py +112 -0
  741. data/vendor/v8/tools/testrunner/server/work_handler.py +150 -0
  742. data/vendor/v8/tools/tick-processor.html +168 -0
  743. data/vendor/v8/tools/tickprocessor-driver.js +5 -3
  744. data/vendor/v8/tools/tickprocessor.js +58 -15
  745. metadata +534 -30
  746. data/patches/add-freebsd9-and-freebsd10-to-gyp-GetFlavor.patch +0 -11
  747. data/patches/do-not-imply-vfp3-and-armv7.patch +0 -44
  748. data/patches/fPIC-on-x64.patch +0 -14
  749. data/vendor/v8/src/liveobjectlist-inl.h +0 -126
  750. data/vendor/v8/src/liveobjectlist.cc +0 -2631
  751. data/vendor/v8/src/liveobjectlist.h +0 -319
  752. data/vendor/v8/test/mjsunit/mul-exhaustive.js +0 -4629
  753. data/vendor/v8/test/mjsunit/numops-fuzz.js +0 -4609
  754. data/vendor/v8/test/mjsunit/regress/regress-1969.js +0 -5045
@@ -50,6 +50,7 @@ class LCodeGen;
50
50
  V(AccessArgumentsAt) \
51
51
  V(AddI) \
52
52
  V(AllocateObject) \
53
+ V(Allocate) \
53
54
  V(ApplyArguments) \
54
55
  V(ArgumentsElements) \
55
56
  V(ArgumentsLength) \
@@ -93,6 +94,7 @@ class LCodeGen;
93
94
  V(Deoptimize) \
94
95
  V(DivI) \
95
96
  V(DoubleToI) \
97
+ V(DummyUse) \
96
98
  V(ElementsKind) \
97
99
  V(FastLiteral) \
98
100
  V(FixedArrayBaseLength) \
@@ -108,6 +110,7 @@ class LCodeGen;
108
110
  V(InstanceOfKnownGlobal) \
109
111
  V(InstructionGap) \
110
112
  V(Integer32ToDouble) \
113
+ V(Uint32ToDouble) \
111
114
  V(InvokeFunction) \
112
115
  V(IsConstructCallAndBranch) \
113
116
  V(IsNilAndBranch) \
@@ -115,7 +118,6 @@ class LCodeGen;
115
118
  V(IsStringAndBranch) \
116
119
  V(IsSmiAndBranch) \
117
120
  V(IsUndetectableAndBranch) \
118
- V(StringCompareAndBranch) \
119
121
  V(JSArrayLength) \
120
122
  V(Label) \
121
123
  V(LazyBailout) \
@@ -125,18 +127,21 @@ class LCodeGen;
125
127
  V(LoadFunctionPrototype) \
126
128
  V(LoadGlobalCell) \
127
129
  V(LoadGlobalGeneric) \
128
- V(LoadKeyedFastDoubleElement) \
129
- V(LoadKeyedFastElement) \
130
+ V(LoadKeyed) \
130
131
  V(LoadKeyedGeneric) \
131
- V(LoadKeyedSpecializedArrayElement) \
132
132
  V(LoadNamedField) \
133
133
  V(LoadNamedFieldPolymorphic) \
134
134
  V(LoadNamedGeneric) \
135
+ V(MapEnumLength) \
136
+ V(MathExp) \
135
137
  V(MathFloorOfDiv) \
138
+ V(MathMinMax) \
136
139
  V(ModI) \
137
140
  V(MulI) \
141
+ V(MultiplyAddD) \
138
142
  V(NumberTagD) \
139
143
  V(NumberTagI) \
144
+ V(NumberTagU) \
140
145
  V(NumberUntagD) \
141
146
  V(ObjectLiteral) \
142
147
  V(OsrEntry) \
@@ -147,6 +152,7 @@ class LCodeGen;
147
152
  V(Random) \
148
153
  V(RegExpLiteral) \
149
154
  V(Return) \
155
+ V(SeqStringSetChar) \
150
156
  V(ShiftI) \
151
157
  V(SmiTag) \
152
158
  V(SmiUntag) \
@@ -154,22 +160,23 @@ class LCodeGen;
154
160
  V(StoreContextSlot) \
155
161
  V(StoreGlobalCell) \
156
162
  V(StoreGlobalGeneric) \
157
- V(StoreKeyedFastDoubleElement) \
158
- V(StoreKeyedFastElement) \
163
+ V(StoreKeyed) \
159
164
  V(StoreKeyedGeneric) \
160
- V(StoreKeyedSpecializedArrayElement) \
161
165
  V(StoreNamedField) \
162
166
  V(StoreNamedGeneric) \
163
167
  V(StringAdd) \
164
168
  V(StringCharCodeAt) \
165
169
  V(StringCharFromCode) \
170
+ V(StringCompareAndBranch) \
166
171
  V(StringLength) \
167
172
  V(SubI) \
173
+ V(RSubI) \
168
174
  V(TaggedToI) \
169
175
  V(ThisFunction) \
170
176
  V(Throw) \
171
177
  V(ToFastProperties) \
172
178
  V(TransitionElementsKind) \
179
+ V(TrapAllocationMemento) \
173
180
  V(Typeof) \
174
181
  V(TypeofIsAndBranch) \
175
182
  V(UnaryMathOperation) \
@@ -251,17 +258,17 @@ class LInstruction: public ZoneObject {
251
258
 
252
259
  void MarkAsCall() { is_call_ = true; }
253
260
 
261
+ // Interface to the register allocator and iterators.
262
+ bool ClobbersTemps() const { return is_call_; }
263
+ bool ClobbersRegisters() const { return is_call_; }
264
+ bool ClobbersDoubleRegisters() const { return is_call_; }
265
+
254
266
  // Interface to the register allocator and iterators.
255
267
  bool IsMarkedAsCall() const { return is_call_; }
256
268
 
257
269
  virtual bool HasResult() const = 0;
258
270
  virtual LOperand* result() = 0;
259
271
 
260
- virtual int InputCount() = 0;
261
- virtual LOperand* InputAt(int i) = 0;
262
- virtual int TempCount() = 0;
263
- virtual LOperand* TempAt(int i) = 0;
264
-
265
272
  LOperand* FirstInput() { return InputAt(0); }
266
273
  LOperand* Output() { return HasResult() ? result() : NULL; }
267
274
 
@@ -270,6 +277,15 @@ class LInstruction: public ZoneObject {
270
277
  #endif
271
278
 
272
279
  private:
280
+ // Iterator support.
281
+ friend class InputIterator;
282
+ virtual int InputCount() = 0;
283
+ virtual LOperand* InputAt(int i) = 0;
284
+
285
+ friend class TempIterator;
286
+ virtual int TempCount() = 0;
287
+ virtual LOperand* TempAt(int i) = 0;
288
+
273
289
  LEnvironment* environment_;
274
290
  SetOncePointer<LPointerMap> pointer_map_;
275
291
  HValue* hydrogen_value_;
@@ -289,16 +305,17 @@ class LTemplateInstruction: public LInstruction {
289
305
  void set_result(LOperand* operand) { results_[0] = operand; }
290
306
  LOperand* result() { return results_[0]; }
291
307
 
292
- int InputCount() { return I; }
293
- LOperand* InputAt(int i) { return inputs_[i]; }
294
-
295
- int TempCount() { return T; }
296
- LOperand* TempAt(int i) { return temps_[i]; }
297
-
298
308
  protected:
299
309
  EmbeddedContainer<LOperand*, R> results_;
300
310
  EmbeddedContainer<LOperand*, I> inputs_;
301
311
  EmbeddedContainer<LOperand*, T> temps_;
312
+
313
+ private:
314
+ virtual int InputCount() { return I; }
315
+ virtual LOperand* InputAt(int i) { return inputs_[i]; }
316
+
317
+ virtual int TempCount() { return T; }
318
+ virtual LOperand* TempAt(int i) { return temps_[i]; }
302
319
  };
303
320
 
304
321
 
@@ -333,8 +350,10 @@ class LGap: public LTemplateInstruction<0, 0, 0> {
333
350
  LAST_INNER_POSITION = AFTER
334
351
  };
335
352
 
336
- LParallelMove* GetOrCreateParallelMove(InnerPosition pos) {
337
- if (parallel_moves_[pos] == NULL) parallel_moves_[pos] = new LParallelMove;
353
+ LParallelMove* GetOrCreateParallelMove(InnerPosition pos, Zone* zone) {
354
+ if (parallel_moves_[pos] == NULL) {
355
+ parallel_moves_[pos] = new(zone) LParallelMove(zone);
356
+ }
338
357
  return parallel_moves_[pos];
339
358
  }
340
359
 
@@ -387,6 +406,15 @@ class LLazyBailout: public LTemplateInstruction<0, 0, 0> {
387
406
  };
388
407
 
389
408
 
409
+ class LDummyUse: public LTemplateInstruction<1, 1, 0> {
410
+ public:
411
+ explicit LDummyUse(LOperand* value) {
412
+ inputs_[0] = value;
413
+ }
414
+ DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use")
415
+ };
416
+
417
+
390
418
  class LDeoptimize: public LTemplateInstruction<0, 0, 0> {
391
419
  public:
392
420
  DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
@@ -514,6 +542,8 @@ class LArgumentsLength: public LTemplateInstruction<1, 1, 0> {
514
542
  inputs_[0] = elements;
515
543
  }
516
544
 
545
+ LOperand* elements() { return inputs_[0]; }
546
+
517
547
  DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length")
518
548
  };
519
549
 
@@ -540,16 +570,22 @@ class LModI: public LTemplateInstruction<1, 2, 3> {
540
570
  // Used for the standard case.
541
571
  LModI(LOperand* left,
542
572
  LOperand* right,
543
- LOperand* temp1,
573
+ LOperand* temp,
544
574
  LOperand* temp2,
545
575
  LOperand* temp3) {
546
576
  inputs_[0] = left;
547
577
  inputs_[1] = right;
548
- temps_[0] = temp1;
578
+ temps_[0] = temp;
549
579
  temps_[1] = temp2;
550
580
  temps_[2] = temp3;
551
581
  }
552
582
 
583
+ LOperand* left() { return inputs_[0]; }
584
+ LOperand* right() { return inputs_[1]; }
585
+ LOperand* temp() { return temps_[0]; }
586
+ LOperand* temp2() { return temps_[1]; }
587
+ LOperand* temp3() { return temps_[2]; }
588
+
553
589
  DECLARE_CONCRETE_INSTRUCTION(ModI, "mod-i")
554
590
  DECLARE_HYDROGEN_ACCESSOR(Mod)
555
591
  };
@@ -562,6 +598,9 @@ class LDivI: public LTemplateInstruction<1, 2, 0> {
562
598
  inputs_[1] = right;
563
599
  }
564
600
 
601
+ LOperand* left() { return inputs_[0]; }
602
+ LOperand* right() { return inputs_[1]; }
603
+
565
604
  DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i")
566
605
  DECLARE_HYDROGEN_ACCESSOR(Div)
567
606
  };
@@ -577,6 +616,10 @@ class LMathFloorOfDiv: public LTemplateInstruction<1, 2, 1> {
577
616
  temps_[0] = temp;
578
617
  }
579
618
 
619
+ LOperand* left() { return inputs_[0]; }
620
+ LOperand* right() { return inputs_[1]; }
621
+ LOperand* temp() { return temps_[0]; }
622
+
580
623
  DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div")
581
624
  DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv)
582
625
  };
@@ -590,11 +633,33 @@ class LMulI: public LTemplateInstruction<1, 2, 1> {
590
633
  temps_[0] = temp;
591
634
  }
592
635
 
636
+ LOperand* left() { return inputs_[0]; }
637
+ LOperand* right() { return inputs_[1]; }
638
+ LOperand* temp() { return temps_[0]; }
639
+
593
640
  DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
594
641
  DECLARE_HYDROGEN_ACCESSOR(Mul)
595
642
  };
596
643
 
597
644
 
645
+ // Instruction for computing multiplier * multiplicand + addend.
646
+ class LMultiplyAddD: public LTemplateInstruction<1, 3, 0> {
647
+ public:
648
+ LMultiplyAddD(LOperand* addend, LOperand* multiplier,
649
+ LOperand* multiplicand) {
650
+ inputs_[0] = addend;
651
+ inputs_[1] = multiplier;
652
+ inputs_[2] = multiplicand;
653
+ }
654
+
655
+ LOperand* addend() { return inputs_[0]; }
656
+ LOperand* multiplier() { return inputs_[1]; }
657
+ LOperand* multiplicand() { return inputs_[2]; }
658
+
659
+ DECLARE_CONCRETE_INSTRUCTION(MultiplyAddD, "multiply-add-d")
660
+ };
661
+
662
+
598
663
  class LCmpIDAndBranch: public LControlInstruction<2, 0> {
599
664
  public:
600
665
  LCmpIDAndBranch(LOperand* left, LOperand* right) {
@@ -602,12 +667,15 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
602
667
  inputs_[1] = right;
603
668
  }
604
669
 
670
+ LOperand* left() { return inputs_[0]; }
671
+ LOperand* right() { return inputs_[1]; }
672
+
605
673
  DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
606
674
  DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
607
675
 
608
676
  Token::Value op() const { return hydrogen()->token(); }
609
677
  bool is_double() const {
610
- return hydrogen()->GetInputRepresentation().IsDouble();
678
+ return hydrogen()->representation().IsDouble();
611
679
  }
612
680
 
613
681
  virtual void PrintDataTo(StringStream* stream);
@@ -621,6 +689,9 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 1> {
621
689
  temps_[0] = temp;
622
690
  }
623
691
 
692
+ LOperand* value() { return inputs_[0]; }
693
+ LOperand* temp() { return temps_[0]; }
694
+
624
695
  DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation")
625
696
  DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
626
697
 
@@ -629,6 +700,30 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 1> {
629
700
  };
630
701
 
631
702
 
703
+ class LMathExp: public LTemplateInstruction<1, 1, 3> {
704
+ public:
705
+ LMathExp(LOperand* value,
706
+ LOperand* double_temp,
707
+ LOperand* temp1,
708
+ LOperand* temp2) {
709
+ inputs_[0] = value;
710
+ temps_[0] = temp1;
711
+ temps_[1] = temp2;
712
+ temps_[2] = double_temp;
713
+ ExternalReference::InitializeMathExpData();
714
+ }
715
+
716
+ LOperand* value() { return inputs_[0]; }
717
+ LOperand* temp1() { return temps_[0]; }
718
+ LOperand* temp2() { return temps_[1]; }
719
+ LOperand* double_temp() { return temps_[2]; }
720
+
721
+ DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp")
722
+
723
+ virtual void PrintDataTo(StringStream* stream);
724
+ };
725
+
726
+
632
727
  class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
633
728
  public:
634
729
  LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
@@ -636,6 +731,9 @@ class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
636
731
  inputs_[1] = right;
637
732
  }
638
733
 
734
+ LOperand* left() { return inputs_[0]; }
735
+ LOperand* right() { return inputs_[1]; }
736
+
639
737
  DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
640
738
  "cmp-object-eq-and-branch")
641
739
  DECLARE_HYDROGEN_ACCESSOR(CompareObjectEqAndBranch)
@@ -648,6 +746,8 @@ class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
648
746
  inputs_[0] = left;
649
747
  }
650
748
 
749
+ LOperand* left() { return inputs_[0]; }
750
+
651
751
  DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
652
752
  "cmp-constant-eq-and-branch")
653
753
  DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
@@ -660,6 +760,8 @@ class LIsNilAndBranch: public LControlInstruction<1, 0> {
660
760
  inputs_[0] = value;
661
761
  }
662
762
 
763
+ LOperand* value() { return inputs_[0]; }
764
+
663
765
  DECLARE_CONCRETE_INSTRUCTION(IsNilAndBranch, "is-nil-and-branch")
664
766
  DECLARE_HYDROGEN_ACCESSOR(IsNilAndBranch)
665
767
 
@@ -677,6 +779,9 @@ class LIsObjectAndBranch: public LControlInstruction<1, 1> {
677
779
  temps_[0] = temp;
678
780
  }
679
781
 
782
+ LOperand* value() { return inputs_[0]; }
783
+ LOperand* temp() { return temps_[0]; }
784
+
680
785
  DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
681
786
  DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
682
787
 
@@ -691,6 +796,9 @@ class LIsStringAndBranch: public LControlInstruction<1, 1> {
691
796
  temps_[0] = temp;
692
797
  }
693
798
 
799
+ LOperand* value() { return inputs_[0]; }
800
+ LOperand* temp() { return temps_[0]; }
801
+
694
802
  DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch")
695
803
  DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch)
696
804
 
@@ -704,6 +812,8 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
704
812
  inputs_[0] = value;
705
813
  }
706
814
 
815
+ LOperand* value() { return inputs_[0]; }
816
+
707
817
  DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
708
818
  DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
709
819
 
@@ -718,6 +828,9 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
718
828
  temps_[0] = temp;
719
829
  }
720
830
 
831
+ LOperand* value() { return inputs_[0]; }
832
+ LOperand* temp() { return temps_[0]; }
833
+
721
834
  DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
722
835
  "is-undetectable-and-branch")
723
836
  DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
@@ -733,6 +846,9 @@ class LStringCompareAndBranch: public LControlInstruction<2, 0> {
733
846
  inputs_[1] = right;
734
847
  }
735
848
 
849
+ LOperand* left() { return inputs_[0]; }
850
+ LOperand* right() { return inputs_[1]; }
851
+
736
852
  DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
737
853
  "string-compare-and-branch")
738
854
  DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
@@ -749,6 +865,8 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
749
865
  inputs_[0] = value;
750
866
  }
751
867
 
868
+ LOperand* value() { return inputs_[0]; }
869
+
752
870
  DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
753
871
  "has-instance-type-and-branch")
754
872
  DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
@@ -763,6 +881,8 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
763
881
  inputs_[0] = value;
764
882
  }
765
883
 
884
+ LOperand* value() { return inputs_[0]; }
885
+
766
886
  DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
767
887
  DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
768
888
  };
@@ -774,6 +894,8 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
774
894
  inputs_[0] = value;
775
895
  }
776
896
 
897
+ LOperand* value() { return inputs_[0]; }
898
+
777
899
  DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
778
900
  "has-cached-array-index-and-branch")
779
901
  DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
@@ -789,6 +911,9 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 1> {
789
911
  temps_[0] = temp;
790
912
  }
791
913
 
914
+ LOperand* value() { return inputs_[0]; }
915
+ LOperand* temp() { return temps_[0]; }
916
+
792
917
  DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
793
918
  "class-of-test-and-branch")
794
919
  DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
@@ -804,6 +929,9 @@ class LCmpT: public LTemplateInstruction<1, 2, 0> {
804
929
  inputs_[1] = right;
805
930
  }
806
931
 
932
+ LOperand* left() { return inputs_[0]; }
933
+ LOperand* right() { return inputs_[1]; }
934
+
807
935
  DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
808
936
  DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
809
937
 
@@ -818,6 +946,9 @@ class LInstanceOf: public LTemplateInstruction<1, 2, 0> {
818
946
  inputs_[1] = right;
819
947
  }
820
948
 
949
+ LOperand* left() { return inputs_[0]; }
950
+ LOperand* right() { return inputs_[1]; }
951
+
821
952
  DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
822
953
  };
823
954
 
@@ -829,6 +960,9 @@ class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> {
829
960
  temps_[0] = temp;
830
961
  }
831
962
 
963
+ LOperand* value() { return inputs_[0]; }
964
+ LOperand* temp() { return temps_[0]; }
965
+
832
966
  DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
833
967
  "instance-of-known-global")
834
968
  DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
@@ -857,6 +991,7 @@ class LBoundsCheck: public LTemplateInstruction<0, 2, 0> {
857
991
  LOperand* length() { return inputs_[1]; }
858
992
 
859
993
  DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check")
994
+ DECLARE_HYDROGEN_ACCESSOR(BoundsCheck)
860
995
  };
861
996
 
862
997
 
@@ -867,6 +1002,9 @@ class LBitI: public LTemplateInstruction<1, 2, 0> {
867
1002
  inputs_[1] = right;
868
1003
  }
869
1004
 
1005
+ LOperand* left() { return inputs_[0]; }
1006
+ LOperand* right() { return inputs_[1]; }
1007
+
870
1008
  Token::Value op() const { return hydrogen()->op(); }
871
1009
 
872
1010
  DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i")
@@ -883,7 +1021,8 @@ class LShiftI: public LTemplateInstruction<1, 2, 0> {
883
1021
  }
884
1022
 
885
1023
  Token::Value op() const { return op_; }
886
-
1024
+ LOperand* left() { return inputs_[0]; }
1025
+ LOperand* right() { return inputs_[1]; }
887
1026
  bool can_deopt() const { return can_deopt_; }
888
1027
 
889
1028
  DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i")
@@ -901,11 +1040,29 @@ class LSubI: public LTemplateInstruction<1, 2, 0> {
901
1040
  inputs_[1] = right;
902
1041
  }
903
1042
 
1043
+ LOperand* left() { return inputs_[0]; }
1044
+ LOperand* right() { return inputs_[1]; }
1045
+
904
1046
  DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i")
905
1047
  DECLARE_HYDROGEN_ACCESSOR(Sub)
906
1048
  };
907
1049
 
908
1050
 
1051
+ class LRSubI: public LTemplateInstruction<1, 2, 0> {
1052
+ public:
1053
+ LRSubI(LOperand* left, LOperand* right) {
1054
+ inputs_[0] = left;
1055
+ inputs_[1] = right;
1056
+ }
1057
+
1058
+ LOperand* left() { return inputs_[0]; }
1059
+ LOperand* right() { return inputs_[1]; }
1060
+
1061
+ DECLARE_CONCRETE_INSTRUCTION(RSubI, "rsub-i")
1062
+ DECLARE_HYDROGEN_ACCESSOR(Sub)
1063
+ };
1064
+
1065
+
909
1066
  class LConstantI: public LTemplateInstruction<1, 0, 0> {
910
1067
  public:
911
1068
  DECLARE_CONCRETE_INSTRUCTION(ConstantI, "constant-i")
@@ -939,6 +1096,8 @@ class LBranch: public LControlInstruction<1, 0> {
939
1096
  inputs_[0] = value;
940
1097
  }
941
1098
 
1099
+ LOperand* value() { return inputs_[0]; }
1100
+
942
1101
  DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
943
1102
  DECLARE_HYDROGEN_ACCESSOR(Branch)
944
1103
 
@@ -953,6 +1112,9 @@ class LCmpMapAndBranch: public LTemplateInstruction<0, 1, 1> {
953
1112
  temps_[0] = temp;
954
1113
  }
955
1114
 
1115
+ LOperand* value() { return inputs_[0]; }
1116
+ LOperand* temp() { return temps_[0]; }
1117
+
956
1118
  DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
957
1119
  DECLARE_HYDROGEN_ACCESSOR(CompareMap)
958
1120
 
@@ -974,6 +1136,8 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
974
1136
  inputs_[0] = value;
975
1137
  }
976
1138
 
1139
+ LOperand* value() { return inputs_[0]; }
1140
+
977
1141
  DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
978
1142
  DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
979
1143
  };
@@ -985,18 +1149,34 @@ class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
985
1149
  inputs_[0] = value;
986
1150
  }
987
1151
 
1152
+ LOperand* value() { return inputs_[0]; }
1153
+
988
1154
  DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
989
1155
  "fixed-array-base-length")
990
1156
  DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
991
1157
  };
992
1158
 
993
1159
 
1160
+ class LMapEnumLength: public LTemplateInstruction<1, 1, 0> {
1161
+ public:
1162
+ explicit LMapEnumLength(LOperand* value) {
1163
+ inputs_[0] = value;
1164
+ }
1165
+
1166
+ LOperand* value() { return inputs_[0]; }
1167
+
1168
+ DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length")
1169
+ };
1170
+
1171
+
994
1172
  class LElementsKind: public LTemplateInstruction<1, 1, 0> {
995
1173
  public:
996
1174
  explicit LElementsKind(LOperand* value) {
997
1175
  inputs_[0] = value;
998
1176
  }
999
1177
 
1178
+ LOperand* value() { return inputs_[0]; }
1179
+
1000
1180
  DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
1001
1181
  DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
1002
1182
  };
@@ -1009,6 +1189,9 @@ class LValueOf: public LTemplateInstruction<1, 1, 1> {
1009
1189
  temps_[0] = temp;
1010
1190
  }
1011
1191
 
1192
+ LOperand* value() { return inputs_[0]; }
1193
+ LOperand* temp() { return temps_[0]; }
1194
+
1012
1195
  DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1013
1196
  DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1014
1197
  };
@@ -1021,31 +1204,39 @@ class LDateField: public LTemplateInstruction<1, 1, 1> {
1021
1204
  temps_[0] = temp;
1022
1205
  }
1023
1206
 
1207
+ LOperand* date() { return inputs_[0]; }
1208
+ LOperand* temp() { return temps_[0]; }
1209
+ Smi* index() const { return index_; }
1210
+
1024
1211
  DECLARE_CONCRETE_INSTRUCTION(ValueOf, "date-field")
1025
1212
  DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1026
- Smi* index() const { return index_; }
1027
1213
 
1028
1214
  private:
1029
1215
  Smi* index_;
1030
1216
  };
1031
1217
 
1032
1218
 
1033
- class LSetDateField: public LTemplateInstruction<1, 2, 1> {
1219
+ class LSeqStringSetChar: public LTemplateInstruction<1, 3, 0> {
1034
1220
  public:
1035
- LSetDateField(LOperand* date, LOperand* value, LOperand* temp, int index)
1036
- : index_(index) {
1037
- inputs_[0] = date;
1038
- inputs_[1] = value;
1039
- temps_[0] = temp;
1221
+ LSeqStringSetChar(String::Encoding encoding,
1222
+ LOperand* string,
1223
+ LOperand* index,
1224
+ LOperand* value) : encoding_(encoding) {
1225
+ inputs_[0] = string;
1226
+ inputs_[1] = index;
1227
+ inputs_[2] = value;
1040
1228
  }
1041
1229
 
1042
- DECLARE_CONCRETE_INSTRUCTION(DateField, "date-set-field")
1043
- DECLARE_HYDROGEN_ACCESSOR(DateField)
1230
+ String::Encoding encoding() { return encoding_; }
1231
+ LOperand* string() { return inputs_[0]; }
1232
+ LOperand* index() { return inputs_[1]; }
1233
+ LOperand* value() { return inputs_[2]; }
1044
1234
 
1045
- int index() const { return index_; }
1235
+ DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
1236
+ DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
1046
1237
 
1047
1238
  private:
1048
- int index_;
1239
+ String::Encoding encoding_;
1049
1240
  };
1050
1241
 
1051
1242
 
@@ -1055,6 +1246,8 @@ class LThrow: public LTemplateInstruction<0, 1, 0> {
1055
1246
  inputs_[0] = value;
1056
1247
  }
1057
1248
 
1249
+ LOperand* value() { return inputs_[0]; }
1250
+
1058
1251
  DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
1059
1252
  };
1060
1253
 
@@ -1065,6 +1258,8 @@ class LBitNotI: public LTemplateInstruction<1, 1, 0> {
1065
1258
  inputs_[0] = value;
1066
1259
  }
1067
1260
 
1261
+ LOperand* value() { return inputs_[0]; }
1262
+
1068
1263
  DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i")
1069
1264
  };
1070
1265
 
@@ -1076,11 +1271,29 @@ class LAddI: public LTemplateInstruction<1, 2, 0> {
1076
1271
  inputs_[1] = right;
1077
1272
  }
1078
1273
 
1274
+ LOperand* left() { return inputs_[0]; }
1275
+ LOperand* right() { return inputs_[1]; }
1276
+
1079
1277
  DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i")
1080
1278
  DECLARE_HYDROGEN_ACCESSOR(Add)
1081
1279
  };
1082
1280
 
1083
1281
 
1282
+ class LMathMinMax: public LTemplateInstruction<1, 2, 0> {
1283
+ public:
1284
+ LMathMinMax(LOperand* left, LOperand* right) {
1285
+ inputs_[0] = left;
1286
+ inputs_[1] = right;
1287
+ }
1288
+
1289
+ LOperand* left() { return inputs_[0]; }
1290
+ LOperand* right() { return inputs_[1]; }
1291
+
1292
+ DECLARE_CONCRETE_INSTRUCTION(MathMinMax, "min-max")
1293
+ DECLARE_HYDROGEN_ACCESSOR(MathMinMax)
1294
+ };
1295
+
1296
+
1084
1297
  class LPower: public LTemplateInstruction<1, 2, 0> {
1085
1298
  public:
1086
1299
  LPower(LOperand* left, LOperand* right) {
@@ -1088,6 +1301,9 @@ class LPower: public LTemplateInstruction<1, 2, 0> {
1088
1301
  inputs_[1] = right;
1089
1302
  }
1090
1303
 
1304
+ LOperand* left() { return inputs_[0]; }
1305
+ LOperand* right() { return inputs_[1]; }
1306
+
1091
1307
  DECLARE_CONCRETE_INSTRUCTION(Power, "power")
1092
1308
  DECLARE_HYDROGEN_ACCESSOR(Power)
1093
1309
  };
@@ -1099,6 +1315,8 @@ class LRandom: public LTemplateInstruction<1, 1, 0> {
1099
1315
  inputs_[0] = global_object;
1100
1316
  }
1101
1317
 
1318
+ LOperand* global_object() { return inputs_[0]; }
1319
+
1102
1320
  DECLARE_CONCRETE_INSTRUCTION(Random, "random")
1103
1321
  DECLARE_HYDROGEN_ACCESSOR(Random)
1104
1322
  };
@@ -1113,6 +1331,8 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
1113
1331
  }
1114
1332
 
1115
1333
  Token::Value op() const { return op_; }
1334
+ LOperand* left() { return inputs_[0]; }
1335
+ LOperand* right() { return inputs_[1]; }
1116
1336
 
1117
1337
  virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
1118
1338
  virtual void CompileToNative(LCodeGen* generator);
@@ -1131,12 +1351,14 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
1131
1351
  inputs_[1] = right;
1132
1352
  }
1133
1353
 
1354
+ LOperand* left() { return inputs_[0]; }
1355
+ LOperand* right() { return inputs_[1]; }
1356
+ Token::Value op() const { return op_; }
1357
+
1134
1358
  virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
1135
1359
  virtual void CompileToNative(LCodeGen* generator);
1136
1360
  virtual const char* Mnemonic() const;
1137
1361
 
1138
- Token::Value op() const { return op_; }
1139
-
1140
1362
  private:
1141
1363
  Token::Value op_;
1142
1364
  };
@@ -1148,6 +1370,8 @@ class LReturn: public LTemplateInstruction<0, 1, 0> {
1148
1370
  inputs_[0] = value;
1149
1371
  }
1150
1372
 
1373
+ LOperand* value() { return inputs_[0]; }
1374
+
1151
1375
  DECLARE_CONCRETE_INSTRUCTION(Return, "return")
1152
1376
  };
1153
1377
 
@@ -1158,6 +1382,8 @@ class LLoadNamedField: public LTemplateInstruction<1, 1, 0> {
1158
1382
  inputs_[0] = object;
1159
1383
  }
1160
1384
 
1385
+ LOperand* object() { return inputs_[0]; }
1386
+
1161
1387
  DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
1162
1388
  DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
1163
1389
  };
@@ -1169,10 +1395,10 @@ class LLoadNamedFieldPolymorphic: public LTemplateInstruction<1, 1, 0> {
1169
1395
  inputs_[0] = object;
1170
1396
  }
1171
1397
 
1398
+ LOperand* object() { return inputs_[0]; }
1399
+
1172
1400
  DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field-polymorphic")
1173
1401
  DECLARE_HYDROGEN_ACCESSOR(LoadNamedFieldPolymorphic)
1174
-
1175
- LOperand* object() { return inputs_[0]; }
1176
1402
  };
1177
1403
 
1178
1404
 
@@ -1182,10 +1408,11 @@ class LLoadNamedGeneric: public LTemplateInstruction<1, 1, 0> {
1182
1408
  inputs_[0] = object;
1183
1409
  }
1184
1410
 
1411
+ LOperand* object() { return inputs_[0]; }
1412
+
1185
1413
  DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
1186
1414
  DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
1187
1415
 
1188
- LOperand* object() { return inputs_[0]; }
1189
1416
  Handle<Object> name() const { return hydrogen()->name(); }
1190
1417
  };
1191
1418
 
@@ -1196,10 +1423,10 @@ class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 0> {
1196
1423
  inputs_[0] = function;
1197
1424
  }
1198
1425
 
1426
+ LOperand* function() { return inputs_[0]; }
1427
+
1199
1428
  DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
1200
1429
  DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
1201
-
1202
- LOperand* function() { return inputs_[0]; }
1203
1430
  };
1204
1431
 
1205
1432
 
@@ -1209,6 +1436,8 @@ class LLoadElements: public LTemplateInstruction<1, 1, 0> {
1209
1436
  inputs_[0] = object;
1210
1437
  }
1211
1438
 
1439
+ LOperand* object() { return inputs_[0]; }
1440
+
1212
1441
  DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements")
1213
1442
  };
1214
1443
 
@@ -1219,75 +1448,48 @@ class LLoadExternalArrayPointer: public LTemplateInstruction<1, 1, 0> {
1219
1448
  inputs_[0] = object;
1220
1449
  }
1221
1450
 
1451
+ LOperand* object() { return inputs_[0]; }
1452
+
1222
1453
  DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
1223
1454
  "load-external-array-pointer")
1224
1455
  };
1225
1456
 
1226
1457
 
1227
- class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
1458
+ class LLoadKeyed: public LTemplateInstruction<1, 2, 0> {
1228
1459
  public:
1229
- LLoadKeyedFastElement(LOperand* elements, LOperand* key) {
1460
+ LLoadKeyed(LOperand* elements, LOperand* key) {
1230
1461
  inputs_[0] = elements;
1231
1462
  inputs_[1] = key;
1232
1463
  }
1233
1464
 
1234
- DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element")
1235
- DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement)
1236
-
1237
1465
  LOperand* elements() { return inputs_[0]; }
1238
1466
  LOperand* key() { return inputs_[1]; }
1239
- uint32_t additional_index() const { return hydrogen()->index_offset(); }
1240
- };
1241
-
1242
-
1243
- class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
1244
- public:
1245
- LLoadKeyedFastDoubleElement(LOperand* elements, LOperand* key) {
1246
- inputs_[0] = elements;
1247
- inputs_[1] = key;
1467
+ ElementsKind elements_kind() const {
1468
+ return hydrogen()->elements_kind();
1248
1469
  }
1249
-
1250
- DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
1251
- "load-keyed-fast-double-element")
1252
- DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
1253
-
1254
- LOperand* elements() { return inputs_[0]; }
1255
- LOperand* key() { return inputs_[1]; }
1256
- uint32_t additional_index() const { return hydrogen()->index_offset(); }
1257
- };
1258
-
1259
-
1260
- class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
1261
- public:
1262
- LLoadKeyedSpecializedArrayElement(LOperand* external_pointer, LOperand* key) {
1263
- inputs_[0] = external_pointer;
1264
- inputs_[1] = key;
1470
+ bool is_external() const {
1471
+ return hydrogen()->is_external();
1265
1472
  }
1266
1473
 
1267
- DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement,
1268
- "load-keyed-specialized-array-element")
1269
- DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement)
1474
+ DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1475
+ DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1270
1476
 
1271
- LOperand* external_pointer() { return inputs_[0]; }
1272
- LOperand* key() { return inputs_[1]; }
1273
- ElementsKind elements_kind() const {
1274
- return hydrogen()->elements_kind();
1275
- }
1477
+ virtual void PrintDataTo(StringStream* stream);
1276
1478
  uint32_t additional_index() const { return hydrogen()->index_offset(); }
1277
1479
  };
1278
1480
 
1279
1481
 
1280
1482
  class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> {
1281
1483
  public:
1282
- LLoadKeyedGeneric(LOperand* obj, LOperand* key) {
1283
- inputs_[0] = obj;
1484
+ LLoadKeyedGeneric(LOperand* object, LOperand* key) {
1485
+ inputs_[0] = object;
1284
1486
  inputs_[1] = key;
1285
1487
  }
1286
1488
 
1287
- DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
1288
-
1289
1489
  LOperand* object() { return inputs_[0]; }
1290
1490
  LOperand* key() { return inputs_[1]; }
1491
+
1492
+ DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
1291
1493
  };
1292
1494
 
1293
1495
 
@@ -1304,10 +1506,11 @@ class LLoadGlobalGeneric: public LTemplateInstruction<1, 1, 0> {
1304
1506
  inputs_[0] = global_object;
1305
1507
  }
1306
1508
 
1509
+ LOperand* global_object() { return inputs_[0]; }
1510
+
1307
1511
  DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
1308
1512
  DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
1309
1513
 
1310
- LOperand* global_object() { return inputs_[0]; }
1311
1514
  Handle<Object> name() const { return hydrogen()->name(); }
1312
1515
  bool for_typeof() const { return hydrogen()->for_typeof(); }
1313
1516
  };
@@ -1320,10 +1523,11 @@ class LStoreGlobalCell: public LTemplateInstruction<0, 1, 1> {
1320
1523
  temps_[0] = temp;
1321
1524
  }
1322
1525
 
1526
+ LOperand* value() { return inputs_[0]; }
1527
+ LOperand* temp() { return temps_[0]; }
1528
+
1323
1529
  DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell")
1324
1530
  DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell)
1325
-
1326
- LOperand* value() { return inputs_[0]; }
1327
1531
  };
1328
1532
 
1329
1533
 
@@ -1335,12 +1539,13 @@ class LStoreGlobalGeneric: public LTemplateInstruction<0, 2, 0> {
1335
1539
  inputs_[1] = value;
1336
1540
  }
1337
1541
 
1542
+ LOperand* global_object() { return inputs_[0]; }
1543
+ LOperand* value() { return inputs_[1]; }
1544
+
1338
1545
  DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
1339
1546
  DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
1340
1547
 
1341
- LOperand* global_object() { return InputAt(0); }
1342
1548
  Handle<Object> name() const { return hydrogen()->name(); }
1343
- LOperand* value() { return InputAt(1); }
1344
1549
  StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1345
1550
  };
1346
1551
 
@@ -1351,10 +1556,11 @@ class LLoadContextSlot: public LTemplateInstruction<1, 1, 0> {
1351
1556
  inputs_[0] = context;
1352
1557
  }
1353
1558
 
1559
+ LOperand* context() { return inputs_[0]; }
1560
+
1354
1561
  DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
1355
1562
  DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
1356
1563
 
1357
- LOperand* context() { return InputAt(0); }
1358
1564
  int slot_index() { return hydrogen()->slot_index(); }
1359
1565
 
1360
1566
  virtual void PrintDataTo(StringStream* stream);
@@ -1368,11 +1574,12 @@ class LStoreContextSlot: public LTemplateInstruction<0, 2, 0> {
1368
1574
  inputs_[1] = value;
1369
1575
  }
1370
1576
 
1577
+ LOperand* context() { return inputs_[0]; }
1578
+ LOperand* value() { return inputs_[1]; }
1579
+
1371
1580
  DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot")
1372
1581
  DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot)
1373
1582
 
1374
- LOperand* context() { return InputAt(0); }
1375
- LOperand* value() { return InputAt(1); }
1376
1583
  int slot_index() { return hydrogen()->slot_index(); }
1377
1584
 
1378
1585
  virtual void PrintDataTo(StringStream* stream);
@@ -1385,6 +1592,8 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
1385
1592
  inputs_[0] = value;
1386
1593
  }
1387
1594
 
1595
+ LOperand* value() { return inputs_[0]; }
1596
+
1388
1597
  DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument")
1389
1598
  };
1390
1599
 
@@ -1412,6 +1621,7 @@ class LThisFunction: public LTemplateInstruction<1, 0, 0> {
1412
1621
  class LContext: public LTemplateInstruction<1, 0, 0> {
1413
1622
  public:
1414
1623
  DECLARE_CONCRETE_INSTRUCTION(Context, "context")
1624
+ DECLARE_HYDROGEN_ACCESSOR(Context)
1415
1625
  };
1416
1626
 
1417
1627
 
@@ -1421,9 +1631,9 @@ class LOuterContext: public LTemplateInstruction<1, 1, 0> {
1421
1631
  inputs_[0] = context;
1422
1632
  }
1423
1633
 
1424
- DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
1634
+ LOperand* context() { return inputs_[0]; }
1425
1635
 
1426
- LOperand* context() { return InputAt(0); }
1636
+ DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
1427
1637
  };
1428
1638
 
1429
1639
 
@@ -1442,7 +1652,7 @@ class LGlobalObject: public LTemplateInstruction<1, 1, 0> {
1442
1652
 
1443
1653
  DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
1444
1654
 
1445
- LOperand* context() { return InputAt(0); }
1655
+ LOperand* context() { return inputs_[0]; }
1446
1656
  };
1447
1657
 
1448
1658
 
@@ -1452,9 +1662,9 @@ class LGlobalReceiver: public LTemplateInstruction<1, 1, 0> {
1452
1662
  inputs_[0] = global_object;
1453
1663
  }
1454
1664
 
1455
- DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
1665
+ LOperand* global_object() { return inputs_[0]; }
1456
1666
 
1457
- LOperand* global() { return InputAt(0); }
1667
+ DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
1458
1668
  };
1459
1669
 
1460
1670
 
@@ -1476,11 +1686,11 @@ class LInvokeFunction: public LTemplateInstruction<1, 1, 0> {
1476
1686
  inputs_[0] = function;
1477
1687
  }
1478
1688
 
1689
+ LOperand* function() { return inputs_[0]; }
1690
+
1479
1691
  DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
1480
1692
  DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
1481
1693
 
1482
- LOperand* function() { return inputs_[0]; }
1483
-
1484
1694
  virtual void PrintDataTo(StringStream* stream);
1485
1695
 
1486
1696
  int arity() const { return hydrogen()->argument_count() - 1; }
@@ -1494,6 +1704,8 @@ class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
1494
1704
  inputs_[0] = key;
1495
1705
  }
1496
1706
 
1707
+ LOperand* key() { return inputs_[0]; }
1708
+
1497
1709
  DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
1498
1710
  DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
1499
1711
 
@@ -1522,10 +1734,11 @@ class LCallFunction: public LTemplateInstruction<1, 1, 0> {
1522
1734
  inputs_[0] = function;
1523
1735
  }
1524
1736
 
1737
+ LOperand* function() { return inputs_[0]; }
1738
+
1525
1739
  DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
1526
1740
  DECLARE_HYDROGEN_ACCESSOR(CallFunction)
1527
1741
 
1528
- LOperand* function() { return inputs_[0]; }
1529
1742
  int arity() const { return hydrogen()->argument_count() - 1; }
1530
1743
  };
1531
1744
 
@@ -1560,6 +1773,8 @@ class LCallNew: public LTemplateInstruction<1, 1, 0> {
1560
1773
  inputs_[0] = constructor;
1561
1774
  }
1562
1775
 
1776
+ LOperand* constructor() { return inputs_[0]; }
1777
+
1563
1778
  DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
1564
1779
  DECLARE_HYDROGEN_ACCESSOR(CallNew)
1565
1780
 
@@ -1585,41 +1800,78 @@ class LInteger32ToDouble: public LTemplateInstruction<1, 1, 0> {
1585
1800
  inputs_[0] = value;
1586
1801
  }
1587
1802
 
1803
+ LOperand* value() { return inputs_[0]; }
1804
+
1588
1805
  DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
1589
1806
  };
1590
1807
 
1591
1808
 
1809
+ class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> {
1810
+ public:
1811
+ explicit LUint32ToDouble(LOperand* value) {
1812
+ inputs_[0] = value;
1813
+ }
1814
+
1815
+ LOperand* value() { return inputs_[0]; }
1816
+
1817
+ DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
1818
+ };
1819
+
1820
+
1592
1821
  class LNumberTagI: public LTemplateInstruction<1, 1, 0> {
1593
1822
  public:
1594
1823
  explicit LNumberTagI(LOperand* value) {
1595
1824
  inputs_[0] = value;
1596
1825
  }
1597
1826
 
1827
+ LOperand* value() { return inputs_[0]; }
1828
+
1598
1829
  DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i")
1599
1830
  };
1600
1831
 
1601
1832
 
1833
+ class LNumberTagU: public LTemplateInstruction<1, 1, 0> {
1834
+ public:
1835
+ explicit LNumberTagU(LOperand* value) {
1836
+ inputs_[0] = value;
1837
+ }
1838
+
1839
+ LOperand* value() { return inputs_[0]; }
1840
+
1841
+ DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u")
1842
+ };
1843
+
1844
+
1602
1845
  class LNumberTagD: public LTemplateInstruction<1, 1, 2> {
1603
1846
  public:
1604
- LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) {
1847
+ LNumberTagD(LOperand* value, LOperand* temp, LOperand* temp2) {
1605
1848
  inputs_[0] = value;
1606
- temps_[0] = temp1;
1849
+ temps_[0] = temp;
1607
1850
  temps_[1] = temp2;
1608
1851
  }
1609
1852
 
1853
+ LOperand* value() { return inputs_[0]; }
1854
+ LOperand* temp() { return temps_[0]; }
1855
+ LOperand* temp2() { return temps_[1]; }
1856
+
1610
1857
  DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
1858
+ DECLARE_HYDROGEN_ACCESSOR(Change)
1611
1859
  };
1612
1860
 
1613
1861
 
1614
1862
  // Sometimes truncating conversion from a tagged value to an int32.
1615
1863
  class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
1616
1864
  public:
1617
- LDoubleToI(LOperand* value, LOperand* temp1, LOperand* temp2) {
1865
+ LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) {
1618
1866
  inputs_[0] = value;
1619
- temps_[0] = temp1;
1867
+ temps_[0] = temp;
1620
1868
  temps_[1] = temp2;
1621
1869
  }
1622
1870
 
1871
+ LOperand* value() { return inputs_[0]; }
1872
+ LOperand* temp() { return temps_[0]; }
1873
+ LOperand* temp2() { return temps_[1]; }
1874
+
1623
1875
  DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
1624
1876
  DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1625
1877
 
@@ -1631,15 +1883,20 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
1631
1883
  class LTaggedToI: public LTemplateInstruction<1, 1, 3> {
1632
1884
  public:
1633
1885
  LTaggedToI(LOperand* value,
1634
- LOperand* temp1,
1886
+ LOperand* temp,
1635
1887
  LOperand* temp2,
1636
1888
  LOperand* temp3) {
1637
1889
  inputs_[0] = value;
1638
- temps_[0] = temp1;
1890
+ temps_[0] = temp;
1639
1891
  temps_[1] = temp2;
1640
1892
  temps_[2] = temp3;
1641
1893
  }
1642
1894
 
1895
+ LOperand* value() { return inputs_[0]; }
1896
+ LOperand* temp() { return temps_[0]; }
1897
+ LOperand* temp2() { return temps_[1]; }
1898
+ LOperand* temp3() { return temps_[2]; }
1899
+
1643
1900
  DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
1644
1901
  DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1645
1902
 
@@ -1653,6 +1910,8 @@ class LSmiTag: public LTemplateInstruction<1, 1, 0> {
1653
1910
  inputs_[0] = value;
1654
1911
  }
1655
1912
 
1913
+ LOperand* value() { return inputs_[0]; }
1914
+
1656
1915
  DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag")
1657
1916
  };
1658
1917
 
@@ -1663,6 +1922,8 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
1663
1922
  inputs_[0] = value;
1664
1923
  }
1665
1924
 
1925
+ LOperand* value() { return inputs_[0]; }
1926
+
1666
1927
  DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
1667
1928
  DECLARE_HYDROGEN_ACCESSOR(Change)
1668
1929
  };
@@ -1675,10 +1936,11 @@ class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
1675
1936
  inputs_[0] = value;
1676
1937
  }
1677
1938
 
1678
- DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
1679
-
1939
+ LOperand* value() { return inputs_[0]; }
1680
1940
  bool needs_check() const { return needs_check_; }
1681
1941
 
1942
+ DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
1943
+
1682
1944
  private:
1683
1945
  bool needs_check_;
1684
1946
  };
@@ -1686,20 +1948,21 @@ class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
1686
1948
 
1687
1949
  class LStoreNamedField: public LTemplateInstruction<0, 2, 1> {
1688
1950
  public:
1689
- LStoreNamedField(LOperand* obj, LOperand* val, LOperand* temp) {
1690
- inputs_[0] = obj;
1691
- inputs_[1] = val;
1951
+ LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) {
1952
+ inputs_[0] = object;
1953
+ inputs_[1] = value;
1692
1954
  temps_[0] = temp;
1693
1955
  }
1694
1956
 
1957
+ LOperand* object() { return inputs_[0]; }
1958
+ LOperand* value() { return inputs_[1]; }
1959
+ LOperand* temp() { return temps_[0]; }
1960
+
1695
1961
  DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
1696
1962
  DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
1697
1963
 
1698
1964
  virtual void PrintDataTo(StringStream* stream);
1699
1965
 
1700
- LOperand* object() { return inputs_[0]; }
1701
- LOperand* value() { return inputs_[1]; }
1702
-
1703
1966
  Handle<Object> name() const { return hydrogen()->name(); }
1704
1967
  bool is_in_object() { return hydrogen()->is_in_object(); }
1705
1968
  int offset() { return hydrogen()->offset(); }
@@ -1709,109 +1972,67 @@ class LStoreNamedField: public LTemplateInstruction<0, 2, 1> {
1709
1972
 
1710
1973
  class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
1711
1974
  public:
1712
- LStoreNamedGeneric(LOperand* obj, LOperand* val) {
1713
- inputs_[0] = obj;
1714
- inputs_[1] = val;
1975
+ LStoreNamedGeneric(LOperand* object, LOperand* value) {
1976
+ inputs_[0] = object;
1977
+ inputs_[1] = value;
1715
1978
  }
1716
1979
 
1980
+ LOperand* object() { return inputs_[0]; }
1981
+ LOperand* value() { return inputs_[1]; }
1982
+
1717
1983
  DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
1718
1984
  DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
1719
1985
 
1720
1986
  virtual void PrintDataTo(StringStream* stream);
1721
1987
 
1722
- LOperand* object() { return inputs_[0]; }
1723
- LOperand* value() { return inputs_[1]; }
1724
1988
  Handle<Object> name() const { return hydrogen()->name(); }
1725
1989
  StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1726
1990
  };
1727
1991
 
1728
1992
 
1729
- class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
1993
+ class LStoreKeyed: public LTemplateInstruction<0, 3, 0> {
1730
1994
  public:
1731
- LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) {
1732
- inputs_[0] = obj;
1995
+ LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) {
1996
+ inputs_[0] = object;
1733
1997
  inputs_[1] = key;
1734
- inputs_[2] = val;
1998
+ inputs_[2] = value;
1735
1999
  }
1736
2000
 
1737
- DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement,
1738
- "store-keyed-fast-element")
1739
- DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
1740
-
1741
- virtual void PrintDataTo(StringStream* stream);
1742
-
1743
- LOperand* object() { return inputs_[0]; }
2001
+ bool is_external() const { return hydrogen()->is_external(); }
2002
+ LOperand* elements() { return inputs_[0]; }
1744
2003
  LOperand* key() { return inputs_[1]; }
1745
2004
  LOperand* value() { return inputs_[2]; }
1746
- uint32_t additional_index() const { return hydrogen()->index_offset(); }
1747
- };
1748
-
1749
-
1750
- class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
1751
- public:
1752
- LStoreKeyedFastDoubleElement(LOperand* elements,
1753
- LOperand* key,
1754
- LOperand* val) {
1755
- inputs_[0] = elements;
1756
- inputs_[1] = key;
1757
- inputs_[2] = val;
2005
+ ElementsKind elements_kind() const {
2006
+ return hydrogen()->elements_kind();
1758
2007
  }
1759
2008
 
1760
- DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
1761
- "store-keyed-fast-double-element")
1762
- DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
2009
+ DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2010
+ DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
1763
2011
 
1764
2012
  virtual void PrintDataTo(StringStream* stream);
1765
-
1766
- LOperand* elements() { return inputs_[0]; }
1767
- LOperand* key() { return inputs_[1]; }
1768
- LOperand* value() { return inputs_[2]; }
1769
- uint32_t additional_index() const { return hydrogen()->index_offset(); }
1770
-
1771
2013
  bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
2014
+ uint32_t additional_index() const { return hydrogen()->index_offset(); }
1772
2015
  };
1773
2016
 
1774
2017
 
1775
2018
  class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
1776
2019
  public:
1777
- LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) {
2020
+ LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* value) {
1778
2021
  inputs_[0] = obj;
1779
2022
  inputs_[1] = key;
1780
- inputs_[2] = val;
2023
+ inputs_[2] = value;
1781
2024
  }
1782
2025
 
1783
- DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
1784
- DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
1785
-
1786
- virtual void PrintDataTo(StringStream* stream);
1787
-
1788
2026
  LOperand* object() { return inputs_[0]; }
1789
2027
  LOperand* key() { return inputs_[1]; }
1790
2028
  LOperand* value() { return inputs_[2]; }
1791
- StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1792
- };
1793
2029
 
1794
- class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
1795
- public:
1796
- LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
1797
- LOperand* key,
1798
- LOperand* val) {
1799
- inputs_[0] = external_pointer;
1800
- inputs_[1] = key;
1801
- inputs_[2] = val;
1802
- }
2030
+ DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
2031
+ DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
1803
2032
 
1804
- DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement,
1805
- "store-keyed-specialized-array-element")
1806
- DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement)
2033
+ virtual void PrintDataTo(StringStream* stream);
1807
2034
 
1808
- LOperand* external_pointer() { return inputs_[0]; }
1809
- LOperand* key() { return inputs_[1]; }
1810
- LOperand* value() { return inputs_[2]; }
1811
- ElementsKind elements_kind() const {
1812
- return hydrogen()->elements_kind();
1813
- }
1814
- uint32_t additional_index() const { return hydrogen()->index_offset(); }
2035
+ StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1815
2036
  };
1816
2037
 
1817
2038
 
@@ -1819,23 +2040,42 @@ class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> {
1819
2040
  public:
1820
2041
  LTransitionElementsKind(LOperand* object,
1821
2042
  LOperand* new_map_temp,
1822
- LOperand* temp_reg) {
2043
+ LOperand* fixed_object_temp) {
1823
2044
  inputs_[0] = object;
1824
2045
  temps_[0] = new_map_temp;
1825
- temps_[1] = temp_reg;
2046
+ temps_[1] = fixed_object_temp;
1826
2047
  }
1827
2048
 
2049
+ LOperand* object() { return inputs_[0]; }
2050
+ LOperand* new_map_temp() { return temps_[0]; }
2051
+ LOperand* temp() { return temps_[1]; }
2052
+
1828
2053
  DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
1829
2054
  "transition-elements-kind")
1830
2055
  DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
1831
2056
 
1832
2057
  virtual void PrintDataTo(StringStream* stream);
1833
2058
 
1834
- LOperand* object() { return inputs_[0]; }
1835
- LOperand* new_map_reg() { return temps_[0]; }
1836
- LOperand* temp_reg() { return temps_[1]; }
1837
2059
  Handle<Map> original_map() { return hydrogen()->original_map(); }
1838
2060
  Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
2061
+ ElementsKind from_kind() { return hydrogen()->from_kind(); }
2062
+ ElementsKind to_kind() { return hydrogen()->to_kind(); }
2063
+ };
2064
+
2065
+
2066
+ class LTrapAllocationMemento : public LTemplateInstruction<0, 1, 1> {
2067
+ public:
2068
+ LTrapAllocationMemento(LOperand* object,
2069
+ LOperand* temp) {
2070
+ inputs_[0] = object;
2071
+ temps_[0] = temp;
2072
+ }
2073
+
2074
+ LOperand* object() { return inputs_[0]; }
2075
+ LOperand* temp() { return temps_[0]; }
2076
+
2077
+ DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento,
2078
+ "trap-allocation-memento")
1839
2079
  };
1840
2080
 
1841
2081
 
@@ -1846,11 +2086,11 @@ class LStringAdd: public LTemplateInstruction<1, 2, 0> {
1846
2086
  inputs_[1] = right;
1847
2087
  }
1848
2088
 
1849
- DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
1850
- DECLARE_HYDROGEN_ACCESSOR(StringAdd)
1851
-
1852
2089
  LOperand* left() { return inputs_[0]; }
1853
2090
  LOperand* right() { return inputs_[1]; }
2091
+
2092
+ DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
2093
+ DECLARE_HYDROGEN_ACCESSOR(StringAdd)
1854
2094
  };
1855
2095
 
1856
2096
 
@@ -1862,11 +2102,11 @@ class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
1862
2102
  inputs_[1] = index;
1863
2103
  }
1864
2104
 
1865
- DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
1866
- DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
1867
-
1868
2105
  LOperand* string() { return inputs_[0]; }
1869
2106
  LOperand* index() { return inputs_[1]; }
2107
+
2108
+ DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
2109
+ DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
1870
2110
  };
1871
2111
 
1872
2112
 
@@ -1876,10 +2116,10 @@ class LStringCharFromCode: public LTemplateInstruction<1, 1, 0> {
1876
2116
  inputs_[0] = char_code;
1877
2117
  }
1878
2118
 
2119
+ LOperand* char_code() { return inputs_[0]; }
2120
+
1879
2121
  DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
1880
2122
  DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
1881
-
1882
- LOperand* char_code() { return inputs_[0]; }
1883
2123
  };
1884
2124
 
1885
2125
 
@@ -1889,10 +2129,10 @@ class LStringLength: public LTemplateInstruction<1, 1, 0> {
1889
2129
  inputs_[0] = string;
1890
2130
  }
1891
2131
 
2132
+ LOperand* string() { return inputs_[0]; }
2133
+
1892
2134
  DECLARE_CONCRETE_INSTRUCTION(StringLength, "string-length")
1893
2135
  DECLARE_HYDROGEN_ACCESSOR(StringLength)
1894
-
1895
- LOperand* string() { return inputs_[0]; }
1896
2136
  };
1897
2137
 
1898
2138
 
@@ -1902,7 +2142,7 @@ class LCheckFunction: public LTemplateInstruction<0, 1, 0> {
1902
2142
  inputs_[0] = value;
1903
2143
  }
1904
2144
 
1905
- LOperand* value() { return InputAt(0); }
2145
+ LOperand* value() { return inputs_[0]; }
1906
2146
 
1907
2147
  DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function")
1908
2148
  DECLARE_HYDROGEN_ACCESSOR(CheckFunction)
@@ -1915,6 +2155,8 @@ class LCheckInstanceType: public LTemplateInstruction<0, 1, 0> {
1915
2155
  inputs_[0] = value;
1916
2156
  }
1917
2157
 
2158
+ LOperand* value() { return inputs_[0]; }
2159
+
1918
2160
  DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
1919
2161
  DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
1920
2162
  };
@@ -1926,23 +2168,30 @@ class LCheckMaps: public LTemplateInstruction<0, 1, 0> {
1926
2168
  inputs_[0] = value;
1927
2169
  }
1928
2170
 
2171
+ LOperand* value() { return inputs_[0]; }
2172
+
1929
2173
  DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps")
1930
2174
  DECLARE_HYDROGEN_ACCESSOR(CheckMaps)
1931
2175
  };
1932
2176
 
1933
2177
 
1934
- class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 2> {
2178
+ class LCheckPrototypeMaps: public LTemplateInstruction<1, 0, 2> {
1935
2179
  public:
1936
- LCheckPrototypeMaps(LOperand* temp1, LOperand* temp2) {
1937
- temps_[0] = temp1;
2180
+ LCheckPrototypeMaps(LOperand* temp, LOperand* temp2) {
2181
+ temps_[0] = temp;
1938
2182
  temps_[1] = temp2;
1939
2183
  }
1940
2184
 
2185
+ LOperand* temp() { return temps_[0]; }
2186
+ LOperand* temp2() { return temps_[1]; }
2187
+
1941
2188
  DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
1942
2189
  DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
1943
2190
 
1944
- Handle<JSObject> prototype() const { return hydrogen()->prototype(); }
1945
- Handle<JSObject> holder() const { return hydrogen()->holder(); }
2191
+ ZoneList<Handle<JSObject> >* prototypes() const {
2192
+ return hydrogen()->prototypes();
2193
+ }
2194
+ ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); }
1946
2195
  };
1947
2196
 
1948
2197
 
@@ -1952,6 +2201,8 @@ class LCheckSmi: public LTemplateInstruction<0, 1, 0> {
1952
2201
  inputs_[0] = value;
1953
2202
  }
1954
2203
 
2204
+ LOperand* value() { return inputs_[0]; }
2205
+
1955
2206
  DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
1956
2207
  };
1957
2208
 
@@ -1962,18 +2213,21 @@ class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> {
1962
2213
  inputs_[0] = value;
1963
2214
  }
1964
2215
 
2216
+ LOperand* value() { return inputs_[0]; }
2217
+
1965
2218
  DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi")
1966
2219
  };
1967
2220
 
1968
2221
 
1969
2222
  class LClampDToUint8: public LTemplateInstruction<1, 1, 1> {
1970
2223
  public:
1971
- LClampDToUint8(LOperand* value, LOperand* temp) {
1972
- inputs_[0] = value;
2224
+ LClampDToUint8(LOperand* unclamped, LOperand* temp) {
2225
+ inputs_[0] = unclamped;
1973
2226
  temps_[0] = temp;
1974
2227
  }
1975
2228
 
1976
2229
  LOperand* unclamped() { return inputs_[0]; }
2230
+ LOperand* temp() { return temps_[0]; }
1977
2231
 
1978
2232
  DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8")
1979
2233
  };
@@ -1981,8 +2235,8 @@ class LClampDToUint8: public LTemplateInstruction<1, 1, 1> {
1981
2235
 
1982
2236
  class LClampIToUint8: public LTemplateInstruction<1, 1, 0> {
1983
2237
  public:
1984
- explicit LClampIToUint8(LOperand* value) {
1985
- inputs_[0] = value;
2238
+ explicit LClampIToUint8(LOperand* unclamped) {
2239
+ inputs_[0] = unclamped;
1986
2240
  }
1987
2241
 
1988
2242
  LOperand* unclamped() { return inputs_[0]; }
@@ -1993,29 +2247,50 @@ class LClampIToUint8: public LTemplateInstruction<1, 1, 0> {
1993
2247
 
1994
2248
  class LClampTToUint8: public LTemplateInstruction<1, 1, 1> {
1995
2249
  public:
1996
- LClampTToUint8(LOperand* value, LOperand* temp) {
1997
- inputs_[0] = value;
2250
+ LClampTToUint8(LOperand* unclamped, LOperand* temp) {
2251
+ inputs_[0] = unclamped;
1998
2252
  temps_[0] = temp;
1999
2253
  }
2000
2254
 
2001
2255
  LOperand* unclamped() { return inputs_[0]; }
2256
+ LOperand* temp() { return temps_[0]; }
2002
2257
 
2003
2258
  DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8")
2004
2259
  };
2005
2260
 
2006
2261
 
2007
- class LAllocateObject: public LTemplateInstruction<1, 0, 2> {
2262
+ class LAllocateObject: public LTemplateInstruction<1, 1, 2> {
2008
2263
  public:
2009
- LAllocateObject(LOperand* temp1, LOperand* temp2) {
2010
- temps_[0] = temp1;
2264
+ LAllocateObject(LOperand* temp, LOperand* temp2) {
2265
+ temps_[0] = temp;
2011
2266
  temps_[1] = temp2;
2012
2267
  }
2013
2268
 
2269
+ LOperand* temp() { return temps_[0]; }
2270
+ LOperand* temp2() { return temps_[1]; }
2271
+
2014
2272
  DECLARE_CONCRETE_INSTRUCTION(AllocateObject, "allocate-object")
2015
2273
  DECLARE_HYDROGEN_ACCESSOR(AllocateObject)
2016
2274
  };
2017
2275
 
2018
2276
 
2277
+ class LAllocate: public LTemplateInstruction<1, 2, 2> {
2278
+ public:
2279
+ LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) {
2280
+ inputs_[1] = size;
2281
+ temps_[0] = temp1;
2282
+ temps_[1] = temp2;
2283
+ }
2284
+
2285
+ LOperand* size() { return inputs_[1]; }
2286
+ LOperand* temp1() { return temps_[0]; }
2287
+ LOperand* temp2() { return temps_[1]; }
2288
+
2289
+ DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate")
2290
+ DECLARE_HYDROGEN_ACCESSOR(Allocate)
2291
+ };
2292
+
2293
+
2019
2294
  class LFastLiteral: public LTemplateInstruction<1, 0, 0> {
2020
2295
  public:
2021
2296
  DECLARE_CONCRETE_INSTRUCTION(FastLiteral, "fast-literal")
@@ -2059,6 +2334,8 @@ class LToFastProperties: public LTemplateInstruction<1, 1, 0> {
2059
2334
  inputs_[0] = value;
2060
2335
  }
2061
2336
 
2337
+ LOperand* value() { return inputs_[0]; }
2338
+
2062
2339
  DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties")
2063
2340
  DECLARE_HYDROGEN_ACCESSOR(ToFastProperties)
2064
2341
  };
@@ -2070,6 +2347,8 @@ class LTypeof: public LTemplateInstruction<1, 1, 0> {
2070
2347
  inputs_[0] = value;
2071
2348
  }
2072
2349
 
2350
+ LOperand* value() { return inputs_[0]; }
2351
+
2073
2352
  DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
2074
2353
  };
2075
2354
 
@@ -2080,6 +2359,8 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2080
2359
  inputs_[0] = value;
2081
2360
  }
2082
2361
 
2362
+ LOperand* value() { return inputs_[0]; }
2363
+
2083
2364
  DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
2084
2365
  DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
2085
2366
 
@@ -2095,6 +2376,8 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
2095
2376
  temps_[0] = temp;
2096
2377
  }
2097
2378
 
2379
+ LOperand* temp() { return temps_[0]; }
2380
+
2098
2381
  DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
2099
2382
  "is-construct-call-and-branch")
2100
2383
  };
@@ -2102,15 +2385,15 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
2102
2385
 
2103
2386
  class LDeleteProperty: public LTemplateInstruction<1, 2, 0> {
2104
2387
  public:
2105
- LDeleteProperty(LOperand* obj, LOperand* key) {
2106
- inputs_[0] = obj;
2388
+ LDeleteProperty(LOperand* object, LOperand* key) {
2389
+ inputs_[0] = object;
2107
2390
  inputs_[1] = key;
2108
2391
  }
2109
2392
 
2110
- DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
2111
-
2112
2393
  LOperand* object() { return inputs_[0]; }
2113
2394
  LOperand* key() { return inputs_[1]; }
2395
+
2396
+ DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
2114
2397
  };
2115
2398
 
2116
2399
 
@@ -2132,8 +2415,9 @@ class LOsrEntry: public LTemplateInstruction<0, 0, 0> {
2132
2415
  // slot, i.e., that must also be restored to the spill slot on OSR entry.
2133
2416
  // NULL if the register has no assigned spill slot. Indexed by allocation
2134
2417
  // index.
2135
- LOperand* register_spills_[Register::kNumAllocatableRegisters];
2136
- LOperand* double_register_spills_[DoubleRegister::kNumAllocatableRegisters];
2418
+ LOperand* register_spills_[Register::kMaxNumAllocatableRegisters];
2419
+ LOperand* double_register_spills_[
2420
+ DoubleRegister::kMaxNumAllocatableRegisters];
2137
2421
  };
2138
2422
 
2139
2423
 
@@ -2220,63 +2504,13 @@ class LLoadFieldByIndex: public LTemplateInstruction<1, 2, 0> {
2220
2504
 
2221
2505
 
2222
2506
  class LChunkBuilder;
2223
- class LChunk: public ZoneObject {
2507
+ class LPlatformChunk: public LChunk {
2224
2508
  public:
2225
- explicit LChunk(CompilationInfo* info, HGraph* graph);
2226
-
2227
- void AddInstruction(LInstruction* instruction, HBasicBlock* block);
2228
- LConstantOperand* DefineConstantOperand(HConstant* constant);
2229
- Handle<Object> LookupLiteral(LConstantOperand* operand) const;
2230
- Representation LookupLiteralRepresentation(LConstantOperand* operand) const;
2509
+ LPlatformChunk(CompilationInfo* info, HGraph* graph)
2510
+ : LChunk(info, graph) { }
2231
2511
 
2232
2512
  int GetNextSpillIndex(bool is_double);
2233
2513
  LOperand* GetNextSpillSlot(bool is_double);
2234
-
2235
- int ParameterAt(int index);
2236
- int GetParameterStackSlot(int index) const;
2237
- int spill_slot_count() const { return spill_slot_count_; }
2238
- CompilationInfo* info() const { return info_; }
2239
- HGraph* graph() const { return graph_; }
2240
- const ZoneList<LInstruction*>* instructions() const { return &instructions_; }
2241
- void AddGapMove(int index, LOperand* from, LOperand* to);
2242
- LGap* GetGapAt(int index) const;
2243
- bool IsGapAt(int index) const;
2244
- int NearestGapPos(int index) const;
2245
- void MarkEmptyBlocks();
2246
- const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; }
2247
- LLabel* GetLabel(int block_id) const {
2248
- HBasicBlock* block = graph_->blocks()->at(block_id);
2249
- int first_instruction = block->first_instruction_index();
2250
- return LLabel::cast(instructions_[first_instruction]);
2251
- }
2252
- int LookupDestination(int block_id) const {
2253
- LLabel* cur = GetLabel(block_id);
2254
- while (cur->replacement() != NULL) {
2255
- cur = cur->replacement();
2256
- }
2257
- return cur->block_id();
2258
- }
2259
- Label* GetAssemblyLabel(int block_id) const {
2260
- LLabel* label = GetLabel(block_id);
2261
- ASSERT(!label->HasReplacement());
2262
- return label->label();
2263
- }
2264
-
2265
- const ZoneList<Handle<JSFunction> >* inlined_closures() const {
2266
- return &inlined_closures_;
2267
- }
2268
-
2269
- void AddInlinedClosure(Handle<JSFunction> closure) {
2270
- inlined_closures_.Add(closure);
2271
- }
2272
-
2273
- private:
2274
- int spill_slot_count_;
2275
- CompilationInfo* info_;
2276
- HGraph* const graph_;
2277
- ZoneList<LInstruction*> instructions_;
2278
- ZoneList<LPointerMap*> pointer_maps_;
2279
- ZoneList<Handle<JSFunction> > inlined_closures_;
2280
2514
  };
2281
2515
 
2282
2516
 
@@ -2286,7 +2520,7 @@ class LChunkBuilder BASE_EMBEDDED {
2286
2520
  : chunk_(NULL),
2287
2521
  info_(info),
2288
2522
  graph_(graph),
2289
- zone_(graph->isolate()->zone()),
2523
+ zone_(graph->zone()),
2290
2524
  status_(UNUSED),
2291
2525
  current_instruction_(NULL),
2292
2526
  current_block_(NULL),
@@ -2295,16 +2529,19 @@ class LChunkBuilder BASE_EMBEDDED {
2295
2529
  allocator_(allocator),
2296
2530
  position_(RelocInfo::kNoPosition),
2297
2531
  instruction_pending_deoptimization_environment_(NULL),
2298
- pending_deoptimization_ast_id_(AstNode::kNoNumber) { }
2532
+ pending_deoptimization_ast_id_(BailoutId::None()) { }
2299
2533
 
2300
2534
  // Build the sequence for the graph.
2301
- LChunk* Build();
2535
+ LPlatformChunk* Build();
2302
2536
 
2303
2537
  // Declare methods that deal with the individual node types.
2304
2538
  #define DECLARE_DO(type) LInstruction* Do##type(H##type* node);
2305
2539
  HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO)
2306
2540
  #undef DECLARE_DO
2307
2541
 
2542
+ LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend);
2543
+ LInstruction* DoRSub(HSub* instr);
2544
+
2308
2545
  static bool HasMagicNumberForDivisor(int32_t divisor);
2309
2546
  static HValue* SimplifiedDividendForMathFloorOfDiv(HValue* val);
2310
2547
  static HValue* SimplifiedDivisorForMathFloorOfDiv(HValue* val);
@@ -2317,7 +2554,7 @@ class LChunkBuilder BASE_EMBEDDED {
2317
2554
  ABORTED
2318
2555
  };
2319
2556
 
2320
- LChunk* chunk() const { return chunk_; }
2557
+ LPlatformChunk* chunk() const { return chunk_; }
2321
2558
  CompilationInfo* info() const { return info_; }
2322
2559
  HGraph* graph() const { return graph_; }
2323
2560
  Zone* zone() const { return zone_; }
@@ -2327,7 +2564,7 @@ class LChunkBuilder BASE_EMBEDDED {
2327
2564
  bool is_done() const { return status_ == DONE; }
2328
2565
  bool is_aborted() const { return status_ == ABORTED; }
2329
2566
 
2330
- void Abort(const char* format, ...);
2567
+ void Abort(const char* reason);
2331
2568
 
2332
2569
  // Methods for getting operands for Use / Define / Temp.
2333
2570
  LUnallocated* ToUnallocated(Register reg);
@@ -2417,7 +2654,7 @@ class LChunkBuilder BASE_EMBEDDED {
2417
2654
  LInstruction* DoArithmeticT(Token::Value op,
2418
2655
  HArithmeticBinaryOperation* instr);
2419
2656
 
2420
- LChunk* chunk_;
2657
+ LPlatformChunk* chunk_;
2421
2658
  CompilationInfo* info_;
2422
2659
  HGraph* const graph_;
2423
2660
  Zone* zone_;
@@ -2429,7 +2666,7 @@ class LChunkBuilder BASE_EMBEDDED {
2429
2666
  LAllocator* allocator_;
2430
2667
  int position_;
2431
2668
  LInstruction* instruction_pending_deoptimization_environment_;
2432
- int pending_deoptimization_ast_id_;
2669
+ BailoutId pending_deoptimization_ast_id_;
2433
2670
 
2434
2671
  DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2435
2672
  };