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
@@ -38,9 +38,13 @@ import sys
38
38
  script_dir = os.path.dirname(__file__)
39
39
  v8_root = os.path.normpath(os.path.join(script_dir, os.pardir))
40
40
 
41
+ sys.path.insert(0, os.path.join(v8_root, 'tools'))
42
+ import utils
43
+
41
44
  sys.path.insert(0, os.path.join(v8_root, 'build', 'gyp', 'pylib'))
42
45
  import gyp
43
46
 
47
+
44
48
  def apply_gyp_environment(file_path=None):
45
49
  """
46
50
  Reads in a *.gyp_env file and applies the valid keys to os.environ.
@@ -68,6 +72,7 @@ def apply_gyp_environment(file_path=None):
68
72
  else:
69
73
  os.environ[var] = val
70
74
 
75
+
71
76
  def additional_include_files(args=[]):
72
77
  """
73
78
  Returns a list of additional (.gypi) files to include, without
@@ -87,8 +92,8 @@ def additional_include_files(args=[]):
87
92
  if os.path.realpath(path) not in specified_includes:
88
93
  result.append(path)
89
94
 
90
- # Always include common.gypi & features_override.gypi
91
- AddInclude(os.path.join(script_dir, 'common.gypi'))
95
+ # Always include standalone.gypi
96
+ AddInclude(os.path.join(script_dir, 'standalone.gypi'))
92
97
 
93
98
  # Optionally add supplemental .gypi files if present.
94
99
  supplements = glob.glob(os.path.join(v8_root, '*', 'supplement.gypi'))
@@ -97,6 +102,14 @@ def additional_include_files(args=[]):
97
102
 
98
103
  return result
99
104
 
105
+
106
+ def run_gyp(args):
107
+ rc = gyp.main(args)
108
+ if rc != 0:
109
+ print 'Error running GYP'
110
+ sys.exit(rc)
111
+
112
+
100
113
  if __name__ == '__main__':
101
114
  args = sys.argv[1:]
102
115
 
@@ -141,5 +154,20 @@ if __name__ == '__main__':
141
154
  print 'Updating projects from gyp files...'
142
155
  sys.stdout.flush()
143
156
 
