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) \
@@ -232,7 +222,6 @@ class LInstruction: public ZoneObject {
232
222
  virtual bool IsGap() const { return false; }
233
223
 
234
224
  virtual bool IsControl() const { return false; }
235
- virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
236
225
 
237
226
  void set_environment(LEnvironment* env) { environment_ = env; }
238
227
  LEnvironment* environment() const { return environment_; }
@@ -287,37 +276,6 @@ class LInstruction: public ZoneObject {
287
276
  };
288
277
 
289
278
 
290
- template<typename ElementType, int NumElements>
291
- class OperandContainer {
292
- public:
293
- OperandContainer() {
294
- for (int i = 0; i < NumElements; i++) elems_[i] = NULL;
295
- }
296
- int length() { return NumElements; }
297
- ElementType& operator[](int i) {
298
- ASSERT(i < length());
299
- return elems_[i];
300
- }
301
- void PrintOperandsTo(StringStream* stream);
302
-
303
- private:
304
- ElementType elems_[NumElements];
305
- };
306
-
307
-
308
- template<typename ElementType>
309
- class OperandContainer<ElementType, 0> {
310
- public:
311
- int length() { return 0; }
312
- void PrintOperandsTo(StringStream* stream) { }
313
- ElementType& operator[](int i) {
314
- UNREACHABLE();
315
- static ElementType t = 0;
316
- return t;
317
- }
318
- };
319
-
320
-
321
279
  // R = number of result operands (0 or 1).
322
280
  // I = number of input operands.
323
281
  // T = number of temporary operands.
@@ -340,9 +298,9 @@ class LTemplateInstruction: public LInstruction {
340
298
  virtual void PrintOutputOperandTo(StringStream* stream);
341
299
 
342
300
  protected:
343
- OperandContainer<LOperand*, R> results_;
344
- OperandContainer<LOperand*, I> inputs_;
345
- OperandContainer<LOperand*, T> temps_;
301
+ EmbeddedContainer<LOperand*, R> results_;
302
+ EmbeddedContainer<LOperand*, I> inputs_;
303
+ EmbeddedContainer<LOperand*, T> temps_;
346
304
  };
347
305
 
348
306
 
@@ -402,19 +360,16 @@ class LInstructionGap: public LGap {
402
360
 
403
361
  class LGoto: public LTemplateInstruction<0, 0, 0> {
404
362
  public:
405
- LGoto(int block_id, bool include_stack_check = false)
406
- : block_id_(block_id), include_stack_check_(include_stack_check) { }
363
+ explicit LGoto(int block_id) : block_id_(block_id) { }
407
364
 
408
365
  DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
409
366
  virtual void PrintDataTo(StringStream* stream);
410
367
  virtual bool IsControl() const { return true; }
411
368
 
412
369
  int block_id() const { return block_id_; }
413
- bool include_stack_check() const { return include_stack_check_; }
414
370
 
415
371
  private:
416
372
  int block_id_;
417
- bool include_stack_check_;
418
373
  };
419
374
 
420
375
 
@@ -490,16 +445,15 @@ class LControlInstruction: public LTemplateInstruction<0, I, T> {
490
445
  public:
491
446
  virtual bool IsControl() const { return true; }
492
447
 
493
- int true_block_id() const { return true_block_id_; }
494
- int false_block_id() const { return false_block_id_; }
495
- void SetBranchTargets(int true_block_id, int false_block_id) {
496
- true_block_id_ = true_block_id;
497
- false_block_id_ = false_block_id;
498
- }
448
+ int SuccessorCount() { return hydrogen()->SuccessorCount(); }
449
+ HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
450
+ int true_block_id() { return hydrogen()->SuccessorAt(0)->block_id(); }
451
+ int false_block_id() { return hydrogen()->SuccessorAt(1)->block_id(); }
499
452
 
500
453
  private:
501
- int true_block_id_;
502
- int false_block_id_;
454
+ HControlInstruction* hydrogen() {
455
+ return HControlInstruction::cast(this->hydrogen_value());
456
+ }
503
457
  };
504
458
 
505
459
 
@@ -598,23 +552,6 @@ class LMulI: public LTemplateInstruction<1, 2, 0> {
598
552
  };
599
553
 
600
554
 
601
- class LCmpID: public LTemplateInstruction<1, 2, 0> {
602
- public:
603
- LCmpID(LOperand* left, LOperand* right) {
604
- inputs_[0] = left;
605
- inputs_[1] = right;
606
- }
607
-
608
- DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
609
- DECLARE_HYDROGEN_ACCESSOR(Compare)
610
-
611
- Token::Value op() const { return hydrogen()->token(); }
612
- bool is_double() const {
613
- return hydrogen()->GetInputRepresentation().IsDouble();
614
- }
615
- };
616
-
617
-
618
555
  class LCmpIDAndBranch: public LControlInstruction<2, 0> {
619
556
  public:
620
557
  LCmpIDAndBranch(LOperand* left, LOperand* right) {
@@ -623,7 +560,7 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
623
560
  }
624
561
 
625
562
  DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
626
- DECLARE_HYDROGEN_ACCESSOR(Compare)
563
+ DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
627
564
 
628
565
  Token::Value op() const { return hydrogen()->token(); }
629
566
  bool is_double() const {
@@ -648,61 +585,27 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 0> {
648
585
  };
649
586
 
650
587
 
651
- class LCmpJSObjectEq: public LTemplateInstruction<1, 2, 0> {
652
- public:
653
- LCmpJSObjectEq(LOperand* left, LOperand* right) {
654
- inputs_[0] = left;
655
- inputs_[1] = right;
656
- }
657
-
658
- DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq")
659
- };
660
-
661
-
662
- class LCmpJSObjectEqAndBranch: public LControlInstruction<2, 0> {
663
- public:
664
- LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) {
665
- inputs_[0] = left;
666
- inputs_[1] = right;
667
- }
668
-
669
- DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch,
670
- "cmp-jsobject-eq-and-branch")
671
- };
672
-
673
-
674
- class LCmpSymbolEq: public LTemplateInstruction<1, 2, 0> {
588
+ class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
675
589
  public:
676
- LCmpSymbolEq(LOperand* left, LOperand* right) {
590
+ LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
677
591
  inputs_[0] = left;
678
592
  inputs_[1] = right;
679
593
  }
680
594
 
681
- DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEq, "cmp-symbol-eq")
595
+ DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
596
+ "cmp-object-eq-and-branch")
682
597
  };
