therubyracer-heroku 0.8.1.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1966) hide show
  1. data/.gitignore +13 -0
  2. data/.gitmodules +3 -0
  3. data/.rspec +1 -0
  4. data/Changelog.md +165 -0
  5. data/Gemfile +1 -0
  6. data/README.md +155 -0
  7. data/Rakefile +34 -0
  8. data/bin/therubyracer +13 -0
  9. data/bin/v8 +8 -0
  10. data/ext/v8/extconf.rb +25 -0
  11. data/ext/v8/rr.cpp +175 -0
  12. data/ext/v8/rr.h +36 -0
  13. data/ext/v8/upstream/2.3.3/.gitignore +26 -0
  14. data/ext/v8/upstream/2.3.3/AUTHORS +31 -0
  15. data/ext/v8/upstream/2.3.3/ChangeLog +1916 -0
  16. data/ext/v8/upstream/2.3.3/LICENSE +55 -0
  17. data/ext/v8/upstream/2.3.3/SConstruct +1154 -0
  18. data/ext/v8/upstream/2.3.3/include/v8-debug.h +381 -0
  19. data/ext/v8/upstream/2.3.3/include/v8-profiler.h +353 -0
  20. data/ext/v8/upstream/2.3.3/include/v8.h +3616 -0
  21. data/ext/v8/upstream/2.3.3/src/SConscript +330 -0
  22. data/ext/v8/upstream/2.3.3/src/accessors.cc +661 -0
  23. data/ext/v8/upstream/2.3.3/src/accessors.h +114 -0
  24. data/ext/v8/upstream/2.3.3/src/allocation.cc +198 -0
  25. data/ext/v8/upstream/2.3.3/src/allocation.h +169 -0
  26. data/ext/v8/upstream/2.3.3/src/api.cc +4795 -0
  27. data/ext/v8/upstream/2.3.3/src/api.h +485 -0
  28. data/ext/v8/upstream/2.3.3/src/apinatives.js +110 -0
  29. data/ext/v8/upstream/2.3.3/src/apiutils.h +69 -0
  30. data/ext/v8/upstream/2.3.3/src/arguments.h +96 -0
  31. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm-inl.h +305 -0
  32. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.cc +2580 -0
  33. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.h +1275 -0
  34. data/ext/v8/upstream/2.3.3/src/arm/builtins-arm.cc +1320 -0
  35. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
  36. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.cc +11398 -0
  37. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.h +1102 -0
  38. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.cc +154 -0
  39. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.h +388 -0
  40. data/ext/v8/upstream/2.3.3/src/arm/cpu-arm.cc +142 -0
  41. data/ext/v8/upstream/2.3.3/src/arm/debug-arm.cc +309 -0
  42. data/ext/v8/upstream/2.3.3/src/arm/disasm-arm.cc +1459 -0
  43. data/ext/v8/upstream/2.3.3/src/arm/fast-codegen-arm.cc +241 -0
  44. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.cc +123 -0
  45. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.h +162 -0
  46. data/ext/v8/upstream/2.3.3/src/arm/full-codegen-arm.cc +3178 -0
  47. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
  48. data/ext/v8/upstream/2.3.3/src/arm/jump-target-arm.cc +164 -0
  49. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.cc +1892 -0
  50. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.h +727 -0
  51. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.cc +1261 -0
  52. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.h +266 -0
  53. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm-inl.h +100 -0
  54. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm.cc +63 -0
  55. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm.h +44 -0
  56. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.cc +2822 -0
  57. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.h +361 -0
  58. data/ext/v8/upstream/2.3.3/src/arm/stub-cache-arm.cc +2387 -0
  59. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
  60. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.cc +834 -0
  61. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.h +519 -0
  62. data/ext/v8/upstream/2.3.3/src/array.js +1127 -0
  63. data/ext/v8/upstream/2.3.3/src/assembler.cc +801 -0
  64. data/ext/v8/upstream/2.3.3/src/assembler.h +573 -0
  65. data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
  66. data/ext/v8/upstream/2.3.3/src/ast.cc +1152 -0
  67. data/ext/v8/upstream/2.3.3/src/ast.h +2106 -0
  68. data/ext/v8/upstream/2.3.3/src/bootstrapper.cc +1819 -0
  69. data/ext/v8/upstream/2.3.3/src/bootstrapper.h +118 -0
  70. data/ext/v8/upstream/2.3.3/src/builtins.cc +1529 -0
  71. data/ext/v8/upstream/2.3.3/src/builtins.h +263 -0
  72. data/ext/v8/upstream/2.3.3/src/bytecodes-irregexp.h +104 -0
  73. data/ext/v8/upstream/2.3.3/src/cached-powers.h +119 -0
  74. data/ext/v8/upstream/2.3.3/src/char-predicates-inl.h +86 -0
  75. data/ext/v8/upstream/2.3.3/src/char-predicates.h +65 -0
  76. data/ext/v8/upstream/2.3.3/src/checks.cc +100 -0
  77. data/ext/v8/upstream/2.3.3/src/checks.h +310 -0
  78. data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
  79. data/ext/v8/upstream/2.3.3/src/circular-queue.cc +121 -0
  80. data/ext/v8/upstream/2.3.3/src/circular-queue.h +103 -0
  81. data/ext/v8/upstream/2.3.3/src/code-stubs.cc +177 -0
  82. data/ext/v8/upstream/2.3.3/src/code-stubs.h +177 -0
  83. data/ext/v8/upstream/2.3.3/src/code.h +68 -0
  84. data/ext/v8/upstream/2.3.3/src/codegen-inl.h +60 -0
  85. data/ext/v8/upstream/2.3.3/src/codegen.cc +516 -0
  86. data/ext/v8/upstream/2.3.3/src/codegen.h +897 -0
  87. data/ext/v8/upstream/2.3.3/src/compilation-cache.cc +562 -0
  88. data/ext/v8/upstream/2.3.3/src/compilation-cache.h +102 -0
  89. data/ext/v8/upstream/2.3.3/src/compiler.cc +654 -0
  90. data/ext/v8/upstream/2.3.3/src/compiler.h +299 -0
  91. data/ext/v8/upstream/2.3.3/src/contexts.cc +256 -0
  92. data/ext/v8/upstream/2.3.3/src/contexts.h +342 -0
  93. data/ext/v8/upstream/2.3.3/src/conversions-inl.h +110 -0
  94. data/ext/v8/upstream/2.3.3/src/conversions.cc +1119 -0
  95. data/ext/v8/upstream/2.3.3/src/conversions.h +123 -0
  96. data/ext/v8/upstream/2.3.3/src/counters.cc +78 -0
  97. data/ext/v8/upstream/2.3.3/src/counters.h +239 -0
  98. data/ext/v8/upstream/2.3.3/src/cpu-profiler-inl.h +100 -0
  99. data/ext/v8/upstream/2.3.3/src/cpu-profiler.cc +538 -0
  100. data/ext/v8/upstream/2.3.3/src/cpu-profiler.h +285 -0
  101. data/ext/v8/upstream/2.3.3/src/cpu.h +65 -0
  102. data/ext/v8/upstream/2.3.3/src/d8-debug.cc +356 -0
  103. data/ext/v8/upstream/2.3.3/src/d8-debug.h +155 -0
  104. data/ext/v8/upstream/2.3.3/src/d8-posix.cc +693 -0
  105. data/ext/v8/upstream/2.3.3/src/d8-readline.cc +128 -0
  106. data/ext/v8/upstream/2.3.3/src/d8-windows.cc +42 -0
  107. data/ext/v8/upstream/2.3.3/src/d8.cc +783 -0
  108. data/ext/v8/upstream/2.3.3/src/d8.h +227 -0
  109. data/ext/v8/upstream/2.3.3/src/d8.js +1683 -0
  110. data/ext/v8/upstream/2.3.3/src/data-flow.cc +758 -0
  111. data/ext/v8/upstream/2.3.3/src/data-flow.h +278 -0
  112. data/ext/v8/upstream/2.3.3/src/date.js +1059 -0
  113. data/ext/v8/upstream/2.3.3/src/dateparser-inl.h +123 -0
  114. data/ext/v8/upstream/2.3.3/src/dateparser.cc +178 -0
  115. data/ext/v8/upstream/2.3.3/src/dateparser.h +244 -0
  116. data/ext/v8/upstream/2.3.3/src/debug-agent.cc +427 -0
  117. data/ext/v8/upstream/2.3.3/src/debug-agent.h +129 -0
  118. data/ext/v8/upstream/2.3.3/src/debug-debugger.js +2227 -0
  119. data/ext/v8/upstream/2.3.3/src/debug.cc +3005 -0
  120. data/ext/v8/upstream/2.3.3/src/debug.h +993 -0
  121. data/ext/v8/upstream/2.3.3/src/disasm.h +77 -0
  122. data/ext/v8/upstream/2.3.3/src/disassembler.cc +312 -0
  123. data/ext/v8/upstream/2.3.3/src/disassembler.h +56 -0
  124. data/ext/v8/upstream/2.3.3/src/diy-fp.cc +58 -0
  125. data/ext/v8/upstream/2.3.3/src/diy-fp.h +117 -0
  126. data/ext/v8/upstream/2.3.3/src/double.h +169 -0
  127. data/ext/v8/upstream/2.3.3/src/dtoa-config.c +92 -0
  128. data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
  129. data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
  130. data/ext/v8/upstream/2.3.3/src/execution.cc +809 -0
  131. data/ext/v8/upstream/2.3.3/src/execution.h +336 -0
  132. data/ext/v8/upstream/2.3.3/src/factory.cc +1003 -0
  133. data/ext/v8/upstream/2.3.3/src/factory.h +410 -0
  134. data/ext/v8/upstream/2.3.3/src/fast-codegen.cc +746 -0
  135. data/ext/v8/upstream/2.3.3/src/fast-codegen.h +161 -0
  136. data/ext/v8/upstream/2.3.3/src/fast-dtoa.cc +505 -0
  137. data/ext/v8/upstream/2.3.3/src/fast-dtoa.h +58 -0
  138. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
  139. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.h +55 -0
  140. data/ext/v8/upstream/2.3.3/src/flag-definitions.h +455 -0
  141. data/ext/v8/upstream/2.3.3/src/flags.cc +551 -0
  142. data/ext/v8/upstream/2.3.3/src/flags.h +81 -0
  143. data/ext/v8/upstream/2.3.3/src/flow-graph.cc +763 -0
  144. data/ext/v8/upstream/2.3.3/src/flow-graph.h +180 -0
  145. data/ext/v8/upstream/2.3.3/src/frame-element.cc +42 -0
  146. data/ext/v8/upstream/2.3.3/src/frame-element.h +273 -0
  147. data/ext/v8/upstream/2.3.3/src/frames-inl.h +217 -0
  148. data/ext/v8/upstream/2.3.3/src/frames.cc +826 -0
  149. data/ext/v8/upstream/2.3.3/src/frames.h +682 -0
  150. data/ext/v8/upstream/2.3.3/src/full-codegen.cc +1443 -0
  151. data/ext/v8/upstream/2.3.3/src/full-codegen.h +548 -0
  152. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.cc +76 -0
  153. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.h +135 -0
  154. data/ext/v8/upstream/2.3.3/src/global-handles.cc +520 -0
  155. data/ext/v8/upstream/2.3.3/src/global-handles.h +180 -0
  156. data/ext/v8/upstream/2.3.3/src/globals.h +669 -0
  157. data/ext/v8/upstream/2.3.3/src/handles-inl.h +76 -0
  158. data/ext/v8/upstream/2.3.3/src/handles.cc +825 -0
  159. data/ext/v8/upstream/2.3.3/src/handles.h +393 -0
  160. data/ext/v8/upstream/2.3.3/src/hashmap.cc +226 -0
  161. data/ext/v8/upstream/2.3.3/src/hashmap.h +120 -0
  162. data/ext/v8/upstream/2.3.3/src/heap-inl.h +493 -0
  163. data/ext/v8/upstream/2.3.3/src/heap-profiler.cc +779 -0
  164. data/ext/v8/upstream/2.3.3/src/heap-profiler.h +323 -0
  165. data/ext/v8/upstream/2.3.3/src/heap.cc +4994 -0
  166. data/ext/v8/upstream/2.3.3/src/heap.h +1984 -0
  167. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32-inl.h +360 -0
  168. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.cc +2600 -0
  169. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.h +969 -0
  170. data/ext/v8/upstream/2.3.3/src/ia32/builtins-ia32.cc +1261 -0
  171. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32-inl.h +46 -0
  172. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.cc +13968 -0
  173. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.h +1097 -0
  174. data/ext/v8/upstream/2.3.3/src/ia32/cpu-ia32.cc +83 -0
  175. data/ext/v8/upstream/2.3.3/src/ia32/debug-ia32.cc +309 -0
  176. data/ext/v8/upstream/2.3.3/src/ia32/disasm-ia32.cc +1471 -0
  177. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.cc +954 -0
  178. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.h +155 -0
  179. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.cc +115 -0
  180. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.h +135 -0
  181. data/ext/v8/upstream/2.3.3/src/ia32/full-codegen-ia32.cc +3281 -0
  182. data/ext/v8/upstream/2.3.3/src/ia32/ic-ia32.cc +1966 -0
  183. data/ext/v8/upstream/2.3.3/src/ia32/jump-target-ia32.cc +437 -0
  184. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.cc +1610 -0
  185. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.h +610 -0
  186. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.cc +1247 -0
  187. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.h +214 -0
  188. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32-inl.h +82 -0
  189. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32.cc +157 -0
  190. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32.h +43 -0
  191. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.cc +30 -0
  192. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.h +62 -0
  193. data/ext/v8/upstream/2.3.3/src/ia32/stub-cache-ia32.cc +2750 -0
  194. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.cc +1334 -0
  195. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.h +627 -0
  196. data/ext/v8/upstream/2.3.3/src/ic-inl.h +120 -0
  197. data/ext/v8/upstream/2.3.3/src/ic.cc +1827 -0
  198. data/ext/v8/upstream/2.3.3/src/ic.h +515 -0
  199. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.cc +646 -0
  200. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.h +48 -0
  201. data/ext/v8/upstream/2.3.3/src/json.js +268 -0
  202. data/ext/v8/upstream/2.3.3/src/jsregexp.cc +5283 -0
  203. data/ext/v8/upstream/2.3.3/src/jsregexp.h +1463 -0
  204. data/ext/v8/upstream/2.3.3/src/jump-target-heavy-inl.h +51 -0
  205. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.cc +429 -0
  206. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.h +244 -0
  207. data/ext/v8/upstream/2.3.3/src/jump-target-inl.h +48 -0
  208. data/ext/v8/upstream/2.3.3/src/jump-target-light-inl.h +56 -0
  209. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
  210. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
  211. data/ext/v8/upstream/2.3.3/src/jump-target.cc +91 -0
  212. data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
  213. data/ext/v8/upstream/2.3.3/src/list-inl.h +166 -0
  214. data/ext/v8/upstream/2.3.3/src/list.h +159 -0
  215. data/ext/v8/upstream/2.3.3/src/liveedit-debugger.js +1057 -0
  216. data/ext/v8/upstream/2.3.3/src/liveedit.cc +1480 -0
  217. data/ext/v8/upstream/2.3.3/src/liveedit.h +170 -0
  218. data/ext/v8/upstream/2.3.3/src/log-inl.h +59 -0
  219. data/ext/v8/upstream/2.3.3/src/log-utils.cc +497 -0
  220. data/ext/v8/upstream/2.3.3/src/log-utils.h +289 -0
  221. data/ext/v8/upstream/2.3.3/src/log.cc +1561 -0
  222. data/ext/v8/upstream/2.3.3/src/log.h +384 -0
  223. data/ext/v8/upstream/2.3.3/src/macro-assembler.h +86 -0
  224. data/ext/v8/upstream/2.3.3/src/macros.py +177 -0
  225. data/ext/v8/upstream/2.3.3/src/mark-compact.cc +2330 -0
  226. data/ext/v8/upstream/2.3.3/src/mark-compact.h +451 -0
  227. data/ext/v8/upstream/2.3.3/src/math.js +264 -0
  228. data/ext/v8/upstream/2.3.3/src/memory.h +74 -0
  229. data/ext/v8/upstream/2.3.3/src/messages.cc +183 -0
  230. data/ext/v8/upstream/2.3.3/src/messages.h +113 -0
  231. data/ext/v8/upstream/2.3.3/src/messages.js +982 -0
  232. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips-inl.h +215 -0
  233. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.cc +1219 -0
  234. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.h +668 -0
  235. data/ext/v8/upstream/2.3.3/src/mips/builtins-mips.cc +205 -0
  236. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips-inl.h +70 -0
  237. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.cc +1437 -0
  238. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.h +434 -0
  239. data/ext/v8/upstream/2.3.3/src/mips/constants-mips.cc +328 -0
  240. data/ext/v8/upstream/2.3.3/src/mips/constants-mips.h +525 -0
  241. data/ext/v8/upstream/2.3.3/src/mips/cpu-mips.cc +73 -0
  242. data/ext/v8/upstream/2.3.3/src/mips/debug-mips.cc +131 -0
  243. data/ext/v8/upstream/2.3.3/src/mips/disasm-mips.cc +787 -0
  244. data/ext/v8/upstream/2.3.3/src/mips/fast-codegen-mips.cc +77 -0
  245. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.cc +102 -0
  246. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.h +164 -0
  247. data/ext/v8/upstream/2.3.3/src/mips/full-codegen-mips.cc +277 -0
  248. data/ext/v8/upstream/2.3.3/src/mips/ic-mips.cc +220 -0
  249. data/ext/v8/upstream/2.3.3/src/mips/jump-target-mips.cc +175 -0
  250. data/ext/v8/upstream/2.3.3/src/mips/macro-assembler-mips.cc +1326 -0
  251. data/ext/v8/upstream/2.3.3/src/mips/macro-assembler-mips.h +461 -0
  252. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips-inl.h +137 -0
  253. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips.cc +63 -0
  254. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips.h +46 -0
  255. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.cc +1651 -0
  256. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.h +311 -0
  257. data/ext/v8/upstream/2.3.3/src/mips/stub-cache-mips.cc +403 -0
  258. data/ext/v8/upstream/2.3.3/src/mips/virtual-frame-mips.cc +319 -0
  259. data/ext/v8/upstream/2.3.3/src/mips/virtual-frame-mips.h +548 -0
  260. data/ext/v8/upstream/2.3.3/src/mirror-debugger.js +2380 -0
  261. data/ext/v8/upstream/2.3.3/src/mksnapshot.cc +256 -0
  262. data/ext/v8/upstream/2.3.3/src/natives.h +63 -0
  263. data/ext/v8/upstream/2.3.3/src/objects-debug.cc +1366 -0
  264. data/ext/v8/upstream/2.3.3/src/objects-inl.h +3333 -0
  265. data/ext/v8/upstream/2.3.3/src/objects.cc +8820 -0
  266. data/ext/v8/upstream/2.3.3/src/objects.h +5373 -0
  267. data/ext/v8/upstream/2.3.3/src/oprofile-agent.cc +108 -0
  268. data/ext/v8/upstream/2.3.3/src/oprofile-agent.h +77 -0
  269. data/ext/v8/upstream/2.3.3/src/parser.cc +5207 -0
  270. data/ext/v8/upstream/2.3.3/src/parser.h +197 -0
  271. data/ext/v8/upstream/2.3.3/src/platform-freebsd.cc +667 -0
  272. data/ext/v8/upstream/2.3.3/src/platform-linux.cc +862 -0
  273. data/ext/v8/upstream/2.3.3/src/platform-macos.cc +665 -0
  274. data/ext/v8/upstream/2.3.3/src/platform-nullos.cc +454 -0
  275. data/ext/v8/upstream/2.3.3/src/platform-openbsd.cc +622 -0
  276. data/ext/v8/upstream/2.3.3/src/platform-posix.cc +362 -0
  277. data/ext/v8/upstream/2.3.3/src/platform-solaris.cc +653 -0
  278. data/ext/v8/upstream/2.3.3/src/platform-win32.cc +1911 -0
  279. data/ext/v8/upstream/2.3.3/src/platform.h +577 -0
  280. data/ext/v8/upstream/2.3.3/src/powers-ten.h +2461 -0
  281. data/ext/v8/upstream/2.3.3/src/prettyprinter.cc +1531 -0
  282. data/ext/v8/upstream/2.3.3/src/prettyprinter.h +221 -0
  283. data/ext/v8/upstream/2.3.3/src/profile-generator-inl.h +148 -0
  284. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
  285. data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
  286. data/ext/v8/upstream/2.3.3/src/property.cc +96 -0
  287. data/ext/v8/upstream/2.3.3/src/property.h +315 -0
  288. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  289. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.cc +464 -0
  290. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.h +141 -0
  291. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.cc +356 -0
  292. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.h +103 -0
  293. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.cc +261 -0
  294. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.h +228 -0
  295. data/ext/v8/upstream/2.3.3/src/regexp-stack.cc +103 -0
  296. data/ext/v8/upstream/2.3.3/src/regexp-stack.h +123 -0
  297. data/ext/v8/upstream/2.3.3/src/regexp.js +549 -0
  298. data/ext/v8/upstream/2.3.3/src/register-allocator-inl.h +141 -0
  299. data/ext/v8/upstream/2.3.3/src/register-allocator.cc +104 -0
  300. data/ext/v8/upstream/2.3.3/src/register-allocator.h +320 -0
  301. data/ext/v8/upstream/2.3.3/src/rewriter.cc +1038 -0
  302. data/ext/v8/upstream/2.3.3/src/rewriter.h +54 -0
  303. data/ext/v8/upstream/2.3.3/src/runtime.cc +10599 -0
  304. data/ext/v8/upstream/2.3.3/src/runtime.h +459 -0
  305. data/ext/v8/upstream/2.3.3/src/runtime.js +629 -0
  306. data/ext/v8/upstream/2.3.3/src/scanner.cc +1346 -0
  307. data/ext/v8/upstream/2.3.3/src/scanner.h +503 -0
  308. data/ext/v8/upstream/2.3.3/src/scopeinfo.cc +637 -0
  309. data/ext/v8/upstream/2.3.3/src/scopeinfo.h +233 -0
  310. data/ext/v8/upstream/2.3.3/src/scopes.cc +962 -0
  311. data/ext/v8/upstream/2.3.3/src/scopes.h +400 -0
  312. data/ext/v8/upstream/2.3.3/src/serialize.cc +1461 -0
  313. data/ext/v8/upstream/2.3.3/src/serialize.h +581 -0
  314. data/ext/v8/upstream/2.3.3/src/shell.h +55 -0
  315. data/ext/v8/upstream/2.3.3/src/simulator.h +43 -0
  316. data/ext/v8/upstream/2.3.3/src/smart-pointer.h +109 -0
  317. data/ext/v8/upstream/2.3.3/src/snapshot-common.cc +82 -0
  318. data/ext/v8/upstream/2.3.3/src/snapshot-empty.cc +50 -0
  319. data/ext/v8/upstream/2.3.3/src/snapshot.h +71 -0
  320. data/ext/v8/upstream/2.3.3/src/spaces-inl.h +483 -0
  321. data/ext/v8/upstream/2.3.3/src/spaces.cc +2901 -0
  322. data/ext/v8/upstream/2.3.3/src/spaces.h +2197 -0
  323. data/ext/v8/upstream/2.3.3/src/splay-tree-inl.h +310 -0
  324. data/ext/v8/upstream/2.3.3/src/splay-tree.h +203 -0
  325. data/ext/v8/upstream/2.3.3/src/string-stream.cc +584 -0
  326. data/ext/v8/upstream/2.3.3/src/string-stream.h +189 -0
  327. data/ext/v8/upstream/2.3.3/src/string.js +1006 -0
  328. data/ext/v8/upstream/2.3.3/src/stub-cache.cc +1379 -0
  329. data/ext/v8/upstream/2.3.3/src/stub-cache.h +756 -0
  330. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/COPYING +15 -0
  331. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/dtoa.c +3334 -0
  332. data/ext/v8/upstream/2.3.3/src/third_party/valgrind/valgrind.h +3925 -0
  333. data/ext/v8/upstream/2.3.3/src/token.cc +56 -0
  334. data/ext/v8/upstream/2.3.3/src/token.h +270 -0
  335. data/ext/v8/upstream/2.3.3/src/top.cc +1067 -0
  336. data/ext/v8/upstream/2.3.3/src/top.h +463 -0
  337. data/ext/v8/upstream/2.3.3/src/type-info.cc +53 -0
  338. data/ext/v8/upstream/2.3.3/src/type-info.h +244 -0
  339. data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
  340. data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
  341. data/ext/v8/upstream/2.3.3/src/unicode-inl.h +238 -0
  342. data/ext/v8/upstream/2.3.3/src/unicode.cc +749 -0
  343. data/ext/v8/upstream/2.3.3/src/unicode.h +279 -0
  344. data/ext/v8/upstream/2.3.3/src/uri.js +415 -0
  345. data/ext/v8/upstream/2.3.3/src/utils.cc +285 -0
  346. data/ext/v8/upstream/2.3.3/src/utils.h +745 -0
  347. data/ext/v8/upstream/2.3.3/src/v8-counters.cc +55 -0
  348. data/ext/v8/upstream/2.3.3/src/v8-counters.h +250 -0
  349. data/ext/v8/upstream/2.3.3/src/v8.cc +228 -0
  350. data/ext/v8/upstream/2.3.3/src/v8.h +121 -0
  351. data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
  352. data/ext/v8/upstream/2.3.3/src/v8natives.js +1188 -0
  353. data/ext/v8/upstream/2.3.3/src/v8threads.cc +461 -0
  354. data/ext/v8/upstream/2.3.3/src/v8threads.h +159 -0
  355. data/ext/v8/upstream/2.3.3/src/variables.cc +119 -0
  356. data/ext/v8/upstream/2.3.3/src/variables.h +205 -0
  357. data/ext/v8/upstream/2.3.3/src/version.cc +88 -0
  358. data/ext/v8/upstream/2.3.3/src/version.h +64 -0
  359. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy-inl.h +192 -0
  360. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy.cc +312 -0
  361. data/ext/v8/upstream/2.3.3/src/virtual-frame-inl.h +39 -0
  362. data/ext/v8/upstream/2.3.3/src/virtual-frame-light-inl.h +170 -0
  363. data/ext/v8/upstream/2.3.3/src/virtual-frame-light.cc +52 -0
  364. data/ext/v8/upstream/2.3.3/src/virtual-frame.cc +49 -0
  365. data/ext/v8/upstream/2.3.3/src/virtual-frame.h +46 -0
  366. data/ext/v8/upstream/2.3.3/src/vm-state-inl.h +137 -0
  367. data/ext/v8/upstream/2.3.3/src/vm-state.cc +39 -0
  368. data/ext/v8/upstream/2.3.3/src/vm-state.h +77 -0
  369. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64-inl.h +400 -0
  370. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.cc +2963 -0
  371. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.h +1438 -0
  372. data/ext/v8/upstream/2.3.3/src/x64/builtins-x64.cc +1296 -0
  373. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64-inl.h +46 -0
  374. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.cc +12491 -0
  375. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.h +1090 -0
  376. data/ext/v8/upstream/2.3.3/src/x64/cpu-x64.cc +83 -0
  377. data/ext/v8/upstream/2.3.3/src/x64/debug-x64.cc +267 -0
  378. data/ext/v8/upstream/2.3.3/src/x64/disasm-x64.cc +1696 -0
  379. data/ext/v8/upstream/2.3.3/src/x64/fast-codegen-x64.cc +250 -0
  380. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.cc +113 -0
  381. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.h +125 -0
  382. data/ext/v8/upstream/2.3.3/src/x64/full-codegen-x64.cc +3270 -0
  383. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
  384. data/ext/v8/upstream/2.3.3/src/x64/jump-target-x64.cc +437 -0
  385. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.cc +2793 -0
  386. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.h +916 -0
  387. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.cc +1374 -0
  388. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.h +277 -0
  389. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64-inl.h +87 -0
  390. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64.cc +91 -0
  391. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64.h +43 -0
  392. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.cc +27 -0
  393. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.h +63 -0
  394. data/ext/v8/upstream/2.3.3/src/x64/stub-cache-x64.cc +2560 -0
  395. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.cc +1264 -0
  396. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.h +590 -0
  397. data/ext/v8/upstream/2.3.3/src/zone-inl.h +82 -0
  398. data/ext/v8/upstream/2.3.3/src/zone.cc +194 -0
  399. data/ext/v8/upstream/2.3.3/src/zone.h +221 -0
  400. data/ext/v8/upstream/2.3.3/tools/codemap.js +270 -0
  401. data/ext/v8/upstream/2.3.3/tools/consarray.js +93 -0
  402. data/ext/v8/upstream/2.3.3/tools/csvparser.js +83 -0
  403. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
  404. data/ext/v8/upstream/2.3.3/tools/generate-ten-powers.scm +286 -0
  405. data/ext/v8/upstream/2.3.3/tools/gyp/v8.gyp +749 -0
  406. data/ext/v8/upstream/2.3.3/tools/js2c.py +380 -0
  407. data/ext/v8/upstream/2.3.3/tools/jsmin.py +280 -0
  408. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor +33 -0
  409. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor.py +78 -0
  410. data/ext/v8/upstream/2.3.3/tools/logreader.js +338 -0
  411. data/ext/v8/upstream/2.3.3/tools/mac-nm +18 -0
  412. data/ext/v8/upstream/2.3.3/tools/mac-tick-processor +6 -0
  413. data/ext/v8/upstream/2.3.3/tools/oprofile/annotate +7 -0
  414. data/ext/v8/upstream/2.3.3/tools/oprofile/common +19 -0
  415. data/ext/v8/upstream/2.3.3/tools/oprofile/dump +7 -0
  416. data/ext/v8/upstream/2.3.3/tools/oprofile/report +7 -0
  417. data/ext/v8/upstream/2.3.3/tools/oprofile/reset +7 -0
  418. data/ext/v8/upstream/2.3.3/tools/oprofile/run +14 -0
  419. data/ext/v8/upstream/2.3.3/tools/oprofile/shutdown +7 -0
  420. data/ext/v8/upstream/2.3.3/tools/oprofile/start +7 -0
  421. data/ext/v8/upstream/2.3.3/tools/presubmit.py +299 -0
  422. data/ext/v8/upstream/2.3.3/tools/process-heap-prof.py +120 -0
  423. data/ext/v8/upstream/2.3.3/tools/profile.js +691 -0
  424. data/ext/v8/upstream/2.3.3/tools/profile_view.js +224 -0
  425. data/ext/v8/upstream/2.3.3/tools/run-valgrind.py +77 -0
  426. data/ext/v8/upstream/2.3.3/tools/splaytree.js +322 -0
  427. data/ext/v8/upstream/2.3.3/tools/splaytree.py +226 -0
  428. data/ext/v8/upstream/2.3.3/tools/stats-viewer.py +468 -0
  429. data/ext/v8/upstream/2.3.3/tools/tickprocessor-driver.js +59 -0
  430. data/ext/v8/upstream/2.3.3/tools/tickprocessor.js +862 -0
  431. data/ext/v8/upstream/2.3.3/tools/tickprocessor.py +571 -0
  432. data/ext/v8/upstream/2.3.3/tools/utils.py +88 -0
  433. data/ext/v8/upstream/2.3.3/tools/visual_studio/README.txt +71 -0
  434. data/ext/v8/upstream/2.3.3/tools/visual_studio/arm.vsprops +14 -0
  435. data/ext/v8/upstream/2.3.3/tools/visual_studio/common.vsprops +34 -0
  436. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8.vcproj +193 -0
  437. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8_arm.vcproj +193 -0
  438. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8_x64.vcproj +209 -0
  439. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8js2c.cmd +6 -0
  440. data/ext/v8/upstream/2.3.3/tools/visual_studio/debug.vsprops +17 -0
  441. data/ext/v8/upstream/2.3.3/tools/visual_studio/ia32.vsprops +17 -0
  442. data/ext/v8/upstream/2.3.3/tools/visual_studio/js2c.cmd +6 -0
  443. data/ext/v8/upstream/2.3.3/tools/visual_studio/release.vsprops +24 -0
  444. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8.sln +101 -0
  445. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8.vcproj +227 -0
  446. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_arm.sln +74 -0
  447. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_arm.vcproj +227 -0
  448. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base.vcproj +1143 -0
  449. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_arm.vcproj +1115 -0
  450. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_x64.vcproj +1096 -0
  451. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest.vcproj +265 -0
  452. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest_arm.vcproj +249 -0
  453. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  454. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_mksnapshot.vcproj +145 -0
  455. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_mksnapshot_x64.vcproj +145 -0
  456. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample.vcproj +145 -0
  457. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample_arm.vcproj +145 -0
  458. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample_x64.vcproj +161 -0
  459. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample.vcproj +145 -0
  460. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -0
  461. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_x64.vcproj +161 -0
  462. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot.vcproj +142 -0
  463. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  464. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  465. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  466. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_x64.sln +101 -0
  467. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_x64.vcproj +227 -0
  468. data/ext/v8/upstream/2.3.3/tools/visual_studio/x64.vsprops +17 -0
  469. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.bat +29 -0
  470. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.py +137 -0
  471. data/ext/v8/upstream/Makefile +38 -0
  472. data/ext/v8/upstream/build/scons/CHANGES.txt +5183 -0
  473. data/ext/v8/upstream/build/scons/LICENSE.txt +20 -0
  474. data/ext/v8/upstream/build/scons/MANIFEST +202 -0
  475. data/ext/v8/upstream/build/scons/PKG-INFO +13 -0
  476. data/ext/v8/upstream/build/scons/README.txt +273 -0
  477. data/ext/v8/upstream/build/scons/RELEASE.txt +1040 -0
  478. data/ext/v8/upstream/build/scons/build/lib/SCons/Action.py +1256 -0
  479. data/ext/v8/upstream/build/scons/build/lib/SCons/Builder.py +868 -0
  480. data/ext/v8/upstream/build/scons/build/lib/SCons/CacheDir.py +217 -0
  481. data/ext/v8/upstream/build/scons/build/lib/SCons/Conftest.py +794 -0
  482. data/ext/v8/upstream/build/scons/build/lib/SCons/Debug.py +237 -0
  483. data/ext/v8/upstream/build/scons/build/lib/SCons/Defaults.py +485 -0
  484. data/ext/v8/upstream/build/scons/build/lib/SCons/Environment.py +2327 -0
  485. data/ext/v8/upstream/build/scons/build/lib/SCons/Errors.py +207 -0
  486. data/ext/v8/upstream/build/scons/build/lib/SCons/Executor.py +636 -0
  487. data/ext/v8/upstream/build/scons/build/lib/SCons/Job.py +435 -0
  488. data/ext/v8/upstream/build/scons/build/lib/SCons/Memoize.py +292 -0
  489. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Alias.py +153 -0
  490. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/FS.py +3220 -0
  491. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Python.py +128 -0
  492. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/__init__.py +1341 -0
  493. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/BoolOption.py +50 -0
  494. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/EnumOption.py +50 -0
  495. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/ListOption.py +50 -0
  496. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PackageOption.py +50 -0
  497. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PathOption.py +76 -0
  498. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/__init__.py +74 -0
  499. data/ext/v8/upstream/build/scons/build/lib/SCons/PathList.py +232 -0
  500. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/__init__.py +236 -0
  501. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/aix.py +70 -0
  502. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/cygwin.py +55 -0
  503. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/darwin.py +46 -0
  504. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/hpux.py +46 -0
  505. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/irix.py +44 -0
  506. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/os2.py +58 -0
  507. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/posix.py +264 -0
  508. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/sunos.py +50 -0
  509. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/win32.py +386 -0
  510. data/ext/v8/upstream/build/scons/build/lib/SCons/SConf.py +1038 -0
  511. data/ext/v8/upstream/build/scons/build/lib/SCons/SConsign.py +381 -0
  512. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/C.py +132 -0
  513. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/D.py +74 -0
  514. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Dir.py +111 -0
  515. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Fortran.py +320 -0
  516. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/IDL.py +48 -0
  517. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/LaTeX.py +378 -0
  518. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Prog.py +103 -0
  519. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/RC.py +55 -0
  520. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/__init__.py +415 -0
  521. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Interactive.py +386 -0
  522. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Main.py +1360 -0
  523. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConsOptions.py +944 -0
  524. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConscript.py +642 -0
  525. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/__init__.py +414 -0
  526. data/ext/v8/upstream/build/scons/build/lib/SCons/Sig.py +63 -0
  527. data/ext/v8/upstream/build/scons/build/lib/SCons/Subst.py +911 -0
  528. data/ext/v8/upstream/build/scons/build/lib/SCons/Taskmaster.py +1030 -0
  529. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/386asm.py +61 -0
  530. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/BitKeeper.py +65 -0
  531. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/CVS.py +73 -0
  532. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/FortranCommon.py +247 -0
  533. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/JavaCommon.py +324 -0
  534. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/__init__.py +56 -0
  535. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/arch.py +61 -0
  536. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/common.py +210 -0
  537. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/netframework.py +84 -0
  538. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/sdk.py +321 -0
  539. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vc.py +367 -0
  540. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vs.py +497 -0
  541. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Perforce.py +104 -0
  542. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/PharLapCommon.py +138 -0
  543. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/RCS.py +64 -0
  544. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/SCCS.py +64 -0
  545. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Subversion.py +71 -0
  546. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/__init__.py +675 -0
  547. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixc++.py +82 -0
  548. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixcc.py +74 -0
  549. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixf77.py +80 -0
  550. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixlink.py +76 -0
  551. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/applelink.py +71 -0
  552. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ar.py +63 -0
  553. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/as.py +78 -0
  554. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/bcc32.py +82 -0
  555. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/c++.py +99 -0
  556. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cc.py +114 -0
  557. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cvf.py +58 -0
  558. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/default.py +50 -0
  559. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dmd.py +224 -0
  560. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvi.py +64 -0
  561. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvipdf.py +125 -0
  562. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvips.py +94 -0
  563. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f77.py +62 -0
  564. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f90.py +62 -0
  565. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f95.py +63 -0
  566. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/filesystem.py +98 -0
  567. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/fortran.py +63 -0
  568. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g++.py +90 -0
  569. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g77.py +73 -0
  570. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gas.py +53 -0
  571. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gcc.py +80 -0
  572. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gfortran.py +64 -0
  573. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gnulink.py +63 -0
  574. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gs.py +81 -0
  575. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpc++.py +85 -0
  576. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpcc.py +53 -0
  577. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hplink.py +77 -0
  578. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icc.py +59 -0
  579. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icl.py +52 -0
  580. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifl.py +72 -0
  581. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifort.py +90 -0
  582. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink.py +59 -0
  583. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink32.py +60 -0
  584. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/install.py +229 -0
  585. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/intelc.py +490 -0
  586. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ipkg.py +71 -0
  587. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/jar.py +110 -0
  588. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javac.py +234 -0
  589. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javah.py +138 -0
  590. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/latex.py +79 -0
  591. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/lex.py +99 -0
  592. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/link.py +121 -0
  593. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/linkloc.py +112 -0
  594. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/m4.py +63 -0
  595. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/masm.py +77 -0
  596. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/midl.py +90 -0
  597. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mingw.py +159 -0
  598. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslib.py +64 -0
  599. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslink.py +266 -0
  600. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mssdk.py +50 -0
  601. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvc.py +269 -0
  602. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvs.py +1439 -0
  603. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwcc.py +208 -0
  604. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwld.py +107 -0
  605. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/nasm.py +72 -0
  606. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/__init__.py +314 -0
  607. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/ipk.py +185 -0
  608. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/msi.py +526 -0
  609. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/rpm.py +367 -0
  610. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_tarbz2.py +43 -0
  611. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_targz.py +43 -0
  612. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_zip.py +43 -0
  613. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/tarbz2.py +44 -0
  614. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/targz.py +44 -0
  615. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/zip.py +44 -0
  616. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdf.py +78 -0
  617. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdflatex.py +83 -0
  618. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdftex.py +108 -0
  619. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/qt.py +336 -0
  620. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rmic.py +121 -0
  621. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpcgen.py +70 -0
  622. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpm.py +132 -0
  623. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgiar.py +68 -0
  624. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgic++.py +58 -0
  625. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgicc.py +53 -0
  626. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgilink.py +63 -0
  627. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunar.py +67 -0
  628. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunc++.py +142 -0
  629. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/suncc.py +58 -0
  630. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf77.py +63 -0
  631. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf90.py +64 -0
  632. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf95.py +64 -0
  633. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunlink.py +77 -0
  634. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/swig.py +186 -0
  635. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tar.py +73 -0
  636. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tex.py +805 -0
  637. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/textfile.py +175 -0
  638. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tlib.py +53 -0
  639. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/wix.py +100 -0
  640. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/yacc.py +131 -0
  641. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/zip.py +100 -0
  642. data/ext/v8/upstream/build/scons/build/lib/SCons/Util.py +1645 -0
  643. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/BoolVariable.py +91 -0
  644. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/EnumVariable.py +107 -0
  645. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/ListVariable.py +139 -0
  646. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PackageVariable.py +109 -0
  647. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PathVariable.py +147 -0
  648. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/__init__.py +317 -0
  649. data/ext/v8/upstream/build/scons/build/lib/SCons/Warnings.py +228 -0
  650. data/ext/v8/upstream/build/scons/build/lib/SCons/__init__.py +49 -0
  651. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/__init__.py +302 -0
  652. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_UserString.py +98 -0
  653. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_hashlib.py +91 -0
  654. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_itertools.py +124 -0
  655. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_optparse.py +1725 -0
  656. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets.py +583 -0
  657. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets15.py +176 -0
  658. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_shlex.py +325 -0
  659. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_subprocess.py +1296 -0
  660. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_textwrap.py +382 -0
  661. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/builtins.py +187 -0
  662. data/ext/v8/upstream/build/scons/build/lib/SCons/cpp.py +598 -0
  663. data/ext/v8/upstream/build/scons/build/lib/SCons/dblite.py +248 -0
  664. data/ext/v8/upstream/build/scons/build/lib/SCons/exitfuncs.py +77 -0
  665. data/ext/v8/upstream/build/scons/build/scripts/scons +184 -0
  666. data/ext/v8/upstream/build/scons/build/scripts/scons-time +1529 -0
  667. data/ext/v8/upstream/build/scons/build/scripts/scons.bat +31 -0
  668. data/ext/v8/upstream/build/scons/build/scripts/sconsign +508 -0
  669. data/ext/v8/upstream/build/scons/engine/SCons/Action.py +1256 -0
  670. data/ext/v8/upstream/build/scons/engine/SCons/Builder.py +868 -0
  671. data/ext/v8/upstream/build/scons/engine/SCons/CacheDir.py +217 -0
  672. data/ext/v8/upstream/build/scons/engine/SCons/Conftest.py +794 -0
  673. data/ext/v8/upstream/build/scons/engine/SCons/Debug.py +237 -0
  674. data/ext/v8/upstream/build/scons/engine/SCons/Defaults.py +485 -0
  675. data/ext/v8/upstream/build/scons/engine/SCons/Environment.py +2327 -0
  676. data/ext/v8/upstream/build/scons/engine/SCons/Errors.py +207 -0
  677. data/ext/v8/upstream/build/scons/engine/SCons/Executor.py +636 -0
  678. data/ext/v8/upstream/build/scons/engine/SCons/Job.py +435 -0
  679. data/ext/v8/upstream/build/scons/engine/SCons/Memoize.py +292 -0
  680. data/ext/v8/upstream/build/scons/engine/SCons/Node/Alias.py +153 -0
  681. data/ext/v8/upstream/build/scons/engine/SCons/Node/FS.py +3220 -0
  682. data/ext/v8/upstream/build/scons/engine/SCons/Node/Python.py +128 -0
  683. data/ext/v8/upstream/build/scons/engine/SCons/Node/__init__.py +1341 -0
  684. data/ext/v8/upstream/build/scons/engine/SCons/Options/BoolOption.py +50 -0
  685. data/ext/v8/upstream/build/scons/engine/SCons/Options/EnumOption.py +50 -0
  686. data/ext/v8/upstream/build/scons/engine/SCons/Options/ListOption.py +50 -0
  687. data/ext/v8/upstream/build/scons/engine/SCons/Options/PackageOption.py +50 -0
  688. data/ext/v8/upstream/build/scons/engine/SCons/Options/PathOption.py +76 -0
  689. data/ext/v8/upstream/build/scons/engine/SCons/Options/__init__.py +74 -0
  690. data/ext/v8/upstream/build/scons/engine/SCons/PathList.py +232 -0
  691. data/ext/v8/upstream/build/scons/engine/SCons/Platform/__init__.py +236 -0
  692. data/ext/v8/upstream/build/scons/engine/SCons/Platform/aix.py +70 -0
  693. data/ext/v8/upstream/build/scons/engine/SCons/Platform/cygwin.py +55 -0
  694. data/ext/v8/upstream/build/scons/engine/SCons/Platform/darwin.py +46 -0
  695. data/ext/v8/upstream/build/scons/engine/SCons/Platform/hpux.py +46 -0
  696. data/ext/v8/upstream/build/scons/engine/SCons/Platform/irix.py +44 -0
  697. data/ext/v8/upstream/build/scons/engine/SCons/Platform/os2.py +58 -0
  698. data/ext/v8/upstream/build/scons/engine/SCons/Platform/posix.py +264 -0
  699. data/ext/v8/upstream/build/scons/engine/SCons/Platform/sunos.py +50 -0
  700. data/ext/v8/upstream/build/scons/engine/SCons/Platform/win32.py +386 -0
  701. data/ext/v8/upstream/build/scons/engine/SCons/SConf.py +1038 -0
  702. data/ext/v8/upstream/build/scons/engine/SCons/SConsign.py +381 -0
  703. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/C.py +132 -0
  704. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/D.py +74 -0
  705. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Dir.py +111 -0
  706. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Fortran.py +320 -0
  707. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/IDL.py +48 -0
  708. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  709. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Prog.py +103 -0
  710. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/RC.py +55 -0
  711. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/__init__.py +415 -0
  712. data/ext/v8/upstream/build/scons/engine/SCons/Script/Interactive.py +386 -0
  713. data/ext/v8/upstream/build/scons/engine/SCons/Script/Main.py +1360 -0
  714. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConsOptions.py +944 -0
  715. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConscript.py +642 -0
  716. data/ext/v8/upstream/build/scons/engine/SCons/Script/__init__.py +414 -0
  717. data/ext/v8/upstream/build/scons/engine/SCons/Sig.py +63 -0
  718. data/ext/v8/upstream/build/scons/engine/SCons/Subst.py +911 -0
  719. data/ext/v8/upstream/build/scons/engine/SCons/Taskmaster.py +1030 -0
  720. data/ext/v8/upstream/build/scons/engine/SCons/Tool/386asm.py +61 -0
  721. data/ext/v8/upstream/build/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  722. data/ext/v8/upstream/build/scons/engine/SCons/Tool/CVS.py +73 -0
  723. data/ext/v8/upstream/build/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  724. data/ext/v8/upstream/build/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  725. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  726. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  727. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  728. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  729. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  730. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  731. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  732. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Perforce.py +104 -0
  733. data/ext/v8/upstream/build/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  734. data/ext/v8/upstream/build/scons/engine/SCons/Tool/RCS.py +64 -0
  735. data/ext/v8/upstream/build/scons/engine/SCons/Tool/SCCS.py +64 -0
  736. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Subversion.py +71 -0
  737. data/ext/v8/upstream/build/scons/engine/SCons/Tool/__init__.py +675 -0
  738. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixc++.py +82 -0
  739. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixcc.py +74 -0
  740. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixf77.py +80 -0
  741. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixlink.py +76 -0
  742. data/ext/v8/upstream/build/scons/engine/SCons/Tool/applelink.py +71 -0
  743. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ar.py +63 -0
  744. data/ext/v8/upstream/build/scons/engine/SCons/Tool/as.py +78 -0
  745. data/ext/v8/upstream/build/scons/engine/SCons/Tool/bcc32.py +82 -0
  746. data/ext/v8/upstream/build/scons/engine/SCons/Tool/c++.py +99 -0
  747. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cc.py +114 -0
  748. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cvf.py +58 -0
  749. data/ext/v8/upstream/build/scons/engine/SCons/Tool/default.py +50 -0
  750. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dmd.py +224 -0
  751. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvi.py +64 -0
  752. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvipdf.py +125 -0
  753. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvips.py +94 -0
  754. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f77.py +62 -0
  755. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f90.py +62 -0
  756. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f95.py +63 -0
  757. data/ext/v8/upstream/build/scons/engine/SCons/Tool/filesystem.py +98 -0
  758. data/ext/v8/upstream/build/scons/engine/SCons/Tool/fortran.py +63 -0
  759. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g++.py +90 -0
  760. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g77.py +73 -0
  761. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gas.py +53 -0
  762. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gcc.py +80 -0
  763. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gfortran.py +64 -0
  764. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gnulink.py +63 -0
  765. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gs.py +81 -0
  766. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpc++.py +85 -0
  767. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpcc.py +53 -0
  768. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hplink.py +77 -0
  769. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icc.py +59 -0
  770. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icl.py +52 -0
  771. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifl.py +72 -0
  772. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifort.py +90 -0
  773. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink.py +59 -0
  774. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink32.py +60 -0
  775. data/ext/v8/upstream/build/scons/engine/SCons/Tool/install.py +229 -0
  776. data/ext/v8/upstream/build/scons/engine/SCons/Tool/intelc.py +490 -0
  777. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ipkg.py +71 -0
  778. data/ext/v8/upstream/build/scons/engine/SCons/Tool/jar.py +110 -0
  779. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javac.py +234 -0
  780. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javah.py +138 -0
  781. data/ext/v8/upstream/build/scons/engine/SCons/Tool/latex.py +79 -0
  782. data/ext/v8/upstream/build/scons/engine/SCons/Tool/lex.py +99 -0
  783. data/ext/v8/upstream/build/scons/engine/SCons/Tool/link.py +121 -0
  784. data/ext/v8/upstream/build/scons/engine/SCons/Tool/linkloc.py +112 -0
  785. data/ext/v8/upstream/build/scons/engine/SCons/Tool/m4.py +63 -0
  786. data/ext/v8/upstream/build/scons/engine/SCons/Tool/masm.py +77 -0
  787. data/ext/v8/upstream/build/scons/engine/SCons/Tool/midl.py +90 -0
  788. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mingw.py +159 -0
  789. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslib.py +64 -0
  790. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslink.py +266 -0
  791. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mssdk.py +50 -0
  792. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvc.py +269 -0
  793. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvs.py +1439 -0
  794. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwcc.py +208 -0
  795. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwld.py +107 -0
  796. data/ext/v8/upstream/build/scons/engine/SCons/Tool/nasm.py +72 -0
  797. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  798. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  799. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  800. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  801. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  802. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  803. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  804. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  805. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  806. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  807. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdf.py +78 -0
  808. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdflatex.py +83 -0
  809. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdftex.py +108 -0
  810. data/ext/v8/upstream/build/scons/engine/SCons/Tool/qt.py +336 -0
  811. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rmic.py +121 -0
  812. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpcgen.py +70 -0
  813. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpm.py +132 -0
  814. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgiar.py +68 -0
  815. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgic++.py +58 -0
  816. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgicc.py +53 -0
  817. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgilink.py +63 -0
  818. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunar.py +67 -0
  819. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunc++.py +142 -0
  820. data/ext/v8/upstream/build/scons/engine/SCons/Tool/suncc.py +58 -0
  821. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf77.py +63 -0
  822. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf90.py +64 -0
  823. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf95.py +64 -0
  824. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunlink.py +77 -0
  825. data/ext/v8/upstream/build/scons/engine/SCons/Tool/swig.py +186 -0
  826. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tar.py +73 -0
  827. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tex.py +805 -0
  828. data/ext/v8/upstream/build/scons/engine/SCons/Tool/textfile.py +175 -0
  829. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tlib.py +53 -0
  830. data/ext/v8/upstream/build/scons/engine/SCons/Tool/wix.py +100 -0
  831. data/ext/v8/upstream/build/scons/engine/SCons/Tool/yacc.py +131 -0
  832. data/ext/v8/upstream/build/scons/engine/SCons/Tool/zip.py +100 -0
  833. data/ext/v8/upstream/build/scons/engine/SCons/Util.py +1645 -0
  834. data/ext/v8/upstream/build/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  835. data/ext/v8/upstream/build/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  836. data/ext/v8/upstream/build/scons/engine/SCons/Variables/ListVariable.py +139 -0
  837. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  838. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PathVariable.py +147 -0
  839. data/ext/v8/upstream/build/scons/engine/SCons/Variables/__init__.py +317 -0
  840. data/ext/v8/upstream/build/scons/engine/SCons/Warnings.py +228 -0
  841. data/ext/v8/upstream/build/scons/engine/SCons/__init__.py +49 -0
  842. data/ext/v8/upstream/build/scons/engine/SCons/compat/__init__.py +302 -0
  843. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  844. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  845. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  846. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  847. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets.py +583 -0
  848. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  849. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  850. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  851. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  852. data/ext/v8/upstream/build/scons/engine/SCons/compat/builtins.py +187 -0
  853. data/ext/v8/upstream/build/scons/engine/SCons/cpp.py +598 -0
  854. data/ext/v8/upstream/build/scons/engine/SCons/dblite.py +248 -0
  855. data/ext/v8/upstream/build/scons/engine/SCons/exitfuncs.py +77 -0
  856. data/ext/v8/upstream/build/scons/install/bin/scons +184 -0
  857. data/ext/v8/upstream/build/scons/install/bin/scons-1.2.0.d20100117 +184 -0
  858. data/ext/v8/upstream/build/scons/install/bin/scons-time +1529 -0
  859. data/ext/v8/upstream/build/scons/install/bin/scons-time-1.2.0.d20100117 +1529 -0
  860. data/ext/v8/upstream/build/scons/install/bin/sconsign +508 -0
  861. data/ext/v8/upstream/build/scons/install/bin/sconsign-1.2.0.d20100117 +508 -0
  862. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.py +1256 -0
  863. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.pyc +0 -0
  864. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.py +868 -0
  865. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.pyc +0 -0
  866. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.py +217 -0
  867. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.pyc +0 -0
  868. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.py +794 -0
  869. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.pyc +0 -0
  870. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.py +237 -0
  871. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.pyc +0 -0
  872. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.py +485 -0
  873. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.pyc +0 -0
  874. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.py +2327 -0
  875. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.pyc +0 -0
  876. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.py +207 -0
  877. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.pyc +0 -0
  878. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.py +636 -0
  879. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.pyc +0 -0
  880. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.py +435 -0
  881. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.pyc +0 -0
  882. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.py +292 -0
  883. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.pyc +0 -0
  884. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.py +153 -0
  885. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.pyc +0 -0
  886. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.py +3220 -0
  887. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.pyc +0 -0
  888. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.py +128 -0
  889. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.pyc +0 -0
  890. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.py +1341 -0
  891. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.pyc +0 -0
  892. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.py +50 -0
  893. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.pyc +0 -0
  894. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.py +50 -0
  895. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.pyc +0 -0
  896. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.py +50 -0
  897. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.pyc +0 -0
  898. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.py +50 -0
  899. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.pyc +0 -0
  900. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.py +76 -0
  901. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.pyc +0 -0
  902. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.py +74 -0
  903. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.pyc +0 -0
  904. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.py +232 -0
  905. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.pyc +0 -0
  906. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.py +236 -0
  907. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.pyc +0 -0
  908. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.py +70 -0
  909. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.pyc +0 -0
  910. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.py +55 -0
  911. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.pyc +0 -0
  912. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.py +46 -0
  913. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.pyc +0 -0
  914. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.py +46 -0
  915. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.pyc +0 -0
  916. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.py +44 -0
  917. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.pyc +0 -0
  918. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.py +58 -0
  919. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.pyc +0 -0
  920. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.py +264 -0
  921. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.pyc +0 -0
  922. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.py +50 -0
  923. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.pyc +0 -0
  924. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.py +386 -0
  925. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.pyc +0 -0
  926. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.py +1038 -0
  927. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.pyc +0 -0
  928. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.py +381 -0
  929. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.pyc +0 -0
  930. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.py +132 -0
  931. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.pyc +0 -0
  932. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.py +74 -0
  933. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.pyc +0 -0
  934. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.py +111 -0
  935. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.pyc +0 -0
  936. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.py +320 -0
  937. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.pyc +0 -0
  938. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.py +48 -0
  939. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.pyc +0 -0
  940. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.py +378 -0
  941. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.pyc +0 -0
  942. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.py +103 -0
  943. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.pyc +0 -0
  944. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.py +55 -0
  945. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.pyc +0 -0
  946. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.py +415 -0
  947. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.pyc +0 -0
  948. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.py +386 -0
  949. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.pyc +0 -0
  950. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.py +1360 -0
  951. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.pyc +0 -0
  952. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.py +944 -0
  953. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.pyc +0 -0
  954. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.py +642 -0
  955. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.pyc +0 -0
  956. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.py +414 -0
  957. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.pyc +0 -0
  958. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.py +63 -0
  959. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.pyc +0 -0
  960. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.py +911 -0
  961. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.pyc +0 -0
  962. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.py +1030 -0
  963. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.pyc +0 -0
  964. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.py +61 -0
  965. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.pyc +0 -0
  966. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.py +65 -0
  967. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.pyc +0 -0
  968. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.py +73 -0
  969. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.pyc +0 -0
  970. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.py +247 -0
  971. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.pyc +0 -0
  972. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.py +324 -0
  973. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.pyc +0 -0
  974. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.py +56 -0
  975. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.pyc +0 -0
  976. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.py +61 -0
  977. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.pyc +0 -0
  978. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.py +210 -0
  979. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.pyc +0 -0
  980. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.py +84 -0
  981. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.pyc +0 -0
  982. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.py +321 -0
  983. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.pyc +0 -0
  984. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.py +367 -0
  985. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.pyc +0 -0
  986. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.py +497 -0
  987. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.pyc +0 -0
  988. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.py +104 -0
  989. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.pyc +0 -0
  990. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.py +138 -0
  991. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.pyc +0 -0
  992. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.py +64 -0
  993. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.pyc +0 -0
  994. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.py +64 -0
  995. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.pyc +0 -0
  996. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.py +71 -0
  997. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.pyc +0 -0
  998. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.py +675 -0
  999. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.pyc +0 -0
  1000. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.py +82 -0
  1001. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.pyc +0 -0
  1002. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.py +74 -0
  1003. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.pyc +0 -0
  1004. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.py +80 -0
  1005. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.pyc +0 -0
  1006. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.py +76 -0
  1007. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.pyc +0 -0
  1008. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.py +71 -0
  1009. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.pyc +0 -0
  1010. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.py +63 -0
  1011. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.pyc +0 -0
  1012. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.py +78 -0
  1013. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.pyc +0 -0
  1014. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.py +82 -0
  1015. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.pyc +0 -0
  1016. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.py +99 -0
  1017. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.pyc +0 -0
  1018. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.py +114 -0
  1019. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.pyc +0 -0
  1020. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.py +58 -0
  1021. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.pyc +0 -0
  1022. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.py +50 -0
  1023. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.pyc +0 -0
  1024. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.py +224 -0
  1025. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.pyc +0 -0
  1026. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.py +64 -0
  1027. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.pyc +0 -0
  1028. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.py +125 -0
  1029. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.pyc +0 -0
  1030. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.py +94 -0
  1031. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.pyc +0 -0
  1032. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.py +62 -0
  1033. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.pyc +0 -0
  1034. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.py +62 -0
  1035. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.pyc +0 -0
  1036. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.py +63 -0
  1037. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.pyc +0 -0
  1038. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.py +98 -0
  1039. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.pyc +0 -0
  1040. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.py +63 -0
  1041. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.pyc +0 -0
  1042. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.py +90 -0
  1043. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.pyc +0 -0
  1044. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.py +73 -0
  1045. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.pyc +0 -0
  1046. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.py +53 -0
  1047. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.pyc +0 -0
  1048. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.py +80 -0
  1049. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.pyc +0 -0
  1050. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.py +64 -0
  1051. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.pyc +0 -0
  1052. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.py +63 -0
  1053. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.pyc +0 -0
  1054. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.py +81 -0
  1055. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.pyc +0 -0
  1056. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.py +85 -0
  1057. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.pyc +0 -0
  1058. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.py +53 -0
  1059. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.pyc +0 -0
  1060. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.py +77 -0
  1061. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.pyc +0 -0
  1062. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.py +59 -0
  1063. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.pyc +0 -0
  1064. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.py +52 -0
  1065. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.pyc +0 -0
  1066. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.py +72 -0
  1067. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.pyc +0 -0
  1068. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.py +90 -0
  1069. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.pyc +0 -0
  1070. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.py +59 -0
  1071. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.pyc +0 -0
  1072. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.py +60 -0
  1073. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.pyc +0 -0
  1074. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.py +229 -0
  1075. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.pyc +0 -0
  1076. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.py +490 -0
  1077. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.pyc +0 -0
  1078. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.py +71 -0
  1079. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.pyc +0 -0
  1080. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.py +110 -0
  1081. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.pyc +0 -0
  1082. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.py +234 -0
  1083. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.pyc +0 -0
  1084. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.py +138 -0
  1085. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.pyc +0 -0
  1086. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.py +79 -0
  1087. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.pyc +0 -0
  1088. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.py +99 -0
  1089. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.pyc +0 -0
  1090. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.py +121 -0
  1091. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.pyc +0 -0
  1092. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.py +112 -0
  1093. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.pyc +0 -0
  1094. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.py +63 -0
  1095. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.pyc +0 -0
  1096. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.py +77 -0
  1097. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.pyc +0 -0
  1098. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.py +90 -0
  1099. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.pyc +0 -0
  1100. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.py +159 -0
  1101. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.pyc +0 -0
  1102. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.py +64 -0
  1103. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.pyc +0 -0
  1104. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.py +266 -0
  1105. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.pyc +0 -0
  1106. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.py +50 -0
  1107. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.pyc +0 -0
  1108. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.py +269 -0
  1109. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.pyc +0 -0
  1110. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.py +1439 -0
  1111. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.pyc +0 -0
  1112. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.py +208 -0
  1113. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.pyc +0 -0
  1114. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.py +107 -0
  1115. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.pyc +0 -0
  1116. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.py +72 -0
  1117. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.pyc +0 -0
  1118. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.py +314 -0
  1119. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.pyc +0 -0
  1120. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.py +185 -0
  1121. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.pyc +0 -0
  1122. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.py +526 -0
  1123. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.pyc +0 -0
  1124. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.py +367 -0
  1125. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.pyc +0 -0
  1126. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.py +43 -0
  1127. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.pyc +0 -0
  1128. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.py +43 -0
  1129. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.pyc +0 -0
  1130. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.py +43 -0
  1131. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.pyc +0 -0
  1132. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.py +44 -0
  1133. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.pyc +0 -0
  1134. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.py +44 -0
  1135. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.pyc +0 -0
  1136. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.py +44 -0
  1137. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.pyc +0 -0
  1138. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.py +78 -0
  1139. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.pyc +0 -0
  1140. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.py +83 -0
  1141. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.pyc +0 -0
  1142. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.py +108 -0
  1143. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.pyc +0 -0
  1144. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.py +336 -0
  1145. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.pyc +0 -0
  1146. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.py +121 -0
  1147. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.pyc +0 -0
  1148. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.py +70 -0
  1149. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.pyc +0 -0
  1150. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.py +132 -0
  1151. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.pyc +0 -0
  1152. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.py +68 -0
  1153. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.pyc +0 -0
  1154. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.py +58 -0
  1155. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.pyc +0 -0
  1156. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.py +53 -0
  1157. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.pyc +0 -0
  1158. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.py +63 -0
  1159. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.pyc +0 -0
  1160. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.py +67 -0
  1161. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.pyc +0 -0
  1162. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.py +142 -0
  1163. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.pyc +0 -0
  1164. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.py +58 -0
  1165. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.pyc +0 -0
  1166. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.py +63 -0
  1167. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.pyc +0 -0
  1168. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.py +64 -0
  1169. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.pyc +0 -0
  1170. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.py +64 -0
  1171. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.pyc +0 -0
  1172. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.py +77 -0
  1173. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.pyc +0 -0
  1174. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.py +186 -0
  1175. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.pyc +0 -0
  1176. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.py +73 -0
  1177. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.pyc +0 -0
  1178. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.py +805 -0
  1179. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.pyc +0 -0
  1180. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.py +175 -0
  1181. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.pyc +0 -0
  1182. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.py +53 -0
  1183. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.pyc +0 -0
  1184. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.py +100 -0
  1185. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.pyc +0 -0
  1186. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.py +131 -0
  1187. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.pyc +0 -0
  1188. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.py +100 -0
  1189. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.pyc +0 -0
  1190. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.py +1645 -0
  1191. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.pyc +0 -0
  1192. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.py +91 -0
  1193. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.pyc +0 -0
  1194. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.py +107 -0
  1195. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.pyc +0 -0
  1196. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.py +139 -0
  1197. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.pyc +0 -0
  1198. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.py +109 -0
  1199. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.pyc +0 -0
  1200. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.py +147 -0
  1201. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.pyc +0 -0
  1202. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.py +317 -0
  1203. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.pyc +0 -0
  1204. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.py +228 -0
  1205. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.pyc +0 -0
  1206. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.py +49 -0
  1207. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.pyc +0 -0
  1208. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.py +302 -0
  1209. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.pyc +0 -0
  1210. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.py +98 -0
  1211. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.pyc +0 -0
  1212. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.py +91 -0
  1213. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.pyc +0 -0
  1214. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.py +124 -0
  1215. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.pyc +0 -0
  1216. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.py +1725 -0
  1217. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.pyc +0 -0
  1218. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.py +583 -0
  1219. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.pyc +0 -0
  1220. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.py +176 -0
  1221. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.pyc +0 -0
  1222. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.py +325 -0
  1223. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.pyc +0 -0
  1224. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.py +1296 -0
  1225. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.pyc +0 -0
  1226. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.py +382 -0
  1227. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.pyc +0 -0
  1228. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.py +187 -0
  1229. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.pyc +0 -0
  1230. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.py +598 -0
  1231. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.pyc +0 -0
  1232. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.py +248 -0
  1233. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.pyc +0 -0
  1234. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.py +77 -0
  1235. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.pyc +0 -0
  1236. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/scons-1.2.0.d20100117.egg-info +13 -0
  1237. data/ext/v8/upstream/build/scons/install/man/man1/scons-time.1 +1017 -0
  1238. data/ext/v8/upstream/build/scons/install/man/man1/scons.1 +15179 -0
  1239. data/ext/v8/upstream/build/scons/install/man/man1/sconsign.1 +208 -0
  1240. data/ext/v8/upstream/build/scons/os_spawnv_fix.diff +83 -0
  1241. data/ext/v8/upstream/build/scons/scons-time.1 +1017 -0
  1242. data/ext/v8/upstream/build/scons/scons.1 +15179 -0
  1243. data/ext/v8/upstream/build/scons/sconsign.1 +208 -0
  1244. data/ext/v8/upstream/build/scons/script/scons +184 -0
  1245. data/ext/v8/upstream/build/scons/script/scons-time +1529 -0
  1246. data/ext/v8/upstream/build/scons/script/scons.bat +31 -0
  1247. data/ext/v8/upstream/build/scons/script/sconsign +508 -0
  1248. data/ext/v8/upstream/build/scons/setup.cfg +6 -0
  1249. data/ext/v8/upstream/build/scons/setup.py +427 -0
  1250. data/ext/v8/upstream/build/v8/.gitignore +26 -0
  1251. data/ext/v8/upstream/build/v8/AUTHORS +31 -0
  1252. data/ext/v8/upstream/build/v8/ChangeLog +1916 -0
  1253. data/ext/v8/upstream/build/v8/LICENSE +55 -0
  1254. data/ext/v8/upstream/build/v8/SConstruct +1158 -0
  1255. data/ext/v8/upstream/build/v8/SConstruct.orig +1154 -0
  1256. data/ext/v8/upstream/build/v8/include/v8-debug.h +381 -0
  1257. data/ext/v8/upstream/build/v8/include/v8-profiler.h +353 -0
  1258. data/ext/v8/upstream/build/v8/include/v8.h +3616 -0
  1259. data/ext/v8/upstream/build/v8/src/SConscript +330 -0
  1260. data/ext/v8/upstream/build/v8/src/accessors.cc +661 -0
  1261. data/ext/v8/upstream/build/v8/src/accessors.h +114 -0
  1262. data/ext/v8/upstream/build/v8/src/allocation.cc +198 -0
  1263. data/ext/v8/upstream/build/v8/src/allocation.h +169 -0
  1264. data/ext/v8/upstream/build/v8/src/api.cc +4795 -0
  1265. data/ext/v8/upstream/build/v8/src/api.h +485 -0
  1266. data/ext/v8/upstream/build/v8/src/apinatives.js +110 -0
  1267. data/ext/v8/upstream/build/v8/src/apiutils.h +69 -0
  1268. data/ext/v8/upstream/build/v8/src/arguments.h +96 -0
  1269. data/ext/v8/upstream/build/v8/src/arm/assembler-arm-inl.h +305 -0
  1270. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.cc +2580 -0
  1271. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.h +1275 -0
  1272. data/ext/v8/upstream/build/v8/src/arm/builtins-arm.cc +1320 -0
  1273. data/ext/v8/upstream/build/v8/src/arm/codegen-arm-inl.h +48 -0
  1274. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.cc +11398 -0
  1275. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.h +1102 -0
  1276. data/ext/v8/upstream/build/v8/src/arm/constants-arm.cc +154 -0
  1277. data/ext/v8/upstream/build/v8/src/arm/constants-arm.h +388 -0
  1278. data/ext/v8/upstream/build/v8/src/arm/cpu-arm.cc +142 -0
  1279. data/ext/v8/upstream/build/v8/src/arm/debug-arm.cc +309 -0
  1280. data/ext/v8/upstream/build/v8/src/arm/disasm-arm.cc +1459 -0
  1281. data/ext/v8/upstream/build/v8/src/arm/fast-codegen-arm.cc +241 -0
  1282. data/ext/v8/upstream/build/v8/src/arm/frames-arm.cc +123 -0
  1283. data/ext/v8/upstream/build/v8/src/arm/frames-arm.h +162 -0
  1284. data/ext/v8/upstream/build/v8/src/arm/full-codegen-arm.cc +3178 -0
  1285. data/ext/v8/upstream/build/v8/src/arm/ic-arm.cc +2258 -0
  1286. data/ext/v8/upstream/build/v8/src/arm/jump-target-arm.cc +164 -0
  1287. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.cc +1892 -0
  1288. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.h +727 -0
  1289. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.cc +1261 -0
  1290. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.h +266 -0
  1291. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm-inl.h +100 -0
  1292. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.cc +63 -0
  1293. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.h +44 -0
  1294. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.cc +2822 -0
  1295. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.h +361 -0
  1296. data/ext/v8/upstream/build/v8/src/arm/stub-cache-arm.cc +2387 -0
  1297. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm-inl.h +59 -0
  1298. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.cc +834 -0
  1299. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.h +519 -0
  1300. data/ext/v8/upstream/build/v8/src/array.js +1127 -0
  1301. data/ext/v8/upstream/build/v8/src/assembler.cc +801 -0
  1302. data/ext/v8/upstream/build/v8/src/assembler.h +573 -0
  1303. data/ext/v8/upstream/build/v8/src/ast-inl.h +81 -0
  1304. data/ext/v8/upstream/build/v8/src/ast.cc +1152 -0
  1305. data/ext/v8/upstream/build/v8/src/ast.h +2106 -0
  1306. data/ext/v8/upstream/build/v8/src/bootstrapper.cc +1819 -0
  1307. data/ext/v8/upstream/build/v8/src/bootstrapper.h +118 -0
  1308. data/ext/v8/upstream/build/v8/src/builtins.cc +1529 -0
  1309. data/ext/v8/upstream/build/v8/src/builtins.h +263 -0
  1310. data/ext/v8/upstream/build/v8/src/bytecodes-irregexp.h +104 -0
  1311. data/ext/v8/upstream/build/v8/src/cached-powers.h +119 -0
  1312. data/ext/v8/upstream/build/v8/src/char-predicates-inl.h +86 -0
  1313. data/ext/v8/upstream/build/v8/src/char-predicates.h +65 -0
  1314. data/ext/v8/upstream/build/v8/src/checks.cc +100 -0
  1315. data/ext/v8/upstream/build/v8/src/checks.h +310 -0
  1316. data/ext/v8/upstream/build/v8/src/circular-queue-inl.h +53 -0
  1317. data/ext/v8/upstream/build/v8/src/circular-queue.cc +121 -0
  1318. data/ext/v8/upstream/build/v8/src/circular-queue.h +103 -0
  1319. data/ext/v8/upstream/build/v8/src/code-stubs.cc +177 -0
  1320. data/ext/v8/upstream/build/v8/src/code-stubs.h +177 -0
  1321. data/ext/v8/upstream/build/v8/src/code.h +68 -0
  1322. data/ext/v8/upstream/build/v8/src/codegen-inl.h +60 -0
  1323. data/ext/v8/upstream/build/v8/src/codegen.cc +516 -0
  1324. data/ext/v8/upstream/build/v8/src/codegen.h +897 -0
  1325. data/ext/v8/upstream/build/v8/src/compilation-cache.cc +562 -0
  1326. data/ext/v8/upstream/build/v8/src/compilation-cache.h +102 -0
  1327. data/ext/v8/upstream/build/v8/src/compiler.cc +654 -0
  1328. data/ext/v8/upstream/build/v8/src/compiler.h +299 -0
  1329. data/ext/v8/upstream/build/v8/src/contexts.cc +256 -0
  1330. data/ext/v8/upstream/build/v8/src/contexts.h +342 -0
  1331. data/ext/v8/upstream/build/v8/src/conversions-inl.h +110 -0
  1332. data/ext/v8/upstream/build/v8/src/conversions.cc +1119 -0
  1333. data/ext/v8/upstream/build/v8/src/conversions.h +123 -0
  1334. data/ext/v8/upstream/build/v8/src/counters.cc +78 -0
  1335. data/ext/v8/upstream/build/v8/src/counters.h +239 -0
  1336. data/ext/v8/upstream/build/v8/src/cpu-profiler-inl.h +100 -0
  1337. data/ext/v8/upstream/build/v8/src/cpu-profiler.cc +538 -0
  1338. data/ext/v8/upstream/build/v8/src/cpu-profiler.h +285 -0
  1339. data/ext/v8/upstream/build/v8/src/cpu.h +65 -0
  1340. data/ext/v8/upstream/build/v8/src/d8-debug.cc +356 -0
  1341. data/ext/v8/upstream/build/v8/src/d8-debug.h +155 -0
  1342. data/ext/v8/upstream/build/v8/src/d8-posix.cc +693 -0
  1343. data/ext/v8/upstream/build/v8/src/d8-readline.cc +128 -0
  1344. data/ext/v8/upstream/build/v8/src/d8-windows.cc +42 -0
  1345. data/ext/v8/upstream/build/v8/src/d8.cc +783 -0
  1346. data/ext/v8/upstream/build/v8/src/d8.h +227 -0
  1347. data/ext/v8/upstream/build/v8/src/d8.js +1683 -0
  1348. data/ext/v8/upstream/build/v8/src/data-flow.cc +758 -0
  1349. data/ext/v8/upstream/build/v8/src/data-flow.h +278 -0
  1350. data/ext/v8/upstream/build/v8/src/date.js +1059 -0
  1351. data/ext/v8/upstream/build/v8/src/dateparser-inl.h +123 -0
  1352. data/ext/v8/upstream/build/v8/src/dateparser.cc +178 -0
  1353. data/ext/v8/upstream/build/v8/src/dateparser.h +244 -0
  1354. data/ext/v8/upstream/build/v8/src/debug-agent.cc +427 -0
  1355. data/ext/v8/upstream/build/v8/src/debug-agent.h +129 -0
  1356. data/ext/v8/upstream/build/v8/src/debug-debugger.js +2227 -0
  1357. data/ext/v8/upstream/build/v8/src/debug.cc +3005 -0
  1358. data/ext/v8/upstream/build/v8/src/debug.h +993 -0
  1359. data/ext/v8/upstream/build/v8/src/disasm.h +77 -0
  1360. data/ext/v8/upstream/build/v8/src/disassembler.cc +312 -0
  1361. data/ext/v8/upstream/build/v8/src/disassembler.h +56 -0
  1362. data/ext/v8/upstream/build/v8/src/diy-fp.cc +58 -0
  1363. data/ext/v8/upstream/build/v8/src/diy-fp.h +117 -0
  1364. data/ext/v8/upstream/build/v8/src/double.h +169 -0
  1365. data/ext/v8/upstream/build/v8/src/dtoa-config.c +92 -0
  1366. data/ext/v8/upstream/build/v8/src/dtoa.cc +77 -0
  1367. data/ext/v8/upstream/build/v8/src/dtoa.h +81 -0
  1368. data/ext/v8/upstream/build/v8/src/execution.cc +809 -0
  1369. data/ext/v8/upstream/build/v8/src/execution.h +336 -0
  1370. data/ext/v8/upstream/build/v8/src/factory.cc +1003 -0
  1371. data/ext/v8/upstream/build/v8/src/factory.h +410 -0
  1372. data/ext/v8/upstream/build/v8/src/fast-codegen.cc +746 -0
  1373. data/ext/v8/upstream/build/v8/src/fast-codegen.h +161 -0
  1374. data/ext/v8/upstream/build/v8/src/fast-dtoa.cc +505 -0
  1375. data/ext/v8/upstream/build/v8/src/fast-dtoa.h +58 -0
  1376. data/ext/v8/upstream/build/v8/src/fixed-dtoa.cc +405 -0
  1377. data/ext/v8/upstream/build/v8/src/fixed-dtoa.h +55 -0
  1378. data/ext/v8/upstream/build/v8/src/flag-definitions.h +455 -0
  1379. data/ext/v8/upstream/build/v8/src/flags.cc +551 -0
  1380. data/ext/v8/upstream/build/v8/src/flags.h +81 -0
  1381. data/ext/v8/upstream/build/v8/src/flow-graph.cc +763 -0
  1382. data/ext/v8/upstream/build/v8/src/flow-graph.h +180 -0
  1383. data/ext/v8/upstream/build/v8/src/frame-element.cc +42 -0
  1384. data/ext/v8/upstream/build/v8/src/frame-element.h +273 -0
  1385. data/ext/v8/upstream/build/v8/src/frames-inl.h +217 -0
  1386. data/ext/v8/upstream/build/v8/src/frames.cc +826 -0
  1387. data/ext/v8/upstream/build/v8/src/frames.h +682 -0
  1388. data/ext/v8/upstream/build/v8/src/full-codegen.cc +1443 -0
  1389. data/ext/v8/upstream/build/v8/src/full-codegen.h +548 -0
  1390. data/ext/v8/upstream/build/v8/src/func-name-inferrer.cc +76 -0
  1391. data/ext/v8/upstream/build/v8/src/func-name-inferrer.h +135 -0
  1392. data/ext/v8/upstream/build/v8/src/global-handles.cc +520 -0
  1393. data/ext/v8/upstream/build/v8/src/global-handles.h +180 -0
  1394. data/ext/v8/upstream/build/v8/src/globals.h +669 -0
  1395. data/ext/v8/upstream/build/v8/src/handles-inl.h +76 -0
  1396. data/ext/v8/upstream/build/v8/src/handles.cc +825 -0
  1397. data/ext/v8/upstream/build/v8/src/handles.h +393 -0
  1398. data/ext/v8/upstream/build/v8/src/hashmap.cc +226 -0
  1399. data/ext/v8/upstream/build/v8/src/hashmap.h +120 -0
  1400. data/ext/v8/upstream/build/v8/src/heap-inl.h +493 -0
  1401. data/ext/v8/upstream/build/v8/src/heap-profiler.cc +779 -0
  1402. data/ext/v8/upstream/build/v8/src/heap-profiler.h +323 -0
  1403. data/ext/v8/upstream/build/v8/src/heap.cc +4994 -0
  1404. data/ext/v8/upstream/build/v8/src/heap.h +1984 -0
  1405. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32-inl.h +360 -0
  1406. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.cc +2600 -0
  1407. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.h +969 -0
  1408. data/ext/v8/upstream/build/v8/src/ia32/builtins-ia32.cc +1261 -0
  1409. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32-inl.h +46 -0
  1410. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.cc +13968 -0
  1411. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.h +1097 -0
  1412. data/ext/v8/upstream/build/v8/src/ia32/cpu-ia32.cc +83 -0
  1413. data/ext/v8/upstream/build/v8/src/ia32/debug-ia32.cc +309 -0
  1414. data/ext/v8/upstream/build/v8/src/ia32/disasm-ia32.cc +1471 -0
  1415. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.cc +954 -0
  1416. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.h +155 -0
  1417. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.cc +115 -0
  1418. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.h +135 -0
  1419. data/ext/v8/upstream/build/v8/src/ia32/full-codegen-ia32.cc +3281 -0
  1420. data/ext/v8/upstream/build/v8/src/ia32/ic-ia32.cc +1966 -0
  1421. data/ext/v8/upstream/build/v8/src/ia32/jump-target-ia32.cc +437 -0
  1422. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.cc +1610 -0
  1423. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.h +610 -0
  1424. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.cc +1247 -0
  1425. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.h +214 -0
  1426. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32-inl.h +82 -0
  1427. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.cc +157 -0
  1428. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.h +43 -0
  1429. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.cc +30 -0
  1430. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.h +62 -0
  1431. data/ext/v8/upstream/build/v8/src/ia32/stub-cache-ia32.cc +2750 -0
  1432. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.cc +1334 -0
  1433. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.h +627 -0
  1434. data/ext/v8/upstream/build/v8/src/ic-inl.h +120 -0
  1435. data/ext/v8/upstream/build/v8/src/ic.cc +1827 -0
  1436. data/ext/v8/upstream/build/v8/src/ic.h +515 -0
  1437. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.cc +646 -0
  1438. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.h +48 -0
  1439. data/ext/v8/upstream/build/v8/src/json.js +268 -0
  1440. data/ext/v8/upstream/build/v8/src/jsregexp.cc +5283 -0
  1441. data/ext/v8/upstream/build/v8/src/jsregexp.h +1463 -0
  1442. data/ext/v8/upstream/build/v8/src/jump-target-heavy-inl.h +51 -0
  1443. data/ext/v8/upstream/build/v8/src/jump-target-heavy.cc +429 -0
  1444. data/ext/v8/upstream/build/v8/src/jump-target-heavy.h +244 -0
  1445. data/ext/v8/upstream/build/v8/src/jump-target-inl.h +48 -0
  1446. data/ext/v8/upstream/build/v8/src/jump-target-light-inl.h +56 -0
  1447. data/ext/v8/upstream/build/v8/src/jump-target-light.cc +110 -0
  1448. data/ext/v8/upstream/build/v8/src/jump-target-light.h +192 -0
  1449. data/ext/v8/upstream/build/v8/src/jump-target.cc +91 -0
  1450. data/ext/v8/upstream/build/v8/src/jump-target.h +90 -0
  1451. data/ext/v8/upstream/build/v8/src/list-inl.h +166 -0
  1452. data/ext/v8/upstream/build/v8/src/list.h +159 -0
  1453. data/ext/v8/upstream/build/v8/src/liveedit-debugger.js +1057 -0
  1454. data/ext/v8/upstream/build/v8/src/liveedit.cc +1480 -0
  1455. data/ext/v8/upstream/build/v8/src/liveedit.h +170 -0
  1456. data/ext/v8/upstream/build/v8/src/log-inl.h +59 -0
  1457. data/ext/v8/upstream/build/v8/src/log-utils.cc +497 -0
  1458. data/ext/v8/upstream/build/v8/src/log-utils.h +289 -0
  1459. data/ext/v8/upstream/build/v8/src/log.cc +1561 -0
  1460. data/ext/v8/upstream/build/v8/src/log.h +384 -0
  1461. data/ext/v8/upstream/build/v8/src/macro-assembler.h +86 -0
  1462. data/ext/v8/upstream/build/v8/src/macros.py +177 -0
  1463. data/ext/v8/upstream/build/v8/src/mark-compact.cc +2330 -0
  1464. data/ext/v8/upstream/build/v8/src/mark-compact.h +451 -0
  1465. data/ext/v8/upstream/build/v8/src/math.js +264 -0
  1466. data/ext/v8/upstream/build/v8/src/memory.h +74 -0
  1467. data/ext/v8/upstream/build/v8/src/messages.cc +183 -0
  1468. data/ext/v8/upstream/build/v8/src/messages.h +113 -0
  1469. data/ext/v8/upstream/build/v8/src/messages.js +982 -0
  1470. data/ext/v8/upstream/build/v8/src/mips/assembler-mips-inl.h +215 -0
  1471. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.cc +1219 -0
  1472. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.h +668 -0
  1473. data/ext/v8/upstream/build/v8/src/mips/builtins-mips.cc +205 -0
  1474. data/ext/v8/upstream/build/v8/src/mips/codegen-mips-inl.h +70 -0
  1475. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.cc +1437 -0
  1476. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.h +434 -0
  1477. data/ext/v8/upstream/build/v8/src/mips/constants-mips.cc +328 -0
  1478. data/ext/v8/upstream/build/v8/src/mips/constants-mips.h +525 -0
  1479. data/ext/v8/upstream/build/v8/src/mips/cpu-mips.cc +73 -0
  1480. data/ext/v8/upstream/build/v8/src/mips/debug-mips.cc +131 -0
  1481. data/ext/v8/upstream/build/v8/src/mips/disasm-mips.cc +787 -0
  1482. data/ext/v8/upstream/build/v8/src/mips/fast-codegen-mips.cc +77 -0
  1483. data/ext/v8/upstream/build/v8/src/mips/frames-mips.cc +102 -0
  1484. data/ext/v8/upstream/build/v8/src/mips/frames-mips.h +164 -0
  1485. data/ext/v8/upstream/build/v8/src/mips/full-codegen-mips.cc +277 -0
  1486. data/ext/v8/upstream/build/v8/src/mips/ic-mips.cc +220 -0
  1487. data/ext/v8/upstream/build/v8/src/mips/jump-target-mips.cc +175 -0
  1488. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.cc +1326 -0
  1489. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.h +461 -0
  1490. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips-inl.h +137 -0
  1491. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.cc +63 -0
  1492. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.h +46 -0
  1493. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.cc +1651 -0
  1494. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.h +311 -0
  1495. data/ext/v8/upstream/build/v8/src/mips/stub-cache-mips.cc +403 -0
  1496. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.cc +319 -0
  1497. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.h +548 -0
  1498. data/ext/v8/upstream/build/v8/src/mirror-debugger.js +2380 -0
  1499. data/ext/v8/upstream/build/v8/src/mksnapshot.cc +256 -0
  1500. data/ext/v8/upstream/build/v8/src/natives.h +63 -0
  1501. data/ext/v8/upstream/build/v8/src/objects-debug.cc +1366 -0
  1502. data/ext/v8/upstream/build/v8/src/objects-inl.h +3333 -0
  1503. data/ext/v8/upstream/build/v8/src/objects.cc +8820 -0
  1504. data/ext/v8/upstream/build/v8/src/objects.h +5373 -0
  1505. data/ext/v8/upstream/build/v8/src/oprofile-agent.cc +108 -0
  1506. data/ext/v8/upstream/build/v8/src/oprofile-agent.h +77 -0
  1507. data/ext/v8/upstream/build/v8/src/parser.cc +5207 -0
  1508. data/ext/v8/upstream/build/v8/src/parser.h +197 -0
  1509. data/ext/v8/upstream/build/v8/src/platform-freebsd.cc +667 -0
  1510. data/ext/v8/upstream/build/v8/src/platform-linux.cc +862 -0
  1511. data/ext/v8/upstream/build/v8/src/platform-macos.cc +665 -0
  1512. data/ext/v8/upstream/build/v8/src/platform-nullos.cc +454 -0
  1513. data/ext/v8/upstream/build/v8/src/platform-openbsd.cc +622 -0
  1514. data/ext/v8/upstream/build/v8/src/platform-posix.cc +362 -0
  1515. data/ext/v8/upstream/build/v8/src/platform-solaris.cc +653 -0
  1516. data/ext/v8/upstream/build/v8/src/platform-win32.cc +1911 -0
  1517. data/ext/v8/upstream/build/v8/src/platform.h +577 -0
  1518. data/ext/v8/upstream/build/v8/src/powers-ten.h +2461 -0
  1519. data/ext/v8/upstream/build/v8/src/prettyprinter.cc +1531 -0
  1520. data/ext/v8/upstream/build/v8/src/prettyprinter.h +221 -0
  1521. data/ext/v8/upstream/build/v8/src/profile-generator-inl.h +148 -0
  1522. data/ext/v8/upstream/build/v8/src/profile-generator.cc +1830 -0
  1523. data/ext/v8/upstream/build/v8/src/profile-generator.h +853 -0
  1524. data/ext/v8/upstream/build/v8/src/property.cc +96 -0
  1525. data/ext/v8/upstream/build/v8/src/property.h +315 -0
  1526. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  1527. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.cc +464 -0
  1528. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.h +141 -0
  1529. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.cc +356 -0
  1530. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.h +103 -0
  1531. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.cc +261 -0
  1532. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.h +228 -0
  1533. data/ext/v8/upstream/build/v8/src/regexp-stack.cc +103 -0
  1534. data/ext/v8/upstream/build/v8/src/regexp-stack.h +123 -0
  1535. data/ext/v8/upstream/build/v8/src/regexp.js +549 -0
  1536. data/ext/v8/upstream/build/v8/src/register-allocator-inl.h +141 -0
  1537. data/ext/v8/upstream/build/v8/src/register-allocator.cc +104 -0
  1538. data/ext/v8/upstream/build/v8/src/register-allocator.h +320 -0
  1539. data/ext/v8/upstream/build/v8/src/rewriter.cc +1038 -0
  1540. data/ext/v8/upstream/build/v8/src/rewriter.h +54 -0
  1541. data/ext/v8/upstream/build/v8/src/runtime.cc +10599 -0
  1542. data/ext/v8/upstream/build/v8/src/runtime.h +459 -0
  1543. data/ext/v8/upstream/build/v8/src/runtime.js +629 -0
  1544. data/ext/v8/upstream/build/v8/src/scanner.cc +1346 -0
  1545. data/ext/v8/upstream/build/v8/src/scanner.h +503 -0
  1546. data/ext/v8/upstream/build/v8/src/scopeinfo.cc +637 -0
  1547. data/ext/v8/upstream/build/v8/src/scopeinfo.h +233 -0
  1548. data/ext/v8/upstream/build/v8/src/scopes.cc +962 -0
  1549. data/ext/v8/upstream/build/v8/src/scopes.h +400 -0
  1550. data/ext/v8/upstream/build/v8/src/serialize.cc +1461 -0
  1551. data/ext/v8/upstream/build/v8/src/serialize.h +581 -0
  1552. data/ext/v8/upstream/build/v8/src/shell.h +55 -0
  1553. data/ext/v8/upstream/build/v8/src/simulator.h +43 -0
  1554. data/ext/v8/upstream/build/v8/src/smart-pointer.h +109 -0
  1555. data/ext/v8/upstream/build/v8/src/snapshot-common.cc +82 -0
  1556. data/ext/v8/upstream/build/v8/src/snapshot-empty.cc +50 -0
  1557. data/ext/v8/upstream/build/v8/src/snapshot.h +71 -0
  1558. data/ext/v8/upstream/build/v8/src/spaces-inl.h +483 -0
  1559. data/ext/v8/upstream/build/v8/src/spaces.cc +2901 -0
  1560. data/ext/v8/upstream/build/v8/src/spaces.h +2197 -0
  1561. data/ext/v8/upstream/build/v8/src/splay-tree-inl.h +310 -0
  1562. data/ext/v8/upstream/build/v8/src/splay-tree.h +203 -0
  1563. data/ext/v8/upstream/build/v8/src/string-stream.cc +584 -0
  1564. data/ext/v8/upstream/build/v8/src/string-stream.h +189 -0
  1565. data/ext/v8/upstream/build/v8/src/string.js +1006 -0
  1566. data/ext/v8/upstream/build/v8/src/stub-cache.cc +1379 -0
  1567. data/ext/v8/upstream/build/v8/src/stub-cache.h +756 -0
  1568. data/ext/v8/upstream/build/v8/src/third_party/dtoa/COPYING +15 -0
  1569. data/ext/v8/upstream/build/v8/src/third_party/dtoa/dtoa.c +3334 -0
  1570. data/ext/v8/upstream/build/v8/src/third_party/valgrind/valgrind.h +3925 -0
  1571. data/ext/v8/upstream/build/v8/src/token.cc +56 -0
  1572. data/ext/v8/upstream/build/v8/src/token.h +270 -0
  1573. data/ext/v8/upstream/build/v8/src/top.cc +1067 -0
  1574. data/ext/v8/upstream/build/v8/src/top.h +463 -0
  1575. data/ext/v8/upstream/build/v8/src/type-info.cc +53 -0
  1576. data/ext/v8/upstream/build/v8/src/type-info.h +244 -0
  1577. data/ext/v8/upstream/build/v8/src/unbound-queue-inl.h +95 -0
  1578. data/ext/v8/upstream/build/v8/src/unbound-queue.h +67 -0
  1579. data/ext/v8/upstream/build/v8/src/unicode-inl.h +238 -0
  1580. data/ext/v8/upstream/build/v8/src/unicode.cc +749 -0
  1581. data/ext/v8/upstream/build/v8/src/unicode.h +279 -0
  1582. data/ext/v8/upstream/build/v8/src/uri.js +415 -0
  1583. data/ext/v8/upstream/build/v8/src/utils.cc +285 -0
  1584. data/ext/v8/upstream/build/v8/src/utils.h +745 -0
  1585. data/ext/v8/upstream/build/v8/src/v8-counters.cc +55 -0
  1586. data/ext/v8/upstream/build/v8/src/v8-counters.h +250 -0
  1587. data/ext/v8/upstream/build/v8/src/v8.cc +228 -0
  1588. data/ext/v8/upstream/build/v8/src/v8.h +121 -0
  1589. data/ext/v8/upstream/build/v8/src/v8dll-main.cc +39 -0
  1590. data/ext/v8/upstream/build/v8/src/v8natives.js +1188 -0
  1591. data/ext/v8/upstream/build/v8/src/v8threads.cc +461 -0
  1592. data/ext/v8/upstream/build/v8/src/v8threads.h +159 -0
  1593. data/ext/v8/upstream/build/v8/src/variables.cc +119 -0
  1594. data/ext/v8/upstream/build/v8/src/variables.h +205 -0
  1595. data/ext/v8/upstream/build/v8/src/version.cc +88 -0
  1596. data/ext/v8/upstream/build/v8/src/version.h +64 -0
  1597. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy-inl.h +192 -0
  1598. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy.cc +312 -0
  1599. data/ext/v8/upstream/build/v8/src/virtual-frame-inl.h +39 -0
  1600. data/ext/v8/upstream/build/v8/src/virtual-frame-light-inl.h +170 -0
  1601. data/ext/v8/upstream/build/v8/src/virtual-frame-light.cc +52 -0
  1602. data/ext/v8/upstream/build/v8/src/virtual-frame.cc +49 -0
  1603. data/ext/v8/upstream/build/v8/src/virtual-frame.h +46 -0
  1604. data/ext/v8/upstream/build/v8/src/vm-state-inl.h +137 -0
  1605. data/ext/v8/upstream/build/v8/src/vm-state.cc +39 -0
  1606. data/ext/v8/upstream/build/v8/src/vm-state.h +77 -0
  1607. data/ext/v8/upstream/build/v8/src/x64/assembler-x64-inl.h +400 -0
  1608. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.cc +2963 -0
  1609. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.h +1438 -0
  1610. data/ext/v8/upstream/build/v8/src/x64/builtins-x64.cc +1296 -0
  1611. data/ext/v8/upstream/build/v8/src/x64/codegen-x64-inl.h +46 -0
  1612. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.cc +12491 -0
  1613. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.h +1090 -0
  1614. data/ext/v8/upstream/build/v8/src/x64/cpu-x64.cc +83 -0
  1615. data/ext/v8/upstream/build/v8/src/x64/debug-x64.cc +267 -0
  1616. data/ext/v8/upstream/build/v8/src/x64/disasm-x64.cc +1696 -0
  1617. data/ext/v8/upstream/build/v8/src/x64/fast-codegen-x64.cc +250 -0
  1618. data/ext/v8/upstream/build/v8/src/x64/frames-x64.cc +113 -0
  1619. data/ext/v8/upstream/build/v8/src/x64/frames-x64.h +125 -0
  1620. data/ext/v8/upstream/build/v8/src/x64/full-codegen-x64.cc +3270 -0
  1621. data/ext/v8/upstream/build/v8/src/x64/ic-x64.cc +1907 -0
  1622. data/ext/v8/upstream/build/v8/src/x64/jump-target-x64.cc +437 -0
  1623. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.cc +2793 -0
  1624. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.h +916 -0
  1625. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.cc +1374 -0
  1626. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.h +277 -0
  1627. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64-inl.h +87 -0
  1628. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.cc +91 -0
  1629. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.h +43 -0
  1630. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.cc +27 -0
  1631. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.h +63 -0
  1632. data/ext/v8/upstream/build/v8/src/x64/stub-cache-x64.cc +2560 -0
  1633. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.cc +1264 -0
  1634. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.h +590 -0
  1635. data/ext/v8/upstream/build/v8/src/zone-inl.h +82 -0
  1636. data/ext/v8/upstream/build/v8/src/zone.cc +194 -0
  1637. data/ext/v8/upstream/build/v8/src/zone.h +221 -0
  1638. data/ext/v8/upstream/build/v8/tools/codemap.js +270 -0
  1639. data/ext/v8/upstream/build/v8/tools/consarray.js +93 -0
  1640. data/ext/v8/upstream/build/v8/tools/csvparser.js +83 -0
  1641. data/ext/v8/upstream/build/v8/tools/gc-nvp-trace-processor.py +317 -0
  1642. data/ext/v8/upstream/build/v8/tools/generate-ten-powers.scm +286 -0
  1643. data/ext/v8/upstream/build/v8/tools/gyp/v8.gyp +749 -0
  1644. data/ext/v8/upstream/build/v8/tools/js2c.py +380 -0
  1645. data/ext/v8/upstream/build/v8/tools/jsmin.py +280 -0
  1646. data/ext/v8/upstream/build/v8/tools/linux-tick-processor +33 -0
  1647. data/ext/v8/upstream/build/v8/tools/linux-tick-processor.py +78 -0
  1648. data/ext/v8/upstream/build/v8/tools/logreader.js +338 -0
  1649. data/ext/v8/upstream/build/v8/tools/mac-nm +18 -0
  1650. data/ext/v8/upstream/build/v8/tools/mac-tick-processor +6 -0
  1651. data/ext/v8/upstream/build/v8/tools/oprofile/annotate +7 -0
  1652. data/ext/v8/upstream/build/v8/tools/oprofile/common +19 -0
  1653. data/ext/v8/upstream/build/v8/tools/oprofile/dump +7 -0
  1654. data/ext/v8/upstream/build/v8/tools/oprofile/report +7 -0
  1655. data/ext/v8/upstream/build/v8/tools/oprofile/reset +7 -0
  1656. data/ext/v8/upstream/build/v8/tools/oprofile/run +14 -0
  1657. data/ext/v8/upstream/build/v8/tools/oprofile/shutdown +7 -0
  1658. data/ext/v8/upstream/build/v8/tools/oprofile/start +7 -0
  1659. data/ext/v8/upstream/build/v8/tools/presubmit.py +299 -0
  1660. data/ext/v8/upstream/build/v8/tools/process-heap-prof.py +120 -0
  1661. data/ext/v8/upstream/build/v8/tools/profile.js +691 -0
  1662. data/ext/v8/upstream/build/v8/tools/profile_view.js +224 -0
  1663. data/ext/v8/upstream/build/v8/tools/run-valgrind.py +77 -0
  1664. data/ext/v8/upstream/build/v8/tools/splaytree.js +322 -0
  1665. data/ext/v8/upstream/build/v8/tools/splaytree.py +226 -0
  1666. data/ext/v8/upstream/build/v8/tools/stats-viewer.py +468 -0
  1667. data/ext/v8/upstream/build/v8/tools/tickprocessor-driver.js +59 -0
  1668. data/ext/v8/upstream/build/v8/tools/tickprocessor.js +862 -0
  1669. data/ext/v8/upstream/build/v8/tools/tickprocessor.py +571 -0
  1670. data/ext/v8/upstream/build/v8/tools/utils.py +88 -0
  1671. data/ext/v8/upstream/build/v8/tools/visual_studio/README.txt +71 -0
  1672. data/ext/v8/upstream/build/v8/tools/visual_studio/arm.vsprops +14 -0
  1673. data/ext/v8/upstream/build/v8/tools/visual_studio/common.vsprops +34 -0
  1674. data/ext/v8/upstream/build/v8/tools/visual_studio/d8.vcproj +193 -0
  1675. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_arm.vcproj +193 -0
  1676. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_x64.vcproj +209 -0
  1677. data/ext/v8/upstream/build/v8/tools/visual_studio/d8js2c.cmd +6 -0
  1678. data/ext/v8/upstream/build/v8/tools/visual_studio/debug.vsprops +17 -0
  1679. data/ext/v8/upstream/build/v8/tools/visual_studio/ia32.vsprops +17 -0
  1680. data/ext/v8/upstream/build/v8/tools/visual_studio/js2c.cmd +6 -0
  1681. data/ext/v8/upstream/build/v8/tools/visual_studio/release.vsprops +24 -0
  1682. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.sln +101 -0
  1683. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.vcproj +227 -0
  1684. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.sln +74 -0
  1685. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.vcproj +227 -0
  1686. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base.vcproj +1143 -0
  1687. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_arm.vcproj +1115 -0
  1688. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_x64.vcproj +1096 -0
  1689. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest.vcproj +265 -0
  1690. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_arm.vcproj +249 -0
  1691. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  1692. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot.vcproj +145 -0
  1693. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot_x64.vcproj +145 -0
  1694. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample.vcproj +145 -0
  1695. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_arm.vcproj +145 -0
  1696. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_x64.vcproj +161 -0
  1697. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample.vcproj +145 -0
  1698. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -0
  1699. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_x64.vcproj +161 -0
  1700. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot.vcproj +142 -0
  1701. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  1702. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  1703. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  1704. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.sln +101 -0
  1705. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.vcproj +227 -0
  1706. data/ext/v8/upstream/build/v8/tools/visual_studio/x64.vsprops +17 -0
  1707. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.bat +29 -0
  1708. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.py +137 -0
  1709. data/ext/v8/upstream/detect_cpu.rb +27 -0
  1710. data/ext/v8/upstream/fpic-on-linux-amd64.patch +13 -0
  1711. data/ext/v8/upstream/scons/CHANGES.txt +5183 -0
  1712. data/ext/v8/upstream/scons/LICENSE.txt +20 -0
  1713. data/ext/v8/upstream/scons/MANIFEST +202 -0
  1714. data/ext/v8/upstream/scons/PKG-INFO +13 -0
  1715. data/ext/v8/upstream/scons/README.txt +273 -0
  1716. data/ext/v8/upstream/scons/RELEASE.txt +1040 -0
  1717. data/ext/v8/upstream/scons/engine/SCons/Action.py +1256 -0
  1718. data/ext/v8/upstream/scons/engine/SCons/Builder.py +868 -0
  1719. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +217 -0
  1720. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +794 -0
  1721. data/ext/v8/upstream/scons/engine/SCons/Debug.py +237 -0
  1722. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +485 -0
  1723. data/ext/v8/upstream/scons/engine/SCons/Environment.py +2327 -0
  1724. data/ext/v8/upstream/scons/engine/SCons/Errors.py +207 -0
  1725. data/ext/v8/upstream/scons/engine/SCons/Executor.py +636 -0
  1726. data/ext/v8/upstream/scons/engine/SCons/Job.py +435 -0
  1727. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +292 -0
  1728. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +153 -0
  1729. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +3220 -0
  1730. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +128 -0
  1731. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +1341 -0
  1732. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +50 -0
  1733. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +50 -0
  1734. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +50 -0
  1735. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +50 -0
  1736. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +76 -0
  1737. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +74 -0
  1738. data/ext/v8/upstream/scons/engine/SCons/PathList.py +232 -0
  1739. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +236 -0
  1740. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +70 -0
  1741. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +55 -0
  1742. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +46 -0
  1743. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +46 -0
  1744. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +44 -0
  1745. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +58 -0
  1746. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +264 -0
  1747. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +50 -0
  1748. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +386 -0
  1749. data/ext/v8/upstream/scons/engine/SCons/SConf.py +1038 -0
  1750. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +381 -0
  1751. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +132 -0
  1752. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +74 -0
  1753. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +111 -0
  1754. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +320 -0
  1755. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +48 -0
  1756. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  1757. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +103 -0
  1758. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +55 -0
  1759. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +415 -0
  1760. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +386 -0
  1761. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +1360 -0
  1762. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +944 -0
  1763. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +642 -0
  1764. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +414 -0
  1765. data/ext/v8/upstream/scons/engine/SCons/Sig.py +63 -0
  1766. data/ext/v8/upstream/scons/engine/SCons/Subst.py +911 -0
  1767. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +1030 -0
  1768. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +61 -0
  1769. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  1770. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +73 -0
  1771. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  1772. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  1773. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  1774. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  1775. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  1776. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  1777. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  1778. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  1779. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  1780. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +104 -0
  1781. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  1782. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +64 -0
  1783. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +64 -0
  1784. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +71 -0
  1785. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +675 -0
  1786. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +82 -0
  1787. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +74 -0
  1788. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +80 -0
  1789. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +76 -0
  1790. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +71 -0
  1791. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +63 -0
  1792. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +78 -0
  1793. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +82 -0
  1794. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +99 -0
  1795. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +114 -0
  1796. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +58 -0
  1797. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +50 -0
  1798. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +224 -0
  1799. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +64 -0
  1800. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +125 -0
  1801. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +94 -0
  1802. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +62 -0
  1803. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +62 -0
  1804. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +63 -0
  1805. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +98 -0
  1806. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +63 -0
  1807. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +90 -0
  1808. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +73 -0
  1809. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +53 -0
  1810. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +80 -0
  1811. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +64 -0
  1812. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +63 -0
  1813. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +81 -0
  1814. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +85 -0
  1815. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +53 -0
  1816. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +77 -0
  1817. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +59 -0
  1818. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +52 -0
  1819. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +72 -0
  1820. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +90 -0
  1821. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +59 -0
  1822. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +60 -0
  1823. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +229 -0
  1824. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +490 -0
  1825. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +71 -0
  1826. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +110 -0
  1827. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +234 -0
  1828. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +138 -0
  1829. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +79 -0
  1830. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +99 -0
  1831. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +121 -0
  1832. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +112 -0
  1833. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +63 -0
  1834. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +77 -0
  1835. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +90 -0
  1836. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +159 -0
  1837. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +64 -0
  1838. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +266 -0
  1839. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +50 -0
  1840. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +269 -0
  1841. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +1439 -0
  1842. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +208 -0
  1843. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +107 -0
  1844. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +72 -0
  1845. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  1846. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  1847. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  1848. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  1849. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  1850. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  1851. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  1852. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  1853. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  1854. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  1855. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +78 -0
  1856. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +83 -0
  1857. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +108 -0
  1858. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +336 -0
  1859. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +121 -0
  1860. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +70 -0
  1861. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +132 -0
  1862. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +68 -0
  1863. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +58 -0
  1864. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +53 -0
  1865. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +63 -0
  1866. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +67 -0
  1867. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +142 -0
  1868. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +58 -0
  1869. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +63 -0
  1870. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +64 -0
  1871. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +64 -0
  1872. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +77 -0
  1873. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +186 -0
  1874. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +73 -0
  1875. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +805 -0
  1876. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +175 -0
  1877. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +53 -0
  1878. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +100 -0
  1879. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +131 -0
  1880. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +100 -0
  1881. data/ext/v8/upstream/scons/engine/SCons/Util.py +1645 -0
  1882. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  1883. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  1884. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +139 -0
  1885. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  1886. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +147 -0
  1887. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +317 -0
  1888. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +228 -0
  1889. data/ext/v8/upstream/scons/engine/SCons/__init__.py +49 -0
  1890. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +302 -0
  1891. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  1892. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  1893. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  1894. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  1895. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +583 -0
  1896. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  1897. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  1898. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  1899. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  1900. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +187 -0
  1901. data/ext/v8/upstream/scons/engine/SCons/cpp.py +598 -0
  1902. data/ext/v8/upstream/scons/engine/SCons/dblite.py +248 -0
  1903. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +77 -0
  1904. data/ext/v8/upstream/scons/os_spawnv_fix.diff +83 -0
  1905. data/ext/v8/upstream/scons/scons-time.1 +1017 -0
  1906. data/ext/v8/upstream/scons/scons.1 +15179 -0
  1907. data/ext/v8/upstream/scons/sconsign.1 +208 -0
  1908. data/ext/v8/upstream/scons/script/scons +184 -0
  1909. data/ext/v8/upstream/scons/script/scons-time +1529 -0
  1910. data/ext/v8/upstream/scons/script/scons.bat +31 -0
  1911. data/ext/v8/upstream/scons/script/sconsign +508 -0
  1912. data/ext/v8/upstream/scons/setup.cfg +6 -0
  1913. data/ext/v8/upstream/scons/setup.py +427 -0
  1914. data/ext/v8/v8.cpp +41 -0
  1915. data/ext/v8/v8_array.cpp +50 -0
  1916. data/ext/v8/v8_array.h +8 -0
  1917. data/ext/v8/v8_callbacks.cpp +121 -0
  1918. data/ext/v8/v8_callbacks.h +8 -0
  1919. data/ext/v8/v8_cxt.cpp +92 -0
  1920. data/ext/v8/v8_cxt.h +6 -0
  1921. data/ext/v8/v8_date.cpp +35 -0
  1922. data/ext/v8/v8_date.h +6 -0
  1923. data/ext/v8/v8_exception.cpp +128 -0
  1924. data/ext/v8/v8_exception.h +11 -0
  1925. data/ext/v8/v8_external.cpp +57 -0
  1926. data/ext/v8/v8_external.h +9 -0
  1927. data/ext/v8/v8_func.cpp +66 -0
  1928. data/ext/v8/v8_func.h +12 -0
  1929. data/ext/v8/v8_locker.cpp +41 -0
  1930. data/ext/v8/v8_locker.h +6 -0
  1931. data/ext/v8/v8_msg.cpp +68 -0
  1932. data/ext/v8/v8_msg.h +10 -0
  1933. data/ext/v8/v8_obj.cpp +96 -0
  1934. data/ext/v8/v8_obj.h +11 -0
  1935. data/ext/v8/v8_ref.cpp +37 -0
  1936. data/ext/v8/v8_ref.h +28 -0
  1937. data/ext/v8/v8_script.cpp +36 -0
  1938. data/ext/v8/v8_script.h +8 -0
  1939. data/ext/v8/v8_str.cpp +52 -0
  1940. data/ext/v8/v8_str.h +9 -0
  1941. data/ext/v8/v8_template.cpp +329 -0
  1942. data/ext/v8/v8_template.h +8 -0
  1943. data/ext/v8/v8_try_catch.cpp +99 -0
  1944. data/ext/v8/v8_try_catch.h +5 -0
  1945. data/ext/v8/v8_value.cpp +167 -0
  1946. data/ext/v8/v8_value.h +10 -0
  1947. data/lib/v8.rb +16 -0
  1948. data/lib/v8/access.rb +87 -0
  1949. data/lib/v8/array.rb +17 -0
  1950. data/lib/v8/cli.rb +131 -0
  1951. data/lib/v8/context.rb +88 -0
  1952. data/lib/v8/error.rb +129 -0
  1953. data/lib/v8/function.rb +28 -0
  1954. data/lib/v8/object.rb +69 -0
  1955. data/lib/v8/portal.rb +327 -0
  1956. data/lib/v8/portal/functions.rb +45 -0
  1957. data/lib/v8/tap.rb +9 -0
  1958. data/lib/v8/version.rb +3 -0
  1959. data/spec/ext/cxt_spec.rb +12 -0
  1960. data/spec/ext/func_spec.rb +49 -0
  1961. data/spec/ext/try_catch_spec.rb +32 -0
  1962. data/spec/redjs_helper.rb +3 -0
  1963. data/spec/spec_helper.rb +8 -0
  1964. data/spec/v8/error_spec.rb +131 -0
  1965. data/therubyracer-heroku.gemspec +24 -0
  1966. metadata +2061 -0
@@ -0,0 +1,3005 @@
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