therubyracer-heroku 0.8.1.pre2 → 0.8.1.pre3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1239) hide show
  1. data/ext/v8/upstream/build/v8/libv8.a +0 -0
  2. data/lib/v8/version.rb +1 -1
  3. metadata +3 -1238
  4. data/ext/v8/upstream/build/scons/CHANGES.txt +0 -5183
  5. data/ext/v8/upstream/build/scons/LICENSE.txt +0 -20
  6. data/ext/v8/upstream/build/scons/MANIFEST +0 -202
  7. data/ext/v8/upstream/build/scons/PKG-INFO +0 -13
  8. data/ext/v8/upstream/build/scons/README.txt +0 -273
  9. data/ext/v8/upstream/build/scons/RELEASE.txt +0 -1040
  10. data/ext/v8/upstream/build/scons/build/lib/SCons/Action.py +0 -1256
  11. data/ext/v8/upstream/build/scons/build/lib/SCons/Builder.py +0 -868
  12. data/ext/v8/upstream/build/scons/build/lib/SCons/CacheDir.py +0 -217
  13. data/ext/v8/upstream/build/scons/build/lib/SCons/Conftest.py +0 -794
  14. data/ext/v8/upstream/build/scons/build/lib/SCons/Debug.py +0 -237
  15. data/ext/v8/upstream/build/scons/build/lib/SCons/Defaults.py +0 -485
  16. data/ext/v8/upstream/build/scons/build/lib/SCons/Environment.py +0 -2327
  17. data/ext/v8/upstream/build/scons/build/lib/SCons/Errors.py +0 -207
  18. data/ext/v8/upstream/build/scons/build/lib/SCons/Executor.py +0 -636
  19. data/ext/v8/upstream/build/scons/build/lib/SCons/Job.py +0 -435
  20. data/ext/v8/upstream/build/scons/build/lib/SCons/Memoize.py +0 -292
  21. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Alias.py +0 -153
  22. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/FS.py +0 -3220
  23. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Python.py +0 -128
  24. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/__init__.py +0 -1341
  25. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/BoolOption.py +0 -50
  26. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/EnumOption.py +0 -50
  27. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/ListOption.py +0 -50
  28. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PackageOption.py +0 -50
  29. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PathOption.py +0 -76
  30. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/__init__.py +0 -74
  31. data/ext/v8/upstream/build/scons/build/lib/SCons/PathList.py +0 -232
  32. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/__init__.py +0 -236
  33. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/aix.py +0 -70
  34. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/cygwin.py +0 -55
  35. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/darwin.py +0 -46
  36. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/hpux.py +0 -46
  37. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/irix.py +0 -44
  38. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/os2.py +0 -58
  39. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/posix.py +0 -264
  40. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/sunos.py +0 -50
  41. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/win32.py +0 -386
  42. data/ext/v8/upstream/build/scons/build/lib/SCons/SConf.py +0 -1038
  43. data/ext/v8/upstream/build/scons/build/lib/SCons/SConsign.py +0 -381
  44. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/C.py +0 -132
  45. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/D.py +0 -74
  46. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Dir.py +0 -111
  47. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Fortran.py +0 -320
  48. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/IDL.py +0 -48
  49. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/LaTeX.py +0 -378
  50. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Prog.py +0 -103
  51. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/RC.py +0 -55
  52. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/__init__.py +0 -415
  53. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Interactive.py +0 -386
  54. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Main.py +0 -1360
  55. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConsOptions.py +0 -944
  56. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConscript.py +0 -642
  57. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/__init__.py +0 -414
  58. data/ext/v8/upstream/build/scons/build/lib/SCons/Sig.py +0 -63
  59. data/ext/v8/upstream/build/scons/build/lib/SCons/Subst.py +0 -911
  60. data/ext/v8/upstream/build/scons/build/lib/SCons/Taskmaster.py +0 -1030
  61. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/386asm.py +0 -61
  62. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/BitKeeper.py +0 -65
  63. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/CVS.py +0 -73
  64. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/FortranCommon.py +0 -247
  65. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/JavaCommon.py +0 -324
  66. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/__init__.py +0 -56
  67. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/arch.py +0 -61
  68. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/common.py +0 -210
  69. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/netframework.py +0 -84
  70. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/sdk.py +0 -321
  71. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vc.py +0 -367
  72. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vs.py +0 -497
  73. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Perforce.py +0 -104
  74. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/PharLapCommon.py +0 -138
  75. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/RCS.py +0 -64
  76. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/SCCS.py +0 -64
  77. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Subversion.py +0 -71
  78. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/__init__.py +0 -675
  79. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixc++.py +0 -82
  80. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixcc.py +0 -74
  81. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixf77.py +0 -80
  82. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixlink.py +0 -76
  83. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/applelink.py +0 -71
  84. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ar.py +0 -63
  85. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/as.py +0 -78
  86. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/bcc32.py +0 -82
  87. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/c++.py +0 -99
  88. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cc.py +0 -114
  89. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cvf.py +0 -58
  90. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/default.py +0 -50
  91. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dmd.py +0 -224
  92. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvi.py +0 -64
  93. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvipdf.py +0 -125
  94. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvips.py +0 -94
  95. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f77.py +0 -62
  96. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f90.py +0 -62
  97. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f95.py +0 -63
  98. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/filesystem.py +0 -98
  99. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/fortran.py +0 -63
  100. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g++.py +0 -90
  101. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g77.py +0 -73
  102. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gas.py +0 -53
  103. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gcc.py +0 -80
  104. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gfortran.py +0 -64
  105. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gnulink.py +0 -63
  106. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gs.py +0 -81
  107. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpc++.py +0 -85
  108. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpcc.py +0 -53
  109. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hplink.py +0 -77
  110. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icc.py +0 -59
  111. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icl.py +0 -52
  112. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifl.py +0 -72
  113. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifort.py +0 -90
  114. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink.py +0 -59
  115. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink32.py +0 -60
  116. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/install.py +0 -229
  117. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/intelc.py +0 -490
  118. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ipkg.py +0 -71
  119. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/jar.py +0 -110
  120. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javac.py +0 -234
  121. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javah.py +0 -138
  122. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/latex.py +0 -79
  123. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/lex.py +0 -99
  124. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/link.py +0 -121
  125. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/linkloc.py +0 -112
  126. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/m4.py +0 -63
  127. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/masm.py +0 -77
  128. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/midl.py +0 -90
  129. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mingw.py +0 -159
  130. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslib.py +0 -64
  131. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslink.py +0 -266
  132. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mssdk.py +0 -50
  133. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvc.py +0 -269
  134. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvs.py +0 -1439
  135. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwcc.py +0 -208
  136. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwld.py +0 -107
  137. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/nasm.py +0 -72
  138. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/__init__.py +0 -314
  139. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/ipk.py +0 -185
  140. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/msi.py +0 -526
  141. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/rpm.py +0 -367
  142. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_tarbz2.py +0 -43
  143. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_targz.py +0 -43
  144. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_zip.py +0 -43
  145. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/tarbz2.py +0 -44
  146. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/targz.py +0 -44
  147. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/zip.py +0 -44
  148. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdf.py +0 -78
  149. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdflatex.py +0 -83
  150. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdftex.py +0 -108
  151. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/qt.py +0 -336
  152. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rmic.py +0 -121
  153. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpcgen.py +0 -70
  154. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpm.py +0 -132
  155. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgiar.py +0 -68
  156. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgic++.py +0 -58
  157. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgicc.py +0 -53
  158. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgilink.py +0 -63
  159. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunar.py +0 -67
  160. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunc++.py +0 -142
  161. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/suncc.py +0 -58
  162. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf77.py +0 -63
  163. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf90.py +0 -64
  164. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf95.py +0 -64
  165. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunlink.py +0 -77
  166. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/swig.py +0 -186
  167. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tar.py +0 -73
  168. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tex.py +0 -805
  169. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/textfile.py +0 -175
  170. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tlib.py +0 -53
  171. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/wix.py +0 -100
  172. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/yacc.py +0 -131
  173. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/zip.py +0 -100
  174. data/ext/v8/upstream/build/scons/build/lib/SCons/Util.py +0 -1645
  175. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/BoolVariable.py +0 -91
  176. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/EnumVariable.py +0 -107
  177. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/ListVariable.py +0 -139
  178. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PackageVariable.py +0 -109
  179. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PathVariable.py +0 -147
  180. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/__init__.py +0 -317
  181. data/ext/v8/upstream/build/scons/build/lib/SCons/Warnings.py +0 -228
  182. data/ext/v8/upstream/build/scons/build/lib/SCons/__init__.py +0 -49
  183. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/__init__.py +0 -302
  184. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_UserString.py +0 -98
  185. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_hashlib.py +0 -91
  186. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_itertools.py +0 -124
  187. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_optparse.py +0 -1725
  188. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets.py +0 -583
  189. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets15.py +0 -176
  190. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_shlex.py +0 -325
  191. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_subprocess.py +0 -1296
  192. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_textwrap.py +0 -382
  193. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/builtins.py +0 -187
  194. data/ext/v8/upstream/build/scons/build/lib/SCons/cpp.py +0 -598
  195. data/ext/v8/upstream/build/scons/build/lib/SCons/dblite.py +0 -248
  196. data/ext/v8/upstream/build/scons/build/lib/SCons/exitfuncs.py +0 -77
  197. data/ext/v8/upstream/build/scons/build/scripts/scons +0 -184
  198. data/ext/v8/upstream/build/scons/build/scripts/scons-time +0 -1529
  199. data/ext/v8/upstream/build/scons/build/scripts/scons.bat +0 -31
  200. data/ext/v8/upstream/build/scons/build/scripts/sconsign +0 -508
  201. data/ext/v8/upstream/build/scons/engine/SCons/Action.py +0 -1256
  202. data/ext/v8/upstream/build/scons/engine/SCons/Builder.py +0 -868
  203. data/ext/v8/upstream/build/scons/engine/SCons/CacheDir.py +0 -217
  204. data/ext/v8/upstream/build/scons/engine/SCons/Conftest.py +0 -794
  205. data/ext/v8/upstream/build/scons/engine/SCons/Debug.py +0 -237
  206. data/ext/v8/upstream/build/scons/engine/SCons/Defaults.py +0 -485
  207. data/ext/v8/upstream/build/scons/engine/SCons/Environment.py +0 -2327
  208. data/ext/v8/upstream/build/scons/engine/SCons/Errors.py +0 -207
  209. data/ext/v8/upstream/build/scons/engine/SCons/Executor.py +0 -636
  210. data/ext/v8/upstream/build/scons/engine/SCons/Job.py +0 -435
  211. data/ext/v8/upstream/build/scons/engine/SCons/Memoize.py +0 -292
  212. data/ext/v8/upstream/build/scons/engine/SCons/Node/Alias.py +0 -153
  213. data/ext/v8/upstream/build/scons/engine/SCons/Node/FS.py +0 -3220
  214. data/ext/v8/upstream/build/scons/engine/SCons/Node/Python.py +0 -128
  215. data/ext/v8/upstream/build/scons/engine/SCons/Node/__init__.py +0 -1341
  216. data/ext/v8/upstream/build/scons/engine/SCons/Options/BoolOption.py +0 -50
  217. data/ext/v8/upstream/build/scons/engine/SCons/Options/EnumOption.py +0 -50
  218. data/ext/v8/upstream/build/scons/engine/SCons/Options/ListOption.py +0 -50
  219. data/ext/v8/upstream/build/scons/engine/SCons/Options/PackageOption.py +0 -50
  220. data/ext/v8/upstream/build/scons/engine/SCons/Options/PathOption.py +0 -76
  221. data/ext/v8/upstream/build/scons/engine/SCons/Options/__init__.py +0 -74
  222. data/ext/v8/upstream/build/scons/engine/SCons/PathList.py +0 -232
  223. data/ext/v8/upstream/build/scons/engine/SCons/Platform/__init__.py +0 -236
  224. data/ext/v8/upstream/build/scons/engine/SCons/Platform/aix.py +0 -70
  225. data/ext/v8/upstream/build/scons/engine/SCons/Platform/cygwin.py +0 -55
  226. data/ext/v8/upstream/build/scons/engine/SCons/Platform/darwin.py +0 -46
  227. data/ext/v8/upstream/build/scons/engine/SCons/Platform/hpux.py +0 -46
  228. data/ext/v8/upstream/build/scons/engine/SCons/Platform/irix.py +0 -44
  229. data/ext/v8/upstream/build/scons/engine/SCons/Platform/os2.py +0 -58
  230. data/ext/v8/upstream/build/scons/engine/SCons/Platform/posix.py +0 -264
  231. data/ext/v8/upstream/build/scons/engine/SCons/Platform/sunos.py +0 -50
  232. data/ext/v8/upstream/build/scons/engine/SCons/Platform/win32.py +0 -386
  233. data/ext/v8/upstream/build/scons/engine/SCons/SConf.py +0 -1038
  234. data/ext/v8/upstream/build/scons/engine/SCons/SConsign.py +0 -381
  235. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/C.py +0 -132
  236. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/D.py +0 -74
  237. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Dir.py +0 -111
  238. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Fortran.py +0 -320
  239. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/IDL.py +0 -48
  240. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/LaTeX.py +0 -378
  241. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Prog.py +0 -103
  242. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/RC.py +0 -55
  243. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/__init__.py +0 -415
  244. data/ext/v8/upstream/build/scons/engine/SCons/Script/Interactive.py +0 -386
  245. data/ext/v8/upstream/build/scons/engine/SCons/Script/Main.py +0 -1360
  246. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConsOptions.py +0 -944
  247. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConscript.py +0 -642
  248. data/ext/v8/upstream/build/scons/engine/SCons/Script/__init__.py +0 -414
  249. data/ext/v8/upstream/build/scons/engine/SCons/Sig.py +0 -63
  250. data/ext/v8/upstream/build/scons/engine/SCons/Subst.py +0 -911
  251. data/ext/v8/upstream/build/scons/engine/SCons/Taskmaster.py +0 -1030
  252. data/ext/v8/upstream/build/scons/engine/SCons/Tool/386asm.py +0 -61
  253. data/ext/v8/upstream/build/scons/engine/SCons/Tool/BitKeeper.py +0 -65
  254. data/ext/v8/upstream/build/scons/engine/SCons/Tool/CVS.py +0 -73
  255. data/ext/v8/upstream/build/scons/engine/SCons/Tool/FortranCommon.py +0 -247
  256. data/ext/v8/upstream/build/scons/engine/SCons/Tool/JavaCommon.py +0 -324
  257. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/__init__.py +0 -56
  258. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/arch.py +0 -61
  259. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/common.py +0 -210
  260. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/netframework.py +0 -84
  261. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/sdk.py +0 -321
  262. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vc.py +0 -367
  263. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vs.py +0 -497
  264. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Perforce.py +0 -104
  265. data/ext/v8/upstream/build/scons/engine/SCons/Tool/PharLapCommon.py +0 -138
  266. data/ext/v8/upstream/build/scons/engine/SCons/Tool/RCS.py +0 -64
  267. data/ext/v8/upstream/build/scons/engine/SCons/Tool/SCCS.py +0 -64
  268. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Subversion.py +0 -71
  269. data/ext/v8/upstream/build/scons/engine/SCons/Tool/__init__.py +0 -675
  270. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixc++.py +0 -82
  271. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixcc.py +0 -74
  272. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixf77.py +0 -80
  273. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixlink.py +0 -76
  274. data/ext/v8/upstream/build/scons/engine/SCons/Tool/applelink.py +0 -71
  275. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ar.py +0 -63
  276. data/ext/v8/upstream/build/scons/engine/SCons/Tool/as.py +0 -78
  277. data/ext/v8/upstream/build/scons/engine/SCons/Tool/bcc32.py +0 -82
  278. data/ext/v8/upstream/build/scons/engine/SCons/Tool/c++.py +0 -99
  279. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cc.py +0 -114
  280. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cvf.py +0 -58
  281. data/ext/v8/upstream/build/scons/engine/SCons/Tool/default.py +0 -50
  282. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dmd.py +0 -224
  283. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvi.py +0 -64
  284. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvipdf.py +0 -125
  285. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvips.py +0 -94
  286. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f77.py +0 -62
  287. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f90.py +0 -62
  288. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f95.py +0 -63
  289. data/ext/v8/upstream/build/scons/engine/SCons/Tool/filesystem.py +0 -98
  290. data/ext/v8/upstream/build/scons/engine/SCons/Tool/fortran.py +0 -63
  291. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g++.py +0 -90
  292. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g77.py +0 -73
  293. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gas.py +0 -53
  294. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gcc.py +0 -80
  295. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gfortran.py +0 -64
  296. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gnulink.py +0 -63
  297. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gs.py +0 -81
  298. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpc++.py +0 -85
  299. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpcc.py +0 -53
  300. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hplink.py +0 -77
  301. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icc.py +0 -59
  302. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icl.py +0 -52
  303. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifl.py +0 -72
  304. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifort.py +0 -90
  305. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink.py +0 -59
  306. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink32.py +0 -60
  307. data/ext/v8/upstream/build/scons/engine/SCons/Tool/install.py +0 -229
  308. data/ext/v8/upstream/build/scons/engine/SCons/Tool/intelc.py +0 -490
  309. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ipkg.py +0 -71
  310. data/ext/v8/upstream/build/scons/engine/SCons/Tool/jar.py +0 -110
  311. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javac.py +0 -234
  312. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javah.py +0 -138
  313. data/ext/v8/upstream/build/scons/engine/SCons/Tool/latex.py +0 -79
  314. data/ext/v8/upstream/build/scons/engine/SCons/Tool/lex.py +0 -99
  315. data/ext/v8/upstream/build/scons/engine/SCons/Tool/link.py +0 -121
  316. data/ext/v8/upstream/build/scons/engine/SCons/Tool/linkloc.py +0 -112
  317. data/ext/v8/upstream/build/scons/engine/SCons/Tool/m4.py +0 -63
  318. data/ext/v8/upstream/build/scons/engine/SCons/Tool/masm.py +0 -77
  319. data/ext/v8/upstream/build/scons/engine/SCons/Tool/midl.py +0 -90
  320. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mingw.py +0 -159
  321. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslib.py +0 -64
  322. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslink.py +0 -266
  323. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mssdk.py +0 -50
  324. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvc.py +0 -269
  325. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvs.py +0 -1439
  326. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwcc.py +0 -208
  327. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwld.py +0 -107
  328. data/ext/v8/upstream/build/scons/engine/SCons/Tool/nasm.py +0 -72
  329. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/__init__.py +0 -314
  330. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/ipk.py +0 -185
  331. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/msi.py +0 -526
  332. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/rpm.py +0 -367
  333. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_tarbz2.py +0 -43
  334. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_targz.py +0 -43
  335. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_zip.py +0 -43
  336. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/tarbz2.py +0 -44
  337. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/targz.py +0 -44
  338. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/zip.py +0 -44
  339. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdf.py +0 -78
  340. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdflatex.py +0 -83
  341. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdftex.py +0 -108
  342. data/ext/v8/upstream/build/scons/engine/SCons/Tool/qt.py +0 -336
  343. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rmic.py +0 -121
  344. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpcgen.py +0 -70
  345. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpm.py +0 -132
  346. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgiar.py +0 -68
  347. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgic++.py +0 -58
  348. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgicc.py +0 -53
  349. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgilink.py +0 -63
  350. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunar.py +0 -67
  351. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunc++.py +0 -142
  352. data/ext/v8/upstream/build/scons/engine/SCons/Tool/suncc.py +0 -58
  353. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf77.py +0 -63
  354. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf90.py +0 -64
  355. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf95.py +0 -64
  356. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunlink.py +0 -77
  357. data/ext/v8/upstream/build/scons/engine/SCons/Tool/swig.py +0 -186
  358. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tar.py +0 -73
  359. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tex.py +0 -805
  360. data/ext/v8/upstream/build/scons/engine/SCons/Tool/textfile.py +0 -175
  361. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tlib.py +0 -53
  362. data/ext/v8/upstream/build/scons/engine/SCons/Tool/wix.py +0 -100
  363. data/ext/v8/upstream/build/scons/engine/SCons/Tool/yacc.py +0 -131
  364. data/ext/v8/upstream/build/scons/engine/SCons/Tool/zip.py +0 -100
  365. data/ext/v8/upstream/build/scons/engine/SCons/Util.py +0 -1645
  366. data/ext/v8/upstream/build/scons/engine/SCons/Variables/BoolVariable.py +0 -91
  367. data/ext/v8/upstream/build/scons/engine/SCons/Variables/EnumVariable.py +0 -107
  368. data/ext/v8/upstream/build/scons/engine/SCons/Variables/ListVariable.py +0 -139
  369. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PackageVariable.py +0 -109
  370. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PathVariable.py +0 -147
  371. data/ext/v8/upstream/build/scons/engine/SCons/Variables/__init__.py +0 -317
  372. data/ext/v8/upstream/build/scons/engine/SCons/Warnings.py +0 -228
  373. data/ext/v8/upstream/build/scons/engine/SCons/__init__.py +0 -49
  374. data/ext/v8/upstream/build/scons/engine/SCons/compat/__init__.py +0 -302
  375. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_UserString.py +0 -98
  376. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_hashlib.py +0 -91
  377. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_itertools.py +0 -124
  378. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_optparse.py +0 -1725
  379. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets.py +0 -583
  380. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets15.py +0 -176
  381. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_shlex.py +0 -325
  382. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_subprocess.py +0 -1296
  383. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_textwrap.py +0 -382
  384. data/ext/v8/upstream/build/scons/engine/SCons/compat/builtins.py +0 -187
  385. data/ext/v8/upstream/build/scons/engine/SCons/cpp.py +0 -598
  386. data/ext/v8/upstream/build/scons/engine/SCons/dblite.py +0 -248
  387. data/ext/v8/upstream/build/scons/engine/SCons/exitfuncs.py +0 -77
  388. data/ext/v8/upstream/build/scons/install/bin/scons +0 -184
  389. data/ext/v8/upstream/build/scons/install/bin/scons-1.2.0.d20100117 +0 -184
  390. data/ext/v8/upstream/build/scons/install/bin/scons-time +0 -1529
  391. data/ext/v8/upstream/build/scons/install/bin/scons-time-1.2.0.d20100117 +0 -1529
  392. data/ext/v8/upstream/build/scons/install/bin/sconsign +0 -508
  393. data/ext/v8/upstream/build/scons/install/bin/sconsign-1.2.0.d20100117 +0 -508
  394. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.py +0 -1256
  395. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.pyc +0 -0
  396. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.py +0 -868
  397. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.pyc +0 -0
  398. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.py +0 -217
  399. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.pyc +0 -0
  400. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.py +0 -794
  401. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.pyc +0 -0
  402. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.py +0 -237
  403. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.pyc +0 -0
  404. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.py +0 -485
  405. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.pyc +0 -0
  406. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.py +0 -2327
  407. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.pyc +0 -0
  408. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.py +0 -207
  409. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.pyc +0 -0
  410. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.py +0 -636
  411. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.pyc +0 -0
  412. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.py +0 -435
  413. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.pyc +0 -0
  414. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.py +0 -292
  415. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.pyc +0 -0
  416. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.py +0 -153
  417. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.pyc +0 -0
  418. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.py +0 -3220
  419. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.pyc +0 -0
  420. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.py +0 -128
  421. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.pyc +0 -0
  422. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.py +0 -1341
  423. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.pyc +0 -0
  424. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.py +0 -50
  425. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.pyc +0 -0
  426. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.py +0 -50
  427. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.pyc +0 -0
  428. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.py +0 -50
  429. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.pyc +0 -0
  430. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.py +0 -50
  431. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.pyc +0 -0
  432. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.py +0 -76
  433. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.pyc +0 -0
  434. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.py +0 -74
  435. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.pyc +0 -0
  436. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.py +0 -232
  437. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.pyc +0 -0
  438. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.py +0 -236
  439. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.pyc +0 -0
  440. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.py +0 -70
  441. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.pyc +0 -0
  442. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.py +0 -55
  443. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.pyc +0 -0
  444. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.py +0 -46
  445. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.pyc +0 -0
  446. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.py +0 -46
  447. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.pyc +0 -0
  448. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.py +0 -44
  449. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.pyc +0 -0
  450. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.py +0 -58
  451. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.pyc +0 -0
  452. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.py +0 -264
  453. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.pyc +0 -0
  454. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.py +0 -50
  455. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.pyc +0 -0
  456. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.py +0 -386
  457. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.pyc +0 -0
  458. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.py +0 -1038
  459. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.pyc +0 -0
  460. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.py +0 -381
  461. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.pyc +0 -0
  462. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.py +0 -132
  463. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.pyc +0 -0
  464. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.py +0 -74
  465. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.pyc +0 -0
  466. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.py +0 -111
  467. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.pyc +0 -0
  468. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.py +0 -320
  469. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.pyc +0 -0
  470. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.py +0 -48
  471. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.pyc +0 -0
  472. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.py +0 -378
  473. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.pyc +0 -0
  474. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.py +0 -103
  475. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.pyc +0 -0
  476. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.py +0 -55
  477. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.pyc +0 -0
  478. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.py +0 -415
  479. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.pyc +0 -0
  480. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.py +0 -386
  481. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.pyc +0 -0
  482. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.py +0 -1360
  483. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.pyc +0 -0
  484. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.py +0 -944
  485. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.pyc +0 -0
  486. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.py +0 -642
  487. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.pyc +0 -0
  488. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.py +0 -414
  489. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.pyc +0 -0
  490. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.py +0 -63
  491. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.pyc +0 -0
  492. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.py +0 -911
  493. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.pyc +0 -0
  494. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.py +0 -1030
  495. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.pyc +0 -0
  496. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.py +0 -61
  497. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.pyc +0 -0
  498. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.py +0 -65
  499. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.pyc +0 -0
  500. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.py +0 -73
  501. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.pyc +0 -0
  502. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.py +0 -247
  503. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.pyc +0 -0
  504. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.py +0 -324
  505. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.pyc +0 -0
  506. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.py +0 -56
  507. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.pyc +0 -0
  508. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.py +0 -61
  509. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.pyc +0 -0
  510. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.py +0 -210
  511. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.pyc +0 -0
  512. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.py +0 -84
  513. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.pyc +0 -0
  514. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.py +0 -321
  515. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.pyc +0 -0
  516. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.py +0 -367
  517. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.pyc +0 -0
  518. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.py +0 -497
  519. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.pyc +0 -0
  520. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.py +0 -104
  521. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.pyc +0 -0
  522. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.py +0 -138
  523. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.pyc +0 -0
  524. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.py +0 -64
  525. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.pyc +0 -0
  526. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.py +0 -64
  527. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.pyc +0 -0
  528. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.py +0 -71
  529. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.pyc +0 -0
  530. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.py +0 -675
  531. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.pyc +0 -0
  532. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.py +0 -82
  533. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.pyc +0 -0
  534. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.py +0 -74
  535. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.pyc +0 -0
  536. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.py +0 -80
  537. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.pyc +0 -0
  538. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.py +0 -76
  539. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.pyc +0 -0
  540. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.py +0 -71
  541. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.pyc +0 -0
  542. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.py +0 -63
  543. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.pyc +0 -0
  544. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.py +0 -78
  545. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.pyc +0 -0
  546. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.py +0 -82
  547. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.pyc +0 -0
  548. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.py +0 -99
  549. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.pyc +0 -0
  550. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.py +0 -114
  551. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.pyc +0 -0
  552. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.py +0 -58
  553. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.pyc +0 -0
  554. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.py +0 -50
  555. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.pyc +0 -0
  556. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.py +0 -224
  557. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.pyc +0 -0
  558. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.py +0 -64
  559. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.pyc +0 -0
  560. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.py +0 -125
  561. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.pyc +0 -0
  562. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.py +0 -94
  563. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.pyc +0 -0
  564. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.py +0 -62
  565. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.pyc +0 -0
  566. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.py +0 -62
  567. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.pyc +0 -0
  568. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.py +0 -63
  569. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.pyc +0 -0
  570. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.py +0 -98
  571. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.pyc +0 -0
  572. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.py +0 -63
  573. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.pyc +0 -0
  574. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.py +0 -90
  575. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.pyc +0 -0
  576. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.py +0 -73
  577. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.pyc +0 -0
  578. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.py +0 -53
  579. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.pyc +0 -0
  580. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.py +0 -80
  581. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.pyc +0 -0
  582. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.py +0 -64
  583. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.pyc +0 -0
  584. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.py +0 -63
  585. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.pyc +0 -0
  586. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.py +0 -81
  587. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.pyc +0 -0
  588. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.py +0 -85
  589. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.pyc +0 -0
  590. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.py +0 -53
  591. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.pyc +0 -0
  592. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.py +0 -77
  593. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.pyc +0 -0
  594. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.py +0 -59
  595. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.pyc +0 -0
  596. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.py +0 -52
  597. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.pyc +0 -0
  598. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.py +0 -72
  599. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.pyc +0 -0
  600. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.py +0 -90
  601. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.pyc +0 -0
  602. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.py +0 -59
  603. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.pyc +0 -0
  604. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.py +0 -60
  605. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.pyc +0 -0
  606. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.py +0 -229
  607. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.pyc +0 -0
  608. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.py +0 -490
  609. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.pyc +0 -0
  610. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.py +0 -71
  611. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.pyc +0 -0
  612. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.py +0 -110
  613. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.pyc +0 -0
  614. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.py +0 -234
  615. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.pyc +0 -0
  616. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.py +0 -138
  617. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.pyc +0 -0
  618. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.py +0 -79
  619. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.pyc +0 -0
  620. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.py +0 -99
  621. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.pyc +0 -0
  622. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.py +0 -121
  623. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.pyc +0 -0
  624. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.py +0 -112
  625. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.pyc +0 -0
  626. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.py +0 -63
  627. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.pyc +0 -0
  628. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.py +0 -77
  629. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.pyc +0 -0
  630. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.py +0 -90
  631. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.pyc +0 -0
  632. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.py +0 -159
  633. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.pyc +0 -0
  634. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.py +0 -64
  635. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.pyc +0 -0
  636. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.py +0 -266
  637. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.pyc +0 -0
  638. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.py +0 -50
  639. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.pyc +0 -0
  640. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.py +0 -269
  641. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.pyc +0 -0
  642. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.py +0 -1439
  643. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.pyc +0 -0
  644. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.py +0 -208
  645. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.pyc +0 -0
  646. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.py +0 -107
  647. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.pyc +0 -0
  648. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.py +0 -72
  649. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.pyc +0 -0
  650. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.py +0 -314
  651. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.pyc +0 -0
  652. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.py +0 -185
  653. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.pyc +0 -0
  654. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.py +0 -526
  655. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.pyc +0 -0
  656. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.py +0 -367
  657. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.pyc +0 -0
  658. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.py +0 -43
  659. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.pyc +0 -0
  660. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.py +0 -43
  661. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.pyc +0 -0
  662. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.py +0 -43
  663. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.pyc +0 -0
  664. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.py +0 -44
  665. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.pyc +0 -0
  666. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.py +0 -44
  667. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.pyc +0 -0
  668. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.py +0 -44
  669. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.pyc +0 -0
  670. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.py +0 -78
  671. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.pyc +0 -0
  672. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.py +0 -83
  673. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.pyc +0 -0
  674. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.py +0 -108
  675. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.pyc +0 -0
  676. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.py +0 -336
  677. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.pyc +0 -0
  678. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.py +0 -121
  679. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.pyc +0 -0
  680. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.py +0 -70
  681. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.pyc +0 -0
  682. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.py +0 -132
  683. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.pyc +0 -0
  684. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.py +0 -68
  685. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.pyc +0 -0
  686. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.py +0 -58
  687. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.pyc +0 -0
  688. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.py +0 -53
  689. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.pyc +0 -0
  690. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.py +0 -63
  691. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.pyc +0 -0
  692. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.py +0 -67
  693. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.pyc +0 -0
  694. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.py +0 -142
  695. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.pyc +0 -0
  696. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.py +0 -58
  697. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.pyc +0 -0
  698. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.py +0 -63
  699. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.pyc +0 -0
  700. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.py +0 -64
  701. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.pyc +0 -0
  702. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.py +0 -64
  703. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.pyc +0 -0
  704. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.py +0 -77
  705. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.pyc +0 -0
  706. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.py +0 -186
  707. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.pyc +0 -0
  708. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.py +0 -73
  709. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.pyc +0 -0
  710. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.py +0 -805
  711. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.pyc +0 -0
  712. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.py +0 -175
  713. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.pyc +0 -0
  714. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.py +0 -53
  715. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.pyc +0 -0
  716. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.py +0 -100
  717. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.pyc +0 -0
  718. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.py +0 -131
  719. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.pyc +0 -0
  720. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.py +0 -100
  721. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.pyc +0 -0
  722. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.py +0 -1645
  723. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.pyc +0 -0
  724. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.py +0 -91
  725. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.pyc +0 -0
  726. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.py +0 -107
  727. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.pyc +0 -0
  728. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.py +0 -139
  729. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.pyc +0 -0
  730. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.py +0 -109
  731. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.pyc +0 -0
  732. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.py +0 -147
  733. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.pyc +0 -0
  734. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.py +0 -317
  735. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.pyc +0 -0
  736. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.py +0 -228
  737. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.pyc +0 -0
  738. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.py +0 -49
  739. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.pyc +0 -0
  740. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.py +0 -302
  741. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.pyc +0 -0
  742. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.py +0 -98
  743. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.pyc +0 -0
  744. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.py +0 -91
  745. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.pyc +0 -0
  746. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.py +0 -124
  747. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.pyc +0 -0
  748. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.py +0 -1725
  749. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.pyc +0 -0
  750. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.py +0 -583
  751. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.pyc +0 -0
  752. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.py +0 -176
  753. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.pyc +0 -0
  754. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.py +0 -325
  755. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.pyc +0 -0
  756. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.py +0 -1296
  757. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.pyc +0 -0
  758. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.py +0 -382
  759. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.pyc +0 -0
  760. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.py +0 -187
  761. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.pyc +0 -0
  762. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.py +0 -598
  763. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.pyc +0 -0
  764. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.py +0 -248
  765. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.pyc +0 -0
  766. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.py +0 -77
  767. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.pyc +0 -0
  768. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/scons-1.2.0.d20100117.egg-info +0 -13
  769. data/ext/v8/upstream/build/scons/install/man/man1/scons-time.1 +0 -1017
  770. data/ext/v8/upstream/build/scons/install/man/man1/scons.1 +0 -15179
  771. data/ext/v8/upstream/build/scons/install/man/man1/sconsign.1 +0 -208
  772. data/ext/v8/upstream/build/scons/os_spawnv_fix.diff +0 -83
  773. data/ext/v8/upstream/build/scons/scons-time.1 +0 -1017
  774. data/ext/v8/upstream/build/scons/scons.1 +0 -15179
  775. data/ext/v8/upstream/build/scons/sconsign.1 +0 -208
  776. data/ext/v8/upstream/build/scons/script/scons +0 -184
  777. data/ext/v8/upstream/build/scons/script/scons-time +0 -1529
  778. data/ext/v8/upstream/build/scons/script/scons.bat +0 -31
  779. data/ext/v8/upstream/build/scons/script/sconsign +0 -508
  780. data/ext/v8/upstream/build/scons/setup.cfg +0 -6
  781. data/ext/v8/upstream/build/scons/setup.py +0 -427
  782. data/ext/v8/upstream/build/v8/.gitignore +0 -26
  783. data/ext/v8/upstream/build/v8/AUTHORS +0 -31
  784. data/ext/v8/upstream/build/v8/ChangeLog +0 -1916
  785. data/ext/v8/upstream/build/v8/LICENSE +0 -55
  786. data/ext/v8/upstream/build/v8/SConstruct +0 -1158
  787. data/ext/v8/upstream/build/v8/SConstruct.orig +0 -1154
  788. data/ext/v8/upstream/build/v8/include/v8-debug.h +0 -381
  789. data/ext/v8/upstream/build/v8/include/v8-profiler.h +0 -353
  790. data/ext/v8/upstream/build/v8/src/SConscript +0 -330
  791. data/ext/v8/upstream/build/v8/src/accessors.cc +0 -661
  792. data/ext/v8/upstream/build/v8/src/accessors.h +0 -114
  793. data/ext/v8/upstream/build/v8/src/allocation.cc +0 -198
  794. data/ext/v8/upstream/build/v8/src/allocation.h +0 -169
  795. data/ext/v8/upstream/build/v8/src/api.cc +0 -4795
  796. data/ext/v8/upstream/build/v8/src/api.h +0 -485
  797. data/ext/v8/upstream/build/v8/src/apinatives.js +0 -110
  798. data/ext/v8/upstream/build/v8/src/apiutils.h +0 -69
  799. data/ext/v8/upstream/build/v8/src/arguments.h +0 -96
  800. data/ext/v8/upstream/build/v8/src/arm/assembler-arm-inl.h +0 -305
  801. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.cc +0 -2580
  802. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.h +0 -1275
  803. data/ext/v8/upstream/build/v8/src/arm/builtins-arm.cc +0 -1320
  804. data/ext/v8/upstream/build/v8/src/arm/codegen-arm-inl.h +0 -48
  805. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.cc +0 -11398
  806. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.h +0 -1102
  807. data/ext/v8/upstream/build/v8/src/arm/constants-arm.cc +0 -154
  808. data/ext/v8/upstream/build/v8/src/arm/constants-arm.h +0 -388
  809. data/ext/v8/upstream/build/v8/src/arm/cpu-arm.cc +0 -142
  810. data/ext/v8/upstream/build/v8/src/arm/debug-arm.cc +0 -309
  811. data/ext/v8/upstream/build/v8/src/arm/disasm-arm.cc +0 -1459
  812. data/ext/v8/upstream/build/v8/src/arm/fast-codegen-arm.cc +0 -241
  813. data/ext/v8/upstream/build/v8/src/arm/frames-arm.cc +0 -123
  814. data/ext/v8/upstream/build/v8/src/arm/frames-arm.h +0 -162
  815. data/ext/v8/upstream/build/v8/src/arm/full-codegen-arm.cc +0 -3178
  816. data/ext/v8/upstream/build/v8/src/arm/ic-arm.cc +0 -2258
  817. data/ext/v8/upstream/build/v8/src/arm/jump-target-arm.cc +0 -164
  818. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.cc +0 -1892
  819. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.h +0 -727
  820. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.cc +0 -1261
  821. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.h +0 -266
  822. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm-inl.h +0 -100
  823. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.cc +0 -63
  824. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.h +0 -44
  825. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.cc +0 -2822
  826. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.h +0 -361
  827. data/ext/v8/upstream/build/v8/src/arm/stub-cache-arm.cc +0 -2387
  828. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm-inl.h +0 -59
  829. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.cc +0 -834
  830. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.h +0 -519
  831. data/ext/v8/upstream/build/v8/src/array.js +0 -1127
  832. data/ext/v8/upstream/build/v8/src/assembler.cc +0 -801
  833. data/ext/v8/upstream/build/v8/src/assembler.h +0 -573
  834. data/ext/v8/upstream/build/v8/src/ast-inl.h +0 -81
  835. data/ext/v8/upstream/build/v8/src/ast.cc +0 -1152
  836. data/ext/v8/upstream/build/v8/src/ast.h +0 -2106
  837. data/ext/v8/upstream/build/v8/src/bootstrapper.cc +0 -1819
  838. data/ext/v8/upstream/build/v8/src/bootstrapper.h +0 -118
  839. data/ext/v8/upstream/build/v8/src/builtins.cc +0 -1529
  840. data/ext/v8/upstream/build/v8/src/builtins.h +0 -263
  841. data/ext/v8/upstream/build/v8/src/bytecodes-irregexp.h +0 -104
  842. data/ext/v8/upstream/build/v8/src/cached-powers.h +0 -119
  843. data/ext/v8/upstream/build/v8/src/char-predicates-inl.h +0 -86
  844. data/ext/v8/upstream/build/v8/src/char-predicates.h +0 -65
  845. data/ext/v8/upstream/build/v8/src/checks.cc +0 -100
  846. data/ext/v8/upstream/build/v8/src/checks.h +0 -310
  847. data/ext/v8/upstream/build/v8/src/circular-queue-inl.h +0 -53
  848. data/ext/v8/upstream/build/v8/src/circular-queue.cc +0 -121
  849. data/ext/v8/upstream/build/v8/src/circular-queue.h +0 -103
  850. data/ext/v8/upstream/build/v8/src/code-stubs.cc +0 -177
  851. data/ext/v8/upstream/build/v8/src/code-stubs.h +0 -177
  852. data/ext/v8/upstream/build/v8/src/code.h +0 -68
  853. data/ext/v8/upstream/build/v8/src/codegen-inl.h +0 -60
  854. data/ext/v8/upstream/build/v8/src/codegen.cc +0 -516
  855. data/ext/v8/upstream/build/v8/src/codegen.h +0 -897
  856. data/ext/v8/upstream/build/v8/src/compilation-cache.cc +0 -562
  857. data/ext/v8/upstream/build/v8/src/compilation-cache.h +0 -102
  858. data/ext/v8/upstream/build/v8/src/compiler.cc +0 -654
  859. data/ext/v8/upstream/build/v8/src/compiler.h +0 -299
  860. data/ext/v8/upstream/build/v8/src/contexts.cc +0 -256
  861. data/ext/v8/upstream/build/v8/src/contexts.h +0 -342
  862. data/ext/v8/upstream/build/v8/src/conversions-inl.h +0 -110
  863. data/ext/v8/upstream/build/v8/src/conversions.cc +0 -1119
  864. data/ext/v8/upstream/build/v8/src/conversions.h +0 -123
  865. data/ext/v8/upstream/build/v8/src/counters.cc +0 -78
  866. data/ext/v8/upstream/build/v8/src/counters.h +0 -239
  867. data/ext/v8/upstream/build/v8/src/cpu-profiler-inl.h +0 -100
  868. data/ext/v8/upstream/build/v8/src/cpu-profiler.cc +0 -538
  869. data/ext/v8/upstream/build/v8/src/cpu-profiler.h +0 -285
  870. data/ext/v8/upstream/build/v8/src/cpu.h +0 -65
  871. data/ext/v8/upstream/build/v8/src/d8-debug.cc +0 -356
  872. data/ext/v8/upstream/build/v8/src/d8-debug.h +0 -155
  873. data/ext/v8/upstream/build/v8/src/d8-posix.cc +0 -693
  874. data/ext/v8/upstream/build/v8/src/d8-readline.cc +0 -128
  875. data/ext/v8/upstream/build/v8/src/d8-windows.cc +0 -42
  876. data/ext/v8/upstream/build/v8/src/d8.cc +0 -783
  877. data/ext/v8/upstream/build/v8/src/d8.h +0 -227
  878. data/ext/v8/upstream/build/v8/src/d8.js +0 -1683
  879. data/ext/v8/upstream/build/v8/src/data-flow.cc +0 -758
  880. data/ext/v8/upstream/build/v8/src/data-flow.h +0 -278
  881. data/ext/v8/upstream/build/v8/src/date.js +0 -1059
  882. data/ext/v8/upstream/build/v8/src/dateparser-inl.h +0 -123
  883. data/ext/v8/upstream/build/v8/src/dateparser.cc +0 -178
  884. data/ext/v8/upstream/build/v8/src/dateparser.h +0 -244
  885. data/ext/v8/upstream/build/v8/src/debug-agent.cc +0 -427
  886. data/ext/v8/upstream/build/v8/src/debug-agent.h +0 -129
  887. data/ext/v8/upstream/build/v8/src/debug-debugger.js +0 -2227
  888. data/ext/v8/upstream/build/v8/src/debug.cc +0 -3005
  889. data/ext/v8/upstream/build/v8/src/debug.h +0 -993
  890. data/ext/v8/upstream/build/v8/src/disasm.h +0 -77
  891. data/ext/v8/upstream/build/v8/src/disassembler.cc +0 -312
  892. data/ext/v8/upstream/build/v8/src/disassembler.h +0 -56
  893. data/ext/v8/upstream/build/v8/src/diy-fp.cc +0 -58
  894. data/ext/v8/upstream/build/v8/src/diy-fp.h +0 -117
  895. data/ext/v8/upstream/build/v8/src/double.h +0 -169
  896. data/ext/v8/upstream/build/v8/src/dtoa-config.c +0 -92
  897. data/ext/v8/upstream/build/v8/src/dtoa.cc +0 -77
  898. data/ext/v8/upstream/build/v8/src/dtoa.h +0 -81
  899. data/ext/v8/upstream/build/v8/src/execution.cc +0 -809
  900. data/ext/v8/upstream/build/v8/src/execution.h +0 -336
  901. data/ext/v8/upstream/build/v8/src/factory.cc +0 -1003
  902. data/ext/v8/upstream/build/v8/src/factory.h +0 -410
  903. data/ext/v8/upstream/build/v8/src/fast-codegen.cc +0 -746
  904. data/ext/v8/upstream/build/v8/src/fast-codegen.h +0 -161
  905. data/ext/v8/upstream/build/v8/src/fast-dtoa.cc +0 -505
  906. data/ext/v8/upstream/build/v8/src/fast-dtoa.h +0 -58
  907. data/ext/v8/upstream/build/v8/src/fixed-dtoa.cc +0 -405
  908. data/ext/v8/upstream/build/v8/src/fixed-dtoa.h +0 -55
  909. data/ext/v8/upstream/build/v8/src/flag-definitions.h +0 -455
  910. data/ext/v8/upstream/build/v8/src/flags.cc +0 -551
  911. data/ext/v8/upstream/build/v8/src/flags.h +0 -81
  912. data/ext/v8/upstream/build/v8/src/flow-graph.cc +0 -763
  913. data/ext/v8/upstream/build/v8/src/flow-graph.h +0 -180
  914. data/ext/v8/upstream/build/v8/src/frame-element.cc +0 -42
  915. data/ext/v8/upstream/build/v8/src/frame-element.h +0 -273
  916. data/ext/v8/upstream/build/v8/src/frames-inl.h +0 -217
  917. data/ext/v8/upstream/build/v8/src/frames.cc +0 -826
  918. data/ext/v8/upstream/build/v8/src/frames.h +0 -682
  919. data/ext/v8/upstream/build/v8/src/full-codegen.cc +0 -1443
  920. data/ext/v8/upstream/build/v8/src/full-codegen.h +0 -548
  921. data/ext/v8/upstream/build/v8/src/func-name-inferrer.cc +0 -76
  922. data/ext/v8/upstream/build/v8/src/func-name-inferrer.h +0 -135
  923. data/ext/v8/upstream/build/v8/src/global-handles.cc +0 -520
  924. data/ext/v8/upstream/build/v8/src/global-handles.h +0 -180
  925. data/ext/v8/upstream/build/v8/src/globals.h +0 -669
  926. data/ext/v8/upstream/build/v8/src/handles-inl.h +0 -76
  927. data/ext/v8/upstream/build/v8/src/handles.cc +0 -825
  928. data/ext/v8/upstream/build/v8/src/handles.h +0 -393
  929. data/ext/v8/upstream/build/v8/src/hashmap.cc +0 -226
  930. data/ext/v8/upstream/build/v8/src/hashmap.h +0 -120
  931. data/ext/v8/upstream/build/v8/src/heap-inl.h +0 -493
  932. data/ext/v8/upstream/build/v8/src/heap-profiler.cc +0 -779
  933. data/ext/v8/upstream/build/v8/src/heap-profiler.h +0 -323
  934. data/ext/v8/upstream/build/v8/src/heap.cc +0 -4994
  935. data/ext/v8/upstream/build/v8/src/heap.h +0 -1984
  936. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32-inl.h +0 -360
  937. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.cc +0 -2600
  938. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.h +0 -969
  939. data/ext/v8/upstream/build/v8/src/ia32/builtins-ia32.cc +0 -1261
  940. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32-inl.h +0 -46
  941. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.cc +0 -13968
  942. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.h +0 -1097
  943. data/ext/v8/upstream/build/v8/src/ia32/cpu-ia32.cc +0 -83
  944. data/ext/v8/upstream/build/v8/src/ia32/debug-ia32.cc +0 -309
  945. data/ext/v8/upstream/build/v8/src/ia32/disasm-ia32.cc +0 -1471
  946. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.cc +0 -954
  947. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.h +0 -155
  948. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.cc +0 -115
  949. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.h +0 -135
  950. data/ext/v8/upstream/build/v8/src/ia32/full-codegen-ia32.cc +0 -3281
  951. data/ext/v8/upstream/build/v8/src/ia32/ic-ia32.cc +0 -1966
  952. data/ext/v8/upstream/build/v8/src/ia32/jump-target-ia32.cc +0 -437
  953. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.cc +0 -1610
  954. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.h +0 -610
  955. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.cc +0 -1247
  956. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.h +0 -214
  957. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32-inl.h +0 -82
  958. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.cc +0 -157
  959. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.h +0 -43
  960. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.cc +0 -30
  961. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.h +0 -62
  962. data/ext/v8/upstream/build/v8/src/ia32/stub-cache-ia32.cc +0 -2750
  963. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.cc +0 -1334
  964. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.h +0 -627
  965. data/ext/v8/upstream/build/v8/src/ic-inl.h +0 -120
  966. data/ext/v8/upstream/build/v8/src/ic.cc +0 -1827
  967. data/ext/v8/upstream/build/v8/src/ic.h +0 -515
  968. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.cc +0 -646
  969. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.h +0 -48
  970. data/ext/v8/upstream/build/v8/src/json.js +0 -268
  971. data/ext/v8/upstream/build/v8/src/jsregexp.cc +0 -5283
  972. data/ext/v8/upstream/build/v8/src/jsregexp.h +0 -1463
  973. data/ext/v8/upstream/build/v8/src/jump-target-heavy-inl.h +0 -51
  974. data/ext/v8/upstream/build/v8/src/jump-target-heavy.cc +0 -429
  975. data/ext/v8/upstream/build/v8/src/jump-target-heavy.h +0 -244
  976. data/ext/v8/upstream/build/v8/src/jump-target-inl.h +0 -48
  977. data/ext/v8/upstream/build/v8/src/jump-target-light-inl.h +0 -56
  978. data/ext/v8/upstream/build/v8/src/jump-target-light.cc +0 -110
  979. data/ext/v8/upstream/build/v8/src/jump-target-light.h +0 -192
  980. data/ext/v8/upstream/build/v8/src/jump-target.cc +0 -91
  981. data/ext/v8/upstream/build/v8/src/jump-target.h +0 -90
  982. data/ext/v8/upstream/build/v8/src/list-inl.h +0 -166
  983. data/ext/v8/upstream/build/v8/src/list.h +0 -159
  984. data/ext/v8/upstream/build/v8/src/liveedit-debugger.js +0 -1057
  985. data/ext/v8/upstream/build/v8/src/liveedit.cc +0 -1480
  986. data/ext/v8/upstream/build/v8/src/liveedit.h +0 -170
  987. data/ext/v8/upstream/build/v8/src/log-inl.h +0 -59
  988. data/ext/v8/upstream/build/v8/src/log-utils.cc +0 -497
  989. data/ext/v8/upstream/build/v8/src/log-utils.h +0 -289
  990. data/ext/v8/upstream/build/v8/src/log.cc +0 -1561
  991. data/ext/v8/upstream/build/v8/src/log.h +0 -384
  992. data/ext/v8/upstream/build/v8/src/macro-assembler.h +0 -86
  993. data/ext/v8/upstream/build/v8/src/macros.py +0 -177
  994. data/ext/v8/upstream/build/v8/src/mark-compact.cc +0 -2330
  995. data/ext/v8/upstream/build/v8/src/mark-compact.h +0 -451
  996. data/ext/v8/upstream/build/v8/src/math.js +0 -264
  997. data/ext/v8/upstream/build/v8/src/memory.h +0 -74
  998. data/ext/v8/upstream/build/v8/src/messages.cc +0 -183
  999. data/ext/v8/upstream/build/v8/src/messages.h +0 -113
  1000. data/ext/v8/upstream/build/v8/src/messages.js +0 -982
  1001. data/ext/v8/upstream/build/v8/src/mips/assembler-mips-inl.h +0 -215
  1002. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.cc +0 -1219
  1003. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.h +0 -668
  1004. data/ext/v8/upstream/build/v8/src/mips/builtins-mips.cc +0 -205
  1005. data/ext/v8/upstream/build/v8/src/mips/codegen-mips-inl.h +0 -70
  1006. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.cc +0 -1437
  1007. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.h +0 -434
  1008. data/ext/v8/upstream/build/v8/src/mips/constants-mips.cc +0 -328
  1009. data/ext/v8/upstream/build/v8/src/mips/constants-mips.h +0 -525
  1010. data/ext/v8/upstream/build/v8/src/mips/cpu-mips.cc +0 -73
  1011. data/ext/v8/upstream/build/v8/src/mips/debug-mips.cc +0 -131
  1012. data/ext/v8/upstream/build/v8/src/mips/disasm-mips.cc +0 -787
  1013. data/ext/v8/upstream/build/v8/src/mips/fast-codegen-mips.cc +0 -77
  1014. data/ext/v8/upstream/build/v8/src/mips/frames-mips.cc +0 -102
  1015. data/ext/v8/upstream/build/v8/src/mips/frames-mips.h +0 -164
  1016. data/ext/v8/upstream/build/v8/src/mips/full-codegen-mips.cc +0 -277
  1017. data/ext/v8/upstream/build/v8/src/mips/ic-mips.cc +0 -220
  1018. data/ext/v8/upstream/build/v8/src/mips/jump-target-mips.cc +0 -175
  1019. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.cc +0 -1326
  1020. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.h +0 -461
  1021. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips-inl.h +0 -137
  1022. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.cc +0 -63
  1023. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.h +0 -46
  1024. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.cc +0 -1651
  1025. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.h +0 -311
  1026. data/ext/v8/upstream/build/v8/src/mips/stub-cache-mips.cc +0 -403
  1027. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.cc +0 -319
  1028. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.h +0 -548
  1029. data/ext/v8/upstream/build/v8/src/mirror-debugger.js +0 -2380
  1030. data/ext/v8/upstream/build/v8/src/mksnapshot.cc +0 -256
  1031. data/ext/v8/upstream/build/v8/src/natives.h +0 -63
  1032. data/ext/v8/upstream/build/v8/src/objects-debug.cc +0 -1366
  1033. data/ext/v8/upstream/build/v8/src/objects-inl.h +0 -3333
  1034. data/ext/v8/upstream/build/v8/src/objects.cc +0 -8820
  1035. data/ext/v8/upstream/build/v8/src/objects.h +0 -5373
  1036. data/ext/v8/upstream/build/v8/src/oprofile-agent.cc +0 -108
  1037. data/ext/v8/upstream/build/v8/src/oprofile-agent.h +0 -77
  1038. data/ext/v8/upstream/build/v8/src/parser.cc +0 -5207
  1039. data/ext/v8/upstream/build/v8/src/parser.h +0 -197
  1040. data/ext/v8/upstream/build/v8/src/platform-freebsd.cc +0 -667
  1041. data/ext/v8/upstream/build/v8/src/platform-linux.cc +0 -862
  1042. data/ext/v8/upstream/build/v8/src/platform-macos.cc +0 -665
  1043. data/ext/v8/upstream/build/v8/src/platform-nullos.cc +0 -454
  1044. data/ext/v8/upstream/build/v8/src/platform-openbsd.cc +0 -622
  1045. data/ext/v8/upstream/build/v8/src/platform-posix.cc +0 -362
  1046. data/ext/v8/upstream/build/v8/src/platform-solaris.cc +0 -653
  1047. data/ext/v8/upstream/build/v8/src/platform-win32.cc +0 -1911
  1048. data/ext/v8/upstream/build/v8/src/platform.h +0 -577
  1049. data/ext/v8/upstream/build/v8/src/powers-ten.h +0 -2461
  1050. data/ext/v8/upstream/build/v8/src/prettyprinter.cc +0 -1531
  1051. data/ext/v8/upstream/build/v8/src/prettyprinter.h +0 -221
  1052. data/ext/v8/upstream/build/v8/src/profile-generator-inl.h +0 -148
  1053. data/ext/v8/upstream/build/v8/src/profile-generator.cc +0 -1830
  1054. data/ext/v8/upstream/build/v8/src/profile-generator.h +0 -853
  1055. data/ext/v8/upstream/build/v8/src/property.cc +0 -96
  1056. data/ext/v8/upstream/build/v8/src/property.h +0 -315
  1057. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp-inl.h +0 -78
  1058. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.cc +0 -464
  1059. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.h +0 -141
  1060. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.cc +0 -356
  1061. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.h +0 -103
  1062. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.cc +0 -261
  1063. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.h +0 -228
  1064. data/ext/v8/upstream/build/v8/src/regexp-stack.cc +0 -103
  1065. data/ext/v8/upstream/build/v8/src/regexp-stack.h +0 -123
  1066. data/ext/v8/upstream/build/v8/src/regexp.js +0 -549
  1067. data/ext/v8/upstream/build/v8/src/register-allocator-inl.h +0 -141
  1068. data/ext/v8/upstream/build/v8/src/register-allocator.cc +0 -104
  1069. data/ext/v8/upstream/build/v8/src/register-allocator.h +0 -320
  1070. data/ext/v8/upstream/build/v8/src/rewriter.cc +0 -1038
  1071. data/ext/v8/upstream/build/v8/src/rewriter.h +0 -54
  1072. data/ext/v8/upstream/build/v8/src/runtime.cc +0 -10599
  1073. data/ext/v8/upstream/build/v8/src/runtime.h +0 -459
  1074. data/ext/v8/upstream/build/v8/src/runtime.js +0 -629
  1075. data/ext/v8/upstream/build/v8/src/scanner.cc +0 -1346
  1076. data/ext/v8/upstream/build/v8/src/scanner.h +0 -503
  1077. data/ext/v8/upstream/build/v8/src/scopeinfo.cc +0 -637
  1078. data/ext/v8/upstream/build/v8/src/scopeinfo.h +0 -233
  1079. data/ext/v8/upstream/build/v8/src/scopes.cc +0 -962
  1080. data/ext/v8/upstream/build/v8/src/scopes.h +0 -400
  1081. data/ext/v8/upstream/build/v8/src/serialize.cc +0 -1461
  1082. data/ext/v8/upstream/build/v8/src/serialize.h +0 -581
  1083. data/ext/v8/upstream/build/v8/src/shell.h +0 -55
  1084. data/ext/v8/upstream/build/v8/src/simulator.h +0 -43
  1085. data/ext/v8/upstream/build/v8/src/smart-pointer.h +0 -109
  1086. data/ext/v8/upstream/build/v8/src/snapshot-common.cc +0 -82
  1087. data/ext/v8/upstream/build/v8/src/snapshot-empty.cc +0 -50
  1088. data/ext/v8/upstream/build/v8/src/snapshot.h +0 -71
  1089. data/ext/v8/upstream/build/v8/src/spaces-inl.h +0 -483
  1090. data/ext/v8/upstream/build/v8/src/spaces.cc +0 -2901
  1091. data/ext/v8/upstream/build/v8/src/spaces.h +0 -2197
  1092. data/ext/v8/upstream/build/v8/src/splay-tree-inl.h +0 -310
  1093. data/ext/v8/upstream/build/v8/src/splay-tree.h +0 -203
  1094. data/ext/v8/upstream/build/v8/src/string-stream.cc +0 -584
  1095. data/ext/v8/upstream/build/v8/src/string-stream.h +0 -189
  1096. data/ext/v8/upstream/build/v8/src/string.js +0 -1006
  1097. data/ext/v8/upstream/build/v8/src/stub-cache.cc +0 -1379
  1098. data/ext/v8/upstream/build/v8/src/stub-cache.h +0 -756
  1099. data/ext/v8/upstream/build/v8/src/third_party/dtoa/COPYING +0 -15
  1100. data/ext/v8/upstream/build/v8/src/third_party/dtoa/dtoa.c +0 -3334
  1101. data/ext/v8/upstream/build/v8/src/third_party/valgrind/valgrind.h +0 -3925
  1102. data/ext/v8/upstream/build/v8/src/token.cc +0 -56
  1103. data/ext/v8/upstream/build/v8/src/token.h +0 -270
  1104. data/ext/v8/upstream/build/v8/src/top.cc +0 -1067
  1105. data/ext/v8/upstream/build/v8/src/top.h +0 -463
  1106. data/ext/v8/upstream/build/v8/src/type-info.cc +0 -53
  1107. data/ext/v8/upstream/build/v8/src/type-info.h +0 -244
  1108. data/ext/v8/upstream/build/v8/src/unbound-queue-inl.h +0 -95
  1109. data/ext/v8/upstream/build/v8/src/unbound-queue.h +0 -67
  1110. data/ext/v8/upstream/build/v8/src/unicode-inl.h +0 -238
  1111. data/ext/v8/upstream/build/v8/src/unicode.cc +0 -749
  1112. data/ext/v8/upstream/build/v8/src/unicode.h +0 -279
  1113. data/ext/v8/upstream/build/v8/src/uri.js +0 -415
  1114. data/ext/v8/upstream/build/v8/src/utils.cc +0 -285
  1115. data/ext/v8/upstream/build/v8/src/utils.h +0 -745
  1116. data/ext/v8/upstream/build/v8/src/v8-counters.cc +0 -55
  1117. data/ext/v8/upstream/build/v8/src/v8-counters.h +0 -250
  1118. data/ext/v8/upstream/build/v8/src/v8.cc +0 -228
  1119. data/ext/v8/upstream/build/v8/src/v8.h +0 -121
  1120. data/ext/v8/upstream/build/v8/src/v8dll-main.cc +0 -39
  1121. data/ext/v8/upstream/build/v8/src/v8natives.js +0 -1188
  1122. data/ext/v8/upstream/build/v8/src/v8threads.cc +0 -461
  1123. data/ext/v8/upstream/build/v8/src/v8threads.h +0 -159
  1124. data/ext/v8/upstream/build/v8/src/variables.cc +0 -119
  1125. data/ext/v8/upstream/build/v8/src/variables.h +0 -205
  1126. data/ext/v8/upstream/build/v8/src/version.cc +0 -88
  1127. data/ext/v8/upstream/build/v8/src/version.h +0 -64
  1128. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy-inl.h +0 -192
  1129. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy.cc +0 -312
  1130. data/ext/v8/upstream/build/v8/src/virtual-frame-inl.h +0 -39
  1131. data/ext/v8/upstream/build/v8/src/virtual-frame-light-inl.h +0 -170
  1132. data/ext/v8/upstream/build/v8/src/virtual-frame-light.cc +0 -52
  1133. data/ext/v8/upstream/build/v8/src/virtual-frame.cc +0 -49
  1134. data/ext/v8/upstream/build/v8/src/virtual-frame.h +0 -46
  1135. data/ext/v8/upstream/build/v8/src/vm-state-inl.h +0 -137
  1136. data/ext/v8/upstream/build/v8/src/vm-state.cc +0 -39
  1137. data/ext/v8/upstream/build/v8/src/vm-state.h +0 -77
  1138. data/ext/v8/upstream/build/v8/src/x64/assembler-x64-inl.h +0 -400
  1139. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.cc +0 -2963
  1140. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.h +0 -1438
  1141. data/ext/v8/upstream/build/v8/src/x64/builtins-x64.cc +0 -1296
  1142. data/ext/v8/upstream/build/v8/src/x64/codegen-x64-inl.h +0 -46
  1143. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.cc +0 -12491
  1144. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.h +0 -1090
  1145. data/ext/v8/upstream/build/v8/src/x64/cpu-x64.cc +0 -83
  1146. data/ext/v8/upstream/build/v8/src/x64/debug-x64.cc +0 -267
  1147. data/ext/v8/upstream/build/v8/src/x64/disasm-x64.cc +0 -1696
  1148. data/ext/v8/upstream/build/v8/src/x64/fast-codegen-x64.cc +0 -250
  1149. data/ext/v8/upstream/build/v8/src/x64/frames-x64.cc +0 -113
  1150. data/ext/v8/upstream/build/v8/src/x64/frames-x64.h +0 -125
  1151. data/ext/v8/upstream/build/v8/src/x64/full-codegen-x64.cc +0 -3270
  1152. data/ext/v8/upstream/build/v8/src/x64/ic-x64.cc +0 -1907
  1153. data/ext/v8/upstream/build/v8/src/x64/jump-target-x64.cc +0 -437
  1154. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.cc +0 -2793
  1155. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.h +0 -916
  1156. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.cc +0 -1374
  1157. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.h +0 -277
  1158. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64-inl.h +0 -87
  1159. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.cc +0 -91
  1160. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.h +0 -43
  1161. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.cc +0 -27
  1162. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.h +0 -63
  1163. data/ext/v8/upstream/build/v8/src/x64/stub-cache-x64.cc +0 -2560
  1164. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.cc +0 -1264
  1165. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.h +0 -590
  1166. data/ext/v8/upstream/build/v8/src/zone-inl.h +0 -82
  1167. data/ext/v8/upstream/build/v8/src/zone.cc +0 -194
  1168. data/ext/v8/upstream/build/v8/src/zone.h +0 -221
  1169. data/ext/v8/upstream/build/v8/tools/codemap.js +0 -270
  1170. data/ext/v8/upstream/build/v8/tools/consarray.js +0 -93
  1171. data/ext/v8/upstream/build/v8/tools/csvparser.js +0 -83
  1172. data/ext/v8/upstream/build/v8/tools/gc-nvp-trace-processor.py +0 -317
  1173. data/ext/v8/upstream/build/v8/tools/generate-ten-powers.scm +0 -286
  1174. data/ext/v8/upstream/build/v8/tools/gyp/v8.gyp +0 -749
  1175. data/ext/v8/upstream/build/v8/tools/js2c.py +0 -380
  1176. data/ext/v8/upstream/build/v8/tools/jsmin.py +0 -280
  1177. data/ext/v8/upstream/build/v8/tools/linux-tick-processor +0 -33
  1178. data/ext/v8/upstream/build/v8/tools/linux-tick-processor.py +0 -78
  1179. data/ext/v8/upstream/build/v8/tools/logreader.js +0 -338
  1180. data/ext/v8/upstream/build/v8/tools/mac-nm +0 -18
  1181. data/ext/v8/upstream/build/v8/tools/mac-tick-processor +0 -6
  1182. data/ext/v8/upstream/build/v8/tools/oprofile/annotate +0 -7
  1183. data/ext/v8/upstream/build/v8/tools/oprofile/common +0 -19
  1184. data/ext/v8/upstream/build/v8/tools/oprofile/dump +0 -7
  1185. data/ext/v8/upstream/build/v8/tools/oprofile/report +0 -7
  1186. data/ext/v8/upstream/build/v8/tools/oprofile/reset +0 -7
  1187. data/ext/v8/upstream/build/v8/tools/oprofile/run +0 -14
  1188. data/ext/v8/upstream/build/v8/tools/oprofile/shutdown +0 -7
  1189. data/ext/v8/upstream/build/v8/tools/oprofile/start +0 -7
  1190. data/ext/v8/upstream/build/v8/tools/presubmit.py +0 -299
  1191. data/ext/v8/upstream/build/v8/tools/process-heap-prof.py +0 -120
  1192. data/ext/v8/upstream/build/v8/tools/profile.js +0 -691
  1193. data/ext/v8/upstream/build/v8/tools/profile_view.js +0 -224
  1194. data/ext/v8/upstream/build/v8/tools/run-valgrind.py +0 -77
  1195. data/ext/v8/upstream/build/v8/tools/splaytree.js +0 -322
  1196. data/ext/v8/upstream/build/v8/tools/splaytree.py +0 -226
  1197. data/ext/v8/upstream/build/v8/tools/stats-viewer.py +0 -468
  1198. data/ext/v8/upstream/build/v8/tools/tickprocessor-driver.js +0 -59
  1199. data/ext/v8/upstream/build/v8/tools/tickprocessor.js +0 -862
  1200. data/ext/v8/upstream/build/v8/tools/tickprocessor.py +0 -571
  1201. data/ext/v8/upstream/build/v8/tools/utils.py +0 -88
  1202. data/ext/v8/upstream/build/v8/tools/visual_studio/README.txt +0 -71
  1203. data/ext/v8/upstream/build/v8/tools/visual_studio/arm.vsprops +0 -14
  1204. data/ext/v8/upstream/build/v8/tools/visual_studio/common.vsprops +0 -34
  1205. data/ext/v8/upstream/build/v8/tools/visual_studio/d8.vcproj +0 -193
  1206. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_arm.vcproj +0 -193
  1207. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_x64.vcproj +0 -209
  1208. data/ext/v8/upstream/build/v8/tools/visual_studio/d8js2c.cmd +0 -6
  1209. data/ext/v8/upstream/build/v8/tools/visual_studio/debug.vsprops +0 -17
  1210. data/ext/v8/upstream/build/v8/tools/visual_studio/ia32.vsprops +0 -17
  1211. data/ext/v8/upstream/build/v8/tools/visual_studio/js2c.cmd +0 -6
  1212. data/ext/v8/upstream/build/v8/tools/visual_studio/release.vsprops +0 -24
  1213. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.sln +0 -101
  1214. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.vcproj +0 -227
  1215. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.sln +0 -74
  1216. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.vcproj +0 -227
  1217. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base.vcproj +0 -1143
  1218. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_arm.vcproj +0 -1115
  1219. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_x64.vcproj +0 -1096
  1220. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest.vcproj +0 -265
  1221. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_arm.vcproj +0 -249
  1222. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_x64.vcproj +0 -257
  1223. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot.vcproj +0 -145
  1224. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -145
  1225. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample.vcproj +0 -145
  1226. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_arm.vcproj +0 -145
  1227. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_x64.vcproj +0 -161
  1228. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample.vcproj +0 -145
  1229. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -145
  1230. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -161
  1231. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot.vcproj +0 -142
  1232. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc.vcproj +0 -92
  1233. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -92
  1234. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_x64.vcproj +0 -142
  1235. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.sln +0 -101
  1236. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.vcproj +0 -227
  1237. data/ext/v8/upstream/build/v8/tools/visual_studio/x64.vsprops +0 -17
  1238. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.bat +0 -29
  1239. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.py +0 -137