683
598
 
684
599
 
685
- class LCmpSymbolEqAndBranch: public LControlInstruction<2, 0> {
600
+ class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
686
601
  public:
687
- LCmpSymbolEqAndBranch(LOperand* left, LOperand* right) {
602
+ explicit LCmpConstantEqAndBranch(LOperand* left) {
688
603
  inputs_[0] = left;
689
- inputs_[1] = right;
690
604
  }
691
605
 
692
- DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEqAndBranch, "cmp-symbol-eq-and-branch")
693
- };
694
-
695
-
696
- class LIsNull: public LTemplateInstruction<1, 1, 0> {
697
- public:
698
- explicit LIsNull(LOperand* value) {
699
- inputs_[0] = value;
700
- }
701
-
702
- DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null")
703
- DECLARE_HYDROGEN_ACCESSOR(IsNull)
704
-
705
- bool is_strict() const { return hydrogen()->is_strict(); }
606
+ DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
607
+ "cmp-constant-eq-and-branch")
608
+ DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
706
609
  };
707
610
 
708
611
 
@@ -714,7 +617,7 @@ class LIsNullAndBranch: public LControlInstruction<1, 1> {
714
617
  }
715
618
 
716
619
  DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch")
717
- DECLARE_HYDROGEN_ACCESSOR(IsNull)
620
+ DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch)
718
621
 
719
622
  bool is_strict() const { return hydrogen()->is_strict(); }
720
623
 
@@ -722,16 +625,6 @@ class LIsNullAndBranch: public LControlInstruction<1, 1> {
722
625
  };
723
626
 
724
627
 
725
- class LIsObject: public LTemplateInstruction<1, 1, 0> {
726
- public:
727
- explicit LIsObject(LOperand* value) {
728
- inputs_[0] = value;
729
- }
730
-
731
- DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
732
- };
733
-
734
-
735
628
  class LIsObjectAndBranch: public LControlInstruction<1, 0> {
736
629
  public:
737
630
  explicit LIsObjectAndBranch(LOperand* value) {
@@ -739,22 +632,12 @@ class LIsObjectAndBranch: public LControlInstruction<1, 0> {
739
632
  }
740
633
 
741
634
  DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
635
+ DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
742
636
 
743
637
  virtual void PrintDataTo(StringStream* stream);
744
638
  };
745
639
 
746
640
 
747
- class LIsSmi: public LTemplateInstruction<1, 1, 0> {
748
- public:
749
- explicit LIsSmi(LOperand* value) {
750
- inputs_[0] = value;
751
- }
752
-
753
- DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
754
- DECLARE_HYDROGEN_ACCESSOR(IsSmi)
755
- };
756
-
757
-
758
641
  class LIsSmiAndBranch: public LControlInstruction<1, 0> {
759
642
  public:
760
643
  explicit LIsSmiAndBranch(LOperand* value) {
@@ -762,22 +645,12 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
762
645
  }
763
646
 
764
647
  DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
648
+ DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
765
649
 
766
650
  virtual void PrintDataTo(StringStream* stream);
767
651
  };
768
652
 
769
653
 
770
- class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
771
- public:
772
- explicit LIsUndetectable(LOperand* value) {
773
- inputs_[0] = value;
774
- }
775
-
776
- DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
777
- DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
778
- };
779
-
780
-
781
654
  class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
