libv8 3.3.10.4 → 3.5.10.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. data/lib/libv8/scons/CHANGES.txt +24 -231
  2. data/lib/libv8/scons/LICENSE.txt +1 -1
  3. data/lib/libv8/scons/MANIFEST +0 -1
  4. data/lib/libv8/scons/PKG-INFO +1 -1
  5. data/lib/libv8/scons/README.txt +9 -9
  6. data/lib/libv8/scons/RELEASE.txt +75 -77
  7. data/lib/libv8/scons/engine/SCons/Action.py +6 -22
  8. data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
  9. data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
  10. data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
  11. data/lib/libv8/scons/engine/SCons/Defaults.py +10 -24
  12. data/lib/libv8/scons/engine/SCons/Environment.py +19 -118
  13. data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
  14. data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
  15. data/lib/libv8/scons/engine/SCons/Job.py +2 -2
  16. data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
  17. data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
  18. data/lib/libv8/scons/engine/SCons/Node/FS.py +121 -281
  19. data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
  20. data/lib/libv8/scons/engine/SCons/Node/__init__.py +5 -6
  21. data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
  22. data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
  23. data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
  24. data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
  25. data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
  26. data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
  27. data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
  28. data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
  29. data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
  30. data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
  31. data/lib/libv8/scons/engine/SCons/Platform/darwin.py +3 -27
  32. data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
  33. data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
  34. data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
  35. data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
  36. data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
  37. data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
  38. data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
  39. data/lib/libv8/scons/engine/SCons/SConsign.py +3 -9
  40. data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
  41. data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
  42. data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
  43. data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
  44. data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
  45. data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +2 -5
  46. data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
  47. data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
  48. data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
  49. data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
  50. data/lib/libv8/scons/engine/SCons/Script/Main.py +11 -82
  51. data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
  52. data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
  53. data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
  54. data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
  55. data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
  56. data/lib/libv8/scons/engine/SCons/Taskmaster.py +2 -10
  57. data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
  58. data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
  59. data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
  60. data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +2 -19
  61. data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
  62. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
  63. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
  64. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
  65. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
  66. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
  67. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +6 -9
  68. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +2 -29
  69. data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
  70. data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
  71. data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
  72. data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
  73. data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
  74. data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
  75. data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
  76. data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
  77. data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
  78. data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
  79. data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
  80. data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
  81. data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
  82. data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
  83. data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
  84. data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
  85. data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
  86. data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
  87. data/lib/libv8/scons/engine/SCons/Tool/dmd.py +7 -24
  88. data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
  89. data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +2 -3
  90. data/lib/libv8/scons/engine/SCons/Tool/dvips.py +2 -3
  91. data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
  92. data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
  93. data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
  94. data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
  95. data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
  96. data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
  97. data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
  98. data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
  99. data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
  100. data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
  101. data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +3 -2
  102. data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
  103. data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
  104. data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
  105. data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
  106. data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
  107. data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
  108. data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
  109. data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
  110. data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
  111. data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
  112. data/lib/libv8/scons/engine/SCons/Tool/install.py +3 -57
  113. data/lib/libv8/scons/engine/SCons/Tool/intelc.py +25 -65
  114. data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
  115. data/lib/libv8/scons/engine/SCons/Tool/jar.py +3 -9
  116. data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
  117. data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
  118. data/lib/libv8/scons/engine/SCons/Tool/latex.py +2 -3
  119. data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
  120. data/lib/libv8/scons/engine/SCons/Tool/link.py +5 -6
  121. data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
  122. data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
  123. data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
  124. data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
  125. data/lib/libv8/scons/engine/SCons/Tool/mingw.py +10 -31
  126. data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
  127. data/lib/libv8/scons/engine/SCons/Tool/mslink.py +9 -61
  128. data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
  129. data/lib/libv8/scons/engine/SCons/Tool/msvc.py +11 -21
  130. data/lib/libv8/scons/engine/SCons/Tool/msvs.py +59 -477
  131. data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
  132. data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
  133. data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
  134. data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
  135. data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
  136. data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
  137. data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
  138. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
  139. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
  140. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
  141. data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
  142. data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
  143. data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
  144. data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
  145. data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +2 -3
  146. data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +2 -3
  147. data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
  148. data/lib/libv8/scons/engine/SCons/Tool/rmic.py +3 -9
  149. data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
  150. data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
  151. data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
  152. data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
  153. data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
  154. data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +3 -2
  155. data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
  156. data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
  157. data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
  158. data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
  159. data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
  160. data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
  161. data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +3 -2
  162. data/lib/libv8/scons/engine/SCons/Tool/swig.py +5 -6
  163. data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
  164. data/lib/libv8/scons/engine/SCons/Tool/tex.py +43 -96
  165. data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
  166. data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
  167. data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
  168. data/lib/libv8/scons/engine/SCons/Tool/yacc.py +2 -12
  169. data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
  170. data/lib/libv8/scons/engine/SCons/Util.py +3 -3
  171. data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
  172. data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
  173. data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
  174. data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
  175. data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
  176. data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
  177. data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
  178. data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
  179. data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
  180. data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
  181. data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
  182. data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
  183. data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
  184. data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
  185. data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
  186. data/lib/libv8/scons/engine/SCons/dblite.py +1 -4
  187. data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
  188. data/lib/libv8/scons/scons-time.1 +3 -3
  189. data/lib/libv8/scons/scons.1 +1164 -1170
  190. data/lib/libv8/scons/sconsign.1 +3 -3
  191. data/lib/libv8/scons/script/scons +22 -22
  192. data/lib/libv8/scons/script/scons-time +2 -2
  193. data/lib/libv8/scons/script/scons.bat +4 -7
  194. data/lib/libv8/scons/script/sconsign +20 -21
  195. data/lib/libv8/scons/setup.cfg +1 -0
  196. data/lib/libv8/scons/setup.py +40 -38
  197. data/lib/libv8/v8/.gitignore +1 -1
  198. data/lib/libv8/v8/AUTHORS +2 -0
  199. data/lib/libv8/v8/ChangeLog +387 -0
  200. data/lib/libv8/v8/Makefile +171 -0
  201. data/lib/libv8/v8/SConstruct +124 -51
  202. data/lib/libv8/v8/build/README.txt +31 -14
  203. data/lib/libv8/v8/build/all.gyp +11 -4
  204. data/lib/libv8/v8/build/armu.gypi +6 -2
  205. data/lib/libv8/v8/build/common.gypi +240 -94
  206. data/lib/libv8/v8/build/gyp_v8 +32 -4
  207. data/lib/libv8/v8/build/standalone.gypi +200 -0
  208. data/lib/libv8/v8/include/v8-debug.h +0 -0
  209. data/lib/libv8/v8/include/v8-profiler.h +8 -11
  210. data/lib/libv8/v8/include/v8.h +191 -108
  211. data/lib/libv8/v8/preparser/SConscript +2 -2
  212. data/lib/libv8/v8/preparser/preparser-process.cc +3 -3
  213. data/lib/libv8/v8/preparser/preparser.gyp +42 -0
  214. data/lib/libv8/v8/src/SConscript +33 -8
  215. data/lib/libv8/v8/src/accessors.cc +77 -43
  216. data/lib/libv8/v8/src/api.cc +393 -191
  217. data/lib/libv8/v8/src/api.h +4 -8
  218. data/lib/libv8/v8/src/apinatives.js +15 -3
  219. data/lib/libv8/v8/src/arguments.h +8 -0
  220. data/lib/libv8/v8/src/arm/assembler-arm.cc +120 -120
  221. data/lib/libv8/v8/src/arm/assembler-arm.h +92 -43
  222. data/lib/libv8/v8/src/arm/builtins-arm.cc +32 -39
  223. data/lib/libv8/v8/src/arm/code-stubs-arm.cc +572 -351
  224. data/lib/libv8/v8/src/arm/code-stubs-arm.h +8 -77
  225. data/lib/libv8/v8/src/arm/codegen-arm.h +0 -2
  226. data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +50 -30
  227. data/lib/libv8/v8/src/arm/disasm-arm.cc +1 -1
  228. data/lib/libv8/v8/src/arm/frames-arm.h +9 -5
  229. data/lib/libv8/v8/src/arm/full-codegen-arm.cc +331 -432
  230. data/lib/libv8/v8/src/arm/ic-arm.cc +192 -124
  231. data/lib/libv8/v8/src/arm/lithium-arm.cc +216 -232
  232. data/lib/libv8/v8/src/arm/lithium-arm.h +106 -259
  233. data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +633 -642
  234. data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +4 -4
  235. data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +1 -3
  236. data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +260 -185
  237. data/lib/libv8/v8/src/arm/macro-assembler-arm.h +45 -25
  238. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +25 -13
  239. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +3 -0
  240. data/lib/libv8/v8/src/arm/stub-cache-arm.cc +413 -226
  241. data/lib/libv8/v8/src/array.js +38 -18
  242. data/lib/libv8/v8/src/assembler.cc +12 -5
  243. data/lib/libv8/v8/src/assembler.h +15 -9
  244. data/lib/libv8/v8/src/ast-inl.h +34 -25
  245. data/lib/libv8/v8/src/ast.cc +141 -72
  246. data/lib/libv8/v8/src/ast.h +255 -181
  247. data/lib/libv8/v8/src/bignum.cc +3 -4
  248. data/lib/libv8/v8/src/bootstrapper.cc +55 -11
  249. data/lib/libv8/v8/src/bootstrapper.h +3 -2
  250. data/lib/libv8/v8/src/builtins.cc +8 -2
  251. data/lib/libv8/v8/src/builtins.h +4 -0
  252. data/lib/libv8/v8/src/cached-powers.cc +8 -4
  253. data/lib/libv8/v8/src/checks.h +3 -3
  254. data/lib/libv8/v8/src/code-stubs.cc +173 -28
  255. data/lib/libv8/v8/src/code-stubs.h +104 -148
  256. data/lib/libv8/v8/src/codegen.cc +8 -8
  257. data/lib/libv8/v8/src/compilation-cache.cc +2 -47
  258. data/lib/libv8/v8/src/compilation-cache.h +0 -10
  259. data/lib/libv8/v8/src/compiler.cc +27 -16
  260. data/lib/libv8/v8/src/compiler.h +13 -18
  261. data/lib/libv8/v8/src/contexts.cc +107 -72
  262. data/lib/libv8/v8/src/contexts.h +70 -34
  263. data/lib/libv8/v8/src/conversions-inl.h +572 -14
  264. data/lib/libv8/v8/src/conversions.cc +9 -707
  265. data/lib/libv8/v8/src/conversions.h +23 -12
  266. data/lib/libv8/v8/src/cpu-profiler-inl.h +2 -19
  267. data/lib/libv8/v8/src/cpu-profiler.cc +4 -21
  268. data/lib/libv8/v8/src/cpu-profiler.h +8 -17
  269. data/lib/libv8/v8/src/d8-debug.cc +5 -3
  270. data/lib/libv8/v8/src/d8-debug.h +6 -7
  271. data/lib/libv8/v8/src/d8-posix.cc +1 -10
  272. data/lib/libv8/v8/src/d8.cc +721 -219
  273. data/lib/libv8/v8/src/d8.gyp +37 -12
  274. data/lib/libv8/v8/src/d8.h +141 -19
  275. data/lib/libv8/v8/src/d8.js +17 -8
  276. data/lib/libv8/v8/src/date.js +16 -5
  277. data/lib/libv8/v8/src/dateparser-inl.h +242 -39
  278. data/lib/libv8/v8/src/dateparser.cc +38 -4
  279. data/lib/libv8/v8/src/dateparser.h +170 -28
  280. data/lib/libv8/v8/src/debug-agent.cc +5 -3
  281. data/lib/libv8/v8/src/debug-agent.h +11 -7
  282. data/lib/libv8/v8/src/debug-debugger.js +65 -34
  283. data/lib/libv8/v8/src/debug.cc +30 -60
  284. data/lib/libv8/v8/src/debug.h +5 -3
  285. data/lib/libv8/v8/src/deoptimizer.cc +227 -10
  286. data/lib/libv8/v8/src/deoptimizer.h +133 -9
  287. data/lib/libv8/v8/src/disassembler.cc +22 -14
  288. data/lib/libv8/v8/src/diy-fp.cc +4 -3
  289. data/lib/libv8/v8/src/diy-fp.h +3 -3
  290. data/lib/libv8/v8/src/elements.cc +634 -0
  291. data/lib/libv8/v8/src/elements.h +95 -0
  292. data/lib/libv8/v8/src/execution.cc +5 -21
  293. data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +3 -1
  294. data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +1 -1
  295. data/lib/libv8/v8/src/extensions/experimental/collator.cc +6 -2
  296. data/lib/libv8/v8/src/extensions/experimental/collator.h +1 -2
  297. data/lib/libv8/v8/src/extensions/experimental/datetime-format.cc +384 -0
  298. data/lib/libv8/v8/src/extensions/experimental/datetime-format.h +83 -0
  299. data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +18 -7
  300. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +12 -16
  301. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +1 -1
  302. data/lib/libv8/v8/src/extensions/experimental/i18n-js2c.py +126 -0
  303. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +3 -4
  304. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +1 -1
  305. data/lib/libv8/v8/src/{shell.h → extensions/experimental/i18n-natives.h} +8 -20
  306. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +45 -1
  307. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +21 -1
  308. data/lib/libv8/v8/src/extensions/experimental/i18n.js +211 -11
  309. data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +4 -3
  310. data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +1 -1
  311. data/lib/libv8/v8/src/extensions/experimental/number-format.cc +374 -0
  312. data/lib/libv8/v8/src/extensions/experimental/number-format.h +71 -0
  313. data/lib/libv8/v8/src/factory.cc +89 -18
  314. data/lib/libv8/v8/src/factory.h +36 -8
  315. data/lib/libv8/v8/src/flag-definitions.h +11 -44
  316. data/lib/libv8/v8/src/frames-inl.h +8 -1
  317. data/lib/libv8/v8/src/frames.cc +39 -3
  318. data/lib/libv8/v8/src/frames.h +10 -3
  319. data/lib/libv8/v8/src/full-codegen.cc +311 -293
  320. data/lib/libv8/v8/src/full-codegen.h +183 -143
  321. data/lib/libv8/v8/src/func-name-inferrer.cc +29 -15
  322. data/lib/libv8/v8/src/func-name-inferrer.h +19 -9
  323. data/lib/libv8/v8/src/gdb-jit.cc +658 -55
  324. data/lib/libv8/v8/src/gdb-jit.h +6 -2
  325. data/lib/libv8/v8/src/global-handles.cc +368 -312
  326. data/lib/libv8/v8/src/global-handles.h +29 -36
  327. data/lib/libv8/v8/src/globals.h +3 -1
  328. data/lib/libv8/v8/src/handles.cc +43 -69
  329. data/lib/libv8/v8/src/handles.h +21 -16
  330. data/lib/libv8/v8/src/heap-inl.h +11 -13
  331. data/lib/libv8/v8/src/heap-profiler.cc +0 -999
  332. data/lib/libv8/v8/src/heap-profiler.h +0 -303
  333. data/lib/libv8/v8/src/heap.cc +366 -141
  334. data/lib/libv8/v8/src/heap.h +87 -26
  335. data/lib/libv8/v8/src/hydrogen-instructions.cc +192 -81
  336. data/lib/libv8/v8/src/hydrogen-instructions.h +711 -482
  337. data/lib/libv8/v8/src/hydrogen.cc +1146 -629
  338. data/lib/libv8/v8/src/hydrogen.h +100 -64
  339. data/lib/libv8/v8/src/ia32/assembler-ia32.cc +19 -0
  340. data/lib/libv8/v8/src/ia32/assembler-ia32.h +15 -2
  341. data/lib/libv8/v8/src/ia32/builtins-ia32.cc +34 -39
  342. data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +675 -377
  343. data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +8 -69
  344. data/lib/libv8/v8/src/ia32/codegen-ia32.cc +1 -0
  345. data/lib/libv8/v8/src/ia32/codegen-ia32.h +0 -2
  346. data/lib/libv8/v8/src/ia32/cpu-ia32.cc +3 -2
  347. data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +28 -3
  348. data/lib/libv8/v8/src/ia32/disasm-ia32.cc +21 -10
  349. data/lib/libv8/v8/src/ia32/frames-ia32.h +6 -5
  350. data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +459 -465
  351. data/lib/libv8/v8/src/ia32/ic-ia32.cc +196 -147
  352. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +575 -650
  353. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +19 -21
  354. data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +7 -2
  355. data/lib/libv8/v8/src/ia32/lithium-ia32.cc +261 -256
  356. data/lib/libv8/v8/src/ia32/lithium-ia32.h +234 -335
  357. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +224 -67
  358. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +63 -19
  359. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +22 -8
  360. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +3 -0
  361. data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +380 -239
  362. data/lib/libv8/v8/src/ic.cc +198 -234
  363. data/lib/libv8/v8/src/ic.h +32 -30
  364. data/lib/libv8/v8/src/interpreter-irregexp.cc +6 -4
  365. data/lib/libv8/v8/src/isolate.cc +112 -95
  366. data/lib/libv8/v8/src/isolate.h +55 -71
  367. data/lib/libv8/v8/src/json-parser.h +486 -48
  368. data/lib/libv8/v8/src/json.js +28 -23
  369. data/lib/libv8/v8/src/jsregexp.cc +163 -208
  370. data/lib/libv8/v8/src/jsregexp.h +0 -1
  371. data/lib/libv8/v8/src/lithium-allocator-inl.h +29 -27
  372. data/lib/libv8/v8/src/lithium-allocator.cc +22 -17
  373. data/lib/libv8/v8/src/lithium-allocator.h +8 -8
  374. data/lib/libv8/v8/src/lithium.cc +16 -11
  375. data/lib/libv8/v8/src/lithium.h +31 -34
  376. data/lib/libv8/v8/src/liveedit.cc +111 -15
  377. data/lib/libv8/v8/src/liveedit.h +3 -4
  378. data/lib/libv8/v8/src/liveobjectlist.cc +116 -80
  379. data/lib/libv8/v8/src/liveobjectlist.h +2 -2
  380. data/lib/libv8/v8/src/log-inl.h +0 -4
  381. data/lib/libv8/v8/src/log-utils.cc +25 -143
  382. data/lib/libv8/v8/src/log-utils.h +13 -92
  383. data/lib/libv8/v8/src/log.cc +26 -249
  384. data/lib/libv8/v8/src/log.h +6 -17
  385. data/lib/libv8/v8/src/macros.py +9 -6
  386. data/lib/libv8/v8/src/mark-compact.cc +276 -56
  387. data/lib/libv8/v8/src/mark-compact.h +20 -0
  388. data/lib/libv8/v8/src/messages.js +93 -39
  389. data/lib/libv8/v8/src/mips/assembler-mips-inl.h +9 -3
  390. data/lib/libv8/v8/src/mips/assembler-mips.cc +297 -189
  391. data/lib/libv8/v8/src/mips/assembler-mips.h +121 -54
  392. data/lib/libv8/v8/src/mips/builtins-mips.cc +23 -24
  393. data/lib/libv8/v8/src/mips/code-stubs-mips.cc +484 -263
  394. data/lib/libv8/v8/src/mips/code-stubs-mips.h +8 -83
  395. data/lib/libv8/v8/src/mips/codegen-mips.h +0 -2
  396. data/lib/libv8/v8/src/mips/constants-mips.h +37 -11
  397. data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +6 -1
  398. data/lib/libv8/v8/src/mips/frames-mips.h +8 -7
  399. data/lib/libv8/v8/src/mips/full-codegen-mips.cc +258 -419
  400. data/lib/libv8/v8/src/mips/ic-mips.cc +181 -121
  401. data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +640 -382
  402. data/lib/libv8/v8/src/mips/macro-assembler-mips.h +94 -89
  403. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +23 -10
  404. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +6 -1
  405. data/lib/libv8/v8/src/mips/simulator-mips.cc +249 -49
  406. data/lib/libv8/v8/src/mips/simulator-mips.h +25 -1
  407. data/lib/libv8/v8/src/mips/stub-cache-mips.cc +373 -161
  408. data/lib/libv8/v8/src/mirror-debugger.js +55 -8
  409. data/lib/libv8/v8/src/misc-intrinsics.h +89 -0
  410. data/lib/libv8/v8/src/mksnapshot.cc +36 -4
  411. data/lib/libv8/v8/src/natives.h +5 -2
  412. data/lib/libv8/v8/src/objects-debug.cc +73 -6
  413. data/lib/libv8/v8/src/objects-inl.h +529 -164
  414. data/lib/libv8/v8/src/objects-printer.cc +67 -12
  415. data/lib/libv8/v8/src/objects-visiting.cc +13 -2
  416. data/lib/libv8/v8/src/objects-visiting.h +41 -1
  417. data/lib/libv8/v8/src/objects.cc +2200 -1177
  418. data/lib/libv8/v8/src/objects.h +912 -283
  419. data/lib/libv8/v8/src/parser.cc +566 -371
  420. data/lib/libv8/v8/src/parser.h +35 -33
  421. data/lib/libv8/v8/src/platform-cygwin.cc +10 -25
  422. data/lib/libv8/v8/src/platform-freebsd.cc +4 -29
  423. data/lib/libv8/v8/src/platform-linux.cc +60 -57
  424. data/lib/libv8/v8/src/platform-macos.cc +4 -27
  425. data/lib/libv8/v8/src/platform-nullos.cc +3 -16
  426. data/lib/libv8/v8/src/platform-openbsd.cc +247 -85
  427. data/lib/libv8/v8/src/platform-posix.cc +43 -1
  428. data/lib/libv8/v8/src/platform-solaris.cc +151 -112
  429. data/lib/libv8/v8/src/platform-tls.h +1 -1
  430. data/lib/libv8/v8/src/platform-win32.cc +65 -39
  431. data/lib/libv8/v8/src/platform.h +17 -14
  432. data/lib/libv8/v8/src/preparse-data-format.h +2 -2
  433. data/lib/libv8/v8/src/preparse-data.h +8 -2
  434. data/lib/libv8/v8/src/preparser-api.cc +2 -18
  435. data/lib/libv8/v8/src/preparser.cc +106 -65
  436. data/lib/libv8/v8/src/preparser.h +26 -5
  437. data/lib/libv8/v8/src/prettyprinter.cc +25 -43
  438. data/lib/libv8/v8/src/profile-generator-inl.h +0 -4
  439. data/lib/libv8/v8/src/profile-generator.cc +213 -34
  440. data/lib/libv8/v8/src/profile-generator.h +9 -9
  441. data/lib/libv8/v8/src/property.h +1 -0
  442. data/lib/libv8/v8/src/proxy.js +74 -4
  443. data/lib/libv8/v8/src/regexp-macro-assembler.cc +10 -6
  444. data/lib/libv8/v8/src/regexp.js +16 -11
  445. data/lib/libv8/v8/src/rewriter.cc +24 -133
  446. data/lib/libv8/v8/src/runtime-profiler.cc +27 -151
  447. data/lib/libv8/v8/src/runtime-profiler.h +5 -31
  448. data/lib/libv8/v8/src/runtime.cc +1450 -681
  449. data/lib/libv8/v8/src/runtime.h +47 -31
  450. data/lib/libv8/v8/src/runtime.js +2 -1
  451. data/lib/libv8/v8/src/scanner-base.cc +358 -220
  452. data/lib/libv8/v8/src/scanner-base.h +30 -138
  453. data/lib/libv8/v8/src/scanner.cc +0 -18
  454. data/lib/libv8/v8/src/scanner.h +0 -15
  455. data/lib/libv8/v8/src/scopeinfo.cc +3 -1
  456. data/lib/libv8/v8/src/scopeinfo.h +1 -6
  457. data/lib/libv8/v8/src/scopes.cc +243 -253
  458. data/lib/libv8/v8/src/scopes.h +58 -109
  459. data/lib/libv8/v8/src/serialize.cc +12 -54
  460. data/lib/libv8/v8/src/serialize.h +47 -0
  461. data/lib/libv8/v8/src/small-pointer-list.h +25 -0
  462. data/lib/libv8/v8/src/spaces-inl.h +4 -50
  463. data/lib/libv8/v8/src/spaces.cc +64 -131
  464. data/lib/libv8/v8/src/spaces.h +19 -70
  465. data/lib/libv8/v8/src/string-stream.cc +3 -1
  466. data/lib/libv8/v8/src/string.js +10 -6
  467. data/lib/libv8/v8/src/strtod.cc +7 -3
  468. data/lib/libv8/v8/src/stub-cache.cc +59 -129
  469. data/lib/libv8/v8/src/stub-cache.h +42 -54
  470. data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +1447 -1339
  471. data/lib/libv8/v8/src/token.cc +4 -4
  472. data/lib/libv8/v8/src/token.h +6 -5
  473. data/lib/libv8/v8/src/type-info.cc +173 -129
  474. data/lib/libv8/v8/src/type-info.h +40 -22
  475. data/lib/libv8/v8/src/utils.cc +25 -304
  476. data/lib/libv8/v8/src/utils.h +118 -3
  477. data/lib/libv8/v8/src/v8-counters.h +3 -6
  478. data/lib/libv8/v8/src/v8.cc +34 -27
  479. data/lib/libv8/v8/src/v8.h +7 -7
  480. data/lib/libv8/v8/src/v8conversions.cc +129 -0
  481. data/lib/libv8/v8/src/v8conversions.h +60 -0
  482. data/lib/libv8/v8/src/v8globals.h +15 -6
  483. data/lib/libv8/v8/src/v8natives.js +300 -78
  484. data/lib/libv8/v8/src/v8threads.cc +14 -6
  485. data/lib/libv8/v8/src/v8threads.h +4 -1
  486. data/lib/libv8/v8/src/v8utils.cc +360 -0
  487. data/lib/libv8/v8/src/v8utils.h +17 -66
  488. data/lib/libv8/v8/src/variables.cc +7 -12
  489. data/lib/libv8/v8/src/variables.h +12 -10
  490. data/lib/libv8/v8/src/version.cc +2 -2
  491. data/lib/libv8/v8/src/vm-state-inl.h +0 -41
  492. data/lib/libv8/v8/src/vm-state.h +0 -11
  493. data/lib/libv8/v8/src/weakmap.js +103 -0
  494. data/lib/libv8/v8/src/x64/assembler-x64.h +6 -3
  495. data/lib/libv8/v8/src/x64/builtins-x64.cc +25 -22
  496. data/lib/libv8/v8/src/x64/code-stubs-x64.cc +523 -250
  497. data/lib/libv8/v8/src/x64/code-stubs-x64.h +8 -71
  498. data/lib/libv8/v8/src/x64/codegen-x64.cc +1 -0
  499. data/lib/libv8/v8/src/x64/codegen-x64.h +0 -2
  500. data/lib/libv8/v8/src/x64/cpu-x64.cc +2 -1
  501. data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +40 -8
  502. data/lib/libv8/v8/src/x64/disasm-x64.cc +12 -10
  503. data/lib/libv8/v8/src/x64/frames-x64.h +7 -6
  504. data/lib/libv8/v8/src/x64/full-codegen-x64.cc +310 -415
  505. data/lib/libv8/v8/src/x64/ic-x64.cc +180 -117
  506. data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +411 -523
  507. data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +11 -6
  508. data/lib/libv8/v8/src/x64/lithium-x64.cc +191 -216
  509. data/lib/libv8/v8/src/x64/lithium-x64.h +112 -263
  510. data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +177 -61
  511. data/lib/libv8/v8/src/x64/macro-assembler-x64.h +23 -7
  512. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +21 -9
  513. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +6 -0
  514. data/lib/libv8/v8/src/x64/stub-cache-x64.cc +273 -107
  515. data/lib/libv8/v8/src/zone.cc +31 -22
  516. data/lib/libv8/v8/src/zone.h +12 -6
  517. data/lib/libv8/v8/tools/codemap.js +8 -0
  518. data/lib/libv8/v8/tools/gcmole/Makefile +43 -0
  519. data/lib/libv8/v8/tools/gcmole/gcmole.lua +0 -2
  520. data/lib/libv8/v8/tools/gdb-v8-support.py +154 -0
  521. data/lib/libv8/v8/tools/grokdump.py +44 -35
  522. data/lib/libv8/v8/tools/gyp/v8.gyp +94 -248
  523. data/lib/libv8/v8/tools/js2c.py +83 -52
  524. data/lib/libv8/v8/tools/linux-tick-processor +4 -6
  525. data/lib/libv8/v8/tools/ll_prof.py +3 -3
  526. data/lib/libv8/v8/tools/oom_dump/README +3 -1
  527. data/lib/libv8/v8/tools/presubmit.py +11 -4
  528. data/lib/libv8/v8/tools/profile.js +46 -2
  529. data/lib/libv8/v8/tools/splaytree.js +11 -0
  530. data/lib/libv8/v8/tools/stats-viewer.py +15 -11
  531. data/lib/libv8/v8/tools/test-wrapper-gypbuild.py +227 -0
  532. data/lib/libv8/v8/tools/test.py +28 -8
  533. data/lib/libv8/v8/tools/tickprocessor.js +0 -16
  534. data/lib/libv8/version.rb +1 -1
  535. data/libv8.gemspec +2 -2
  536. metadata +31 -19
  537. data/lib/libv8/scons/engine/SCons/Tool/f03.py +0 -63
  538. data/lib/libv8/v8/src/json-parser.cc +0 -504