144
- # Off we go...
145
- sys.exit(gyp.main(args))
157
+ # Generate for the architectures supported on the given platform.
158
+ gyp_args = list(args)
159
+ gyp_args.append('-Dtarget_arch=ia32')
160
+ if utils.GuessOS() == 'linux':
161
+ gyp_args.append('-S-ia32')
162
+ run_gyp(gyp_args)
163
+
164
+ if utils.GuessOS() == 'linux':
165
+ gyp_args = list(args)
166
+ gyp_args.append('-Dtarget_arch=x64')
167
+ gyp_args.append('-S-x64')
168
+ run_gyp(gyp_args)
169
+
170
+ gyp_args = list(args)
171
+ gyp_args.append('-I' + v8_root + '/build/armu.gypi')
172
+ gyp_args.append('-S-armu')
173
+ run_gyp(gyp_args)
@@ -0,0 +1,200 @@
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
+ # Definitions to be used when building stand-alone V8 binaries.
29
+
30
+ {
31
+ 'variables': {
32
+ 'library%': 'static_library',
33
+ 'component%': 'static_library',
34
+ 'visibility%': 'hidden',
35
+ 'msvs_multi_core_compile%': '1',
36
+ 'variables': {
37
+ 'variables': {
38
+ 'conditions': [
39
+ [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
40
+ # This handles the Linux platforms we generally deal with. Anything
41
+ # else gets passed through, which probably won't work very well; such
42
+ # hosts should pass an explicit target_arch to gyp.
43
+ 'host_arch%':
44
+ '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/")',
45
+ }, { # OS!="linux" and OS!="freebsd" and OS!="openbsd"
46
+ 'host_arch%': 'ia32',
47
+ }],
48
+ ],
49
+ },
50
+ 'host_arch%': '<(host_arch)',
51
+ 'target_arch%': '<(host_arch)',
52
+ 'v8_target_arch%': '<(target_arch)',
53
+ },
54
+ 'host_arch%': '<(host_arch)',
55
+ 'target_arch%': '<(target_arch)',
56
+ 'v8_target_arch%': '<(v8_target_arch)',
57
+ 'conditions': [
58
+ ['(v8_target_arch=="arm" and host_arch!="arm") or \
59
+ (v8_target_arch=="x64" and host_arch!="x64")', {
60
+ 'want_separate_host_toolset': 1,
61
+ }, {
62
+ 'want_separate_host_toolset': 0,
63
+ }],
64
+ ],
65
+ },
66
+ 'target_defaults': {
67
+ 'default_configuration': 'Debug',
68
+ 'configurations': {
69
+ 'Debug': {
70
+ 'cflags': [ '-g', '-O0' ],
71
+ },
72
+ },
73
+ },
74
+ 'conditions': [
75
+ [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
76
+ 'target_defaults': {
77
+ 'cflags': [ '-Wall', '-Werror', '-W', '-Wno-unused-parameter',
78
+ '-Wnon-virtual-dtor', '-pthread', '-fno-rtti',
79
+ '-fno-exceptions', '-pedantic' ],
80
+ 'ldflags': [ '-pthread', ],
81
+ 'conditions': [
82
+ [ 'target_arch=="ia32"', {
83
+ 'cflags': [ '-m32' ],
84
+ 'ldflags': [ '-m32' ],
85
+ }],
86
+ [ 'OS=="linux"', {
87
+ 'cflags': [ '-ansi' ],
88
+ }],
89
+ [ 'visibility=="hidden"', {
90
+ 'cflags': [ '-fvisibility=hidden' ],
91
+ }],
92
+ [ 'component=="shared_library"', {
93
+ 'cflags': [ '-fPIC', ],
94
+ }],
95
+ ],
96
+ },
97
+ }], # 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"'
98
+ ['OS=="win"', {
99
+ 'target_defaults': {
100
+ 'defines': [
101
+ 'WIN32',
102
+ '_CRT_SECURE_NO_DEPRECATE',
103
+ '_CRT_NONSTDC_NO_DEPRECATE',
104
+ ],
105
+ 'conditions': [
106
+ ['component=="static_library"', {
107
+ 'defines': [
108
+ '_HAS_EXCEPTIONS=0',
109
+ ],
110
+ }],
111
+ ],
112
+ 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
113
+ 'msvs_disabled_warnings': [4355, 4800],
114
+ 'msvs_settings': {
115
+ 'VCCLCompilerTool': {
116
+ 'MinimalRebuild': 'false',
117
+ 'BufferSecurityCheck': 'true',
118
+ 'EnableFunctionLevelLinking': 'true',
119
+ 'RuntimeTypeInfo': 'false',
120
+ 'WarningLevel': '3',
121
+ 'WarnAsError': 'true',
122
+ 'DebugInformationFormat': '3',
123
+ 'Detect64BitPortabilityProblems': 'false',
124
+ 'conditions': [
125
+ [ 'msvs_multi_core_compile', {
126
+ 'AdditionalOptions': ['/MP'],
127
+ }],
128
+ ['component=="shared_library"', {
129
+ 'ExceptionHandling': '1', # /EHsc
130
+ }, {
131
+ 'ExceptionHandling': '0',
132
+ }],
133
+ ],
134
+ },
135
+ 'VCLibrarianTool': {
136
+ 'AdditionalOptions': ['/ignore:4221'],
137
+ },
138
+ 'VCLinkerTool': {
139
+ 'AdditionalDependencies': [
140
+ 'ws2_32.lib',
141
+ ],
142
+ 'GenerateDebugInformation': 'true',
143
+ 'MapFileName': '$(OutDir)\\$(TargetName).map',
144
+ 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib',
145
+ 'FixedBaseAddress': '1',
146
+ # LinkIncremental values:
147
+ # 0 == default
148
+ # 1 == /INCREMENTAL:NO
149
+ # 2 == /INCREMENTAL
150
+ 'LinkIncremental': '1',
151
+ # SubSystem values:
152
+ # 0 == not set
153
+ # 1 == /SUBSYSTEM:CONSOLE
154
+ # 2 == /SUBSYSTEM:WINDOWS
155
+ 'SubSystem': '1',
156
+ },
157
+ },
158
+ },
159
+ }], # OS=="win"
160
+ ['OS=="mac"', {
161
+ 'target_defaults': {
162
+ 'xcode_settings': {
163
+ 'ALWAYS_SEARCH_USER_PATHS': 'NO',
164
+ 'GCC_C_LANGUAGE_STANDARD': 'ansi', # -ansi
165
+ 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
166
+ 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
167
+ # (Equivalent to -fPIC)
168
+ 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
169
+ 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
170
+ 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
171
+ # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
172
+ 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
173
+ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
174
+ 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
175
+ 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror
176
+ 'GCC_VERSION': '4.2',
177
+ 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
178
+ 'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
179
+ 'PREBINDING': 'NO', # No -Wl,-prebind
180
+ 'USE_HEADERMAP': 'NO',
181
+ 'OTHER_CFLAGS': [
182
+ '-fno-strict-aliasing',
183
+ ],
184
+ 'WARNING_CFLAGS': [
185
+ '-Wall',
186
+ '-Wendif-labels',
187
+ '-W',
188
+ '-Wno-unused-parameter',
189
+ '-Wnon-virtual-dtor',
190
+ ],
191
+ },
192
+ 'target_conditions': [
193
+ ['_type!="static_library"', {
194
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
195
+ }],
196
+ ], # target_conditions
197
+ }, # target_defaults
198
+ }], # OS=="mac"
199
+ ],
200
+ }
File without changes
@@ -269,17 +269,10 @@ class V8EXPORT HeapGraphNode {
269
269
 
270
270
  /**
271
271
  * Returns node id. For the same heap object, the id remains the same
272
- * across all snapshots. Not applicable to aggregated heap snapshots
273
- * as they only contain aggregated instances.
272
+ * across all snapshots.
274
273
  */
275
274
  uint64_t GetId() const;
276
275
 
277
- /**
278
- * Returns the number of instances. Only applicable to aggregated
279
- * heap snapshots.
280
- */
281
- int GetInstancesCount() const;
282
-
283
276
  /** Returns node's own size, in bytes. */
284
277
  int GetSelfSize() const;
285
278
 
@@ -323,9 +316,7 @@ class V8EXPORT HeapGraphNode {
323
316
  class V8EXPORT HeapSnapshot {
324
317
  public:
325
318
  enum Type {
326
- kFull = 0, // Heap snapshot with all instances and references.
327
- kAggregated = 1 // Snapshot doesn't contain individual heap entries,
328
- // instead they are grouped by constructor name.
319
+ kFull = 0 // Heap snapshot with all instances and references.
329
320
  };
330
321
  enum SerializationFormat {
331
322
  kJSON = 0 // See format description near 'Serialize' method.
@@ -346,6 +337,12 @@ class V8EXPORT HeapSnapshot {
346
337
  /** Returns a node by its id. */
347
338
  const HeapGraphNode* GetNodeById(uint64_t id) const;
348
339
 
340
+ /** Returns total nodes count in the snapshot. */
341
+ int GetNodesCount() const;
342
+
343
+ /** Returns a node by index. */
344
+ const HeapGraphNode* GetNode(int index) const;
345
+
349
346
  /**
350
347
  * Deletes the snapshot and removes it from HeapProfiler's list.
351
348
  * All pointers to nodes, edges and paths previously returned become
@@ -80,9 +80,11 @@ namespace v8 {
80
80
 
81
81
  class Context;
82
82
  class String;
83
+ class StringObject;
83
84
  class Value;
84
85
  class Utils;
85
86
  class Number;
87
+ class NumberObject;
86
88
  class Object;
87
89
  class Array;
88
90
  class Int32;
@@ -90,6 +92,7 @@ class Uint32;
90
92
  class External;
91
93
  class Primitive;
92
94
  class Boolean;
95
+ class BooleanObject;
93
96
  class Integer;
94
97
  class Function;
95
98
  class Date;
@@ -165,16 +168,15 @@ typedef void (*WeakReferenceCallback)(Persistent<Value> object,
165
168
  */
166
169
  template <class T> class Handle {
167
170
  public:
168
-
169
171
  /**
170
172
  * Creates an empty handle.
171
173
  */
172
- inline Handle();
174
+ inline Handle() : val_(0) {}
173
175
 
174
176
  /**
175
177
  * Creates a new handle for the specified value.
176
178
  */
177
- inline explicit Handle(T* val) : val_(val) { }
179
+ inline explicit Handle(T* val) : val_(val) {}
178
180
 
179
181
  /**
180
182
  * Creates a handle for the contents of the specified handle. This
@@ -201,14 +203,14 @@ template <class T> class Handle {
201
203
  */
202
204
  inline bool IsEmpty() const { return val_ == 0; }
203
205
 
204
- inline T* operator->() const { return val_; }
205
-
206
- inline T* operator*() const { return val_; }
207
-
208
206
  /**
209
207
  * Sets the handle to be empty. IsEmpty() will then return true.
210
208
  */
211
- inline void Clear() { this->val_ = 0; }
209
+ inline void Clear() { val_ = 0; }
210
+
211
+ inline T* operator->() const { return val_; }
212
+
213
+ inline T* operator*() const { return val_; }
212
214
 
213
215
  /**
214
216
  * Checks whether two handles are the same.
@@ -312,7 +314,6 @@ template <class T> class Local : public Handle<T> {
312
314
  */
313
315
  template <class T> class Persistent : public Handle<T> {
314
316
  public:
315
-
316
317
  /**
317
318
  * Creates an empty persistent handle that doesn't point to any
318
319
  * storage cell.
@@ -586,7 +587,6 @@ class ScriptOrigin {
586
587
  */
587
588
  class V8EXPORT Script {
588
589
  public:
589
-
590
590
  /**
591
591
  * Compiles the specified script (context-independent).
592
592
  *
@@ -858,7 +858,6 @@ class V8EXPORT StackFrame {
858
858
  */
859
859
  class Value : public Data {
860
860
  public:
861
-
862
861
  /**
863
862
  * Returns true if this value is the undefined value. See ECMA-262
864
863
  * 4.3.10.
@@ -932,6 +931,26 @@ class Value : public Data {
932
931
  */
933
932
  V8EXPORT bool IsDate() const;
934
933
 
934
+ /**
935
+ * Returns true if this value is a Boolean object.
936
+ */
937
+ V8EXPORT bool IsBooleanObject() const;
938
+
939
+ /**
940
+ * Returns true if this value is a Number object.
941
+ */
942
+ V8EXPORT bool IsNumberObject() const;
943
+
944
+ /**
945
+ * Returns true if this value is a String object.
946
+ */
947
+ V8EXPORT bool IsStringObject() const;
948
+
949
+ /**
950
+ * Returns true if this value is a NativeError.
951
+ */
952
+ V8EXPORT bool IsNativeError() const;
953
+
935
954
  /**
936
955
  * Returns true if this value is a RegExp.
937
956
  */
@@ -990,7 +1009,6 @@ class Boolean : public Primitive {
990
1009
  */
991
1010
  class String : public Primitive {
992
1011
  public:
993
-
994
1012
  /**
995
1013
  * Returns the number of characters in this string.
996
1014
  */
@@ -1021,29 +1039,30 @@ class String : public Primitive {
1021
1039
  * \param length The number of characters to copy from the string. For
1022
1040
  * WriteUtf8 the number of bytes in the buffer.
1023
1041
  * \param nchars_ref The number of characters written, can be NULL.
1024
- * \param hints Various hints that might affect performance of this or
1042
+ * \param options Various options that might affect performance of this or
1025
1043
  * subsequent operations.
1026
1044
  * \return The number of characters copied to the buffer excluding the null
1027
1045
  * terminator. For WriteUtf8: The number of bytes copied to the buffer
1028
- * including the null terminator.
1046
+ * including the null terminator (if written).
1029
1047
  */
1030
- enum WriteHints {
1031
- NO_HINTS = 0,
1032
- HINT_MANY_WRITES_EXPECTED = 1
1048
+ enum WriteOptions {
1049
+ NO_OPTIONS = 0,
1050
+ HINT_MANY_WRITES_EXPECTED = 1,
1051
+ NO_NULL_TERMINATION = 2
1033
1052
  };
1034
1053
 
1035
1054
  V8EXPORT int Write(uint16_t* buffer,
1036
1055
  int start = 0,
1037
1056
  int length = -1,
1038
- WriteHints hints = NO_HINTS) const; // UTF-16
1057
+ int options = NO_OPTIONS) const; // UTF-16
1039
1058
  V8EXPORT int WriteAscii(char* buffer,
1040
1059
  int start = 0,
1041
1060
  int length = -1,
1042
- WriteHints hints = NO_HINTS) const; // ASCII
1061
+ int options = NO_OPTIONS) const; // ASCII
1043
1062
  V8EXPORT int WriteUtf8(char* buffer,
1044
1063
  int length = -1,
1045
1064
  int* nchars_ref = NULL,
1046
- WriteHints hints = NO_HINTS) const; // UTF-8
1065
+ int options = NO_OPTIONS) const; // UTF-8
1047
1066
 
1048
1067
  /**
1049
1068
  * A zero length string.
@@ -1317,7 +1336,7 @@ class Number : public Primitive {
1317
1336
  static inline Number* Cast(v8::Value* obj);
1318
1337
  private:
1319
1338
  V8EXPORT Number();
1320
- static void CheckCast(v8::Value* obj);
1339
+ V8EXPORT static void CheckCast(v8::Value* obj);
1321
1340
  };
1322
1341
 
1323
1342
 
@@ -1440,6 +1459,13 @@ class Object : public Value {
1440
1459
 
1441
1460
  V8EXPORT Local<Value> Get(uint32_t index);
1442
1461
 
1462
+ /**
1463
+ * Gets the property attributes of a property which can be None or
1464
+ * any combination of ReadOnly, DontEnum and DontDelete. Returns
1465
+ * None when the property doesn't exist.
1466
+ */
1467
+ V8EXPORT PropertyAttribute GetPropertyAttributes(Handle<Value> key);
1468
+
1443
1469
  // TODO(1245389): Replace the type-specific versions of these
1444
1470
  // functions with generic ones that accept a Handle<Value> key.
1445
1471
  V8EXPORT bool Has(Handle<String> key);
@@ -1469,6 +1495,13 @@ class Object : public Value {
1469
1495
  */
1470
1496
  V8EXPORT Local<Array> GetPropertyNames();
1471
1497
 
1498
+ /**
1499
+ * This function has the same functionality as GetPropertyNames but
1500
+ * the returned array doesn't contain the names of properties from
1501
+ * prototype objects.
1502
+ */
1503
+ V8EXPORT Local<Array> GetOwnPropertyNames();
1504
+
1472
1505
  /**
1473
1506
  * Get the prototype object. This does not skip objects marked to
1474
1507
  * be skipped by __proto__ and it does not consult the security
@@ -1640,6 +1673,7 @@ class Object : public Value {
1640
1673
 
1641
1674
  V8EXPORT static Local<Object> New();
1642
1675
  static inline Object* Cast(Value* obj);
1676
+
1643
1677
  private:
1644
1678
  V8EXPORT Object();
1645
1679
  V8EXPORT static void CheckCast(Value* obj);
@@ -1676,7 +1710,7 @@ class Array : public Object {
1676
1710
  static inline Array* Cast(Value* obj);
1677
1711
  private:
1678
1712
  V8EXPORT Array();
1679
- static void CheckCast(Value* obj);
1713
+ V8EXPORT static void CheckCast(Value* obj);
1680
1714
  };
1681
1715
 
1682
1716
 
@@ -1741,6 +1775,63 @@ class Date : public Object {
1741
1775
  };
1742
1776
 
1743
1777
 
1778
+ /**
1779
+ * A Number object (ECMA-262, 4.3.21).
1780
+ */
1781
+ class NumberObject : public Object {
1782
+ public:
1783
+ V8EXPORT static Local<Value> New(double value);
1784
+
1785
+ /**
1786
+ * Returns the Number held by the object.
1787
+ */
1788
+ V8EXPORT double NumberValue() const;
1789
+
1790
+ static inline NumberObject* Cast(v8::Value* obj);
1791
+
1792
+ private:
1793
+ V8EXPORT static void CheckCast(v8::Value* obj);
1794
+ };
1795
+
1796
+
1797
+ /**
1798
+ * A Boolean object (ECMA-262, 4.3.15).
1799
+ */
1800
+ class BooleanObject : public Object {
1801
+ public:
1802
+ V8EXPORT static Local<Value> New(bool value);
1803
+
1804
+ /**
1805
+ * Returns the Boolean held by the object.
1806
+ */
1807
+ V8EXPORT bool BooleanValue() const;
1808
+
1809
+ static inline BooleanObject* Cast(v8::Value* obj);
1810
+
1811
+ private:
1812
+ V8EXPORT static void CheckCast(v8::Value* obj);
1813
+ };
1814
+
1815
+
1816
+ /**
1817
+ * A String object (ECMA-262, 4.3.18).
1818
+ */
1819
+ class StringObject : public Object {
1820
+ public:
1821
+ V8EXPORT static Local<Value> New(Handle<String> value);
1822
+
1823
+ /**
1824
+ * Returns the String held by the object.
1825
+ */
1826
+ V8EXPORT Local<String> StringValue() const;
1827
+
1828
+ static inline StringObject* Cast(v8::Value* obj);
1829
+
1830
+ private:
1831
+ V8EXPORT static void CheckCast(v8::Value* obj);
1832
+ };
1833
+
1834
+
1744
1835
  /**
1745
1836
  * An instance of the built-in RegExp constructor (ECMA-262, 15.10).
1746
1837
  */
@@ -2140,6 +2231,12 @@ class V8EXPORT FunctionTemplate : public Template {
2140
2231
  */
2141
2232
  void SetHiddenPrototype(bool value);
2142
2233
 
2234
+ /**
2235
+ * Sets the ReadOnly flag in the attributes of the 'prototype' property
2236
+ * of functions created from this FunctionTemplate to true.
2237
+ */
2238
+ void ReadOnlyPrototype();
2239
+
2143
2240
  /**
2144
2241
  * Returns true if the given object is an instance of this function
2145
2242
  * template.
@@ -2547,23 +2644,6 @@ typedef void (*GCEpilogueCallback)(GCType type, GCCallbackFlags flags);
2547
2644
  typedef void (*GCCallback)();
2548
2645
 
2549
2646
 
2550
- /**
2551
- * Profiler modules.
2552
- *
2553
- * In V8, profiler consists of several modules: CPU profiler, and different
2554
- * kinds of heap profiling. Each can be turned on / off independently.
2555
- * When PROFILER_MODULE_HEAP_SNAPSHOT flag is passed to ResumeProfilerEx,
2556
- * modules are enabled only temporarily for making a snapshot of the heap.
2557
- */
2558
- enum ProfilerModules {
2559
- PROFILER_MODULE_NONE = 0,
2560
- PROFILER_MODULE_CPU = 1,
2561
- PROFILER_MODULE_HEAP_STATS = 1 << 1,
2562
- PROFILER_MODULE_JS_CONSTRUCTORS = 1 << 2,
2563
- PROFILER_MODULE_HEAP_SNAPSHOT = 1 << 16
2564
- };
2565
-
2566
-
2567
2647
  /**
2568
2648
  * Collection of V8 heap information.
2569
2649
  *
@@ -2682,7 +2762,6 @@ class V8EXPORT Isolate {
2682
2762
  void* GetData();
2683
2763
 
2684
2764
  private:
2685
-
2686
2765
  Isolate();
2687
2766
  Isolate(const Isolate&);
2688
2767
  ~Isolate();
@@ -2704,6 +2783,38 @@ class StartupData {
2704
2783
  int raw_size;
2705
2784
  };
2706
2785
 
2786
+
2787
+ /**
2788
+ * A helper class for driving V8 startup data decompression. It is based on
2789
+ * "CompressedStartupData" API functions from the V8 class. It isn't mandatory
2790
+ * for an embedder to use this class, instead, API functions can be used
2791
+ * directly.
2792
+ *
2793
+ * For an example of the class usage, see the "shell.cc" sample application.
2794
+ */
2795
+ class V8EXPORT StartupDataDecompressor { // NOLINT
2796
+ public:
2797
+ StartupDataDecompressor();
2798
+ virtual ~StartupDataDecompressor();
2799
+ int Decompress();
2800
+
2801
+ protected:
2802
+ virtual int DecompressData(char* raw_data,
2803
+ int* raw_data_size,
2804
+ const char* compressed_data,
2805
+ int compressed_data_size) = 0;
2806
+
2807
+ private:
2808
+ char** raw_data;
2809
+ };
2810
+
2811
+
2812
+ /**
2813
+ * EntropySource is used as a callback function when v8 needs a source
2814
+ * of entropy.
2815
+ */
2816
+ typedef bool (*EntropySource)(unsigned char* buffer, size_t length);
2817
+
2707
2818
  /**
2708
2819
  * Container class for static utility functions.
2709
2820
  */
@@ -2753,6 +2864,10 @@ class V8EXPORT V8 {
2753
2864
  * v8::V8::SetDecompressedStartupData(compressed_data);
2754
2865
  * ... now V8 can be initialized
2755
2866
  * ... make sure the decompressed data stays valid until V8 shutdown
2867
+ *
2868
+ * A helper class StartupDataDecompressor is provided. It implements
2869
+ * the protocol of the interaction described above, and can be used in
2870
+ * most cases instead of calling these API functions directly.
2756
2871
  */
2757
2872
  static StartupData::CompressionAlgorithm GetCompressedStartupDataAlgorithm();
2758
2873
  static int GetCompressedStartupDataCount();
@@ -2924,6 +3039,12 @@ class V8EXPORT V8 {
2924
3039
  */
2925
3040
  static bool Initialize();
2926
3041
 
3042
+ /**
3043
+ * Allows the host application to provide a callback which can be used
3044
+ * as a source of entropy for random number generators.
3045
+ */
3046
+ static void SetEntropySource(EntropySource source);
3047
+
2927
3048
  /**
2928
3049
  * Adjusts the amount of registered external memory. Used to give
2929
3050
  * V8 an indication of the amount of externally allocated memory
@@ -2962,65 +3083,6 @@ class V8EXPORT V8 {
2962
3083
  */
2963
3084
  static bool IsProfilerPaused();
2964
3085
 
2965
- /**
2966
- * Resumes specified profiler modules. Can be called several times to
2967
- * mark the opening of a profiler events block with the given tag.
2968
- *
2969
- * "ResumeProfiler" is equivalent to "ResumeProfilerEx(PROFILER_MODULE_CPU)".
2970
- * See ProfilerModules enum.
2971
- *
2972
- * \param flags Flags specifying profiler modules.
2973
- * \param tag Profile tag.
2974
- */
2975
- static void ResumeProfilerEx(int flags, int tag = 0);
2976
-
2977
- /**
2978
- * Pauses specified profiler modules. Each call to "PauseProfilerEx" closes
2979
- * a block of profiler events opened by a call to "ResumeProfilerEx" with the
2980
- * same tag value. There is no need for blocks to be properly nested.
2981
- * The profiler is paused when the last opened block is closed.
2982
- *
2983
- * "PauseProfiler" is equivalent to "PauseProfilerEx(PROFILER_MODULE_CPU)".
2984
- * See ProfilerModules enum.
2985
- *
2986
- * \param flags Flags specifying profiler modules.
2987
- * \param tag Profile tag.
2988
- */
2989
- static void PauseProfilerEx(int flags, int tag = 0);
2990
-
2991
- /**
2992
- * Returns active (resumed) profiler modules.
2993
- * See ProfilerModules enum.
2994
- *
2995
- * \returns active profiler modules.
2996
- */
2997
- static int GetActiveProfilerModules();
2998
-
2999
- /**
3000
- * If logging is performed into a memory buffer (via --logfile=*), allows to
3001
- * retrieve previously written messages. This can be used for retrieving
3002
- * profiler log data in the application. This function is thread-safe.
3003
- *
3004
- * Caller provides a destination buffer that must exist during GetLogLines
3005
- * call. Only whole log lines are copied into the buffer.
3006
- *
3007
- * \param from_pos specified a point in a buffer to read from, 0 is the
3008
- * beginning of a buffer. It is assumed that caller updates its current
3009
- * position using returned size value from the previous call.
3010
- * \param dest_buf destination buffer for log data.
3011
- * \param max_size size of the destination buffer.
3012
- * \returns actual size of log data copied into buffer.
3013
- */
3014
- static int GetLogLines(int from_pos, char* dest_buf, int max_size);
3015
-
3016
- /**
3017
- * The minimum allowed size for a log lines buffer. If the size of
3018
- * the buffer given will not be enough to hold a line of the maximum
3019
- * length, an attempt to find a log line end in GetLogLines will
3020
- * fail, and an empty result will be returned.
3021
- */
3022
- static const int kMinimumSizeForLogLinesBuffer = 2048;
3023
-
3024
3086
  /**
3025
3087
  * Retrieve the V8 thread id of the calling thread.
3026
3088
  *
@@ -3074,8 +3136,10 @@ class V8EXPORT V8 {
3074
3136
  * because of a call to TerminateExecution. In that case there are
3075
3137
  * still JavaScript frames on the stack and the termination
3076
3138
  * exception is still active.
3139
+ *
3140
+ * \param isolate The isolate in which to check.
3077
3141
  */
3078
- static bool IsExecutionTerminating();
3142
+ static bool IsExecutionTerminating(Isolate* isolate = NULL);
3079
3143
 
3080
3144
  /**
3081
3145
  * Releases any resources used by v8 and stops any utility threads
@@ -3144,7 +3208,6 @@ class V8EXPORT V8 {
3144
3208
  */
3145
3209
  class V8EXPORT TryCatch {
3146
3210
  public:
3147
-
3148
3211
  /**
3149
3212
  * Creates a new try/catch block and registers it with v8.
3150
3213
  */
@@ -3236,6 +3299,7 @@ class V8EXPORT TryCatch {
3236
3299
  void SetCaptureMessage(bool value);
3237
3300
 
3238
3301
  private:
3302
+ v8::internal::Isolate* isolate_;
3239
3303
  void* next_;
3240
3304
  void* exception_;
3241
3305
  void* message_;
@@ -3543,7 +3607,7 @@ class V8EXPORT Locker {
3543
3607
  /**
3544
3608
  * Returns whether v8::Locker is being used by this V8 instance.
3545
3609
  */
3546
- static bool IsActive() { return active_; }
3610
+ static bool IsActive();
3547
3611
 
3548
3612
  private:
3549
3613
  bool has_lock_;
@@ -3690,7 +3754,6 @@ template <> struct InternalConstants<8> {
3690
3754
  */
3691
3755
  class Internals {
3692
3756
  public:
3693
-
3694
3757
  // These values match non-compiler-dependent values defined within
3695
3758
  // the implementation of v8.
3696
3759
  static const int kHeapObjectMapOffset = 0;
@@ -3703,7 +3766,7 @@ class Internals {
3703
3766
  static const int kFullStringRepresentationMask = 0x07;
3704
3767
  static const int kExternalTwoByteRepresentationTag = 0x02;
3705
3768
 
3706
- static const int kJSObjectType = 0xa2;
3769
+ static const int kJSObjectType = 0xa3;
3707
3770
  static const int kFirstNonstringType = 0x80;
3708
3771
  static const int kForeignType = 0x85;
3709
3772
 
@@ -3764,10 +3827,6 @@ class Internals {
3764
3827
  } // namespace internal
3765
3828
 
3766
3829
 
3767
- template <class T>
3768
- Handle<T>::Handle() : val_(0) { }
3769
-
3770
-
3771
3830
  template <class T>
3772
3831
  Local<T>::Local() : Handle<T>() { }
3773
3832
 
@@ -4047,6 +4106,30 @@ Date* Date::Cast(v8::Value* value) {
4047
4106
  }
4048
4107
 
4049
4108
 
4109
+ StringObject* StringObject::Cast(v8::Value* value) {
4110
+ #ifdef V8_ENABLE_CHECKS
4111
+ CheckCast(value);
4112
+ #endif
4113
+ return static_cast<StringObject*>(value);
4114
+ }
4115
+
4116
+
4117
+ NumberObject* NumberObject::Cast(v8::Value* value) {
4118
+ #ifdef V8_ENABLE_CHECKS
4119
+ CheckCast(value);
4120
+ #endif
4121
+ return static_cast<NumberObject*>(value);
4122
+ }
4123
+
4124
+
4125
+ BooleanObject* BooleanObject::Cast(v8::Value* value) {
4126
+ #ifdef V8_ENABLE_CHECKS
4127
+ CheckCast(value);
4128
+ #endif
4129
+ return static_cast<BooleanObject*>(value);
4130
+ }
4131
+
4132
+
4050
4133
  RegExp* RegExp::Cast(v8::Value* value) {
4051
4134
  #ifdef V8_ENABLE_CHECKS
4052
4135
  CheckCast(value);