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
@@ -65,7 +65,9 @@ inline Heap* _inline_get_heap_();
65
65
  V(Map, heap_number_map, HeapNumberMap) \
66
66
  V(Map, global_context_map, GlobalContextMap) \
67
67
  V(Map, fixed_array_map, FixedArrayMap) \
68
+ V(Map, serialized_scope_info_map, SerializedScopeInfoMap) \
68
69
  V(Map, fixed_cow_array_map, FixedCOWArrayMap) \
70
+ V(Map, fixed_double_array_map, FixedDoubleArrayMap) \
69
71
  V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \
70
72
  V(Map, meta_map, MetaMap) \
71
73
  V(Map, hash_table_map, HashTableMap) \
@@ -78,6 +80,7 @@ inline Heap* _inline_get_heap_();
78
80
  V(Object, termination_exception, TerminationException) \
79
81
  V(FixedArray, empty_fixed_array, EmptyFixedArray) \
80
82
  V(ByteArray, empty_byte_array, EmptyByteArray) \
83
+ V(FixedDoubleArray, empty_fixed_double_array, EmptyFixedDoubleArray) \
81
84
  V(String, empty_string, EmptyString) \
82
85
  V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \
83
86
  V(Map, string_map, StringMap) \
@@ -85,6 +88,8 @@ inline Heap* _inline_get_heap_();
85
88
  V(Map, symbol_map, SymbolMap) \
86
89
  V(Map, cons_string_map, ConsStringMap) \
87
90
  V(Map, cons_ascii_string_map, ConsAsciiStringMap) \
91
+ V(Map, sliced_string_map, SlicedStringMap) \
92
+ V(Map, sliced_ascii_string_map, SlicedAsciiStringMap) \
88
93
  V(Map, ascii_symbol_map, AsciiSymbolMap) \
89
94
  V(Map, cons_symbol_map, ConsSymbolMap) \
90
95
  V(Map, cons_ascii_symbol_map, ConsAsciiSymbolMap) \
@@ -105,8 +110,11 @@ inline Heap* _inline_get_heap_();
105
110
  V(Map, external_unsigned_int_array_map, ExternalUnsignedIntArrayMap) \
106
111
  V(Map, external_float_array_map, ExternalFloatArrayMap) \
107
112
  V(Map, external_double_array_map, ExternalDoubleArrayMap) \
108
- V(Map, context_map, ContextMap) \
113
+ V(Map, non_strict_arguments_elements_map, NonStrictArgumentsElementsMap) \
114
+ V(Map, function_context_map, FunctionContextMap) \
109
115
  V(Map, catch_context_map, CatchContextMap) \
116
+ V(Map, with_context_map, WithContextMap) \
117
+ V(Map, block_context_map, BlockContextMap) \
110
118
  V(Map, code_map, CodeMap) \
111
119
  V(Map, oddball_map, OddballMap) \
112
120
  V(Map, global_property_cell_map, GlobalPropertyCellMap) \
@@ -120,6 +128,7 @@ inline Heap* _inline_get_heap_();
120
128
  V(Foreign, prototype_accessors, PrototypeAccessors) \
121
129
  V(NumberDictionary, code_stubs, CodeStubs) \
122
130
  V(NumberDictionary, non_monomorphic_cache, NonMonomorphicCache) \
131
+ V(PolymorphicCodeCache, polymorphic_code_cache, PolymorphicCodeCache) \
123
132
  V(Code, js_entry_code, JsEntryCode) \
124
133
  V(Code, js_construct_entry_code, JsConstructEntryCode) \
125
134
  V(FixedArray, natives_source_cache, NativesSourceCache) \
@@ -139,7 +148,6 @@ inline Heap* _inline_get_heap_();
139
148
  V(StringImpl_symbol, "StringImpl") \
140
149
  V(arguments_symbol, "arguments") \
141
150
  V(Arguments_symbol, "Arguments") \
142
- V(arguments_shadow_symbol, ".arguments") \
143
151
  V(call_symbol, "call") \
144
152
  V(apply_symbol, "apply") \
145
153
  V(caller_symbol, "caller") \
@@ -155,6 +163,8 @@ inline Heap* _inline_get_heap_();
155
163
  V(function_symbol, "function") \
156
164
  V(length_symbol, "length") \
157
165
  V(name_symbol, "name") \
166
+ V(native_symbol, "native") \
167
+ V(null_symbol, "null") \
158
168
  V(number_symbol, "number") \
159
169
  V(Number_symbol, "Number") \
160
170
  V(nan_symbol, "NaN") \
@@ -178,14 +188,14 @@ inline Heap* _inline_get_heap_();
178
188
  V(value_of_symbol, "valueOf") \