@@ -32,6 +32,7 @@
32
32
  #include "lithium-allocator.h"
33
33
  #include "lithium.h"
34
34
  #include "safepoint-table.h"
35
+ #include "utils.h"
35
36
 
36
37
  namespace v8 {
37
38
  namespace internal {
@@ -76,17 +77,12 @@ class LCodeGen;
76
77
  V(ClampDToUint8) \
77
78
  V(ClampIToUint8) \
78
79
  V(ClampTToUint8) \
79
- V(ClassOfTest) \
80
80
  V(ClassOfTestAndBranch) \
81
- V(CmpID) \
81
+ V(CmpConstantEqAndBranch) \
82
82
  V(CmpIDAndBranch) \
83
- V(CmpJSObjectEq) \
84
- V(CmpJSObjectEqAndBranch) \
83
+ V(CmpObjectEqAndBranch) \
85
84
  V(CmpMapAndBranch) \
86
- V(CmpSymbolEq) \
87
- V(CmpSymbolEqAndBranch) \
88
85
  V(CmpT) \
89
- V(CmpTAndBranch) \
90
86
  V(ConstantD) \
91
87
  V(ConstantI) \
92
88
  V(ConstantT) \
@@ -95,33 +91,25 @@ class LCodeGen;
95
91
  V(Deoptimize) \
96
92
  V(DivI) \
97
93
  V(DoubleToI) \
98
- V(ExternalArrayLength) \
99
- V(FixedArrayLength) \
94
+ V(ElementsKind) \
95
+ V(FixedArrayBaseLength) \
100
96
  V(FunctionLiteral) \
101
97
  V(GetCachedArrayIndex) \
102
98
  V(GlobalObject) \
103
99
  V(GlobalReceiver) \
104
100
  V(Goto) \
105
- V(HasCachedArrayIndex) \
106
101
  V(HasCachedArrayIndexAndBranch) \
107
- V(HasInstanceType) \
108
102
  V(HasInstanceTypeAndBranch) \
109
103
  V(In) \
110
104
  V(InstanceOf) \
111
- V(InstanceOfAndBranch) \
112
105
  V(InstanceOfKnownGlobal) \
113
106
  V(InstructionGap) \
114
107
  V(Integer32ToDouble) \
115
108
  V(InvokeFunction) \
116
- V(IsConstructCall) \
117
109
  V(IsConstructCallAndBranch) \
118
- V(IsNull) \
119
110
  V(IsNullAndBranch) \
120
- V(IsObject) \
121
111
  V(IsObjectAndBranch) \
122
- V(IsSmi) \
123
112
  V(IsSmiAndBranch) \
124
- V(IsUndetectable) \
125
113
  V(IsUndetectableAndBranch) \
126
114
  V(JSArrayLength) \
127
115
  V(Label) \
@@ -132,6 +120,7 @@ class LCodeGen;
132
120
  V(LoadFunctionPrototype) \
133
121
  V(LoadGlobalCell) \
134
122
  V(LoadGlobalGeneric) \
123
+ V(LoadKeyedFastDoubleElement) \
135
124
  V(LoadKeyedFastElement) \
136
125
  V(LoadKeyedGeneric) \
137
126
  V(LoadKeyedSpecializedArrayElement) \
@@ -158,6 +147,7 @@ class LCodeGen;
158
147
  V(StoreContextSlot) \
159
148
  V(StoreGlobalCell) \
160
149
  V(StoreGlobalGeneric) \
150
+ V(StoreKeyedFastDoubleElement) \
161
151
  V(StoreKeyedFastElement) \
162
152
  V(StoreKeyedGeneric) \
163
153
  V(StoreKeyedSpecializedArrayElement) \
@@ -169,10 +159,10 @@ class LCodeGen;
169
159
  V(StringLength) \
170
160
  V(SubI) \
171
161
  V(TaggedToI) \
162
+ V(ThisFunction) \
172
163
  V(Throw) \
173
164
  V(ToFastProperties) \
174
165
  V(Typeof) \
175
- V(TypeofIs) \
176
166
  V(TypeofIsAndBranch) \
177
167
  V(UnaryMathOperation) \
178
168
  V(UnknownOSRValue) \
@@ -231,7 +221,6 @@ class LInstruction: public ZoneObject {
231
221
  virtual bool IsGap() const { return false; }
232
222
 
233
223
  virtual bool IsControl() const { return false; }
234
- virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
235
224
 
236
225
  void set_environment(LEnvironment* env) { environment_ = env; }
237
226
  LEnvironment* environment() const { return environment_; }
@@ -286,37 +275,6 @@ class LInstruction: public ZoneObject {
286
275
  };
287
276
 
288
277
 
289
- template<typename ElementType, int NumElements>
290
- class OperandContainer {
291
- public:
292
- OperandContainer() {
293
- for (int i = 0; i < NumElements; i++) elems_[i] = NULL;
294
- }
295
- int length() { return NumElements; }
296
- ElementType& operator[](int i) {
297
- ASSERT(i < length());
298
- return elems_[i];
299
- }
300
- void PrintOperandsTo(StringStream* stream);
301
-
302
- private:
303
- ElementType elems_[NumElements];
304
- };
305
-
306
-
307
- template<typename ElementType>
308
- class OperandContainer<ElementType, 0> {
309
- public:
310
- int length() { return 0; }
311
- void PrintOperandsTo(StringStream* stream) { }
312
- ElementType& operator[](int i) {
313
- UNREACHABLE();
314
- static ElementType t = 0;
315
- return t;
316
- }
317
- };
318
-
319
-
320
278
  // R = number of result operands (0 or 1).
321
279
  // I = number of input operands.
322
280
  // T = number of temporary operands.
@@ -339,9 +297,9 @@ class LTemplateInstruction: public LInstruction {
339
297
  virtual void PrintOutputOperandTo(StringStream* stream);
340
298
 
341
299
  protected:
342
- OperandContainer<LOperand*, R> results_;
343
- OperandContainer<LOperand*, I> inputs_;
344
- OperandContainer<LOperand*, T> temps_;
300
+ EmbeddedContainer<LOperand*, R> results_;
301
+ EmbeddedContainer<LOperand*, I> inputs_;
302
+ EmbeddedContainer<LOperand*, T> temps_;
345
303
  };
346
304
 
347
305
 
@@ -401,19 +359,16 @@ class LInstructionGap: public LGap {
401
359
 
402
360
  class LGoto: public LTemplateInstruction<0, 0, 0> {
403
361
  public:
404
- LGoto(int block_id, bool include_stack_check = false)
405
- : block_id_(block_id), include_stack_check_(include_stack_check) { }
362
+ explicit LGoto(int block_id) : block_id_(block_id) { }
406
363
 
407
364
  DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
408
365
  virtual void PrintDataTo(StringStream* stream);
409
366
  virtual bool IsControl() const { return true; }
410
367
 
411
368
  int block_id() const { return block_id_; }
412
- bool include_stack_check() const { return include_stack_check_; }
413
369
 
414
370
  private:
415
371
  int block_id_;
416
- bool include_stack_check_;
417
372
  };
418
373
 
419
374
 
@@ -489,16 +444,15 @@ class LControlInstruction: public LTemplateInstruction<0, I, T> {
489
444
  public:
490
445
  virtual bool IsControl() const { return true; }
491
446
 
492
- int true_block_id() const { return true_block_id_; }
493
- int false_block_id() const { return false_block_id_; }
494
- void SetBranchTargets(int true_block_id, int false_block_id) {
495
- true_block_id_ = true_block_id;
496
- false_block_id_ = false_block_id;
497
- }
447
+ int SuccessorCount() { return hydrogen()->SuccessorCount(); }
448
+ HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
449
+ int true_block_id() { return hydrogen()->SuccessorAt(0)->block_id(); }
450
+ int false_block_id() { return hydrogen()->SuccessorAt(1)->block_id(); }
498
451
 
499
452
  private:
500
- int true_block_id_;
501
- int false_block_id_;
453
+ HControlInstruction* hydrogen() {
454
+ return HControlInstruction::cast(this->hydrogen_value());
455
+ }
502
456
  };
503
457
 
504
458
 
@@ -614,23 +568,6 @@ class LMulI: public LTemplateInstruction<1, 2, 1> {
614
568
  };
615
569
 
616
570
 
617
- class LCmpID: public LTemplateInstruction<1, 2, 0> {
618
- public:
619
- LCmpID(LOperand* left, LOperand* right) {
620
- inputs_[0] = left;
621
- inputs_[1] = right;
622
- }
623
-
624
- DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
625
- DECLARE_HYDROGEN_ACCESSOR(Compare)
626
-
627
- Token::Value op() const { return hydrogen()->token(); }
628
- bool is_double() const {
629
- return hydrogen()->GetInputRepresentation().IsDouble();
630
- }
631
- };
632
-
633
-
634
571
  class LCmpIDAndBranch: public LControlInstruction<2, 0> {
635
572
  public:
636
573
  LCmpIDAndBranch(LOperand* left, LOperand* right) {
@@ -639,7 +576,7 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
639
576
  }
640
577
 
641
578
  DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
642
- DECLARE_HYDROGEN_ACCESSOR(Compare)
579
+ DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
643
580
 
644
581
  Token::Value op() const { return hydrogen()->token(); }
645
582
  bool is_double() const {
@@ -665,63 +602,31 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 1> {
665
602
  };
666
603
 
667
604
 
668
- class LCmpJSObjectEq: public LTemplateInstruction<1, 2, 0> {
669
- public:
670
- LCmpJSObjectEq(LOperand* left, LOperand* right) {
671
- inputs_[0] = left;
672
- inputs_[1] = right;
673
- }
674
-
675
- DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq")
676
- };
677
-
678
-
679
- class LCmpJSObjectEqAndBranch: public LControlInstruction<2, 0> {
680
- public:
681
- LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) {
682
- inputs_[0] = left;
683
- inputs_[1] = right;
684
- }
685
-
686
- DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch,
687
- "cmp-jsobject-eq-and-branch")
688
- };
689
-
690
-
691
- class LCmpSymbolEq: public LTemplateInstruction<1, 2, 0> {
605
+ class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
692
606
  public:
693
- LCmpSymbolEq(LOperand* left, LOperand* right) {
607
+ LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
694
608
  inputs_[0] = left;
695
609
  inputs_[1] = right;
696
610
  }
697
611
 
698
- DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEq, "cmp-symbol-eq")
612
+ DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
613
+ "cmp-object-eq-and-branch")
614
+ DECLARE_HYDROGEN_ACCESSOR(CompareObjectEqAndBranch)
699
615
  };
700
616
 
701
617
 
702
- class LCmpSymbolEqAndBranch: public LControlInstruction<2, 0> {
618
+ class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
703
619
  public:
704
- LCmpSymbolEqAndBranch(LOperand* left, LOperand* right) {
620
+ explicit LCmpConstantEqAndBranch(LOperand* left) {
705
621
  inputs_[0] = left;
706
- inputs_[1] = right;
707
622
  }
708
623
 
709
- DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEqAndBranch, "cmp-symbol-eq-and-branch")
624
+ DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
625
+ "cmp-constant-eq-and-branch")
626
+ DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
710
627
  };
711
628
 
712
629
 
713
- class LIsNull: public LTemplateInstruction<1, 1, 0> {
714
- public:
715
- explicit LIsNull(LOperand* value) {
716
- inputs_[0] = value;
717
- }
718
-
719
- DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null")
720
- DECLARE_HYDROGEN_ACCESSOR(IsNull)
721
-
722
- bool is_strict() const { return hydrogen()->is_strict(); }
723
- };
724
-
725
630
  class LIsNullAndBranch: public LControlInstruction<1, 0> {
726
631
  public:
727
632
  explicit LIsNullAndBranch(LOperand* value) {
@@ -729,7 +634,7 @@ class LIsNullAndBranch: public LControlInstruction<1, 0> {
729
634
  }
730
635
 
731
636
  DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch")
732
- DECLARE_HYDROGEN_ACCESSOR(IsNull)
637
+ DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch)
733
638
 
734
639
  bool is_strict() const { return hydrogen()->is_strict(); }
735
640
 
@@ -737,17 +642,7 @@ class LIsNullAndBranch: public LControlInstruction<1, 0> {
737
642
  };
738
643
 
739
644
 
740
- class LIsObject: public LTemplateInstruction<1, 1, 1> {
741
- public:
742
- explicit LIsObject(LOperand* value) {
743
- inputs_[0] = value;
744
- }
745
-
746
- DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
747
- };
748
-
749
-
750
- class LIsObjectAndBranch: public LControlInstruction<1, 2> {
645
+ class LIsObjectAndBranch: public LControlInstruction<1, 1> {
751
646
  public:
752
647
  LIsObjectAndBranch(LOperand* value, LOperand* temp) {
753
648
  inputs_[0] = value;
@@ -755,22 +650,12 @@ class LIsObjectAndBranch: public LControlInstruction<1, 2> {
755
650
  }
756
651
 
757
652
  DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
653
+ DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
758
654
 
759
655
  virtual void PrintDataTo(StringStream* stream);
760
656
  };
761
657
 
762
658
 
763
- class LIsSmi: public LTemplateInstruction<1, 1, 0> {
764
- public:
765
- explicit LIsSmi(LOperand* value) {
766
- inputs_[0] = value;
767
- }
768
-
769
- DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
770
- DECLARE_HYDROGEN_ACCESSOR(IsSmi)
771
- };
772
-
773
-
774
659
  class LIsSmiAndBranch: public LControlInstruction<1, 0> {
775
660
  public:
776
661
  explicit LIsSmiAndBranch(LOperand* value) {
@@ -778,22 +663,12 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
778
663
  }
779
664
 
780
665
  DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
666
+ DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
781
667
 
782
668
  virtual void PrintDataTo(StringStream* stream);
783
669
  };
784
670
 
785
671
 
786
- class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
787
- public:
788
- explicit LIsUndetectable(LOperand* value) {
789
- inputs_[0] = value;
790
- }
791
-
792
- DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
793
- DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
794
- };
795
-
796
-
797
672
  class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
798
673
  public:
799
674
  explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
@@ -803,22 +678,12 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
803
678
 
804
679
  DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
805
680
  "is-undetectable-and-branch")
681
+ DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
806
682
 
807
683
  virtual void PrintDataTo(StringStream* stream);
808
684
  };
809
685
 
810
686
 
811
- class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
812
- public:
813
- explicit LHasInstanceType(LOperand* value) {
814
- inputs_[0] = value;
815
- }
816
-
817
- DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
818
- DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
819
- };
820
-
821
-
822
687
  class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
