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
@@ -200,9 +200,9 @@ class Page {
200
200
 
201
201
  inline void SetIsLargeObjectPage(bool is_large_object_page);
202
202
 
203
- inline bool IsPageExecutable();
203
+ inline Executability PageExecutability();
204
204
 
205
- inline void SetIsPageExecutable(bool is_page_executable);
205
+ inline void SetPageExecutability(Executability executable);
206
206
 
207
207
  // Returns the offset of a given address to this page.
208
208
  INLINE(int Offset(Address a)) {
@@ -380,12 +380,6 @@ class Space : public Malloced {
380
380
  // (e.g. see LargeObjectSpace).
381
381
  virtual intptr_t SizeOfObjects() { return Size(); }
382
382
 
383
- #ifdef ENABLE_HEAP_PROTECTION
384
- // Protect/unprotect the space by marking it read-only/writable.
385
- virtual void Protect() = 0;
386
- virtual void Unprotect() = 0;
387
- #endif
388
-
389
383
  #ifdef DEBUG
390
384
  virtual void Print() = 0;
391
385
  #endif
@@ -414,6 +408,9 @@ class Space : public Malloced {
414
408
  // manages a range of virtual memory.
415
409
  class CodeRange {
416
410
  public:
411
+ explicit CodeRange(Isolate* isolate);
412
+ ~CodeRange() { TearDown(); }
413
+
417
414
  // Reserves a range of virtual memory, but does not commit any of it.
418
415
  // Can only be called once, at heap initialization time.
419
416
  // Returns false on failure.
@@ -423,9 +420,9 @@ class CodeRange {
423
420
  // manage it.
424
421
  void TearDown();
425
422
 
426
- bool exists() { return code_range_ != NULL; }
423
+ bool exists() { return this != NULL && code_range_ != NULL; }
427
424
  bool contains(Address address) {
428
- if (code_range_ == NULL) return false;
425
+ if (this == NULL || code_range_ == NULL) return false;
429
426
  Address start = static_cast<Address>(code_range_->address());
430
427
  return start <= address && address < start + code_range_->size();
431
428
  }
@@ -438,7 +435,7 @@ class CodeRange {
438
435
  void FreeRawMemory(void* buf, size_t length);
439
436
 
440
437
  private:
441
- CodeRange();
438
+ Isolate* isolate_;
442
439
 
443
440
  // The reserved range of virtual memory that all code objects are put in.
444
441
  VirtualMemory* code_range_;
@@ -472,10 +469,6 @@ class CodeRange {
472
469
  static int CompareFreeBlockAddress(const FreeBlock* left,
473
470
  const FreeBlock* right);
474
471
 
475
- friend class Isolate;
476
-
477
- Isolate* isolate_;
478
-
479
472
  DISALLOW_COPY_AND_ASSIGN(CodeRange);
480
473
  };
481
474
 
@@ -506,6 +499,8 @@ class CodeRange {
506
499
 
507
500
  class MemoryAllocator {
508
501
  public:
502
+ explicit MemoryAllocator(Isolate* isolate);
503
+
509
504
  // Initializes its internal bookkeeping structures.
510
505
  // Max capacity of the total space and executable memory limit.
511
506
  bool Setup(intptr_t max_capacity, intptr_t capacity_executable);
@@ -641,17 +636,6 @@ class MemoryAllocator {
641
636
  Page** last_page,
642
637
  Page** last_page_in_use);
643
638
 
644
- #ifdef ENABLE_HEAP_PROTECTION
645
- // Protect/unprotect a block of memory by marking it read-only/writable.
646
- inline void Protect(Address start, size_t size);
647
- inline void Unprotect(Address start, size_t size,
648
- Executability executable);
649
-
650
- // Protect/unprotect a chunk given a page in the chunk.
651
- inline void ProtectChunkFromPage(Page* page);
652
- inline void UnprotectChunkFromPage(Page* page);
653
- #endif
654
-
655
639
  #ifdef DEBUG
656
640
  // Reports statistic info of the space.
657
641
  void ReportStatistics();
@@ -664,22 +648,19 @@ class MemoryAllocator {
664
648
  #ifdef V8_TARGET_ARCH_X64
665
649
  static const int kPagesPerChunk = 32;
666
650
  // On 64 bit the chunk table consists of 4 levels of 4096-entry tables.
667
- static const int kPagesPerChunkLog2 = 5;
668
651
  static const int kChunkTableLevels = 4;
669
652
  static const int kChunkTableBitsPerLevel = 12;
670
653
  #else
671
654
  static const int kPagesPerChunk = 16;
672
655
  // On 32 bit the chunk table consists of 2 levels of 256-entry tables.
673
- static const int kPagesPerChunkLog2 = 4;
674
656
  static const int kChunkTableLevels = 2;
675
657
  static const int kChunkTableBitsPerLevel = 8;
676
658
  #endif
677
659
 
678
660
  private:
679
- MemoryAllocator();
680
-
681
661
  static const int kChunkSize = kPagesPerChunk * Page::kPageSize;
682
- static const int kChunkSizeLog2 = kPagesPerChunkLog2 + kPageSizeBits;
662
+
663
+ Isolate* isolate_;
683
664
 
684
665
  // Maximum space size in bytes.
685
666
  intptr_t capacity_;
@@ -773,10 +754,6 @@ class MemoryAllocator {
773
754
  Page* prev,
774
755
  Page** last_page_in_use);
775
756
 
776
- friend class Isolate;
777
-
778
- Isolate* isolate_;
779
-
780
757
  DISALLOW_COPY_AND_ASSIGN(MemoryAllocator);
781
758
  };
782
759
 
@@ -1157,12 +1134,6 @@ class PagedSpace : public Space {
1157
1134
  // Ensures that the capacity is at least 'capacity'. Returns false on failure.
1158
1135
  bool EnsureCapacity(int capacity);
1159
1136
 
1160
- #ifdef ENABLE_HEAP_PROTECTION
1161
- // Protect/unprotect the space by marking it read-only/writable.
1162
- void Protect();
1163
- void Unprotect();
1164
- #endif
1165
-
1166
1137
  #ifdef DEBUG
1167
1138
  // Print meta info and objects in this space.
1168
1139
  virtual void Print();
@@ -1270,7 +1241,6 @@ class PagedSpace : public Space {
1270
1241
  };
1271
1242
 
1272
1243
 
1273
- #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1274
1244
  class NumberAndSizeInfo BASE_EMBEDDED {
1275
1245
  public:
1276
1246
  NumberAndSizeInfo() : number_(0), bytes_(0) {}
@@ -1293,9 +1263,7 @@ class NumberAndSizeInfo BASE_EMBEDDED {
1293
1263
 
1294
1264
 
1295
1265
  // HistogramInfo class for recording a single "bar" of a histogram. This
1296
- // class is used for collecting statistics to print to stdout (when compiled
1297
- // with DEBUG) or to the log file (when compiled with
1298
- // ENABLE_LOGGING_AND_PROFILING).
1266
+ // class is used for collecting statistics to print to the log file.
1299
1267
  class HistogramInfo: public NumberAndSizeInfo {
1300
1268
  public:
1301
1269
  HistogramInfo() : NumberAndSizeInfo() {}
@@ -1306,7 +1274,6 @@ class HistogramInfo: public NumberAndSizeInfo {
1306
1274
  private:
1307
1275
  const char* name_;
1308
1276
  };
1309
- #endif
1310
1277
 
1311
1278
 
1312
1279
  // -----------------------------------------------------------------------------
@@ -1392,12 +1359,6 @@ class SemiSpace : public Space {
1392
1359
  bool Commit();
1393
1360
  bool Uncommit();
1394
1361
 
1395
- #ifdef ENABLE_HEAP_PROTECTION
1396
- // Protect/unprotect the space by marking it read-only/writable.
1397
- virtual void Protect() {}
1398
- virtual void Unprotect() {}
1399
- #endif
1400
-
1401
1362
  #ifdef DEBUG
1402
1363
  virtual void Print();
1403
1364
  virtual void Verify();
@@ -1628,12 +1589,6 @@ class NewSpace : public Space {
1628
1589
  template <typename StringType>
1629
1590
  inline void ShrinkStringAtAllocationBoundary(String* string, int len);
1630
1591
 
1631
- #ifdef ENABLE_HEAP_PROTECTION
1632
- // Protect/unprotect the space by marking it read-only/writable.
1633
- virtual void Protect();
1634
- virtual void Unprotect();
1635
- #endif
1636
-
1637
1592
  #ifdef DEBUG
1638
1593
  // Verify the active semispace.
1639
1594
  virtual void Verify();
@@ -1641,7 +1596,6 @@ class NewSpace : public Space {
1641
1596
  virtual void Print() { to_space_.Print(); }
1642
1597
  #endif
1643
1598
 
1644
- #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1645
1599
  // Iterates the active semispace to collect statistics.
1646
1600
  void CollectStatistics();
1647
1601
  // Reports previously collected statistics of the active semispace.
@@ -1654,7 +1608,6 @@ class NewSpace : public Space {
1654
1608
  // to space during a scavenge GC.
1655
1609
  void RecordAllocation(HeapObject* obj);
1656
1610
  void RecordPromotion(HeapObject* obj);
1657
- #endif
1658
1611
 
1659
1612
  // Return whether the operation succeded.
1660
1613
  bool CommitFromSpaceIfNeeded() {
@@ -1683,10 +1636,8 @@ class NewSpace : public Space {
1683
1636
  AllocationInfo allocation_info_;
1684
1637
  AllocationInfo mc_forwarding_info_;
1685
1638
 
1686
- #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1687
1639
  HistogramInfo* allocated_histogram_;
1688
1640
  HistogramInfo* promoted_histogram_;
1689
- #endif
1690
1641
 
1691
1642
  // Implementation of AllocateRaw and MCAllocateRaw.
1692
1643
  MUST_USE_RESULT inline MaybeObject* AllocateRawInternal(
@@ -2193,7 +2144,7 @@ class LargeObjectChunk {
2193
2144
  static LargeObjectChunk* New(int size_in_bytes, Executability executable);
2194
2145
 
2195
2146
  // Free the memory associated with the chunk.
2196
- inline void Free(Executability executable);
2147
+ void Free(Executability executable);
2197
2148
 
2198
2149
  // Interpret a raw address as a large object chunk.
2199
2150
  static LargeObjectChunk* FromAddress(Address address) {
@@ -2203,13 +2154,17 @@ class LargeObjectChunk {
2203
2154
  // Returns the address of this chunk.
2204
2155
  Address address() { return reinterpret_cast<Address>(this); }
2205
2156
 
2157
+ Page* GetPage() {
2158
+ return Page::FromAddress(RoundUp(address(), Page::kPageSize));
2159
+ }
2160
+
2206
2161
  // Accessors for the fields of the chunk.
2207
2162
  LargeObjectChunk* next() { return next_; }
2208
2163
  void set_next(LargeObjectChunk* chunk) { next_ = chunk; }
2209
2164
  size_t size() { return size_ & ~Page::kPageFlagMask; }
2210
2165
 
2211
2166
  // Compute the start address in the chunk.
2212
- inline Address GetStartAddress();
2167
+ Address GetStartAddress() { return GetPage()->ObjectAreaStart(); }
2213
2168
 
2214
2169
  // Returns the object in this chunk.
2215
2170
  HeapObject* GetObject() { return HeapObject::FromAddress(GetStartAddress()); }
@@ -2296,12 +2251,6 @@ class LargeObjectSpace : public Space {
2296
2251
  // may use some memory, leaving less for large objects.
2297
2252
  virtual bool ReserveSpace(int bytes);
2298
2253
 
2299
- #ifdef ENABLE_HEAP_PROTECTION
2300
- // Protect/unprotect the space by marking it read-only/writable.
2301
- void Protect();
2302
- void Unprotect();
2303
- #endif
2304
-
2305
2254
  #ifdef DEBUG
2306
2255
  virtual void Verify();
2307
2256
  virtual void Print();
@@ -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:
@@ -30,6 +30,8 @@
30
30
  #include "factory.h"
31
31
  #include "string-stream.h"
32
32
 
33
+ #include "allocation-inl.h"
34
+
33
35
  namespace v8 {
34
36
  namespace internal {
35
37
 
@@ -149,7 +149,7 @@ function StringLastIndexOf(pat /* position */) { // length == 1
149
149
  position = 0;
150
150
  }
151
151
  if (position + patLength < subLength) {
152
- index = position
152
+ index = position;
153
153
  }
154
154
  }
155
155
  }
@@ -170,7 +170,7 @@ function StringLocaleCompare(other) {
170
170
  ["String.prototype.localeCompare"]);
171
171
  }
172
172
  if (%_ArgumentsLength() === 0) return 0;
173
- return %StringLocaleCompare(TO_STRING_INLINE(this),
173
+ return %StringLocaleCompare(TO_STRING_INLINE(this),
174
174
  TO_STRING_INLINE(other));
175
175
  }
176
176
 
@@ -251,7 +251,8 @@ function StringReplace(search, replace) {
251
251
 
252
252
  // Compute the string to replace with.
253
253
  if (IS_FUNCTION(replace)) {
254
- builder.add(%_CallFunction(%GetGlobalReceiver(),
254
+ var receiver = %GetDefaultReceiver(replace);
255
+ builder.add(%_CallFunction(receiver,
255
256
  search,
256
257
  start,
257
258
  subject,
@@ -274,7 +275,7 @@ function StringReplace(search, replace) {
274
275
  // the result.
275
276
  function ExpandReplacement(string, subject, matchInfo, builder) {
276
277
  var length = string.length;
277
- var builder_elements = builder.elements;
278
+ var builder_elements = builder.elements;
278
279
  var next = %StringIndexOf(string, '$', 0);
279
280
  if (next < 0) {
280
281
  if (length > 0) builder_elements.push(string);
@@ -418,7 +419,7 @@ function StringReplaceGlobalRegExpWithFunction(subject, regexp, replace) {
418
419
  if (NUMBER_OF_CAPTURES(lastMatchInfo) == 2) {
419
420
  var match_start = 0;
420
421
  var override = new InternalArray(null, 0, subject);
421
- var receiver = %GetGlobalReceiver();
422
+ var receiver = %GetDefaultReceiver(replace);
422
423
  while (i < len) {
423
424
  var elem = res[i];
424
425
  if (%_IsSmi(elem)) {
@@ -475,8 +476,9 @@ function StringReplaceNonGlobalRegExpWithFunction(subject, regexp, replace) {
475
476
  // No captures, only the match, which is always valid.
476
477
  var s = SubString(subject, index, endOfMatch);
477
478
  // Don't call directly to avoid exposing the built-in global object.
479
+ var receiver = %GetDefaultReceiver(replace);
478
480
  replacement =
479
- %_CallFunction(%GetGlobalReceiver(), s, index, subject, replace);
481
+ %_CallFunction(receiver, s, index, subject, replace);
480
482
  } else {
481
483
  var parameters = new InternalArray(m + 2);
482
484
  for (var j = 0; j < m; j++) {
@@ -909,6 +911,8 @@ function ReplaceResultBuilder(str) {
909
911
  this.special_string = str;
910
912
  }
911
913
 
914
+ ReplaceResultBuilder.prototype.__proto__ = null;
915
+
912
916
 
913
917
  ReplaceResultBuilder.prototype.add = function(str) {
914
918
  str = TO_STRING_INLINE(str);
@@ -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:
@@ -26,9 +26,13 @@
26
26
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
28
  #include <stdarg.h>
29
- #include <limits.h>
29
+ #include <limits>
30
30
 
31
- #include "v8.h"
31
+ #ifndef V8_INFINITY
32
+ #define V8_INFINITY std::numeric_limits<double>::infinity()
33
+ #endif
34
+
35
+ #include "utils.h"
32
36
 
33
37
  #include "strtod.h"
34
38
  #include "bignum.h"
@@ -29,6 +29,8 @@
29
29
 
30
30
  #include "api.h"
31
31
  #include "arguments.h"
32
+ #include "ast.h"
33
+ #include "code-stubs.h"
32
34
  #include "gdb-jit.h"
33
35
  #include "ic-inl.h"
34
36
  #include "stub-cache.h"
@@ -485,86 +487,7 @@ MaybeObject* StubCache::ComputeStoreField(String* name,
485
487
  }
486
488
 
487
489
 
488
- namespace {
489
-
490
- ExternalArrayType ElementsKindToExternalArrayType(JSObject::ElementsKind kind) {
491
- switch (kind) {
492
- case JSObject::EXTERNAL_BYTE_ELEMENTS:
493
- return kExternalByteArray;
494
- case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
495
- return kExternalUnsignedByteArray;
496
- case JSObject::EXTERNAL_SHORT_ELEMENTS:
497
- return kExternalShortArray;
498
- case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
499
- return kExternalUnsignedShortArray;
500
- case JSObject::EXTERNAL_INT_ELEMENTS:
501
- return kExternalIntArray;
502
- case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
503
- return kExternalUnsignedIntArray;
504
- case JSObject::EXTERNAL_FLOAT_ELEMENTS:
505
- return kExternalFloatArray;
506
- case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
507
- return kExternalDoubleArray;
508
- case JSObject::EXTERNAL_PIXEL_ELEMENTS:
509
- return kExternalPixelArray;
510
- default:
511
- UNREACHABLE();
512
- return static_cast<ExternalArrayType>(0);
513
- }
514
- }
515
-
516
- } // anonymous namespace
517
-
518
-
519
- MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
520
- JSObject* receiver,
521
- bool is_store,
522
- StrictModeFlag strict_mode) {
523
- Code::Flags flags =
524
- Code::ComputeMonomorphicFlags(
525
- is_store ? Code::KEYED_STORE_IC :
526
- Code::KEYED_LOAD_IC,
527
- NORMAL,
528
- strict_mode);
529
- ExternalArrayType array_type =
530
- ElementsKindToExternalArrayType(receiver->GetElementsKind());
531
- String* name = is_store
532
- ? isolate()->heap()->KeyedStoreSpecializedMonomorphic_symbol()
533
- : isolate()->heap()->KeyedLoadSpecializedMonomorphic_symbol();
534
- Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
535
- if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
536
-
537
- MaybeObject* maybe_new_code = NULL;
538
- if (is_store) {
539
- ExternalArrayStoreStubCompiler compiler(strict_mode);
540
- maybe_new_code = compiler.CompileStore(receiver, array_type);
541
- } else {
542
- ExternalArrayLoadStubCompiler compiler(strict_mode);
543
- maybe_new_code = compiler.CompileLoad(receiver, array_type);
544
- }
545
- Code* code;
546
- if (!maybe_new_code->To(&code)) return maybe_new_code;
547
- code->set_external_array_type(array_type);
548
- if (is_store) {
549
- PROFILE(isolate_,
550
- CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_STORE_IC_TAG,
551
- Code::cast(code), 0));
552
- } else {
553
- PROFILE(isolate_,
554
- CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG,
555
- Code::cast(code), 0));
556
- }
557
- ASSERT(code->IsCode());
558
- Object* result;
559
- { MaybeObject* maybe_result =
560
- receiver->UpdateMapCodeCache(name, Code::cast(code));
561
- if (!maybe_result->ToObject(&result)) return maybe_result;
562
- }
563
- return code;
564
- }
565
-
566
-
567
- MaybeObject* StubCache::ComputeKeyedLoadOrStoreFastElement(
490
+ MaybeObject* StubCache::ComputeKeyedLoadOrStoreElement(
568
491
  JSObject* receiver,
569
492
  bool is_store,
570
493
  StrictModeFlag strict_mode) {
@@ -575,18 +498,19 @@ MaybeObject* StubCache::ComputeKeyedLoadOrStoreFastElement(
575
498
  NORMAL,
576
499
  strict_mode);
577
500
  String* name = is_store
578
- ? isolate()->heap()->KeyedStoreSpecializedMonomorphic_symbol()
579
- : isolate()->heap()->KeyedLoadSpecializedMonomorphic_symbol();
501
+ ? isolate()->heap()->KeyedStoreElementMonomorphic_symbol()
502
+ : isolate()->heap()->KeyedLoadElementMonomorphic_symbol();
580
503
  Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
581
504
  if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
582
505
 
583
506
  MaybeObject* maybe_new_code = NULL;
507
+ Map* receiver_map = receiver->map();
584
508
  if (is_store) {
585
509
  KeyedStoreStubCompiler compiler(strict_mode);
586
- maybe_new_code = compiler.CompileStoreFastElement(receiver->map());
510
+ maybe_new_code = compiler.CompileStoreElement(receiver_map);
587
511
  } else {
588
512
  KeyedLoadStubCompiler compiler;
589
- maybe_new_code = compiler.CompileLoadFastElement(receiver->map());
513
+ maybe_new_code = compiler.CompileLoadElement(receiver_map);
590
514
  }
591
515
  Code* code;
592
516
  if (!maybe_new_code->To(&code)) return maybe_new_code;
@@ -929,12 +853,7 @@ MaybeObject* StubCache::ComputeCallGlobal(int argc,
929
853
  CallStubCompiler compiler(
930
854
  argc, in_loop, kind, extra_ic_state, cache_holder);
931
855
  { MaybeObject* maybe_code =
932
- compiler.CompileCallGlobal(receiver,
933
- holder,
934
- cell,
935
- function,
936
- name,
937
- extra_ic_state);
856
+ compiler.CompileCallGlobal(receiver, holder, cell, function, name);
938
857
  if (!maybe_code->ToObject(&code)) return maybe_code;
939
858
  }
940
859
  ASSERT_EQ(flags, Code::cast(code)->flags());
@@ -1122,6 +1041,26 @@ MaybeObject* StubCache::ComputeCallNormal(int argc,
1122
1041
  }
1123
1042
 
1124
1043
 
1044
+ MaybeObject* StubCache::ComputeCallArguments(int argc,
1045
+ InLoopFlag in_loop,
1046
+ Code::Kind kind) {
1047
+ ASSERT(kind == Code::KEYED_CALL_IC);
1048
+ Code::Flags flags = Code::ComputeFlags(kind,
1049
+ in_loop,
1050
+ MEGAMORPHIC,
1051
+ Code::kNoExtraICState,
1052
+ NORMAL,
1053
+ argc);
1054
+ Object* probe;
1055
+ { MaybeObject* maybe_probe = ProbeCache(isolate_, flags);
1056
+ if (!maybe_probe->ToObject(&probe)) return maybe_probe;
1057
+ }
1058
+ if (!probe->IsUndefined()) return probe;
1059
+ StubCompiler compiler;
1060
+ return FillCache(isolate_, compiler.CompileCallArguments(flags));
1061
+ }
1062
+
1063
+
1125
1064
  MaybeObject* StubCache::ComputeCallMegamorphic(
1126
1065
  int argc,
1127
1066
  InLoopFlag in_loop,
@@ -1223,7 +1162,7 @@ void StubCache::Clear() {
1223
1162
  }
1224
1163
 
1225
1164
 
1226
- void StubCache::CollectMatchingMaps(ZoneMapList* types,
1165
+ void StubCache::CollectMatchingMaps(SmallMapList* types,
1227
1166
  String* name,
1228
1167
  Code::Flags flags) {
1229
1168
  for (int i = 0; i < kPrimaryTableSize; i++) {
@@ -1452,8 +1391,7 @@ RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty) {
1452
1391
  JSObject* recv = JSObject::cast(args[0]);
1453
1392
  String* name = String::cast(args[1]);
1454
1393
  Object* value = args[2];
1455
- StrictModeFlag strict_mode =
1456
- static_cast<StrictModeFlag>(Smi::cast(args[3])->value());
1394
+ StrictModeFlag strict_mode = static_cast<StrictModeFlag>(args.smi_at(3));
1457
1395
  ASSERT(strict_mode == kStrictMode || strict_mode == kNonStrictMode);
1458
1396
  ASSERT(recv->HasNamedInterceptor());
1459
1397
  PropertyAttributes attr = NONE;
@@ -1465,8 +1403,8 @@ RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty) {
1465
1403
 
1466
1404
  RUNTIME_FUNCTION(MaybeObject*, KeyedLoadPropertyWithInterceptor) {
1467
1405
  JSObject* receiver = JSObject::cast(args[0]);
1468
- ASSERT(Smi::cast(args[1])->value() >= 0);
1469
- uint32_t index = Smi::cast(args[1])->value();
1406
+ ASSERT(args.smi_at(1) >= 0);
1407
+ uint32_t index = args.smi_at(1);
1470
1408
  return receiver->GetElementWithInterceptor(receiver, index);
1471
1409
  }
1472
1410
 
@@ -1578,6 +1516,26 @@ MaybeObject* StubCompiler::CompileCallMegamorphic(Code::Flags flags) {
1578
1516
  }
1579
1517
 
1580
1518
 
1519
+ MaybeObject* StubCompiler::CompileCallArguments(Code::Flags flags) {
1520
+ HandleScope scope(isolate());
1521
+ int argc = Code::ExtractArgumentsCountFromFlags(flags);
1522
+ KeyedCallIC::GenerateNonStrictArguments(masm(), argc);
1523
+ Code::Kind kind = Code::ExtractKindFromFlags(flags);
1524
+ Object* result;
1525
+ { MaybeObject* maybe_result =
1526
+ GetCodeWithFlags(flags, "CompileCallArguments");
1527
+ if (!maybe_result->ToObject(&result)) return maybe_result;
1528
+ }
1529
+ Code* code = Code::cast(result);
1530
+ USE(code);
1531
+ PROFILE(isolate(),
1532
+ CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MEGAMORPHIC_TAG),
1533
+ code, code->arguments_count()));
1534
+ GDBJIT(AddCode(GDBJITInterface::CALL_MEGAMORPHIC, Code::cast(code)));
1535
+ return result;
1536
+ }
1537
+
1538
+
1581
1539
  MaybeObject* StubCompiler::CompileCallMiss(Code::Flags flags) {
1582
1540
  HandleScope scope(isolate());
1583
1541
  int argc = Code::ExtractArgumentsCountFromFlags(flags);
@@ -1765,6 +1723,12 @@ MaybeObject* KeyedStoreStubCompiler::GetCode(PropertyType type,
1765
1723
  }
1766
1724
 
1767
1725
 
1726
+ void KeyedStoreStubCompiler::GenerateStoreDictionaryElement(
1727
+ MacroAssembler* masm) {
1728
+ KeyedStoreIC::GenerateSlow(masm);
1729
+ }
1730
+
1731
+
1768
1732
  CallStubCompiler::CallStubCompiler(int argc,
1769
1733
  InLoopFlag in_loop,
1770
1734
  Code::Kind kind,
@@ -1928,38 +1892,4 @@ void CallOptimization::AnalyzePossibleApiFunction(JSFunction* function) {
1928
1892
  }
1929
1893
 
1930
1894
 
1931
- MaybeObject* ExternalArrayLoadStubCompiler::GetCode() {
1932
- Object* result;
1933
- Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC,
1934
- NORMAL,
1935
- strict_mode_);
1936
- { MaybeObject* maybe_result = GetCodeWithFlags(flags,
1937
- "ExternalArrayLoadStub");
1938
- if (!maybe_result->ToObject(&result)) return maybe_result;
1939
- }
1940
- Code* code = Code::cast(result);
1941
- USE(code);
1942
- PROFILE(isolate(),
1943
- CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayLoadStub"));
1944
- return result;
1945
- }
1946
-
1947
-
1948
- MaybeObject* ExternalArrayStoreStubCompiler::GetCode() {
1949
- Object* result;
1950
- Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_STORE_IC,
1951
- NORMAL,
1952
- strict_mode_);
1953
- { MaybeObject* maybe_result = GetCodeWithFlags(flags,
1954
- "ExternalArrayStoreStub");
1955
- if (!maybe_result->ToObject(&result)) return maybe_result;
1956
- }
1957
- Code* code = Code::cast(result);
1958
- USE(code);
1959
- PROFILE(isolate(),
1960
- CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayStoreStub"));
1961
- return result;
1962
- }
1963
-
1964
-
1965
1895
  } } // namespace v8::internal