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
@@ -0,0 +1,71 @@
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
+ #ifndef V8_EXTENSIONS_EXPERIMENTAL_NUMBER_FORMAT_H_
29
+ #define V8_EXTENSIONS_EXPERIMENTAL_NUMBER_FORMAT_H_
30
+
31
+ #include "include/v8.h"
32
+
33
+ #include "unicode/uversion.h"
34
+
35
+ namespace U_ICU_NAMESPACE {
36
+ class DecimalFormat;
37
+ }
38
+
39
+ namespace v8 {
40
+ namespace internal {
41
+
42
+ class NumberFormat {
43
+ public:
44
+ // 3-letter ISO 4217 currency code plus \0.
45
+ static const int kCurrencyCodeLength;
46
+
47
+ static v8::Handle<v8::Value> JSNumberFormat(const v8::Arguments& args);
48
+
49
+ // Helper methods for various bindings.
50
+
51
+ // Unpacks date format object from corresponding JavaScript object.
52
+ static icu::DecimalFormat* UnpackNumberFormat(
53
+ v8::Handle<v8::Object> obj);
54
+
55
+ // Release memory we allocated for the NumberFormat once the JS object that
56
+ // holds the pointer gets garbage collected.
57
+ static void DeleteNumberFormat(v8::Persistent<v8::Value> object,
58
+ void* param);
59
+
60
+ // Formats number and returns corresponding string.
61
+ static v8::Handle<v8::Value> Format(const v8::Arguments& args);
62
+
63
+ private:
64
+ NumberFormat();
65
+
66
+ static v8::Persistent<v8::FunctionTemplate> number_format_template_;
67
+ };
68
+
69
+ } } // namespace v8::internal
70
+
71
+ #endif // V8_EXTENSIONS_EXPERIMENTAL_NUMBER_FORMAT_H_
@@ -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:
@@ -34,6 +34,7 @@
34
34
  #include "macro-assembler.h"
35
35
  #include "objects.h"
36
36
  #include "objects-visiting.h"
37
+ #include "scopeinfo.h"
37
38
 
