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
@@ -169,7 +169,8 @@ void BreakLocationIterator::Next() {
169
169
  if ((code->is_inline_cache_stub() &&
170
170
  !code->is_binary_op_stub() &&
171
171
  !code->is_unary_op_stub() &&
172
- !code->is_compare_ic_stub()) ||
172
+ !code->is_compare_ic_stub() &&
173
+ !code->is_to_boolean_ic_stub()) ||
173
174
  RelocInfo::IsConstructCall(rmode())) {
174
175
  break_point_++;
175
176
  return;
@@ -772,9 +773,9 @@ bool Debug::CompileDebuggerScript(int index) {
772
773
  bool caught_exception = false;
773
774
  Handle<JSFunction> function =
774
775
  factory->NewFunctionFromSharedFunctionInfo(function_info, context);
775
- Handle<Object> result =
776
- Execution::TryCall(function, Handle<Object>(context->global()),
777
- 0, NULL, &caught_exception);
776
+
777
+ Execution::TryCall(function, Handle<Object>(context->global()),
778
+ 0, NULL, &caught_exception);
778
779
 
779
780
  // Check for caught exceptions.
780
781
  if (caught_exception) {
@@ -796,7 +797,6 @@ bool Debug::Load() {
796
797
  // Return if debugger is already loaded.
797
798
  if (IsLoaded()) return true;
798
799
 
799
- ASSERT(Isolate::Current() == isolate_);
800
800
  Debugger* debugger = isolate_->debugger();
801
801
 
802
802
  // Bail out if we're already in the process of compiling the native
@@ -1048,7 +1048,6 @@ Handle<Object> Debug::CheckBreakPoints(Handle<Object> break_point_objects) {
1048
1048
 
1049
1049
  // Check whether a single break point object is triggered.
1050
1050
  bool Debug::CheckBreakPoint(Handle<Object> break_point_object) {
1051
- ASSERT(Isolate::Current() == isolate_);
1052
1051
  Factory* factory = isolate_->factory();
1053
1052
  HandleScope scope(isolate_);
1054
1053
 
@@ -1234,7 +1233,6 @@ bool Debug::IsBreakOnException(ExceptionBreakType type) {
1234
1233
 
1235
1234
 
1236
1235
  void Debug::PrepareStep(StepAction step_action, int step_count) {
1237
- ASSERT(Isolate::Current() == isolate_);
1238
1236
  HandleScope scope(isolate_);
1239
1237
  ASSERT(Debug::InDebugger());
1240
1238
 
@@ -1739,7 +1737,6 @@ void Debug::RemoveDebugInfo(Handle<DebugInfo> debug_info) {
1739
1737
 
1740
1738
 
1741
1739
  void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
1742
- ASSERT(Isolate::Current() == isolate_);
1743
1740
  HandleScope scope(isolate_);
1744
1741
 
1745
1742
  // Get the executing function in which the debug break occurred.
@@ -1825,6 +1822,13 @@ void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
1825
1822
  bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
1826
1823
  HandleScope scope(isolate_);
1827
1824
 
1825
+ // If there are no break points this cannot be break at return, as
1826
+ // the debugger statement and stack guard bebug break cannot be at
1827
+ // return.
1828
+ if (!has_break_points_) {
1829
+ return false;
1830
+ }
1831
+
1828
1832
  // Get the executing function in which the debug break occurred.
1829
1833
  Handle<SharedFunctionInfo> shared =
1830
1834
  Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
@@ -1872,7 +1876,6 @@ bool Debug::IsDebugGlobal(GlobalObject* global) {
1872
1876
 
1873
1877
 
1874
1878
  void Debug::ClearMirrorCache() {
1875
- ASSERT(Isolate::Current() == isolate_);
1876
1879
  PostponeInterruptsScope postpone(isolate_);
1877
1880
  HandleScope scope(isolate_);
1878
1881
  ASSERT(isolate_->context() == *Debug::debug_context());
@@ -1884,15 +1887,13 @@ void Debug::ClearMirrorCache() {
1884
1887
  *function_name));
1885
1888
  ASSERT(fun->IsJSFunction());
1886
1889
  bool caught_exception;
1887
- Handle<Object> js_object = Execution::TryCall(
1888
- Handle<JSFunction>::cast(fun),
1890
+ Execution::TryCall(Handle<JSFunction>::cast(fun),
1889
1891
  Handle<JSObject>(Debug::debug_context()->global()),
1890
1892
  0, NULL, &caught_exception);
1891
1893
  }
1892
1894
 
1893
1895
 
1894
1896
  void Debug::CreateScriptCache() {
1895
- ASSERT(Isolate::Current() == isolate_);
1896
1897
  Heap* heap = isolate_->heap();
1897
1898
  HandleScope scope(isolate_);
1898
1899
 
@@ -1934,7 +1935,6 @@ void Debug::AddScriptToScriptCache(Handle<Script> script) {
1934
1935
 
1935
1936
 
1936
1937
  Handle<FixedArray> Debug::GetLoadedScripts() {
1937
- ASSERT(Isolate::Current() == isolate_);
1938
1938
  // Create and fill the script cache when the loaded scripts is requested for
1939
1939
  // the first time.
1940
1940
  if (script_cache_ == NULL) {
@@ -1964,8 +1964,8 @@ void Debug::AfterGarbageCollection() {
1964
1964
  }
1965
1965
 
1966
1966
 
1967
- Debugger::Debugger()
1968
- : debugger_access_(OS::CreateMutex()),
1967
+ Debugger::Debugger(Isolate* isolate)
1968
+ : debugger_access_(isolate->debugger_access()),
1969
1969
  event_listener_(Handle<Object>()),
1970
1970
  event_listener_data_(Handle<Object>()),
1971
1971
  compiling_natives_(false),
@@ -1979,15 +1979,14 @@ Debugger::Debugger()
1979
1979
  message_dispatch_helper_thread_(NULL),
1980
1980
  host_dispatch_micros_(100 * 1000),
1981
1981
  agent_(NULL),
1982
- command_queue_(kQueueInitialSize),
1982
+ command_queue_(isolate->logger(), kQueueInitialSize),
1983
1983
  command_received_(OS::CreateSemaphore(0)),
1984
- event_command_queue_(kQueueInitialSize) {
1984
+ event_command_queue_(isolate->logger(), kQueueInitialSize),
1985
+ isolate_(isolate) {
1985
1986
  }
1986
1987
 
1987
1988
 
1988
1989
  Debugger::~Debugger() {
1989
- delete debugger_access_;
1990
- debugger_access_ = 0;
1991
1990
  delete dispatch_handler_access_;
1992
1991
  dispatch_handler_access_ = 0;
1993
1992
  delete command_received_;
@@ -1998,7 +1997,6 @@ Debugger::~Debugger() {
1998
1997
  Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
1999
1998
  int argc, Object*** argv,
2000
1999
  bool* caught_exception) {
2001
- ASSERT(Isolate::Current() == isolate_);
2002
2000
  ASSERT(isolate_->context() == *isolate_->debug()->debug_context());
2003
2001
 
2004
2002
  // Create the execution state object.
@@ -2020,7 +2018,6 @@ Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
2020
2018
 
2021
2019
 
2022
2020
  Handle<Object> Debugger::MakeExecutionState(bool* caught_exception) {
2023
- ASSERT(Isolate::Current() == isolate_);
2024
2021
  // Create the execution state object.
2025
2022
  Handle<Object> break_id = isolate_->factory()->NewNumberFromInt(
2026
2023
  isolate_->debug()->break_id());
@@ -2034,7 +2031,6 @@ Handle<Object> Debugger::MakeExecutionState(bool* caught_exception) {
2034
2031
  Handle<Object> Debugger::MakeBreakEvent(Handle<Object> exec_state,
2035
2032
  Handle<Object> break_points_hit,
2036
2033
  bool* caught_exception) {
2037
- ASSERT(Isolate::Current() == isolate_);
2038
2034
  // Create the new break event object.
2039
2035
  const int argc = 2;
2040
2036
  Object** argv[argc] = { exec_state.location(),
@@ -2050,7 +2046,6 @@ Handle<Object> Debugger::MakeExceptionEvent(Handle<Object> exec_state,
2050
2046
  Handle<Object> exception,
2051
2047
  bool uncaught,
2052
2048
  bool* caught_exception) {
2053
- ASSERT(Isolate::Current() == isolate_);
2054
2049
  Factory* factory = isolate_->factory();
2055
2050
  // Create the new exception event object.
2056
2051
  const int argc = 3;
@@ -2065,7 +2060,6 @@ Handle<Object> Debugger::MakeExceptionEvent(Handle<Object> exec_state,
2065
2060
 
2066
2061
  Handle<Object> Debugger::MakeNewFunctionEvent(Handle<Object> function,
2067
2062
  bool* caught_exception) {
2068
- ASSERT(Isolate::Current() == isolate_);
2069
2063
  // Create the new function event object.
2070
2064
  const int argc = 1;
2071
2065
  Object** argv[argc] = { function.location() };
@@ -2077,7 +2071,6 @@ Handle<Object> Debugger::MakeNewFunctionEvent(Handle<Object> function,
2077
2071
  Handle<Object> Debugger::MakeCompileEvent(Handle<Script> script,
2078
2072
  bool before,
2079
2073
  bool* caught_exception) {
2080
- ASSERT(Isolate::Current() == isolate_);
2081
2074
  Factory* factory = isolate_->factory();
2082
2075
  // Create the compile event object.
2083
2076
  Handle<Object> exec_state = MakeExecutionState(caught_exception);
@@ -2097,7 +2090,6 @@ Handle<Object> Debugger::MakeCompileEvent(Handle<Script> script,
2097
2090
 
2098
2091
  Handle<Object> Debugger::MakeScriptCollectedEvent(int id,
2099
2092
  bool* caught_exception) {
2100
- ASSERT(Isolate::Current() == isolate_);
2101
2093
  // Create the script collected event object.
2102
2094
  Handle<Object> exec_state = MakeExecutionState(caught_exception);
2103
2095
  Handle<Object> id_object = Handle<Smi>(Smi::FromInt(id));
@@ -2112,7 +2104,6 @@ Handle<Object> Debugger::MakeScriptCollectedEvent(int id,
2112
2104
 
2113
2105
 
2114
2106
  void Debugger::OnException(Handle<Object> exception, bool uncaught) {
2115
- ASSERT(Isolate::Current() == isolate_);
2116
2107
  HandleScope scope(isolate_);
2117
2108
  Debug* debug = isolate_->debug();
2118
2109
 
@@ -2157,7 +2148,6 @@ void Debugger::OnException(Handle<Object> exception, bool uncaught) {
2157
2148
 
2158
2149
  void Debugger::OnDebugBreak(Handle<Object> break_points_hit,
2159
2150
  bool auto_continue) {
2160
- ASSERT(Isolate::Current() == isolate_);
2161
2151
  HandleScope scope(isolate_);
2162
2152
 
2163
2153
  // Debugger has already been entered by caller.
@@ -2167,7 +2157,7 @@ void Debugger::OnDebugBreak(Handle<Object> break_points_hit,
2167
2157
  if (!Debugger::EventActive(v8::Break)) return;
2168
2158
 
2169
2159
  // Debugger must be entered in advance.
2170
- ASSERT(Isolate::Current()->context() == *isolate_->debug()->debug_context());
2160
+ ASSERT(isolate_->context() == *isolate_->debug()->debug_context());
2171
2161
 
2172
2162
  // Create the event data object.
2173
2163
  bool caught_exception = false;
@@ -2190,7 +2180,6 @@ void Debugger::OnDebugBreak(Handle<Object> break_points_hit,
2190
2180
 
2191
2181
 
2192
2182
  void Debugger::OnBeforeCompile(Handle<Script> script) {
2193
- ASSERT(Isolate::Current() == isolate_);
2194
2183
  HandleScope scope(isolate_);
2195
2184
 
2196
2185
  // Bail out based on state or if there is no listener for this event
@@ -2220,7 +2209,6 @@ void Debugger::OnBeforeCompile(Handle<Script> script) {
2220
2209
  // Handle debugger actions when a new script is compiled.
2221
2210
  void Debugger::OnAfterCompile(Handle<Script> script,
2222
2211
  AfterCompileFlags after_compile_flags) {
2223
- ASSERT(Isolate::Current() == isolate_);
2224
2212
  HandleScope scope(isolate_);
2225
2213
  Debug* debug = isolate_->debug();
2226
2214
 
@@ -2262,8 +2250,7 @@ void Debugger::OnAfterCompile(Handle<Script> script,
2262
2250
  bool caught_exception = false;
2263
2251
  const int argc = 1;
2264
2252
  Object** argv[argc] = { reinterpret_cast<Object**>(wrapper.location()) };
2265
- Handle<Object> result = Execution::TryCall(
2266
- Handle<JSFunction>::cast(update_script_break_points),
2253
+ Execution::TryCall(Handle<JSFunction>::cast(update_script_break_points),
2267
2254
  Isolate::Current()->js_builtins_object(), argc, argv,
2268
2255
  &caught_exception);
2269
2256
  if (caught_exception) {
@@ -2289,7 +2276,6 @@ void Debugger::OnAfterCompile(Handle<Script> script,
2289
2276
 
2290
2277
 
2291
2278
  void Debugger::OnScriptCollected(int id) {
2292
- ASSERT(Isolate::Current() == isolate_);
2293
2279
  HandleScope scope(isolate_);
2294
2280
 
2295
2281
  // No more to do if not debugging.
@@ -2319,7 +2305,6 @@ void Debugger::OnScriptCollected(int id) {
2319
2305
  void Debugger::ProcessDebugEvent(v8::DebugEvent event,
2320
2306
  Handle<JSObject> event_data,
2321
2307
  bool auto_continue) {
2322
- ASSERT(Isolate::Current() == isolate_);
2323
2308
  HandleScope scope(isolate_);
2324
2309
 
2325
2310
  // Clear any pending debug break if this is a real break.
@@ -2395,7 +2380,6 @@ void Debugger::CallJSEventCallback(v8::DebugEvent event,
2395
2380
  Handle<Object> exec_state,
2396
2381
  Handle<Object> event_data) {
2397
2382
  ASSERT(event_listener_->IsJSFunction());
2398
- ASSERT(Isolate::Current() == isolate_);
2399
2383
  Handle<JSFunction> fun(Handle<JSFunction>::cast(event_listener_));
2400
2384
 
2401
2385
  // Invoke the JavaScript debug event listener.
@@ -2411,7 +2395,6 @@ void Debugger::CallJSEventCallback(v8::DebugEvent event,
2411
2395
 
2412
2396
 
2413
2397
  Handle<Context> Debugger::GetDebugContext() {
2414
- ASSERT(Isolate::Current() == isolate_);
2415
2398
  never_unload_debugger_ = true;
2416
2399
  EnterDebugger debugger;
2417
2400
  return isolate_->debug()->debug_context();
@@ -2419,7 +2402,6 @@ Handle<Context> Debugger::GetDebugContext() {
2419
2402
 
2420
2403
 
2421
2404
  void Debugger::UnloadDebugger() {
2422
- ASSERT(Isolate::Current() == isolate_);
2423
2405
  Debug* debug = isolate_->debug();
2424
2406
 
2425
2407
  // Make sure that there are no breakpoints left.
@@ -2439,7 +2421,6 @@ void Debugger::NotifyMessageHandler(v8::DebugEvent event,
2439
2421
  Handle<JSObject> exec_state,
2440
2422
  Handle<JSObject> event_data,
2441
2423
  bool auto_continue) {
2442
- ASSERT(Isolate::Current() == isolate_);
2443
2424
  HandleScope scope(isolate_);
2444
2425
 
2445
2426
  if (!isolate_->debug()->Load()) return;
@@ -2535,7 +2516,8 @@ void Debugger::NotifyMessageHandler(v8::DebugEvent event,
2535
2516
 
2536
2517
  // Get the command from the queue.
2537
2518
  CommandMessage command = command_queue_.Get();
2538
- LOGGER->DebugTag("Got request from command queue, in interactive loop.");
2519
+ isolate_->logger()->DebugTag(
2520
+ "Got request from command queue, in interactive loop.");
2539
2521
  if (!Debugger::IsDebuggerActive()) {
2540
2522
  // Delete command text and user data.
2541
2523
  command.Dispose();
@@ -2609,7 +2591,6 @@ void Debugger::NotifyMessageHandler(v8::DebugEvent event,
2609
2591
 
2610
2592
  void Debugger::SetEventListener(Handle<Object> callback,
2611
2593
  Handle<Object> data) {
2612
- ASSERT(Isolate::Current() == isolate_);
2613
2594
  HandleScope scope(isolate_);
2614
2595
  GlobalHandles* global_handles = isolate_->global_handles();
2615
2596
 
@@ -2643,7 +2624,6 @@ void Debugger::SetEventListener(Handle<Object> callback,
2643
2624
 
2644
2625
 
2645
2626
  void Debugger::SetMessageHandler(v8::Debug::MessageHandler2 handler) {
2646
- ASSERT(Isolate::Current() == isolate_);
2647
2627
  ScopedLock with(debugger_access_);
2648
2628
 
2649
2629
  message_handler_ = handler;
@@ -2659,7 +2639,6 @@ void Debugger::SetMessageHandler(v8::Debug::MessageHandler2 handler) {
2659
2639
 
2660
2640
 
2661
2641
  void Debugger::ListenersChanged() {
2662
- ASSERT(Isolate::Current() == isolate_);
2663
2642
  if (IsDebuggerActive()) {
2664
2643
  // Disable the compilation cache when the debugger is active.
2665
2644
  isolate_->compilation_cache()->Disable();
@@ -2675,7 +2654,6 @@ void Debugger::ListenersChanged() {
2675
2654
 
2676
2655
  void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler,
2677
2656
  int period) {
2678
- ASSERT(Isolate::Current() == isolate_);
2679
2657
  host_dispatch_handler_ = handler;
2680
2658
  host_dispatch_micros_ = period * 1000;
2681
2659
  }
@@ -2683,7 +2661,6 @@ void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler,
2683
2661
 
2684
2662
  void Debugger::SetDebugMessageDispatchHandler(
2685
2663
  v8::Debug::DebugMessageDispatchHandler handler, bool provide_locker) {
2686
- ASSERT(Isolate::Current() == isolate_);
2687
2664
  ScopedLock with(dispatch_handler_access_);
2688
2665
  debug_message_dispatch_handler_ = handler;
2689
2666
 
@@ -2697,7 +2674,6 @@ void Debugger::SetDebugMessageDispatchHandler(
2697
2674
  // Calls the registered debug message handler. This callback is part of the
2698
2675
  // public API.
2699
2676
  void Debugger::InvokeMessageHandler(MessageImpl message) {
2700
- ASSERT(Isolate::Current() == isolate_);
2701
2677
  ScopedLock with(debugger_access_);
2702
2678
 
2703
2679
  if (message_handler_ != NULL) {
@@ -2712,13 +2688,12 @@ void Debugger::InvokeMessageHandler(MessageImpl message) {
2712
2688
  // by the API client thread.
2713
2689
  void Debugger::ProcessCommand(Vector<const uint16_t> command,
2714
2690
  v8::Debug::ClientData* client_data) {
2715
- ASSERT(Isolate::Current() == isolate_);
2716
2691
  // Need to cast away const.
2717
2692
  CommandMessage message = CommandMessage::New(
2718
2693
  Vector<uint16_t>(const_cast<uint16_t*>(command.start()),
2719
2694
  command.length()),
2720
2695
  client_data);
2721
- LOGGER->DebugTag("Put command on command_queue.");
2696
+ isolate_->logger()->DebugTag("Put command on command_queue.");
2722
2697
  command_queue_.Put(message);
2723
2698
  command_received_->Signal();
2724
2699
 
@@ -2742,13 +2717,11 @@ void Debugger::ProcessCommand(Vector<const uint16_t> command,
2742
2717
 
2743
2718
 
2744
2719
  bool Debugger::HasCommands() {
2745
- ASSERT(Isolate::Current() == isolate_);
2746
2720
  return !command_queue_.IsEmpty();
2747
2721
  }
2748
2722
 
2749
2723
 
2750
2724
  void Debugger::EnqueueDebugCommand(v8::Debug::ClientData* client_data) {
2751
- ASSERT(Isolate::Current() == isolate_);
2752
2725
  CommandMessage message = CommandMessage::New(Vector<uint16_t>(), client_data);
2753
2726
  event_command_queue_.Put(message);
2754
2727
 
@@ -2760,7 +2733,6 @@ void Debugger::EnqueueDebugCommand(v8::Debug::ClientData* client_data) {
2760
2733
 
2761
2734
 
2762
2735
  bool Debugger::IsDebuggerActive() {
2763
- ASSERT(Isolate::Current() == isolate_);
2764
2736
  ScopedLock with(debugger_access_);
2765
2737
 
2766
2738
  return message_handler_ != NULL || !event_listener_.is_null();
@@ -2770,7 +2742,6 @@ bool Debugger::IsDebuggerActive() {
2770
2742
  Handle<Object> Debugger::Call(Handle<JSFunction> fun,
2771
2743
  Handle<Object> data,
2772
2744
  bool* pending_exception) {
2773
- ASSERT(Isolate::Current() == isolate_);
2774
2745
  // When calling functions in the debugger prevent it from beeing unloaded.
2775
2746
  Debugger::never_unload_debugger_ = true;
2776
2747
 
@@ -2820,7 +2791,7 @@ bool Debugger::StartAgent(const char* name, int port,
2820
2791
 
2821
2792
  if (Socket::Setup()) {
2822
2793
  if (agent_ == NULL) {
2823
- agent_ = new DebuggerAgent(isolate_, name, port);
2794
+ agent_ = new DebuggerAgent(name, port);
2824
2795
  agent_->Start();
2825
2796
  }
2826
2797
  return true;
@@ -2849,7 +2820,6 @@ void Debugger::WaitForAgent() {
2849
2820
 
2850
2821
 
2851
2822
  void Debugger::CallMessageDispatchHandler() {
2852
- ASSERT(Isolate::Current() == isolate_);
2853
2823
  v8::Debug::DebugMessageDispatchHandler handler;
2854
2824
  {
2855
2825
  ScopedLock with(dispatch_handler_access_);
@@ -2957,7 +2927,7 @@ v8::Handle<v8::Context> MessageImpl::GetEventContext() const {
2957
2927
  v8::Handle<v8::Context> context = GetDebugEventContext(isolate);
2958
2928
  // Isolate::context() may be NULL when "script collected" event occures.
2959
2929
  ASSERT(!context.IsEmpty() || event_ == v8::ScriptCollected);
2960
- return GetDebugEventContext(isolate);
2930
+ return context;
2961
2931
  }
2962
2932
 
2963
2933
 
@@ -3083,8 +3053,8 @@ void CommandMessageQueue::Expand() {
3083
3053
  }
3084
3054
 
3085
3055
 
3086
- LockingCommandMessageQueue::LockingCommandMessageQueue(int size)
3087
- : queue_(size) {
3056
+ LockingCommandMessageQueue::LockingCommandMessageQueue(Logger* logger, int size)
3057
+ : logger_(logger), queue_(size) {
3088
3058
  lock_ = OS::CreateMutex();
3089
3059
  }
3090
3060
 
@@ -3103,7 +3073,7 @@ bool LockingCommandMessageQueue::IsEmpty() const {
3103
3073
  CommandMessage LockingCommandMessageQueue::Get() {
3104
3074
  ScopedLock sl(lock_);
3105
3075
  CommandMessage result = queue_.Get();
3106
- LOGGER->DebugEvent("Get", result.text());
3076
+ logger_->DebugEvent("Get", result.text());
3107
3077
  return result;
3108
3078
  }
3109
3079
 
@@ -3111,7 +3081,7 @@ CommandMessage LockingCommandMessageQueue::Get() {
3111
3081
  void LockingCommandMessageQueue::Put(const CommandMessage& message) {
3112
3082
  ScopedLock sl(lock_);
3113
3083
  queue_.Put(message);
3114
- LOGGER->DebugEvent("Put", message.text());
3084
+ logger_->DebugEvent("Put", message.text());
3115
3085
  }
3116
3086
 
3117
3087
 
@@ -3122,7 +3092,7 @@ void LockingCommandMessageQueue::Clear() {
3122
3092
 
3123
3093
 
3124
3094
  MessageDispatchHelperThread::MessageDispatchHelperThread(Isolate* isolate)
3125
- : Thread(isolate, "v8:MsgDispHelpr"),
3095
+ : Thread("v8:MsgDispHelpr"),
3126
3096
  sem_(OS::CreateSemaphore(0)), mutex_(OS::CreateMutex()),
3127
3097
  already_signalled_(false) {
3128
3098
  }
@@ -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:
@@ -35,6 +35,7 @@
35
35
  #include "execution.h"
36
36
  #include "factory.h"
37
37
  #include "flags.h"
38
+ #include "frames-inl.h"
38
39
  #include "hashmap.h"
39
40
  #include "platform.h"
40
41
  #include "string-stream.h"
@@ -678,13 +679,14 @@ class MessageDispatchHelperThread;
678
679
  // Mutex to CommandMessageQueue. Includes logging of all puts and gets.
679
680
  class LockingCommandMessageQueue BASE_EMBEDDED {
680
681
  public:
681
- explicit LockingCommandMessageQueue(int size);
682
+ LockingCommandMessageQueue(Logger* logger, int size);
682
683
  ~LockingCommandMessageQueue();
683
684
  bool IsEmpty() const;
684
685
  CommandMessage Get();
685
686
  void Put(const CommandMessage& message);
686
687
  void Clear();
687
688
  private:
689
+ Logger* logger_;
688
690
  CommandMessageQueue queue_;
689
691
  Mutex* lock_;
690
692
  DISALLOW_COPY_AND_ASSIGN(LockingCommandMessageQueue);
@@ -811,7 +813,7 @@ class Debugger {
811
813
  bool IsDebuggerActive();
812
814
 
813
815
  private:
814
- Debugger();
816
+ explicit Debugger(Isolate* isolate);
815
817
 
816
818
  void CallEventCallback(v8::DebugEvent event,
817
819
  Handle<Object> exec_state,