@@ -1,3005 +0,0 @@
1
- // Copyright 2006-2008 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
- #include "v8.h"
29
-
30
- #include "api.h"
31
- #include "arguments.h"
32
- #include "bootstrapper.h"
33
- #include "code-stubs.h"
34
- #include "codegen.h"
35
- #include "compilation-cache.h"
36
- #include "compiler.h"
37
- #include "debug.h"
38
- #include "execution.h"
39
- #include "global-handles.h"
40
- #include "ic.h"
41
- #include "ic-inl.h"
42
- #include "messages.h"
43
- #include "natives.h"
44
- #include "stub-cache.h"
45
- #include "log.h"
46
-
47
- #include "../include/v8-debug.h"
48
-
49
- namespace v8 {
50
- namespace internal {
51
-
52
- #ifdef ENABLE_DEBUGGER_SUPPORT
53
- static void PrintLn(v8::Local<v8::Value> value) {
54
- v8::Local<v8::String> s = value->ToString();
55
- ScopedVector<char> data(s->Length() + 1);
56
- if (data.start() == NULL) {
57
- V8::FatalProcessOutOfMemory("PrintLn");
58
- return;
59
- }
60
- s->WriteAscii(data.start());
61
- PrintF("%s\n", data.start());
62
- }
63
-
64
-
65
- static Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind) {
66
- CALL_HEAP_FUNCTION(StubCache::ComputeCallDebugBreak(argc, kind), Code);
67
- }
68
-
69
-
70
- static Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind) {
71
- CALL_HEAP_FUNCTION(
72
- StubCache::ComputeCallDebugPrepareStepIn(argc, kind), Code);
73
- }
74
-
75
-
76
- static v8::Handle<v8::Context> GetDebugEventContext() {
77
- Handle<Context> context = Debug::debugger_entry()->GetContext();
78
- // Top::context() may have been NULL when "script collected" event occured.
79
- if (*context == NULL) {
80
- return v8::Local<v8::Context>();
81
- }
82
- Handle<Context> global_context(context->global_context());
83
- return v8::Utils::ToLocal(global_context);
84
- }
85
-
86
-
87
- BreakLocationIterator::BreakLocationIterator(Handle<DebugInfo> debug_info,
88
- BreakLocatorType type) {
89
- debug_info_ = debug_info;
90
- type_ = type;
91
- reloc_iterator_ = NULL;
92
- reloc_iterator_original_ = NULL;
93
- Reset(); // Initialize the rest of the member variables.
94
- }
95
-
96
-
97
- BreakLocationIterator::~BreakLocationIterator() {
98
- ASSERT(reloc_iterator_ != NULL);
99
- ASSERT(reloc_iterator_original_ != NULL);
100
- delete reloc_iterator_;
101
- delete reloc_iterator_original_;
102
- }
103
-
104
-
105
- void BreakLocationIterator::Next() {
106
- AssertNoAllocation nogc;
107
- ASSERT(!RinfoDone());
108
-
109
- // Iterate through reloc info for code and original code stopping at each
110
- // breakable code target.
111
- bool first = break_point_ == -1;
112
- while (!RinfoDone()) {
113
- if (!first) RinfoNext();
114
- first = false;
115
- if (RinfoDone()) return;
116
-
117
- // Whenever a statement position or (plain) position is passed update the
118
- // current value of these.
119
- if (RelocInfo::IsPosition(rmode())) {
120
- if (RelocInfo::IsStatementPosition(rmode())) {
121
- statement_position_ = static_cast<int>(
122
- rinfo()->data() - debug_info_->shared()->start_position());
123
- }
124
- // Always update the position as we don't want that to be before the
125
- // statement position.
126
- position_ = static_cast<int>(
127
- rinfo()->data() - debug_info_->shared()->start_position());
128
- ASSERT(position_ >= 0);
129
- ASSERT(statement_position_ >= 0);
130
- }
131
-
132
- if (IsDebugBreakSlot()) {
133
- // There is always a possible break point at a debug break slot.
134
- break_point_++;
135
- return;
136
- } else if (RelocInfo::IsCodeTarget(rmode())) {
137
- // Check for breakable code target. Look in the original code as setting
138
- // break points can cause the code targets in the running (debugged) code
139
- // to be of a different kind than in the original code.
140
- Address target = original_rinfo()->target_address();
141
- Code* code = Code::GetCodeFromTargetAddress(target);
142
- if ((code->is_inline_cache_stub() &&
143
- code->kind() != Code::BINARY_OP_IC) ||
144
- RelocInfo::IsConstructCall(rmode())) {
145
- break_point_++;
146
- return;
147
- }
148
- if (code->kind() == Code::STUB) {
149
- if (IsDebuggerStatement()) {
150
- break_point_++;
151
- return;
152
- }
153
- if (type_ == ALL_BREAK_LOCATIONS) {
154
- if (Debug::IsBreakStub(code)) {
155
- break_point_++;
156
- return;
157
- }
158
- } else {
159
- ASSERT(type_ == SOURCE_BREAK_LOCATIONS);
160
- if (Debug::IsSourceBreakStub(code)) {
161
- break_point_++;
162
- return;
163
- }
164
- }
165
- }
166
- }
167
-
168
- // Check for break at return.
169
- if (RelocInfo::IsJSReturn(rmode())) {
170
- // Set the positions to the end of the function.
171
- if (debug_info_->shared()->HasSourceCode()) {
172
- position_ = debug_info_->shared()->end_position() -
173
- debug_info_->shared()->start_position();
174
- } else {
175
- position_ = 0;
176
- }
177
- statement_position_ = position_;
178
- break_point_++;
179
- return;
180
- }
181
- }
182
- }
183
-
184
-
185
- void BreakLocationIterator::Next(int count) {
186
- while (count > 0) {
187
- Next();
188
- count--;
189
- }
190
- }
191
-
192
-
193
- // Find the break point closest to the supplied address.
194
- void BreakLocationIterator::FindBreakLocationFromAddress(Address pc) {
195
- // Run through all break points to locate the one closest to the address.
196
- int closest_break_point = 0;
197
- int distance = kMaxInt;
198
- while (!Done()) {
199
- // Check if this break point is closer that what was previously found.
200
- if (this->pc() < pc && pc - this->pc() < distance) {
201
- closest_break_point = break_point();
202
- distance = static_cast<int>(pc - this->pc());
203
- // Check whether we can't get any closer.
204
- if (distance == 0) break;
205
- }
206
- Next();
207
- }
208
-
209
- // Move to the break point found.
210
- Reset();
211
- Next(closest_break_point);
212
- }
213
-
214
-
215
- // Find the break point closest to the supplied source position.
216
- void BreakLocationIterator::FindBreakLocationFromPosition(int position) {
217
- // Run through all break points to locate the one closest to the source
218
- // position.
219
- int closest_break_point = 0;
220
- int distance = kMaxInt;
221
- while (!Done()) {
222
- // Check if this break point is closer that what was previously found.
223
- if (position <= statement_position() &&
224
- statement_position() - position < distance) {
225
- closest_break_point = break_point();
226
- distance = statement_position() - position;
227
- // Check whether we can't get any closer.
228
- if (distance == 0) break;
229
- }
230
- Next();
231
- }
232
-
233
- // Move to the break point found.
234
- Reset();
235
- Next(closest_break_point);
236
- }
237
-
238
-
239
- void BreakLocationIterator::Reset() {
240
- // Create relocation iterators for the two code objects.
241
- if (reloc_iterator_ != NULL) delete reloc_iterator_;
242
- if (reloc_iterator_original_ != NULL) delete reloc_iterator_original_;
243
- reloc_iterator_ = new RelocIterator(debug_info_->code());
244
- reloc_iterator_original_ = new RelocIterator(debug_info_->original_code());
245
-
246
- // Position at the first break point.
247
- break_point_ = -1;
248
- position_ = 1;
249
- statement_position_ = 1;
250
- Next();
251
- }
252
-
253
-
254
- bool BreakLocationIterator::Done() const {
255
- return RinfoDone();
256
- }
257
-
258
-
259
- void BreakLocationIterator::SetBreakPoint(Handle<Object> break_point_object) {
260
- // If there is not already a real break point here patch code with debug
261
- // break.
262
- if (!HasBreakPoint()) {
263
- SetDebugBreak();
264
- }
265
- ASSERT(IsDebugBreak() || IsDebuggerStatement());
266
- // Set the break point information.
267
- DebugInfo::SetBreakPoint(debug_info_, code_position(),
268
- position(), statement_position(),
269
- break_point_object);
270
- }
271
-
272
-
273
- void BreakLocationIterator::ClearBreakPoint(Handle<Object> break_point_object) {
274
- // Clear the break point information.
275
- DebugInfo::ClearBreakPoint(debug_info_, code_position(), break_point_object);
276
- // If there are no more break points here remove the debug break.
277
- if (!HasBreakPoint()) {
278
- ClearDebugBreak();
279
- ASSERT(!IsDebugBreak());
280
- }
281
- }
282
-
283
-
284
- void BreakLocationIterator::SetOneShot() {
285
- // Debugger statement always calls debugger. No need to modify it.
286
- if (IsDebuggerStatement()) {
287
- return;
288
- }
289
-
290
- // If there is a real break point here no more to do.
291
- if (HasBreakPoint()) {
292
- ASSERT(IsDebugBreak());
293
- return;
294
- }
295
-
296
- // Patch code with debug break.
297
- SetDebugBreak();
298
- }
299
-
300
-
301
- void BreakLocationIterator::ClearOneShot() {
302
- // Debugger statement always calls debugger. No need to modify it.
303
- if (IsDebuggerStatement()) {
304
- return;
305
- }
306
-
307
- // If there is a real break point here no more to do.
308
- if (HasBreakPoint()) {
309
- ASSERT(IsDebugBreak());
310
- return;
311
- }
312
-
313
- // Patch code removing debug break.
314
- ClearDebugBreak();
315
- ASSERT(!IsDebugBreak());
316
- }
317
-
318
-
319
- void BreakLocationIterator::SetDebugBreak() {
320
- // Debugger statement always calls debugger. No need to modify it.
321
- if (IsDebuggerStatement()) {
322
- return;
323
- }
324
-
325
- // If there is already a break point here just return. This might happen if
326
- // the same code is flooded with break points twice. Flooding the same
327
- // function twice might happen when stepping in a function with an exception
328
- // handler as the handler and the function is the same.
329
- if (IsDebugBreak()) {
330
- return;
331
- }
332
-
333
- if (RelocInfo::IsJSReturn(rmode())) {
334
- // Patch the frame exit code with a break point.
335
- SetDebugBreakAtReturn();
336
- } else if (IsDebugBreakSlot()) {
337
- // Patch the code in the break slot.
338
- SetDebugBreakAtSlot();
339
- } else {
340
- // Patch the IC call.
341
- SetDebugBreakAtIC();
342
- }
343
- ASSERT(IsDebugBreak());
344
- }
345
-
346
-
347
- void BreakLocationIterator::ClearDebugBreak() {
348
- // Debugger statement always calls debugger. No need to modify it.
349
- if (IsDebuggerStatement()) {
350
- return;
351
- }
352
-
353
- if (RelocInfo::IsJSReturn(rmode())) {
354
- // Restore the frame exit code.
355
- ClearDebugBreakAtReturn();
356
- } else if (IsDebugBreakSlot()) {
357
- // Restore the code in the break slot.
358
- ClearDebugBreakAtSlot();
359
- } else {
360
- // Patch the IC call.
361
- ClearDebugBreakAtIC();
362
- }
363
- ASSERT(!IsDebugBreak());
364
- }
365
-
366
-
367
- void BreakLocationIterator::PrepareStepIn() {
368
- HandleScope scope;
369
-
370
- // Step in can only be prepared if currently positioned on an IC call,
371
- // construct call or CallFunction stub call.
372
- Address target = rinfo()->target_address();
373
- Handle<Code> code(Code::GetCodeFromTargetAddress(target));
374
- if (code->is_call_stub() || code->is_keyed_call_stub()) {
375
- // Step in through IC call is handled by the runtime system. Therefore make
376
- // sure that the any current IC is cleared and the runtime system is
377
- // called. If the executing code has a debug break at the location change
378
- // the call in the original code as it is the code there that will be
379
- // executed in place of the debug break call.
380
- Handle<Code> stub = ComputeCallDebugPrepareStepIn(code->arguments_count(),
381
- code->kind());
382
- if (IsDebugBreak()) {
383
- original_rinfo()->set_target_address(stub->entry());
384
- } else {
385
- rinfo()->set_target_address(stub->entry());
386
- }
387
- } else {
388
- #ifdef DEBUG
389
- // All the following stuff is needed only for assertion checks so the code
390
- // is wrapped in ifdef.
391
- Handle<Code> maybe_call_function_stub = code;
392
- if (IsDebugBreak()) {
393
- Address original_target = original_rinfo()->target_address();
394
- maybe_call_function_stub =
395
- Handle<Code>(Code::GetCodeFromTargetAddress(original_target));
396
- }
397
- bool is_call_function_stub =
398
- (maybe_call_function_stub->kind() == Code::STUB &&
399
- maybe_call_function_stub->major_key() == CodeStub::CallFunction);
400
-
401
- // Step in through construct call requires no changes to the running code.
402
- // Step in through getters/setters should already be prepared as well
403
- // because caller of this function (Debug::PrepareStep) is expected to
404
- // flood the top frame's function with one shot breakpoints.
405
- // Step in through CallFunction stub should also be prepared by caller of
406
- // this function (Debug::PrepareStep) which should flood target function
407
- // with breakpoints.
408
- ASSERT(RelocInfo::IsConstructCall(rmode()) || code->is_inline_cache_stub()
409
- || is_call_function_stub);
410
- #endif
411
- }
412
- }
413
-
414
-
415
- // Check whether the break point is at a position which will exit the function.
416
- bool BreakLocationIterator::IsExit() const {
417
- return (RelocInfo::IsJSReturn(rmode()));
418
- }
419
-
420
-
421
- bool BreakLocationIterator::HasBreakPoint() {
422
- return debug_info_->HasBreakPoint(code_position());
423
- }
424
-
425
-
426
- // Check whether there is a debug break at the current position.
427
- bool BreakLocationIterator::IsDebugBreak() {
428
- if (RelocInfo::IsJSReturn(rmode())) {
429
- return IsDebugBreakAtReturn();
430
- } else if (IsDebugBreakSlot()) {
431
- return IsDebugBreakAtSlot();
432
- } else {
433
- return Debug::IsDebugBreak(rinfo()->target_address());
434
- }
435
- }
436
-
437
-
438
- void BreakLocationIterator::SetDebugBreakAtIC() {
439
- // Patch the original code with the current address as the current address
440
- // might have changed by the inline caching since the code was copied.
441
- original_rinfo()->set_target_address(rinfo()->target_address());
442
-
443
- RelocInfo::Mode mode = rmode();
444
- if (RelocInfo::IsCodeTarget(mode)) {
445
- Address target = rinfo()->target_address();
446
- Handle<Code> code(Code::GetCodeFromTargetAddress(target));
447
-
448
- // Patch the code to invoke the builtin debug break function matching the
449
- // calling convention used by the call site.
450
- Handle<Code> dbgbrk_code(Debug::FindDebugBreak(code, mode));
451
- rinfo()->set_target_address(dbgbrk_code->entry());
452
-
453
- // For stubs that refer back to an inlined version clear the cached map for
454
- // the inlined case to always go through the IC. As long as the break point
455
- // is set the patching performed by the runtime system will take place in
456
- // the code copy and will therefore have no effect on the running code
457
- // keeping it from using the inlined code.
458
- if (code->is_keyed_load_stub()) {
459
- KeyedLoadIC::ClearInlinedVersion(pc());
460
- } else if (code->is_keyed_store_stub()) {
461
- KeyedStoreIC::ClearInlinedVersion(pc());
462
- } else if (code->is_load_stub()) {
463
- LoadIC::ClearInlinedVersion(pc());
464
- }
465
- }
466
- }
467
-
468
-
469
- void BreakLocationIterator::ClearDebugBreakAtIC() {
470
- // Patch the code to the original invoke.
471
- rinfo()->set_target_address(original_rinfo()->target_address());
472
-
473
- RelocInfo::Mode mode = rmode();
474
- if (RelocInfo::IsCodeTarget(mode)) {
475
- AssertNoAllocation nogc;
476
- Address target = original_rinfo()->target_address();
477
- Code* code = Code::GetCodeFromTargetAddress(target);
478
-
479
- // Restore the inlined version of keyed stores to get back to the
480
- // fast case. We need to patch back the keyed store because no
481
- // patching happens when running normally. For keyed loads, the
482
- // map check will get patched back when running normally after ICs
483
- // have been cleared at GC.
484
- if (code->is_keyed_store_stub()) KeyedStoreIC::RestoreInlinedVersion(pc());
485
- }
486
- }
487
-
488
-
489
- bool BreakLocationIterator::IsDebuggerStatement() {
490
- return RelocInfo::DEBUG_BREAK == rmode();
491
- }
492
-
493
-
494
- bool BreakLocationIterator::IsDebugBreakSlot() {
495
- return RelocInfo::DEBUG_BREAK_SLOT == rmode();
496
- }
497
-
498
-
499
- Object* BreakLocationIterator::BreakPointObjects() {
500
- return debug_info_->GetBreakPointObjects(code_position());
501
- }
502
-
503
-
504
- // Clear out all the debug break code. This is ONLY supposed to be used when
505
- // shutting down the debugger as it will leave the break point information in
506
- // DebugInfo even though the code is patched back to the non break point state.
507
- void BreakLocationIterator::ClearAllDebugBreak() {
508
- while (!Done()) {
509
- ClearDebugBreak();
510
- Next();
511
- }
512
- }
513
-
514
-
515
- bool BreakLocationIterator::RinfoDone() const {
516
- ASSERT(reloc_iterator_->done() == reloc_iterator_original_->done());
517
- return reloc_iterator_->done();
518
- }
519
-
520
-
521
- void BreakLocationIterator::RinfoNext() {
522
- reloc_iterator_->next();
523
- reloc_iterator_original_->next();
524
- #ifdef DEBUG
525
- ASSERT(reloc_iterator_->done() == reloc_iterator_original_->done());
526
- if (!reloc_iterator_->done()) {
527
- ASSERT(rmode() == original_rmode());
528
- }
529
- #endif
530
- }
531
-
532
-
533
- bool Debug::has_break_points_ = false;
534
- ScriptCache* Debug::script_cache_ = NULL;
535
- DebugInfoListNode* Debug::debug_info_list_ = NULL;
536
-
537
-
538
- // Threading support.
539
- void Debug::ThreadInit() {
540
- thread_local_.break_count_ = 0;
541
- thread_local_.break_id_ = 0;
542
- thread_local_.break_frame_id_ = StackFrame::NO_ID;
543
- thread_local_.last_step_action_ = StepNone;
544
- thread_local_.last_statement_position_ = RelocInfo::kNoPosition;
545
- thread_local_.step_count_ = 0;
546
- thread_local_.last_fp_ = 0;
547
- thread_local_.step_into_fp_ = 0;
548
- thread_local_.step_out_fp_ = 0;
549
- thread_local_.after_break_target_ = 0;
550
- thread_local_.debugger_entry_ = NULL;
551
- thread_local_.pending_interrupts_ = 0;
552
- }
553
-
554
-
555
- JSCallerSavedBuffer Debug::registers_;
556
- Debug::ThreadLocal Debug::thread_local_;
557
-
558
-
559
- char* Debug::ArchiveDebug(char* storage) {
560
- char* to = storage;
561
- memcpy(to, reinterpret_cast<char*>(&thread_local_), sizeof(ThreadLocal));
562
- to += sizeof(ThreadLocal);
563
- memcpy(to, reinterpret_cast<char*>(&registers_), sizeof(registers_));
564
- ThreadInit();
565
- ASSERT(to <= storage + ArchiveSpacePerThread());
566
- return storage + ArchiveSpacePerThread();
567
- }
568
-
569
-
570
- char* Debug::RestoreDebug(char* storage) {
571
- char* from = storage;
572
- memcpy(reinterpret_cast<char*>(&thread_local_), from, sizeof(ThreadLocal));
573
- from += sizeof(ThreadLocal);
574
- memcpy(reinterpret_cast<char*>(&registers_), from, sizeof(registers_));
575
- ASSERT(from <= storage + ArchiveSpacePerThread());
576
- return storage + ArchiveSpacePerThread();
577
- }
578
-
579
-
580
- int Debug::ArchiveSpacePerThread() {
581
- return sizeof(ThreadLocal) + sizeof(registers_);
582
- }
583
-
584
-
585
- // Default break enabled.
586
- bool Debug::disable_break_ = false;
587
-
588
- // Default call debugger on uncaught exception.
589
- bool Debug::break_on_exception_ = false;
590
- bool Debug::break_on_uncaught_exception_ = true;
591
-
592
- Handle<Context> Debug::debug_context_ = Handle<Context>();
593
- Code* Debug::debug_break_return_ = NULL;
594
- Code* Debug::debug_break_slot_ = NULL;
595
-
596
-
597
- void ScriptCache::Add(Handle<Script> script) {
598
- // Create an entry in the hash map for the script.
599
- int id = Smi::cast(script->id())->value();
600
- HashMap::Entry* entry =
601
- HashMap::Lookup(reinterpret_cast<void*>(id), Hash(id), true);
602
- if (entry->value != NULL) {
603
- ASSERT(*script == *reinterpret_cast<Script**>(entry->value));
604
- return;
605
- }
606
-
607
- // Globalize the script object, make it weak and use the location of the
608
- // global handle as the value in the hash map.
609
- Handle<Script> script_ =
610
- Handle<Script>::cast((GlobalHandles::Create(*script)));
611
- GlobalHandles::MakeWeak(reinterpret_cast<Object**>(script_.location()),
612
- this, ScriptCache::HandleWeakScript);
613
- entry->value = script_.location();
614
- }
615
-
616
-
617
- Handle<FixedArray> ScriptCache::GetScripts() {
618
- Handle<FixedArray> instances = Factory::NewFixedArray(occupancy());
619
- int count = 0;
620
- for (HashMap::Entry* entry = Start(); entry != NULL; entry = Next(entry)) {
621
- ASSERT(entry->value != NULL);
622
- if (entry->value != NULL) {
623
- instances->set(count, *reinterpret_cast<Script**>(entry->value));
624
- count++;
625
- }
626
- }
627
- return instances;
628
- }
629
-
630
-
631
- void ScriptCache::ProcessCollectedScripts() {
632
- for (int i = 0; i < collected_scripts_.length(); i++) {
633
- Debugger::OnScriptCollected(collected_scripts_[i]);
634
- }
635
- collected_scripts_.Clear();
636
- }
637
-
638
-
639
- void ScriptCache::Clear() {
640
- // Iterate the script cache to get rid of all the weak handles.
641
- for (HashMap::Entry* entry = Start(); entry != NULL; entry = Next(entry)) {
642
- ASSERT(entry != NULL);
643
- Object** location = reinterpret_cast<Object**>(entry->value);
644
- ASSERT((*location)->IsScript());
645
- GlobalHandles::ClearWeakness(location);
646
- GlobalHandles::Destroy(location);
647
- }
648
- // Clear the content of the hash map.
649
- HashMap::Clear();
650
- }
651
-
652
-
653
- void ScriptCache::HandleWeakScript(v8::Persistent<v8::Value> obj, void* data) {
654
- ScriptCache* script_cache = reinterpret_cast<ScriptCache*>(data);
655
- // Find the location of the global handle.
656
- Script** location =
657
- reinterpret_cast<Script**>(Utils::OpenHandle(*obj).location());
658
- ASSERT((*location)->IsScript());
659
-
660
- // Remove the entry from the cache.
661
- int id = Smi::cast((*location)->id())->value();
662
- script_cache->Remove(reinterpret_cast<void*>(id), Hash(id));
663
- script_cache->collected_scripts_.Add(id);
664
-
665
- // Clear the weak handle.
666
- obj.Dispose();
667
- obj.Clear();
668
- }
669
-
670
-
671
- void Debug::Setup(bool create_heap_objects) {
672
- ThreadInit();
673
- if (create_heap_objects) {
674
- // Get code to handle debug break on return.
675
- debug_break_return_ =
676
- Builtins::builtin(Builtins::Return_DebugBreak);
677
- ASSERT(debug_break_return_->IsCode());
678
- // Get code to handle debug break in debug break slots.
679
- debug_break_slot_ =
680
- Builtins::builtin(Builtins::Slot_DebugBreak);
681
- ASSERT(debug_break_slot_->IsCode());
682
- }
683
- }
684
-
685
-
686
- void Debug::HandleWeakDebugInfo(v8::Persistent<v8::Value> obj, void* data) {
687
- DebugInfoListNode* node = reinterpret_cast<DebugInfoListNode*>(data);
688
- // We need to clear all breakpoints associated with the function to restore
689
- // original code and avoid patching the code twice later because
690
- // the function will live in the heap until next gc, and can be found by
691
- // Runtime::FindSharedFunctionInfoInScript.
692
- BreakLocationIterator it(node->debug_info(), ALL_BREAK_LOCATIONS);
693
- it.ClearAllDebugBreak();
694
- RemoveDebugInfo(node->debug_info());
695
- #ifdef DEBUG
696
- node = Debug::debug_info_list_;
697
- while (node != NULL) {
698
- ASSERT(node != reinterpret_cast<DebugInfoListNode*>(data));
699
- node = node->next();
700
- }
701
- #endif
702
- }
703
-
704
-
705
- DebugInfoListNode::DebugInfoListNode(DebugInfo* debug_info): next_(NULL) {
706
- // Globalize the request debug info object and make it weak.
707
- debug_info_ = Handle<DebugInfo>::cast((GlobalHandles::Create(debug_info)));
708
- GlobalHandles::MakeWeak(reinterpret_cast<Object**>(debug_info_.location()),
709
- this, Debug::HandleWeakDebugInfo);
710
- }
711
-
712
-
713
- DebugInfoListNode::~DebugInfoListNode() {
714
- GlobalHandles::Destroy(reinterpret_cast<Object**>(debug_info_.location()));
715
- }
716
-
717
-
718
- bool Debug::CompileDebuggerScript(int index) {
719
- HandleScope scope;
720
-
721
- // Bail out if the index is invalid.
722
- if (index == -1) {
723
- return false;
724
- }
725
-
726
- // Find source and name for the requested script.
727
- Handle<String> source_code = Bootstrapper::NativesSourceLookup(index);
728
- Vector<const char> name = Natives::GetScriptName(index);
729
- Handle<String> script_name = Factory::NewStringFromAscii(name);
730
-
731
- // Compile the script.
732
- bool allow_natives_syntax = FLAG_allow_natives_syntax;
733
- FLAG_allow_natives_syntax = true;
734
- Handle<SharedFunctionInfo> function_info;
735
- function_info = Compiler::Compile(source_code,
736
- script_name,
737
- 0, 0, NULL, NULL,
738
- Handle<String>::null(),
739
- NATIVES_CODE);
740
- FLAG_allow_natives_syntax = allow_natives_syntax;
741
-
742
- // Silently ignore stack overflows during compilation.
743
- if (function_info.is_null()) {
744
- ASSERT(Top::has_pending_exception());
745
- Top::clear_pending_exception();
746
- return false;
747
- }
748
-
749
- // Execute the shared function in the debugger context.
750
- Handle<Context> context = Top::global_context();
751
- bool caught_exception = false;
752
- Handle<JSFunction> function =
753
- Factory::NewFunctionFromSharedFunctionInfo(function_info, context);
754
- Handle<Object> result =
755
- Execution::TryCall(function, Handle<Object>(context->global()),
756
- 0, NULL, &caught_exception);
757
-
758
- // Check for caught exceptions.
759
- if (caught_exception) {
760
- Handle<Object> message = MessageHandler::MakeMessageObject(
761
- "error_loading_debugger", NULL, Vector<Handle<Object> >::empty(),
762
- Handle<String>(), Handle<JSArray>());
763
- MessageHandler::ReportMessage(NULL, message);
764
- return false;
765
- }
766
-
767
- // Mark this script as native and return successfully.
768
- Handle<Script> script(Script::cast(function->shared()->script()));
769
- script->set_type(Smi::FromInt(Script::TYPE_NATIVE));
770
- return true;
771
- }
772
-
773
-
774
- bool Debug::Load() {
775
- // Return if debugger is already loaded.
776
- if (IsLoaded()) return true;
777
-
778
- // Bail out if we're already in the process of compiling the native
779
- // JavaScript source code for the debugger.
780
- if (Debugger::compiling_natives() || Debugger::is_loading_debugger())
781
- return false;
782
- Debugger::set_loading_debugger(true);
783
-
784
- // Disable breakpoints and interrupts while compiling and running the
785
- // debugger scripts including the context creation code.
786
- DisableBreak disable(true);
787
- PostponeInterruptsScope postpone;
788
-
789
- // Create the debugger context.
790
- HandleScope scope;
791
- Handle<Context> context =
792
- Bootstrapper::CreateEnvironment(Handle<Object>::null(),
793
- v8::Handle<ObjectTemplate>(),
794
- NULL);
795
-
796
- // Use the debugger context.
797
- SaveContext save;
798
- Top::set_context(*context);
799
-
800
- // Expose the builtins object in the debugger context.
801
- Handle<String> key = Factory::LookupAsciiSymbol("builtins");
802
- Handle<GlobalObject> global = Handle<GlobalObject>(context->global());
803
- SetProperty(global, key, Handle<Object>(global->builtins()), NONE);
804
-
805
- // Compile the JavaScript for the debugger in the debugger context.
806
- Debugger::set_compiling_natives(true);
807
- bool caught_exception =
808
- !CompileDebuggerScript(Natives::GetIndex("mirror")) ||
809
- !CompileDebuggerScript(Natives::GetIndex("debug"));
810
-
811
- if (FLAG_enable_liveedit) {
812
- caught_exception = caught_exception ||
813
- !CompileDebuggerScript(Natives::GetIndex("liveedit"));
814
- }
815
-
816
- Debugger::set_compiling_natives(false);
817
-
818
- // Make sure we mark the debugger as not loading before we might
819
- // return.
820
- Debugger::set_loading_debugger(false);
821
-
822
- // Check for caught exceptions.
823
- if (caught_exception) return false;
824
-
825
- // Debugger loaded.
826
- debug_context_ = Handle<Context>::cast(GlobalHandles::Create(*context));
827
-
828
- return true;
829
- }
830
-
831
-
832
- void Debug::Unload() {
833
- // Return debugger is not loaded.
834
- if (!IsLoaded()) {
835
- return;
836
- }
837
-
838
- // Clear the script cache.
839
- DestroyScriptCache();
840
-
841
- // Clear debugger context global handle.
842
- GlobalHandles::Destroy(reinterpret_cast<Object**>(debug_context_.location()));
843
- debug_context_ = Handle<Context>();
844
- }
845
-
846
-
847
- // Set the flag indicating that preemption happened during debugging.
848
- void Debug::PreemptionWhileInDebugger() {
849
- ASSERT(InDebugger());
850
- Debug::set_interrupts_pending(PREEMPT);
851
- }
852
-
853
-
854
- void Debug::Iterate(ObjectVisitor* v) {
855
- v->VisitPointer(BitCast<Object**, Code**>(&(debug_break_return_)));
856
- v->VisitPointer(BitCast<Object**, Code**>(&(debug_break_slot_)));
857
- }
858
-
859
-
860
- Object* Debug::Break(Arguments args) {
861
- HandleScope scope;
862
- ASSERT(args.length() == 0);
863
-
864
- thread_local_.frame_drop_mode_ = FRAMES_UNTOUCHED;
865
-
866
- // Get the top-most JavaScript frame.
867
- JavaScriptFrameIterator it;
868
- JavaScriptFrame* frame = it.frame();
869
-
870
- // Just continue if breaks are disabled or debugger cannot be loaded.
871
- if (disable_break() || !Load()) {
872
- SetAfterBreakTarget(frame);
873
- return Heap::undefined_value();
874
- }
875
-
876
- // Enter the debugger.
877
- EnterDebugger debugger;
878
- if (debugger.FailedToEnter()) {
879
- return Heap::undefined_value();
880
- }
881
-
882
- // Postpone interrupt during breakpoint processing.
883
- PostponeInterruptsScope postpone;
884
-
885
- // Get the debug info (create it if it does not exist).
886
- Handle<SharedFunctionInfo> shared =
887
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
888
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
889
-
890
- // Find the break point where execution has stopped.
891
- BreakLocationIterator break_location_iterator(debug_info,
892
- ALL_BREAK_LOCATIONS);
893
- break_location_iterator.FindBreakLocationFromAddress(frame->pc());
894
-
895
- // Check whether step next reached a new statement.
896
- if (!StepNextContinue(&break_location_iterator, frame)) {
897
- // Decrease steps left if performing multiple steps.
898
- if (thread_local_.step_count_ > 0) {
899
- thread_local_.step_count_--;
900
- }
901
- }
902
-
903
- // If there is one or more real break points check whether any of these are
904
- // triggered.
905
- Handle<Object> break_points_hit(Heap::undefined_value());
906
- if (break_location_iterator.HasBreakPoint()) {
907
- Handle<Object> break_point_objects =
908
- Handle<Object>(break_location_iterator.BreakPointObjects());
909
- break_points_hit = CheckBreakPoints(break_point_objects);
910
- }
911
-
912
- // If step out is active skip everything until the frame where we need to step
913
- // out to is reached, unless real breakpoint is hit.
914
- if (Debug::StepOutActive() && frame->fp() != Debug::step_out_fp() &&
915
- break_points_hit->IsUndefined() ) {
916
- // Step count should always be 0 for StepOut.
917
- ASSERT(thread_local_.step_count_ == 0);
918
- } else if (!break_points_hit->IsUndefined() ||
919
- (thread_local_.last_step_action_ != StepNone &&
920
- thread_local_.step_count_ == 0)) {
921
- // Notify debugger if a real break point is triggered or if performing
922
- // single stepping with no more steps to perform. Otherwise do another step.
923
-
924
- // Clear all current stepping setup.
925
- ClearStepping();
926
-
927
- // Notify the debug event listeners.
928
- Debugger::OnDebugBreak(break_points_hit, false);
929
- } else if (thread_local_.last_step_action_ != StepNone) {
930
- // Hold on to last step action as it is cleared by the call to
931
- // ClearStepping.
932
- StepAction step_action = thread_local_.last_step_action_;
933
- int step_count = thread_local_.step_count_;
934
-
935
- // Clear all current stepping setup.
936
- ClearStepping();
937
-
938
- // Set up for the remaining steps.
939
- PrepareStep(step_action, step_count);
940
- }
941
-
942
- if (thread_local_.frame_drop_mode_ == FRAMES_UNTOUCHED) {
943
- SetAfterBreakTarget(frame);
944
- } else if (thread_local_.frame_drop_mode_ == FRAME_DROPPED_IN_IC_CALL) {
945
- // We must have been calling IC stub. Do not go there anymore.
946
- Code* plain_return = Builtins::builtin(Builtins::PlainReturn_LiveEdit);
947
- thread_local_.after_break_target_ = plain_return->entry();
948
- } else if (thread_local_.frame_drop_mode_ ==
949
- FRAME_DROPPED_IN_DEBUG_SLOT_CALL) {
950
- // Debug break slot stub does not return normally, instead it manually
951
- // cleans the stack and jumps. We should patch the jump address.
952
- Code* plain_return = Builtins::builtin(Builtins::FrameDropper_LiveEdit);
953
- thread_local_.after_break_target_ = plain_return->entry();
954
- } else if (thread_local_.frame_drop_mode_ == FRAME_DROPPED_IN_DIRECT_CALL) {
955
- // Nothing to do, after_break_target is not used here.
956
- } else {
957
- UNREACHABLE();
958
- }
959
-
960
- return Heap::undefined_value();
961
- }
962
-
963
-
964
- // Check the break point objects for whether one or more are actually
965
- // triggered. This function returns a JSArray with the break point objects
966
- // which is triggered.
967
- Handle<Object> Debug::CheckBreakPoints(Handle<Object> break_point_objects) {
968
- int break_points_hit_count = 0;
969
- Handle<JSArray> break_points_hit = Factory::NewJSArray(1);
970
-
971
- // If there are multiple break points they are in a FixedArray.
972
- ASSERT(!break_point_objects->IsUndefined());
973
- if (break_point_objects->IsFixedArray()) {
974
- Handle<FixedArray> array(FixedArray::cast(*break_point_objects));
975
- for (int i = 0; i < array->length(); i++) {
976
- Handle<Object> o(array->get(i));
977
- if (CheckBreakPoint(o)) {
978
- break_points_hit->SetElement(break_points_hit_count++, *o);
979
- }
980
- }
981
- } else {
982
- if (CheckBreakPoint(break_point_objects)) {
983
- break_points_hit->SetElement(break_points_hit_count++,
984
- *break_point_objects);
985
- }
986
- }
987
-
988
- // Return undefined if no break points where triggered.
989
- if (break_points_hit_count == 0) {
990
- return Factory::undefined_value();
991
- }
992
- return break_points_hit;
993
- }
994
-
995
-
996
- // Check whether a single break point object is triggered.
997
- bool Debug::CheckBreakPoint(Handle<Object> break_point_object) {
998
- HandleScope scope;
999
-
1000
- // Ignore check if break point object is not a JSObject.
1001
- if (!break_point_object->IsJSObject()) return true;
1002
-
1003
- // Get the function CheckBreakPoint (defined in debug.js).
1004
- Handle<JSFunction> check_break_point =
1005
- Handle<JSFunction>(JSFunction::cast(
1006
- debug_context()->global()->GetProperty(
1007
- *Factory::LookupAsciiSymbol("IsBreakPointTriggered"))));
1008
-
1009
- // Get the break id as an object.
1010
- Handle<Object> break_id = Factory::NewNumberFromInt(Debug::break_id());
1011
-
1012
- // Call HandleBreakPointx.
1013
- bool caught_exception = false;
1014
- const int argc = 2;
1015
- Object** argv[argc] = {
1016
- break_id.location(),
1017
- reinterpret_cast<Object**>(break_point_object.location())
1018
- };
1019
- Handle<Object> result = Execution::TryCall(check_break_point,
1020
- Top::builtins(), argc, argv,
1021
- &caught_exception);
1022
-
1023
- // If exception or non boolean result handle as not triggered
1024
- if (caught_exception || !result->IsBoolean()) {
1025
- return false;
1026
- }
1027
-
1028
- // Return whether the break point is triggered.
1029
- return *result == Heap::true_value();
1030
- }
1031
-
1032
-
1033
- // Check whether the function has debug information.
1034
- bool Debug::HasDebugInfo(Handle<SharedFunctionInfo> shared) {
1035
- return !shared->debug_info()->IsUndefined();
1036
- }
1037
-
1038
-
1039
- // Return the debug info for this function. EnsureDebugInfo must be called
1040
- // prior to ensure the debug info has been generated for shared.
1041
- Handle<DebugInfo> Debug::GetDebugInfo(Handle<SharedFunctionInfo> shared) {
1042
- ASSERT(HasDebugInfo(shared));
1043
- return Handle<DebugInfo>(DebugInfo::cast(shared->debug_info()));
1044
- }
1045
-
1046
-
1047
- void Debug::SetBreakPoint(Handle<SharedFunctionInfo> shared,
1048
- Handle<Object> break_point_object,
1049
- int* source_position) {
1050
- HandleScope scope;
1051
-
1052
- if (!EnsureDebugInfo(shared)) {
1053
- // Return if retrieving debug info failed.
1054
- return;
1055
- }
1056
-
1057
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1058
- // Source positions starts with zero.
1059
- ASSERT(source_position >= 0);
1060
-
1061
- // Find the break point and change it.
1062
- BreakLocationIterator it(debug_info, SOURCE_BREAK_LOCATIONS);
1063
- it.FindBreakLocationFromPosition(*source_position);
1064
- it.SetBreakPoint(break_point_object);
1065
-
1066
- *source_position = it.position();
1067
-
1068
- // At least one active break point now.
1069
- ASSERT(debug_info->GetBreakPointCount() > 0);
1070
- }
1071
-
1072
-
1073
- void Debug::ClearBreakPoint(Handle<Object> break_point_object) {
1074
- HandleScope scope;
1075
-
1076
- DebugInfoListNode* node = debug_info_list_;
1077
- while (node != NULL) {
1078
- Object* result = DebugInfo::FindBreakPointInfo(node->debug_info(),
1079
- break_point_object);
1080
- if (!result->IsUndefined()) {
1081
- // Get information in the break point.
1082
- BreakPointInfo* break_point_info = BreakPointInfo::cast(result);
1083
- Handle<DebugInfo> debug_info = node->debug_info();
1084
- Handle<SharedFunctionInfo> shared(debug_info->shared());
1085
- int source_position = break_point_info->statement_position()->value();
1086
-
1087
- // Source positions starts with zero.
1088
- ASSERT(source_position >= 0);
1089
-
1090
- // Find the break point and clear it.
1091
- BreakLocationIterator it(debug_info, SOURCE_BREAK_LOCATIONS);
1092
- it.FindBreakLocationFromPosition(source_position);
1093
- it.ClearBreakPoint(break_point_object);
1094
-
1095
- // If there are no more break points left remove the debug info for this
1096
- // function.
1097
- if (debug_info->GetBreakPointCount() == 0) {
1098
- RemoveDebugInfo(debug_info);
1099
- }
1100
-
1101
- return;
1102
- }
1103
- node = node->next();
1104
- }
1105
- }
1106
-
1107
-
1108
- void Debug::ClearAllBreakPoints() {
1109
- DebugInfoListNode* node = debug_info_list_;
1110
- while (node != NULL) {
1111
- // Remove all debug break code.
1112
- BreakLocationIterator it(node->debug_info(), ALL_BREAK_LOCATIONS);
1113
- it.ClearAllDebugBreak();
1114
- node = node->next();
1115
- }
1116
-
1117
- // Remove all debug info.
1118
- while (debug_info_list_ != NULL) {
1119
- RemoveDebugInfo(debug_info_list_->debug_info());
1120
- }
1121
- }
1122
-
1123
-
1124
- void Debug::FloodWithOneShot(Handle<SharedFunctionInfo> shared) {
1125
- // Make sure the function has setup the debug info.
1126
- if (!EnsureDebugInfo(shared)) {
1127
- // Return if we failed to retrieve the debug info.
1128
- return;
1129
- }
1130
-
1131
- // Flood the function with break points.
1132
- BreakLocationIterator it(GetDebugInfo(shared), ALL_BREAK_LOCATIONS);
1133
- while (!it.Done()) {
1134
- it.SetOneShot();
1135
- it.Next();
1136
- }
1137
- }
1138
-
1139
-
1140
- void Debug::FloodHandlerWithOneShot() {
1141
- // Iterate through the JavaScript stack looking for handlers.
1142
- StackFrame::Id id = break_frame_id();
1143
- if (id == StackFrame::NO_ID) {
1144
- // If there is no JavaScript stack don't do anything.
1145
- return;
1146
- }
1147
- for (JavaScriptFrameIterator it(id); !it.done(); it.Advance()) {
1148
- JavaScriptFrame* frame = it.frame();
1149
- if (frame->HasHandler()) {
1150
- Handle<SharedFunctionInfo> shared =
1151
- Handle<SharedFunctionInfo>(
1152
- JSFunction::cast(frame->function())->shared());
1153
- // Flood the function with the catch block with break points
1154
- FloodWithOneShot(shared);
1155
- return;
1156
- }
1157
- }
1158
- }
1159
-
1160
-
1161
- void Debug::ChangeBreakOnException(ExceptionBreakType type, bool enable) {
1162
- if (type == BreakUncaughtException) {
1163
- break_on_uncaught_exception_ = enable;
1164
- } else {
1165
- break_on_exception_ = enable;
1166
- }
1167
- }
1168
-
1169
-
1170
- void Debug::PrepareStep(StepAction step_action, int step_count) {
1171
- HandleScope scope;
1172
- ASSERT(Debug::InDebugger());
1173
-
1174
- // Remember this step action and count.
1175
- thread_local_.last_step_action_ = step_action;
1176
- if (step_action == StepOut) {
1177
- // For step out target frame will be found on the stack so there is no need
1178
- // to set step counter for it. It's expected to always be 0 for StepOut.
1179
- thread_local_.step_count_ = 0;
1180
- } else {
1181
- thread_local_.step_count_ = step_count;
1182
- }
1183
-
1184
- // Get the frame where the execution has stopped and skip the debug frame if
1185
- // any. The debug frame will only be present if execution was stopped due to
1186
- // hitting a break point. In other situations (e.g. unhandled exception) the
1187
- // debug frame is not present.
1188
- StackFrame::Id id = break_frame_id();
1189
- if (id == StackFrame::NO_ID) {
1190
- // If there is no JavaScript stack don't do anything.
1191
- return;
1192
- }
1193
- JavaScriptFrameIterator frames_it(id);
1194
- JavaScriptFrame* frame = frames_it.frame();
1195
-
1196
- // First of all ensure there is one-shot break points in the top handler
1197
- // if any.
1198
- FloodHandlerWithOneShot();
1199
-
1200
- // If the function on the top frame is unresolved perform step out. This will
1201
- // be the case when calling unknown functions and having the debugger stopped
1202
- // in an unhandled exception.
1203
- if (!frame->function()->IsJSFunction()) {
1204
- // Step out: Find the calling JavaScript frame and flood it with
1205
- // breakpoints.
1206
- frames_it.Advance();
1207
- // Fill the function to return to with one-shot break points.
1208
- JSFunction* function = JSFunction::cast(frames_it.frame()->function());
1209
- FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1210
- return;
1211
- }
1212
-
1213
- // Get the debug info (create it if it does not exist).
1214
- Handle<SharedFunctionInfo> shared =
1215
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
1216
- if (!EnsureDebugInfo(shared)) {
1217
- // Return if ensuring debug info failed.
1218
- return;
1219
- }
1220
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1221
-
1222
- // Find the break location where execution has stopped.
1223
- BreakLocationIterator it(debug_info, ALL_BREAK_LOCATIONS);
1224
- it.FindBreakLocationFromAddress(frame->pc());
1225
-
1226
- // Compute whether or not the target is a call target.
1227
- bool is_call_target = false;
1228
- bool is_load_or_store = false;
1229
- bool is_inline_cache_stub = false;
1230
- Handle<Code> call_function_stub;
1231
- if (RelocInfo::IsCodeTarget(it.rinfo()->rmode())) {
1232
- Address target = it.rinfo()->target_address();
1233
- Code* code = Code::GetCodeFromTargetAddress(target);
1234
- if (code->is_call_stub() || code->is_keyed_call_stub()) {
1235
- is_call_target = true;
1236
- }
1237
- if (code->is_inline_cache_stub()) {
1238
- is_inline_cache_stub = true;
1239
- is_load_or_store = !is_call_target;
1240
- }
1241
-
1242
- // Check if target code is CallFunction stub.
1243
- Code* maybe_call_function_stub = code;
1244
- // If there is a breakpoint at this line look at the original code to
1245
- // check if it is a CallFunction stub.
1246
- if (it.IsDebugBreak()) {
1247
- Address original_target = it.original_rinfo()->target_address();
1248
- maybe_call_function_stub =
1249
- Code::GetCodeFromTargetAddress(original_target);
1250
- }
1251
- if (maybe_call_function_stub->kind() == Code::STUB &&
1252
- maybe_call_function_stub->major_key() == CodeStub::CallFunction) {
1253
- // Save reference to the code as we may need it to find out arguments
1254
- // count for 'step in' later.
1255
- call_function_stub = Handle<Code>(maybe_call_function_stub);
1256
- }
1257
- }
1258
-
1259
- // If this is the last break code target step out is the only possibility.
1260
- if (it.IsExit() || step_action == StepOut) {
1261
- if (step_action == StepOut) {
1262
- // Skip step_count frames starting with the current one.
1263
- while (step_count-- > 0 && !frames_it.done()) {
1264
- frames_it.Advance();
1265
- }
1266
- } else {
1267
- ASSERT(it.IsExit());
1268
- frames_it.Advance();
1269
- }
1270
- // Skip builtin functions on the stack.
1271
- while (!frames_it.done() &&
1272
- JSFunction::cast(frames_it.frame()->function())->IsBuiltin()) {
1273
- frames_it.Advance();
1274
- }
1275
- // Step out: If there is a JavaScript caller frame, we need to
1276
- // flood it with breakpoints.
1277
- if (!frames_it.done()) {
1278
- // Fill the function to return to with one-shot break points.
1279
- JSFunction* function = JSFunction::cast(frames_it.frame()->function());
1280
- FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1281
- // Set target frame pointer.
1282
- ActivateStepOut(frames_it.frame());
1283
- }
1284
- } else if (!(is_inline_cache_stub || RelocInfo::IsConstructCall(it.rmode()) ||
1285
- !call_function_stub.is_null())
1286
- || step_action == StepNext || step_action == StepMin) {
1287
- // Step next or step min.
1288
-
1289
- // Fill the current function with one-shot break points.
1290
- FloodWithOneShot(shared);
1291
-
1292
- // Remember source position and frame to handle step next.
1293
- thread_local_.last_statement_position_ =
1294
- debug_info->code()->SourceStatementPosition(frame->pc());
1295
- thread_local_.last_fp_ = frame->fp();
1296
- } else {
1297
- // If it's CallFunction stub ensure target function is compiled and flood
1298
- // it with one shot breakpoints.
1299
- if (!call_function_stub.is_null()) {
1300
- // Find out number of arguments from the stub minor key.
1301
- // Reverse lookup required as the minor key cannot be retrieved
1302
- // from the code object.
1303
- Handle<Object> obj(
1304
- Heap::code_stubs()->SlowReverseLookup(*call_function_stub));
1305
- ASSERT(*obj != Heap::undefined_value());
1306
- ASSERT(obj->IsSmi());
1307
- // Get the STUB key and extract major and minor key.
1308
- uint32_t key = Smi::cast(*obj)->value();
1309
- // Argc in the stub is the number of arguments passed - not the
1310
- // expected arguments of the called function.
1311
- int call_function_arg_count =
1312
- CallFunctionStub::ExtractArgcFromMinorKey(
1313
- CodeStub::MinorKeyFromKey(key));
1314
- ASSERT(call_function_stub->major_key() ==
1315
- CodeStub::MajorKeyFromKey(key));
1316
-
1317
- // Find target function on the expression stack.
1318
- // Expression stack looks like this (top to bottom):
1319
- // argN
1320
- // ...
1321
- // arg0
1322
- // Receiver
1323
- // Function to call
1324
- int expressions_count = frame->ComputeExpressionsCount();
1325
- ASSERT(expressions_count - 2 - call_function_arg_count >= 0);
1326
- Object* fun = frame->GetExpression(
1327
- expressions_count - 2 - call_function_arg_count);
1328
- if (fun->IsJSFunction()) {
1329
- Handle<JSFunction> js_function(JSFunction::cast(fun));
1330
- // Don't step into builtins.
1331
- if (!js_function->IsBuiltin()) {
1332
- // It will also compile target function if it's not compiled yet.
1333
- FloodWithOneShot(Handle<SharedFunctionInfo>(js_function->shared()));
1334
- }
1335
- }
1336
- }
1337
-
1338
- // Fill the current function with one-shot break points even for step in on
1339
- // a call target as the function called might be a native function for
1340
- // which step in will not stop. It also prepares for stepping in
1341
- // getters/setters.
1342
- FloodWithOneShot(shared);
1343
-
1344
- if (is_load_or_store) {
1345
- // Remember source position and frame to handle step in getter/setter. If
1346
- // there is a custom getter/setter it will be handled in
1347
- // Object::Get/SetPropertyWithCallback, otherwise the step action will be
1348
- // propagated on the next Debug::Break.
1349
- thread_local_.last_statement_position_ =
1350
- debug_info->code()->SourceStatementPosition(frame->pc());
1351
- thread_local_.last_fp_ = frame->fp();
1352
- }
1353
-
1354
- // Step in or Step in min
1355
- it.PrepareStepIn();
1356
- ActivateStepIn(frame);
1357
- }
1358
- }
1359
-
1360
-
1361
- // Check whether the current debug break should be reported to the debugger. It
1362
- // is used to have step next and step in only report break back to the debugger
1363
- // if on a different frame or in a different statement. In some situations
1364
- // there will be several break points in the same statement when the code is
1365
- // flooded with one-shot break points. This function helps to perform several
1366
- // steps before reporting break back to the debugger.
1367
- bool Debug::StepNextContinue(BreakLocationIterator* break_location_iterator,
1368
- JavaScriptFrame* frame) {
1369
- // If the step last action was step next or step in make sure that a new
1370
- // statement is hit.
1371
- if (thread_local_.last_step_action_ == StepNext ||
1372
- thread_local_.last_step_action_ == StepIn) {
1373
- // Never continue if returning from function.
1374
- if (break_location_iterator->IsExit()) return false;
1375
-
1376
- // Continue if we are still on the same frame and in the same statement.
1377
- int current_statement_position =
1378
- break_location_iterator->code()->SourceStatementPosition(frame->pc());
1379
- return thread_local_.last_fp_ == frame->fp() &&
1380
- thread_local_.last_statement_position_ == current_statement_position;
1381
- }
1382
-
1383
- // No step next action - don't continue.
1384
- return false;
1385
- }
1386
-
1387
-
1388
- // Check whether the code object at the specified address is a debug break code
1389
- // object.
1390
- bool Debug::IsDebugBreak(Address addr) {
1391
- Code* code = Code::GetCodeFromTargetAddress(addr);
1392
- return code->ic_state() == DEBUG_BREAK;
1393
- }
1394
-
1395
-
1396
- // Check whether a code stub with the specified major key is a possible break
1397
- // point location when looking for source break locations.
1398
- bool Debug::IsSourceBreakStub(Code* code) {
1399
- CodeStub::Major major_key = code->major_key();
1400
- return major_key == CodeStub::CallFunction;
1401
- }
1402
-
1403
-
1404
- // Check whether a code stub with the specified major key is a possible break
1405
- // location.
1406
- bool Debug::IsBreakStub(Code* code) {
1407
- CodeStub::Major major_key = code->major_key();
1408
- return major_key == CodeStub::CallFunction ||
1409
- major_key == CodeStub::StackCheck;
1410
- }
1411
-
1412
-
1413
- // Find the builtin to use for invoking the debug break
1414
- Handle<Code> Debug::FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode) {
1415
- // Find the builtin debug break function matching the calling convention
1416
- // used by the call site.
1417
- if (code->is_inline_cache_stub()) {
1418
- switch (code->kind()) {
1419
- case Code::CALL_IC:
1420
- case Code::KEYED_CALL_IC:
1421
- return ComputeCallDebugBreak(code->arguments_count(), code->kind());
1422
-
1423
- case Code::LOAD_IC:
1424
- return Handle<Code>(Builtins::builtin(Builtins::LoadIC_DebugBreak));
1425
-
1426
- case Code::STORE_IC:
1427
- return Handle<Code>(Builtins::builtin(Builtins::StoreIC_DebugBreak));
1428
-
1429
- case Code::KEYED_LOAD_IC:
1430
- return Handle<Code>(
1431
- Builtins::builtin(Builtins::KeyedLoadIC_DebugBreak));
1432
-
1433
- case Code::KEYED_STORE_IC:
1434
- return Handle<Code>(
1435
- Builtins::builtin(Builtins::KeyedStoreIC_DebugBreak));
1436
-
1437
- default:
1438
- UNREACHABLE();
1439
- }
1440
- }
1441
- if (RelocInfo::IsConstructCall(mode)) {
1442
- Handle<Code> result =
1443
- Handle<Code>(Builtins::builtin(Builtins::ConstructCall_DebugBreak));
1444
- return result;
1445
- }
1446
- if (code->kind() == Code::STUB) {
1447
- ASSERT(code->major_key() == CodeStub::CallFunction ||
1448
- code->major_key() == CodeStub::StackCheck);
1449
- Handle<Code> result =
1450
- Handle<Code>(Builtins::builtin(Builtins::StubNoRegisters_DebugBreak));
1451
- return result;
1452
- }
1453
-
1454
- UNREACHABLE();
1455
- return Handle<Code>::null();
1456
- }
1457
-
1458
-
1459
- // Simple function for returning the source positions for active break points.
1460
- Handle<Object> Debug::GetSourceBreakLocations(
1461
- Handle<SharedFunctionInfo> shared) {
1462
- if (!HasDebugInfo(shared)) return Handle<Object>(Heap::undefined_value());
1463
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1464
- if (debug_info->GetBreakPointCount() == 0) {
1465
- return Handle<Object>(Heap::undefined_value());
1466
- }
1467
- Handle<FixedArray> locations =
1468
- Factory::NewFixedArray(debug_info->GetBreakPointCount());
1469
- int count = 0;
1470
- for (int i = 0; i < debug_info->break_points()->length(); i++) {
1471
- if (!debug_info->break_points()->get(i)->IsUndefined()) {
1472
- BreakPointInfo* break_point_info =
1473
- BreakPointInfo::cast(debug_info->break_points()->get(i));
1474
- if (break_point_info->GetBreakPointCount() > 0) {
1475
- locations->set(count++, break_point_info->statement_position());
1476
- }
1477
- }
1478
- }
1479
- return locations;
1480
- }
1481
-
1482
-
1483
- void Debug::NewBreak(StackFrame::Id break_frame_id) {
1484
- thread_local_.break_frame_id_ = break_frame_id;
1485
- thread_local_.break_id_ = ++thread_local_.break_count_;
1486
- }
1487
-
1488
-
1489
- void Debug::SetBreak(StackFrame::Id break_frame_id, int break_id) {
1490
- thread_local_.break_frame_id_ = break_frame_id;
1491
- thread_local_.break_id_ = break_id;
1492
- }
1493
-
1494
-
1495
- // Handle stepping into a function.
1496
- void Debug::HandleStepIn(Handle<JSFunction> function,
1497
- Handle<Object> holder,
1498
- Address fp,
1499
- bool is_constructor) {
1500
- // If the frame pointer is not supplied by the caller find it.
1501
- if (fp == 0) {
1502
- StackFrameIterator it;
1503
- it.Advance();
1504
- // For constructor functions skip another frame.
1505
- if (is_constructor) {
1506
- ASSERT(it.frame()->is_construct());
1507
- it.Advance();
1508
- }
1509
- fp = it.frame()->fp();
1510
- }
1511
-
1512
- // Flood the function with one-shot break points if it is called from where
1513
- // step into was requested.
1514
- if (fp == Debug::step_in_fp()) {
1515
- // Don't allow step into functions in the native context.
1516
- if (!function->IsBuiltin()) {
1517
- if (function->shared()->code() ==
1518
- Builtins::builtin(Builtins::FunctionApply) ||
1519
- function->shared()->code() ==
1520
- Builtins::builtin(Builtins::FunctionCall)) {
1521
- // Handle function.apply and function.call separately to flood the
1522
- // function to be called and not the code for Builtins::FunctionApply or
1523
- // Builtins::FunctionCall. The receiver of call/apply is the target
1524
- // function.
1525
- if (!holder.is_null() && holder->IsJSFunction() &&
1526
- !JSFunction::cast(*holder)->IsBuiltin()) {
1527
- Handle<SharedFunctionInfo> shared_info(
1528
- JSFunction::cast(*holder)->shared());
1529
- Debug::FloodWithOneShot(shared_info);
1530
- }
1531
- } else {
1532
- Debug::FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1533
- }
1534
- }
1535
- }
1536
- }
1537
-
1538
-
1539
- void Debug::ClearStepping() {
1540
- // Clear the various stepping setup.
1541
- ClearOneShot();
1542
- ClearStepIn();
1543
- ClearStepOut();
1544
- ClearStepNext();
1545
-
1546
- // Clear multiple step counter.
1547
- thread_local_.step_count_ = 0;
1548
- }
1549
-
1550
- // Clears all the one-shot break points that are currently set. Normally this
1551
- // function is called each time a break point is hit as one shot break points
1552
- // are used to support stepping.
1553
- void Debug::ClearOneShot() {
1554
- // The current implementation just runs through all the breakpoints. When the
1555
- // last break point for a function is removed that function is automatically
1556
- // removed from the list.
1557
-
1558
- DebugInfoListNode* node = debug_info_list_;
1559
- while (node != NULL) {
1560
- BreakLocationIterator it(node->debug_info(), ALL_BREAK_LOCATIONS);
1561
- while (!it.Done()) {
1562
- it.ClearOneShot();
1563
- it.Next();
1564
- }
1565
- node = node->next();
1566
- }
1567
- }
1568
-
1569
-
1570
- void Debug::ActivateStepIn(StackFrame* frame) {
1571
- ASSERT(!StepOutActive());
1572
- thread_local_.step_into_fp_ = frame->fp();
1573
- }
1574
-
1575
-
1576
- void Debug::ClearStepIn() {
1577
- thread_local_.step_into_fp_ = 0;
1578
- }
1579
-
1580
-
1581
- void Debug::ActivateStepOut(StackFrame* frame) {
1582
- ASSERT(!StepInActive());
1583
- thread_local_.step_out_fp_ = frame->fp();
1584
- }
1585
-
1586
-
1587
- void Debug::ClearStepOut() {
1588
- thread_local_.step_out_fp_ = 0;
1589
- }
1590
-
1591
-
1592
- void Debug::ClearStepNext() {
1593
- thread_local_.last_step_action_ = StepNone;
1594
- thread_local_.last_statement_position_ = RelocInfo::kNoPosition;
1595
- thread_local_.last_fp_ = 0;
1596
- }
1597
-
1598
-
1599
- // Ensures the debug information is present for shared.
1600
- bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared) {
1601
- // Return if we already have the debug info for shared.
1602
- if (HasDebugInfo(shared)) return true;
1603
-
1604
- // Ensure shared in compiled. Return false if this failed.
1605
- if (!EnsureCompiled(shared, CLEAR_EXCEPTION)) return false;
1606
-
1607
- // Create the debug info object.
1608
- Handle<DebugInfo> debug_info = Factory::NewDebugInfo(shared);
1609
-
1610
- // Add debug info to the list.
1611
- DebugInfoListNode* node = new DebugInfoListNode(*debug_info);
1612
- node->set_next(debug_info_list_);
1613
- debug_info_list_ = node;
1614
-
1615
- // Now there is at least one break point.
1616
- has_break_points_ = true;
1617
-
1618
- return true;
1619
- }
1620
-
1621
-
1622
- void Debug::RemoveDebugInfo(Handle<DebugInfo> debug_info) {
1623
- ASSERT(debug_info_list_ != NULL);
1624
- // Run through the debug info objects to find this one and remove it.
1625
- DebugInfoListNode* prev = NULL;
1626
- DebugInfoListNode* current = debug_info_list_;
1627
- while (current != NULL) {
1628
- if (*current->debug_info() == *debug_info) {
1629
- // Unlink from list. If prev is NULL we are looking at the first element.
1630
- if (prev == NULL) {
1631
- debug_info_list_ = current->next();
1632
- } else {
1633
- prev->set_next(current->next());
1634
- }
1635
- current->debug_info()->shared()->set_debug_info(Heap::undefined_value());
1636
- delete current;
1637
-
1638
- // If there are no more debug info objects there are not more break
1639
- // points.
1640
- has_break_points_ = debug_info_list_ != NULL;
1641
-
1642
- return;
1643
- }
1644
- // Move to next in list.
1645
- prev = current;
1646
- current = current->next();
1647
- }
1648
- UNREACHABLE();
1649
- }
1650
-
1651
-
1652
- void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
1653
- HandleScope scope;
1654
-
1655
- // Get the executing function in which the debug break occurred.
1656
- Handle<SharedFunctionInfo> shared =
1657
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
1658
- if (!EnsureDebugInfo(shared)) {
1659
- // Return if we failed to retrieve the debug info.
1660
- return;
1661
- }
1662
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1663
- Handle<Code> code(debug_info->code());
1664
- Handle<Code> original_code(debug_info->original_code());
1665
- #ifdef DEBUG
1666
- // Get the code which is actually executing.
1667
- Handle<Code> frame_code(frame->code());
1668
- ASSERT(frame_code.is_identical_to(code));
1669
- #endif
1670
-
1671
- // Find the call address in the running code. This address holds the call to
1672
- // either a DebugBreakXXX or to the debug break return entry code if the
1673
- // break point is still active after processing the break point.
1674
- Address addr = frame->pc() - Assembler::kCallTargetAddressOffset;
1675
-
1676
- // Check if the location is at JS exit or debug break slot.
1677
- bool at_js_return = false;
1678
- bool break_at_js_return_active = false;
1679
- bool at_debug_break_slot = false;
1680
- RelocIterator it(debug_info->code());
1681
- while (!it.done() && !at_js_return && !at_debug_break_slot) {
1682
- if (RelocInfo::IsJSReturn(it.rinfo()->rmode())) {
1683
- at_js_return = (it.rinfo()->pc() ==
1684
- addr - Assembler::kPatchReturnSequenceAddressOffset);
1685
- break_at_js_return_active = it.rinfo()->IsPatchedReturnSequence();
1686
- }
1687
- if (RelocInfo::IsDebugBreakSlot(it.rinfo()->rmode())) {
1688
- at_debug_break_slot = (it.rinfo()->pc() ==
1689
- addr - Assembler::kPatchDebugBreakSlotAddressOffset);
1690
- }
1691
- it.next();
1692
- }
1693
-
1694
- // Handle the jump to continue execution after break point depending on the
1695
- // break location.
1696
- if (at_js_return) {
1697
- // If the break point as return is still active jump to the corresponding
1698
- // place in the original code. If not the break point was removed during
1699
- // break point processing.
1700
- if (break_at_js_return_active) {
1701
- addr += original_code->instruction_start() - code->instruction_start();
1702
- }
1703
-
1704
- // Move back to where the call instruction sequence started.
1705
- thread_local_.after_break_target_ =
1706
- addr - Assembler::kPatchReturnSequenceAddressOffset;
1707
- } else if (at_debug_break_slot) {
1708
- // Address of where the debug break slot starts.
1709
- addr = addr - Assembler::kPatchDebugBreakSlotAddressOffset;
1710
-
1711
- // Continue just after the slot.
1712
- thread_local_.after_break_target_ = addr + Assembler::kDebugBreakSlotLength;
1713
- } else if (IsDebugBreak(Assembler::target_address_at(addr))) {
1714
- // We now know that there is still a debug break call at the target address,
1715
- // so the break point is still there and the original code will hold the
1716
- // address to jump to in order to complete the call which is replaced by a
1717
- // call to DebugBreakXXX.
1718
-
1719
- // Find the corresponding address in the original code.
1720
- addr += original_code->instruction_start() - code->instruction_start();
1721
-
1722
- // Install jump to the call address in the original code. This will be the
1723
- // call which was overwritten by the call to DebugBreakXXX.
1724
- thread_local_.after_break_target_ = Assembler::target_address_at(addr);
1725
- } else {
1726
- // There is no longer a break point present. Don't try to look in the
1727
- // original code as the running code will have the right address. This takes
1728
- // care of the case where the last break point is removed from the function
1729
- // and therefore no "original code" is available.
1730
- thread_local_.after_break_target_ = Assembler::target_address_at(addr);
1731
- }
1732
- }
1733
-
1734
-
1735
- bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
1736
- HandleScope scope;
1737
-
1738
- // Get the executing function in which the debug break occurred.
1739
- Handle<SharedFunctionInfo> shared =
1740
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
1741
- if (!EnsureDebugInfo(shared)) {
1742
- // Return if we failed to retrieve the debug info.
1743
- return false;
1744
- }
1745
- Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1746
- Handle<Code> code(debug_info->code());
1747
- #ifdef DEBUG
1748
- // Get the code which is actually executing.
1749
- Handle<Code> frame_code(frame->code());
1750
- ASSERT(frame_code.is_identical_to(code));
1751
- #endif
1752
-
1753
- // Find the call address in the running code.
1754
- Address addr = frame->pc() - Assembler::kCallTargetAddressOffset;
1755
-
1756
- // Check if the location is at JS return.
1757
- RelocIterator it(debug_info->code());
1758
- while (!it.done()) {
1759
- if (RelocInfo::IsJSReturn(it.rinfo()->rmode())) {
1760
- return (it.rinfo()->pc() ==
1761
- addr - Assembler::kPatchReturnSequenceAddressOffset);
1762
- }
1763
- it.next();
1764
- }
1765
- return false;
1766
- }
1767
-
1768
-
1769
- void Debug::FramesHaveBeenDropped(StackFrame::Id new_break_frame_id,
1770
- FrameDropMode mode) {
1771
- thread_local_.frame_drop_mode_ = mode;
1772
- thread_local_.break_frame_id_ = new_break_frame_id;
1773
- }
1774
-
1775
-
1776
- bool Debug::IsDebugGlobal(GlobalObject* global) {
1777
- return IsLoaded() && global == Debug::debug_context()->global();
1778
- }
1779
-
1780
-
1781
- void Debug::ClearMirrorCache() {
1782
- HandleScope scope;
1783
- ASSERT(Top::context() == *Debug::debug_context());
1784
-
1785
- // Clear the mirror cache.
1786
- Handle<String> function_name =
1787
- Factory::LookupSymbol(CStrVector("ClearMirrorCache"));
1788
- Handle<Object> fun(Top::global()->GetProperty(*function_name));
1789
- ASSERT(fun->IsJSFunction());
1790
- bool caught_exception;
1791
- Handle<Object> js_object = Execution::TryCall(
1792
- Handle<JSFunction>::cast(fun),
1793
- Handle<JSObject>(Debug::debug_context()->global()),
1794
- 0, NULL, &caught_exception);
1795
- }
1796
-
1797
-
1798
- void Debug::CreateScriptCache() {
1799
- HandleScope scope;
1800
-
1801
- // Perform two GCs to get rid of all unreferenced scripts. The first GC gets
1802
- // rid of all the cached script wrappers and the second gets rid of the
1803
- // scripts which are no longer referenced.
1804
- Heap::CollectAllGarbage(false);
1805
- Heap::CollectAllGarbage(false);
1806
-
1807
- ASSERT(script_cache_ == NULL);
1808
- script_cache_ = new ScriptCache();
1809
-
1810
- // Scan heap for Script objects.
1811
- int count = 0;
1812
- HeapIterator iterator;
1813
- for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
1814
- if (obj->IsScript() && Script::cast(obj)->HasValidSource()) {
1815
- script_cache_->Add(Handle<Script>(Script::cast(obj)));
1816
- count++;
1817
- }
1818
- }
1819
- }
1820
-
1821
-
1822
- void Debug::DestroyScriptCache() {
1823
- // Get rid of the script cache if it was created.
1824
- if (script_cache_ != NULL) {
1825
- delete script_cache_;
1826
- script_cache_ = NULL;
1827
- }
1828
- }
1829
-
1830
-
1831
- void Debug::AddScriptToScriptCache(Handle<Script> script) {
1832
- if (script_cache_ != NULL) {
1833
- script_cache_->Add(script);
1834
- }
1835
- }
1836
-
1837
-
1838
- Handle<FixedArray> Debug::GetLoadedScripts() {
1839
- // Create and fill the script cache when the loaded scripts is requested for
1840
- // the first time.
1841
- if (script_cache_ == NULL) {
1842
- CreateScriptCache();
1843
- }
1844
-
1845
- // If the script cache is not active just return an empty array.
1846
- ASSERT(script_cache_ != NULL);
1847
- if (script_cache_ == NULL) {
1848
- Factory::NewFixedArray(0);
1849
- }
1850
-
1851
- // Perform GC to get unreferenced scripts evicted from the cache before
1852
- // returning the content.
1853
- Heap::CollectAllGarbage(false);
1854
-
1855
- // Get the scripts from the cache.
1856
- return script_cache_->GetScripts();
1857
- }
1858
-
1859
-
1860
- void Debug::AfterGarbageCollection() {
1861
- // Generate events for collected scripts.
1862
- if (script_cache_ != NULL) {
1863
- script_cache_->ProcessCollectedScripts();
1864
- }
1865
- }
1866
-
1867
-
1868
- Mutex* Debugger::debugger_access_ = OS::CreateMutex();
1869
- Handle<Object> Debugger::event_listener_ = Handle<Object>();
1870
- Handle<Object> Debugger::event_listener_data_ = Handle<Object>();
1871
- bool Debugger::compiling_natives_ = false;
1872
- bool Debugger::is_loading_debugger_ = false;
1873
- bool Debugger::never_unload_debugger_ = false;
1874
- v8::Debug::MessageHandler2 Debugger::message_handler_ = NULL;
1875
- bool Debugger::debugger_unload_pending_ = false;
1876
- v8::Debug::HostDispatchHandler Debugger::host_dispatch_handler_ = NULL;
1877
- Mutex* Debugger::dispatch_handler_access_ = OS::CreateMutex();
1878
- v8::Debug::DebugMessageDispatchHandler
1879
- Debugger::debug_message_dispatch_handler_ = NULL;
1880
- MessageDispatchHelperThread* Debugger::message_dispatch_helper_thread_ = NULL;
1881
- int Debugger::host_dispatch_micros_ = 100 * 1000;
1882
- DebuggerAgent* Debugger::agent_ = NULL;
1883
- LockingCommandMessageQueue Debugger::command_queue_(kQueueInitialSize);
1884
- Semaphore* Debugger::command_received_ = OS::CreateSemaphore(0);
1885
- LockingCommandMessageQueue Debugger::event_command_queue_(kQueueInitialSize);
1886
-
1887
-
1888
- Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
1889
- int argc, Object*** argv,
1890
- bool* caught_exception) {
1891
- ASSERT(Top::context() == *Debug::debug_context());
1892
-
1893
- // Create the execution state object.
1894
- Handle<String> constructor_str = Factory::LookupSymbol(constructor_name);
1895
- Handle<Object> constructor(Top::global()->GetProperty(*constructor_str));
1896
- ASSERT(constructor->IsJSFunction());
1897
- if (!constructor->IsJSFunction()) {
1898
- *caught_exception = true;
1899
- return Factory::undefined_value();
1900
- }
1901
- Handle<Object> js_object = Execution::TryCall(
1902
- Handle<JSFunction>::cast(constructor),
1903
- Handle<JSObject>(Debug::debug_context()->global()), argc, argv,
1904
- caught_exception);
1905
- return js_object;
1906
- }
1907
-
1908
-
1909
- Handle<Object> Debugger::MakeExecutionState(bool* caught_exception) {
1910
- // Create the execution state object.
1911
- Handle<Object> break_id = Factory::NewNumberFromInt(Debug::break_id());
1912
- const int argc = 1;
1913
- Object** argv[argc] = { break_id.location() };
1914
- return MakeJSObject(CStrVector("MakeExecutionState"),
1915
- argc, argv, caught_exception);
1916
- }
1917
-
1918
-
1919
- Handle<Object> Debugger::MakeBreakEvent(Handle<Object> exec_state,
1920
- Handle<Object> break_points_hit,
1921
- bool* caught_exception) {
1922
- // Create the new break event object.
1923
- const int argc = 2;
1924
- Object** argv[argc] = { exec_state.location(),
1925
- break_points_hit.location() };
1926
- return MakeJSObject(CStrVector("MakeBreakEvent"),
1927
- argc,
1928
- argv,
1929
- caught_exception);
1930
- }
1931
-
1932
-
1933
- Handle<Object> Debugger::MakeExceptionEvent(Handle<Object> exec_state,
1934
- Handle<Object> exception,
1935
- bool uncaught,
1936
- bool* caught_exception) {
1937
- // Create the new exception event object.
1938
- const int argc = 3;
1939
- Object** argv[argc] = { exec_state.location(),
1940
- exception.location(),
1941
- uncaught ? Factory::true_value().location() :
1942
- Factory::false_value().location()};
1943
- return MakeJSObject(CStrVector("MakeExceptionEvent"),
1944
- argc, argv, caught_exception);
1945
- }
1946
-
1947
-
1948
- Handle<Object> Debugger::MakeNewFunctionEvent(Handle<Object> function,
1949
- bool* caught_exception) {
1950
- // Create the new function event object.
1951
- const int argc = 1;
1952
- Object** argv[argc] = { function.location() };
1953
- return MakeJSObject(CStrVector("MakeNewFunctionEvent"),
1954
- argc, argv, caught_exception);
1955
- }
1956
-
1957
-
1958
- Handle<Object> Debugger::MakeCompileEvent(Handle<Script> script,
1959
- bool before,
1960
- bool* caught_exception) {
1961
- // Create the compile event object.
1962
- Handle<Object> exec_state = MakeExecutionState(caught_exception);
1963
- Handle<Object> script_wrapper = GetScriptWrapper(script);
1964
- const int argc = 3;
1965
- Object** argv[argc] = { exec_state.location(),
1966
- script_wrapper.location(),
1967
- before ? Factory::true_value().location() :
1968
- Factory::false_value().location() };
1969
-
1970
- return MakeJSObject(CStrVector("MakeCompileEvent"),
1971
- argc,
1972
- argv,
1973
- caught_exception);
1974
- }
1975
-
1976
-
1977
- Handle<Object> Debugger::MakeScriptCollectedEvent(int id,
1978
- bool* caught_exception) {
1979
- // Create the script collected event object.
1980
- Handle<Object> exec_state = MakeExecutionState(caught_exception);
1981
- Handle<Object> id_object = Handle<Smi>(Smi::FromInt(id));
1982
- const int argc = 2;
1983
- Object** argv[argc] = { exec_state.location(), id_object.location() };
1984
-
1985
- return MakeJSObject(CStrVector("MakeScriptCollectedEvent"),
1986
- argc,
1987
- argv,
1988
- caught_exception);
1989
- }
1990
-
1991
-
1992
- void Debugger::OnException(Handle<Object> exception, bool uncaught) {
1993
- HandleScope scope;
1994
-
1995
- // Bail out based on state or if there is no listener for this event
1996
- if (Debug::InDebugger()) return;
1997
- if (!Debugger::EventActive(v8::Exception)) return;
1998
-
1999
- // Bail out if exception breaks are not active
2000
- if (uncaught) {
2001
- // Uncaught exceptions are reported by either flags.
2002
- if (!(Debug::break_on_uncaught_exception() ||
2003
- Debug::break_on_exception())) return;
2004
- } else {
2005
- // Caught exceptions are reported is activated.
2006
- if (!Debug::break_on_exception()) return;
2007
- }
2008
-
2009
- // Enter the debugger.
2010
- EnterDebugger debugger;
2011
- if (debugger.FailedToEnter()) return;
2012
-
2013
- // Clear all current stepping setup.
2014
- Debug::ClearStepping();
2015
- // Create the event data object.
2016
- bool caught_exception = false;
2017
- Handle<Object> exec_state = MakeExecutionState(&caught_exception);
2018
- Handle<Object> event_data;
2019
- if (!caught_exception) {
2020
- event_data = MakeExceptionEvent(exec_state, exception, uncaught,
2021
- &caught_exception);
2022
- }
2023
- // Bail out and don't call debugger if exception.
2024
- if (caught_exception) {
2025
- return;
2026
- }
2027
-
2028
- // Process debug event.
2029
- ProcessDebugEvent(v8::Exception, Handle<JSObject>::cast(event_data), false);
2030
- // Return to continue execution from where the exception was thrown.
2031
- }
2032
-
2033
-
2034
- void Debugger::OnDebugBreak(Handle<Object> break_points_hit,
2035
- bool auto_continue) {
2036
- HandleScope scope;
2037
-
2038
- // Debugger has already been entered by caller.
2039
- ASSERT(Top::context() == *Debug::debug_context());
2040
-
2041
- // Bail out if there is no listener for this event
2042
- if (!Debugger::EventActive(v8::Break)) return;
2043
-
2044
- // Debugger must be entered in advance.
2045
- ASSERT(Top::context() == *Debug::debug_context());
2046
-
2047
- // Create the event data object.
2048
- bool caught_exception = false;
2049
- Handle<Object> exec_state = MakeExecutionState(&caught_exception);
2050
- Handle<Object> event_data;
2051
- if (!caught_exception) {
2052
- event_data = MakeBreakEvent(exec_state, break_points_hit,
2053
- &caught_exception);
2054
- }
2055
- // Bail out and don't call debugger if exception.
2056
- if (caught_exception) {
2057
- return;
2058
- }
2059
-
2060
- // Process debug event.
2061
- ProcessDebugEvent(v8::Break,
2062
- Handle<JSObject>::cast(event_data),
2063
- auto_continue);
2064
- }
2065
-
2066
-
2067
- void Debugger::OnBeforeCompile(Handle<Script> script) {
2068
- HandleScope scope;
2069
-
2070
- // Bail out based on state or if there is no listener for this event
2071
- if (Debug::InDebugger()) return;
2072
- if (compiling_natives()) return;
2073
- if (!EventActive(v8::BeforeCompile)) return;
2074
-
2075
- // Enter the debugger.
2076
- EnterDebugger debugger;
2077
- if (debugger.FailedToEnter()) return;
2078
-
2079
- // Create the event data object.
2080
- bool caught_exception = false;
2081
- Handle<Object> event_data = MakeCompileEvent(script, true, &caught_exception);
2082
- // Bail out and don't call debugger if exception.
2083
- if (caught_exception) {
2084
- return;
2085
- }
2086
-
2087
- // Process debug event.
2088
- ProcessDebugEvent(v8::BeforeCompile,
2089
- Handle<JSObject>::cast(event_data),
2090
- true);
2091
- }
2092
-
2093
-
2094
- // Handle debugger actions when a new script is compiled.
2095
- void Debugger::OnAfterCompile(Handle<Script> script,
2096
- AfterCompileFlags after_compile_flags) {
2097
- HandleScope scope;
2098
-
2099
- // Add the newly compiled script to the script cache.
2100
- Debug::AddScriptToScriptCache(script);
2101
-
2102
- // No more to do if not debugging.
2103
- if (!IsDebuggerActive()) return;
2104
-
2105
- // No compile events while compiling natives.
2106
- if (compiling_natives()) return;
2107
-
2108
- // Store whether in debugger before entering debugger.
2109
- bool in_debugger = Debug::InDebugger();
2110
-
2111
- // Enter the debugger.
2112
- EnterDebugger debugger;
2113
- if (debugger.FailedToEnter()) return;
2114
-
2115
- // If debugging there might be script break points registered for this
2116
- // script. Make sure that these break points are set.
2117
-
2118
- // Get the function UpdateScriptBreakPoints (defined in debug-debugger.js).
2119
- Handle<Object> update_script_break_points =
2120
- Handle<Object>(Debug::debug_context()->global()->GetProperty(
2121
- *Factory::LookupAsciiSymbol("UpdateScriptBreakPoints")));
2122
- if (!update_script_break_points->IsJSFunction()) {
2123
- return;
2124
- }
2125
- ASSERT(update_script_break_points->IsJSFunction());
2126
-
2127
- // Wrap the script object in a proper JS object before passing it
2128
- // to JavaScript.
2129
- Handle<JSValue> wrapper = GetScriptWrapper(script);
2130
-
2131
- // Call UpdateScriptBreakPoints expect no exceptions.
2132
- bool caught_exception = false;
2133
- const int argc = 1;
2134
- Object** argv[argc] = { reinterpret_cast<Object**>(wrapper.location()) };
2135
- Handle<Object> result = Execution::TryCall(
2136
- Handle<JSFunction>::cast(update_script_break_points),
2137
- Top::builtins(), argc, argv,
2138
- &caught_exception);
2139
- if (caught_exception) {
2140
- return;
2141
- }
2142
- // Bail out based on state or if there is no listener for this event
2143
- if (in_debugger && (after_compile_flags & SEND_WHEN_DEBUGGING) == 0) return;
2144
- if (!Debugger::EventActive(v8::AfterCompile)) return;
2145
-
2146
- // Create the compile state object.
2147
- Handle<Object> event_data = MakeCompileEvent(script,
2148
- false,
2149
- &caught_exception);
2150
- // Bail out and don't call debugger if exception.
2151
- if (caught_exception) {
2152
- return;
2153
- }
2154
- // Process debug event.
2155
- ProcessDebugEvent(v8::AfterCompile,
2156
- Handle<JSObject>::cast(event_data),
2157
- true);
2158
- }
2159
-
2160
-
2161
- void Debugger::OnScriptCollected(int id) {
2162
- HandleScope scope;
2163
-
2164
- // No more to do if not debugging.
2165
- if (!IsDebuggerActive()) return;
2166
- if (!Debugger::EventActive(v8::ScriptCollected)) return;
2167
-
2168
- // Enter the debugger.
2169
- EnterDebugger debugger;
2170
- if (debugger.FailedToEnter()) return;
2171
-
2172
- // Create the script collected state object.
2173
- bool caught_exception = false;
2174
- Handle<Object> event_data = MakeScriptCollectedEvent(id,
2175
- &caught_exception);
2176
- // Bail out and don't call debugger if exception.
2177
- if (caught_exception) {
2178
- return;
2179
- }
2180
-
2181
- // Process debug event.
2182
- ProcessDebugEvent(v8::ScriptCollected,
2183
- Handle<JSObject>::cast(event_data),
2184
- true);
2185
- }
2186
-
2187
-
2188
- void Debugger::ProcessDebugEvent(v8::DebugEvent event,
2189
- Handle<JSObject> event_data,
2190
- bool auto_continue) {
2191
- HandleScope scope;
2192
-
2193
- // Clear any pending debug break if this is a real break.
2194
- if (!auto_continue) {
2195
- Debug::clear_interrupt_pending(DEBUGBREAK);
2196
- }
2197
-
2198
- // Create the execution state.
2199
- bool caught_exception = false;
2200
- Handle<Object> exec_state = MakeExecutionState(&caught_exception);
2201
- if (caught_exception) {
2202
- return;
2203
- }
2204
- // First notify the message handler if any.
2205
- if (message_handler_ != NULL) {
2206
- NotifyMessageHandler(event,
2207
- Handle<JSObject>::cast(exec_state),
2208
- event_data,
2209
- auto_continue);
2210
- }
2211
- // Notify registered debug event listener. This can be either a C or
2212
- // a JavaScript function. Don't call event listener for v8::Break
2213
- // here, if it's only a debug command -- they will be processed later.
2214
- if ((event != v8::Break || !auto_continue) && !event_listener_.is_null()) {
2215
- CallEventCallback(event, exec_state, event_data, NULL);
2216
- }
2217
- // Process pending debug commands.
2218
- if (event == v8::Break) {
2219
- while (!event_command_queue_.IsEmpty()) {
2220
- CommandMessage command = event_command_queue_.Get();
2221
- if (!event_listener_.is_null()) {
2222
- CallEventCallback(v8::BreakForCommand,
2223
- exec_state,
2224
- event_data,
2225
- command.client_data());
2226
- }
2227
- command.Dispose();
2228
- }
2229
- }
2230
- }
2231
-
2232
-
2233
- void Debugger::CallEventCallback(v8::DebugEvent event,
2234
- Handle<Object> exec_state,
2235
- Handle<Object> event_data,
2236
- v8::Debug::ClientData* client_data) {
2237
- if (event_listener_->IsProxy()) {
2238
- CallCEventCallback(event, exec_state, event_data, client_data);
2239
- } else {
2240
- CallJSEventCallback(event, exec_state, event_data);
2241
- }
2242
- }
2243
-
2244
-
2245
- void Debugger::CallCEventCallback(v8::DebugEvent event,
2246
- Handle<Object> exec_state,
2247
- Handle<Object> event_data,
2248
- v8::Debug::ClientData* client_data) {
2249
- Handle<Proxy> callback_obj(Handle<Proxy>::cast(event_listener_));
2250
- v8::Debug::EventCallback2 callback =
2251
- FUNCTION_CAST<v8::Debug::EventCallback2>(callback_obj->proxy());
2252
- EventDetailsImpl event_details(
2253
- event,
2254
- Handle<JSObject>::cast(exec_state),
2255
- Handle<JSObject>::cast(event_data),
2256
- event_listener_data_,
2257
- client_data);
2258
- callback(event_details);
2259
- }
2260
-
2261
-
2262
- void Debugger::CallJSEventCallback(v8::DebugEvent event,
2263
- Handle<Object> exec_state,
2264
- Handle<Object> event_data) {
2265
- ASSERT(event_listener_->IsJSFunction());
2266
- Handle<JSFunction> fun(Handle<JSFunction>::cast(event_listener_));
2267
-
2268
- // Invoke the JavaScript debug event listener.
2269
- const int argc = 4;
2270
- Object** argv[argc] = { Handle<Object>(Smi::FromInt(event)).location(),
2271
- exec_state.location(),
2272
- Handle<Object>::cast(event_data).location(),
2273
- event_listener_data_.location() };
2274
- bool caught_exception = false;
2275
- Execution::TryCall(fun, Top::global(), argc, argv, &caught_exception);
2276
- // Silently ignore exceptions from debug event listeners.
2277
- }
2278
-
2279
-
2280
- Handle<Context> Debugger::GetDebugContext() {
2281
- never_unload_debugger_ = true;
2282
- EnterDebugger debugger;
2283
- return Debug::debug_context();
2284
- }
2285
-
2286
-
2287
- void Debugger::UnloadDebugger() {
2288
- // Make sure that there are no breakpoints left.
2289
- Debug::ClearAllBreakPoints();
2290
-
2291
- // Unload the debugger if feasible.
2292
- if (!never_unload_debugger_) {
2293
- Debug::Unload();
2294
- }
2295
-
2296
- // Clear the flag indicating that the debugger should be unloaded.
2297
- debugger_unload_pending_ = false;
2298
- }
2299
-
2300
-
2301
- void Debugger::NotifyMessageHandler(v8::DebugEvent event,
2302
- Handle<JSObject> exec_state,
2303
- Handle<JSObject> event_data,
2304
- bool auto_continue) {
2305
- HandleScope scope;
2306
-
2307
- if (!Debug::Load()) return;
2308
-
2309
- // Process the individual events.
2310
- bool sendEventMessage = false;
2311
- switch (event) {
2312
- case v8::Break:
2313
- case v8::BreakForCommand:
2314
- sendEventMessage = !auto_continue;
2315
- break;
2316
- case v8::Exception:
2317
- sendEventMessage = true;
2318
- break;
2319
- case v8::BeforeCompile:
2320
- break;
2321
- case v8::AfterCompile:
2322
- sendEventMessage = true;
2323
- break;
2324
- case v8::ScriptCollected:
2325
- sendEventMessage = true;
2326
- break;
2327
- case v8::NewFunction:
2328
- break;
2329
- default:
2330
- UNREACHABLE();
2331
- }
2332
-
2333
- // The debug command interrupt flag might have been set when the command was
2334
- // added. It should be enough to clear the flag only once while we are in the
2335
- // debugger.
2336
- ASSERT(Debug::InDebugger());
2337
- StackGuard::Continue(DEBUGCOMMAND);
2338
-
2339
- // Notify the debugger that a debug event has occurred unless auto continue is
2340
- // active in which case no event is send.
2341
- if (sendEventMessage) {
2342
- MessageImpl message = MessageImpl::NewEvent(
2343
- event,
2344
- auto_continue,
2345
- Handle<JSObject>::cast(exec_state),
2346
- Handle<JSObject>::cast(event_data));
2347
- InvokeMessageHandler(message);
2348
- }
2349
-
2350
- // If auto continue don't make the event cause a break, but process messages
2351
- // in the queue if any. For script collected events don't even process
2352
- // messages in the queue as the execution state might not be what is expected
2353
- // by the client.
2354
- if ((auto_continue && !HasCommands()) || event == v8::ScriptCollected) {
2355
- return;
2356
- }
2357
-
2358
- v8::TryCatch try_catch;
2359
-
2360
- // DebugCommandProcessor goes here.
2361
- v8::Local<v8::Object> cmd_processor;
2362
- {
2363
- v8::Local<v8::Object> api_exec_state =
2364
- v8::Utils::ToLocal(Handle<JSObject>::cast(exec_state));
2365
- v8::Local<v8::String> fun_name =
2366
- v8::String::New("debugCommandProcessor");
2367
- v8::Local<v8::Function> fun =
2368
- v8::Function::Cast(*api_exec_state->Get(fun_name));
2369
-
2370
- v8::Handle<v8::Boolean> running =
2371
- auto_continue ? v8::True() : v8::False();
2372
- static const int kArgc = 1;
2373
- v8::Handle<Value> argv[kArgc] = { running };
2374
- cmd_processor = v8::Object::Cast(*fun->Call(api_exec_state, kArgc, argv));
2375
- if (try_catch.HasCaught()) {
2376
- PrintLn(try_catch.Exception());
2377
- return;
2378
- }
2379
- }
2380
-
2381
- bool running = auto_continue;
2382
-
2383
- // Process requests from the debugger.
2384
- while (true) {
2385
- // Wait for new command in the queue.
2386
- if (Debugger::host_dispatch_handler_) {
2387
- // In case there is a host dispatch - do periodic dispatches.
2388
- if (!command_received_->Wait(host_dispatch_micros_)) {
2389
- // Timout expired, do the dispatch.
2390
- Debugger::host_dispatch_handler_();
2391
- continue;
2392
- }
2393
- } else {
2394
- // In case there is no host dispatch - just wait.
2395
- command_received_->Wait();
2396
- }
2397
-
2398
- // Get the command from the queue.
2399
- CommandMessage command = command_queue_.Get();
2400
- Logger::DebugTag("Got request from command queue, in interactive loop.");
2401
- if (!Debugger::IsDebuggerActive()) {
2402
- // Delete command text and user data.
2403
- command.Dispose();
2404
- return;
2405
- }
2406
-
2407
- // Invoke JavaScript to process the debug request.
2408
- v8::Local<v8::String> fun_name;
2409
- v8::Local<v8::Function> fun;
2410
- v8::Local<v8::Value> request;
2411
- v8::TryCatch try_catch;
2412
- fun_name = v8::String::New("processDebugRequest");
2413
- fun = v8::Function::Cast(*cmd_processor->Get(fun_name));
2414
-
2415
- request = v8::String::New(command.text().start(),
2416
- command.text().length());
2417
- static const int kArgc = 1;
2418
- v8::Handle<Value> argv[kArgc] = { request };
2419
- v8::Local<v8::Value> response_val = fun->Call(cmd_processor, kArgc, argv);
2420
-
2421
- // Get the response.
2422
- v8::Local<v8::String> response;
2423
- if (!try_catch.HasCaught()) {
2424
- // Get response string.
2425
- if (!response_val->IsUndefined()) {
2426
- response = v8::String::Cast(*response_val);
2427
- } else {
2428
- response = v8::String::New("");
2429
- }
2430
-
2431
- // Log the JSON request/response.
2432
- if (FLAG_trace_debug_json) {
2433
- PrintLn(request);
2434
- PrintLn(response);
2435
- }
2436
-
2437
- // Get the running state.
2438
- fun_name = v8::String::New("isRunning");
2439
- fun = v8::Function::Cast(*cmd_processor->Get(fun_name));
2440
- static const int kArgc = 1;
2441
- v8::Handle<Value> argv[kArgc] = { response };
2442
- v8::Local<v8::Value> running_val = fun->Call(cmd_processor, kArgc, argv);
2443
- if (!try_catch.HasCaught()) {
2444
- running = running_val->ToBoolean()->Value();
2445
- }
2446
- } else {
2447
- // In case of failure the result text is the exception text.
2448
- response = try_catch.Exception()->ToString();
2449
- }
2450
-
2451
- // Return the result.
2452
- MessageImpl message = MessageImpl::NewResponse(
2453
- event,
2454
- running,
2455
- Handle<JSObject>::cast(exec_state),
2456
- Handle<JSObject>::cast(event_data),
2457
- Handle<String>(Utils::OpenHandle(*response)),
2458
- command.client_data());
2459
- InvokeMessageHandler(message);
2460
- command.Dispose();
2461
-
2462
- // Return from debug event processing if either the VM is put into the
2463
- // runnning state (through a continue command) or auto continue is active
2464
- // and there are no more commands queued.
2465
- if (running && !HasCommands()) {
2466
- return;
2467
- }
2468
- }
2469
- }
2470
-
2471
-
2472
- void Debugger::SetEventListener(Handle<Object> callback,
2473
- Handle<Object> data) {
2474
- HandleScope scope;
2475
-
2476
- // Clear the global handles for the event listener and the event listener data
2477
- // object.
2478
- if (!event_listener_.is_null()) {
2479
- GlobalHandles::Destroy(
2480
- reinterpret_cast<Object**>(event_listener_.location()));
2481
- event_listener_ = Handle<Object>();
2482
- }
2483
- if (!event_listener_data_.is_null()) {
2484
- GlobalHandles::Destroy(
2485
- reinterpret_cast<Object**>(event_listener_data_.location()));
2486
- event_listener_data_ = Handle<Object>();
2487
- }
2488
-
2489
- // If there is a new debug event listener register it together with its data
2490
- // object.
2491
- if (!callback->IsUndefined() && !callback->IsNull()) {
2492
- event_listener_ = Handle<Object>::cast(GlobalHandles::Create(*callback));
2493
- if (data.is_null()) {
2494
- data = Factory::undefined_value();
2495
- }
2496
- event_listener_data_ = Handle<Object>::cast(GlobalHandles::Create(*data));
2497
- }
2498
-
2499
- ListenersChanged();
2500
- }
2501
-
2502
-
2503
- void Debugger::SetMessageHandler(v8::Debug::MessageHandler2 handler) {
2504
- ScopedLock with(debugger_access_);
2505
-
2506
- message_handler_ = handler;
2507
- ListenersChanged();
2508
- if (handler == NULL) {
2509
- // Send an empty command to the debugger if in a break to make JavaScript
2510
- // run again if the debugger is closed.
2511
- if (Debug::InDebugger()) {
2512
- ProcessCommand(Vector<const uint16_t>::empty());
2513
- }
2514
- }
2515
- }
2516
-
2517
-
2518
- void Debugger::ListenersChanged() {
2519
- if (IsDebuggerActive()) {
2520
- // Disable the compilation cache when the debugger is active.
2521
- CompilationCache::Disable();
2522
- debugger_unload_pending_ = false;
2523
- } else {
2524
- CompilationCache::Enable();
2525
- // Unload the debugger if event listener and message handler cleared.
2526
- // Schedule this for later, because we may be in non-V8 thread.
2527
- debugger_unload_pending_ = true;
2528
- }
2529
- }
2530
-
2531
-
2532
- void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler,
2533
- int period) {
2534
- host_dispatch_handler_ = handler;
2535
- host_dispatch_micros_ = period * 1000;
2536
- }
2537
-
2538
-
2539
- void Debugger::SetDebugMessageDispatchHandler(
2540
- v8::Debug::DebugMessageDispatchHandler handler, bool provide_locker) {
2541
- ScopedLock with(dispatch_handler_access_);
2542
- debug_message_dispatch_handler_ = handler;
2543
-
2544
- if (provide_locker && message_dispatch_helper_thread_ == NULL) {
2545
- message_dispatch_helper_thread_ = new MessageDispatchHelperThread;
2546
- message_dispatch_helper_thread_->Start();
2547
- }
2548
- }
2549
-
2550
-
2551
- // Calls the registered debug message handler. This callback is part of the
2552
- // public API.
2553
- void Debugger::InvokeMessageHandler(MessageImpl message) {
2554
- ScopedLock with(debugger_access_);
2555
-
2556
- if (message_handler_ != NULL) {
2557
- message_handler_(message);
2558
- }
2559
- }
2560
-
2561
-
2562
- // Puts a command coming from the public API on the queue. Creates
2563
- // a copy of the command string managed by the debugger. Up to this
2564
- // point, the command data was managed by the API client. Called
2565
- // by the API client thread.
2566
- void Debugger::ProcessCommand(Vector<const uint16_t> command,
2567
- v8::Debug::ClientData* client_data) {
2568
- // Need to cast away const.
2569
- CommandMessage message = CommandMessage::New(
2570
- Vector<uint16_t>(const_cast<uint16_t*>(command.start()),
2571
- command.length()),
2572
- client_data);
2573
- Logger::DebugTag("Put command on command_queue.");
2574
- command_queue_.Put(message);
2575
- command_received_->Signal();
2576
-
2577
- // Set the debug command break flag to have the command processed.
2578
- if (!Debug::InDebugger()) {
2579
- StackGuard::DebugCommand();
2580
- }
2581
-
2582
- MessageDispatchHelperThread* dispatch_thread;
2583
- {
2584
- ScopedLock with(dispatch_handler_access_);
2585
- dispatch_thread = message_dispatch_helper_thread_;
2586
- }
2587
-
2588
- if (dispatch_thread == NULL) {
2589
- CallMessageDispatchHandler();
2590
- } else {
2591
- dispatch_thread->Schedule();
2592
- }
2593
- }
2594
-
2595
-
2596
- bool Debugger::HasCommands() {
2597
- return !command_queue_.IsEmpty();
2598
- }
2599
-
2600
-
2601
- void Debugger::EnqueueDebugCommand(v8::Debug::ClientData* client_data) {
2602
- CommandMessage message = CommandMessage::New(Vector<uint16_t>(), client_data);
2603
- event_command_queue_.Put(message);
2604
-
2605
- // Set the debug command break flag to have the command processed.
2606
- if (!Debug::InDebugger()) {
2607
- StackGuard::DebugCommand();
2608
- }
2609
- }
2610
-
2611
-
2612
- bool Debugger::IsDebuggerActive() {
2613
- ScopedLock with(debugger_access_);
2614
-
2615
- return message_handler_ != NULL || !event_listener_.is_null();
2616
- }
2617
-
2618
-
2619
- Handle<Object> Debugger::Call(Handle<JSFunction> fun,
2620
- Handle<Object> data,
2621
- bool* pending_exception) {
2622
- // When calling functions in the debugger prevent it from beeing unloaded.
2623
- Debugger::never_unload_debugger_ = true;
2624
-
2625
- // Enter the debugger.
2626
- EnterDebugger debugger;
2627
- if (debugger.FailedToEnter()) {
2628
- return Factory::undefined_value();
2629
- }
2630
-
2631
- // Create the execution state.
2632
- bool caught_exception = false;
2633
- Handle<Object> exec_state = MakeExecutionState(&caught_exception);
2634
- if (caught_exception) {
2635
- return Factory::undefined_value();
2636
- }
2637
-
2638
- static const int kArgc = 2;
2639
- Object** argv[kArgc] = { exec_state.location(), data.location() };
2640
- Handle<Object> result = Execution::Call(
2641
- fun,
2642
- Handle<Object>(Debug::debug_context_->global_proxy()),
2643
- kArgc,
2644
- argv,
2645
- pending_exception);
2646
- return result;
2647
- }
2648
-
2649
-
2650
- static void StubMessageHandler2(const v8::Debug::Message& message) {
2651
- // Simply ignore message.
2652
- }
2653
-
2654
-
2655
- bool Debugger::StartAgent(const char* name, int port,
2656
- bool wait_for_connection) {
2657
- if (wait_for_connection) {
2658
- // Suspend V8 if it is already running or set V8 to suspend whenever
2659
- // it starts.
2660
- // Provide stub message handler; V8 auto-continues each suspend
2661
- // when there is no message handler; we doesn't need it.
2662
- // Once become suspended, V8 will stay so indefinitely long, until remote
2663
- // debugger connects and issues "continue" command.
2664
- Debugger::message_handler_ = StubMessageHandler2;
2665
- v8::Debug::DebugBreak();
2666
- }
2667
-
2668
- if (Socket::Setup()) {
2669
- agent_ = new DebuggerAgent(name, port);
2670
- agent_->Start();
2671
- return true;
2672
- }
2673
-
2674
- return false;
2675
- }
2676
-
2677
-
2678
- void Debugger::StopAgent() {
2679
- if (agent_ != NULL) {
2680
- agent_->Shutdown();
2681
- agent_->Join();
2682
- delete agent_;
2683
- agent_ = NULL;
2684
- }
2685
- }
2686
-
2687
-
2688
- void Debugger::WaitForAgent() {
2689
- if (agent_ != NULL)
2690
- agent_->WaitUntilListening();
2691
- }
2692
-
2693
-
2694
- void Debugger::CallMessageDispatchHandler() {
2695
- v8::Debug::DebugMessageDispatchHandler handler;
2696
- {
2697
- ScopedLock with(dispatch_handler_access_);
2698
- handler = Debugger::debug_message_dispatch_handler_;
2699
- }
2700
- if (handler != NULL) {
2701
- handler();
2702
- }
2703
- }
2704
-
2705
-
2706
- MessageImpl MessageImpl::NewEvent(DebugEvent event,
2707
- bool running,
2708
- Handle<JSObject> exec_state,
2709
- Handle<JSObject> event_data) {
2710
- MessageImpl message(true, event, running,
2711
- exec_state, event_data, Handle<String>(), NULL);
2712
- return message;
2713
- }
2714
-
2715
-
2716
- MessageImpl MessageImpl::NewResponse(DebugEvent event,
2717
- bool running,
2718
- Handle<JSObject> exec_state,
2719
- Handle<JSObject> event_data,
2720
- Handle<String> response_json,
2721
- v8::Debug::ClientData* client_data) {
2722
- MessageImpl message(false, event, running,
2723
- exec_state, event_data, response_json, client_data);
2724
- return message;
2725
- }
2726
-
2727
-
2728
- MessageImpl::MessageImpl(bool is_event,
2729
- DebugEvent event,
2730
- bool running,
2731
- Handle<JSObject> exec_state,
2732
- Handle<JSObject> event_data,
2733
- Handle<String> response_json,
2734
- v8::Debug::ClientData* client_data)
2735
- : is_event_(is_event),
2736
- event_(event),
2737
- running_(running),
2738
- exec_state_(exec_state),
2739
- event_data_(event_data),
2740
- response_json_(response_json),
2741
- client_data_(client_data) {}
2742
-
2743
-
2744
- bool MessageImpl::IsEvent() const {
2745
- return is_event_;
2746
- }
2747
-
2748
-
2749
- bool MessageImpl::IsResponse() const {
2750
- return !is_event_;
2751
- }
2752
-
2753
-
2754
- DebugEvent MessageImpl::GetEvent() const {
2755
- return event_;
2756
- }
2757
-
2758
-
2759
- bool MessageImpl::WillStartRunning() const {
2760
- return running_;
2761
- }
2762
-
2763
-
2764
- v8::Handle<v8::Object> MessageImpl::GetExecutionState() const {
2765
- return v8::Utils::ToLocal(exec_state_);
2766
- }
2767
-
2768
-
2769
- v8::Handle<v8::Object> MessageImpl::GetEventData() const {
2770
- return v8::Utils::ToLocal(event_data_);
2771
- }
2772
-
2773
-
2774
- v8::Handle<v8::String> MessageImpl::GetJSON() const {
2775
- v8::HandleScope scope;
2776
-
2777
- if (IsEvent()) {
2778
- // Call toJSONProtocol on the debug event object.
2779
- Handle<Object> fun = GetProperty(event_data_, "toJSONProtocol");
2780
- if (!fun->IsJSFunction()) {
2781
- return v8::Handle<v8::String>();
2782
- }
2783
- bool caught_exception;
2784
- Handle<Object> json = Execution::TryCall(Handle<JSFunction>::cast(fun),
2785
- event_data_,
2786
- 0, NULL, &caught_exception);
2787
- if (caught_exception || !json->IsString()) {
2788
- return v8::Handle<v8::String>();
2789
- }
2790
- return scope.Close(v8::Utils::ToLocal(Handle<String>::cast(json)));
2791
- } else {
2792
- return v8::Utils::ToLocal(response_json_);
2793
- }
2794
- }
2795
-
2796
-
2797
- v8::Handle<v8::Context> MessageImpl::GetEventContext() const {
2798
- v8::Handle<v8::Context> context = GetDebugEventContext();
2799
- // Top::context() may be NULL when "script collected" event occures.
2800
- ASSERT(!context.IsEmpty() || event_ == v8::ScriptCollected);
2801
- return GetDebugEventContext();
2802
- }
2803
-
2804
-
2805
- v8::Debug::ClientData* MessageImpl::GetClientData() const {
2806
- return client_data_;
2807
- }
2808
-
2809
-
2810
- EventDetailsImpl::EventDetailsImpl(DebugEvent event,
2811
- Handle<JSObject> exec_state,
2812
- Handle<JSObject> event_data,
2813
- Handle<Object> callback_data,
2814
- v8::Debug::ClientData* client_data)
2815
- : event_(event),
2816
- exec_state_(exec_state),
2817
- event_data_(event_data),
2818
- callback_data_(callback_data),
2819
- client_data_(client_data) {}
2820
-
2821
-
2822
- DebugEvent EventDetailsImpl::GetEvent() const {
2823
- return event_;
2824
- }
2825
-
2826
-
2827
- v8::Handle<v8::Object> EventDetailsImpl::GetExecutionState() const {
2828
- return v8::Utils::ToLocal(exec_state_);
2829
- }
2830
-
2831
-
2832
- v8::Handle<v8::Object> EventDetailsImpl::GetEventData() const {
2833
- return v8::Utils::ToLocal(event_data_);
2834
- }
2835
-
2836
-
2837
- v8::Handle<v8::Context> EventDetailsImpl::GetEventContext() const {
2838
- return GetDebugEventContext();
2839
- }
2840
-
2841
-
2842
- v8::Handle<v8::Value> EventDetailsImpl::GetCallbackData() const {
2843
- return v8::Utils::ToLocal(callback_data_);
2844
- }
2845
-
2846
-
2847
- v8::Debug::ClientData* EventDetailsImpl::GetClientData() const {
2848
- return client_data_;
2849
- }
2850
-
2851
-
2852
- CommandMessage::CommandMessage() : text_(Vector<uint16_t>::empty()),
2853
- client_data_(NULL) {
2854
- }
2855
-
2856
-
2857
- CommandMessage::CommandMessage(const Vector<uint16_t>& text,
2858
- v8::Debug::ClientData* data)
2859
- : text_(text),
2860
- client_data_(data) {
2861
- }
2862
-
2863
-
2864
- CommandMessage::~CommandMessage() {
2865
- }
2866
-
2867
-
2868
- void CommandMessage::Dispose() {
2869
- text_.Dispose();
2870
- delete client_data_;
2871
- client_data_ = NULL;
2872
- }
2873
-
2874
-
2875
- CommandMessage CommandMessage::New(const Vector<uint16_t>& command,
2876
- v8::Debug::ClientData* data) {
2877
- return CommandMessage(command.Clone(), data);
2878
- }
2879
-
2880
-
2881
- CommandMessageQueue::CommandMessageQueue(int size) : start_(0), end_(0),
2882
- size_(size) {
2883
- messages_ = NewArray<CommandMessage>(size);
2884
- }
2885
-
2886
-
2887
- CommandMessageQueue::~CommandMessageQueue() {
2888
- while (!IsEmpty()) {
2889
- CommandMessage m = Get();
2890
- m.Dispose();
2891
- }
2892
- DeleteArray(messages_);
2893
- }
2894
-
2895
-
2896
- CommandMessage CommandMessageQueue::Get() {
2897
- ASSERT(!IsEmpty());
2898
- int result = start_;
2899
- start_ = (start_ + 1) % size_;
2900
- return messages_[result];
2901
- }
2902
-
2903
-
2904
- void CommandMessageQueue::Put(const CommandMessage& message) {
2905
- if ((end_ + 1) % size_ == start_) {
2906
- Expand();
2907
- }
2908
- messages_[end_] = message;
2909
- end_ = (end_ + 1) % size_;
2910
- }
2911
-
2912
-
2913
- void CommandMessageQueue::Expand() {
2914
- CommandMessageQueue new_queue(size_ * 2);
2915
- while (!IsEmpty()) {
2916
- new_queue.Put(Get());
2917
- }
2918
- CommandMessage* array_to_free = messages_;
2919
- *this = new_queue;
2920
- new_queue.messages_ = array_to_free;
2921
- // Make the new_queue empty so that it doesn't call Dispose on any messages.
2922
- new_queue.start_ = new_queue.end_;
2923
- // Automatic destructor called on new_queue, freeing array_to_free.
2924
- }
2925
-
2926
-
2927
- LockingCommandMessageQueue::LockingCommandMessageQueue(int size)
2928
- : queue_(size) {
2929
- lock_ = OS::CreateMutex();
2930
- }
2931
-
2932
-
2933
- LockingCommandMessageQueue::~LockingCommandMessageQueue() {
2934
- delete lock_;
2935
- }
2936
-
2937
-
2938
- bool LockingCommandMessageQueue::IsEmpty() const {
2939
- ScopedLock sl(lock_);
2940
- return queue_.IsEmpty();
2941
- }
2942
-
2943
-
2944
- CommandMessage LockingCommandMessageQueue::Get() {
2945
- ScopedLock sl(lock_);
2946
- CommandMessage result = queue_.Get();
2947
- Logger::DebugEvent("Get", result.text());
2948
- return result;
2949
- }
2950
-
2951
-
2952
- void LockingCommandMessageQueue::Put(const CommandMessage& message) {
2953
- ScopedLock sl(lock_);
2954
- queue_.Put(message);
2955
- Logger::DebugEvent("Put", message.text());
2956
- }
2957
-
2958
-
2959
- void LockingCommandMessageQueue::Clear() {
2960
- ScopedLock sl(lock_);
2961
- queue_.Clear();
2962
- }
2963
-
2964
-
2965
- MessageDispatchHelperThread::MessageDispatchHelperThread()
2966
- : sem_(OS::CreateSemaphore(0)), mutex_(OS::CreateMutex()),
2967
- already_signalled_(false) {
2968
- }
2969
-
2970
-
2971
- MessageDispatchHelperThread::~MessageDispatchHelperThread() {
2972
- delete mutex_;
2973
- delete sem_;
2974
- }
2975
-
2976
-
2977
- void MessageDispatchHelperThread::Schedule() {
2978
- {
2979
- ScopedLock lock(mutex_);
2980
- if (already_signalled_) {
2981
- return;
2982
- }
2983
- already_signalled_ = true;
2984
- }
2985
- sem_->Signal();
2986
- }
2987
-
2988
-
2989
- void MessageDispatchHelperThread::Run() {
2990
- while (true) {
2991
- sem_->Wait();
2992
- {
2993
- ScopedLock lock(mutex_);
2994
- already_signalled_ = false;
2995
- }
2996
- {
2997
- Locker locker;
2998
- Debugger::CallMessageDispatchHandler();
2999
- }
3000
- }
3001
- }
3002
-
3003
- #endif // ENABLE_DEBUGGER_SUPPORT
3004
-
3005
- } } // namespace v8::internal