179
189
  V(InitializeVarGlobal_symbol, "InitializeVarGlobal") \
180
190
  V(InitializeConstGlobal_symbol, "InitializeConstGlobal") \
181
- V(KeyedLoadSpecializedMonomorphic_symbol, \
182
- "KeyedLoadSpecializedMonomorphic") \
183
- V(KeyedLoadSpecializedPolymorphic_symbol, \
184
- "KeyedLoadSpecializedPolymorphic") \
185
- V(KeyedStoreSpecializedMonomorphic_symbol, \
186
- "KeyedStoreSpecializedMonomorphic") \
187
- V(KeyedStoreSpecializedPolymorphic_symbol, \
188
- "KeyedStoreSpecializedPolymorphic") \
191
+ V(KeyedLoadElementMonomorphic_symbol, \
192
+ "KeyedLoadElementMonomorphic") \
193
+ V(KeyedLoadElementPolymorphic_symbol, \
194
+ "KeyedLoadElementPolymorphic") \
195
+ V(KeyedStoreElementMonomorphic_symbol, \
196
+ "KeyedStoreElementMonomorphic") \
197
+ V(KeyedStoreElementPolymorphic_symbol, \
198
+ "KeyedStoreElementPolymorphic") \
189
199
  V(stack_overflow_symbol, "kStackOverflowBoilerplate") \
190
200
  V(illegal_access_symbol, "illegal access") \
191
201
  V(out_of_memory_symbol, "out-of-memory") \
@@ -213,7 +223,10 @@ inline Heap* _inline_get_heap_();
213
223
  V(global_eval_symbol, "GlobalEval") \
214
224
  V(identity_hash_symbol, "v8::IdentityHash") \
215
225
  V(closure_symbol, "(closure)") \
216
- V(use_strict, "use strict")
226
+ V(use_strict, "use strict") \
227
+ V(dot_symbol, ".") \
228
+ V(anonymous_function_symbol, "(anonymous function)") \
229
+ V(block_scope_symbol, ".block")
217
230
 
218
231
  // Forward declarations.
219
232
  class GCTracer;
@@ -402,12 +415,6 @@ class Heap {
402
415
  // Uncommit unused semi space.
403
416
  bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); }
404
417
 
405
- #ifdef ENABLE_HEAP_PROTECTION
406
- // Protect/unprotect the heap by marking all spaces read-only/writable.
407
- void Protect();
408
- void Unprotect();
409
- #endif
410
-
411
418
  // Allocates and initializes a new JavaScript object based on a
412
419
  // constructor.
413
420
  // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