823
688
  public:
824
689
  explicit LHasInstanceTypeAndBranch(LOperand* value) {
@@ -827,7 +692,7 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
827
692
 
828
693
  DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
829
694
  "has-instance-type-and-branch")
830
- DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
695
+ DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
831
696
 
832
697
  virtual void PrintDataTo(StringStream* stream);
833
698
  };
@@ -844,17 +709,6 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
844
709
  };
845
710
 
846
711
 
847
- class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
848
- public:
849
- explicit LHasCachedArrayIndex(LOperand* value) {
850
- inputs_[0] = value;
851
- }
852
-
853
- DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
854
- DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
855
- };
856
-
857
-
858
712
  class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
859
713
  public:
860
714
  explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
@@ -863,18 +717,7 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
863
717
 
864
718
  DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
865
719
  "has-cached-array-index-and-branch")
866
- virtual void PrintDataTo(StringStream* stream);
867
- };
868
-
869
-
870
- class LClassOfTest: public LTemplateInstruction<1, 1, 0> {
871
- public:
872
- explicit LClassOfTest(LOperand* value) {
873
- inputs_[0] = value;
874
- }
875
-
876
- DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
877
- DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
720
+ DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
878
721
 
879
722
  virtual void PrintDataTo(StringStream* stream);
880
723
  };