782
655
  public:
783
656
  explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
@@ -787,22 +660,12 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
787
660
 
788
661
  DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
789
662
  "is-undetectable-and-branch")
663
+ DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
790
664
 
791
665
  virtual void PrintDataTo(StringStream* stream);
792
666
  };
793
667
 
794
668
 
795
- class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
796
- public:
797
- explicit LHasInstanceType(LOperand* value) {
798
- inputs_[0] = value;
799
- }
800
-
801
- DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
802
- DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
803
- };
804
-
805
-
806
669
  class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
807
670
  public:
808
671
  explicit LHasInstanceTypeAndBranch(LOperand* value) {
@@ -811,7 +674,7 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
811
674
 
812
675
  DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
813
676
  "has-instance-type-and-branch")
814
- DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
677
+ DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
815
678
 
816
679
  virtual void PrintDataTo(StringStream* stream);
817
680
  };
@@ -828,17 +691,6 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
828
691
  };
829
692
 
830
693
 
831
- class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
832
- public:
833
- explicit LHasCachedArrayIndex(LOperand* value) {
834
- inputs_[0] = value;
835
- }
836
-
837
- DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
838
- DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
839
- };
840
-
841
-
842
694
  class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
843
695
  public:
844
696
  explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
@@ -847,19 +699,7 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
847
699
 
848
700
  DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
849
701
  "has-cached-array-index-and-branch")
850
- virtual void PrintDataTo(StringStream* stream);
851
- };
852
-
853
-
854
- class LClassOfTest: public LTemplateInstruction<1, 1, 1> {
855
- public:
856
- LClassOfTest(LOperand* value, LOperand* temp) {
857
- inputs_[0] = value;
858
- temps_[0] = temp;
859
- }
860
-
861
- DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
862
- DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
702
+ DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
863
703
 
864
704
  virtual void PrintDataTo(StringStream* stream);
865
705
  };
@@ -874,7 +714,7 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 1> {
874
714
 
875
715
  DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
876
716
  "class-of-test-and-branch")
877
- DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
717
+ DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
878
718
 
879
719
  virtual void PrintDataTo(StringStream* stream);
880
720
  };
@@ -888,21 +728,7 @@ class LCmpT: public LTemplateInstruction<1, 2, 0> {
888
728
  }
889
729
 
890
730
  DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
891
- DECLARE_HYDROGEN_ACCESSOR(Compare)
892
-
893
- Token::Value op() const { return hydrogen()->token(); }
894
- };
895
-
896
-
897
- class LCmpTAndBranch: public LControlInstruction<2, 0> {
898
- public:
899
- LCmpTAndBranch(LOperand* left, LOperand* right) {
900
- inputs_[0] = left;
901
- inputs_[1] = right;
902
- }
903
-
904
- DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch")
905
- DECLARE_HYDROGEN_ACCESSOR(Compare)
731
+ DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
906
732
 
907
733
  Token::Value op() const { return hydrogen()->token(); }
908
734
  };
@@ -933,17 +759,6 @@ class LInstanceOf: public LTemplateInstruction<1, 2, 0> {
933
759
  };
934
760
 
935
761
 
936
- class LInstanceOfAndBranch: public LControlInstruction<2, 0> {
937
- public:
938
- LInstanceOfAndBranch(LOperand* left, LOperand* right) {
939
- inputs_[0] = left;
940
- inputs_[1] = right;
941
- }
942
-
943
- DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch")
944
- };
945
-
946
-
947
762
  class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> {
948
763
  public:
949
764
  LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) {
@@ -1059,7 +874,7 @@ class LBranch: public LControlInstruction<1, 0> {
1059
874
  }
1060
875
 
1061
876
  DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
1062
- DECLARE_HYDROGEN_ACCESSOR(Value)
877
+ DECLARE_HYDROGEN_ACCESSOR(Branch)
1063
878
 
1064
879
  virtual void PrintDataTo(StringStream* stream);
1065
880
  };
