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
@@ -1,4 +1,4 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -25,10 +25,9 @@
25
25
  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
26
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
- #include "v8.h"
29
-
30
- #include "bignum.h"
28
+ #include "../include/v8stdint.h"
31
29
  #include "utils.h"
30
+ #include "bignum.h"
32
31
 
33
32
  namespace v8 {
34
33
  namespace internal {
@@ -47,8 +47,9 @@ namespace internal {
47
47
 
48
48
  NativesExternalStringResource::NativesExternalStringResource(
49
49
  Bootstrapper* bootstrapper,
50
- const char* source)
51
- : data_(source), length_(StrLength(source)) {
50
+ const char* source,
51
+ size_t length)
52
+ : data_(source), length_(length) {
52
53
  if (bootstrapper->delete_these_non_arrays_on_tear_down_ == NULL) {
53
54
  bootstrapper->delete_these_non_arrays_on_tear_down_ = new List<char*>(2);
54
55
  }
@@ -75,16 +76,18 @@ Handle<String> Bootstrapper::NativesSourceLookup(int index) {
75
76
  if (heap->natives_source_cache()->get(index)->IsUndefined()) {
76
77
  if (!Snapshot::IsEnabled() || FLAG_new_snapshot) {
77
78
  // We can use external strings for the natives.
79
+ Vector<const char> source = Natives::GetRawScriptSource(index);
78
80
  NativesExternalStringResource* resource =
79
81
  new NativesExternalStringResource(this,
80
- Natives::GetScriptSource(index).start());
82
+ source.start(),
83
+ source.length());
81
84
  Handle<String> source_code =
82
85
  factory->NewExternalStringFromAscii(resource);
83
86
  heap->natives_source_cache()->set(index, *source_code);
84
87
  } else {
85
88
  // Old snapshot code can't cope with external strings at all.
86
89
  Handle<String> source_code =
87
- factory->NewStringFromAscii(Natives::GetScriptSource(index));
90
+ factory->NewStringFromAscii(Natives::GetRawScriptSource(index));
88
91
  heap->natives_source_cache()->set(index, *source_code);
89
92
  }
90
93
  }
@@ -196,6 +199,7 @@ class Genesis BASE_EMBEDDED {
196
199
  // New context initialization. Used for creating a context from scratch.
197
200
  void InitializeGlobal(Handle<GlobalObject> inner_global,
198
201
  Handle<JSFunction> empty_function);
202
+ void InitializeExperimentalGlobal();
199
203
  // Installs the contents of the native .js files on the global objects.
200
204
  // Used for creating a context from scratch.
201
205
  void InstallNativeFunctions();
@@ -811,7 +815,6 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
811
815
  // --- G l o b a l C o n t e x t ---
812
816
  // Use the empty function as closure (no scope info).
813
817
  global_context()->set_closure(*empty_function);
814
- global_context()->set_fcontext(*global_context());
815
818
  global_context()->set_previous(NULL);
816
819
  // Set extension and global object.
817
820
  global_context()->set_extension(*inner_global);
@@ -1052,6 +1055,24 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
1052
1055
  #endif
1053
1056
  }
1054
1057
 
1058
+ { // --- aliased_arguments_boilerplate_
1059
+ Handle<Map> old_map(global_context()->arguments_boilerplate()->map());
1060
+ Handle<Map> new_map = factory->CopyMapDropTransitions(old_map);
1061
+ new_map->set_pre_allocated_property_fields(2);
1062
+ Handle<JSObject> result = factory->NewJSObjectFromMap(new_map);
1063
+ new_map->set_elements_kind(JSObject::NON_STRICT_ARGUMENTS_ELEMENTS);
1064
+ // Set up a well-formed parameter map to make assertions happy.
1065
+ Handle<FixedArray> elements = factory->NewFixedArray(2);
1066
+ elements->set_map(heap->non_strict_arguments_elements_map());
1067
+ Handle<FixedArray> array;
1068
+ array = factory->NewFixedArray(0);
1069
+ elements->set(0, *array);
1070
+ array = factory->NewFixedArray(0);
1071
+ elements->set(1, *array);
1072
+ result->set_elements(*elements);
1073
+ global_context()->set_aliased_arguments_boilerplate(*result);
1074
+ }
1075
+
1055
1076
  { // --- strict mode arguments boilerplate
1056
1077
  const PropertyAttributes attributes =
1057
1078
  static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
@@ -1139,7 +1160,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
1139
1160
 
1140
1161
 
1141
1162
  {
1142
- // Setup the call-as-function delegate.
1163
+ // Set up the call-as-function delegate.
1143
1164
  Handle<Code> code =
1144
1165
  Handle<Code>(isolate->builtins()->builtin(
1145
1166
  Builtins::kHandleApiCallAsFunction));
@@ -1151,7 +1172,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
1151
1172
  }
1152
1173
 
1153
1174
  {
1154
- // Setup the call-as-constructor delegate.
1175
+ // Set up the call-as-constructor delegate.
1155
1176
  Handle<Code> code =
1156
1177
  Handle<Code>(isolate->builtins()->builtin(
1157
1178
  Builtins::kHandleApiCallAsConstructor));
@@ -1170,6 +1191,20 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
1170
1191
  }
1171
1192
 
1172
1193
 
1194
+ void Genesis::InitializeExperimentalGlobal() {
1195
+ Handle<JSObject> global = Handle<JSObject>(global_context()->global());
1196
+
1197
+ // TODO(mstarzinger): Move this into Genesis::InitializeGlobal once we no
1198
+ // longer need to live behind a flag, so WeakMap gets added to the snapshot.
1199
+ if (FLAG_harmony_weakmaps) { // -- W e a k M a p
1200
+ Handle<JSObject> prototype =
1201
+ factory()->NewJSObject(isolate()->object_function(), TENURED);
1202
+ InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize,
1203
+ prototype, Builtins::kIllegal, true);
1204
+ }
1205
+ }
1206
+
1207
+
1173
1208
  bool Genesis::CompileBuiltin(Isolate* isolate, int index) {
1174
1209
  Vector<const char> name = Natives::GetScriptName(index);
1175
1210
  Handle<String> source_code =
@@ -1182,7 +1217,8 @@ bool Genesis::CompileExperimentalBuiltin(Isolate* isolate, int index) {
1182
1217
  Vector<const char> name = ExperimentalNatives::GetScriptName(index);
1183
1218
  Factory* factory = isolate->factory();
1184
1219
  Handle<String> source_code =
1185
- factory->NewStringFromAscii(ExperimentalNatives::GetScriptSource(index));
1220
+ factory->NewStringFromAscii(
1221
+ ExperimentalNatives::GetRawScriptSource(index));
1186
1222
  return CompileNative(name, source_code);
1187
1223
  }
1188
1224
 
@@ -1288,7 +1324,9 @@ void Genesis::InstallNativeFunctions() {
1288
1324
 
1289
1325
  void Genesis::InstallExperimentalNativeFunctions() {
1290
1326
  if (FLAG_harmony_proxies) {
1327
+ INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap);
1291
1328
  INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap);
1329
+ INSTALL_NATIVE(JSFunction, "DerivedSetTrap", derived_set_trap);
1292
1330
  }
1293
1331
  }
1294
1332
 
@@ -1548,8 +1586,6 @@ bool Genesis::InstallNatives() {
1548
1586
  global_context()->set_string_function_prototype_map(
1549
1587
  HeapObject::cast(string_function->initial_map()->prototype())->map());
1550
1588
 
1551
- InstallBuiltinFunctionIds();
1552
-
1553
1589
  // Install Function.prototype.call and apply.
1554
1590
  { Handle<String> key = factory()->function_class_symbol();
1555
1591
  Handle<JSFunction> function =
@@ -1583,6 +1619,8 @@ bool Genesis::InstallNatives() {
1583
1619
  apply->shared()->set_length(2);
1584
1620
  }
1585
1621
 
1622
+ InstallBuiltinFunctionIds();
1623
+
1586
1624
  // Create a constructor for RegExp results (a variant of Array that
1587
1625
  // predefines the two properties index and match).
1588
1626
  {
@@ -1657,6 +1695,11 @@ bool Genesis::InstallExperimentalNatives() {
1657
1695
  "native proxy.js") == 0) {
1658
1696
  if (!CompileExperimentalBuiltin(isolate(), i)) return false;
1659
1697
  }
1698
+ if (FLAG_harmony_weakmaps &&
1699
+ strcmp(ExperimentalNatives::GetScriptName(i).start(),
1700
+ "native weakmap.js") == 0) {
1701
+ if (!CompileExperimentalBuiltin(isolate(), i)) return false;
1702
+ }
1660
1703
  }
1661
1704
 
1662
1705
  InstallExperimentalNativeFunctions();
@@ -2146,7 +2189,8 @@ Genesis::Genesis(Isolate* isolate,
2146
2189
  isolate->counters()->contexts_created_from_scratch()->Increment();
2147
2190
  }
2148
2191
 
2149
- // Install experimental natives.
2192
+ // Initialize experimental globals and install experimental natives.
2193
+ InitializeExperimentalGlobal();
2150
2194
  if (!InstallExperimentalNatives()) return;
2151
2195
 
2152
2196
  result_ = global_context_;
@@ -168,8 +168,9 @@ class BootstrapperActive BASE_EMBEDDED {
168
168
  class NativesExternalStringResource
169
169
  : public v8::String::ExternalAsciiStringResource {
170
170
  public:
171
- explicit NativesExternalStringResource(Bootstrapper* bootstrapper,
172
- const char* source);
171
+ NativesExternalStringResource(Bootstrapper* bootstrapper,
172
+ const char* source,
173
+ size_t length);
173
174
 
174
175
  const char* data() const {
175
176
  return data_;
@@ -1202,10 +1202,10 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallAsFunctionOrConstructor(
1202
1202
  ASSERT(!CalledAsConstructor(isolate));
1203
1203
  Heap* heap = isolate->heap();
1204
1204
 
1205
- Handle<Object> receiver = args.at<Object>(0);
1205
+ Handle<Object> receiver = args.receiver();
1206
1206
 
1207
1207
  // Get the object called.
1208
- JSObject* obj = JSObject::cast(*args.receiver());
1208
+ JSObject* obj = JSObject::cast(*receiver);
1209
1209
 
1210
1210
  // Get the invocation callback from the function descriptor that was
1211
1211
  // used to create the called object.
@@ -1351,6 +1351,9 @@ static void Generate_KeyedLoadIC_IndexedInterceptor(MacroAssembler* masm) {
1351
1351
  KeyedLoadIC::GenerateIndexedInterceptor(masm);
1352
1352
  }
1353
1353
 
1354
+ static void Generate_KeyedLoadIC_NonStrictArguments(MacroAssembler* masm) {
1355
+ KeyedLoadIC::GenerateNonStrictArguments(masm);
1356
+ }
1354
1357
 
1355
1358
  static void Generate_StoreIC_Initialize(MacroAssembler* masm) {
1356
1359
  StoreIC::GenerateInitialize(masm);
@@ -1441,6 +1444,9 @@ static void Generate_KeyedStoreIC_Initialize_Strict(MacroAssembler* masm) {
1441
1444
  KeyedStoreIC::GenerateInitialize(masm);
1442
1445
  }
1443
1446
 
1447
+ static void Generate_KeyedStoreIC_NonStrictArguments(MacroAssembler* masm) {
1448
+ KeyedStoreIC::GenerateNonStrictArguments(masm);
1449
+ }
1444
1450
 
1445
1451
  #ifdef ENABLE_DEBUGGER_SUPPORT
1446
1452
  static void Generate_LoadIC_DebugBreak(MacroAssembler* masm) {
@@ -131,6 +131,8 @@ enum BuiltinExtraArguments {
131
131
  V(KeyedLoadIC_String, KEYED_LOAD_IC, MEGAMORPHIC, \
132
132
  Code::kNoExtraICState) \
133
133
  V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MEGAMORPHIC, \
134
+ Code::kNoExtraICState) \
135
+ V(KeyedLoadIC_NonStrictArguments, KEYED_LOAD_IC, MEGAMORPHIC, \
134
136
  Code::kNoExtraICState) \
135
137
  \
136
138
  V(StoreIC_Initialize, STORE_IC, UNINITIALIZED, \
@@ -163,6 +165,8 @@ enum BuiltinExtraArguments {
163
165
  kStrictMode) \
164
166
  V(KeyedStoreIC_Generic_Strict, KEYED_STORE_IC, MEGAMORPHIC, \
165
167
  kStrictMode) \
168
+ V(KeyedStoreIC_NonStrictArguments, KEYED_STORE_IC, MEGAMORPHIC, \
169
+ Code::kNoExtraICState) \
166
170
  \
167
171
  /* Uses KeyedLoadIC_Initialize; must be after in list. */ \
168
172
  V(FunctionCall, BUILTIN, UNINITIALIZED, \
@@ -1,4 +1,4 @@
1
- // Copyright 2006-2008 the V8 project authors. All rights reserved.
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -26,10 +26,12 @@
26
26
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
28
  #include <stdarg.h>
29
+ #include <math.h>
29
30
  #include <limits.h>
30
31
 
31
- #include "v8.h"
32
-
32
+ #include "../include/v8stdint.h"
33
+ #include "globals.h"
34
+ #include "checks.h"
33
35
  #include "cached-powers.h"
34
36
 
35
37
  namespace v8 {
@@ -147,7 +149,9 @@ void PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
147
149
  DiyFp* power,
148
150
  int* decimal_exponent) {
149
151
  int kQ = DiyFp::kSignificandSize;
150
- double k = ceiling((min_exponent + kQ - 1) * kD_1_LOG2_10);
152
+ // Some platforms return incorrect sign on 0 result. We can ignore that here,
153
+ // which means we can avoid depending on platform.h.
154
+ double k = ceil((min_exponent + kQ - 1) * kD_1_LOG2_10);
151
155
  int foo = kCachedPowersOffset;
152
156
  int index =
153
157
  (foo + static_cast<int>(k) - 1) / kDecimalExponentDistance + 1;
@@ -251,9 +251,9 @@ template <> class StaticAssertion<true> { };
251
251
  // actually causes each use to introduce a new defined type with a
252
252
  // name depending on the source line.
253
253
  template <int> class StaticAssertionHelper { };
254
- #define STATIC_CHECK(test) \
255
- typedef \
256
- StaticAssertionHelper<sizeof(StaticAssertion<static_cast<bool>(test)>)> \
254
+ #define STATIC_CHECK(test) \
255
+ typedef \
256
+ StaticAssertionHelper<sizeof(StaticAssertion<static_cast<bool>((test))>)> \
257
257
  SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__)
258
258
 
259
259
 
@@ -61,21 +61,29 @@ void CodeStub::GenerateCode(MacroAssembler* masm) {
61
61
  }
62
62
 
63
63
 
64
+ SmartPointer<const char> CodeStub::GetName() {
65
+ char buffer[100];
66
+ NoAllocationStringAllocator allocator(buffer,
67
+ static_cast<unsigned>(sizeof(buffer)));
68
+ StringStream stream(&allocator);
69
+ PrintName(&stream);
70
+ return stream.ToCString();
71
+ }
72
+
73
+
64
74
  void CodeStub::RecordCodeGeneration(Code* code, MacroAssembler* masm) {
65
75
  code->set_major_key(MajorKey());
66
76
 
67
77
  Isolate* isolate = masm->isolate();
68
- PROFILE(isolate, CodeCreateEvent(Logger::STUB_TAG, code, GetName()));
69
- GDBJIT(AddCode(GDBJITInterface::STUB, GetName(), code));
78
+ SmartPointer<const char> name = GetName();
79
+ PROFILE(isolate, CodeCreateEvent(Logger::STUB_TAG, code, *name));
80
+ GDBJIT(AddCode(GDBJITInterface::STUB, *name, code));
70
81
  Counters* counters = isolate->counters();
71
82
  counters->total_stubs_code_size()->Increment(code->instruction_size());
72
83
 
73
84
  #ifdef ENABLE_DISASSEMBLER
74
85
  if (FLAG_print_code_stubs) {
75
- #ifdef DEBUG
76
- Print();
77
- #endif
78
- code->Disassemble(GetName());
86
+ code->Disassemble(*name);
79
87
  PrintF("\n");
80
88
  }
81
89
  #endif
@@ -170,7 +178,7 @@ MaybeObject* CodeStub::TryGetCode() {
170
178
  const char* CodeStub::MajorName(CodeStub::Major major_key,
171
179
  bool allow_unknown_keys) {
172
180
  switch (major_key) {
173
- #define DEF_CASE(name) case name: return #name;
181
+ #define DEF_CASE(name) case name: return #name "Stub";
174
182
  CODE_STUB_LIST(DEF_CASE)
175
183
  #undef DEF_CASE
176
184
  default:
@@ -213,13 +221,7 @@ void ICCompareStub::Generate(MacroAssembler* masm) {
213
221
  }
214
222
 
215
223
 
216
- const char* InstanceofStub::GetName() {
217
- if (name_ != NULL) return name_;
218
- const int kMaxNameLength = 100;
219
- name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(
220
- kMaxNameLength);
221
- if (name_ == NULL) return "OOM";
222
-
224
+ void InstanceofStub::PrintName(StringStream* stream) {
223
225
  const char* args = "";
224
226
  if (HasArgsInRegisters()) {
225
227
  args = "_REGS";
@@ -235,32 +237,175 @@ const char* InstanceofStub::GetName() {
235
237
  return_true_false_object = "_TRUEFALSE";
236
238
  }
237
239
 
238
- OS::SNPrintF(Vector<char>(name_, kMaxNameLength),
239
- "InstanceofStub%s%s%s",
240
- args,
241
- inline_check,
242
- return_true_false_object);
243
- return name_;
240
+ stream->Add("InstanceofStub%s%s%s",
241
+ args,
242
+ inline_check,
243
+ return_true_false_object);
244
+ }
245
+
246
+
247
+ void KeyedLoadElementStub::Generate(MacroAssembler* masm) {
248
+ switch (elements_kind_) {
249
+ case JSObject::FAST_ELEMENTS:
250
+ KeyedLoadStubCompiler::GenerateLoadFastElement(masm);
251
+ break;
252
+ case JSObject::FAST_DOUBLE_ELEMENTS:
253
+ KeyedLoadStubCompiler::GenerateLoadFastDoubleElement(masm);
254
+ break;
255
+ case JSObject::EXTERNAL_BYTE_ELEMENTS:
256
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
257
+ case JSObject::EXTERNAL_SHORT_ELEMENTS:
258
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
259
+ case JSObject::EXTERNAL_INT_ELEMENTS:
260
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
261
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS:
262
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
263
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS:
264
+ KeyedLoadStubCompiler::GenerateLoadExternalArray(masm, elements_kind_);
265
+ break;
266
+ case JSObject::DICTIONARY_ELEMENTS:
267
+ KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm);
268
+ break;
269
+ case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
270
+ UNREACHABLE();
271
+ break;
272
+ }
273
+ }
274
+
275
+
276
+ void KeyedStoreElementStub::Generate(MacroAssembler* masm) {
277
+ switch (elements_kind_) {
278
+ case JSObject::FAST_ELEMENTS:
279
+ KeyedStoreStubCompiler::GenerateStoreFastElement(masm, is_js_array_);
280
+ break;
281
+ case JSObject::FAST_DOUBLE_ELEMENTS:
282
+ KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(masm,
283
+ is_js_array_);
284
+ break;
285
+ case JSObject::EXTERNAL_BYTE_ELEMENTS:
286
+ case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
287
+ case JSObject::EXTERNAL_SHORT_ELEMENTS:
288
+ case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
289
+ case JSObject::EXTERNAL_INT_ELEMENTS:
290
+ case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
291
+ case JSObject::EXTERNAL_FLOAT_ELEMENTS:
292
+ case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
293
+ case JSObject::EXTERNAL_PIXEL_ELEMENTS:
294
+ KeyedStoreStubCompiler::GenerateStoreExternalArray(masm, elements_kind_);
295
+ break;
296
+ case JSObject::DICTIONARY_ELEMENTS:
297
+ KeyedStoreStubCompiler::GenerateStoreDictionaryElement(masm);
298
+ break;
299
+ case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
300
+ UNREACHABLE();
301
+ break;
302
+ }
303
+ }
304
+
305
+
306
+ void ArgumentsAccessStub::PrintName(StringStream* stream) {
307
+ const char* type_name = NULL; // Make g++ happy.
308
+ switch (type_) {
309
+ case READ_ELEMENT: type_name = "ReadElement"; break;
310
+ case NEW_NON_STRICT_FAST: type_name = "NewNonStrictFast"; break;
311
+ case NEW_NON_STRICT_SLOW: type_name = "NewNonStrictSlow"; break;
312
+ case NEW_STRICT: type_name = "NewStrict"; break;
313
+ }
314
+ stream->Add("ArgumentsAccessStub_%s", type_name);
244
315
  }
245
316
 
246
317
 
247
- void KeyedLoadFastElementStub::Generate(MacroAssembler* masm) {
248
- KeyedLoadStubCompiler::GenerateLoadFastElement(masm);
318
+ void CallFunctionStub::PrintName(StringStream* stream) {
319
+ const char* in_loop_name = NULL; // Make g++ happy.
320
+ switch (in_loop_) {
321
+ case NOT_IN_LOOP: in_loop_name = ""; break;
322
+ case IN_LOOP: in_loop_name = "_InLoop"; break;
323
+ }
324
+ const char* flags_name = NULL; // Make g++ happy.
325
+ switch (flags_) {
326
+ case NO_CALL_FUNCTION_FLAGS: flags_name = ""; break;
327
+ case RECEIVER_MIGHT_BE_IMPLICIT: flags_name = "_Implicit"; break;
328
+ }
329
+ stream->Add("CallFunctionStub_Args%d%s%s", argc_, in_loop_name, flags_name);
249
330
  }
250
331
 
251
332
 
252
- void KeyedStoreFastElementStub::Generate(MacroAssembler* masm) {
253
- KeyedStoreStubCompiler::GenerateStoreFastElement(masm, is_js_array_);
333
+ void ToBooleanStub::PrintName(StringStream* stream) {
334
+ stream->Add("ToBooleanStub_");
335
+ types_.Print(stream);
336
+ }
337
+
338
+
339
+ void ToBooleanStub::Types::Print(StringStream* stream) const {
340
+ if (IsEmpty()) stream->Add("None");
341
+ if (Contains(UNDEFINED)) stream->Add("Undefined");
342
+ if (Contains(BOOLEAN)) stream->Add("Bool");
343
+ if (Contains(NULL_TYPE)) stream->Add("Null");
344
+ if (Contains(SMI)) stream->Add("Smi");
345
+ if (Contains(SPEC_OBJECT)) stream->Add("SpecObject");
346
+ if (Contains(STRING)) stream->Add("String");
347
+ if (Contains(HEAP_NUMBER)) stream->Add("HeapNumber");
348
+ }
349
+
350
+
351
+ void ToBooleanStub::Types::TraceTransition(Types to) const {
352
+ if (!FLAG_trace_ic) return;
353
+ char buffer[100];
354
+ NoAllocationStringAllocator allocator(buffer,
355
+ static_cast<unsigned>(sizeof(buffer)));
356
+ StringStream stream(&allocator);
357
+ stream.Add("[ToBooleanIC (");
358
+ Print(&stream);
359
+ stream.Add("->");
360
+ to.Print(&stream);
361
+ stream.Add(")]\n");
362
+ stream.OutputToStdOut();
363
+ }
364
+
365
+
366
+ bool ToBooleanStub::Types::Record(Handle<Object> object) {
367
+ if (object->IsUndefined()) {
368
+ Add(UNDEFINED);
369
+ return false;
370
+ } else if (object->IsBoolean()) {
371
+ Add(BOOLEAN);
372
+ return object->IsTrue();
373
+ } else if (object->IsNull()) {
374
+ Add(NULL_TYPE);
375
+ return false;
376
+ } else if (object->IsSmi()) {
377
+ Add(SMI);
378
+ return Smi::cast(*object)->value() != 0;
379
+ } else if (object->IsSpecObject()) {
380
+ Add(SPEC_OBJECT);
381
+ return !object->IsUndetectableObject();
382
+ } else if (object->IsString()) {
383
+ Add(STRING);
384
+ return !object->IsUndetectableObject() &&
385
+ String::cast(*object)->length() != 0;
386
+ } else if (object->IsHeapNumber()) {
387
+ ASSERT(!object->IsUndetectableObject());
388
+ Add(HEAP_NUMBER);
389
+ double value = HeapNumber::cast(*object)->value();
390
+ return value != 0 && !isnan(value);
391
+ } else {
392
+ // We should never see an internal object at runtime here!
393
+ UNREACHABLE();
394
+ return true;
395
+ }
254
396
  }
255
397
 
256
398
 
257
- void KeyedLoadExternalArrayStub::Generate(MacroAssembler* masm) {
258
- KeyedLoadStubCompiler::GenerateLoadExternalArray(masm, array_type_);
399
+ bool ToBooleanStub::Types::NeedsMap() const {
400
+ return Contains(ToBooleanStub::SPEC_OBJECT)
401
+ || Contains(ToBooleanStub::STRING)
402
+ || Contains(ToBooleanStub::HEAP_NUMBER);
259
403
  }
260
404
 
261
405
 
262
- void KeyedStoreExternalArrayStub::Generate(MacroAssembler* masm) {
263
- KeyedStoreStubCompiler::GenerateStoreExternalArray(masm, array_type_);
406
+ bool ToBooleanStub::Types::CanBeUndetectable() const {
407
+ return Contains(ToBooleanStub::SPEC_OBJECT)
408
+ || Contains(ToBooleanStub::STRING);
264
409
  }
265
410
 
266
411