@@ -440,6 +447,11 @@ class Heap {
440
447
  MUST_USE_RESULT MaybeObject* AllocateJSProxy(Object* handler,
441
448
  Object* prototype);
442
449
 
450
+ // Reinitialize a JSProxy into an (empty) JSObject. The receiver
451
+ // must have the same size as an empty object. The object is reinitialized
452
+ // and behaves as an object that has been freshly allocated.
453
+ MUST_USE_RESULT MaybeObject* ReinitializeJSProxyAsJSObject(JSProxy* object);
454
+
443
455
  // Reinitialize an JSGlobalProxy based on a constructor. The object
444
456
  // must have the same size as objects allocated using the
445
457
  // constructor. The object is reinitialized and behaves as an
@@ -477,6 +489,12 @@ class Heap {
477
489
  // Allocates an empty code cache.
478
490
  MUST_USE_RESULT MaybeObject* AllocateCodeCache();
479
491
 
492
+ // Allocates a serialized scope info.
493
+ MUST_USE_RESULT MaybeObject* AllocateSerializedScopeInfo(int length);
494
+
495
+ // Allocates an empty PolymorphicCodeCache.
496
+ MUST_USE_RESULT MaybeObject* AllocatePolymorphicCodeCache();
497
+
480
498
  // Clear the Instanceof cache (used when a prototype changes).
481
499
  inline void ClearInstanceofCache();
482
500
 
@@ -608,6 +626,16 @@ class Heap {
608
626
  // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
609
627
  MUST_USE_RESULT MaybeObject* CopyFixedArrayWithMap(FixedArray* src, Map* map);
610
628
 
629
+ // Make a copy of src and return it. Returns
630
+ // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
631
+ MUST_USE_RESULT inline MaybeObject* CopyFixedDoubleArray(
632
+ FixedDoubleArray* src);
633
+
634
+ // Make a copy of src, set the map, and return the copy. Returns
635
+ // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
636
+ MUST_USE_RESULT MaybeObject* CopyFixedDoubleArrayWithMap(
637
+ FixedDoubleArray* src, Map* map);
638
+
611
639
  // Allocates a fixed array initialized with the hole values.
612
640
  // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
613
641
  // failed.
@@ -616,6 +644,17 @@ class Heap {
616
644
  int length,
617
645
  PretenureFlag pretenure = NOT_TENURED);
618
646
 
647
+ MUST_USE_RESULT MaybeObject* AllocateRawFixedDoubleArray(
648
+ int length,
649
+ PretenureFlag pretenure);
650
+
651
+ // Allocates a fixed double array with uninitialized values. Returns
652
+ // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
653
+ // Please note this does not perform a garbage collection.
654
+ MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedDoubleArray(
655
+ int length,
656
+ PretenureFlag pretenure = NOT_TENURED);
657
+
619
658
  // AllocateHashTable is identical to AllocateFixedArray except
620
659
  // that the resulting object has hash_table_map as map.
621
660
  MUST_USE_RESULT MaybeObject* AllocateHashTable(
@@ -626,12 +665,22 @@ class Heap {
626
665
 
627
666
  // Allocate a function context.
628
667
  MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length,
629
- JSFunction* closure);
668
+ JSFunction* function);
630
669
 
670
+ // Allocate a catch context.
671
+ MUST_USE_RESULT MaybeObject* AllocateCatchContext(JSFunction* function,
672
+ Context* previous,
673
+ String* name,
674
+ Object* thrown_object);
631
675
  // Allocate a 'with' context.
632
- MUST_USE_RESULT MaybeObject* AllocateWithContext(Context* previous,
633
- JSObject* extension,
634
- bool is_catch_context);
676
+ MUST_USE_RESULT MaybeObject* AllocateWithContext(JSFunction* function,
677
+ Context* previous,
678
+ JSObject* extension);
679
+
680
+ // Allocate a block context.
681
+ MUST_USE_RESULT MaybeObject* AllocateBlockContext(JSFunction* function,
682
+ Context* previous,
683
+ SerializedScopeInfo* info);
635
684
 
636
685
  // Allocates a new utility object in the old generation.
637
686
  MUST_USE_RESULT MaybeObject* AllocateStruct(InstanceType type);
@@ -1026,10 +1075,8 @@ class Heap {
1026
1075
  void ZapFromSpace();
1027
1076
  #endif
1028
1077
 
1029
- #if defined(ENABLE_LOGGING_AND_PROFILING)
1030
1078
  // Print short heap statistics.
1031
1079
  void PrintShortHeapStatistics();
1032
- #endif
1033
1080
 
1034
1081
  // Makes a new symbol object
1035
1082
  // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
@@ -1054,6 +1101,8 @@ class Heap {
1054
1101
  enum HeapState { NOT_IN_GC, SCAVENGE, MARK_COMPACT };
1055
1102
  inline HeapState gc_state() { return gc_state_; }
1056
1103
 
1104
+ inline bool IsInGCPostProcessing() { return gc_post_processing_depth_ > 0; }
1105
+
1057
1106
  #ifdef DEBUG
1058
1107
  bool IsAllocationAllowed() { return allocation_allowed_; }
1059
1108
  inline bool allow_allocation(bool enable);
@@ -1228,6 +1277,11 @@ class Heap {
1228
1277
  return &external_string_table_;
1229
1278
  }
1230
1279
 
1280
+ // Returns the current sweep generation.
1281
+ int sweep_generation() {
1282
+ return sweep_generation_;
1283
+ }
1284
+
1231
1285
  inline Isolate* isolate();
1232
1286
  bool is_safe_to_read_maps() { return is_safe_to_read_maps_; }
1233
1287
 
@@ -1257,6 +1311,9 @@ class Heap {
1257
1311
  // scavenge since last new space expansion.
1258
1312
  int survived_since_last_expansion_;
1259
1313
 
1314
+ // For keeping track on when to flush RegExp code.
1315
+ int sweep_generation_;
1316
+
1260
1317
  int always_allocate_scope_depth_;
1261
1318
  int linear_allocation_scope_depth_;
1262
1319
 
@@ -1277,6 +1334,7 @@ class Heap {
1277
1334
  CellSpace* cell_space_;
1278
1335
  LargeObjectSpace* lo_space_;
1279
1336
  HeapState gc_state_;
1337
+ int gc_post_processing_depth_;
1280
1338
 
1281
1339
  // Returns the size of object residing in non new spaces.
1282
1340
  intptr_t PromotedSpaceSize();
@@ -1453,6 +1511,9 @@ class Heap {
1453
1511
  // Allocate empty fixed array.
1454
1512
  MUST_USE_RESULT MaybeObject* AllocateEmptyFixedArray();
1455
1513
 
1514
+ // Allocate empty fixed double array.
1515
+ MUST_USE_RESULT MaybeObject* AllocateEmptyFixedDoubleArray();
1516
+
1456
1517
  void SwitchScavengingVisitorsTableIfProfilingWasEnabled();
1457
1518
 
1458
1519
  // Performs a minor collection in new generation.
@@ -1474,11 +1535,9 @@ class Heap {
1474
1535
  // around a GC).
1475
1536
  inline void CompletelyClearInstanceofCache();
1476
1537
 
1477
- #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1478
1538
  // Record statistics before and after garbage collection.
1479
1539
  void ReportStatisticsBeforeGC();
1480
1540
  void ReportStatisticsAfterGC();
1481
- #endif
1482
1541
 
1483
1542
  // Slow part of scavenge object.
1484
1543
  static void ScavengeObjectSlow(HeapObject** p, HeapObject* object);
@@ -1601,6 +1660,7 @@ class Heap {
1601
1660
  friend class Page;
1602
1661
  friend class Isolate;
1603
1662
  friend class MarkCompactCollector;
1663
+ friend class StaticMarkingVisitor;
1604
1664
  friend class MapCompact;
1605
1665
 
1606
1666
  DISALLOW_COPY_AND_ASSIGN(Heap);
@@ -1630,7 +1690,7 @@ class HeapStats {
1630
1690
  int* weak_global_handle_count; // 15
1631
1691
  int* pending_global_handle_count; // 16
1632
1692
  int* near_death_global_handle_count; // 17
1633
- int* destroyed_global_handle_count; // 18
1693
+ int* free_global_handle_count; // 18
1634
1694
  intptr_t* memory_allocator_size; // 19
1635
1695
  intptr_t* memory_allocator_capacity; // 20
1636
1696
  int* objects_per_type; // 21
@@ -1898,6 +1958,7 @@ class DescriptorLookupCache {
1898
1958
  void Clear();
1899
1959
 
1900
1960
  static const int kAbsent = -2;
1961
+
1901
1962
  private:
1902
1963
  DescriptorLookupCache() {
1903
1964
  for (int i = 0; i < kLength; ++i) {
@@ -635,6 +635,13 @@ void HBinaryCall::PrintDataTo(StringStream* stream) {
635
635
  }
636
636
 
637
637
 
638
+ void HBoundsCheck::PrintDataTo(StringStream* stream) {
639
+ index()->PrintNameTo(stream);
640
+ stream->Add(" ");
641
+ length()->PrintNameTo(stream);
642
+ }
643
+
644
+
638
645
  void HCallConstantFunction::PrintDataTo(StringStream* stream) {
639
646
  if (IsApplyFunction()) {
640
647
  stream->Add("optimized apply ");
@@ -669,7 +676,7 @@ void HCallRuntime::PrintDataTo(StringStream* stream) {
669
676
  }
670
677
 
671
678
 
672
- void HClassOfTest::PrintDataTo(StringStream* stream) {
679
+ void HClassOfTestAndBranch::PrintDataTo(StringStream* stream) {
673
680
  stream->Add("class_of_test(");
674
681
  value()->PrintNameTo(stream);
675
682
  stream->Add(", \"%o\")", *class_name());
@@ -686,15 +693,13 @@ void HAccessArgumentsAt::PrintDataTo(StringStream* stream) {
686
693
 
687
694
 
688
695
  void HControlInstruction::PrintDataTo(StringStream* stream) {
689
- if (FirstSuccessor() != NULL) {
690
- int first_id = FirstSuccessor()->block_id();
691
- if (SecondSuccessor() == NULL) {
692
- stream->Add(" B%d", first_id);
693
- } else {
694
- int second_id = SecondSuccessor()->block_id();
695
- stream->Add(" goto (B%d, B%d)", first_id, second_id);
696
- }
696
+ stream->Add(" goto (");
697
+ bool first_block = true;
698
+ for (HSuccessorIterator it(this); !it.Done(); it.Advance()) {
699
+ stream->Add(first_block ? "B%d" : ", B%d", it.Current()->block_id());
700
+ first_block = false;
697
701
  }
702
+ stream->Add(")");
698
703
  }
699
704
 
700
705
 
@@ -704,6 +709,11 @@ void HUnaryControlInstruction::PrintDataTo(StringStream* stream) {
704
709
  }
705
710
 
706
711
 
712
+ void HReturn::PrintDataTo(StringStream* stream) {
713
+ value()->PrintNameTo(stream);
714
+ }
715
+
716
+
707
717
  void HCompareMap::PrintDataTo(StringStream* stream) {
708
718
  value()->PrintNameTo(stream);
709
719
  stream->Add(" (%p)", *map());
@@ -744,10 +754,10 @@ void HUnaryOperation::PrintDataTo(StringStream* stream) {
744
754
  }
745
755
 
746
756
 
747
- void HHasInstanceType::PrintDataTo(StringStream* stream) {
757
+ void HHasInstanceTypeAndBranch::PrintDataTo(StringStream* stream) {
748
758
  value()->PrintNameTo(stream);
749
759
  switch (from_) {
750
- case FIRST_JS_OBJECT_TYPE:
760
+ case FIRST_JS_RECEIVER_TYPE:
751
761
  if (to_ == LAST_TYPE) stream->Add(" spec_object");
752
762
  break;
753
763
  case JS_REGEXP_TYPE:
@@ -765,10 +775,10 @@ void HHasInstanceType::PrintDataTo(StringStream* stream) {
765
775
  }
766
776
 
767
777
 
768
- void HTypeofIs::PrintDataTo(StringStream* stream) {
778
+ void HTypeofIsAndBranch::PrintDataTo(StringStream* stream) {
769
779
  value()->PrintNameTo(stream);
770
780
  stream->Add(" == ");
771
- stream->Add(type_literal_->ToAsciiVector());
781
+ stream->Add(type_literal_->GetFlatContent().ToAsciiVector());
772
782
  }
773
783
 
774
784
 
@@ -781,14 +791,28 @@ void HChange::PrintDataTo(StringStream* stream) {
781
791
  }
782
792
 
783
793
 
794
+ HValue* HCheckInstanceType::Canonicalize() {
795
+ if (check_ == IS_STRING &&
796
+ !value()->type().IsUninitialized() &&
797
+ value()->type().IsString()) {
798
+ return NULL;
799
+ }
800
+ if (check_ == IS_SYMBOL &&
801
+ value()->IsConstant() &&
802
+ HConstant::cast(value())->handle()->IsSymbol()) {
803
+ return NULL;
804
+ }
805
+ return this;
806
+ }
807
+
808
+
784
809
  void HCheckInstanceType::GetCheckInterval(InstanceType* first,
785
810
  InstanceType* last) {
786
811
  ASSERT(is_interval_check());
787
812
  switch (check_) {
788
- case IS_JS_OBJECT_OR_JS_FUNCTION:
789
- STATIC_ASSERT((LAST_JS_OBJECT_TYPE + 1) == JS_FUNCTION_TYPE);
790
- *first = FIRST_JS_OBJECT_TYPE;
791
- *last = JS_FUNCTION_TYPE;
813
+ case IS_SPEC_OBJECT:
814
+ *first = FIRST_SPEC_OBJECT_TYPE;
815
+ *last = LAST_SPEC_OBJECT_TYPE;
792
816
  return;
793
817
  case IS_JS_ARRAY:
794
818
  *first = *last = JS_ARRAY_TYPE;
@@ -845,19 +869,25 @@ void HInstanceOf::PrintDataTo(StringStream* stream) {
845
869
 
846
870
 
847
871
  Range* HValue::InferRange() {
848
- if (representation().IsTagged()) {
849
- // Tagged values are always in int32 range when converted to integer,
850
- // but they can contain -0.
851
- Range* result = new Range();
852
- result->set_can_be_minus_zero(true);
853
- return result;
854
- } else if (representation().IsNone()) {
855
- return NULL;
856
- } else {
857
- // Untagged integer32 cannot be -0 and we don't compute ranges for
858
- // untagged doubles.
859
- return new Range();
872
+ // Untagged integer32 cannot be -0, all other representations can.
873
+ Range* result = new Range();
874
+ result->set_can_be_minus_zero(!representation().IsInteger32());
875
+ return result;
876
+ }
877
+
878
+
879
+ Range* HChange::InferRange() {
880
+ Range* input_range = value()->range();
881
+ if (from().IsInteger32() &&
882
+ to().IsTagged() &&
883
+ input_range != NULL && input_range->IsInSmiRange()) {
884
+ set_type(HType::Smi());
860
885
  }
886
+ Range* result = (input_range != NULL)
887
+ ? input_range->Copy()
888
+ : HValue::InferRange();
889
+ if (to().IsInteger32()) result->set_can_be_minus_zero(false);
890
+ return result;
861
891
  }
862
892
 
863
893
 
@@ -1084,6 +1114,16 @@ void HSimulate::PrintDataTo(StringStream* stream) {
1084
1114
  }
1085
1115
 
1086
1116
 
1117
+ void HDeoptimize::PrintDataTo(StringStream* stream) {
1118
+ if (OperandCount() == 0) return;
1119
+ OperandAt(0)->PrintNameTo(stream);
1120
+ for (int i = 1; i < OperandCount(); ++i) {
1121
+ stream->Add(" ");
1122
+ OperandAt(i)->PrintNameTo(stream);
1123
+ }
1124
+ }
1125
+
1126
+
1087
1127
  void HEnterInlined::PrintDataTo(StringStream* stream) {
1088
1128
  SmartPointer<char> name = function()->debug_name()->ToCString();
1089
1129
  stream->Add("%s, id=%d", *name, function()->id());
@@ -1196,6 +1236,7 @@ Range* HSar::InferRange() {
1196
1236
  ? left()->range()->Copy()
1197
1237
  : new Range();
1198
1238
  result->Sar(c->Integer32Value());
1239
+ result->set_can_be_minus_zero(false);
1199
1240
  return result;
1200
1241
  }
1201
1242
  }
@@ -1203,6 +1244,31 @@ Range* HSar::InferRange() {
1203
1244
  }
1204
1245
 
1205
1246
 
1247
+ Range* HShr::InferRange() {
1248
+ if (right()->IsConstant()) {
1249
+ HConstant* c = HConstant::cast(right());
1250
+ if (c->HasInteger32Value()) {
1251
+ int shift_count = c->Integer32Value() & 0x1f;
1252
+ if (left()->range()->CanBeNegative()) {
1253
+ // Only compute bounds if the result always fits into an int32.
1254
+ return (shift_count >= 1)
1255
+ ? new Range(0, static_cast<uint32_t>(0xffffffff) >> shift_count)
1256
+ : new Range();
1257
+ } else {
1258
+ // For positive inputs we can use the >> operator.
1259
+ Range* result = (left()->range() != NULL)
1260
+ ? left()->range()->Copy()
1261
+ : new Range();
1262
+ result->Sar(c->Integer32Value());
1263
+ result->set_can_be_minus_zero(false);
1264
+ return result;
1265
+ }
1266
+ }
1267
+ }
1268
+ return HValue::InferRange();
1269
+ }
1270
+
1271
+
1206
1272
  Range* HShl::InferRange() {
1207
1273
  if (right()->IsConstant()) {
1208
1274
  HConstant* c = HConstant::cast(right());
@@ -1211,6 +1277,7 @@ Range* HShl::InferRange() {
1211
1277
  ? left()->range()->Copy()
1212
1278
  : new Range();
1213
1279
  result->Shl(c->Integer32Value());
1280
+ result->set_can_be_minus_zero(false);
1214
1281
  return result;
1215
1282
  }
1216
1283
  }
@@ -1219,21 +1286,28 @@ Range* HShl::InferRange() {
1219
1286
 
1220
1287
 
1221
1288
 
1222
- void HCompare::PrintDataTo(StringStream* stream) {
1289
+ void HCompareGeneric::PrintDataTo(StringStream* stream) {
1223
1290
  stream->Add(Token::Name(token()));
1224
1291
  stream->Add(" ");
1225
1292
  HBinaryOperation::PrintDataTo(stream);
1226
1293
  }
1227
1294
 
1228
1295
 
1229
- void HCompare::SetInputRepresentation(Representation r) {
1296
+ void HCompareIDAndBranch::PrintDataTo(StringStream* stream) {
1297
+ stream->Add(Token::Name(token()));
1298
+ stream->Add(" ");
1299
+ left()->PrintNameTo(stream);
1300
+ stream->Add(" ");
1301
+ right()->PrintNameTo(stream);
1302
+ }
1303
+
1304
+
1305
+ void HCompareIDAndBranch::SetInputRepresentation(Representation r) {
1230
1306
  input_representation_ = r;
1231
- if (r.IsTagged()) {
1232
- SetAllSideEffects();
1233
- ClearFlag(kUseGVN);
1307
+ if (r.IsDouble()) {
1308
+ SetFlag(kDeoptimizeOnUndefined);
1234
1309
  } else {
1235
- ClearAllSideEffects();
1236
- SetFlag(kUseGVN);
1310
+ ASSERT(r.IsInteger32());
1237
1311
  }
1238
1312
  }
1239
1313
 
@@ -1249,13 +1323,15 @@ void HLoadNamedField::PrintDataTo(StringStream* stream) {
1249
1323
  }
1250
1324
 
1251
1325
 
1252
- HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* object,
1253
- ZoneMapList* types,
1326
+ HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
1327
+ HValue* object,
1328
+ SmallMapList* types,
1254
1329
  Handle<String> name)
1255
- : HUnaryOperation(object),
1256
- types_(Min(types->length(), kMaxLoadPolymorphism)),
1330
+ : types_(Min(types->length(), kMaxLoadPolymorphism)),
1257
1331
  name_(name),
1258
1332
  need_generic_(false) {
1333
+ SetOperandAt(0, context);
1334
+ SetOperandAt(1, object);
1259
1335
  set_representation(Representation::Tagged());
1260
1336
  SetFlag(kDependsOnMaps);
1261
1337
  for (int i = 0;
@@ -1313,6 +1389,20 @@ bool HLoadNamedFieldPolymorphic::DataEquals(HValue* value) {
1313
1389
  }
1314
1390
 
1315
1391
 
1392
+ void HLoadNamedFieldPolymorphic::PrintDataTo(StringStream* stream) {
1393
+ object()->PrintNameTo(stream);
1394
+ stream->Add(" .");
1395
+ stream->Add(*String::cast(*name())->ToCString());
1396
+ }
1397
+
1398
+
1399
+ void HLoadNamedGeneric::PrintDataTo(StringStream* stream) {
1400
+ object()->PrintNameTo(stream);
1401
+ stream->Add(" .");
1402
+ stream->Add(*String::cast(*name())->ToCString());
1403
+ }
1404
+
1405
+
1316
1406
  void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) {
1317
1407
  object()->PrintNameTo(stream);
1318
1408
  stream->Add("[");
@@ -1330,6 +1420,19 @@ bool HLoadKeyedFastElement::RequiresHoleCheck() const {
1330
1420
  }
1331
1421
 
1332
1422
 
1423
+ void HLoadKeyedFastDoubleElement::PrintDataTo(StringStream* stream) {
1424
+ elements()->PrintNameTo(stream);
1425
+ stream->Add("[");
1426
+ key()->PrintNameTo(stream);
1427
+ stream->Add("]");
1428
+ }
1429
+
1430
+
1431
+ bool HLoadKeyedFastDoubleElement::RequiresHoleCheck() const {
1432
+ return true;
1433
+ }
1434
+
1435
+
1333
1436
  void HLoadKeyedGeneric::PrintDataTo(StringStream* stream) {
1334
1437
  object()->PrintNameTo(stream);
1335
1438
  stream->Add("[");
@@ -1342,34 +1445,40 @@ void HLoadKeyedSpecializedArrayElement::PrintDataTo(
1342
1445
  StringStream* stream) {
1343
1446
  external_pointer()->PrintNameTo(stream);
1344
1447
  stream->Add(".");
1345
- switch (array_type()) {
1346
- case kExternalByteArray:
1448
+ switch (elements_kind()) {
1449
+ case JSObject::EXTERNAL_BYTE_ELEMENTS:
1347
1450
  stream->Add("byte");
1348
1451
  break;
1349
- case kExternalUnsignedByteArray:
1452
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
1350
1453
  stream->Add("u_byte");
1351
1454
  break;
1352
- case kExternalShortArray:
1455
+ case JSObject::EXTERNAL_SHORT_ELEMENTS:
1353
1456
  stream->Add("short");
1354
1457
  break;
1355
- case kExternalUnsignedShortArray:
1458
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
1356
1459
  stream->Add("u_short");
1357
1460
  break;
1358
- case kExternalIntArray:
1461
+ case JSObject::EXTERNAL_INT_ELEMENTS:
1359
1462
  stream->Add("int");
1360
1463
  break;
1361
- case kExternalUnsignedIntArray:
1464
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
1362
1465
  stream->Add("u_int");
1363
1466
  break;
1364
- case kExternalFloatArray:
1467
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS:
1365
1468
  stream->Add("float");
1366
1469
  break;
1367
- case kExternalDoubleArray:
1470
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
1368
1471
  stream->Add("double");
1369
1472
  break;
1370
- case kExternalPixelArray:
1473
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS:
1371
1474
  stream->Add("pixel");
1372
1475
  break;
1476
+ case JSObject::FAST_ELEMENTS:
1477
+ case JSObject::FAST_DOUBLE_ELEMENTS:
1478
+ case JSObject::DICTIONARY_ELEMENTS:
1479
+ case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
1480
+ UNREACHABLE();
1481
+ break;
1373
1482
  }
1374
1483
  stream->Add("[");
1375
1484
  key()->PrintNameTo(stream);
@@ -1409,6 +1518,15 @@ void HStoreKeyedFastElement::PrintDataTo(StringStream* stream) {
1409
1518
  }
1410
1519
 
1411
1520
 
1521
+ void HStoreKeyedFastDoubleElement::PrintDataTo(StringStream* stream) {
1522
+ elements()->PrintNameTo(stream);
1523
+ stream->Add("[");
1524
+ key()->PrintNameTo(stream);
1525
+ stream->Add("] = ");
1526
+ value()->PrintNameTo(stream);
1527
+ }
1528
+
1529
+
1412
1530
  void HStoreKeyedGeneric::PrintDataTo(StringStream* stream) {
1413
1531
  object()->PrintNameTo(stream);
1414
1532
  stream->Add("[");
@@ -1422,34 +1540,40 @@ void HStoreKeyedSpecializedArrayElement::PrintDataTo(
1422
1540
  StringStream* stream) {
1423
1541
  external_pointer()->PrintNameTo(stream);
1424
1542
  stream->Add(".");
1425
- switch (array_type()) {
1426
- case kExternalByteArray:
1543
+ switch (elements_kind()) {
1544
+ case JSObject::EXTERNAL_BYTE_ELEMENTS:
1427
1545
  stream->Add("byte");
1428
1546
  break;
1429
- case kExternalUnsignedByteArray:
1547
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
1430
1548
  stream->Add("u_byte");
1431
1549
  break;
1432
- case kExternalShortArray:
1550
+ case JSObject::EXTERNAL_SHORT_ELEMENTS:
1433
1551
  stream->Add("short");
1434
1552
  break;
1435
- case kExternalUnsignedShortArray:
1553
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
1436
1554
  stream->Add("u_short");
1437
1555
  break;
1438
- case kExternalIntArray:
1556
+ case JSObject::EXTERNAL_INT_ELEMENTS:
1439
1557
  stream->Add("int");
1440
1558
  break;
1441
- case kExternalUnsignedIntArray:
1559
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
1442
1560
  stream->Add("u_int");
1443
1561
  break;
1444
- case kExternalFloatArray:
1562
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS:
1445
1563
  stream->Add("float");
1446
1564
  break;
1447
- case kExternalDoubleArray:
1565
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
1448
1566
  stream->Add("double");
1449
1567
  break;
1450
- case kExternalPixelArray:
1568
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS:
1451
1569
  stream->Add("pixel");
1452
1570
  break;
1571
+ case JSObject::FAST_ELEMENTS:
1572
+ case JSObject::FAST_DOUBLE_ELEMENTS:
1573
+ case JSObject::DICTIONARY_ELEMENTS:
1574
+ case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
1575
+ UNREACHABLE();
1576
+ break;
1453
1577
  }
1454
1578
  stream->Add("[");
1455
1579
  key()->PrintNameTo(stream);
@@ -1538,17 +1662,22 @@ HType HConstant::CalculateInferredType() {
1538
1662
  }
1539
1663
 
1540
1664
 
1541
- HType HCompare::CalculateInferredType() {
1665
+ HType HCompareGeneric::CalculateInferredType() {
1542
1666
  return HType::Boolean();
1543
1667
  }
1544
1668
 
1545
1669
 
1546
- HType HCompareJSObjectEq::CalculateInferredType() {
1670
+ HType HInstanceOf::CalculateInferredType() {
1547
1671
  return HType::Boolean();
1548
1672
  }
1549
1673
 
1550
1674
 
1551
- HType HUnaryPredicate::CalculateInferredType() {
1675
+ HType HDeleteProperty::CalculateInferredType() {
1676
+ return HType::Boolean();
1677
+ }
1678
+
1679
+
1680
+ HType HInstanceOfKnownGlobal::CalculateInferredType() {
1552
1681
  return HType::Boolean();
1553
1682
  }
1554
1683
 
@@ -1723,12 +1852,6 @@ void HSimulate::Verify() {
1723
1852
  }
1724
1853
 
1725
1854
 
1726
- void HBoundsCheck::Verify() {
1727
- HInstruction::Verify();
1728
- ASSERT(HasNoUses());
1729
- }
1730
-
1731
-
1732
1855
  void HCheckSmi::Verify() {
1733
1856
  HInstruction::Verify();
1734
1857
  ASSERT(HasNoUses());
@@ -1741,18 +1864,6 @@ void HCheckNonSmi::Verify() {
1741
1864
  }
1742
1865
 
1743
1866
 
1744
- void HCheckInstanceType::Verify() {
1745
- HInstruction::Verify();
1746
- ASSERT(HasNoUses());
1747
- }
1748
-
1749
-
1750
- void HCheckMap::Verify() {
1751
- HInstruction::Verify();
1752
- ASSERT(HasNoUses());
1753
- }
1754
-
1755
-
1756
1867
  void HCheckFunction::Verify() {
1757
1868
  HInstruction::Verify();
1758
1869
  ASSERT(HasNoUses());