@@ -1097,25 +912,26 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
1097
912
  };
1098
913
 
1099
914
 
1100
- class LExternalArrayLength: public LTemplateInstruction<1, 1, 0> {
915
+ class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
1101
916
  public:
1102
- explicit LExternalArrayLength(LOperand* value) {
917
+ explicit LFixedArrayBaseLength(LOperand* value) {
1103
918
  inputs_[0] = value;
1104
919
  }
1105
920
 
1106
- DECLARE_CONCRETE_INSTRUCTION(ExternalArrayLength, "external-array-length")
1107
- DECLARE_HYDROGEN_ACCESSOR(ExternalArrayLength)
921
+ DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
922
+ "fixed-array-base-length")
923
+ DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
1108
924
  };
1109
925
 
1110
926
 
1111
- class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> {
927
+ class LElementsKind: public LTemplateInstruction<1, 1, 0> {
1112
928
  public:
1113
- explicit LFixedArrayLength(LOperand* value) {
929
+ explicit LElementsKind(LOperand* value) {
1114
930
  inputs_[0] = value;
1115
931
  }
1116
932
 
1117
- DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length")
1118
- DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength)
933
+ DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
934
+ DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
1119
935
  };
1120
936
 
1121
937
 
@@ -1309,6 +1125,22 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
1309
1125
  };
1310
1126
 
1311
1127
 
1128
+ class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
1129
+ public:
1130
+ LLoadKeyedFastDoubleElement(LOperand* elements, LOperand* key) {
1131
+ inputs_[0] = elements;
1132
+ inputs_[1] = key;
1133
+ }
1134
+
1135
+ DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
1136
+ "load-keyed-fast-double-element")
1137
+ DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
1138
+
1139
+ LOperand* elements() { return inputs_[0]; }
1140
+ LOperand* key() { return inputs_[1]; }
1141
+ };
1142
+
1143
+
1312
1144
  class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
1313
1145
  public:
1314
1146
  LLoadKeyedSpecializedArrayElement(LOperand* external_pointer,
@@ -1323,8 +1155,8 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
1323
1155
 
1324
1156
  LOperand* external_pointer() { return inputs_[0]; }
1325
1157
  LOperand* key() { return inputs_[1]; }
1326
- ExternalArrayType array_type() const {
1327
- return hydrogen()->array_type();
1158
+ JSObject::ElementsKind elements_kind() const {
1159
+ return hydrogen()->elements_kind();
1328
1160
  }
1329
1161
  };
1330
1162
 
@@ -1441,6 +1273,11 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
1441
1273
  };
1442
1274
 
1443
1275
 
1276
+ class LThisFunction: public LTemplateInstruction<1, 0, 0> {
1277
+ DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
1278
+ };
1279
+
1280
+
1444
1281
  class LContext: public LTemplateInstruction<1, 0, 0> {
1445
1282
  public:
1446
1283
  DECLARE_CONCRETE_INSTRUCTION(Context, "context")
@@ -1634,7 +1471,7 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 0> {
1634
1471
  }
1635
1472
 
1636
1473
  DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
1637
- DECLARE_HYDROGEN_ACCESSOR(Change)
1474
+ DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1638
1475
 
1639
1476
  bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1640
1477
  };
@@ -1649,7 +1486,7 @@ class LTaggedToI: public LTemplateInstruction<1, 1, 1> {
1649
1486
  }
1650
1487
 
1651
1488
  DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
1652
- DECLARE_HYDROGEN_ACCESSOR(Change)
1489
+ DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1653
1490
 
1654
1491
  bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1655
1492
  };
@@ -1672,6 +1509,7 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
1672
1509
  }
1673
1510
 
1674
1511
  DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
1512
+ DECLARE_HYDROGEN_ACCESSOR(Change);
1675
1513
  };
1676
1514
 
1677
1515
 
@@ -1754,6 +1592,28 @@ class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
1754
1592
  };
1755
1593
 
1756
1594
 
1595
+ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
1596
+ public:
1597
+ LStoreKeyedFastDoubleElement(LOperand* elements,
1598
+ LOperand* key,
1599
+ LOperand* val) {
1600
+ inputs_[0] = elements;
1601
+ inputs_[1] = key;
1602
+ inputs_[2] = val;
1603
+ }
1604
+
1605
+ DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
1606
+ "store-keyed-fast-double-element")
1607
+ DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
1608
+
1609
+ virtual void PrintDataTo(StringStream* stream);
1610
+
1611
+ LOperand* elements() { return inputs_[0]; }
1612
+ LOperand* key() { return inputs_[1]; }
1613
+ LOperand* value() { return inputs_[2]; }
1614
+ };
1615
+
1616
+
1757
1617
  class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