38
39
  namespace v8 {
39
40
  namespace internal {
@@ -58,6 +59,16 @@ Handle<FixedArray> Factory::NewFixedArrayWithHoles(int size,
58
59
  }
59
60
 
60
61
 
62
+ Handle<FixedArray> Factory::NewFixedDoubleArray(int size,
63
+ PretenureFlag pretenure) {
64
+ ASSERT(0 <= size);
65
+ CALL_HEAP_FUNCTION(
66
+ isolate(),
67
+ isolate()->heap()->AllocateUninitializedFixedDoubleArray(size, pretenure),
68
+ FixedArray);
69
+ }
70
+
71
+
61
72
  Handle<StringDictionary> Factory::NewStringDictionary(int at_least_space_for) {
62
73
  ASSERT(0 <= at_least_space_for);
63
74
  CALL_HEAP_FUNCTION(isolate(),
@@ -74,6 +85,14 @@ Handle<NumberDictionary> Factory::NewNumberDictionary(int at_least_space_for) {
74
85
  }
75
86
 
76
87
 
88
+ Handle<ObjectHashTable> Factory::NewObjectHashTable(int at_least_space_for) {
89
+ ASSERT(0 <= at_least_space_for);
90
+ CALL_HEAP_FUNCTION(isolate(),
91
+ ObjectHashTable::Allocate(at_least_space_for),
92
+ ObjectHashTable);
93
+ }
94
+
95
+
77
96
  Handle<DescriptorArray> Factory::NewDescriptorArray(int number_of_descriptors) {
78
97
  ASSERT(0 <= number_of_descriptors);
79
98
  CALL_HEAP_FUNCTION(isolate(),
@@ -169,21 +188,21 @@ Handle<String> Factory::NewStringFromTwoByte(Vector<const uc16> string,
169
188
  }
170
189
 
171
190
 
172
- Handle<String> Factory::NewRawAsciiString(int length,
173
- PretenureFlag pretenure) {
191
+ Handle<SeqAsciiString> Factory::NewRawAsciiString(int length,
192
+ PretenureFlag pretenure) {
174
193
  CALL_HEAP_FUNCTION(
175
194
  isolate(),
176
195
  isolate()->heap()->AllocateRawAsciiString(length, pretenure),
177
- String);
196
+ SeqAsciiString);
178
197
  }
179
198
 
180
199
 
181
- Handle<String> Factory::NewRawTwoByteString(int length,
182
- PretenureFlag pretenure) {
200
+ Handle<SeqTwoByteString> Factory::NewRawTwoByteString(int length,
201
+ PretenureFlag pretenure) {
183
202
  CALL_HEAP_FUNCTION(
184
203
  isolate(),
185
204
  isolate()->heap()->AllocateRawTwoByteString(length, pretenure),
186
- String);
205
+ SeqTwoByteString);
187
206
  }
188
207
 
189
208
 
@@ -204,6 +223,16 @@ Handle<String> Factory::NewSubString(Handle<String> str,
204
223
  }
205
224
 
206
225
 
226
+ Handle<String> Factory::NewProperSubString(Handle<String> str,
227
+ int begin,
228
+ int end) {
229
+ ASSERT(begin > 0 || end < str->length());
230
+ CALL_HEAP_FUNCTION(isolate(),
231
+ isolate()->heap()->AllocateSubString(*str, begin, end),
232
+ String);
233
+ }
234
+
235
+
207
236
  Handle<String> Factory::NewExternalStringFromAscii(
208
237
  ExternalAsciiString::Resource* resource) {
209
238
  CALL_HEAP_FUNCTION(
@@ -231,22 +260,47 @@ Handle<Context> Factory::NewGlobalContext() {
231
260
 
232
261
 
233
262
  Handle<Context> Factory::NewFunctionContext(int length,
234
- Handle<JSFunction> closure) {
263
+ Handle<JSFunction> function) {
264
+ CALL_HEAP_FUNCTION(
265
+ isolate(),
266
+ isolate()->heap()->AllocateFunctionContext(length, *function),
267
+ Context);
268
+ }
269
+
270
+
271
+ Handle<Context> Factory::NewCatchContext(Handle<JSFunction> function,
272
+ Handle<Context> previous,
273
+ Handle<String> name,
274
+ Handle<Object> thrown_object) {
275
+ CALL_HEAP_FUNCTION(
276
+ isolate(),
277
+ isolate()->heap()->AllocateCatchContext(*function,
278
+ *previous,
279
+ *name,
280
+ *thrown_object),
281
+ Context);
282
+ }
283
+
284
+
285
+ Handle<Context> Factory::NewWithContext(Handle<JSFunction> function,
286
+ Handle<Context> previous,
287
+ Handle<JSObject> extension) {
235
288
  CALL_HEAP_FUNCTION(
236
289
  isolate(),
237
- isolate()->heap()->AllocateFunctionContext(length, *closure),
290
+ isolate()->heap()->AllocateWithContext(*function, *previous, *extension),
238
291
  Context);
239
292
  }
240
293
 
241
294
 
242
- Handle<Context> Factory::NewWithContext(Handle<Context> previous,
243
- Handle<JSObject> extension,
244
- bool is_catch_context) {
295
+ Handle<Context> Factory::NewBlockContext(
296
+ Handle<JSFunction> function,
297
+ Handle<Context> previous,
298
+ Handle<SerializedScopeInfo> scope_info) {
245
299
  CALL_HEAP_FUNCTION(
246
300
  isolate(),
247
- isolate()->heap()->AllocateWithContext(*previous,
248
- *extension,
249
- is_catch_context),
301
+ isolate()->heap()->AllocateBlockContext(*function,
302
+ *previous,
303
+ *scope_info),
250
304
  Context);
251
305
  }
252
306
 
@@ -694,6 +748,14 @@ Handle<JSFunction> Factory::NewFunctionWithoutPrototype(Handle<String> name,
694
748
  }
695
749
 
696
750
 
751
+ Handle<SerializedScopeInfo> Factory::NewSerializedScopeInfo(int length) {
752
+ CALL_HEAP_FUNCTION(
753
+ isolate(),
754
+ isolate()->heap()->AllocateSerializedScopeInfo(length),
755
+ SerializedScopeInfo);
756
+ }
757
+
758
+
697
759
  Handle<Code> Factory::NewCode(const CodeDesc& desc,
698
760
  Code::Flags flags,
699
761
  Handle<Object> self_ref,
@@ -860,6 +922,13 @@ Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler,
860
922
  }
861
923
 
862
924
 
925
+ void Factory::BecomeJSObject(Handle<JSProxy> object) {
926
+ CALL_HEAP_FUNCTION_VOID(
927
+ isolate(),
928
+ isolate()->heap()->ReinitializeJSProxyAsJSObject(*object));
929
+ }
930
+
931
+
863
932
  Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
864
933
  Handle<String> name,
865
934
  int number_of_literals,
@@ -1189,12 +1258,14 @@ void Factory::SetRegExpIrregexpData(Handle<JSRegExp> regexp,
1189
1258
  JSRegExp::Flags flags,
1190
1259
  int capture_count) {
1191
1260
  Handle<FixedArray> store = NewFixedArray(JSRegExp::kIrregexpDataSize);
1192
-
1261
+ Smi* uninitialized = Smi::FromInt(JSRegExp::kUninitializedValue);
1193
1262
  store->set(JSRegExp::kTagIndex, Smi::FromInt(type));
1194
1263
  store->set(JSRegExp::kSourceIndex, *source);
1195
1264
  store->set(JSRegExp::kFlagsIndex, Smi::FromInt(flags.value()));
1196
- store->set(JSRegExp::kIrregexpASCIICodeIndex, HEAP->the_hole_value());
1197
- store->set(JSRegExp::kIrregexpUC16CodeIndex, HEAP->the_hole_value());
1265
+ store->set(JSRegExp::kIrregexpASCIICodeIndex, uninitialized);
1266
+ store->set(JSRegExp::kIrregexpUC16CodeIndex, uninitialized);
1267
+ store->set(JSRegExp::kIrregexpASCIICodeSavedIndex, uninitialized);
1268
+ store->set(JSRegExp::kIrregexpUC16CodeSavedIndex, uninitialized);
1198
1269
  store->set(JSRegExp::kIrregexpMaxRegisterCountIndex, Smi::FromInt(0));
1199
1270
  store->set(JSRegExp::kIrregexpCaptureCountIndex,
1200
1271
  Smi::FromInt(capture_count));
@@ -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:
@@ -39,7 +39,7 @@ namespace internal {
39
39
 
40
40
  class Factory {
41
41
  public:
42
- // Allocate a new fixed array with undefined entries.
42
+ // Allocate a new uninitialized fixed array.
43
43
  Handle<FixedArray> NewFixedArray(
44
44
  int size,
45
45
  PretenureFlag pretenure = NOT_TENURED);
@@ -49,10 +49,17 @@ class Factory {
49
49
  int size,
50
50
  PretenureFlag pretenure = NOT_TENURED);
51
51
 
52
+ // Allocate a new uninitialized fixed double array.
53
+ Handle<FixedArray> NewFixedDoubleArray(
54
+ int size,
55
+ PretenureFlag pretenure = NOT_TENURED);
56
+
52
57
  Handle<NumberDictionary> NewNumberDictionary(int at_least_space_for);
53
58
 
54
59
  Handle<StringDictionary> NewStringDictionary(int at_least_space_for);
55
60
 
61
+ Handle<ObjectHashTable> NewObjectHashTable(int at_least_space_for);
62
+
56
63
  Handle<DescriptorArray> NewDescriptorArray(int number_of_descriptors);
57
64
  Handle<DeoptimizationInputData> NewDeoptimizationInputData(
58
65
  int deopt_entry_count,
@@ -112,10 +119,10 @@ class Factory {
112
119
  // Allocates and partially initializes an ASCII or TwoByte String. The
113
120
  // characters of the string are uninitialized. Currently used in regexp code
114
121
  // only, where they are pretenured.
115
- Handle<String> NewRawAsciiString(
122
+ Handle<SeqAsciiString> NewRawAsciiString(
116
123
  int length,
117
124
  PretenureFlag pretenure = NOT_TENURED);
118
- Handle<String> NewRawTwoByteString(
125
+ Handle<SeqTwoByteString> NewRawTwoByteString(
119
126
  int length,
120
127
  PretenureFlag pretenure = NOT_TENURED);
121
128
 
@@ -128,6 +135,11 @@ class Factory {
128
135
  int begin,
129
136
  int end);
130
137
 
138
+ // Create a new string object which holds a proper substring of a string.
139
+ Handle<String> NewProperSubString(Handle<String> str,
140
+ int begin,
141
+ int end);
142
+
131
143
  // Creates a new external String object. There are two String encodings
132
144
  // in the system: ASCII and two byte. Unlike other String types, it does
133
145
  // not make sense to have a UTF-8 factory function for external strings,
@@ -142,12 +154,23 @@ class Factory {
142
154
 
143
155
  // Create a function context.
144
156
  Handle<Context> NewFunctionContext(int length,
145
- Handle<JSFunction> closure);
157
+ Handle<JSFunction> function);
158
+
159
+ // Create a catch context.
160
+ Handle<Context> NewCatchContext(Handle<JSFunction> function,
161
+ Handle<Context> previous,
162
+ Handle<String> name,
163
+ Handle<Object> thrown_object);
146
164
 
147
165
  // Create a 'with' context.
148
- Handle<Context> NewWithContext(Handle<Context> previous,
149
- Handle<JSObject> extension,
150
- bool is_catch_context);
166
+ Handle<Context> NewWithContext(Handle<JSFunction> function,
167
+ Handle<Context> previous,
168
+ Handle<JSObject> extension);
169
+
170
+ // Create a 'block' context.
171
+ Handle<Context> NewBlockContext(Handle<JSFunction> function,
172
+ Handle<Context> previous,
173
+ Handle<SerializedScopeInfo> scope_info);
151
174
 
152
175
  // Return the Symbol matching the passed in string.
153
176
  Handle<String> SymbolFromString(Handle<String> value);
@@ -237,6 +260,9 @@ class Factory {
237
260
 
238
261
  Handle<JSProxy> NewJSProxy(Handle<Object> handler, Handle<Object> prototype);
239
262
 
263
+ // Change the type of the argument into a regular JS object and reinitialize.
264
+ void BecomeJSObject(Handle<JSProxy> object);
265
+
240
266
  Handle<JSFunction> NewFunction(Handle<String> name,
241
267
  Handle<Object> prototype);
242
268
 
@@ -256,6 +282,8 @@ class Factory {
256
282
  Handle<Context> context,
257
283
  PretenureFlag pretenure = TENURED);
258
284
 
285
+ Handle<SerializedScopeInfo> NewSerializedScopeInfo(int length);
286
+
259
287
  Handle<Code> NewCode(const CodeDesc& desc,
260
288
  Code::Flags flags,
261
289
  Handle<Object> self_reference,
@@ -97,7 +97,14 @@ private:
97
97
  #define FLAG FLAG_FULL
98
98
 
99
99
  // Flags for experimental language features.
100
+ DEFINE_bool(harmony_typeof, false, "enable harmony semantics for typeof")
100
101
  DEFINE_bool(harmony_proxies, false, "enable harmony proxies")
102
+ DEFINE_bool(harmony_weakmaps, false, "enable harmony weak maps")
103
+ DEFINE_bool(harmony_block_scoping, false, "enable harmony block scoping")
104
+
105
+ // Flags for experimental implementation features.
106
+ DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles")
107
+ DEFINE_bool(string_slices, false, "use string slices")
101
108
 
102
109
  // Flags for Crankshaft.
103
110
  #ifdef V8_TARGET_ARCH_MIPS
@@ -131,12 +138,9 @@ DEFINE_bool(stress_environments, false, "environment for every instruction")
131
138
  DEFINE_int(deopt_every_n_times,
132
139
  0,
133
140
  "deoptimize every n times a deopt point is passed")
134
- DEFINE_bool(process_arguments_object, true, "try to deal with arguments object")
135
141
  DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing")
136
142
  DEFINE_bool(deoptimize_uncommon_cases, true, "deoptimize uncommon cases")
137
143
  DEFINE_bool(polymorphic_inlining, true, "polymorphic inlining")
138
- DEFINE_bool(aggressive_loop_invariant_motion, true,
139
- "aggressive motion of instructions out of loops")
140
144
  DEFINE_bool(use_osr, true, "use on-stack replacement")
141
145
 
142
146
  DEFINE_bool(trace_osr, false, "trace on-stack replacement")
@@ -149,8 +153,6 @@ DEFINE_bool(debug_code, false,
149
153
  DEFINE_bool(code_comments, false, "emit comments in code disassembly")
150
154
  DEFINE_bool(peephole_optimization, true,
151
155
  "perform peephole optimizations in assembly code")
152
- DEFINE_bool(print_peephole_optimization, false,
153
- "print peephole optimizations in assembly code")
154
156
  DEFINE_bool(enable_sse2, true,
155
157
  "enable use of SSE2 instructions if available")
156
158
  DEFINE_bool(enable_sse3, true,
@@ -189,7 +191,6 @@ DEFINE_bool(stack_trace_on_abort, true,
189
191
 
190
192
  // codegen-ia32.cc / codegen-arm.cc
191
193
  DEFINE_bool(trace, false, "trace function calls")
192
- DEFINE_bool(defer_negation, true, "defer negation operation")
193
194
  DEFINE_bool(mask_constants_with_cookie,
194
195
  true,
195
196
  "use random jit cookie to mask large constants")
@@ -202,33 +203,23 @@ DEFINE_bool(opt, true, "use adaptive optimizations")
202
203
  DEFINE_bool(opt_eagerly, false, "be more eager when adaptively optimizing")
203
204
  DEFINE_bool(always_opt, false, "always try to optimize functions")
204
205
  DEFINE_bool(prepare_always_opt, false, "prepare for turning on always opt")
205
- DEFINE_bool(debug_info, true, "add debug information to compiled functions")
206
206
  DEFINE_bool(deopt, true, "support deoptimization")
207
207
  DEFINE_bool(trace_deopt, false, "trace deoptimization")
208
208
 
209
209
  // compiler.cc
210
- DEFINE_bool(strict, false, "strict error checking")
211
210
  DEFINE_int(min_preparse_length, 1024,
212
211
  "minimum length for automatic enable preparsing")
213
- DEFINE_bool(full_compiler, true, "enable dedicated backend for run-once code")
214
212
  DEFINE_bool(always_full_compiler, false,
215
213
  "try to use the dedicated run-once backend for all code")
216
214
  DEFINE_bool(trace_bailout, false,
217
215
  "print reasons for falling back to using the classic V8 backend")
218
- DEFINE_bool(safe_int32_compiler, true,
219
- "enable optimized side-effect-free int32 expressions.")
220
- DEFINE_bool(use_flow_graph, false, "perform flow-graph based optimizations")
221
216
 
222
217
  // compilation-cache.cc
223
218
  DEFINE_bool(compilation_cache, true, "enable compilation cache")
224
219
 
225
220
  DEFINE_bool(cache_prototype_transitions, true, "cache prototype transitions")
226
221
 
227
- // data-flow.cc
228
- DEFINE_bool(loop_peeling, false, "Peel off the first iteration of loops.")
229
-
230
222
  // debug.cc
231
- DEFINE_bool(remote_debugging, false, "enable remote debugging")
232
223
  DEFINE_bool(trace_debug_json, false, "trace debugging JSON request/response")
233
224
  DEFINE_bool(debugger_auto_break, true,
234
225
  "automatically set the debug break flag when debugger commands are "
@@ -316,9 +307,6 @@ DEFINE_bool(use_verbose_printer, true, "allows verbose printing")
316
307
  DEFINE_bool(allow_natives_syntax, false, "allow natives syntax")
317
308
  DEFINE_bool(strict_mode, true, "allow strict mode directives")
318
309
 
319
- // rewriter.cc
320
- DEFINE_bool(optimize_ast, true, "optimize the ast")
321
-
322
310
  // simulator-arm.cc and simulator-mips.cc
323
311
  DEFINE_bool(trace_sim, false, "Trace simulator execution")
324
312
  DEFINE_bool(check_icache, false, "Check icache flushes in ARM simulator")
@@ -337,7 +325,6 @@ DEFINE_bool(preemption, false,
337
325
  "activate a 100ms timer that switches between V8 threads")
338
326
 
339
327
  // Regexp
340
- DEFINE_bool(trace_regexps, false, "trace regexp execution")
341
328
  DEFINE_bool(regexp_optimization, true, "generate optimized regexp code")
342
329
  DEFINE_bool(regexp_entry_native, true, "use native code to enter regexp")
343
330
 
@@ -388,6 +375,8 @@ DEFINE_bool(debug_script_collected_events, true,
388
375
  DEFINE_bool(gdbjit, false, "enable GDBJIT interface (disables compacting GC)")
389
376
  DEFINE_bool(gdbjit_full, false, "enable GDBJIT interface for all code objects")
390
377
  DEFINE_bool(gdbjit_dump, false, "dump elf objects with debug info to disk")
378
+ DEFINE_string(gdbjit_dump_filter, "",
379
+ "dump only objects containing this substring")
391
380
 
392
381
  //
393
382
  // Debug only flags
@@ -414,16 +403,12 @@ DEFINE_bool(print_builtin_ast, false, "print source AST for builtins")
414
403
  DEFINE_bool(print_json_ast, false, "print source AST as JSON")
415
404
  DEFINE_bool(print_builtin_json_ast, false,
416
405
  "print source AST for builtins as JSON")
417
- DEFINE_bool(trace_calls, false, "trace calls")
418
- DEFINE_bool(trace_builtin_calls, false, "trace builtins calls")
419
406
  DEFINE_string(stop_at, "", "function name where to insert a breakpoint")
407
+ DEFINE_bool(verify_stack_height, false, "verify stack height tracing on ia32")
420
408
 
421
409
  // compiler.cc
422
410
  DEFINE_bool(print_builtin_scopes, false, "print scopes for builtins")
423
411
  DEFINE_bool(print_scopes, false, "print scopes")
424
- DEFINE_bool(print_ir, false, "print the AST as seen by the backend")
425
- DEFINE_bool(print_graph_text, false,
426
- "print a text representation of the flow graph")
427
412
 
428
413
  // contexts.cc
429
414
  DEFINE_bool(trace_contexts, false, "trace contexts operations")
@@ -472,14 +457,10 @@ DEFINE_bool(trace_regexp_assembler,
472
457
  "trace regexp macro assembler calls.")
473
458
 
474
459
  //
475
- // Logging and profiling only flags
460
+ // Logging and profiling flags
476
461
  //
477
462
  #undef FLAG
478
- #ifdef ENABLE_LOGGING_AND_PROFILING
479
463
  #define FLAG FLAG_FULL
480
- #else
481
- #define FLAG FLAG_READONLY
482
- #endif
483
464
 
484
465
  // log.cc
485
466
  DEFINE_bool(log, false,
@@ -495,7 +476,6 @@ DEFINE_bool(log_handles, false, "Log global handle events.")
495
476
  DEFINE_bool(log_snapshot_positions, false,
496
477
  "log positions of (de)serialized objects in the snapshot.")
497
478
  DEFINE_bool(log_suspect, false, "Log suspect operations.")
498
- DEFINE_bool(log_producers, false, "Log stack traces of JS objects allocations.")
499
479
  DEFINE_bool(prof, false,
500
480
  "Log statistical profiling information (implies --log-code).")
501
481
  DEFINE_bool(prof_auto, true,
@@ -511,19 +491,6 @@ DEFINE_bool(sliding_state_window, false,
511
491
  DEFINE_string(logfile, "v8.log", "Specify the name of the log file.")
512
492
  DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.")
513
493
 
514
- //
515
- // Heap protection flags
516
- // Using heap protection requires ENABLE_LOGGING_AND_PROFILING as well.
517
- //
518
- #ifdef ENABLE_HEAP_PROTECTION
519
- #undef FLAG
520
- #define FLAG FLAG_FULL
521
-
522
- DEFINE_bool(protect_heap, false,
523
- "Protect/unprotect V8's heap when leaving/entring the VM.")
524
-
525
- #endif
526
-
527
494
  //
528
495
  // Disassembler only flags
529
496
  //