@@ -889,7 +732,7 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 1> {
889
732
 
890
733
  DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
891
734
  "class-of-test-and-branch")
892
- DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
735
+ DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
893
736
 
894
737
  virtual void PrintDataTo(StringStream* stream);
895
738
  };
@@ -903,21 +746,7 @@ class LCmpT: public LTemplateInstruction<1, 2, 0> {
903
746
  }
904
747
 
905
748
  DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
906
- DECLARE_HYDROGEN_ACCESSOR(Compare)
907
-
908
- Token::Value op() const { return hydrogen()->token(); }
909
- };
910
-
911
-
912
- class LCmpTAndBranch: public LControlInstruction<2, 0> {
913
- public:
914
- LCmpTAndBranch(LOperand* left, LOperand* right) {
915
- inputs_[0] = left;
916
- inputs_[1] = right;
917
- }
918
-
919
- DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch")
920
- DECLARE_HYDROGEN_ACCESSOR(Compare)
749
+ DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
921
750
 
922
751
  Token::Value op() const { return hydrogen()->token(); }
923
752
  };
@@ -934,17 +763,6 @@ class LInstanceOf: public LTemplateInstruction<1, 2, 0> {
934
763
  };
935
764
 
936
765
 
937
- class LInstanceOfAndBranch: public LControlInstruction<2, 0> {
938
- public:
939
- LInstanceOfAndBranch(LOperand* left, LOperand* right) {
940
- inputs_[0] = left;
941
- inputs_[1] = right;
942
- }
943
-
944
- DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch")
945
- };
946
-
947
-
948
766
  class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> {
949
767
  public:
950
768
  LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) {
@@ -1057,7 +875,7 @@ class LBranch: public LControlInstruction<1, 0> {
1057
875
  }
1058
876
 
1059
877
  DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
1060
- DECLARE_HYDROGEN_ACCESSOR(Value)
878
+ DECLARE_HYDROGEN_ACCESSOR(Branch)
1061
879
 
1062
880
  virtual void PrintDataTo(StringStream* stream);
1063
881
  };
@@ -1096,25 +914,26 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
1096
914
  };
1097
915
 
1098
916
 
1099
- class LExternalArrayLength: public LTemplateInstruction<1, 1, 0> {
917
+ class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
1100
918
  public:
1101
- explicit LExternalArrayLength(LOperand* value) {
919
+ explicit LFixedArrayBaseLength(LOperand* value) {
1102
920
  inputs_[0] = value;
1103
921
  }
1104
922
 
1105
- DECLARE_CONCRETE_INSTRUCTION(ExternalArrayLength, "external-array-length")
1106
- DECLARE_HYDROGEN_ACCESSOR(ExternalArrayLength)
923
+ DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
924
+ "fixed-array-base-length")
925
+ DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
1107
926
  };
1108
927
 
1109
928
 
1110
- class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> {
929
+ class LElementsKind: public LTemplateInstruction<1, 1, 0> {
1111
930
  public:
1112
- explicit LFixedArrayLength(LOperand* value) {
931
+ explicit LElementsKind(LOperand* value) {
1113
932
  inputs_[0] = value;
1114
933
  }
1115
934
 
1116
- DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length")
1117
- DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength)
935
+ DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
936
+ DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
1118
937
  };
1119
938
 
1120
939
 
@@ -1309,6 +1128,22 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
1309
1128
  };
1310
1129
 
1311
1130
 
1131
+ class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
1132
+ public:
1133
+ LLoadKeyedFastDoubleElement(LOperand* elements, LOperand* key) {
1134
+ inputs_[0] = elements;
1135
+ inputs_[1] = key;
1136
+ }
1137
+
1138
+ DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
1139
+ "load-keyed-fast-double-element")
1140
+ DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
1141
+
1142
+ LOperand* elements() { return inputs_[0]; }
1143
+ LOperand* key() { return inputs_[1]; }
1144
+ };
1145
+
1146
+
1312
1147
  class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
1313
1148
  public:
1314
1149
  LLoadKeyedSpecializedArrayElement(LOperand* external_pointer,
@@ -1323,8 +1158,8 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
1323
1158
 
1324
1159
  LOperand* external_pointer() { return inputs_[0]; }
1325
1160
  LOperand* key() { return inputs_[1]; }
1326
- ExternalArrayType array_type() const {
1327
- return hydrogen()->array_type();
1161
+ JSObject::ElementsKind elements_kind() const {
1162
+ return hydrogen()->elements_kind();
1328
1163
  }
1329
1164
  };
1330
1165
 
@@ -1440,6 +1275,11 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
1440
1275
  };
1441
1276
 
1442
1277
 
1278
+ class LThisFunction: public LTemplateInstruction<1, 0, 0> {
1279
+ DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
1280
+ };
1281
+
1282
+
1443
1283
  class LContext: public LTemplateInstruction<1, 0, 0> {
1444
1284
  public:
1445
1285
  DECLARE_CONCRETE_INSTRUCTION(Context, "context")
@@ -1639,7 +1479,7 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
1639
1479
  }
1640
1480
 
1641
1481
  DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
1642
- DECLARE_HYDROGEN_ACCESSOR(Change)
1482
+ DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1643
1483
 
1644
1484
  bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1645
1485
  };
@@ -1659,7 +1499,7 @@ class LTaggedToI: public LTemplateInstruction<1, 1, 3> {
1659
1499
  }
1660
1500
 
1661
1501
  DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
1662
- DECLARE_HYDROGEN_ACCESSOR(Change)
1502
+ DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1663
1503
 
1664
1504
  bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1665
1505
  };
@@ -1682,6 +1522,7 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
1682
1522
  }
1683
1523
 
1684
1524
  DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
1525
+ DECLARE_HYDROGEN_ACCESSOR(Change)
1685
1526
  };
1686
1527
 
1687
1528
 
@@ -1763,6 +1604,28 @@ class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
1763
1604
  };
1764
1605
 
1765
1606
 
1607
+ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
1608
+ public:
1609
+ LStoreKeyedFastDoubleElement(LOperand* elements,
1610
+ LOperand* key,
1611
+ LOperand* val) {
1612
+ inputs_[0] = elements;
1613
+ inputs_[1] = key;
1614
+ inputs_[2] = val;
1615
+ }
1616
+
1617
+ DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
1618
+ "store-keyed-fast-double-element")
1619
+ DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
1620
+
1621
+ virtual void PrintDataTo(StringStream* stream);
1622
+
1623
+ LOperand* elements() { return inputs_[0]; }
1624
+ LOperand* key() { return inputs_[1]; }
1625
+ LOperand* value() { return inputs_[2]; }
1626
+ };
1627
+
1628
+
1766
1629
  class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