1758
1618
  public:
1759
1619
  LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
@@ -1771,8 +1631,8 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
1771
1631
  LOperand* external_pointer() { return inputs_[0]; }
1772
1632
  LOperand* key() { return inputs_[1]; }
1773
1633
  LOperand* value() { return inputs_[2]; }
1774
- ExternalArrayType array_type() const {
1775
- return hydrogen()->array_type();
1634
+ JSObject::ElementsKind elements_kind() const {
1635
+ return hydrogen()->elements_kind();
1776
1636
  }
1777
1637
  };
1778
1638
 
@@ -2012,21 +1872,6 @@ class LTypeof: public LTemplateInstruction<1, 1, 0> {
2012
1872
  };
2013
1873
 
2014
1874
 
2015
- class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
2016
- public:
2017
- explicit LTypeofIs(LOperand* value) {
2018
- inputs_[0] = value;
2019
- }
2020
-
2021
- DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
2022
- DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
2023
-
2024
- Handle<String> type_literal() { return hydrogen()->type_literal(); }
2025
-
2026
- virtual void PrintDataTo(StringStream* stream);
2027
- };
2028
-
2029
-
2030
1875
  class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2031
1876
  public:
2032
1877
  explicit LTypeofIsAndBranch(LOperand* value) {
@@ -2034,7 +1879,7 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2034
1879
  }
2035
1880
 
2036
1881
  DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
2037
- DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
1882
+ DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
2038
1883
 
2039
1884
  Handle<String> type_literal() { return hydrogen()->type_literal(); }
2040
1885
 
@@ -2042,13 +1887,6 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
2042
1887
  };
2043
1888
 
2044
1889
 
2045
- class LIsConstructCall: public LTemplateInstruction<1, 0, 0> {
2046
- public:
2047
- DECLARE_CONCRETE_INSTRUCTION(IsConstructCall, "is-construct-call")
2048
- DECLARE_HYDROGEN_ACCESSOR(IsConstructCall)
2049
- };
2050
-
2051
-
2052
1890
  class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
2053
1891
  public:
2054
1892
  explicit LIsConstructCallAndBranch(LOperand* temp) {
@@ -2057,6 +1895,7 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
2057
1895
 
2058
1896
  DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
2059
1897
  "is-construct-call-and-branch")
1898
+ DECLARE_HYDROGEN_ACCESSOR(IsConstructCallAndBranch)
2060
1899
  };
2061
1900
 
2062
1901
 
@@ -2100,6 +1939,12 @@ class LOsrEntry: public LTemplateInstruction<0, 0, 0> {
2100
1939
  class LStackCheck: public LTemplateInstruction<0, 0, 0> {
2101
1940
  public:
2102
1941
  DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
1942
+ DECLARE_HYDROGEN_ACCESSOR(StackCheck)
1943
+
1944
+ Label* done_label() { return &done_label_; }
1945
+
1946
+ private:
1947
+ Label done_label_;
2103
1948
  };
2104
1949
 
2105
1950
 
@@ -2279,14 +2124,18 @@ class LChunkBuilder BASE_EMBEDDED {
2279
2124
  template<int I, int T>
2280
2125
  LInstruction* DefineFixedDouble(LTemplateInstruction<1, I, T>* instr,
2281
2126
  XMMRegister reg);
2127
+ // Assigns an environment to an instruction. An instruction which can
2128
+ // deoptimize must have an environment.
2282
2129
  LInstruction* AssignEnvironment(LInstruction* instr);
2130
+ // Assigns a pointer map to an instruction. An instruction which can
2131
+ // trigger a GC or a lazy deoptimization must have a pointer map.
2283
2132
  LInstruction* AssignPointerMap(LInstruction* instr);
2284
2133
 
2285
2134
  enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY };
2286
2135
 
2287
- // By default we assume that instruction sequences generated for calls
2288
- // cannot deoptimize eagerly and we do not attach environment to this
2289
- // instruction.
2136
+ // Marks a call for the register allocator. Assigns a pointer map to
2137
+ // support GC and lazy deoptimization. Assigns an environment to support
2138
+ // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY.
2290
2139
  LInstruction* MarkAsCall(
2291
2140
  LInstruction* instr,
2292
2141
  HInstruction* hinstr,