libv8 3.3.10.4 → 3.5.10.beta1

Sign up to get free protection for your applications and to get access to all the features.
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