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,153 @@
1
+
2
+ """scons.Node.Alias
3
+
4
+ Alias nodes.
5
+
6
+ This creates a hash of global Aliases (dummy targets).
7
+
8
+ """
9
+
10
+ #
11
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
12
+ #
13
+ # Permission is hereby granted, free of charge, to any person obtaining
14
+ # a copy of this software and associated documentation files (the
15
+ # "Software"), to deal in the Software without restriction, including
16
+ # without limitation the rights to use, copy, modify, merge, publish,
17
+ # distribute, sublicense, and/or sell copies of the Software, and to
18
+ # permit persons to whom the Software is furnished to do so, subject to
19
+ # the following conditions:
20
+ #
21
+ # The above copyright notice and this permission notice shall be included
22
+ # in all copies or substantial portions of the Software.
23
+ #
24
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
25
+ # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
26
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
+ #
32
+
33
+ __revision__ = "src/engine/SCons/Node/Alias.py 4629 2010/01/17 22:23:21 scons"
34
+
35
+ import string
36
+ import UserDict
37
+
38
+ import SCons.Errors
39
+ import SCons.Node
40
+ import SCons.Util
41
+
42
+ class AliasNameSpace(UserDict.UserDict):
43
+ def Alias(self, name, **kw):
44
+ if isinstance(name, SCons.Node.Alias.Alias):
45
+ return name
46
+ try:
47
+ a = self[name]
48
+ except KeyError:
49
+ a = apply(SCons.Node.Alias.Alias, (name,), kw)
50
+ self[name] = a
51
+ return a
52
+
53
+ def lookup(self, name, **kw):
54
+ try:
55
+ return self[name]
56
+ except KeyError:
57
+ return None
58
+
59
+ class AliasNodeInfo(SCons.Node.NodeInfoBase):
60
+ current_version_id = 1
61
+ field_list = ['csig']
62
+ def str_to_node(self, s):
63
+ return default_ans.Alias(s)
64
+
65
+ class AliasBuildInfo(SCons.Node.BuildInfoBase):
66
+ current_version_id = 1
67
+
68
+ class Alias(SCons.Node.Node):
69
+
70
+ NodeInfo = AliasNodeInfo
71
+ BuildInfo = AliasBuildInfo
72
+
73
+ def __init__(self, name):
74
+ SCons.Node.Node.__init__(self)
75
+ self.name = name
76
+
77
+ def str_for_display(self):
78
+ return '"' + self.__str__() + '"'
79
+
80
+ def __str__(self):
81
+ return self.name
82
+
83
+ def make_ready(self):
84
+ self.get_csig()
85
+
86
+ really_build = SCons.Node.Node.build
87
+ is_up_to_date = SCons.Node.Node.children_are_up_to_date
88
+
89
+ def is_under(self, dir):
90
+ # Make Alias nodes get built regardless of
91
+ # what directory scons was run from. Alias nodes
92
+ # are outside the filesystem:
93
+ return 1
94
+
95
+ def get_contents(self):
96
+ """The contents of an alias is the concatenation
97
+ of the content signatures of all its sources."""
98
+ childsigs = map(lambda n: n.get_csig(), self.children())
99
+ return string.join(childsigs, '')
100
+
101
+ def sconsign(self):
102
+ """An Alias is not recorded in .sconsign files"""
103
+ pass
104
+
105
+ #
106
+ #
107
+ #
108
+
109
+ def changed_since_last_build(self, target, prev_ni):
110
+ cur_csig = self.get_csig()
111
+ try:
112
+ return cur_csig != prev_ni.csig
113
+ except AttributeError:
114
+ return 1
115
+
116
+ def build(self):
117
+ """A "builder" for aliases."""
118
+ pass
119
+
120
+ def convert(self):
121
+ try: del self.builder
122
+ except AttributeError: pass
123
+ self.reset_executor()
124
+ self.build = self.really_build
125
+
126
+ def get_csig(self):
127
+ """
128
+ Generate a node's content signature, the digested signature
129
+ of its content.
130
+
131
+ node - the node
132
+ cache - alternate node to use for the signature cache
133
+ returns - the content signature
134
+ """
135
+ try:
136
+ return self.ninfo.csig
137
+ except AttributeError:
138
+ pass
139
+
140
+ contents = self.get_contents()
141
+ csig = SCons.Util.MD5signature(contents)
142
+ self.get_ninfo().csig = csig
143
+ return csig
144
+
145
+ default_ans = AliasNameSpace()
146
+
147
+ SCons.Node.arg2nodes_lookups.append(default_ans.lookup)
148
+
149
+ # Local Variables:
150
+ # tab-width:4
151
+ # indent-tabs-mode:nil
152
+ # End:
153
+ # vim: set expandtab tabstop=4 shiftwidth=4:
@@ -0,0 +1,3220 @@
1
+ """scons.Node.FS
2
+
3
+ File system nodes.
4
+
5
+ These Nodes represent the canonical external objects that people think
6
+ of when they think of building software: files and directories.
7
+
8
+ This holds a "default_fs" variable that should be initialized with an FS
9
+ that can be used by scripts or modules looking for the canonical default.
10
+
11
+ """
12
+
13
+ #
14
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
15
+ #
16
+ # Permission is hereby granted, free of charge, to any person obtaining
17
+ # a copy of this software and associated documentation files (the
18
+ # "Software"), to deal in the Software without restriction, including
19
+ # without limitation the rights to use, copy, modify, merge, publish,
20
+ # distribute, sublicense, and/or sell copies of the Software, and to
21
+ # permit persons to whom the Software is furnished to do so, subject to
22
+ # the following conditions:
23
+ #
24
+ # The above copyright notice and this permission notice shall be included
25
+ # in all copies or substantial portions of the Software.
26
+ #
27
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
28
+ # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
29
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
+ #
35
+
36
+ __revision__ = "src/engine/SCons/Node/FS.py 4629 2010/01/17 22:23:21 scons"
37
+
38
+ from itertools import izip
39
+ import cStringIO
40
+ import fnmatch
41
+ import os
42
+ import os.path
43
+ import re
44
+ import shutil
45
+ import stat
46
+ import string
47
+ import sys
48
+ import time
49
+
50
+ try:
51
+ import codecs
52
+ except ImportError:
53
+ pass
54
+ else:
55
+ # TODO(2.2): Remove when 2.3 becomes the minimal supported version.
56
+ try:
57
+ codecs.BOM_UTF8
58
+ except AttributeError:
59
+ codecs.BOM_UTF8 = '\xef\xbb\xbf'
60
+ try:
61
+ codecs.BOM_UTF16_LE
62
+ codecs.BOM_UTF16_BE
63
+ except AttributeError:
64
+ codecs.BOM_UTF16_LE = '\xff\xfe'
65
+ codecs.BOM_UTF16_BE = '\xfe\xff'
66
+
67
+ # Provide a wrapper function to handle decoding differences in
68
+ # different versions of Python. Normally, we'd try to do this in the
69
+ # compat layer (and maybe it still makes sense to move there?) but
70
+ # that doesn't provide a way to supply the string class used in
71
+ # pre-2.3 Python versions with a .decode() method that all strings
72
+ # naturally have. Plus, the 2.[01] encodings behave differently
73
+ # enough that we have to settle for a lowest-common-denominator
74
+ # wrapper approach.
75
+ #
76
+ # Note that the 2.[012] implementations below may be inefficient
77
+ # because they perform an explicit look up of the encoding for every
78
+ # decode, but they're old enough (and we want to stop supporting
79
+ # them soon enough) that it's not worth complicating the interface.
80
+ # Think of it as additional incentive for people to upgrade...
81
+ try:
82
+ ''.decode
83
+ except AttributeError:
84
+ # 2.0 through 2.2: strings have no .decode() method
85
+ try:
86
+ codecs.lookup('ascii').decode
87
+ except AttributeError:
88
+ # 2.0 and 2.1: encodings are a tuple of functions, and the
89
+ # decode() function returns a (result, length) tuple.
90
+ def my_decode(contents, encoding):
91
+ return codecs.lookup(encoding)[1](contents)[0]
92
+ else:
93
+ # 2.2: encodings are an object with methods, and the
94
+ # .decode() method returns just the decoded bytes.
95
+ def my_decode(contents, encoding):
96
+ return codecs.lookup(encoding).decode(contents)
97
+ else:
98
+ # 2.3 or later: use the .decode() string method
99
+ def my_decode(contents, encoding):
100
+ return contents.decode(encoding)
101
+
102
+ import SCons.Action
103
+ from SCons.Debug import logInstanceCreation
104
+ import SCons.Errors
105
+ import SCons.Memoize
106
+ import SCons.Node
107
+ import SCons.Node.Alias
108
+ import SCons.Subst
109
+ import SCons.Util
110
+ import SCons.Warnings
111
+
112
+ from SCons.Debug import Trace
113
+
114
+ do_store_info = True
115
+
116
+
117
+ class EntryProxyAttributeError(AttributeError):
118
+ """
119
+ An AttributeError subclass for recording and displaying the name
120
+ of the underlying Entry involved in an AttributeError exception.
121
+ """
122
+ def __init__(self, entry_proxy, attribute):
123
+ AttributeError.__init__(self)
124
+ self.entry_proxy = entry_proxy
125
+ self.attribute = attribute
126
+ def __str__(self):
127
+ entry = self.entry_proxy.get()
128
+ fmt = "%s instance %s has no attribute %s"
129
+ return fmt % (entry.__class__.__name__,
130
+ repr(entry.name),
131
+ repr(self.attribute))
132
+
133
+ # The max_drift value: by default, use a cached signature value for
134
+ # any file that's been untouched for more than two days.
135
+ default_max_drift = 2*24*60*60
136
+
137
+ #
138
+ # We stringify these file system Nodes a lot. Turning a file system Node
139
+ # into a string is non-trivial, because the final string representation
140
+ # can depend on a lot of factors: whether it's a derived target or not,
141
+ # whether it's linked to a repository or source directory, and whether
142
+ # there's duplication going on. The normal technique for optimizing
143
+ # calculations like this is to memoize (cache) the string value, so you
144
+ # only have to do the calculation once.
145
+ #
146
+ # A number of the above factors, however, can be set after we've already
147
+ # been asked to return a string for a Node, because a Repository() or
148
+ # VariantDir() call or the like may not occur until later in SConscript
149
+ # files. So this variable controls whether we bother trying to save
150
+ # string values for Nodes. The wrapper interface can set this whenever
151
+ # they're done mucking with Repository and VariantDir and the other stuff,
152
+ # to let this module know it can start returning saved string values
153
+ # for Nodes.
154
+ #
155
+ Save_Strings = None
156
+
157
+ def save_strings(val):
158
+ global Save_Strings
159
+ Save_Strings = val
160
+
161
+ #
162
+ # Avoid unnecessary function calls by recording a Boolean value that
163
+ # tells us whether or not os.path.splitdrive() actually does anything
164
+ # on this system, and therefore whether we need to bother calling it
165
+ # when looking up path names in various methods below.
166
+ #
167
+
168
+ do_splitdrive = None
169
+
170
+ def initialize_do_splitdrive():
171
+ global do_splitdrive
172
+ drive, path = os.path.splitdrive('X:/foo')
173
+ do_splitdrive = not not drive
174
+
175
+ initialize_do_splitdrive()
176
+
177
+ #
178
+
179
+ needs_normpath_check = None
180
+
181
+ def initialize_normpath_check():
182
+ """
183
+ Initialize the normpath_check regular expression.
184
+
185
+ This function is used by the unit tests to re-initialize the pattern
186
+ when testing for behavior with different values of os.sep.
187
+ """
188
+ global needs_normpath_check
189
+ if os.sep == '/':
190
+ pattern = r'.*/|\.$|\.\.$'
191
+ else:
192
+ pattern = r'.*[/%s]|\.$|\.\.$' % re.escape(os.sep)
193
+ needs_normpath_check = re.compile(pattern)
194
+
195
+ initialize_normpath_check()
196
+
197
+ #
198
+ # SCons.Action objects for interacting with the outside world.
199
+ #
200
+ # The Node.FS methods in this module should use these actions to
201
+ # create and/or remove files and directories; they should *not* use
202
+ # os.{link,symlink,unlink,mkdir}(), etc., directly.
203
+ #
204
+ # Using these SCons.Action objects ensures that descriptions of these
205
+ # external activities are properly displayed, that the displays are
206
+ # suppressed when the -s (silent) option is used, and (most importantly)
207
+ # the actions are disabled when the the -n option is used, in which case
208
+ # there should be *no* changes to the external file system(s)...
209
+ #
210
+
211
+ if hasattr(os, 'link'):
212
+ def _hardlink_func(fs, src, dst):
213
+ # If the source is a symlink, we can't just hard-link to it
214
+ # because a relative symlink may point somewhere completely
215
+ # different. We must disambiguate the symlink and then
216
+ # hard-link the final destination file.
217
+ while fs.islink(src):
218
+ link = fs.readlink(src)
219
+ if not os.path.isabs(link):
220
+ src = link
221
+ else:
222
+ src = os.path.join(os.path.dirname(src), link)
223
+ fs.link(src, dst)
224
+ else:
225
+ _hardlink_func = None
226
+
227
+ if hasattr(os, 'symlink'):
228
+ def _softlink_func(fs, src, dst):
229
+ fs.symlink(src, dst)
230
+ else:
231
+ _softlink_func = None
232
+
233
+ def _copy_func(fs, src, dest):
234
+ shutil.copy2(src, dest)
235
+ st = fs.stat(src)
236
+ fs.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
237
+
238
+
239
+ Valid_Duplicates = ['hard-soft-copy', 'soft-hard-copy',
240
+ 'hard-copy', 'soft-copy', 'copy']
241
+
242
+ Link_Funcs = [] # contains the callables of the specified duplication style
243
+
244
+ def set_duplicate(duplicate):
245
+ # Fill in the Link_Funcs list according to the argument
246
+ # (discarding those not available on the platform).
247
+
248
+ # Set up the dictionary that maps the argument names to the
249
+ # underlying implementations. We do this inside this function,
250
+ # not in the top-level module code, so that we can remap os.link
251
+ # and os.symlink for testing purposes.
252
+ link_dict = {
253
+ 'hard' : _hardlink_func,
254
+ 'soft' : _softlink_func,
255
+ 'copy' : _copy_func
256
+ }
257
+
258
+ if not duplicate in Valid_Duplicates:
259
+ raise SCons.Errors.InternalError, ("The argument of set_duplicate "
260
+ "should be in Valid_Duplicates")
261
+ global Link_Funcs
262
+ Link_Funcs = []
263
+ for func in string.split(duplicate,'-'):
264
+ if link_dict[func]:
265
+ Link_Funcs.append(link_dict[func])
266
+
267
+ def LinkFunc(target, source, env):
268
+ # Relative paths cause problems with symbolic links, so
269
+ # we use absolute paths, which may be a problem for people
270
+ # who want to move their soft-linked src-trees around. Those
271
+ # people should use the 'hard-copy' mode, softlinks cannot be
272
+ # used for that; at least I have no idea how ...
273
+ src = source[0].abspath
274
+ dest = target[0].abspath
275
+ dir, file = os.path.split(dest)
276
+ if dir and not target[0].fs.isdir(dir):
277
+ os.makedirs(dir)
278
+ if not Link_Funcs:
279
+ # Set a default order of link functions.
280
+ set_duplicate('hard-soft-copy')
281
+ fs = source[0].fs
282
+ # Now link the files with the previously specified order.
283
+ for func in Link_Funcs:
284
+ try:
285
+ func(fs, src, dest)
286
+ break
287
+ except (IOError, OSError):
288
+ # An OSError indicates something happened like a permissions
289
+ # problem or an attempt to symlink across file-system
290
+ # boundaries. An IOError indicates something like the file
291
+ # not existing. In either case, keeping trying additional
292
+ # functions in the list and only raise an error if the last
293
+ # one failed.
294
+ if func == Link_Funcs[-1]:
295
+ # exception of the last link method (copy) are fatal
296
+ raise
297
+ return 0
298
+
299
+ Link = SCons.Action.Action(LinkFunc, None)
300
+ def LocalString(target, source, env):
301
+ return 'Local copy of %s from %s' % (target[0], source[0])
302
+
303
+ LocalCopy = SCons.Action.Action(LinkFunc, LocalString)
304
+
305
+ def UnlinkFunc(target, source, env):
306
+ t = target[0]
307
+ t.fs.unlink(t.abspath)
308
+ return 0
309
+
310
+ Unlink = SCons.Action.Action(UnlinkFunc, None)
311
+
312
+ def MkdirFunc(target, source, env):
313
+ t = target[0]
314
+ if not t.exists():
315
+ t.fs.mkdir(t.abspath)
316
+ return 0
317
+
318
+ Mkdir = SCons.Action.Action(MkdirFunc, None, presub=None)
319
+
320
+ MkdirBuilder = None
321
+
322
+ def get_MkdirBuilder():
323
+ global MkdirBuilder
324
+ if MkdirBuilder is None:
325
+ import SCons.Builder
326
+ import SCons.Defaults
327
+ # "env" will get filled in by Executor.get_build_env()
328
+ # calling SCons.Defaults.DefaultEnvironment() when necessary.
329
+ MkdirBuilder = SCons.Builder.Builder(action = Mkdir,
330
+ env = None,
331
+ explain = None,
332
+ is_explicit = None,
333
+ target_scanner = SCons.Defaults.DirEntryScanner,
334
+ name = "MkdirBuilder")
335
+ return MkdirBuilder
336
+
337
+ class _Null:
338
+ pass
339
+
340
+ _null = _Null()
341
+
342
+ DefaultSCCSBuilder = None
343
+ DefaultRCSBuilder = None
344
+
345
+ def get_DefaultSCCSBuilder():
346
+ global DefaultSCCSBuilder
347
+ if DefaultSCCSBuilder is None:
348
+ import SCons.Builder
349
+ # "env" will get filled in by Executor.get_build_env()
350
+ # calling SCons.Defaults.DefaultEnvironment() when necessary.
351
+ act = SCons.Action.Action('$SCCSCOM', '$SCCSCOMSTR')
352
+ DefaultSCCSBuilder = SCons.Builder.Builder(action = act,
353
+ env = None,
354
+ name = "DefaultSCCSBuilder")
355
+ return DefaultSCCSBuilder
356
+
357
+ def get_DefaultRCSBuilder():
358
+ global DefaultRCSBuilder
359
+ if DefaultRCSBuilder is None:
360
+ import SCons.Builder
361
+ # "env" will get filled in by Executor.get_build_env()
362
+ # calling SCons.Defaults.DefaultEnvironment() when necessary.
363
+ act = SCons.Action.Action('$RCS_COCOM', '$RCS_COCOMSTR')
364
+ DefaultRCSBuilder = SCons.Builder.Builder(action = act,
365
+ env = None,
366
+ name = "DefaultRCSBuilder")
367
+ return DefaultRCSBuilder
368
+
369
+ # Cygwin's os.path.normcase pretends it's on a case-sensitive filesystem.
370
+ _is_cygwin = sys.platform == "cygwin"
371
+ if os.path.normcase("TeSt") == os.path.normpath("TeSt") and not _is_cygwin:
372
+ def _my_normcase(x):
373
+ return x
374
+ else:
375
+ def _my_normcase(x):
376
+ return string.upper(x)
377
+
378
+
379
+
380
+ class DiskChecker:
381
+ def __init__(self, type, do, ignore):
382
+ self.type = type
383
+ self.do = do
384
+ self.ignore = ignore
385
+ self.set_do()
386
+ def set_do(self):
387
+ self.__call__ = self.do
388
+ def set_ignore(self):
389
+ self.__call__ = self.ignore
390
+ def set(self, list):
391
+ if self.type in list:
392
+ self.set_do()
393
+ else:
394
+ self.set_ignore()
395
+
396
+ def do_diskcheck_match(node, predicate, errorfmt):
397
+ result = predicate()
398
+ try:
399
+ # If calling the predicate() cached a None value from stat(),
400
+ # remove it so it doesn't interfere with later attempts to
401
+ # build this Node as we walk the DAG. (This isn't a great way
402
+ # to do this, we're reaching into an interface that doesn't
403
+ # really belong to us, but it's all about performance, so
404
+ # for now we'll just document the dependency...)
405
+ if node._memo['stat'] is None:
406
+ del node._memo['stat']
407
+ except (AttributeError, KeyError):
408
+ pass
409
+ if result:
410
+ raise TypeError, errorfmt % node.abspath
411
+
412
+ def ignore_diskcheck_match(node, predicate, errorfmt):
413
+ pass
414
+
415
+ def do_diskcheck_rcs(node, name):
416
+ try:
417
+ rcs_dir = node.rcs_dir
418
+ except AttributeError:
419
+ if node.entry_exists_on_disk('RCS'):
420
+ rcs_dir = node.Dir('RCS')
421
+ else:
422
+ rcs_dir = None
423
+ node.rcs_dir = rcs_dir
424
+ if rcs_dir:
425
+ return rcs_dir.entry_exists_on_disk(name+',v')
426
+ return None
427
+
428
+ def ignore_diskcheck_rcs(node, name):
429
+ return None
430
+
431
+ def do_diskcheck_sccs(node, name):
432
+ try:
433
+ sccs_dir = node.sccs_dir
434
+ except AttributeError:
435
+ if node.entry_exists_on_disk('SCCS'):
436
+ sccs_dir = node.Dir('SCCS')
437
+ else:
438
+ sccs_dir = None
439
+ node.sccs_dir = sccs_dir
440
+ if sccs_dir:
441
+ return sccs_dir.entry_exists_on_disk('s.'+name)
442
+ return None
443
+
444
+ def ignore_diskcheck_sccs(node, name):
445
+ return None
446
+
447
+ diskcheck_match = DiskChecker('match', do_diskcheck_match, ignore_diskcheck_match)
448
+ diskcheck_rcs = DiskChecker('rcs', do_diskcheck_rcs, ignore_diskcheck_rcs)
449
+ diskcheck_sccs = DiskChecker('sccs', do_diskcheck_sccs, ignore_diskcheck_sccs)
450
+
451
+ diskcheckers = [
452
+ diskcheck_match,
453
+ diskcheck_rcs,
454
+ diskcheck_sccs,
455
+ ]
456
+
457
+ def set_diskcheck(list):
458
+ for dc in diskcheckers:
459
+ dc.set(list)
460
+
461
+ def diskcheck_types():
462
+ return map(lambda dc: dc.type, diskcheckers)
463
+
464
+
465
+
466
+ class EntryProxy(SCons.Util.Proxy):
467
+ def __get_abspath(self):
468
+ entry = self.get()
469
+ return SCons.Subst.SpecialAttrWrapper(entry.get_abspath(),
470
+ entry.name + "_abspath")
471
+
472
+ def __get_filebase(self):
473
+ name = self.get().name
474
+ return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[0],
475
+ name + "_filebase")
476
+
477
+ def __get_suffix(self):
478
+ name = self.get().name
479
+ return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[1],
480
+ name + "_suffix")
481
+
482
+ def __get_file(self):
483
+ name = self.get().name
484
+ return SCons.Subst.SpecialAttrWrapper(name, name + "_file")
485
+
486
+ def __get_base_path(self):
487
+ """Return the file's directory and file name, with the
488
+ suffix stripped."""
489
+ entry = self.get()
490
+ return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(entry.get_path())[0],
491
+ entry.name + "_base")
492
+
493
+ def __get_posix_path(self):
494
+ """Return the path with / as the path separator,
495
+ regardless of platform."""
496
+ if os.sep == '/':
497
+ return self
498
+ else:
499
+ entry = self.get()
500
+ r = string.replace(entry.get_path(), os.sep, '/')
501
+ return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_posix")
502
+
503
+ def __get_windows_path(self):
504
+ """Return the path with \ as the path separator,
505
+ regardless of platform."""
506
+ if os.sep == '\\':
507
+ return self
508
+ else:
509
+ entry = self.get()
510
+ r = string.replace(entry.get_path(), os.sep, '\\')
511
+ return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_windows")
512
+
513
+ def __get_srcnode(self):
514
+ return EntryProxy(self.get().srcnode())
515
+
516
+ def __get_srcdir(self):
517
+ """Returns the directory containing the source node linked to this
518
+ node via VariantDir(), or the directory of this node if not linked."""
519
+ return EntryProxy(self.get().srcnode().dir)
520
+
521
+ def __get_rsrcnode(self):
522
+ return EntryProxy(self.get().srcnode().rfile())
523
+
524
+ def __get_rsrcdir(self):
525
+ """Returns the directory containing the source node linked to this
526
+ node via VariantDir(), or the directory of this node if not linked."""
527
+ return EntryProxy(self.get().srcnode().rfile().dir)
528
+
529
+ def __get_dir(self):
530
+ return EntryProxy(self.get().dir)
531
+
532
+ dictSpecialAttrs = { "base" : __get_base_path,
533
+ "posix" : __get_posix_path,
534
+ "windows" : __get_windows_path,
535
+ "win32" : __get_windows_path,
536
+ "srcpath" : __get_srcnode,
537
+ "srcdir" : __get_srcdir,
538
+ "dir" : __get_dir,
539
+ "abspath" : __get_abspath,
540
+ "filebase" : __get_filebase,
541
+ "suffix" : __get_suffix,
542
+ "file" : __get_file,
543
+ "rsrcpath" : __get_rsrcnode,
544
+ "rsrcdir" : __get_rsrcdir,
545
+ }
546
+
547
+ def __getattr__(self, name):
548
+ # This is how we implement the "special" attributes
549
+ # such as base, posix, srcdir, etc.
550
+ try:
551
+ attr_function = self.dictSpecialAttrs[name]
552
+ except KeyError:
553
+ try:
554
+ attr = SCons.Util.Proxy.__getattr__(self, name)
555
+ except AttributeError, e:
556
+ # Raise our own AttributeError subclass with an
557
+ # overridden __str__() method that identifies the
558
+ # name of the entry that caused the exception.
559
+ raise EntryProxyAttributeError(self, name)
560
+ return attr
561
+ else:
562
+ return attr_function(self)
563
+
564
+ class Base(SCons.Node.Node):
565
+ """A generic class for file system entries. This class is for
566
+ when we don't know yet whether the entry being looked up is a file
567
+ or a directory. Instances of this class can morph into either
568
+ Dir or File objects by a later, more precise lookup.
569
+
570
+ Note: this class does not define __cmp__ and __hash__ for
571
+ efficiency reasons. SCons does a lot of comparing of
572
+ Node.FS.{Base,Entry,File,Dir} objects, so those operations must be
573
+ as fast as possible, which means we want to use Python's built-in
574
+ object identity comparisons.
575
+ """
576
+
577
+ memoizer_counters = []
578
+
579
+ def __init__(self, name, directory, fs):
580
+ """Initialize a generic Node.FS.Base object.
581
+
582
+ Call the superclass initialization, take care of setting up
583
+ our relative and absolute paths, identify our parent
584
+ directory, and indicate that this node should use
585
+ signatures."""
586
+ if __debug__: logInstanceCreation(self, 'Node.FS.Base')
587
+ SCons.Node.Node.__init__(self)
588
+
589
+ # Filenames and paths are probably reused and are intern'ed to
590
+ # save some memory.
591
+ self.name = SCons.Util.silent_intern(name)
592
+ self.suffix = SCons.Util.silent_intern(SCons.Util.splitext(name)[1])
593
+ self.fs = fs
594
+
595
+ assert directory, "A directory must be provided"
596
+
597
+ self.abspath = SCons.Util.silent_intern(directory.entry_abspath(name))
598
+ self.labspath = SCons.Util.silent_intern(directory.entry_labspath(name))
599
+ if directory.path == '.':
600
+ self.path = SCons.Util.silent_intern(name)
601
+ else:
602
+ self.path = SCons.Util.silent_intern(directory.entry_path(name))
603
+ if directory.tpath == '.':
604
+ self.tpath = SCons.Util.silent_intern(name)
605
+ else:
606
+ self.tpath = SCons.Util.silent_intern(directory.entry_tpath(name))
607
+ self.path_elements = directory.path_elements + [self]
608
+
609
+ self.dir = directory
610
+ self.cwd = None # will hold the SConscript directory for target nodes
611
+ self.duplicate = directory.duplicate
612
+
613
+ def str_for_display(self):
614
+ return '"' + self.__str__() + '"'
615
+
616
+ def must_be_same(self, klass):
617
+ """
618
+ This node, which already existed, is being looked up as the
619
+ specified klass. Raise an exception if it isn't.
620
+ """
621
+ if isinstance(self, klass) or klass is Entry:
622
+ return
623
+ raise TypeError, "Tried to lookup %s '%s' as a %s." %\
624
+ (self.__class__.__name__, self.path, klass.__name__)
625
+
626
+ def get_dir(self):
627
+ return self.dir
628
+
629
+ def get_suffix(self):
630
+ return self.suffix
631
+
632
+ def rfile(self):
633
+ return self
634
+
635
+ def __str__(self):
636
+ """A Node.FS.Base object's string representation is its path
637
+ name."""
638
+ global Save_Strings
639
+ if Save_Strings:
640
+ return self._save_str()
641
+ return self._get_str()
642
+
643
+ memoizer_counters.append(SCons.Memoize.CountValue('_save_str'))
644
+
645
+ def _save_str(self):
646
+ try:
647
+ return self._memo['_save_str']
648
+ except KeyError:
649
+ pass
650
+ result = intern(self._get_str())
651
+ self._memo['_save_str'] = result
652
+ return result
653
+
654
+ def _get_str(self):
655
+ global Save_Strings
656
+ if self.duplicate or self.is_derived():
657
+ return self.get_path()
658
+ srcnode = self.srcnode()
659
+ if srcnode.stat() is None and self.stat() is not None:
660
+ result = self.get_path()
661
+ else:
662
+ result = srcnode.get_path()
663
+ if not Save_Strings:
664
+ # We're not at the point where we're saving the string string
665
+ # representations of FS Nodes (because we haven't finished
666
+ # reading the SConscript files and need to have str() return
667
+ # things relative to them). That also means we can't yet
668
+ # cache values returned (or not returned) by stat(), since
669
+ # Python code in the SConscript files might still create
670
+ # or otherwise affect the on-disk file. So get rid of the
671
+ # values that the underlying stat() method saved.
672
+ try: del self._memo['stat']
673
+ except KeyError: pass
674
+ if self is not srcnode:
675
+ try: del srcnode._memo['stat']
676
+ except KeyError: pass
677
+ return result
678
+
679
+ rstr = __str__
680
+
681
+ memoizer_counters.append(SCons.Memoize.CountValue('stat'))
682
+
683
+ def stat(self):
684
+ try: return self._memo['stat']
685
+ except KeyError: pass
686
+ try: result = self.fs.stat(self.abspath)
687
+ except os.error: result = None
688
+ self._memo['stat'] = result
689
+ return result
690
+
691
+ def exists(self):
692
+ return self.stat() is not None
693
+
694
+ def rexists(self):
695
+ return self.rfile().exists()
696
+
697
+ def getmtime(self):
698
+ st = self.stat()
699
+ if st: return st[stat.ST_MTIME]
700
+ else: return None
701
+
702
+ def getsize(self):
703
+ st = self.stat()
704
+ if st: return st[stat.ST_SIZE]
705
+ else: return None
706
+
707
+ def isdir(self):
708
+ st = self.stat()
709
+ return st is not None and stat.S_ISDIR(st[stat.ST_MODE])
710
+
711
+ def isfile(self):
712
+ st = self.stat()
713
+ return st is not None and stat.S_ISREG(st[stat.ST_MODE])
714
+
715
+ if hasattr(os, 'symlink'):
716
+ def islink(self):
717
+ try: st = self.fs.lstat(self.abspath)
718
+ except os.error: return 0
719
+ return stat.S_ISLNK(st[stat.ST_MODE])
720
+ else:
721
+ def islink(self):
722
+ return 0 # no symlinks
723
+
724
+ def is_under(self, dir):
725
+ if self is dir:
726
+ return 1
727
+ else:
728
+ return self.dir.is_under(dir)
729
+
730
+ def set_local(self):
731
+ self._local = 1
732
+
733
+ def srcnode(self):
734
+ """If this node is in a build path, return the node
735
+ corresponding to its source file. Otherwise, return
736
+ ourself.
737
+ """
738
+ srcdir_list = self.dir.srcdir_list()
739
+ if srcdir_list:
740
+ srcnode = srcdir_list[0].Entry(self.name)
741
+ srcnode.must_be_same(self.__class__)
742
+ return srcnode
743
+ return self
744
+
745
+ def get_path(self, dir=None):
746
+ """Return path relative to the current working directory of the
747
+ Node.FS.Base object that owns us."""
748
+ if not dir:
749
+ dir = self.fs.getcwd()
750
+ if self == dir:
751
+ return '.'
752
+ path_elems = self.path_elements
753
+ try: i = path_elems.index(dir)
754
+ except ValueError: pass
755
+ else: path_elems = path_elems[i+1:]
756
+ path_elems = map(lambda n: n.name, path_elems)
757
+ return string.join(path_elems, os.sep)
758
+
759
+ def set_src_builder(self, builder):
760
+ """Set the source code builder for this node."""
761
+ self.sbuilder = builder
762
+ if not self.has_builder():
763
+ self.builder_set(builder)
764
+
765
+ def src_builder(self):
766
+ """Fetch the source code builder for this node.
767
+
768
+ If there isn't one, we cache the source code builder specified
769
+ for the directory (which in turn will cache the value from its
770
+ parent directory, and so on up to the file system root).
771
+ """
772
+ try:
773
+ scb = self.sbuilder
774
+ except AttributeError:
775
+ scb = self.dir.src_builder()
776
+ self.sbuilder = scb
777
+ return scb
778
+
779
+ def get_abspath(self):
780
+ """Get the absolute path of the file."""
781
+ return self.abspath
782
+
783
+ def for_signature(self):
784
+ # Return just our name. Even an absolute path would not work,
785
+ # because that can change thanks to symlinks or remapped network
786
+ # paths.
787
+ return self.name
788
+
789
+ def get_subst_proxy(self):
790
+ try:
791
+ return self._proxy
792
+ except AttributeError:
793
+ ret = EntryProxy(self)
794
+ self._proxy = ret
795
+ return ret
796
+
797
+ def target_from_source(self, prefix, suffix, splitext=SCons.Util.splitext):
798
+ """
799
+
800
+ Generates a target entry that corresponds to this entry (usually
801
+ a source file) with the specified prefix and suffix.
802
+
803
+ Note that this method can be overridden dynamically for generated
804
+ files that need different behavior. See Tool/swig.py for
805
+ an example.
806
+ """
807
+ return self.dir.Entry(prefix + splitext(self.name)[0] + suffix)
808
+
809
+ def _Rfindalldirs_key(self, pathlist):
810
+ return pathlist
811
+
812
+ memoizer_counters.append(SCons.Memoize.CountDict('Rfindalldirs', _Rfindalldirs_key))
813
+
814
+ def Rfindalldirs(self, pathlist):
815
+ """
816
+ Return all of the directories for a given path list, including
817
+ corresponding "backing" directories in any repositories.
818
+
819
+ The Node lookups are relative to this Node (typically a
820
+ directory), so memoizing result saves cycles from looking
821
+ up the same path for each target in a given directory.
822
+ """
823
+ try:
824
+ memo_dict = self._memo['Rfindalldirs']
825
+ except KeyError:
826
+ memo_dict = {}
827
+ self._memo['Rfindalldirs'] = memo_dict
828
+ else:
829
+ try:
830
+ return memo_dict[pathlist]
831
+ except KeyError:
832
+ pass
833
+
834
+ create_dir_relative_to_self = self.Dir
835
+ result = []
836
+ for path in pathlist:
837
+ if isinstance(path, SCons.Node.Node):
838
+ result.append(path)
839
+ else:
840
+ dir = create_dir_relative_to_self(path)
841
+ result.extend(dir.get_all_rdirs())
842
+
843
+ memo_dict[pathlist] = result
844
+
845
+ return result
846
+
847
+ def RDirs(self, pathlist):
848
+ """Search for a list of directories in the Repository list."""
849
+ cwd = self.cwd or self.fs._cwd
850
+ return cwd.Rfindalldirs(pathlist)
851
+
852
+ memoizer_counters.append(SCons.Memoize.CountValue('rentry'))
853
+
854
+ def rentry(self):
855
+ try:
856
+ return self._memo['rentry']
857
+ except KeyError:
858
+ pass
859
+ result = self
860
+ if not self.exists():
861
+ norm_name = _my_normcase(self.name)
862
+ for dir in self.dir.get_all_rdirs():
863
+ try:
864
+ node = dir.entries[norm_name]
865
+ except KeyError:
866
+ if dir.entry_exists_on_disk(self.name):
867
+ result = dir.Entry(self.name)
868
+ break
869
+ self._memo['rentry'] = result
870
+ return result
871
+
872
+ def _glob1(self, pattern, ondisk=True, source=False, strings=False):
873
+ return []
874
+
875
+ class Entry(Base):
876
+ """This is the class for generic Node.FS entries--that is, things
877
+ that could be a File or a Dir, but we're just not sure yet.
878
+ Consequently, the methods in this class really exist just to
879
+ transform their associated object into the right class when the
880
+ time comes, and then call the same-named method in the transformed
881
+ class."""
882
+
883
+ def diskcheck_match(self):
884
+ pass
885
+
886
+ def disambiguate(self, must_exist=None):
887
+ """
888
+ """
889
+ if self.isdir():
890
+ self.__class__ = Dir
891
+ self._morph()
892
+ elif self.isfile():
893
+ self.__class__ = File
894
+ self._morph()
895
+ self.clear()
896
+ else:
897
+ # There was nothing on-disk at this location, so look in
898
+ # the src directory.
899
+ #
900
+ # We can't just use self.srcnode() straight away because
901
+ # that would create an actual Node for this file in the src
902
+ # directory, and there might not be one. Instead, use the
903
+ # dir_on_disk() method to see if there's something on-disk
904
+ # with that name, in which case we can go ahead and call
905
+ # self.srcnode() to create the right type of entry.
906
+ srcdir = self.dir.srcnode()
907
+ if srcdir != self.dir and \
908
+ srcdir.entry_exists_on_disk(self.name) and \
909
+ self.srcnode().isdir():
910
+ self.__class__ = Dir
911
+ self._morph()
912
+ elif must_exist:
913
+ msg = "No such file or directory: '%s'" % self.abspath
914
+ raise SCons.Errors.UserError, msg
915
+ else:
916
+ self.__class__ = File
917
+ self._morph()
918
+ self.clear()
919
+ return self
920
+
921
+ def rfile(self):
922
+ """We're a generic Entry, but the caller is actually looking for
923
+ a File at this point, so morph into one."""
924
+ self.__class__ = File
925
+ self._morph()
926
+ self.clear()
927
+ return File.rfile(self)
928
+
929
+ def scanner_key(self):
930
+ return self.get_suffix()
931
+
932
+ def get_contents(self):
933
+ """Fetch the contents of the entry. Returns the exact binary
934
+ contents of the file."""
935
+ try:
936
+ self = self.disambiguate(must_exist=1)
937
+ except SCons.Errors.UserError:
938
+ # There was nothing on disk with which to disambiguate
939
+ # this entry. Leave it as an Entry, but return a null
940
+ # string so calls to get_contents() in emitters and the
941
+ # like (e.g. in qt.py) don't have to disambiguate by hand
942
+ # or catch the exception.
943
+ return ''
944
+ else:
945
+ return self.get_contents()
946
+
947
+ def get_text_contents(self):
948
+ """Fetch the decoded text contents of a Unicode encoded Entry.
949
+
950
+ Since this should return the text contents from the file
951
+ system, we check to see into what sort of subclass we should
952
+ morph this Entry."""
953
+ try:
954
+ self = self.disambiguate(must_exist=1)
955
+ except SCons.Errors.UserError:
956
+ # There was nothing on disk with which to disambiguate
957
+ # this entry. Leave it as an Entry, but return a null
958
+ # string so calls to get_text_contents() in emitters and
959
+ # the like (e.g. in qt.py) don't have to disambiguate by
960
+ # hand or catch the exception.
961
+ return ''
962
+ else:
963
+ return self.get_text_contents()
964
+
965
+ def must_be_same(self, klass):
966
+ """Called to make sure a Node is a Dir. Since we're an
967
+ Entry, we can morph into one."""
968
+ if self.__class__ is not klass:
969
+ self.__class__ = klass
970
+ self._morph()
971
+ self.clear()
972
+
973
+ # The following methods can get called before the Taskmaster has
974
+ # had a chance to call disambiguate() directly to see if this Entry
975
+ # should really be a Dir or a File. We therefore use these to call
976
+ # disambiguate() transparently (from our caller's point of view).
977
+ #
978
+ # Right now, this minimal set of methods has been derived by just
979
+ # looking at some of the methods that will obviously be called early
980
+ # in any of the various Taskmasters' calling sequences, and then
981
+ # empirically figuring out which additional methods are necessary
982
+ # to make various tests pass.
983
+
984
+ def exists(self):
985
+ """Return if the Entry exists. Check the file system to see
986
+ what we should turn into first. Assume a file if there's no
987
+ directory."""
988
+ return self.disambiguate().exists()
989
+
990
+ def rel_path(self, other):
991
+ d = self.disambiguate()
992
+ if d.__class__ is Entry:
993
+ raise "rel_path() could not disambiguate File/Dir"
994
+ return d.rel_path(other)
995
+
996
+ def new_ninfo(self):
997
+ return self.disambiguate().new_ninfo()
998
+
999
+ def changed_since_last_build(self, target, prev_ni):
1000
+ return self.disambiguate().changed_since_last_build(target, prev_ni)
1001
+
1002
+ def _glob1(self, pattern, ondisk=True, source=False, strings=False):
1003
+ return self.disambiguate()._glob1(pattern, ondisk, source, strings)
1004
+
1005
+ def get_subst_proxy(self):
1006
+ return self.disambiguate().get_subst_proxy()
1007
+
1008
+ # This is for later so we can differentiate between Entry the class and Entry
1009
+ # the method of the FS class.
1010
+ _classEntry = Entry
1011
+
1012
+
1013
+ class LocalFS:
1014
+
1015
+ if SCons.Memoize.use_memoizer:
1016
+ __metaclass__ = SCons.Memoize.Memoized_Metaclass
1017
+
1018
+ # This class implements an abstraction layer for operations involving
1019
+ # a local file system. Essentially, this wraps any function in
1020
+ # the os, os.path or shutil modules that we use to actually go do
1021
+ # anything with or to the local file system.
1022
+ #
1023
+ # Note that there's a very good chance we'll refactor this part of
1024
+ # the architecture in some way as we really implement the interface(s)
1025
+ # for remote file system Nodes. For example, the right architecture
1026
+ # might be to have this be a subclass instead of a base class.
1027
+ # Nevertheless, we're using this as a first step in that direction.
1028
+ #
1029
+ # We're not using chdir() yet because the calling subclass method
1030
+ # needs to use os.chdir() directly to avoid recursion. Will we
1031
+ # really need this one?
1032
+ #def chdir(self, path):
1033
+ # return os.chdir(path)
1034
+ def chmod(self, path, mode):
1035
+ return os.chmod(path, mode)
1036
+ def copy(self, src, dst):
1037
+ return shutil.copy(src, dst)
1038
+ def copy2(self, src, dst):
1039
+ return shutil.copy2(src, dst)
1040
+ def exists(self, path):
1041
+ return os.path.exists(path)
1042
+ def getmtime(self, path):
1043
+ return os.path.getmtime(path)
1044
+ def getsize(self, path):
1045
+ return os.path.getsize(path)
1046
+ def isdir(self, path):
1047
+ return os.path.isdir(path)
1048
+ def isfile(self, path):
1049
+ return os.path.isfile(path)
1050
+ def link(self, src, dst):
1051
+ return os.link(src, dst)
1052
+ def lstat(self, path):
1053
+ return os.lstat(path)
1054
+ def listdir(self, path):
1055
+ return os.listdir(path)
1056
+ def makedirs(self, path):
1057
+ return os.makedirs(path)
1058
+ def mkdir(self, path):
1059
+ return os.mkdir(path)
1060
+ def rename(self, old, new):
1061
+ return os.rename(old, new)
1062
+ def stat(self, path):
1063
+ return os.stat(path)
1064
+ def symlink(self, src, dst):
1065
+ return os.symlink(src, dst)
1066
+ def open(self, path):
1067
+ return open(path)
1068
+ def unlink(self, path):
1069
+ return os.unlink(path)
1070
+
1071
+ if hasattr(os, 'symlink'):
1072
+ def islink(self, path):
1073
+ return os.path.islink(path)
1074
+ else:
1075
+ def islink(self, path):
1076
+ return 0 # no symlinks
1077
+
1078
+ if hasattr(os, 'readlink'):
1079
+ def readlink(self, file):
1080
+ return os.readlink(file)
1081
+ else:
1082
+ def readlink(self, file):
1083
+ return ''
1084
+
1085
+
1086
+ #class RemoteFS:
1087
+ # # Skeleton for the obvious methods we might need from the
1088
+ # # abstraction layer for a remote filesystem.
1089
+ # def upload(self, local_src, remote_dst):
1090
+ # pass
1091
+ # def download(self, remote_src, local_dst):
1092
+ # pass
1093
+
1094
+
1095
+ class FS(LocalFS):
1096
+
1097
+ memoizer_counters = []
1098
+
1099
+ def __init__(self, path = None):
1100
+ """Initialize the Node.FS subsystem.
1101
+
1102
+ The supplied path is the top of the source tree, where we
1103
+ expect to find the top-level build file. If no path is
1104
+ supplied, the current directory is the default.
1105
+
1106
+ The path argument must be a valid absolute path.
1107
+ """
1108
+ if __debug__: logInstanceCreation(self, 'Node.FS')
1109
+
1110
+ self._memo = {}
1111
+
1112
+ self.Root = {}
1113
+ self.SConstruct_dir = None
1114
+ self.max_drift = default_max_drift
1115
+
1116
+ self.Top = None
1117
+ if path is None:
1118
+ self.pathTop = os.getcwd()
1119
+ else:
1120
+ self.pathTop = path
1121
+ self.defaultDrive = _my_normcase(os.path.splitdrive(self.pathTop)[0])
1122
+
1123
+ self.Top = self.Dir(self.pathTop)
1124
+ self.Top.path = '.'
1125
+ self.Top.tpath = '.'
1126
+ self._cwd = self.Top
1127
+
1128
+ DirNodeInfo.fs = self
1129
+ FileNodeInfo.fs = self
1130
+
1131
+ def set_SConstruct_dir(self, dir):
1132
+ self.SConstruct_dir = dir
1133
+
1134
+ def get_max_drift(self):
1135
+ return self.max_drift
1136
+
1137
+ def set_max_drift(self, max_drift):
1138
+ self.max_drift = max_drift
1139
+
1140
+ def getcwd(self):
1141
+ return self._cwd
1142
+
1143
+ def chdir(self, dir, change_os_dir=0):
1144
+ """Change the current working directory for lookups.
1145
+ If change_os_dir is true, we will also change the "real" cwd
1146
+ to match.
1147
+ """
1148
+ curr=self._cwd
1149
+ try:
1150
+ if dir is not None:
1151
+ self._cwd = dir
1152
+ if change_os_dir:
1153
+ os.chdir(dir.abspath)
1154
+ except OSError:
1155
+ self._cwd = curr
1156
+ raise
1157
+
1158
+ def get_root(self, drive):
1159
+ """
1160
+ Returns the root directory for the specified drive, creating
1161
+ it if necessary.
1162
+ """
1163
+ drive = _my_normcase(drive)
1164
+ try:
1165
+ return self.Root[drive]
1166
+ except KeyError:
1167
+ root = RootDir(drive, self)
1168
+ self.Root[drive] = root
1169
+ if not drive:
1170
+ self.Root[self.defaultDrive] = root
1171
+ elif drive == self.defaultDrive:
1172
+ self.Root[''] = root
1173
+ return root
1174
+
1175
+ def _lookup(self, p, directory, fsclass, create=1):
1176
+ """
1177
+ The generic entry point for Node lookup with user-supplied data.
1178
+
1179
+ This translates arbitrary input into a canonical Node.FS object
1180
+ of the specified fsclass. The general approach for strings is
1181
+ to turn it into a fully normalized absolute path and then call
1182
+ the root directory's lookup_abs() method for the heavy lifting.
1183
+
1184
+ If the path name begins with '#', it is unconditionally
1185
+ interpreted relative to the top-level directory of this FS. '#'
1186
+ is treated as a synonym for the top-level SConstruct directory,
1187
+ much like '~' is treated as a synonym for the user's home
1188
+ directory in a UNIX shell. So both '#foo' and '#/foo' refer
1189
+ to the 'foo' subdirectory underneath the top-level SConstruct
1190
+ directory.
1191
+
1192
+ If the path name is relative, then the path is looked up relative
1193
+ to the specified directory, or the current directory (self._cwd,
1194
+ typically the SConscript directory) if the specified directory
1195
+ is None.
1196
+ """
1197
+ if isinstance(p, Base):
1198
+ # It's already a Node.FS object. Make sure it's the right
1199
+ # class and return.
1200
+ p.must_be_same(fsclass)
1201
+ return p
1202
+ # str(p) in case it's something like a proxy object
1203
+ p = str(p)
1204
+
1205
+ initial_hash = (p[0:1] == '#')
1206
+ if initial_hash:
1207
+ # There was an initial '#', so we strip it and override
1208
+ # whatever directory they may have specified with the
1209
+ # top-level SConstruct directory.
1210
+ p = p[1:]
1211
+ directory = self.Top
1212
+
1213
+ if directory and not isinstance(directory, Dir):
1214
+ directory = self.Dir(directory)
1215
+
1216
+ if do_splitdrive:
1217
+ drive, p = os.path.splitdrive(p)
1218
+ else:
1219
+ drive = ''
1220
+ if drive and not p:
1221
+ # This causes a naked drive letter to be treated as a synonym
1222
+ # for the root directory on that drive.
1223
+ p = os.sep
1224
+ absolute = os.path.isabs(p)
1225
+
1226
+ needs_normpath = needs_normpath_check.match(p)
1227
+
1228
+ if initial_hash or not absolute:
1229
+ # This is a relative lookup, either to the top-level
1230
+ # SConstruct directory (because of the initial '#') or to
1231
+ # the current directory (the path name is not absolute).
1232
+ # Add the string to the appropriate directory lookup path,
1233
+ # after which the whole thing gets normalized.
1234
+ if not directory:
1235
+ directory = self._cwd
1236
+ if p:
1237
+ p = directory.labspath + '/' + p
1238
+ else:
1239
+ p = directory.labspath
1240
+
1241
+ if needs_normpath:
1242
+ p = os.path.normpath(p)
1243
+
1244
+ if drive or absolute:
1245
+ root = self.get_root(drive)
1246
+ else:
1247
+ if not directory:
1248
+ directory = self._cwd
1249
+ root = directory.root
1250
+
1251
+ if os.sep != '/':
1252
+ p = string.replace(p, os.sep, '/')
1253
+ return root._lookup_abs(p, fsclass, create)
1254
+
1255
+ def Entry(self, name, directory = None, create = 1):
1256
+ """Look up or create a generic Entry node with the specified name.
1257
+ If the name is a relative path (begins with ./, ../, or a file
1258
+ name), then it is looked up relative to the supplied directory
1259
+ node, or to the top level directory of the FS (supplied at
1260
+ construction time) if no directory is supplied.
1261
+ """
1262
+ return self._lookup(name, directory, Entry, create)
1263
+
1264
+ def File(self, name, directory = None, create = 1):
1265
+ """Look up or create a File node with the specified name. If
1266
+ the name is a relative path (begins with ./, ../, or a file name),
1267
+ then it is looked up relative to the supplied directory node,
1268
+ or to the top level directory of the FS (supplied at construction
1269
+ time) if no directory is supplied.
1270
+
1271
+ This method will raise TypeError if a directory is found at the
1272
+ specified path.
1273
+ """
1274
+ return self._lookup(name, directory, File, create)
1275
+
1276
+ def Dir(self, name, directory = None, create = True):
1277
+ """Look up or create a Dir node with the specified name. If
1278
+ the name is a relative path (begins with ./, ../, or a file name),
1279
+ then it is looked up relative to the supplied directory node,
1280
+ or to the top level directory of the FS (supplied at construction
1281
+ time) if no directory is supplied.
1282
+
1283
+ This method will raise TypeError if a normal file is found at the
1284
+ specified path.
1285
+ """
1286
+ return self._lookup(name, directory, Dir, create)
1287
+
1288
+ def VariantDir(self, variant_dir, src_dir, duplicate=1):
1289
+ """Link the supplied variant directory to the source directory
1290
+ for purposes of building files."""
1291
+
1292
+ if not isinstance(src_dir, SCons.Node.Node):
1293
+ src_dir = self.Dir(src_dir)
1294
+ if not isinstance(variant_dir, SCons.Node.Node):
1295
+ variant_dir = self.Dir(variant_dir)
1296
+ if src_dir.is_under(variant_dir):
1297
+ raise SCons.Errors.UserError, "Source directory cannot be under variant directory."
1298
+ if variant_dir.srcdir:
1299
+ if variant_dir.srcdir == src_dir:
1300
+ return # We already did this.
1301
+ raise SCons.Errors.UserError, "'%s' already has a source directory: '%s'."%(variant_dir, variant_dir.srcdir)
1302
+ variant_dir.link(src_dir, duplicate)
1303
+
1304
+ def Repository(self, *dirs):
1305
+ """Specify Repository directories to search."""
1306
+ for d in dirs:
1307
+ if not isinstance(d, SCons.Node.Node):
1308
+ d = self.Dir(d)
1309
+ self.Top.addRepository(d)
1310
+
1311
+ def variant_dir_target_climb(self, orig, dir, tail):
1312
+ """Create targets in corresponding variant directories
1313
+
1314
+ Climb the directory tree, and look up path names
1315
+ relative to any linked variant directories we find.
1316
+
1317
+ Even though this loops and walks up the tree, we don't memoize
1318
+ the return value because this is really only used to process
1319
+ the command-line targets.
1320
+ """
1321
+ targets = []
1322
+ message = None
1323
+ fmt = "building associated VariantDir targets: %s"
1324
+ start_dir = dir
1325
+ while dir:
1326
+ for bd in dir.variant_dirs:
1327
+ if start_dir.is_under(bd):
1328
+ # If already in the build-dir location, don't reflect
1329
+ return [orig], fmt % str(orig)
1330
+ p = apply(os.path.join, [bd.path] + tail)
1331
+ targets.append(self.Entry(p))
1332
+ tail = [dir.name] + tail
1333
+ dir = dir.up()
1334
+ if targets:
1335
+ message = fmt % string.join(map(str, targets))
1336
+ return targets, message
1337
+
1338
+ def Glob(self, pathname, ondisk=True, source=True, strings=False, cwd=None):
1339
+ """
1340
+ Globs
1341
+
1342
+ This is mainly a shim layer
1343
+ """
1344
+ if cwd is None:
1345
+ cwd = self.getcwd()
1346
+ return cwd.glob(pathname, ondisk, source, strings)
1347
+
1348
+ class DirNodeInfo(SCons.Node.NodeInfoBase):
1349
+ # This should get reset by the FS initialization.
1350
+ current_version_id = 1
1351
+
1352
+ fs = None
1353
+
1354
+ def str_to_node(self, s):
1355
+ top = self.fs.Top
1356
+ root = top.root
1357
+ if do_splitdrive:
1358
+ drive, s = os.path.splitdrive(s)
1359
+ if drive:
1360
+ root = self.fs.get_root(drive)
1361
+ if not os.path.isabs(s):
1362
+ s = top.labspath + '/' + s
1363
+ return root._lookup_abs(s, Entry)
1364
+
1365
+ class DirBuildInfo(SCons.Node.BuildInfoBase):
1366
+ current_version_id = 1
1367
+
1368
+ glob_magic_check = re.compile('[*?[]')
1369
+
1370
+ def has_glob_magic(s):
1371
+ return glob_magic_check.search(s) is not None
1372
+
1373
+ class Dir(Base):
1374
+ """A class for directories in a file system.
1375
+ """
1376
+
1377
+ memoizer_counters = []
1378
+
1379
+ NodeInfo = DirNodeInfo
1380
+ BuildInfo = DirBuildInfo
1381
+
1382
+ def __init__(self, name, directory, fs):
1383
+ if __debug__: logInstanceCreation(self, 'Node.FS.Dir')
1384
+ Base.__init__(self, name, directory, fs)
1385
+ self._morph()
1386
+
1387
+ def _morph(self):
1388
+ """Turn a file system Node (either a freshly initialized directory
1389
+ object or a separate Entry object) into a proper directory object.
1390
+
1391
+ Set up this directory's entries and hook it into the file
1392
+ system tree. Specify that directories (this Node) don't use
1393
+ signatures for calculating whether they're current.
1394
+ """
1395
+
1396
+ self.repositories = []
1397
+ self.srcdir = None
1398
+
1399
+ self.entries = {}
1400
+ self.entries['.'] = self
1401
+ self.entries['..'] = self.dir
1402
+ self.cwd = self
1403
+ self.searched = 0
1404
+ self._sconsign = None
1405
+ self.variant_dirs = []
1406
+ self.root = self.dir.root
1407
+
1408
+ # Don't just reset the executor, replace its action list,
1409
+ # because it might have some pre-or post-actions that need to
1410
+ # be preserved.
1411
+ self.builder = get_MkdirBuilder()
1412
+ self.get_executor().set_action_list(self.builder.action)
1413
+
1414
+ def diskcheck_match(self):
1415
+ diskcheck_match(self, self.isfile,
1416
+ "File %s found where directory expected.")
1417
+
1418
+ def __clearRepositoryCache(self, duplicate=None):
1419
+ """Called when we change the repository(ies) for a directory.
1420
+ This clears any cached information that is invalidated by changing
1421
+ the repository."""
1422
+
1423
+ for node in self.entries.values():
1424
+ if node != self.dir:
1425
+ if node != self and isinstance(node, Dir):
1426
+ node.__clearRepositoryCache(duplicate)
1427
+ else:
1428
+ node.clear()
1429
+ try:
1430
+ del node._srcreps
1431
+ except AttributeError:
1432
+ pass
1433
+ if duplicate is not None:
1434
+ node.duplicate=duplicate
1435
+
1436
+ def __resetDuplicate(self, node):
1437
+ if node != self:
1438
+ node.duplicate = node.get_dir().duplicate
1439
+
1440
+ def Entry(self, name):
1441
+ """
1442
+ Looks up or creates an entry node named 'name' relative to
1443
+ this directory.
1444
+ """
1445
+ return self.fs.Entry(name, self)
1446
+
1447
+ def Dir(self, name, create=True):
1448
+ """
1449
+ Looks up or creates a directory node named 'name' relative to
1450
+ this directory.
1451
+ """
1452
+ return self.fs.Dir(name, self, create)
1453
+
1454
+ def File(self, name):
1455
+ """
1456
+ Looks up or creates a file node named 'name' relative to
1457
+ this directory.
1458
+ """
1459
+ return self.fs.File(name, self)
1460
+
1461
+ def _lookup_rel(self, name, klass, create=1):
1462
+ """
1463
+ Looks up a *normalized* relative path name, relative to this
1464
+ directory.
1465
+
1466
+ This method is intended for use by internal lookups with
1467
+ already-normalized path data. For general-purpose lookups,
1468
+ use the Entry(), Dir() and File() methods above.
1469
+
1470
+ This method does *no* input checking and will die or give
1471
+ incorrect results if it's passed a non-normalized path name (e.g.,
1472
+ a path containing '..'), an absolute path name, a top-relative
1473
+ ('#foo') path name, or any kind of object.
1474
+ """
1475
+ name = self.entry_labspath(name)
1476
+ return self.root._lookup_abs(name, klass, create)
1477
+
1478
+ def link(self, srcdir, duplicate):
1479
+ """Set this directory as the variant directory for the
1480
+ supplied source directory."""
1481
+ self.srcdir = srcdir
1482
+ self.duplicate = duplicate
1483
+ self.__clearRepositoryCache(duplicate)
1484
+ srcdir.variant_dirs.append(self)
1485
+
1486
+ def getRepositories(self):
1487
+ """Returns a list of repositories for this directory.
1488
+ """
1489
+ if self.srcdir and not self.duplicate:
1490
+ return self.srcdir.get_all_rdirs() + self.repositories
1491
+ return self.repositories
1492
+
1493
+ memoizer_counters.append(SCons.Memoize.CountValue('get_all_rdirs'))
1494
+
1495
+ def get_all_rdirs(self):
1496
+ try:
1497
+ return list(self._memo['get_all_rdirs'])
1498
+ except KeyError:
1499
+ pass
1500
+
1501
+ result = [self]
1502
+ fname = '.'
1503
+ dir = self
1504
+ while dir:
1505
+ for rep in dir.getRepositories():
1506
+ result.append(rep.Dir(fname))
1507
+ if fname == '.':
1508
+ fname = dir.name
1509
+ else:
1510
+ fname = dir.name + os.sep + fname
1511
+ dir = dir.up()
1512
+
1513
+ self._memo['get_all_rdirs'] = list(result)
1514
+
1515
+ return result
1516
+
1517
+ def addRepository(self, dir):
1518
+ if dir != self and not dir in self.repositories:
1519
+ self.repositories.append(dir)
1520
+ dir.tpath = '.'
1521
+ self.__clearRepositoryCache()
1522
+
1523
+ def up(self):
1524
+ return self.entries['..']
1525
+
1526
+ def _rel_path_key(self, other):
1527
+ return str(other)
1528
+
1529
+ memoizer_counters.append(SCons.Memoize.CountDict('rel_path', _rel_path_key))
1530
+
1531
+ def rel_path(self, other):
1532
+ """Return a path to "other" relative to this directory.
1533
+ """
1534
+
1535
+ # This complicated and expensive method, which constructs relative
1536
+ # paths between arbitrary Node.FS objects, is no longer used
1537
+ # by SCons itself. It was introduced to store dependency paths
1538
+ # in .sconsign files relative to the target, but that ended up
1539
+ # being significantly inefficient.
1540
+ #
1541
+ # We're continuing to support the method because some SConstruct
1542
+ # files out there started using it when it was available, and
1543
+ # we're all about backwards compatibility..
1544
+
1545
+ try:
1546
+ memo_dict = self._memo['rel_path']
1547
+ except KeyError:
1548
+ memo_dict = {}
1549
+ self._memo['rel_path'] = memo_dict
1550
+ else:
1551
+ try:
1552
+ return memo_dict[other]
1553
+ except KeyError:
1554
+ pass
1555
+
1556
+ if self is other:
1557
+ result = '.'
1558
+
1559
+ elif not other in self.path_elements:
1560
+ try:
1561
+ other_dir = other.get_dir()
1562
+ except AttributeError:
1563
+ result = str(other)
1564
+ else:
1565
+ if other_dir is None:
1566
+ result = other.name
1567
+ else:
1568
+ dir_rel_path = self.rel_path(other_dir)
1569
+ if dir_rel_path == '.':
1570
+ result = other.name
1571
+ else:
1572
+ result = dir_rel_path + os.sep + other.name
1573
+ else:
1574
+ i = self.path_elements.index(other) + 1
1575
+
1576
+ path_elems = ['..'] * (len(self.path_elements) - i) \
1577
+ + map(lambda n: n.name, other.path_elements[i:])
1578
+
1579
+ result = string.join(path_elems, os.sep)
1580
+
1581
+ memo_dict[other] = result
1582
+
1583
+ return result
1584
+
1585
+ def get_env_scanner(self, env, kw={}):
1586
+ import SCons.Defaults
1587
+ return SCons.Defaults.DirEntryScanner
1588
+
1589
+ def get_target_scanner(self):
1590
+ import SCons.Defaults
1591
+ return SCons.Defaults.DirEntryScanner
1592
+
1593
+ def get_found_includes(self, env, scanner, path):
1594
+ """Return this directory's implicit dependencies.
1595
+
1596
+ We don't bother caching the results because the scan typically
1597
+ shouldn't be requested more than once (as opposed to scanning
1598
+ .h file contents, which can be requested as many times as the
1599
+ files is #included by other files).
1600
+ """
1601
+ if not scanner:
1602
+ return []
1603
+ # Clear cached info for this Dir. If we already visited this
1604
+ # directory on our walk down the tree (because we didn't know at
1605
+ # that point it was being used as the source for another Node)
1606
+ # then we may have calculated build signature before realizing
1607
+ # we had to scan the disk. Now that we have to, though, we need
1608
+ # to invalidate the old calculated signature so that any node
1609
+ # dependent on our directory structure gets one that includes
1610
+ # info about everything on disk.
1611
+ self.clear()
1612
+ return scanner(self, env, path)
1613
+
1614
+ #
1615
+ # Taskmaster interface subsystem
1616
+ #
1617
+
1618
+ def prepare(self):
1619
+ pass
1620
+
1621
+ def build(self, **kw):
1622
+ """A null "builder" for directories."""
1623
+ global MkdirBuilder
1624
+ if self.builder is not MkdirBuilder:
1625
+ apply(SCons.Node.Node.build, [self,], kw)
1626
+
1627
+ #
1628
+ #
1629
+ #
1630
+
1631
+ def _create(self):
1632
+ """Create this directory, silently and without worrying about
1633
+ whether the builder is the default or not."""
1634
+ listDirs = []
1635
+ parent = self
1636
+ while parent:
1637
+ if parent.exists():
1638
+ break
1639
+ listDirs.append(parent)
1640
+ p = parent.up()
1641
+ if p is None:
1642
+ # Don't use while: - else: for this condition because
1643
+ # if so, then parent is None and has no .path attribute.
1644
+ raise SCons.Errors.StopError, parent.path
1645
+ parent = p
1646
+ listDirs.reverse()
1647
+ for dirnode in listDirs:
1648
+ try:
1649
+ # Don't call dirnode.build(), call the base Node method
1650
+ # directly because we definitely *must* create this
1651
+ # directory. The dirnode.build() method will suppress
1652
+ # the build if it's the default builder.
1653
+ SCons.Node.Node.build(dirnode)
1654
+ dirnode.get_executor().nullify()
1655
+ # The build() action may or may not have actually
1656
+ # created the directory, depending on whether the -n
1657
+ # option was used or not. Delete the _exists and
1658
+ # _rexists attributes so they can be reevaluated.
1659
+ dirnode.clear()
1660
+ except OSError:
1661
+ pass
1662
+
1663
+ def multiple_side_effect_has_builder(self):
1664
+ global MkdirBuilder
1665
+ return self.builder is not MkdirBuilder and self.has_builder()
1666
+
1667
+ def alter_targets(self):
1668
+ """Return any corresponding targets in a variant directory.
1669
+ """
1670
+ return self.fs.variant_dir_target_climb(self, self, [])
1671
+
1672
+ def scanner_key(self):
1673
+ """A directory does not get scanned."""
1674
+ return None
1675
+
1676
+ def get_text_contents(self):
1677
+ """We already emit things in text, so just return the binary
1678
+ version."""
1679
+ return self.get_contents()
1680
+
1681
+ def get_contents(self):
1682
+ """Return content signatures and names of all our children
1683
+ separated by new-lines. Ensure that the nodes are sorted."""
1684
+ contents = []
1685
+ name_cmp = lambda a, b: cmp(a.name, b.name)
1686
+ sorted_children = self.children()[:]
1687
+ sorted_children.sort(name_cmp)
1688
+ for node in sorted_children:
1689
+ contents.append('%s %s\n' % (node.get_csig(), node.name))
1690
+ return string.join(contents, '')
1691
+
1692
+ def get_csig(self):
1693
+ """Compute the content signature for Directory nodes. In
1694
+ general, this is not needed and the content signature is not
1695
+ stored in the DirNodeInfo. However, if get_contents on a Dir
1696
+ node is called which has a child directory, the child
1697
+ directory should return the hash of its contents."""
1698
+ contents = self.get_contents()
1699
+ return SCons.Util.MD5signature(contents)
1700
+
1701
+ def do_duplicate(self, src):
1702
+ pass
1703
+
1704
+ changed_since_last_build = SCons.Node.Node.state_has_changed
1705
+
1706
+ def is_up_to_date(self):
1707
+ """If any child is not up-to-date, then this directory isn't,
1708
+ either."""
1709
+ if self.builder is not MkdirBuilder and not self.exists():
1710
+ return 0
1711
+ up_to_date = SCons.Node.up_to_date
1712
+ for kid in self.children():
1713
+ if kid.get_state() > up_to_date:
1714
+ return 0
1715
+ return 1
1716
+
1717
+ def rdir(self):
1718
+ if not self.exists():
1719
+ norm_name = _my_normcase(self.name)
1720
+ for dir in self.dir.get_all_rdirs():
1721
+ try: node = dir.entries[norm_name]
1722
+ except KeyError: node = dir.dir_on_disk(self.name)
1723
+ if node and node.exists() and \
1724
+ (isinstance(dir, Dir) or isinstance(dir, Entry)):
1725
+ return node
1726
+ return self
1727
+
1728
+ def sconsign(self):
1729
+ """Return the .sconsign file info for this directory,
1730
+ creating it first if necessary."""
1731
+ if not self._sconsign:
1732
+ import SCons.SConsign
1733
+ self._sconsign = SCons.SConsign.ForDirectory(self)
1734
+ return self._sconsign
1735
+
1736
+ def srcnode(self):
1737
+ """Dir has a special need for srcnode()...if we
1738
+ have a srcdir attribute set, then that *is* our srcnode."""
1739
+ if self.srcdir:
1740
+ return self.srcdir
1741
+ return Base.srcnode(self)
1742
+
1743
+ def get_timestamp(self):
1744
+ """Return the latest timestamp from among our children"""
1745
+ stamp = 0
1746
+ for kid in self.children():
1747
+ if kid.get_timestamp() > stamp:
1748
+ stamp = kid.get_timestamp()
1749
+ return stamp
1750
+
1751
+ def entry_abspath(self, name):
1752
+ return self.abspath + os.sep + name
1753
+
1754
+ def entry_labspath(self, name):
1755
+ return self.labspath + '/' + name
1756
+
1757
+ def entry_path(self, name):
1758
+ return self.path + os.sep + name
1759
+
1760
+ def entry_tpath(self, name):
1761
+ return self.tpath + os.sep + name
1762
+
1763
+ def entry_exists_on_disk(self, name):
1764
+ try:
1765
+ d = self.on_disk_entries
1766
+ except AttributeError:
1767
+ d = {}
1768
+ try:
1769
+ entries = os.listdir(self.abspath)
1770
+ except OSError:
1771
+ pass
1772
+ else:
1773
+ for entry in map(_my_normcase, entries):
1774
+ d[entry] = True
1775
+ self.on_disk_entries = d
1776
+ if sys.platform == 'win32':
1777
+ name = _my_normcase(name)
1778
+ result = d.get(name)
1779
+ if result is None:
1780
+ # Belt-and-suspenders for Windows: check directly for
1781
+ # 8.3 file names that don't show up in os.listdir().
1782
+ result = os.path.exists(self.abspath + os.sep + name)
1783
+ d[name] = result
1784
+ return result
1785
+ else:
1786
+ return d.has_key(name)
1787
+
1788
+ memoizer_counters.append(SCons.Memoize.CountValue('srcdir_list'))
1789
+
1790
+ def srcdir_list(self):
1791
+ try:
1792
+ return self._memo['srcdir_list']
1793
+ except KeyError:
1794
+ pass
1795
+
1796
+ result = []
1797
+
1798
+ dirname = '.'
1799
+ dir = self
1800
+ while dir:
1801
+ if dir.srcdir:
1802
+ result.append(dir.srcdir.Dir(dirname))
1803
+ dirname = dir.name + os.sep + dirname
1804
+ dir = dir.up()
1805
+
1806
+ self._memo['srcdir_list'] = result
1807
+
1808
+ return result
1809
+
1810
+ def srcdir_duplicate(self, name):
1811
+ for dir in self.srcdir_list():
1812
+ if self.is_under(dir):
1813
+ # We shouldn't source from something in the build path;
1814
+ # variant_dir is probably under src_dir, in which case
1815
+ # we are reflecting.
1816
+ break
1817
+ if dir.entry_exists_on_disk(name):
1818
+ srcnode = dir.Entry(name).disambiguate()
1819
+ if self.duplicate:
1820
+ node = self.Entry(name).disambiguate()
1821
+ node.do_duplicate(srcnode)
1822
+ return node
1823
+ else:
1824
+ return srcnode
1825
+ return None
1826
+
1827
+ def _srcdir_find_file_key(self, filename):
1828
+ return filename
1829
+
1830
+ memoizer_counters.append(SCons.Memoize.CountDict('srcdir_find_file', _srcdir_find_file_key))
1831
+
1832
+ def srcdir_find_file(self, filename):
1833
+ try:
1834
+ memo_dict = self._memo['srcdir_find_file']
1835
+ except KeyError:
1836
+ memo_dict = {}
1837
+ self._memo['srcdir_find_file'] = memo_dict
1838
+ else:
1839
+ try:
1840
+ return memo_dict[filename]
1841
+ except KeyError:
1842
+ pass
1843
+
1844
+ def func(node):
1845
+ if (isinstance(node, File) or isinstance(node, Entry)) and \
1846
+ (node.is_derived() or node.exists()):
1847
+ return node
1848
+ return None
1849
+
1850
+ norm_name = _my_normcase(filename)
1851
+
1852
+ for rdir in self.get_all_rdirs():
1853
+ try: node = rdir.entries[norm_name]
1854
+ except KeyError: node = rdir.file_on_disk(filename)
1855
+ else: node = func(node)
1856
+ if node:
1857
+ result = (node, self)
1858
+ memo_dict[filename] = result
1859
+ return result
1860
+
1861
+ for srcdir in self.srcdir_list():
1862
+ for rdir in srcdir.get_all_rdirs():
1863
+ try: node = rdir.entries[norm_name]
1864
+ except KeyError: node = rdir.file_on_disk(filename)
1865
+ else: node = func(node)
1866
+ if node:
1867
+ result = (File(filename, self, self.fs), srcdir)
1868
+ memo_dict[filename] = result
1869
+ return result
1870
+
1871
+ result = (None, None)
1872
+ memo_dict[filename] = result
1873
+ return result
1874
+
1875
+ def dir_on_disk(self, name):
1876
+ if self.entry_exists_on_disk(name):
1877
+ try: return self.Dir(name)
1878
+ except TypeError: pass
1879
+ node = self.srcdir_duplicate(name)
1880
+ if isinstance(node, File):
1881
+ return None
1882
+ return node
1883
+
1884
+ def file_on_disk(self, name):
1885
+ if self.entry_exists_on_disk(name) or \
1886
+ diskcheck_rcs(self, name) or \
1887
+ diskcheck_sccs(self, name):
1888
+ try: return self.File(name)
1889
+ except TypeError: pass
1890
+ node = self.srcdir_duplicate(name)
1891
+ if isinstance(node, Dir):
1892
+ return None
1893
+ return node
1894
+
1895
+ def walk(self, func, arg):
1896
+ """
1897
+ Walk this directory tree by calling the specified function
1898
+ for each directory in the tree.
1899
+
1900
+ This behaves like the os.path.walk() function, but for in-memory
1901
+ Node.FS.Dir objects. The function takes the same arguments as
1902
+ the functions passed to os.path.walk():
1903
+
1904
+ func(arg, dirname, fnames)
1905
+
1906
+ Except that "dirname" will actually be the directory *Node*,
1907
+ not the string. The '.' and '..' entries are excluded from
1908
+ fnames. The fnames list may be modified in-place to filter the
1909
+ subdirectories visited or otherwise impose a specific order.
1910
+ The "arg" argument is always passed to func() and may be used
1911
+ in any way (or ignored, passing None is common).
1912
+ """
1913
+ entries = self.entries
1914
+ names = entries.keys()
1915
+ names.remove('.')
1916
+ names.remove('..')
1917
+ func(arg, self, names)
1918
+ select_dirs = lambda n, e=entries: isinstance(e[n], Dir)
1919
+ for dirname in filter(select_dirs, names):
1920
+ entries[dirname].walk(func, arg)
1921
+
1922
+ def glob(self, pathname, ondisk=True, source=False, strings=False):
1923
+ """
1924
+ Returns a list of Nodes (or strings) matching a specified
1925
+ pathname pattern.
1926
+
1927
+ Pathname patterns follow UNIX shell semantics: * matches
1928
+ any-length strings of any characters, ? matches any character,
1929
+ and [] can enclose lists or ranges of characters. Matches do
1930
+ not span directory separators.
1931
+
1932
+ The matches take into account Repositories, returning local
1933
+ Nodes if a corresponding entry exists in a Repository (either
1934
+ an in-memory Node or something on disk).
1935
+
1936
+ By defafult, the glob() function matches entries that exist
1937
+ on-disk, in addition to in-memory Nodes. Setting the "ondisk"
1938
+ argument to False (or some other non-true value) causes the glob()
1939
+ function to only match in-memory Nodes. The default behavior is
1940
+ to return both the on-disk and in-memory Nodes.
1941
+
1942
+ The "source" argument, when true, specifies that corresponding
1943
+ source Nodes must be returned if you're globbing in a build
1944
+ directory (initialized with VariantDir()). The default behavior
1945
+ is to return Nodes local to the VariantDir().
1946
+
1947
+ The "strings" argument, when true, returns the matches as strings,
1948
+ not Nodes. The strings are path names relative to this directory.
1949
+
1950
+ The underlying algorithm is adapted from the glob.glob() function
1951
+ in the Python library (but heavily modified), and uses fnmatch()
1952
+ under the covers.
1953
+ """
1954
+ dirname, basename = os.path.split(pathname)
1955
+ if not dirname:
1956
+ result = self._glob1(basename, ondisk, source, strings)
1957
+ result.sort(lambda a, b: cmp(str(a), str(b)))
1958
+ return result
1959
+ if has_glob_magic(dirname):
1960
+ list = self.glob(dirname, ondisk, source, strings=False)
1961
+ else:
1962
+ list = [self.Dir(dirname, create=True)]
1963
+ result = []
1964
+ for dir in list:
1965
+ r = dir._glob1(basename, ondisk, source, strings)
1966
+ if strings:
1967
+ r = map(lambda x, d=str(dir): os.path.join(d, x), r)
1968
+ result.extend(r)
1969
+ result.sort(lambda a, b: cmp(str(a), str(b)))
1970
+ return result
1971
+
1972
+ def _glob1(self, pattern, ondisk=True, source=False, strings=False):
1973
+ """
1974
+ Globs for and returns a list of entry names matching a single
1975
+ pattern in this directory.
1976
+
1977
+ This searches any repositories and source directories for
1978
+ corresponding entries and returns a Node (or string) relative
1979
+ to the current directory if an entry is found anywhere.
1980
+
1981
+ TODO: handle pattern with no wildcard
1982
+ """
1983
+ search_dir_list = self.get_all_rdirs()
1984
+ for srcdir in self.srcdir_list():
1985
+ search_dir_list.extend(srcdir.get_all_rdirs())
1986
+
1987
+ selfEntry = self.Entry
1988
+ names = []
1989
+ for dir in search_dir_list:
1990
+ # We use the .name attribute from the Node because the keys of
1991
+ # the dir.entries dictionary are normalized (that is, all upper
1992
+ # case) on case-insensitive systems like Windows.
1993
+ #node_names = [ v.name for k, v in dir.entries.items() if k not in ('.', '..') ]
1994
+ entry_names = filter(lambda n: n not in ('.', '..'), dir.entries.keys())
1995
+ node_names = map(lambda n, e=dir.entries: e[n].name, entry_names)
1996
+ names.extend(node_names)
1997
+ if not strings:
1998
+ # Make sure the working directory (self) actually has
1999
+ # entries for all Nodes in repositories or variant dirs.
2000
+ for name in node_names: selfEntry(name)
2001
+ if ondisk:
2002
+ try:
2003
+ disk_names = os.listdir(dir.abspath)
2004
+ except os.error:
2005
+ continue
2006
+ names.extend(disk_names)
2007
+ if not strings:
2008
+ # We're going to return corresponding Nodes in
2009
+ # the local directory, so we need to make sure
2010
+ # those Nodes exist. We only want to create
2011
+ # Nodes for the entries that will match the
2012
+ # specified pattern, though, which means we
2013
+ # need to filter the list here, even though
2014
+ # the overall list will also be filtered later,
2015
+ # after we exit this loop.
2016
+ if pattern[0] != '.':
2017
+ #disk_names = [ d for d in disk_names if d[0] != '.' ]
2018
+ disk_names = filter(lambda x: x[0] != '.', disk_names)
2019
+ disk_names = fnmatch.filter(disk_names, pattern)
2020
+ dirEntry = dir.Entry
2021
+ for name in disk_names:
2022
+ # Add './' before disk filename so that '#' at
2023
+ # beginning of filename isn't interpreted.
2024
+ name = './' + name
2025
+ node = dirEntry(name).disambiguate()
2026
+ n = selfEntry(name)
2027
+ if n.__class__ != node.__class__:
2028
+ n.__class__ = node.__class__
2029
+ n._morph()
2030
+
2031
+ names = set(names)
2032
+ if pattern[0] != '.':
2033
+ #names = [ n for n in names if n[0] != '.' ]
2034
+ names = filter(lambda x: x[0] != '.', names)
2035
+ names = fnmatch.filter(names, pattern)
2036
+
2037
+ if strings:
2038
+ return names
2039
+
2040
+ #return [ self.entries[_my_normcase(n)] for n in names ]
2041
+ return map(lambda n, e=self.entries: e[_my_normcase(n)], names)
2042
+
2043
+ class RootDir(Dir):
2044
+ """A class for the root directory of a file system.
2045
+
2046
+ This is the same as a Dir class, except that the path separator
2047
+ ('/' or '\\') is actually part of the name, so we don't need to
2048
+ add a separator when creating the path names of entries within
2049
+ this directory.
2050
+ """
2051
+ def __init__(self, name, fs):
2052
+ if __debug__: logInstanceCreation(self, 'Node.FS.RootDir')
2053
+ # We're going to be our own parent directory (".." entry and .dir
2054
+ # attribute) so we have to set up some values so Base.__init__()
2055
+ # won't gag won't it calls some of our methods.
2056
+ self.abspath = ''
2057
+ self.labspath = ''
2058
+ self.path = ''
2059
+ self.tpath = ''
2060
+ self.path_elements = []
2061
+ self.duplicate = 0
2062
+ self.root = self
2063
+ Base.__init__(self, name, self, fs)
2064
+
2065
+ # Now set our paths to what we really want them to be: the
2066
+ # initial drive letter (the name) plus the directory separator,
2067
+ # except for the "lookup abspath," which does not have the
2068
+ # drive letter.
2069
+ self.abspath = name + os.sep
2070
+ self.labspath = ''
2071
+ self.path = name + os.sep
2072
+ self.tpath = name + os.sep
2073
+ self._morph()
2074
+
2075
+ self._lookupDict = {}
2076
+
2077
+ # The // and os.sep + os.sep entries are necessary because
2078
+ # os.path.normpath() seems to preserve double slashes at the
2079
+ # beginning of a path (presumably for UNC path names), but
2080
+ # collapses triple slashes to a single slash.
2081
+ self._lookupDict[''] = self
2082
+ self._lookupDict['/'] = self
2083
+ self._lookupDict['//'] = self
2084
+ self._lookupDict[os.sep] = self
2085
+ self._lookupDict[os.sep + os.sep] = self
2086
+
2087
+ def must_be_same(self, klass):
2088
+ if klass is Dir:
2089
+ return
2090
+ Base.must_be_same(self, klass)
2091
+
2092
+ def _lookup_abs(self, p, klass, create=1):
2093
+ """
2094
+ Fast (?) lookup of a *normalized* absolute path.
2095
+
2096
+ This method is intended for use by internal lookups with
2097
+ already-normalized path data. For general-purpose lookups,
2098
+ use the FS.Entry(), FS.Dir() or FS.File() methods.
2099
+
2100
+ The caller is responsible for making sure we're passed a
2101
+ normalized absolute path; we merely let Python's dictionary look
2102
+ up and return the One True Node.FS object for the path.
2103
+
2104
+ If no Node for the specified "p" doesn't already exist, and
2105
+ "create" is specified, the Node may be created after recursive
2106
+ invocation to find or create the parent directory or directories.
2107
+ """
2108
+ k = _my_normcase(p)
2109
+ try:
2110
+ result = self._lookupDict[k]
2111
+ except KeyError:
2112
+ if not create:
2113
+ msg = "No such file or directory: '%s' in '%s' (and create is False)" % (p, str(self))
2114
+ raise SCons.Errors.UserError, msg
2115
+ # There is no Node for this path name, and we're allowed
2116
+ # to create it.
2117
+ dir_name, file_name = os.path.split(p)
2118
+ dir_node = self._lookup_abs(dir_name, Dir)
2119
+ result = klass(file_name, dir_node, self.fs)
2120
+
2121
+ # Double-check on disk (as configured) that the Node we
2122
+ # created matches whatever is out there in the real world.
2123
+ result.diskcheck_match()
2124
+
2125
+ self._lookupDict[k] = result
2126
+ dir_node.entries[_my_normcase(file_name)] = result
2127
+ dir_node.implicit = None
2128
+ else:
2129
+ # There is already a Node for this path name. Allow it to
2130
+ # complain if we were looking for an inappropriate type.
2131
+ result.must_be_same(klass)
2132
+ return result
2133
+
2134
+ def __str__(self):
2135
+ return self.abspath
2136
+
2137
+ def entry_abspath(self, name):
2138
+ return self.abspath + name
2139
+
2140
+ def entry_labspath(self, name):
2141
+ return '/' + name
2142
+
2143
+ def entry_path(self, name):
2144
+ return self.path + name
2145
+
2146
+ def entry_tpath(self, name):
2147
+ return self.tpath + name
2148
+
2149
+ def is_under(self, dir):
2150
+ if self is dir:
2151
+ return 1
2152
+ else:
2153
+ return 0
2154
+
2155
+ def up(self):
2156
+ return None
2157
+
2158
+ def get_dir(self):
2159
+ return None
2160
+
2161
+ def src_builder(self):
2162
+ return _null
2163
+
2164
+ class FileNodeInfo(SCons.Node.NodeInfoBase):
2165
+ current_version_id = 1
2166
+
2167
+ field_list = ['csig', 'timestamp', 'size']
2168
+
2169
+ # This should get reset by the FS initialization.
2170
+ fs = None
2171
+
2172
+ def str_to_node(self, s):
2173
+ top = self.fs.Top
2174
+ root = top.root
2175
+ if do_splitdrive:
2176
+ drive, s = os.path.splitdrive(s)
2177
+ if drive:
2178
+ root = self.fs.get_root(drive)
2179
+ if not os.path.isabs(s):
2180
+ s = top.labspath + '/' + s
2181
+ return root._lookup_abs(s, Entry)
2182
+
2183
+ class FileBuildInfo(SCons.Node.BuildInfoBase):
2184
+ current_version_id = 1
2185
+
2186
+ def convert_to_sconsign(self):
2187
+ """
2188
+ Converts this FileBuildInfo object for writing to a .sconsign file
2189
+
2190
+ This replaces each Node in our various dependency lists with its
2191
+ usual string representation: relative to the top-level SConstruct
2192
+ directory, or an absolute path if it's outside.
2193
+ """
2194
+ if os.sep == '/':
2195
+ node_to_str = str
2196
+ else:
2197
+ def node_to_str(n):
2198
+ try:
2199
+ s = n.path
2200
+ except AttributeError:
2201
+ s = str(n)
2202
+ else:
2203
+ s = string.replace(s, os.sep, '/')
2204
+ return s
2205
+ for attr in ['bsources', 'bdepends', 'bimplicit']:
2206
+ try:
2207
+ val = getattr(self, attr)
2208
+ except AttributeError:
2209
+ pass
2210
+ else:
2211
+ setattr(self, attr, map(node_to_str, val))
2212
+ def convert_from_sconsign(self, dir, name):
2213
+ """
2214
+ Converts a newly-read FileBuildInfo object for in-SCons use
2215
+
2216
+ For normal up-to-date checking, we don't have any conversion to
2217
+ perform--but we're leaving this method here to make that clear.
2218
+ """
2219
+ pass
2220
+ def prepare_dependencies(self):
2221
+ """
2222
+ Prepares a FileBuildInfo object for explaining what changed
2223
+
2224
+ The bsources, bdepends and bimplicit lists have all been
2225
+ stored on disk as paths relative to the top-level SConstruct
2226
+ directory. Convert the strings to actual Nodes (for use by the
2227
+ --debug=explain code and --implicit-cache).
2228
+ """
2229
+ attrs = [
2230
+ ('bsources', 'bsourcesigs'),
2231
+ ('bdepends', 'bdependsigs'),
2232
+ ('bimplicit', 'bimplicitsigs'),
2233
+ ]
2234
+ for (nattr, sattr) in attrs:
2235
+ try:
2236
+ strings = getattr(self, nattr)
2237
+ nodeinfos = getattr(self, sattr)
2238
+ except AttributeError:
2239
+ continue
2240
+ nodes = []
2241
+ for s, ni in izip(strings, nodeinfos):
2242
+ if not isinstance(s, SCons.Node.Node):
2243
+ s = ni.str_to_node(s)
2244
+ nodes.append(s)
2245
+ setattr(self, nattr, nodes)
2246
+ def format(self, names=0):
2247
+ result = []
2248
+ bkids = self.bsources + self.bdepends + self.bimplicit
2249
+ bkidsigs = self.bsourcesigs + self.bdependsigs + self.bimplicitsigs
2250
+ for bkid, bkidsig in izip(bkids, bkidsigs):
2251
+ result.append(str(bkid) + ': ' +
2252
+ string.join(bkidsig.format(names=names), ' '))
2253
+ result.append('%s [%s]' % (self.bactsig, self.bact))
2254
+ return string.join(result, '\n')
2255
+
2256
+ class File(Base):
2257
+ """A class for files in a file system.
2258
+ """
2259
+
2260
+ memoizer_counters = []
2261
+
2262
+ NodeInfo = FileNodeInfo
2263
+ BuildInfo = FileBuildInfo
2264
+
2265
+ md5_chunksize = 64
2266
+
2267
+ def diskcheck_match(self):
2268
+ diskcheck_match(self, self.isdir,
2269
+ "Directory %s found where file expected.")
2270
+
2271
+ def __init__(self, name, directory, fs):
2272
+ if __debug__: logInstanceCreation(self, 'Node.FS.File')
2273
+ Base.__init__(self, name, directory, fs)
2274
+ self._morph()
2275
+
2276
+ def Entry(self, name):
2277
+ """Create an entry node named 'name' relative to
2278
+ the directory of this file."""
2279
+ return self.dir.Entry(name)
2280
+
2281
+ def Dir(self, name, create=True):
2282
+ """Create a directory node named 'name' relative to
2283
+ the directory of this file."""
2284
+ return self.dir.Dir(name, create=create)
2285
+
2286
+ def Dirs(self, pathlist):
2287
+ """Create a list of directories relative to the SConscript
2288
+ directory of this file."""
2289
+ # TODO(1.5)
2290
+ # return [self.Dir(p) for p in pathlist]
2291
+ return map(lambda p, s=self: s.Dir(p), pathlist)
2292
+
2293
+ def File(self, name):
2294
+ """Create a file node named 'name' relative to
2295
+ the directory of this file."""
2296
+ return self.dir.File(name)
2297
+
2298
+ #def generate_build_dict(self):
2299
+ # """Return an appropriate dictionary of values for building
2300
+ # this File."""
2301
+ # return {'Dir' : self.Dir,
2302
+ # 'File' : self.File,
2303
+ # 'RDirs' : self.RDirs}
2304
+
2305
+ def _morph(self):
2306
+ """Turn a file system node into a File object."""
2307
+ self.scanner_paths = {}
2308
+ if not hasattr(self, '_local'):
2309
+ self._local = 0
2310
+
2311
+ # If there was already a Builder set on this entry, then
2312
+ # we need to make sure we call the target-decider function,
2313
+ # not the source-decider. Reaching in and doing this by hand
2314
+ # is a little bogus. We'd prefer to handle this by adding
2315
+ # an Entry.builder_set() method that disambiguates like the
2316
+ # other methods, but that starts running into problems with the
2317
+ # fragile way we initialize Dir Nodes with their Mkdir builders,
2318
+ # yet still allow them to be overridden by the user. Since it's
2319
+ # not clear right now how to fix that, stick with what works
2320
+ # until it becomes clear...
2321
+ if self.has_builder():
2322
+ self.changed_since_last_build = self.decide_target
2323
+
2324
+ def scanner_key(self):
2325
+ return self.get_suffix()
2326
+
2327
+ def get_contents(self):
2328
+ if not self.rexists():
2329
+ return ''
2330
+ fname = self.rfile().abspath
2331
+ try:
2332
+ contents = open(fname, "rb").read()
2333
+ except EnvironmentError, e:
2334
+ if not e.filename:
2335
+ e.filename = fname
2336
+ raise
2337
+ return contents
2338
+
2339
+ try:
2340
+ import codecs
2341
+ except ImportError:
2342
+ get_text_contents = get_contents
2343
+ else:
2344
+ # This attempts to figure out what the encoding of the text is
2345
+ # based upon the BOM bytes, and then decodes the contents so that
2346
+ # it's a valid python string.
2347
+ def get_text_contents(self):
2348
+ contents = self.get_contents()
2349
+ # The behavior of various decode() methods and functions
2350
+ # w.r.t. the initial BOM bytes is different for different
2351
+ # encodings and/or Python versions. ('utf-8' does not strip
2352
+ # them, but has a 'utf-8-sig' which does; 'utf-16' seems to
2353
+ # strip them; etc.) Just side step all the complication by
2354
+ # explicitly stripping the BOM before we decode().
2355
+ if contents.startswith(codecs.BOM_UTF8):
2356
+ contents = contents[len(codecs.BOM_UTF8):]
2357
+ # TODO(2.2): Remove when 2.3 becomes floor.
2358
+ #contents = contents.decode('utf-8')
2359
+ contents = my_decode(contents, 'utf-8')
2360
+ elif contents.startswith(codecs.BOM_UTF16_LE):
2361
+ contents = contents[len(codecs.BOM_UTF16_LE):]
2362
+ # TODO(2.2): Remove when 2.3 becomes floor.
2363
+ #contents = contents.decode('utf-16-le')
2364
+ contents = my_decode(contents, 'utf-16-le')
2365
+ elif contents.startswith(codecs.BOM_UTF16_BE):
2366
+ contents = contents[len(codecs.BOM_UTF16_BE):]
2367
+ # TODO(2.2): Remove when 2.3 becomes floor.
2368
+ #contents = contents.decode('utf-16-be')
2369
+ contents = my_decode(contents, 'utf-16-be')
2370
+ return contents
2371
+
2372
+ def get_content_hash(self):
2373
+ """
2374
+ Compute and return the MD5 hash for this file.
2375
+ """
2376
+ if not self.rexists():
2377
+ return SCons.Util.MD5signature('')
2378
+ fname = self.rfile().abspath
2379
+ try:
2380
+ cs = SCons.Util.MD5filesignature(fname,
2381
+ chunksize=SCons.Node.FS.File.md5_chunksize*1024)
2382
+ except EnvironmentError, e:
2383
+ if not e.filename:
2384
+ e.filename = fname
2385
+ raise
2386
+ return cs
2387
+
2388
+
2389
+ memoizer_counters.append(SCons.Memoize.CountValue('get_size'))
2390
+
2391
+ def get_size(self):
2392
+ try:
2393
+ return self._memo['get_size']
2394
+ except KeyError:
2395
+ pass
2396
+
2397
+ if self.rexists():
2398
+ size = self.rfile().getsize()
2399
+ else:
2400
+ size = 0
2401
+
2402
+ self._memo['get_size'] = size
2403
+
2404
+ return size
2405
+
2406
+ memoizer_counters.append(SCons.Memoize.CountValue('get_timestamp'))
2407
+
2408
+ def get_timestamp(self):
2409
+ try:
2410
+ return self._memo['get_timestamp']
2411
+ except KeyError:
2412
+ pass
2413
+
2414
+ if self.rexists():
2415
+ timestamp = self.rfile().getmtime()
2416
+ else:
2417
+ timestamp = 0
2418
+
2419
+ self._memo['get_timestamp'] = timestamp
2420
+
2421
+ return timestamp
2422
+
2423
+ def store_info(self):
2424
+ # Merge our build information into the already-stored entry.
2425
+ # This accomodates "chained builds" where a file that's a target
2426
+ # in one build (SConstruct file) is a source in a different build.
2427
+ # See test/chained-build.py for the use case.
2428
+ if do_store_info:
2429
+ self.dir.sconsign().store_info(self.name, self)
2430
+
2431
+ convert_copy_attrs = [
2432
+ 'bsources',
2433
+ 'bimplicit',
2434
+ 'bdepends',
2435
+ 'bact',
2436
+ 'bactsig',
2437
+ 'ninfo',
2438
+ ]
2439
+
2440
+
2441
+ convert_sig_attrs = [
2442
+ 'bsourcesigs',
2443
+ 'bimplicitsigs',
2444
+ 'bdependsigs',
2445
+ ]
2446
+
2447
+ def convert_old_entry(self, old_entry):
2448
+ # Convert a .sconsign entry from before the Big Signature
2449
+ # Refactoring, doing what we can to convert its information
2450
+ # to the new .sconsign entry format.
2451
+ #
2452
+ # The old format looked essentially like this:
2453
+ #
2454
+ # BuildInfo
2455
+ # .ninfo (NodeInfo)
2456
+ # .bsig
2457
+ # .csig
2458
+ # .timestamp
2459
+ # .size
2460
+ # .bsources
2461
+ # .bsourcesigs ("signature" list)
2462
+ # .bdepends
2463
+ # .bdependsigs ("signature" list)
2464
+ # .bimplicit
2465
+ # .bimplicitsigs ("signature" list)
2466
+ # .bact
2467
+ # .bactsig
2468
+ #
2469
+ # The new format looks like this:
2470
+ #
2471
+ # .ninfo (NodeInfo)
2472
+ # .bsig
2473
+ # .csig
2474
+ # .timestamp
2475
+ # .size
2476
+ # .binfo (BuildInfo)
2477
+ # .bsources
2478
+ # .bsourcesigs (NodeInfo list)
2479
+ # .bsig
2480
+ # .csig
2481
+ # .timestamp
2482
+ # .size
2483
+ # .bdepends
2484
+ # .bdependsigs (NodeInfo list)
2485
+ # .bsig
2486
+ # .csig
2487
+ # .timestamp
2488
+ # .size
2489
+ # .bimplicit
2490
+ # .bimplicitsigs (NodeInfo list)
2491
+ # .bsig
2492
+ # .csig
2493
+ # .timestamp
2494
+ # .size
2495
+ # .bact
2496
+ # .bactsig
2497
+ #
2498
+ # The basic idea of the new structure is that a NodeInfo always
2499
+ # holds all available information about the state of a given Node
2500
+ # at a certain point in time. The various .b*sigs lists can just
2501
+ # be a list of pointers to the .ninfo attributes of the different
2502
+ # dependent nodes, without any copying of information until it's
2503
+ # time to pickle it for writing out to a .sconsign file.
2504
+ #
2505
+ # The complicating issue is that the *old* format only stored one
2506
+ # "signature" per dependency, based on however the *last* build
2507
+ # was configured. We don't know from just looking at it whether
2508
+ # it was a build signature, a content signature, or a timestamp
2509
+ # "signature". Since we no longer use build signatures, the
2510
+ # best we can do is look at the length and if it's thirty two,
2511
+ # assume that it was (or might have been) a content signature.
2512
+ # If it was actually a build signature, then it will cause a
2513
+ # rebuild anyway when it doesn't match the new content signature,
2514
+ # but that's probably the best we can do.
2515
+ import SCons.SConsign
2516
+ new_entry = SCons.SConsign.SConsignEntry()
2517
+ new_entry.binfo = self.new_binfo()
2518
+ binfo = new_entry.binfo
2519
+ for attr in self.convert_copy_attrs:
2520
+ try:
2521
+ value = getattr(old_entry, attr)
2522
+ except AttributeError:
2523
+ continue
2524
+ setattr(binfo, attr, value)
2525
+ delattr(old_entry, attr)
2526
+ for attr in self.convert_sig_attrs:
2527
+ try:
2528
+ sig_list = getattr(old_entry, attr)
2529
+ except AttributeError:
2530
+ continue
2531
+ value = []
2532
+ for sig in sig_list:
2533
+ ninfo = self.new_ninfo()
2534
+ if len(sig) == 32:
2535
+ ninfo.csig = sig
2536
+ else:
2537
+ ninfo.timestamp = sig
2538
+ value.append(ninfo)
2539
+ setattr(binfo, attr, value)
2540
+ delattr(old_entry, attr)
2541
+ return new_entry
2542
+
2543
+ memoizer_counters.append(SCons.Memoize.CountValue('get_stored_info'))
2544
+
2545
+ def get_stored_info(self):
2546
+ try:
2547
+ return self._memo['get_stored_info']
2548
+ except KeyError:
2549
+ pass
2550
+
2551
+ try:
2552
+ sconsign_entry = self.dir.sconsign().get_entry(self.name)
2553
+ except (KeyError, EnvironmentError):
2554
+ import SCons.SConsign
2555
+ sconsign_entry = SCons.SConsign.SConsignEntry()
2556
+ sconsign_entry.binfo = self.new_binfo()
2557
+ sconsign_entry.ninfo = self.new_ninfo()
2558
+ else:
2559
+ if isinstance(sconsign_entry, FileBuildInfo):
2560
+ # This is a .sconsign file from before the Big Signature
2561
+ # Refactoring; convert it as best we can.
2562
+ sconsign_entry = self.convert_old_entry(sconsign_entry)
2563
+ try:
2564
+ delattr(sconsign_entry.ninfo, 'bsig')
2565
+ except AttributeError:
2566
+ pass
2567
+
2568
+ self._memo['get_stored_info'] = sconsign_entry
2569
+
2570
+ return sconsign_entry
2571
+
2572
+ def get_stored_implicit(self):
2573
+ binfo = self.get_stored_info().binfo
2574
+ binfo.prepare_dependencies()
2575
+ try: return binfo.bimplicit
2576
+ except AttributeError: return None
2577
+
2578
+ def rel_path(self, other):
2579
+ return self.dir.rel_path(other)
2580
+
2581
+ def _get_found_includes_key(self, env, scanner, path):
2582
+ return (id(env), id(scanner), path)
2583
+
2584
+ memoizer_counters.append(SCons.Memoize.CountDict('get_found_includes', _get_found_includes_key))
2585
+
2586
+ def get_found_includes(self, env, scanner, path):
2587
+ """Return the included implicit dependencies in this file.
2588
+ Cache results so we only scan the file once per path
2589
+ regardless of how many times this information is requested.
2590
+ """
2591
+ memo_key = (id(env), id(scanner), path)
2592
+ try:
2593
+ memo_dict = self._memo['get_found_includes']
2594
+ except KeyError:
2595
+ memo_dict = {}
2596
+ self._memo['get_found_includes'] = memo_dict
2597
+ else:
2598
+ try:
2599
+ return memo_dict[memo_key]
2600
+ except KeyError:
2601
+ pass
2602
+
2603
+ if scanner:
2604
+ # result = [n.disambiguate() for n in scanner(self, env, path)]
2605
+ result = scanner(self, env, path)
2606
+ result = map(lambda N: N.disambiguate(), result)
2607
+ else:
2608
+ result = []
2609
+
2610
+ memo_dict[memo_key] = result
2611
+
2612
+ return result
2613
+
2614
+ def _createDir(self):
2615
+ # ensure that the directories for this node are
2616
+ # created.
2617
+ self.dir._create()
2618
+
2619
+ def push_to_cache(self):
2620
+ """Try to push the node into a cache
2621
+ """
2622
+ # This should get called before the Nodes' .built() method is
2623
+ # called, which would clear the build signature if the file has
2624
+ # a source scanner.
2625
+ #
2626
+ # We have to clear the local memoized values *before* we push
2627
+ # the node to cache so that the memoization of the self.exists()
2628
+ # return value doesn't interfere.
2629
+ if self.nocache:
2630
+ return
2631
+ self.clear_memoized_values()
2632
+ if self.exists():
2633
+ self.get_build_env().get_CacheDir().push(self)
2634
+
2635
+ def retrieve_from_cache(self):
2636
+ """Try to retrieve the node's content from a cache
2637
+
2638
+ This method is called from multiple threads in a parallel build,
2639
+ so only do thread safe stuff here. Do thread unsafe stuff in
2640
+ built().
2641
+
2642
+ Returns true iff the node was successfully retrieved.
2643
+ """
2644
+ if self.nocache:
2645
+ return None
2646
+ if not self.is_derived():
2647
+ return None
2648
+ return self.get_build_env().get_CacheDir().retrieve(self)
2649
+
2650
+ def visited(self):
2651
+ if self.exists():
2652
+ self.get_build_env().get_CacheDir().push_if_forced(self)
2653
+
2654
+ ninfo = self.get_ninfo()
2655
+
2656
+ csig = self.get_max_drift_csig()
2657
+ if csig:
2658
+ ninfo.csig = csig
2659
+
2660
+ ninfo.timestamp = self.get_timestamp()
2661
+ ninfo.size = self.get_size()
2662
+
2663
+ if not self.has_builder():
2664
+ # This is a source file, but it might have been a target file
2665
+ # in another build that included more of the DAG. Copy
2666
+ # any build information that's stored in the .sconsign file
2667
+ # into our binfo object so it doesn't get lost.
2668
+ old = self.get_stored_info()
2669
+ self.get_binfo().__dict__.update(old.binfo.__dict__)
2670
+
2671
+ self.store_info()
2672
+
2673
+ def find_src_builder(self):
2674
+ if self.rexists():
2675
+ return None
2676
+ scb = self.dir.src_builder()
2677
+ if scb is _null:
2678
+ if diskcheck_sccs(self.dir, self.name):
2679
+ scb = get_DefaultSCCSBuilder()
2680
+ elif diskcheck_rcs(self.dir, self.name):
2681
+ scb = get_DefaultRCSBuilder()
2682
+ else:
2683
+ scb = None
2684
+ if scb is not None:
2685
+ try:
2686
+ b = self.builder
2687
+ except AttributeError:
2688
+ b = None
2689
+ if b is None:
2690
+ self.builder_set(scb)
2691
+ return scb
2692
+
2693
+ def has_src_builder(self):
2694
+ """Return whether this Node has a source builder or not.
2695
+
2696
+ If this Node doesn't have an explicit source code builder, this
2697
+ is where we figure out, on the fly, if there's a transparent
2698
+ source code builder for it.
2699
+
2700
+ Note that if we found a source builder, we also set the
2701
+ self.builder attribute, so that all of the methods that actually
2702
+ *build* this file don't have to do anything different.
2703
+ """
2704
+ try:
2705
+ scb = self.sbuilder
2706
+ except AttributeError:
2707
+ scb = self.sbuilder = self.find_src_builder()
2708
+ return scb is not None
2709
+
2710
+ def alter_targets(self):
2711
+ """Return any corresponding targets in a variant directory.
2712
+ """
2713
+ if self.is_derived():
2714
+ return [], None
2715
+ return self.fs.variant_dir_target_climb(self, self.dir, [self.name])
2716
+
2717
+ def _rmv_existing(self):
2718
+ self.clear_memoized_values()
2719
+ e = Unlink(self, [], None)
2720
+ if isinstance(e, SCons.Errors.BuildError):
2721
+ raise e
2722
+
2723
+ #
2724
+ # Taskmaster interface subsystem
2725
+ #
2726
+
2727
+ def make_ready(self):
2728
+ self.has_src_builder()
2729
+ self.get_binfo()
2730
+
2731
+ def prepare(self):
2732
+ """Prepare for this file to be created."""
2733
+ SCons.Node.Node.prepare(self)
2734
+
2735
+ if self.get_state() != SCons.Node.up_to_date:
2736
+ if self.exists():
2737
+ if self.is_derived() and not self.precious:
2738
+ self._rmv_existing()
2739
+ else:
2740
+ try:
2741
+ self._createDir()
2742
+ except SCons.Errors.StopError, drive:
2743
+ desc = "No drive `%s' for target `%s'." % (drive, self)
2744
+ raise SCons.Errors.StopError, desc
2745
+
2746
+ #
2747
+ #
2748
+ #
2749
+
2750
+ def remove(self):
2751
+ """Remove this file."""
2752
+ if self.exists() or self.islink():
2753
+ self.fs.unlink(self.path)
2754
+ return 1
2755
+ return None
2756
+
2757
+ def do_duplicate(self, src):
2758
+ self._createDir()
2759
+ Unlink(self, None, None)
2760
+ e = Link(self, src, None)
2761
+ if isinstance(e, SCons.Errors.BuildError):
2762
+ desc = "Cannot duplicate `%s' in `%s': %s." % (src.path, self.dir.path, e.errstr)
2763
+ raise SCons.Errors.StopError, desc
2764
+ self.linked = 1
2765
+ # The Link() action may or may not have actually
2766
+ # created the file, depending on whether the -n
2767
+ # option was used or not. Delete the _exists and
2768
+ # _rexists attributes so they can be reevaluated.
2769
+ self.clear()
2770
+
2771
+ memoizer_counters.append(SCons.Memoize.CountValue('exists'))
2772
+
2773
+ def exists(self):
2774
+ try:
2775
+ return self._memo['exists']
2776
+ except KeyError:
2777
+ pass
2778
+ # Duplicate from source path if we are set up to do this.
2779
+ if self.duplicate and not self.is_derived() and not self.linked:
2780
+ src = self.srcnode()
2781
+ if src is not self:
2782
+ # At this point, src is meant to be copied in a variant directory.
2783
+ src = src.rfile()
2784
+ if src.abspath != self.abspath:
2785
+ if src.exists():
2786
+ self.do_duplicate(src)
2787
+ # Can't return 1 here because the duplication might
2788
+ # not actually occur if the -n option is being used.
2789
+ else:
2790
+ # The source file does not exist. Make sure no old
2791
+ # copy remains in the variant directory.
2792
+ if Base.exists(self) or self.islink():
2793
+ self.fs.unlink(self.path)
2794
+ # Return None explicitly because the Base.exists() call
2795
+ # above will have cached its value if the file existed.
2796
+ self._memo['exists'] = None
2797
+ return None
2798
+ result = Base.exists(self)
2799
+ self._memo['exists'] = result
2800
+ return result
2801
+
2802
+ #
2803
+ # SIGNATURE SUBSYSTEM
2804
+ #
2805
+
2806
+ def get_max_drift_csig(self):
2807
+ """
2808
+ Returns the content signature currently stored for this node
2809
+ if it's been unmodified longer than the max_drift value, or the
2810
+ max_drift value is 0. Returns None otherwise.
2811
+ """
2812
+ old = self.get_stored_info()
2813
+ mtime = self.get_timestamp()
2814
+
2815
+ max_drift = self.fs.max_drift
2816
+ if max_drift > 0:
2817
+ if (time.time() - mtime) > max_drift:
2818
+ try:
2819
+ n = old.ninfo
2820
+ if n.timestamp and n.csig and n.timestamp == mtime:
2821
+ return n.csig
2822
+ except AttributeError:
2823
+ pass
2824
+ elif max_drift == 0:
2825
+ try:
2826
+ return old.ninfo.csig
2827
+ except AttributeError:
2828
+ pass
2829
+
2830
+ return None
2831
+
2832
+ def get_csig(self):
2833
+ """
2834
+ Generate a node's content signature, the digested signature
2835
+ of its content.
2836
+
2837
+ node - the node
2838
+ cache - alternate node to use for the signature cache
2839
+ returns - the content signature
2840
+ """
2841
+ ninfo = self.get_ninfo()
2842
+ try:
2843
+ return ninfo.csig
2844
+ except AttributeError:
2845
+ pass
2846
+
2847
+ csig = self.get_max_drift_csig()
2848
+ if csig is None:
2849
+
2850
+ try:
2851
+ if self.get_size() < SCons.Node.FS.File.md5_chunksize:
2852
+ contents = self.get_contents()
2853
+ else:
2854
+ csig = self.get_content_hash()
2855
+ except IOError:
2856
+ # This can happen if there's actually a directory on-disk,
2857
+ # which can be the case if they've disabled disk checks,
2858
+ # or if an action with a File target actually happens to
2859
+ # create a same-named directory by mistake.
2860
+ csig = ''
2861
+ else:
2862
+ if not csig:
2863
+ csig = SCons.Util.MD5signature(contents)
2864
+
2865
+ ninfo.csig = csig
2866
+
2867
+ return csig
2868
+
2869
+ #
2870
+ # DECISION SUBSYSTEM
2871
+ #
2872
+
2873
+ def builder_set(self, builder):
2874
+ SCons.Node.Node.builder_set(self, builder)
2875
+ self.changed_since_last_build = self.decide_target
2876
+
2877
+ def changed_content(self, target, prev_ni):
2878
+ cur_csig = self.get_csig()
2879
+ try:
2880
+ return cur_csig != prev_ni.csig
2881
+ except AttributeError:
2882
+ return 1
2883
+
2884
+ def changed_state(self, target, prev_ni):
2885
+ return self.state != SCons.Node.up_to_date
2886
+
2887
+ def changed_timestamp_then_content(self, target, prev_ni):
2888
+ if not self.changed_timestamp_match(target, prev_ni):
2889
+ try:
2890
+ self.get_ninfo().csig = prev_ni.csig
2891
+ except AttributeError:
2892
+ pass
2893
+ return False
2894
+ return self.changed_content(target, prev_ni)
2895
+
2896
+ def changed_timestamp_newer(self, target, prev_ni):
2897
+ try:
2898
+ return self.get_timestamp() > target.get_timestamp()
2899
+ except AttributeError:
2900
+ return 1
2901
+
2902
+ def changed_timestamp_match(self, target, prev_ni):
2903
+ try:
2904
+ return self.get_timestamp() != prev_ni.timestamp
2905
+ except AttributeError:
2906
+ return 1
2907
+
2908
+ def decide_source(self, target, prev_ni):
2909
+ return target.get_build_env().decide_source(self, target, prev_ni)
2910
+
2911
+ def decide_target(self, target, prev_ni):
2912
+ return target.get_build_env().decide_target(self, target, prev_ni)
2913
+
2914
+ # Initialize this Node's decider function to decide_source() because
2915
+ # every file is a source file until it has a Builder attached...
2916
+ changed_since_last_build = decide_source
2917
+
2918
+ def is_up_to_date(self):
2919
+ T = 0
2920
+ if T: Trace('is_up_to_date(%s):' % self)
2921
+ if not self.exists():
2922
+ if T: Trace(' not self.exists():')
2923
+ # The file doesn't exist locally...
2924
+ r = self.rfile()
2925
+ if r != self:
2926
+ # ...but there is one in a Repository...
2927
+ if not self.changed(r):
2928
+ if T: Trace(' changed(%s):' % r)
2929
+ # ...and it's even up-to-date...
2930
+ if self._local:
2931
+ # ...and they'd like a local copy.
2932
+ e = LocalCopy(self, r, None)
2933
+ if isinstance(e, SCons.Errors.BuildError):
2934
+ raise
2935
+ self.store_info()
2936
+ if T: Trace(' 1\n')
2937
+ return 1
2938
+ self.changed()
2939
+ if T: Trace(' None\n')
2940
+ return None
2941
+ else:
2942
+ r = self.changed()
2943
+ if T: Trace(' self.exists(): %s\n' % r)
2944
+ return not r
2945
+
2946
+ memoizer_counters.append(SCons.Memoize.CountValue('rfile'))
2947
+
2948
+ def rfile(self):
2949
+ try:
2950
+ return self._memo['rfile']
2951
+ except KeyError:
2952
+ pass
2953
+ result = self
2954
+ if not self.exists():
2955
+ norm_name = _my_normcase(self.name)
2956
+ for dir in self.dir.get_all_rdirs():
2957
+ try: node = dir.entries[norm_name]
2958
+ except KeyError: node = dir.file_on_disk(self.name)
2959
+ if node and node.exists() and \
2960
+ (isinstance(node, File) or isinstance(node, Entry) \
2961
+ or not node.is_derived()):
2962
+ result = node
2963
+ # Copy over our local attributes to the repository
2964
+ # Node so we identify shared object files in the
2965
+ # repository and don't assume they're static.
2966
+ #
2967
+ # This isn't perfect; the attribute would ideally
2968
+ # be attached to the object in the repository in
2969
+ # case it was built statically in the repository
2970
+ # and we changed it to shared locally, but that's
2971
+ # rarely the case and would only occur if you
2972
+ # intentionally used the same suffix for both
2973
+ # shared and static objects anyway. So this
2974
+ # should work well in practice.
2975
+ result.attributes = self.attributes
2976
+ break
2977
+ self._memo['rfile'] = result
2978
+ return result
2979
+
2980
+ def rstr(self):
2981
+ return str(self.rfile())
2982
+
2983
+ def get_cachedir_csig(self):
2984
+ """
2985
+ Fetch a Node's content signature for purposes of computing
2986
+ another Node's cachesig.
2987
+
2988
+ This is a wrapper around the normal get_csig() method that handles
2989
+ the somewhat obscure case of using CacheDir with the -n option.
2990
+ Any files that don't exist would normally be "built" by fetching
2991
+ them from the cache, but the normal get_csig() method will try
2992
+ to open up the local file, which doesn't exist because the -n
2993
+ option meant we didn't actually pull the file from cachedir.
2994
+ But since the file *does* actually exist in the cachedir, we
2995
+ can use its contents for the csig.
2996
+ """
2997
+ try:
2998
+ return self.cachedir_csig
2999
+ except AttributeError:
3000
+ pass
3001
+
3002
+ cachedir, cachefile = self.get_build_env().get_CacheDir().cachepath(self)
3003
+ if not self.exists() and cachefile and os.path.exists(cachefile):
3004
+ self.cachedir_csig = SCons.Util.MD5filesignature(cachefile, \
3005
+ SCons.Node.FS.File.md5_chunksize * 1024)
3006
+ else:
3007
+ self.cachedir_csig = self.get_csig()
3008
+ return self.cachedir_csig
3009
+
3010
+ def get_cachedir_bsig(self):
3011
+ try:
3012
+ return self.cachesig
3013
+ except AttributeError:
3014
+ pass
3015
+
3016
+ # Add the path to the cache signature, because multiple
3017
+ # targets built by the same action will all have the same
3018
+ # build signature, and we have to differentiate them somehow.
3019
+ children = self.children()
3020
+ executor = self.get_executor()
3021
+ # sigs = [n.get_cachedir_csig() for n in children]
3022
+ sigs = map(lambda n: n.get_cachedir_csig(), children)
3023
+ sigs.append(SCons.Util.MD5signature(executor.get_contents()))
3024
+ sigs.append(self.path)
3025
+ result = self.cachesig = SCons.Util.MD5collect(sigs)
3026
+ return result
3027
+
3028
+
3029
+ default_fs = None
3030
+
3031
+ def get_default_fs():
3032
+ global default_fs
3033
+ if not default_fs:
3034
+ default_fs = FS()
3035
+ return default_fs
3036
+
3037
+ class FileFinder:
3038
+ """
3039
+ """
3040
+ if SCons.Memoize.use_memoizer:
3041
+ __metaclass__ = SCons.Memoize.Memoized_Metaclass
3042
+
3043
+ memoizer_counters = []
3044
+
3045
+ def __init__(self):
3046
+ self._memo = {}
3047
+
3048
+ def filedir_lookup(self, p, fd=None):
3049
+ """
3050
+ A helper method for find_file() that looks up a directory for
3051
+ a file we're trying to find. This only creates the Dir Node if
3052
+ it exists on-disk, since if the directory doesn't exist we know
3053
+ we won't find any files in it... :-)
3054
+
3055
+ It would be more compact to just use this as a nested function
3056
+ with a default keyword argument (see the commented-out version
3057
+ below), but that doesn't work unless you have nested scopes,
3058
+ so we define it here just so this work under Python 1.5.2.
3059
+ """
3060
+ if fd is None:
3061
+ fd = self.default_filedir
3062
+ dir, name = os.path.split(fd)
3063
+ drive, d = os.path.splitdrive(dir)
3064
+ if not name and d[:1] in ('/', os.sep):
3065
+ #return p.fs.get_root(drive).dir_on_disk(name)
3066
+ return p.fs.get_root(drive)
3067
+ if dir:
3068
+ p = self.filedir_lookup(p, dir)
3069
+ if not p:
3070
+ return None
3071
+ norm_name = _my_normcase(name)
3072
+ try:
3073
+ node = p.entries[norm_name]
3074
+ except KeyError:
3075
+ return p.dir_on_disk(name)
3076
+ if isinstance(node, Dir):
3077
+ return node
3078
+ if isinstance(node, Entry):
3079
+ node.must_be_same(Dir)
3080
+ return node
3081
+ return None
3082
+
3083
+ def _find_file_key(self, filename, paths, verbose=None):
3084
+ return (filename, paths)
3085
+
3086
+ memoizer_counters.append(SCons.Memoize.CountDict('find_file', _find_file_key))
3087
+
3088
+ def find_file(self, filename, paths, verbose=None):
3089
+ """
3090
+ find_file(str, [Dir()]) -> [nodes]
3091
+
3092
+ filename - a filename to find
3093
+ paths - a list of directory path *nodes* to search in. Can be
3094
+ represented as a list, a tuple, or a callable that is
3095
+ called with no arguments and returns the list or tuple.
3096
+
3097
+ returns - the node created from the found file.
3098
+
3099
+ Find a node corresponding to either a derived file or a file
3100
+ that exists already.
3101
+
3102
+ Only the first file found is returned, and none is returned
3103
+ if no file is found.
3104
+ """
3105
+ memo_key = self._find_file_key(filename, paths)
3106
+ try:
3107
+ memo_dict = self._memo['find_file']
3108
+ except KeyError:
3109
+ memo_dict = {}
3110
+ self._memo['find_file'] = memo_dict
3111
+ else:
3112
+ try:
3113
+ return memo_dict[memo_key]
3114
+ except KeyError:
3115
+ pass
3116
+
3117
+ if verbose and not callable(verbose):
3118
+ if not SCons.Util.is_String(verbose):
3119
+ verbose = "find_file"
3120
+ verbose = ' %s: ' % verbose
3121
+ verbose = lambda s, v=verbose: sys.stdout.write(v + s)
3122
+
3123
+ filedir, filename = os.path.split(filename)
3124
+ if filedir:
3125
+ # More compact code that we can't use until we drop
3126
+ # support for Python 1.5.2:
3127
+ #
3128
+ #def filedir_lookup(p, fd=filedir):
3129
+ # """
3130
+ # A helper function that looks up a directory for a file
3131
+ # we're trying to find. This only creates the Dir Node
3132
+ # if it exists on-disk, since if the directory doesn't
3133
+ # exist we know we won't find any files in it... :-)
3134
+ # """
3135
+ # dir, name = os.path.split(fd)
3136
+ # if dir:
3137
+ # p = filedir_lookup(p, dir)
3138
+ # if not p:
3139
+ # return None
3140
+ # norm_name = _my_normcase(name)
3141
+ # try:
3142
+ # node = p.entries[norm_name]
3143
+ # except KeyError:
3144
+ # return p.dir_on_disk(name)
3145
+ # if isinstance(node, Dir):
3146
+ # return node
3147
+ # if isinstance(node, Entry):
3148
+ # node.must_be_same(Dir)
3149
+ # return node
3150
+ # if isinstance(node, Dir) or isinstance(node, Entry):
3151
+ # return node
3152
+ # return None
3153
+ #paths = filter(None, map(filedir_lookup, paths))
3154
+
3155
+ self.default_filedir = filedir
3156
+ paths = filter(None, map(self.filedir_lookup, paths))
3157
+
3158
+ result = None
3159
+ for dir in paths:
3160
+ if verbose:
3161
+ verbose("looking for '%s' in '%s' ...\n" % (filename, dir))
3162
+ node, d = dir.srcdir_find_file(filename)
3163
+ if node:
3164
+ if verbose:
3165
+ verbose("... FOUND '%s' in '%s'\n" % (filename, d))
3166
+ result = node
3167
+ break
3168
+
3169
+ memo_dict[memo_key] = result
3170
+
3171
+ return result
3172
+
3173
+ find_file = FileFinder().find_file
3174
+
3175
+
3176
+ def invalidate_node_memos(targets):
3177
+ """
3178
+ Invalidate the memoized values of all Nodes (files or directories)
3179
+ that are associated with the given entries. Has been added to
3180
+ clear the cache of nodes affected by a direct execution of an
3181
+ action (e.g. Delete/Copy/Chmod). Existing Node caches become
3182
+ inconsistent if the action is run through Execute(). The argument
3183
+ `targets` can be a single Node object or filename, or a sequence
3184
+ of Nodes/filenames.
3185
+ """
3186
+ from traceback import extract_stack
3187
+
3188
+ # First check if the cache really needs to be flushed. Only
3189
+ # actions run in the SConscript with Execute() seem to be
3190
+ # affected. XXX The way to check if Execute() is in the stacktrace
3191
+ # is a very dirty hack and should be replaced by a more sensible
3192
+ # solution.
3193
+ for f in extract_stack():
3194
+ if f[2] == 'Execute' and f[0][-14:] == 'Environment.py':
3195
+ break
3196
+ else:
3197
+ # Dont have to invalidate, so return
3198
+ return
3199
+
3200
+ if not SCons.Util.is_List(targets):
3201
+ targets = [targets]
3202
+
3203
+ for entry in targets:
3204
+ # If the target is a Node object, clear the cache. If it is a
3205
+ # filename, look up potentially existing Node object first.
3206
+ try:
3207
+ entry.clear_memoized_values()
3208
+ except AttributeError:
3209
+ # Not a Node object, try to look up Node by filename. XXX
3210
+ # This creates Node objects even for those filenames which
3211
+ # do not correspond to an existing Node object.
3212
+ node = get_default_fs().Entry(entry)
3213
+ if node:
3214
+ node.clear_memoized_values()
3215
+
3216
+ # Local Variables:
3217
+ # tab-width:4
3218
+ # indent-tabs-mode:nil
3219
+ # End:
3220
+ # vim: set expandtab tabstop=4 shiftwidth=4: