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
@@ -41,6 +41,7 @@ const char* Variable::Mode2String(Mode mode) {
41
41
  switch (mode) {
42
42
  case VAR: return "VAR";
43
43
  case CONST: return "CONST";
44
+ case LET: return "LET";
44
45
  case DYNAMIC: return "DYNAMIC";
45
46
  case DYNAMIC_GLOBAL: return "DYNAMIC_GLOBAL";
46
47
  case DYNAMIC_LOCAL: return "DYNAMIC_LOCAL";
@@ -57,32 +58,26 @@ Property* Variable::AsProperty() const {
57
58
  }
58
59
 
59
60
 
60
- Slot* Variable::AsSlot() const {
61
- return rewrite_ == NULL ? NULL : rewrite_->AsSlot();
62
- }
61
+ Slot* Variable::AsSlot() const { return rewrite_; }
63
62
 
64
63
 
65
64
  bool Variable::IsStackAllocated() const {
66
- Slot* slot = AsSlot();
67
- return slot != NULL && slot->IsStackAllocated();
65
+ return rewrite_ != NULL && rewrite_->IsStackAllocated();
68
66
  }
69
67
 
70
68
 
71
69
  bool Variable::IsParameter() const {
72
- Slot* s = AsSlot();
73
- return s != NULL && s->type() == Slot::PARAMETER;
70
+ return rewrite_ != NULL && rewrite_->type() == Slot::PARAMETER;
74
71
  }
75
72
 
76
73
 
77
74
  bool Variable::IsStackLocal() const {
78
- Slot* s = AsSlot();
79
- return s != NULL && s->type() == Slot::LOCAL;
75
+ return rewrite_ != NULL && rewrite_->type() == Slot::LOCAL;
80
76
  }
81
77
 
82
78
 
83
79
  bool Variable::IsContextSlot() const {
84
- Slot* s = AsSlot();
85
- return s != NULL && s->type() == Slot::CONTEXT;
80
+ return rewrite_ != NULL && rewrite_->type() == Slot::CONTEXT;
86
81
  }
87
82
 
88
83
 
@@ -98,7 +93,7 @@ Variable::Variable(Scope* scope,
98
93
  local_if_not_shadowed_(NULL),
99
94
  rewrite_(NULL),
100
95
  is_valid_LHS_(is_valid_LHS),
101
- is_accessed_from_inner_scope_(false),
96
+ is_accessed_from_inner_function_scope_(false),
102
97
  is_used_(false) {
103
98
  // names must be canonicalized for fast equality checks
104
99
  ASSERT(name->IsSymbol());
@@ -46,6 +46,8 @@ class Variable: public ZoneObject {
46
46
 
47
47
  CONST, // declared via 'const' declarations
48
48
 
49
+ LET, // declared via 'let' declarations
50
+
49
51
  // Variables introduced by the compiler:
50
52
  DYNAMIC, // always require dynamic lookup (we don't know
51
53
  // the declaration)
@@ -81,7 +83,7 @@ class Variable: public ZoneObject {
81
83
  // Printing support
82
84
  static const char* Mode2String(Mode mode);
83
85
 
84
- // Type testing & conversion
86
+ // Type testing & conversion. Global variables are not slots.
85
87
  Property* AsProperty() const;
86
88
  Slot* AsSlot() const;
87
89
 
@@ -95,11 +97,12 @@ class Variable: public ZoneObject {
95
97
 
96
98
  Handle<String> name() const { return name_; }
97
99
  Mode mode() const { return mode_; }
98
- bool is_accessed_from_inner_scope() const {
99
- return is_accessed_from_inner_scope_;
100
+ bool is_accessed_from_inner_function_scope() const {
101
+ return is_accessed_from_inner_function_scope_;
100
102
  }
101
- void MarkAsAccessedFromInnerScope() {
102
- is_accessed_from_inner_scope_ = true;
103
+ void MarkAsAccessedFromInnerFunctionScope() {
104
+ ASSERT(mode_ != TEMPORARY);
105
+ is_accessed_from_inner_function_scope_ = true;
103
106
  }
104
107
  bool is_used() { return is_used_; }
105
108
  void set_is_used(bool flag) { is_used_ = flag; }
@@ -138,8 +141,8 @@ class Variable: public ZoneObject {
138
141
  local_if_not_shadowed_ = local;
139
142
  }
140
143
 
141
- Expression* rewrite() const { return rewrite_; }
142
- void set_rewrite(Expression* expr) { rewrite_ = expr; }
144
+ Slot* rewrite() const { return rewrite_; }
145
+ void set_rewrite(Slot* slot) { rewrite_ = slot; }
143
146
 
144
147
  private:
145
148
  Scope* scope_;
@@ -150,14 +153,13 @@ class Variable: public ZoneObject {
150
153
  Variable* local_if_not_shadowed_;
151
154
 
152
155
  // Code generation.
153
- // rewrite_ is usually a Slot or a Property, but may be any expression.
154
- Expression* rewrite_;
156
+ Slot* rewrite_;
155
157
 
156
158
  // Valid as a LHS? (const and this are not valid LHS, for example)
157
159
  bool is_valid_LHS_;
158
160
 
159
161
  // Usage info.
160
- bool is_accessed_from_inner_scope_; // set by variable resolver
162
+ bool is_accessed_from_inner_function_scope_; // set by variable resolver
161
163
  bool is_used_;
162
164
  };
163
165
 
@@ -33,8 +33,8 @@
33
33
  // NOTE these macros are used by the SCons build script so their names
34
34
  // cannot be changed without changing the SCons build script.
35
35
  #define MAJOR_VERSION 3
36
- #define MINOR_VERSION 3
37
- #define BUILD_NUMBER 10
36
+ #define MINOR_VERSION 6
37
+ #define BUILD_NUMBER 0
38
38
  #define PATCH_LEVEL 0
39
39
  // Use 1 for candidates and 0 otherwise.
40
40
  // (Boolean macro values are not supported by all preprocessors.)
@@ -39,7 +39,6 @@ namespace internal {
39
39
  // logger and partially threaded through the call stack. States are pushed by
40
40
  // VMState construction and popped by destruction.
41
41
  //
42
- #ifdef ENABLE_VMSTATE_TRACKING
43
42
  inline const char* StateToString(StateTag state) {
44
43
  switch (state) {
45
44
  case JS:
@@ -61,32 +60,16 @@ inline const char* StateToString(StateTag state) {
61
60
 
62
61
  VMState::VMState(Isolate* isolate, StateTag tag)
63
62
  : isolate_(isolate), previous_tag_(isolate->current_vm_state()) {
64
- #ifdef ENABLE_LOGGING_AND_PROFILING
65
63
  if (FLAG_log_state_changes) {
66
64
  LOG(isolate, UncheckedStringEvent("Entering", StateToString(tag)));
67
65
  LOG(isolate, UncheckedStringEvent("From", StateToString(previous_tag_)));
68
66
  }
69
- #endif
70
67
 
71
68
  isolate_->SetCurrentVMState(tag);
72
-
73
- #ifdef ENABLE_HEAP_PROTECTION
74
- if (FLAG_protect_heap) {
75
- if (tag == EXTERNAL) {
76
- // We are leaving V8.
77
- ASSERT(previous_tag_ != EXTERNAL);
78
- isolate_->heap()->Protect();
79
- } else if (previous_tag_ = EXTERNAL) {
80
- // We are entering V8.
81
- isolate_->heap()->Unprotect();
82
- }
83
- }
84
- #endif
85
69
  }
86
70
 
87
71
 
88
72
  VMState::~VMState() {
89
- #ifdef ENABLE_LOGGING_AND_PROFILING
90
73
  if (FLAG_log_state_changes) {
91
74
  LOG(isolate_,
92
75
  UncheckedStringEvent("Leaving",
@@ -94,32 +77,10 @@ VMState::~VMState() {
94
77
  LOG(isolate_,
95
78
  UncheckedStringEvent("To", StateToString(previous_tag_)));
96
79
  }
97
- #endif // ENABLE_LOGGING_AND_PROFILING
98
-
99
- #ifdef ENABLE_HEAP_PROTECTION
100
- StateTag tag = isolate_->current_vm_state();
101
- #endif
102
80
 
103
81
  isolate_->SetCurrentVMState(previous_tag_);
104
-
105
- #ifdef ENABLE_HEAP_PROTECTION
106
- if (FLAG_protect_heap) {
107
- if (tag == EXTERNAL) {
108
- // We are reentering V8.
109
- ASSERT(previous_tag_ != EXTERNAL);
110
- isolate_->heap()->Unprotect();
111
- } else if (previous_tag_ == EXTERNAL) {
112
- // We are leaving V8.
113
- isolate_->heap()->Protect();
114
- }
115
- }
116
- #endif // ENABLE_HEAP_PROTECTION
117
82
  }
118
83
 
119
- #endif // ENABLE_VMSTATE_TRACKING
120
-
121
-
122
- #ifdef ENABLE_LOGGING_AND_PROFILING
123
84
 
124
85
  ExternalCallbackScope::ExternalCallbackScope(Isolate* isolate, Address callback)
125
86
  : isolate_(isolate), previous_callback_(isolate->external_callback()) {
@@ -130,8 +91,6 @@ ExternalCallbackScope::~ExternalCallbackScope() {
130
91
  isolate_->set_external_callback(previous_callback_);
131
92
  }
132
93
 
133
- #endif // ENABLE_LOGGING_AND_PROFILING
134
-
135
94
 
136
95
  } } // namespace v8::internal
137
96
 
@@ -35,7 +35,6 @@ namespace v8 {
35
35
  namespace internal {
36
36
 
37
37
  class VMState BASE_EMBEDDED {
38
- #ifdef ENABLE_VMSTATE_TRACKING
39
38
  public:
40
39
  inline VMState(Isolate* isolate, StateTag tag);
41
40
  inline ~VMState();
@@ -43,26 +42,16 @@ class VMState BASE_EMBEDDED {
43
42
  private:
44
43
  Isolate* isolate_;
45
44
  StateTag previous_tag_;
46
-
47
- #else
48
- public:
49
- VMState(Isolate* isolate, StateTag state) {}
50
- #endif
51
45
  };
52
46
 
53
47
 
54
48
  class ExternalCallbackScope BASE_EMBEDDED {
55
- #ifdef ENABLE_LOGGING_AND_PROFILING
56
49
  public:
57
50
  inline ExternalCallbackScope(Isolate* isolate, Address callback);
58
51
  inline ~ExternalCallbackScope();
59
52
  private:
60
53
  Isolate* isolate_;
61
54
  Address previous_callback_;
62
- #else
63
- public:
64
- ExternalCallbackScope(Isolate* isolate, Address callback) {}
65
- #endif
66
55
  };
67
56
 
68
57
  } } // namespace v8::internal
@@ -0,0 +1,103 @@
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ // This file relies on the fact that the following declaration has been made
30
+ // in runtime.js:
31
+ // const $Object = global.Object;
32
+ const $WeakMap = global.WeakMap;
33
+
34
+ // -------------------------------------------------------------------
35
+
36
+ function WeakMapConstructor() {
37
+ if (%_IsConstructCall()) {
38
+ %WeakMapInitialize(this);
39
+ } else {
40
+ return new $WeakMap();
41
+ }
42
+ }
43
+
44
+
45
+ function WeakMapGet(key) {
46
+ if (!IS_SPEC_OBJECT(key)) {
47
+ throw %MakeTypeError('invalid_weakmap_key', [this, key]);
48
+ }
49
+ return %WeakMapGet(this, key);
50
+ }
51
+
52
+
53
+ function WeakMapSet(key, value) {
54
+ if (!IS_SPEC_OBJECT(key)) {
55
+ throw %MakeTypeError('invalid_weakmap_key', [this, key]);
56
+ }
57
+ return %WeakMapSet(this, key, value);
58
+ }
59
+
60
+
61
+ function WeakMapHas(key) {
62
+ if (!IS_SPEC_OBJECT(key)) {
63
+ throw %MakeTypeError('invalid_weakmap_key', [this, key]);
64
+ }
65
+ return !IS_UNDEFINED(%WeakMapGet(this, key));
66
+ }
67
+
68
+
69
+ function WeakMapDelete(key) {
70
+ if (!IS_SPEC_OBJECT(key)) {
71
+ throw %MakeTypeError('invalid_weakmap_key', [this, key]);
72
+ }
73
+ if (!IS_UNDEFINED(%WeakMapGet(this, key))) {
74
+ %WeakMapSet(this, key, void 0);
75
+ return true;
76
+ } else {
77
+ return false;
78
+ }
79
+ }
80
+
81
+ // -------------------------------------------------------------------
82
+
83
+ function SetupWeakMap() {
84
+ // Set up the WeakMap constructor function.
85
+ %SetCode($WeakMap, WeakMapConstructor);
86
+
87
+ // Set up the WeakMap prototype object.
88
+ %FunctionSetPrototype($WeakMap, new $WeakMap());
89
+
90
+ // Set up the constructor property on the WeakMap prototype object.
91
+ %SetProperty($WeakMap.prototype, "constructor", $WeakMap, DONT_ENUM);
92
+
93
+ // Set up the non-enumerable functions on the WeakMap prototype object.
94
+ InstallFunctionsOnHiddenPrototype($WeakMap.prototype, DONT_ENUM, $Array(
95
+ "get", WeakMapGet,
96
+ "set", WeakMapSet,
97
+ "has", WeakMapHas,
98
+ "delete", WeakMapDelete
99
+ ));
100
+ }
101
+
102
+
103
+ SetupWeakMap();
@@ -125,7 +125,7 @@ struct Register {
125
125
  return names[index];
126
126
  }
127
127
 
128
- static Register toRegister(int code) {
128
+ static Register from_code(int code) {
129
129
  Register r = { code };
130
130
  return r;
131
131
  }
@@ -640,6 +640,7 @@ class Assembler : public AssemblerBase {
640
640
  void push_imm32(int32_t imm32);
641
641
  void push(Register src);
642
642
  void push(const Operand& src);
643
+ void push(Handle<Object> handle);
643
644
 
644
645
  void pop(Register dst);
645
646
  void pop(const Operand& dst);
@@ -1167,7 +1168,7 @@ class Assembler : public AssemblerBase {
1167
1168
  // Call near relative 32-bit displacement, relative to next instruction.
1168
1169
  void call(Label* L);
1169
1170
  void call(Handle<Code> target,
1170
- RelocInfo::Mode rmode,
1171
+ RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
1171
1172
  unsigned ast_id = kNoASTId);
1172
1173
 
1173
1174
  // Calls directly to the given address using a relative offset.
@@ -1349,7 +1350,9 @@ class Assembler : public AssemblerBase {
1349
1350
  void Print();
1350
1351
 
1351
1352
  // Check the code size generated from label to here.
1352
- int SizeOfCodeGeneratedSince(Label* l) { return pc_offset() - l->pos(); }
1353
+ int SizeOfCodeGeneratedSince(Label* label) {
1354
+ return pc_offset() - label->pos();
1355
+ }
1353
1356
 
1354
1357
  // Mark address of the ExitJSFrame code.
1355
1358
  void RecordJSReturn();
@@ -139,7 +139,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
139
139
  // rdi: constructor
140
140
  __ movq(rax, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
141
141
  // Will both indicate a NULL and a Smi
142
- ASSERT(kSmiTag == 0);
142
+ STATIC_ASSERT(kSmiTag == 0);
143
143
  __ JumpIfSmi(rax, &rt_call);
144
144
  // rdi: constructor
145
145
  // rax: initial map (if proven valid below)
@@ -343,11 +343,12 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
343
343
  Handle<Code> code =
344
344
  masm->isolate()->builtins()->HandleApiCallConstruct();
345
345
  ParameterCount expected(0);
346
- __ InvokeCode(code, expected, expected,
347
- RelocInfo::CODE_TARGET, CALL_FUNCTION);
346
+ __ InvokeCode(code, expected, expected, RelocInfo::CODE_TARGET,
347
+ CALL_FUNCTION, NullCallWrapper(), CALL_AS_METHOD);
348
348
  } else {
349
349
  ParameterCount actual(rax);
350
- __ InvokeFunction(rdi, actual, CALL_FUNCTION);
350
+ __ InvokeFunction(rdi, actual, CALL_FUNCTION,
351
+ NullCallWrapper(), CALL_AS_METHOD);
351
352
  }
352
353
 
353
354
  // Restore context from the frame.
@@ -361,8 +362,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
361
362
  __ JumpIfSmi(rax, &use_receiver);
362
363
 
363
364
  // If the type of the result (stored in its map) is less than
364
- // FIRST_JS_OBJECT_TYPE, it is not an object in the ECMA sense.
365
- __ CmpObjectType(rax, FIRST_JS_OBJECT_TYPE, rcx);
365
+ // FIRST_SPEC_OBJECT_TYPE, it is not an object in the ECMA sense.
366
+ STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
367
+ __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx);
366
368
  __ j(above_equal, &exit);
367
369
 
368
370
  // Throw away the result of the constructor invocation and use the
@@ -499,7 +501,8 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
499
501
  } else {
500
502
  ParameterCount actual(rax);
501
503
  // Function must be in rdi.
502
- __ InvokeFunction(rdi, actual, CALL_FUNCTION);
504
+ __ InvokeFunction(rdi, actual, CALL_FUNCTION,
505
+ NullCallWrapper(), CALL_AS_METHOD);
503
506
  }
504
507
 
505
508
  // Exit the JS frame. Notice that this also removes the empty
@@ -673,8 +676,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
673
676
 
674
677
  // Do not transform the receiver for natives.
675
678
  // SharedFunctionInfo is already loaded into rbx.
676
- __ testb(FieldOperand(rbx, SharedFunctionInfo::kES5NativeByteOffset),
677
- Immediate(1 << SharedFunctionInfo::kES5NativeBitWithinByte));
679
+ __ testb(FieldOperand(rbx, SharedFunctionInfo::kNativeByteOffset),
680
+ Immediate(1 << SharedFunctionInfo::kNativeBitWithinByte));
678
681
  __ j(not_zero, &shift_arguments);
679
682
 
680
683
  // Compute the receiver in non-strict mode.
@@ -686,9 +689,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
686
689
  __ CompareRoot(rbx, Heap::kUndefinedValueRootIndex);
687
690
  __ j(equal, &use_global_receiver);
688
691
 
689
- STATIC_ASSERT(LAST_JS_OBJECT_TYPE + 1 == LAST_TYPE);
690
- STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE);
691
- __ CmpObjectType(rbx, FIRST_JS_OBJECT_TYPE, rcx);
692
+ STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
693
+ __ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx);
692
694
  __ j(above_equal, &shift_arguments);
693
695
 
694
696
  __ bind(&convert_to_object);
@@ -774,7 +776,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
774
776
  RelocInfo::CODE_TARGET);
775
777
 
776
778
  ParameterCount expected(0);
777
- __ InvokeCode(rdx, expected, expected, JUMP_FUNCTION);
779
+ __ InvokeCode(rdx, expected, expected, JUMP_FUNCTION,
780
+ NullCallWrapper(), CALL_AS_METHOD);
778
781
  }
779
782
 
780
783
 
@@ -844,9 +847,9 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
844
847
  __ j(not_equal, &push_receiver);
845
848
 
846
849
  // Do not transform the receiver for natives.
847
- __ testb(FieldOperand(rdx, SharedFunctionInfo::kES5NativeByteOffset),
848
- Immediate(1 << SharedFunctionInfo::kES5NativeBitWithinByte));
849
- __ j(not_zero, &push_receiver);
850
+ __ testb(FieldOperand(rdx, SharedFunctionInfo::kNativeByteOffset),
851
+ Immediate(1 << SharedFunctionInfo::kNativeBitWithinByte));
852
+ __ j(not_equal, &push_receiver);
850
853
 
851
854
  // Compute the receiver in non-strict mode.
852
855
  __ JumpIfSmi(rbx, &call_to_object, Label::kNear);
@@ -857,9 +860,8 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
857
860
 
858
861
  // If given receiver is already a JavaScript object then there's no
859
862
  // reason for converting it.
860
- STATIC_ASSERT(LAST_JS_OBJECT_TYPE + 1 == LAST_TYPE);
861
- STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE);
862
- __ CmpObjectType(rbx, FIRST_JS_OBJECT_TYPE, rcx);
863
+ STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
864
+ __ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx);
863
865
  __ j(above_equal, &push_receiver);
864
866
 
865
867
  // Convert the receiver to an object.
@@ -914,7 +916,8 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
914
916
  ParameterCount actual(rax);
915
917
  __ SmiToInteger32(rax, rax);
916
918
  __ movq(rdi, Operand(rbp, kFunctionOffset));
917
- __ InvokeFunction(rdi, actual, CALL_FUNCTION);
919
+ __ InvokeFunction(rdi, actual, CALL_FUNCTION,
920
+ NullCallWrapper(), CALL_AS_METHOD);
918
921
 
919
922
  __ LeaveInternalFrame();
920
923
  __ ret(3 * kPointerSize); // remove function, receiver, and arguments
@@ -1280,7 +1283,7 @@ void Builtins::Generate_ArrayCode(MacroAssembler* masm) {
1280
1283
  // Initial map for the builtin Array functions should be maps.
1281
1284
  __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
1282
1285
  // Will both indicate a NULL and a Smi.
1283
- ASSERT(kSmiTag == 0);
1286
+ STATIC_ASSERT(kSmiTag == 0);
1284
1287
  Condition not_smi = NegateCondition(masm->CheckSmi(rbx));
1285
1288
  __ Check(not_smi, "Unexpected initial map for Array function");
1286
1289
  __ CmpObjectType(rbx, MAP_TYPE, rcx);
@@ -1314,7 +1317,7 @@ void Builtins::Generate_ArrayConstructCode(MacroAssembler* masm) {
1314
1317
  // Initial map for the builtin Array function should be a map.
1315
1318
  __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
1316
1319
  // Will both indicate a NULL and a Smi.
1317
- ASSERT(kSmiTag == 0);
1320
+ STATIC_ASSERT(kSmiTag == 0);
1318
1321
  Condition not_smi = NegateCondition(masm->CheckSmi(rbx));
1319
1322
  __ Check(not_smi, "Unexpected initial map for Array function");
1320
1323
  __ CmpObjectType(rbx, MAP_TYPE, rcx);