1767
1630
  public:
1768
1631
  LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) {
@@ -1799,8 +1662,8 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
1799
1662
  LOperand* external_pointer() { return inputs_[0]; }
1800
1663
  LOperand* key() { return inputs_[1]; }
1801
1664
  LOperand* value() { return inputs_[2]; }
1802
- ExternalArrayType array_type() const {
1803
- return hydrogen()->array_type();
1665
+ JSObject::ElementsKind elements_kind() const {
1666
+ return hydrogen()->elements_kind();
1804
1667
  }
1805
1668
  };
1806
1669
 
@@ -2019,21 +1882,6 @@ class LTypeof: public LTemplateInstruction<1, 1, 0> {
2019
1882
  };
2020
1883
 
2021
1884
 
2022
- class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
2023
- public:
2024
- explicit LTypeofIs(LOperand* value) {
2025
- inputs_[0] = value;
2026
- }
2027
-
2028
- DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
2029
- DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
2030
-
2031
- Handle<String> type_literal() { return hydrogen()->type_literal(); }
2032
-
2033
- virtual void PrintDataTo(StringStream* stream);
2034
- };
2035
-
2036
-
2037
1885
  class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2038
1886
  public:
2039
1887
  explicit LTypeofIsAndBranch(LOperand* value) {
@@ -2041,7 +1889,7 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2041
1889
  }
2042
1890
 
2043
1891
  DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
2044
- DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
1892
+ DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
2045
1893
 
2046
1894
  Handle<String> type_literal() { return hydrogen()->type_literal(); }
2047
1895
 
@@ -2049,13 +1897,6 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2049
1897
  };
2050
1898
 
2051
1899
 
2052
- class LIsConstructCall: public LTemplateInstruction<1, 0, 0> {
2053
- public:
2054
- DECLARE_CONCRETE_INSTRUCTION(IsConstructCall, "is-construct-call")
2055
- DECLARE_HYDROGEN_ACCESSOR(IsConstructCall)
2056
- };
2057
-
2058
-
2059
1900
  class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
2060
1901
  public:
2061
1902
  explicit LIsConstructCallAndBranch(LOperand* temp) {
@@ -2107,6 +1948,12 @@ class LOsrEntry: public LTemplateInstruction<0, 0, 0> {
2107
1948
  class LStackCheck: public LTemplateInstruction<0, 0, 0> {
2108
1949
  public:
2109
1950
  DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
1951
+ DECLARE_HYDROGEN_ACCESSOR(StackCheck)
1952
+
1953
+ Label* done_label() { return &done_label_; }
1954
+
1955
+ private:
1956
+ Label done_label_;
2110
1957
  };
2111
1958
 
2112
1959