therubyracer 0.4.9-x86-linux

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of therubyracer might be problematic. Click here for more details.

Files changed (637) hide show
  1. data/.gitignore +11 -0
  2. data/.gitmodules +3 -0
  3. data/Doxyfile +1514 -0
  4. data/History.txt +43 -0
  5. data/README.rdoc +157 -0
  6. data/Rakefile +51 -0
  7. data/docs/data_conversion.txt +18 -0
  8. data/ext/v8/callbacks.cpp +160 -0
  9. data/ext/v8/callbacks.h +14 -0
  10. data/ext/v8/convert_ruby.cpp +8 -0
  11. data/ext/v8/convert_ruby.h +99 -0
  12. data/ext/v8/convert_string.cpp +10 -0
  13. data/ext/v8/convert_string.h +73 -0
  14. data/ext/v8/convert_v8.cpp +9 -0
  15. data/ext/v8/convert_v8.h +121 -0
  16. data/ext/v8/converters.cpp +83 -0
  17. data/ext/v8/converters.h +23 -0
  18. data/ext/v8/extconf.rb +36 -0
  19. data/ext/v8/upstream/2.0.6/.gitignore +26 -0
  20. data/ext/v8/upstream/2.0.6/AUTHORS +23 -0
  21. data/ext/v8/upstream/2.0.6/ChangeLog +1479 -0
  22. data/ext/v8/upstream/2.0.6/LICENSE +55 -0
  23. data/ext/v8/upstream/2.0.6/SConstruct +1028 -0
  24. data/ext/v8/upstream/2.0.6/include/v8-debug.h +275 -0
  25. data/ext/v8/upstream/2.0.6/include/v8.h +3236 -0
  26. data/ext/v8/upstream/2.0.6/src/SConscript +283 -0
  27. data/ext/v8/upstream/2.0.6/src/accessors.cc +695 -0
  28. data/ext/v8/upstream/2.0.6/src/accessors.h +114 -0
  29. data/ext/v8/upstream/2.0.6/src/allocation.cc +198 -0
  30. data/ext/v8/upstream/2.0.6/src/allocation.h +169 -0
  31. data/ext/v8/upstream/2.0.6/src/api.cc +3831 -0
  32. data/ext/v8/upstream/2.0.6/src/api.h +479 -0
  33. data/ext/v8/upstream/2.0.6/src/apinatives.js +110 -0
  34. data/ext/v8/upstream/2.0.6/src/apiutils.h +69 -0
  35. data/ext/v8/upstream/2.0.6/src/arguments.h +97 -0
  36. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm-inl.h +277 -0
  37. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.cc +1821 -0
  38. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.h +1027 -0
  39. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2-inl.h +267 -0
  40. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.cc +1821 -0
  41. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.h +1027 -0
  42. data/ext/v8/upstream/2.0.6/src/arm/builtins-arm.cc +1271 -0
  43. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm-inl.h +74 -0
  44. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.cc +6682 -0
  45. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.h +535 -0
  46. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.cc +112 -0
  47. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.h +347 -0
  48. data/ext/v8/upstream/2.0.6/src/arm/cpu-arm.cc +132 -0
  49. data/ext/v8/upstream/2.0.6/src/arm/debug-arm.cc +213 -0
  50. data/ext/v8/upstream/2.0.6/src/arm/disasm-arm.cc +1166 -0
  51. data/ext/v8/upstream/2.0.6/src/arm/fast-codegen-arm.cc +1698 -0
  52. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.cc +123 -0
  53. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.h +162 -0
  54. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +849 -0
  55. data/ext/v8/upstream/2.0.6/src/arm/jump-target-arm.cc +238 -0
  56. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.cc +1259 -0
  57. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.h +423 -0
  58. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.cc +1266 -0
  59. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.h +282 -0
  60. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm-inl.h +103 -0
  61. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.cc +59 -0
  62. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.h +43 -0
  63. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.cc +2264 -0
  64. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.h +306 -0
  65. data/ext/v8/upstream/2.0.6/src/arm/stub-cache-arm.cc +1516 -0
  66. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +412 -0
  67. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.h +532 -0
  68. data/ext/v8/upstream/2.0.6/src/array.js +1154 -0
  69. data/ext/v8/upstream/2.0.6/src/assembler.cc +772 -0
  70. data/ext/v8/upstream/2.0.6/src/assembler.h +525 -0
  71. data/ext/v8/upstream/2.0.6/src/ast.cc +512 -0
  72. data/ext/v8/upstream/2.0.6/src/ast.h +1820 -0
  73. data/ext/v8/upstream/2.0.6/src/bootstrapper.cc +1680 -0
  74. data/ext/v8/upstream/2.0.6/src/bootstrapper.h +103 -0
  75. data/ext/v8/upstream/2.0.6/src/builtins.cc +851 -0
  76. data/ext/v8/upstream/2.0.6/src/builtins.h +245 -0
  77. data/ext/v8/upstream/2.0.6/src/bytecodes-irregexp.h +104 -0
  78. data/ext/v8/upstream/2.0.6/src/char-predicates-inl.h +86 -0
  79. data/ext/v8/upstream/2.0.6/src/char-predicates.h +65 -0
  80. data/ext/v8/upstream/2.0.6/src/checks.cc +100 -0
  81. data/ext/v8/upstream/2.0.6/src/checks.h +284 -0
  82. data/ext/v8/upstream/2.0.6/src/code-stubs.cc +164 -0
  83. data/ext/v8/upstream/2.0.6/src/code-stubs.h +164 -0
  84. data/ext/v8/upstream/2.0.6/src/code.h +68 -0
  85. data/ext/v8/upstream/2.0.6/src/codegen-inl.h +88 -0
  86. data/ext/v8/upstream/2.0.6/src/codegen.cc +504 -0
  87. data/ext/v8/upstream/2.0.6/src/codegen.h +522 -0
  88. data/ext/v8/upstream/2.0.6/src/compilation-cache.cc +490 -0
  89. data/ext/v8/upstream/2.0.6/src/compilation-cache.h +98 -0
  90. data/ext/v8/upstream/2.0.6/src/compiler.cc +1132 -0
  91. data/ext/v8/upstream/2.0.6/src/compiler.h +107 -0
  92. data/ext/v8/upstream/2.0.6/src/contexts.cc +256 -0
  93. data/ext/v8/upstream/2.0.6/src/contexts.h +345 -0
  94. data/ext/v8/upstream/2.0.6/src/conversions-inl.h +95 -0
  95. data/ext/v8/upstream/2.0.6/src/conversions.cc +709 -0
  96. data/ext/v8/upstream/2.0.6/src/conversions.h +118 -0
  97. data/ext/v8/upstream/2.0.6/src/counters.cc +78 -0
  98. data/ext/v8/upstream/2.0.6/src/counters.h +239 -0
  99. data/ext/v8/upstream/2.0.6/src/cpu.h +65 -0
  100. data/ext/v8/upstream/2.0.6/src/d8-debug.cc +345 -0
  101. data/ext/v8/upstream/2.0.6/src/d8-debug.h +155 -0
  102. data/ext/v8/upstream/2.0.6/src/d8-posix.cc +675 -0
  103. data/ext/v8/upstream/2.0.6/src/d8-readline.cc +128 -0
  104. data/ext/v8/upstream/2.0.6/src/d8-windows.cc +42 -0
  105. data/ext/v8/upstream/2.0.6/src/d8.cc +776 -0
  106. data/ext/v8/upstream/2.0.6/src/d8.h +225 -0
  107. data/ext/v8/upstream/2.0.6/src/d8.js +1625 -0
  108. data/ext/v8/upstream/2.0.6/src/date-delay.js +1138 -0
  109. data/ext/v8/upstream/2.0.6/src/dateparser-inl.h +114 -0
  110. data/ext/v8/upstream/2.0.6/src/dateparser.cc +186 -0
  111. data/ext/v8/upstream/2.0.6/src/dateparser.h +240 -0
  112. data/ext/v8/upstream/2.0.6/src/debug-agent.cc +425 -0
  113. data/ext/v8/upstream/2.0.6/src/debug-agent.h +129 -0
  114. data/ext/v8/upstream/2.0.6/src/debug-delay.js +2073 -0
  115. data/ext/v8/upstream/2.0.6/src/debug.cc +2751 -0
  116. data/ext/v8/upstream/2.0.6/src/debug.h +866 -0
  117. data/ext/v8/upstream/2.0.6/src/disasm.h +77 -0
  118. data/ext/v8/upstream/2.0.6/src/disassembler.cc +318 -0
  119. data/ext/v8/upstream/2.0.6/src/disassembler.h +56 -0
  120. data/ext/v8/upstream/2.0.6/src/dtoa-config.c +91 -0
  121. data/ext/v8/upstream/2.0.6/src/execution.cc +701 -0
  122. data/ext/v8/upstream/2.0.6/src/execution.h +312 -0
  123. data/ext/v8/upstream/2.0.6/src/factory.cc +957 -0
  124. data/ext/v8/upstream/2.0.6/src/factory.h +393 -0
  125. data/ext/v8/upstream/2.0.6/src/fast-codegen.cc +725 -0
  126. data/ext/v8/upstream/2.0.6/src/fast-codegen.h +371 -0
  127. data/ext/v8/upstream/2.0.6/src/flag-definitions.h +426 -0
  128. data/ext/v8/upstream/2.0.6/src/flags.cc +555 -0
  129. data/ext/v8/upstream/2.0.6/src/flags.h +81 -0
  130. data/ext/v8/upstream/2.0.6/src/frame-element.cc +45 -0
  131. data/ext/v8/upstream/2.0.6/src/frame-element.h +235 -0
  132. data/ext/v8/upstream/2.0.6/src/frames-inl.h +215 -0
  133. data/ext/v8/upstream/2.0.6/src/frames.cc +749 -0
  134. data/ext/v8/upstream/2.0.6/src/frames.h +659 -0
  135. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.cc +76 -0
  136. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.h +135 -0
  137. data/ext/v8/upstream/2.0.6/src/global-handles.cc +516 -0
  138. data/ext/v8/upstream/2.0.6/src/global-handles.h +180 -0
  139. data/ext/v8/upstream/2.0.6/src/globals.h +608 -0
  140. data/ext/v8/upstream/2.0.6/src/handles-inl.h +76 -0
  141. data/ext/v8/upstream/2.0.6/src/handles.cc +811 -0
  142. data/ext/v8/upstream/2.0.6/src/handles.h +367 -0
  143. data/ext/v8/upstream/2.0.6/src/hashmap.cc +226 -0
  144. data/ext/v8/upstream/2.0.6/src/hashmap.h +120 -0
  145. data/ext/v8/upstream/2.0.6/src/heap-inl.h +407 -0
  146. data/ext/v8/upstream/2.0.6/src/heap-profiler.cc +695 -0
  147. data/ext/v8/upstream/2.0.6/src/heap-profiler.h +277 -0
  148. data/ext/v8/upstream/2.0.6/src/heap.cc +4204 -0
  149. data/ext/v8/upstream/2.0.6/src/heap.h +1704 -0
  150. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32-inl.h +325 -0
  151. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.cc +2375 -0
  152. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.h +914 -0
  153. data/ext/v8/upstream/2.0.6/src/ia32/builtins-ia32.cc +1222 -0
  154. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32-inl.h +46 -0
  155. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.cc +9770 -0
  156. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.h +834 -0
  157. data/ext/v8/upstream/2.0.6/src/ia32/cpu-ia32.cc +79 -0
  158. data/ext/v8/upstream/2.0.6/src/ia32/debug-ia32.cc +208 -0
  159. data/ext/v8/upstream/2.0.6/src/ia32/disasm-ia32.cc +1357 -0
  160. data/ext/v8/upstream/2.0.6/src/ia32/fast-codegen-ia32.cc +1813 -0
  161. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.cc +111 -0
  162. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.h +135 -0
  163. data/ext/v8/upstream/2.0.6/src/ia32/ic-ia32.cc +1490 -0
  164. data/ext/v8/upstream/2.0.6/src/ia32/jump-target-ia32.cc +432 -0
  165. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.cc +1517 -0
  166. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.h +528 -0
  167. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.cc +1219 -0
  168. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.h +230 -0
  169. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32-inl.h +82 -0
  170. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.cc +99 -0
  171. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.h +43 -0
  172. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.cc +30 -0
  173. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.h +62 -0
  174. data/ext/v8/upstream/2.0.6/src/ia32/stub-cache-ia32.cc +1961 -0
  175. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.cc +1105 -0
  176. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.h +580 -0
  177. data/ext/v8/upstream/2.0.6/src/ic-inl.h +93 -0
  178. data/ext/v8/upstream/2.0.6/src/ic.cc +1426 -0
  179. data/ext/v8/upstream/2.0.6/src/ic.h +443 -0
  180. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.cc +646 -0
  181. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.h +48 -0
  182. data/ext/v8/upstream/2.0.6/src/json-delay.js +254 -0
  183. data/ext/v8/upstream/2.0.6/src/jsregexp.cc +5234 -0
  184. data/ext/v8/upstream/2.0.6/src/jsregexp.h +1439 -0
  185. data/ext/v8/upstream/2.0.6/src/jump-target-inl.h +49 -0
  186. data/ext/v8/upstream/2.0.6/src/jump-target.cc +383 -0
  187. data/ext/v8/upstream/2.0.6/src/jump-target.h +280 -0
  188. data/ext/v8/upstream/2.0.6/src/list-inl.h +166 -0
  189. data/ext/v8/upstream/2.0.6/src/list.h +158 -0
  190. data/ext/v8/upstream/2.0.6/src/log-inl.h +126 -0
  191. data/ext/v8/upstream/2.0.6/src/log-utils.cc +503 -0
  192. data/ext/v8/upstream/2.0.6/src/log-utils.h +292 -0
  193. data/ext/v8/upstream/2.0.6/src/log.cc +1457 -0
  194. data/ext/v8/upstream/2.0.6/src/log.h +371 -0
  195. data/ext/v8/upstream/2.0.6/src/macro-assembler.h +93 -0
  196. data/ext/v8/upstream/2.0.6/src/macros.py +137 -0
  197. data/ext/v8/upstream/2.0.6/src/mark-compact.cc +2007 -0
  198. data/ext/v8/upstream/2.0.6/src/mark-compact.h +442 -0
  199. data/ext/v8/upstream/2.0.6/src/math.js +263 -0
  200. data/ext/v8/upstream/2.0.6/src/memory.h +74 -0
  201. data/ext/v8/upstream/2.0.6/src/messages.cc +177 -0
  202. data/ext/v8/upstream/2.0.6/src/messages.h +112 -0
  203. data/ext/v8/upstream/2.0.6/src/messages.js +937 -0
  204. data/ext/v8/upstream/2.0.6/src/mirror-delay.js +2332 -0
  205. data/ext/v8/upstream/2.0.6/src/mksnapshot.cc +169 -0
  206. data/ext/v8/upstream/2.0.6/src/natives.h +63 -0
  207. data/ext/v8/upstream/2.0.6/src/objects-debug.cc +1317 -0
  208. data/ext/v8/upstream/2.0.6/src/objects-inl.h +3044 -0
  209. data/ext/v8/upstream/2.0.6/src/objects.cc +8306 -0
  210. data/ext/v8/upstream/2.0.6/src/objects.h +4960 -0
  211. data/ext/v8/upstream/2.0.6/src/oprofile-agent.cc +116 -0
  212. data/ext/v8/upstream/2.0.6/src/oprofile-agent.h +69 -0
  213. data/ext/v8/upstream/2.0.6/src/parser.cc +4810 -0
  214. data/ext/v8/upstream/2.0.6/src/parser.h +195 -0
  215. data/ext/v8/upstream/2.0.6/src/platform-freebsd.cc +645 -0
  216. data/ext/v8/upstream/2.0.6/src/platform-linux.cc +808 -0
  217. data/ext/v8/upstream/2.0.6/src/platform-macos.cc +643 -0
  218. data/ext/v8/upstream/2.0.6/src/platform-nullos.cc +454 -0
  219. data/ext/v8/upstream/2.0.6/src/platform-openbsd.cc +597 -0
  220. data/ext/v8/upstream/2.0.6/src/platform-posix.cc +380 -0
  221. data/ext/v8/upstream/2.0.6/src/platform-win32.cc +1908 -0
  222. data/ext/v8/upstream/2.0.6/src/platform.h +556 -0
  223. data/ext/v8/upstream/2.0.6/src/prettyprinter.cc +1511 -0
  224. data/ext/v8/upstream/2.0.6/src/prettyprinter.h +219 -0
  225. data/ext/v8/upstream/2.0.6/src/property.cc +96 -0
  226. data/ext/v8/upstream/2.0.6/src/property.h +327 -0
  227. data/ext/v8/upstream/2.0.6/src/regexp-delay.js +406 -0
  228. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  229. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.cc +464 -0
  230. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.h +141 -0
  231. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.cc +356 -0
  232. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.h +103 -0
  233. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.cc +240 -0
  234. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.h +220 -0
  235. data/ext/v8/upstream/2.0.6/src/regexp-stack.cc +103 -0
  236. data/ext/v8/upstream/2.0.6/src/regexp-stack.h +123 -0
  237. data/ext/v8/upstream/2.0.6/src/register-allocator-inl.h +74 -0
  238. data/ext/v8/upstream/2.0.6/src/register-allocator.cc +100 -0
  239. data/ext/v8/upstream/2.0.6/src/register-allocator.h +295 -0
  240. data/ext/v8/upstream/2.0.6/src/rewriter.cc +855 -0
  241. data/ext/v8/upstream/2.0.6/src/rewriter.h +54 -0
  242. data/ext/v8/upstream/2.0.6/src/runtime.cc +8163 -0
  243. data/ext/v8/upstream/2.0.6/src/runtime.h +432 -0
  244. data/ext/v8/upstream/2.0.6/src/runtime.js +626 -0
  245. data/ext/v8/upstream/2.0.6/src/scanner.cc +1098 -0
  246. data/ext/v8/upstream/2.0.6/src/scanner.h +425 -0
  247. data/ext/v8/upstream/2.0.6/src/scopeinfo.cc +649 -0
  248. data/ext/v8/upstream/2.0.6/src/scopeinfo.h +236 -0
  249. data/ext/v8/upstream/2.0.6/src/scopes.cc +963 -0
  250. data/ext/v8/upstream/2.0.6/src/scopes.h +401 -0
  251. data/ext/v8/upstream/2.0.6/src/serialize.cc +1260 -0
  252. data/ext/v8/upstream/2.0.6/src/serialize.h +404 -0
  253. data/ext/v8/upstream/2.0.6/src/shell.h +55 -0
  254. data/ext/v8/upstream/2.0.6/src/simulator.h +41 -0
  255. data/ext/v8/upstream/2.0.6/src/smart-pointer.h +109 -0
  256. data/ext/v8/upstream/2.0.6/src/snapshot-common.cc +97 -0
  257. data/ext/v8/upstream/2.0.6/src/snapshot-empty.cc +40 -0
  258. data/ext/v8/upstream/2.0.6/src/snapshot.h +59 -0
  259. data/ext/v8/upstream/2.0.6/src/spaces-inl.h +372 -0
  260. data/ext/v8/upstream/2.0.6/src/spaces.cc +2864 -0
  261. data/ext/v8/upstream/2.0.6/src/spaces.h +2072 -0
  262. data/ext/v8/upstream/2.0.6/src/string-stream.cc +584 -0
  263. data/ext/v8/upstream/2.0.6/src/string-stream.h +189 -0
  264. data/ext/v8/upstream/2.0.6/src/string.js +901 -0
  265. data/ext/v8/upstream/2.0.6/src/stub-cache.cc +1108 -0
  266. data/ext/v8/upstream/2.0.6/src/stub-cache.h +578 -0
  267. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/COPYING +15 -0
  268. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/dtoa.c +3330 -0
  269. data/ext/v8/upstream/2.0.6/src/third_party/valgrind/valgrind.h +3925 -0
  270. data/ext/v8/upstream/2.0.6/src/token.cc +56 -0
  271. data/ext/v8/upstream/2.0.6/src/token.h +270 -0
  272. data/ext/v8/upstream/2.0.6/src/top.cc +991 -0
  273. data/ext/v8/upstream/2.0.6/src/top.h +459 -0
  274. data/ext/v8/upstream/2.0.6/src/unicode-inl.h +238 -0
  275. data/ext/v8/upstream/2.0.6/src/unicode.cc +749 -0
  276. data/ext/v8/upstream/2.0.6/src/unicode.h +279 -0
  277. data/ext/v8/upstream/2.0.6/src/uri.js +415 -0
  278. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +426 -0
  279. data/ext/v8/upstream/2.0.6/src/usage-analyzer.h +40 -0
  280. data/ext/v8/upstream/2.0.6/src/utils.cc +322 -0
  281. data/ext/v8/upstream/2.0.6/src/utils.h +592 -0
  282. data/ext/v8/upstream/2.0.6/src/v8-counters.cc +55 -0
  283. data/ext/v8/upstream/2.0.6/src/v8-counters.h +198 -0
  284. data/ext/v8/upstream/2.0.6/src/v8.cc +193 -0
  285. data/ext/v8/upstream/2.0.6/src/v8.h +119 -0
  286. data/ext/v8/upstream/2.0.6/src/v8natives.js +846 -0
  287. data/ext/v8/upstream/2.0.6/src/v8threads.cc +450 -0
  288. data/ext/v8/upstream/2.0.6/src/v8threads.h +144 -0
  289. data/ext/v8/upstream/2.0.6/src/variables.cc +163 -0
  290. data/ext/v8/upstream/2.0.6/src/variables.h +235 -0
  291. data/ext/v8/upstream/2.0.6/src/version.cc +88 -0
  292. data/ext/v8/upstream/2.0.6/src/version.h +64 -0
  293. data/ext/v8/upstream/2.0.6/src/virtual-frame.cc +381 -0
  294. data/ext/v8/upstream/2.0.6/src/virtual-frame.h +44 -0
  295. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64-inl.h +352 -0
  296. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.cc +2539 -0
  297. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.h +1399 -0
  298. data/ext/v8/upstream/2.0.6/src/x64/builtins-x64.cc +1255 -0
  299. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64-inl.h +46 -0
  300. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.cc +8223 -0
  301. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.h +785 -0
  302. data/ext/v8/upstream/2.0.6/src/x64/cpu-x64.cc +79 -0
  303. data/ext/v8/upstream/2.0.6/src/x64/debug-x64.cc +202 -0
  304. data/ext/v8/upstream/2.0.6/src/x64/disasm-x64.cc +1596 -0
  305. data/ext/v8/upstream/2.0.6/src/x64/fast-codegen-x64.cc +1820 -0
  306. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.cc +109 -0
  307. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.h +121 -0
  308. data/ext/v8/upstream/2.0.6/src/x64/ic-x64.cc +1392 -0
  309. data/ext/v8/upstream/2.0.6/src/x64/jump-target-x64.cc +432 -0
  310. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.cc +2409 -0
  311. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.h +765 -0
  312. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.cc +1337 -0
  313. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.h +295 -0
  314. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64-inl.h +86 -0
  315. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.cc +84 -0
  316. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.h +43 -0
  317. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.cc +27 -0
  318. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.h +63 -0
  319. data/ext/v8/upstream/2.0.6/src/x64/stub-cache-x64.cc +1884 -0
  320. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.cc +1089 -0
  321. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.h +560 -0
  322. data/ext/v8/upstream/2.0.6/src/zone-inl.h +297 -0
  323. data/ext/v8/upstream/2.0.6/src/zone.cc +193 -0
  324. data/ext/v8/upstream/2.0.6/src/zone.h +305 -0
  325. data/ext/v8/upstream/2.0.6/tools/codemap.js +258 -0
  326. data/ext/v8/upstream/2.0.6/tools/consarray.js +93 -0
  327. data/ext/v8/upstream/2.0.6/tools/csvparser.js +98 -0
  328. data/ext/v8/upstream/2.0.6/tools/gyp/v8.gyp +620 -0
  329. data/ext/v8/upstream/2.0.6/tools/js2c.py +376 -0
  330. data/ext/v8/upstream/2.0.6/tools/jsmin.py +280 -0
  331. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor +24 -0
  332. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor.py +78 -0
  333. data/ext/v8/upstream/2.0.6/tools/logreader.js +320 -0
  334. data/ext/v8/upstream/2.0.6/tools/mac-nm +18 -0
  335. data/ext/v8/upstream/2.0.6/tools/mac-tick-processor +6 -0
  336. data/ext/v8/upstream/2.0.6/tools/oprofile/annotate +7 -0
  337. data/ext/v8/upstream/2.0.6/tools/oprofile/common +19 -0
  338. data/ext/v8/upstream/2.0.6/tools/oprofile/dump +7 -0
  339. data/ext/v8/upstream/2.0.6/tools/oprofile/report +7 -0
  340. data/ext/v8/upstream/2.0.6/tools/oprofile/reset +7 -0
  341. data/ext/v8/upstream/2.0.6/tools/oprofile/run +14 -0
  342. data/ext/v8/upstream/2.0.6/tools/oprofile/shutdown +7 -0
  343. data/ext/v8/upstream/2.0.6/tools/oprofile/start +7 -0
  344. data/ext/v8/upstream/2.0.6/tools/presubmit.py +299 -0
  345. data/ext/v8/upstream/2.0.6/tools/process-heap-prof.py +120 -0
  346. data/ext/v8/upstream/2.0.6/tools/profile.js +621 -0
  347. data/ext/v8/upstream/2.0.6/tools/profile_view.js +224 -0
  348. data/ext/v8/upstream/2.0.6/tools/run-valgrind.py +77 -0
  349. data/ext/v8/upstream/2.0.6/tools/splaytree.js +322 -0
  350. data/ext/v8/upstream/2.0.6/tools/splaytree.py +226 -0
  351. data/ext/v8/upstream/2.0.6/tools/stats-viewer.py +456 -0
  352. data/ext/v8/upstream/2.0.6/tools/test.py +1370 -0
  353. data/ext/v8/upstream/2.0.6/tools/tickprocessor-driver.js +53 -0
  354. data/ext/v8/upstream/2.0.6/tools/tickprocessor.js +731 -0
  355. data/ext/v8/upstream/2.0.6/tools/tickprocessor.py +535 -0
  356. data/ext/v8/upstream/2.0.6/tools/utils.py +82 -0
  357. data/ext/v8/upstream/2.0.6/tools/visual_studio/README.txt +71 -0
  358. data/ext/v8/upstream/2.0.6/tools/visual_studio/arm.vsprops +14 -0
  359. data/ext/v8/upstream/2.0.6/tools/visual_studio/common.vsprops +35 -0
  360. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8.vcproj +199 -0
  361. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_arm.vcproj +199 -0
  362. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_x64.vcproj +201 -0
  363. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8js2c.cmd +6 -0
  364. data/ext/v8/upstream/2.0.6/tools/visual_studio/debug.vsprops +17 -0
  365. data/ext/v8/upstream/2.0.6/tools/visual_studio/ia32.vsprops +13 -0
  366. data/ext/v8/upstream/2.0.6/tools/visual_studio/js2c.cmd +6 -0
  367. data/ext/v8/upstream/2.0.6/tools/visual_studio/release.vsprops +24 -0
  368. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.sln +101 -0
  369. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.vcproj +223 -0
  370. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.sln +74 -0
  371. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.vcproj +223 -0
  372. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base.vcproj +971 -0
  373. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_arm.vcproj +983 -0
  374. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_x64.vcproj +959 -0
  375. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest.vcproj +255 -0
  376. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_arm.vcproj +243 -0
  377. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  378. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot.vcproj +151 -0
  379. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot_x64.vcproj +151 -0
  380. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample.vcproj +151 -0
  381. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_arm.vcproj +151 -0
  382. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_x64.vcproj +151 -0
  383. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample.vcproj +151 -0
  384. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_arm.vcproj +151 -0
  385. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_x64.vcproj +153 -0
  386. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot.vcproj +142 -0
  387. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  388. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  389. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  390. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.sln +101 -0
  391. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.vcproj +223 -0
  392. data/ext/v8/upstream/2.0.6/tools/visual_studio/x64.vsprops +13 -0
  393. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +5 -0
  394. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.py +137 -0
  395. data/ext/v8/upstream/Makefile +31 -0
  396. data/ext/v8/upstream/no-strict-aliasing.patch +13 -0
  397. data/ext/v8/upstream/scons/CHANGES.txt +5183 -0
  398. data/ext/v8/upstream/scons/LICENSE.txt +20 -0
  399. data/ext/v8/upstream/scons/MANIFEST +202 -0
  400. data/ext/v8/upstream/scons/PKG-INFO +13 -0
  401. data/ext/v8/upstream/scons/README.txt +273 -0
  402. data/ext/v8/upstream/scons/RELEASE.txt +1040 -0
  403. data/ext/v8/upstream/scons/engine/SCons/Action.py +1256 -0
  404. data/ext/v8/upstream/scons/engine/SCons/Builder.py +868 -0
  405. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +217 -0
  406. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +794 -0
  407. data/ext/v8/upstream/scons/engine/SCons/Debug.py +237 -0
  408. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +485 -0
  409. data/ext/v8/upstream/scons/engine/SCons/Environment.py +2327 -0
  410. data/ext/v8/upstream/scons/engine/SCons/Errors.py +207 -0
  411. data/ext/v8/upstream/scons/engine/SCons/Executor.py +636 -0
  412. data/ext/v8/upstream/scons/engine/SCons/Job.py +435 -0
  413. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +292 -0
  414. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +153 -0
  415. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +3220 -0
  416. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +128 -0
  417. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +1341 -0
  418. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +50 -0
  419. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +50 -0
  420. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +50 -0
  421. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +50 -0
  422. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +76 -0
  423. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +74 -0
  424. data/ext/v8/upstream/scons/engine/SCons/PathList.py +232 -0
  425. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +236 -0
  426. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +70 -0
  427. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +55 -0
  428. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +46 -0
  429. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +46 -0
  430. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +44 -0
  431. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +58 -0
  432. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +264 -0
  433. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +50 -0
  434. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +386 -0
  435. data/ext/v8/upstream/scons/engine/SCons/SConf.py +1038 -0
  436. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +381 -0
  437. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +132 -0
  438. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +74 -0
  439. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +111 -0
  440. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +320 -0
  441. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +48 -0
  442. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  443. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +103 -0
  444. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +55 -0
  445. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +415 -0
  446. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +386 -0
  447. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +1360 -0
  448. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +944 -0
  449. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +642 -0
  450. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +414 -0
  451. data/ext/v8/upstream/scons/engine/SCons/Sig.py +63 -0
  452. data/ext/v8/upstream/scons/engine/SCons/Subst.py +911 -0
  453. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +1030 -0
  454. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +61 -0
  455. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  456. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +73 -0
  457. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  458. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  459. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  460. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  461. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  462. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  463. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  464. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  465. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  466. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +104 -0
  467. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  468. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +64 -0
  469. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +64 -0
  470. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +71 -0
  471. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +675 -0
  472. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +82 -0
  473. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +74 -0
  474. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +80 -0
  475. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +76 -0
  476. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +71 -0
  477. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +63 -0
  478. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +78 -0
  479. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +82 -0
  480. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +99 -0
  481. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +114 -0
  482. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +58 -0
  483. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +50 -0
  484. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +224 -0
  485. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +64 -0
  486. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +125 -0
  487. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +94 -0
  488. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +62 -0
  489. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +62 -0
  490. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +63 -0
  491. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +98 -0
  492. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +63 -0
  493. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +90 -0
  494. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +73 -0
  495. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +53 -0
  496. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +80 -0
  497. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +64 -0
  498. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +63 -0
  499. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +81 -0
  500. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +85 -0
  501. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +53 -0
  502. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +77 -0
  503. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +59 -0
  504. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +52 -0
  505. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +72 -0
  506. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +90 -0
  507. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +59 -0
  508. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +60 -0
  509. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +229 -0
  510. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +490 -0
  511. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +71 -0
  512. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +110 -0
  513. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +234 -0
  514. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +138 -0
  515. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +79 -0
  516. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +99 -0
  517. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +121 -0
  518. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +112 -0
  519. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +63 -0
  520. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +77 -0
  521. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +90 -0
  522. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +159 -0
  523. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +64 -0
  524. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +266 -0
  525. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +50 -0
  526. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +269 -0
  527. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +1439 -0
  528. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +208 -0
  529. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +107 -0
  530. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +72 -0
  531. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  532. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  533. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  534. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  535. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  536. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  537. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  538. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  539. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  540. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  541. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +78 -0
  542. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +83 -0
  543. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +108 -0
  544. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +336 -0
  545. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +121 -0
  546. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +70 -0
  547. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +132 -0
  548. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +68 -0
  549. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +58 -0
  550. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +53 -0
  551. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +63 -0
  552. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +67 -0
  553. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +142 -0
  554. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +58 -0
  555. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +63 -0
  556. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +64 -0
  557. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +64 -0
  558. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +77 -0
  559. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +186 -0
  560. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +73 -0
  561. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +805 -0
  562. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +175 -0
  563. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +53 -0
  564. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +100 -0
  565. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +131 -0
  566. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +100 -0
  567. data/ext/v8/upstream/scons/engine/SCons/Util.py +1645 -0
  568. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  569. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  570. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +139 -0
  571. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  572. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +147 -0
  573. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +317 -0
  574. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +228 -0
  575. data/ext/v8/upstream/scons/engine/SCons/__init__.py +49 -0
  576. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +302 -0
  577. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  578. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  579. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  580. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  581. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +583 -0
  582. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  583. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  584. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  585. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  586. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +187 -0
  587. data/ext/v8/upstream/scons/engine/SCons/cpp.py +598 -0
  588. data/ext/v8/upstream/scons/engine/SCons/dblite.py +248 -0
  589. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +77 -0
  590. data/ext/v8/upstream/scons/os_spawnv_fix.diff +83 -0
  591. data/ext/v8/upstream/scons/scons-time.1 +1017 -0
  592. data/ext/v8/upstream/scons/scons.1 +15179 -0
  593. data/ext/v8/upstream/scons/sconsign.1 +208 -0
  594. data/ext/v8/upstream/scons/script/scons +184 -0
  595. data/ext/v8/upstream/scons/script/scons-time +1529 -0
  596. data/ext/v8/upstream/scons/script/scons.bat +31 -0
  597. data/ext/v8/upstream/scons/script/sconsign +508 -0
  598. data/ext/v8/upstream/scons/setup.cfg +6 -0
  599. data/ext/v8/upstream/scons/setup.py +427 -0
  600. data/ext/v8/v8.cpp +89 -0
  601. data/ext/v8/v8_cxt.cpp +92 -0
  602. data/ext/v8/v8_cxt.h +20 -0
  603. data/ext/v8/v8_func.cpp +10 -0
  604. data/ext/v8/v8_func.h +11 -0
  605. data/ext/v8/v8_msg.cpp +54 -0
  606. data/ext/v8/v8_msg.h +18 -0
  607. data/ext/v8/v8_obj.cpp +52 -0
  608. data/ext/v8/v8_obj.h +13 -0
  609. data/ext/v8/v8_ref.cpp +26 -0
  610. data/ext/v8/v8_ref.h +31 -0
  611. data/ext/v8/v8_script.cpp +20 -0
  612. data/ext/v8/v8_script.h +8 -0
  613. data/ext/v8/v8_standalone.cpp +69 -0
  614. data/ext/v8/v8_standalone.h +31 -0
  615. data/ext/v8/v8_str.cpp +17 -0
  616. data/ext/v8/v8_str.h +9 -0
  617. data/ext/v8/v8_template.cpp +53 -0
  618. data/ext/v8/v8_template.h +13 -0
  619. data/lib/v8.rb +10 -0
  620. data/lib/v8/context.rb +101 -0
  621. data/lib/v8/object.rb +38 -0
  622. data/lib/v8/to.rb +33 -0
  623. data/lib/v8/v8.so +0 -0
  624. data/script/console +10 -0
  625. data/script/destroy +14 -0
  626. data/script/generate +14 -0
  627. data/spec/ext/cxt_spec.rb +25 -0
  628. data/spec/ext/obj_spec.rb +13 -0
  629. data/spec/redjs/jsapi_spec.rb +405 -0
  630. data/spec/redjs/tap.rb +8 -0
  631. data/spec/redjs_helper.rb +3 -0
  632. data/spec/spec.opts +1 -0
  633. data/spec/spec_helper.rb +14 -0
  634. data/spec/v8/to_spec.rb +15 -0
  635. data/tasks/rspec.rake +21 -0
  636. data/therubyracer.gemspec +680 -0
  637. metadata +697 -0
@@ -0,0 +1,53 @@
1
+ // Copyright 2009 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ // Tick Processor's code flow.
30
+
31
+ function processArguments(args) {
32
+ var processor = new ArgumentsProcessor(args);
33
+ if (processor.parse()) {
34
+ return processor.result();
35
+ } else {
36
+ processor.printUsageAndExit();
37
+ }
38
+ }
39
+
40
+ var entriesProviders = {
41
+ 'unix': UnixCppEntriesProvider,
42
+ 'windows': WindowsCppEntriesProvider,
43
+ 'mac': MacCppEntriesProvider
44
+ };
45
+
46
+ var params = processArguments(arguments);
47
+ var tickProcessor = new TickProcessor(
48
+ new (entriesProviders[params.platform])(params.nm),
49
+ params.separateIc,
50
+ params.ignoreUnknown,
51
+ params.stateFilter);
52
+ tickProcessor.processLogFile(params.logFileName);
53
+ tickProcessor.printStatistics();
@@ -0,0 +1,731 @@
1
+ // Copyright 2009 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ function Profile(separateIc) {
30
+ devtools.profiler.Profile.call(this);
31
+ if (!separateIc) {
32
+ this.skipThisFunction = function(name) { return Profile.IC_RE.test(name); };
33
+ }
34
+ };
35
+ Profile.prototype = devtools.profiler.Profile.prototype;
36
+
37
+
38
+ Profile.IC_RE =
39
+ /^(?:CallIC|LoadIC|StoreIC)|(?:Builtin: (?:Keyed)?(?:Call|Load|Store)IC_)/;
40
+
41
+
42
+ /**
43
+ * A thin wrapper around shell's 'read' function showing a file name on error.
44
+ */
45
+ function readFile(fileName) {
46
+ try {
47
+ return read(fileName);
48
+ } catch (e) {
49
+ print(fileName + ': ' + (e.message || e));
50
+ throw e;
51
+ }
52
+ }
53
+
54
+
55
+ function inherits(childCtor, parentCtor) {
56
+ function tempCtor() {};
57
+ tempCtor.prototype = parentCtor.prototype;
58
+ childCtor.prototype = new tempCtor();
59
+ };
60
+
61
+
62
+ function TickProcessor(
63
+ cppEntriesProvider, separateIc, ignoreUnknown, stateFilter) {
64
+ devtools.profiler.LogReader.call(this, {
65
+ 'shared-library': { parsers: [null, parseInt, parseInt],
66
+ processor: this.processSharedLibrary },
67
+ 'code-creation': {
68
+ parsers: [null, this.createAddressParser('code'), parseInt, null],
69
+ processor: this.processCodeCreation, backrefs: true },
70
+ 'code-move': { parsers: [this.createAddressParser('code'),
71
+ this.createAddressParser('code-move-to')],
72
+ processor: this.processCodeMove, backrefs: true },
73
+ 'code-delete': { parsers: [this.createAddressParser('code')],
74
+ processor: this.processCodeDelete, backrefs: true },
75
+ 'tick': { parsers: [this.createAddressParser('code'),
76
+ this.createAddressParser('stack'), parseInt, 'var-args'],
77
+ processor: this.processTick, backrefs: true },
78
+ 'heap-sample-begin': { parsers: [null, null, parseInt],
79
+ processor: this.processHeapSampleBegin },
80
+ 'heap-sample-end': { parsers: [null, null],
81
+ processor: this.processHeapSampleEnd },
82
+ 'heap-js-prod-item': { parsers: [null, 'var-args'],
83
+ processor: this.processJSProducer, backrefs: true },
84
+ // Ignored events.
85
+ 'profiler': null,
86
+ 'heap-sample-stats': null,
87
+ 'heap-sample-item': null,
88
+ 'heap-js-cons-item': null,
89
+ 'heap-js-ret-item': null,
90
+ // Obsolete row types.
91
+ 'code-allocate': null,
92
+ 'begin-code-region': null,
93
+ 'end-code-region': null });
94
+
95
+ this.cppEntriesProvider_ = cppEntriesProvider;
96
+ this.ignoreUnknown_ = ignoreUnknown;
97
+ this.stateFilter_ = stateFilter;
98
+ var ticks = this.ticks_ =
99
+ { total: 0, unaccounted: 0, excluded: 0, gc: 0 };
100
+
101
+ Profile.prototype.handleUnknownCode = function(
102
+ operation, addr, opt_stackPos) {
103
+ var op = devtools.profiler.Profile.Operation;
104
+ switch (operation) {
105
+ case op.MOVE:
106
+ print('Code move event for unknown code: 0x' + addr.toString(16));
107
+ break;
108
+ case op.DELETE:
109
+ print('Code delete event for unknown code: 0x' + addr.toString(16));
110
+ break;
111
+ case op.TICK:
112
+ // Only unknown PCs (the first frame) are reported as unaccounted,
113
+ // otherwise tick balance will be corrupted (this behavior is compatible
114
+ // with the original tickprocessor.py script.)
115
+ if (opt_stackPos == 0) {
116
+ ticks.unaccounted++;
117
+ }
118
+ break;
119
+ }
120
+ };
121
+
122
+ this.profile_ = new Profile(separateIc);
123
+ this.codeTypes_ = {};
124
+ // Count each tick as a time unit.
125
+ this.viewBuilder_ = new devtools.profiler.ViewBuilder(1);
126
+ this.lastLogFileName_ = null;
127
+
128
+ this.generation_ = 1;
129
+ this.currentProducerProfile_ = null;
130
+ };
131
+ inherits(TickProcessor, devtools.profiler.LogReader);
132
+
133
+
134
+ TickProcessor.VmStates = {
135
+ JS: 0,
136
+ GC: 1,
137
+ COMPILER: 2,
138
+ OTHER: 3,
139
+ EXTERNAL: 4
140
+ };
141
+
142
+
143
+ TickProcessor.CodeTypes = {
144
+ CPP: 0,
145
+ SHARED_LIB: 1
146
+ };
147
+ // Otherwise, this is JS-related code. We are not adding it to
148
+ // codeTypes_ map because there can be zillions of them.
149
+
150
+
151
+ TickProcessor.CALL_PROFILE_CUTOFF_PCT = 2.0;
152
+
153
+
154
+ /**
155
+ * @override
156
+ */
157
+ TickProcessor.prototype.printError = function(str) {
158
+ print(str);
159
+ };
160
+
161
+
162
+ TickProcessor.prototype.setCodeType = function(name, type) {
163
+ this.codeTypes_[name] = TickProcessor.CodeTypes[type];
164
+ };
165
+
166
+
167
+ TickProcessor.prototype.isSharedLibrary = function(name) {
168
+ return this.codeTypes_[name] == TickProcessor.CodeTypes.SHARED_LIB;
169
+ };
170
+
171
+
172
+ TickProcessor.prototype.isCppCode = function(name) {
173
+ return this.codeTypes_[name] == TickProcessor.CodeTypes.CPP;
174
+ };
175
+
176
+
177
+ TickProcessor.prototype.isJsCode = function(name) {
178
+ return !(name in this.codeTypes_);
179
+ };
180
+
181
+
182
+ TickProcessor.prototype.processLogFile = function(fileName) {
183
+ this.lastLogFileName_ = fileName;
184
+ var contents = readFile(fileName);
185
+ this.processLogChunk(contents);
186
+ };
187
+
188
+
189
+ TickProcessor.prototype.processSharedLibrary = function(
190
+ name, startAddr, endAddr) {
191
+ var entry = this.profile_.addLibrary(name, startAddr, endAddr);
192
+ this.setCodeType(entry.getName(), 'SHARED_LIB');
193
+
194
+ var self = this;
195
+ var libFuncs = this.cppEntriesProvider_.parseVmSymbols(
196
+ name, startAddr, endAddr, function(fName, fStart, fEnd) {
197
+ self.profile_.addStaticCode(fName, fStart, fEnd);
198
+ self.setCodeType(fName, 'CPP');
199
+ });
200
+ };
201
+
202
+
203
+ TickProcessor.prototype.processCodeCreation = function(
204
+ type, start, size, name) {
205
+ var entry = this.profile_.addCode(
206
+ this.expandAlias(type), name, start, size);
207
+ };
208
+
209
+
210
+ TickProcessor.prototype.processCodeMove = function(from, to) {
211
+ this.profile_.moveCode(from, to);
212
+ };
213
+
214
+
215
+ TickProcessor.prototype.processCodeDelete = function(start) {
216
+ this.profile_.deleteCode(start);
217
+ };
218
+
219
+
220
+ TickProcessor.prototype.includeTick = function(vmState) {
221
+ return this.stateFilter_ == null || this.stateFilter_ == vmState;
222
+ };
223
+
224
+
225
+ TickProcessor.prototype.processTick = function(pc, sp, vmState, stack) {
226
+ this.ticks_.total++;
227
+ if (vmState == TickProcessor.VmStates.GC) this.ticks_.gc++;
228
+ if (!this.includeTick(vmState)) {
229
+ this.ticks_.excluded++;
230
+ return;
231
+ }
232
+
233
+ this.profile_.recordTick(this.processStack(pc, stack));
234
+ };
235
+
236
+
237
+ TickProcessor.prototype.processHeapSampleBegin = function(space, state, ticks) {
238
+ if (space != 'Heap') return;
239
+ this.currentProducerProfile_ = new devtools.profiler.CallTree();
240
+ };
241
+
242
+
243
+ TickProcessor.prototype.processHeapSampleEnd = function(space, state) {
244
+ if (space != 'Heap' || !this.currentProducerProfile_) return;
245
+
246
+ print('Generation ' + this.generation_ + ':');
247
+ var tree = this.currentProducerProfile_;
248
+ tree.computeTotalWeights();
249
+ var producersView = this.viewBuilder_.buildView(tree);
250
+ // Sort by total time, desc, then by name, desc.
251
+ producersView.sort(function(rec1, rec2) {
252
+ return rec2.totalTime - rec1.totalTime ||
253
+ (rec2.internalFuncName < rec1.internalFuncName ? -1 : 1); });
254
+ this.printHeavyProfile(producersView.head.children);
255
+
256
+ this.currentProducerProfile_ = null;
257
+ this.generation_++;
258
+ };
259
+
260
+
261
+ TickProcessor.prototype.processJSProducer = function(constructor, stack) {
262
+ if (!this.currentProducerProfile_) return;
263
+ if (stack.length == 0) return;
264
+ var first = stack.shift();
265
+ var processedStack =
266
+ this.profile_.resolveAndFilterFuncs_(this.processStack(first, stack));
267
+ processedStack.unshift(constructor);
268
+ this.currentProducerProfile_.addPath(processedStack);
269
+ };
270
+
271
+
272
+ TickProcessor.prototype.printStatistics = function() {
273
+ print('Statistical profiling result from ' + this.lastLogFileName_ +
274
+ ', (' + this.ticks_.total +
275
+ ' ticks, ' + this.ticks_.unaccounted + ' unaccounted, ' +
276
+ this.ticks_.excluded + ' excluded).');
277
+
278
+ if (this.ticks_.total == 0) return;
279
+
280
+ // Print the unknown ticks percentage if they are not ignored.
281
+ if (!this.ignoreUnknown_ && this.ticks_.unaccounted > 0) {
282
+ this.printHeader('Unknown');
283
+ this.printCounter(this.ticks_.unaccounted, this.ticks_.total);
284
+ }
285
+
286
+ var flatProfile = this.profile_.getFlatProfile();
287
+ var flatView = this.viewBuilder_.buildView(flatProfile);
288
+ // Sort by self time, desc, then by name, desc.
289
+ flatView.sort(function(rec1, rec2) {
290
+ return rec2.selfTime - rec1.selfTime ||
291
+ (rec2.internalFuncName < rec1.internalFuncName ? -1 : 1); });
292
+ var totalTicks = this.ticks_.total;
293
+ if (this.ignoreUnknown_) {
294
+ totalTicks -= this.ticks_.unaccounted;
295
+ }
296
+ // Our total time contains all the ticks encountered,
297
+ // while profile only knows about the filtered ticks.
298
+ flatView.head.totalTime = totalTicks;
299
+
300
+ // Count library ticks
301
+ var flatViewNodes = flatView.head.children;
302
+ var self = this;
303
+ var libraryTicks = 0;
304
+ this.processProfile(flatViewNodes,
305
+ function(name) { return self.isSharedLibrary(name); },
306
+ function(rec) { libraryTicks += rec.selfTime; });
307
+ var nonLibraryTicks = totalTicks - libraryTicks;
308
+
309
+ this.printHeader('Shared libraries');
310
+ this.printEntries(flatViewNodes, null,
311
+ function(name) { return self.isSharedLibrary(name); });
312
+
313
+ this.printHeader('JavaScript');
314
+ this.printEntries(flatViewNodes, nonLibraryTicks,
315
+ function(name) { return self.isJsCode(name); });
316
+
317
+ this.printHeader('C++');
318
+ this.printEntries(flatViewNodes, nonLibraryTicks,
319
+ function(name) { return self.isCppCode(name); });
320
+
321
+ this.printHeader('GC');
322
+ this.printCounter(this.ticks_.gc, totalTicks);
323
+
324
+ this.printHeavyProfHeader();
325
+ var heavyProfile = this.profile_.getBottomUpProfile();
326
+ var heavyView = this.viewBuilder_.buildView(heavyProfile);
327
+ // To show the same percentages as in the flat profile.
328
+ heavyView.head.totalTime = totalTicks;
329
+ // Sort by total time, desc, then by name, desc.
330
+ heavyView.sort(function(rec1, rec2) {
331
+ return rec2.totalTime - rec1.totalTime ||
332
+ (rec2.internalFuncName < rec1.internalFuncName ? -1 : 1); });
333
+ this.printHeavyProfile(heavyView.head.children);
334
+ };
335
+
336
+
337
+ function padLeft(s, len) {
338
+ s = s.toString();
339
+ if (s.length < len) {
340
+ var padLength = len - s.length;
341
+ if (!(padLength in padLeft)) {
342
+ padLeft[padLength] = new Array(padLength + 1).join(' ');
343
+ }
344
+ s = padLeft[padLength] + s;
345
+ }
346
+ return s;
347
+ };
348
+
349
+
350
+ TickProcessor.prototype.printHeader = function(headerTitle) {
351
+ print('\n [' + headerTitle + ']:');
352
+ print(' ticks total nonlib name');
353
+ };
354
+
355
+
356
+ TickProcessor.prototype.printHeavyProfHeader = function() {
357
+ print('\n [Bottom up (heavy) profile]:');
358
+ print(' Note: percentage shows a share of a particular caller in the ' +
359
+ 'total\n' +
360
+ ' amount of its parent calls.');
361
+ print(' Callers occupying less than ' +
362
+ TickProcessor.CALL_PROFILE_CUTOFF_PCT.toFixed(1) +
363
+ '% are not shown.\n');
364
+ print(' ticks parent name');
365
+ };
366
+
367
+
368
+ TickProcessor.prototype.printCounter = function(ticksCount, totalTicksCount) {
369
+ var pct = ticksCount * 100.0 / totalTicksCount;
370
+ print(' ' + padLeft(ticksCount, 5) + ' ' + padLeft(pct.toFixed(1), 5) + '%');
371
+ };
372
+
373
+
374
+ TickProcessor.prototype.processProfile = function(
375
+ profile, filterP, func) {
376
+ for (var i = 0, n = profile.length; i < n; ++i) {
377
+ var rec = profile[i];
378
+ if (!filterP(rec.internalFuncName)) {
379
+ continue;
380
+ }
381
+ func(rec);
382
+ }
383
+ };
384
+
385
+
386
+ TickProcessor.prototype.printEntries = function(
387
+ profile, nonLibTicks, filterP) {
388
+ this.processProfile(profile, filterP, function (rec) {
389
+ if (rec.selfTime == 0) return;
390
+ var nonLibPct = nonLibTicks != null ?
391
+ rec.selfTime * 100.0 / nonLibTicks : 0.0;
392
+ print(' ' + padLeft(rec.selfTime, 5) + ' ' +
393
+ padLeft(rec.selfPercent.toFixed(1), 5) + '% ' +
394
+ padLeft(nonLibPct.toFixed(1), 5) + '% ' +
395
+ rec.internalFuncName);
396
+ });
397
+ };
398
+
399
+
400
+ TickProcessor.prototype.printHeavyProfile = function(profile, opt_indent) {
401
+ var self = this;
402
+ var indent = opt_indent || 0;
403
+ var indentStr = padLeft('', indent);
404
+ this.processProfile(profile, function() { return true; }, function (rec) {
405
+ // Cut off too infrequent callers.
406
+ if (rec.parentTotalPercent < TickProcessor.CALL_PROFILE_CUTOFF_PCT) return;
407
+ print(' ' + padLeft(rec.totalTime, 5) + ' ' +
408
+ padLeft(rec.parentTotalPercent.toFixed(1), 5) + '% ' +
409
+ indentStr + rec.internalFuncName);
410
+ // Limit backtrace depth.
411
+ if (indent < 10) {
412
+ self.printHeavyProfile(rec.children, indent + 2);
413
+ }
414
+ // Delimit top-level functions.
415
+ if (indent == 0) {
416
+ print('');
417
+ }
418
+ });
419
+ };
420
+
421
+
422
+ function CppEntriesProvider() {
423
+ };
424
+
425
+
426
+ CppEntriesProvider.prototype.parseVmSymbols = function(
427
+ libName, libStart, libEnd, processorFunc) {
428
+ this.loadSymbols(libName);
429
+
430
+ var prevEntry;
431
+
432
+ function addEntry(funcInfo) {
433
+ // Several functions can be mapped onto the same address. To avoid
434
+ // creating zero-sized entries, skip such duplicates.
435
+ // Also double-check that function belongs to the library address space.
436
+ if (prevEntry && !prevEntry.end &&
437
+ prevEntry.start < funcInfo.start &&
438
+ prevEntry.start >= libStart && funcInfo.start <= libEnd) {
439
+ processorFunc(prevEntry.name, prevEntry.start, funcInfo.start);
440
+ }
441
+ if (funcInfo.end &&
442
+ (!prevEntry || prevEntry.start != funcInfo.start) &&
443
+ funcInfo.start >= libStart && funcInfo.end <= libEnd) {
444
+ processorFunc(funcInfo.name, funcInfo.start, funcInfo.end);
445
+ }
446
+ prevEntry = funcInfo;
447
+ }
448
+
449
+ while (true) {
450
+ var funcInfo = this.parseNextLine();
451
+ if (funcInfo === null) {
452
+ continue;
453
+ } else if (funcInfo === false) {
454
+ break;
455
+ }
456
+ if (funcInfo.start < libStart && funcInfo.start < libEnd - libStart) {
457
+ funcInfo.start += libStart;
458
+ }
459
+ if (funcInfo.size) {
460
+ funcInfo.end = funcInfo.start + funcInfo.size;
461
+ }
462
+ addEntry(funcInfo);
463
+ }
464
+ addEntry({name: '', start: libEnd});
465
+ };
466
+
467
+
468
+ CppEntriesProvider.prototype.loadSymbols = function(libName) {
469
+ };
470
+
471
+
472
+ CppEntriesProvider.prototype.parseNextLine = function() {
473
+ return false;
474
+ };
475
+
476
+
477
+ function UnixCppEntriesProvider(nmExec) {
478
+ this.symbols = [];
479
+ this.parsePos = 0;
480
+ this.nmExec = nmExec;
481
+ this.FUNC_RE = /^([0-9a-fA-F]{8,16}) ([0-9a-fA-F]{8,16} )?[tTwW] (.*)$/;
482
+ };
483
+ inherits(UnixCppEntriesProvider, CppEntriesProvider);
484
+
485
+
486
+ UnixCppEntriesProvider.prototype.loadSymbols = function(libName) {
487
+ this.parsePos = 0;
488
+ try {
489
+ this.symbols = [
490
+ os.system(this.nmExec, ['-C', '-n', '-S', libName], -1, -1),
491
+ os.system(this.nmExec, ['-C', '-n', '-S', '-D', libName], -1, -1)
492
+ ];
493
+ } catch (e) {
494
+ // If the library cannot be found on this system let's not panic.
495
+ this.symbols = ['', ''];
496
+ }
497
+ };
498
+
499
+
500
+ UnixCppEntriesProvider.prototype.parseNextLine = function() {
501
+ if (this.symbols.length == 0) {
502
+ return false;
503
+ }
504
+ var lineEndPos = this.symbols[0].indexOf('\n', this.parsePos);
505
+ if (lineEndPos == -1) {
506
+ this.symbols.shift();
507
+ this.parsePos = 0;
508
+ return this.parseNextLine();
509
+ }
510
+
511
+ var line = this.symbols[0].substring(this.parsePos, lineEndPos);
512
+ this.parsePos = lineEndPos + 1;
513
+ var fields = line.match(this.FUNC_RE);
514
+ var funcInfo = null;
515
+ if (fields) {
516
+ funcInfo = { name: fields[3], start: parseInt(fields[1], 16) };
517
+ if (fields[2]) {
518
+ funcInfo.size = parseInt(fields[2], 16);
519
+ }
520
+ }
521
+ return funcInfo;
522
+ };
523
+
524
+
525
+ function MacCppEntriesProvider(nmExec) {
526
+ UnixCppEntriesProvider.call(this, nmExec);
527
+ // Note an empty group. It is required, as UnixCppEntriesProvider expects 3 groups.
528
+ this.FUNC_RE = /^([0-9a-fA-F]{8,16}) ()[iItT] (.*)$/;
529
+ };
530
+ inherits(MacCppEntriesProvider, UnixCppEntriesProvider);
531
+
532
+
533
+ MacCppEntriesProvider.prototype.loadSymbols = function(libName) {
534
+ this.parsePos = 0;
535
+ try {
536
+ this.symbols = [os.system(this.nmExec, ['-n', '-f', libName], -1, -1), ''];
537
+ } catch (e) {
538
+ // If the library cannot be found on this system let's not panic.
539
+ this.symbols = '';
540
+ }
541
+ };
542
+
543
+
544
+ function WindowsCppEntriesProvider() {
545
+ this.symbols = '';
546
+ this.parsePos = 0;
547
+ };
548
+ inherits(WindowsCppEntriesProvider, CppEntriesProvider);
549
+
550
+
551
+ WindowsCppEntriesProvider.FILENAME_RE = /^(.*)\.([^.]+)$/;
552
+
553
+
554
+ WindowsCppEntriesProvider.FUNC_RE =
555
+ /^\s+0001:[0-9a-fA-F]{8}\s+([_\?@$0-9a-zA-Z]+)\s+([0-9a-fA-F]{8}).*$/;
556
+
557
+
558
+ WindowsCppEntriesProvider.IMAGE_BASE_RE =
559
+ /^\s+0000:00000000\s+___ImageBase\s+([0-9a-fA-F]{8}).*$/;
560
+
561
+
562
+ // This is almost a constant on Windows.
563
+ WindowsCppEntriesProvider.EXE_IMAGE_BASE = 0x00400000;
564
+
565
+
566
+ WindowsCppEntriesProvider.prototype.loadSymbols = function(libName) {
567
+ var fileNameFields = libName.match(WindowsCppEntriesProvider.FILENAME_RE);
568
+ if (!fileNameFields) return;
569
+ var mapFileName = fileNameFields[1] + '.map';
570
+ this.moduleType_ = fileNameFields[2].toLowerCase();
571
+ try {
572
+ this.symbols = read(mapFileName);
573
+ } catch (e) {
574
+ // If .map file cannot be found let's not panic.
575
+ this.symbols = '';
576
+ }
577
+ };
578
+
579
+
580
+ WindowsCppEntriesProvider.prototype.parseNextLine = function() {
581
+ var lineEndPos = this.symbols.indexOf('\r\n', this.parsePos);
582
+ if (lineEndPos == -1) {
583
+ return false;
584
+ }
585
+
586
+ var line = this.symbols.substring(this.parsePos, lineEndPos);
587
+ this.parsePos = lineEndPos + 2;
588
+
589
+ // Image base entry is above all other symbols, so we can just
590
+ // terminate parsing.
591
+ var imageBaseFields = line.match(WindowsCppEntriesProvider.IMAGE_BASE_RE);
592
+ if (imageBaseFields) {
593
+ var imageBase = parseInt(imageBaseFields[1], 16);
594
+ if ((this.moduleType_ == 'exe') !=
595
+ (imageBase == WindowsCppEntriesProvider.EXE_IMAGE_BASE)) {
596
+ return false;
597
+ }
598
+ }
599
+
600
+ var fields = line.match(WindowsCppEntriesProvider.FUNC_RE);
601
+ return fields ?
602
+ { name: this.unmangleName(fields[1]), start: parseInt(fields[2], 16) } :
603
+ null;
604
+ };
605
+
606
+
607
+ /**
608
+ * Performs very simple unmangling of C++ names.
609
+ *
610
+ * Does not handle arguments and template arguments. The mangled names have
611
+ * the form:
612
+ *
613
+ * ?LookupInDescriptor@JSObject@internal@v8@@...arguments info...
614
+ */
615
+ WindowsCppEntriesProvider.prototype.unmangleName = function(name) {
616
+ // Empty or non-mangled name.
617
+ if (name.length < 1 || name.charAt(0) != '?') return name;
618
+ var nameEndPos = name.indexOf('@@');
619
+ var components = name.substring(1, nameEndPos).split('@');
620
+ components.reverse();
621
+ return components.join('::');
622
+ };
623
+
624
+
625
+ function ArgumentsProcessor(args) {
626
+ this.args_ = args;
627
+ this.result_ = ArgumentsProcessor.DEFAULTS;
628
+
629
+ this.argsDispatch_ = {
630
+ '-j': ['stateFilter', TickProcessor.VmStates.JS,
631
+ 'Show only ticks from JS VM state'],
632
+ '-g': ['stateFilter', TickProcessor.VmStates.GC,
633
+ 'Show only ticks from GC VM state'],
634
+ '-c': ['stateFilter', TickProcessor.VmStates.COMPILER,
635
+ 'Show only ticks from COMPILER VM state'],
636
+ '-o': ['stateFilter', TickProcessor.VmStates.OTHER,
637
+ 'Show only ticks from OTHER VM state'],
638
+ '-e': ['stateFilter', TickProcessor.VmStates.EXTERNAL,
639
+ 'Show only ticks from EXTERNAL VM state'],
640
+ '--ignore-unknown': ['ignoreUnknown', true,
641
+ 'Exclude ticks of unknown code entries from processing'],
642
+ '--separate-ic': ['separateIc', true,
643
+ 'Separate IC entries'],
644
+ '--unix': ['platform', 'unix',
645
+ 'Specify that we are running on *nix platform'],
646
+ '--windows': ['platform', 'windows',
647
+ 'Specify that we are running on Windows platform'],
648
+ '--mac': ['platform', 'mac',
649
+ 'Specify that we are running on Mac OS X platform'],
650
+ '--nm': ['nm', 'nm',
651
+ 'Specify the \'nm\' executable to use (e.g. --nm=/my_dir/nm)']
652
+ };
653
+ this.argsDispatch_['--js'] = this.argsDispatch_['-j'];
654
+ this.argsDispatch_['--gc'] = this.argsDispatch_['-g'];
655
+ this.argsDispatch_['--compiler'] = this.argsDispatch_['-c'];
656
+ this.argsDispatch_['--other'] = this.argsDispatch_['-o'];
657
+ this.argsDispatch_['--external'] = this.argsDispatch_['-e'];
658
+ };
659
+
660
+
661
+ ArgumentsProcessor.DEFAULTS = {
662
+ logFileName: 'v8.log',
663
+ platform: 'unix',
664
+ stateFilter: null,
665
+ ignoreUnknown: false,
666
+ separateIc: false,
667
+ nm: 'nm'
668
+ };
669
+
670
+
671
+ ArgumentsProcessor.prototype.parse = function() {
672
+ while (this.args_.length) {
673
+ var arg = this.args_[0];
674
+ if (arg.charAt(0) != '-') {
675
+ break;
676
+ }
677
+ this.args_.shift();
678
+ var userValue = null;
679
+ var eqPos = arg.indexOf('=');
680
+ if (eqPos != -1) {
681
+ userValue = arg.substr(eqPos + 1);
682
+ arg = arg.substr(0, eqPos);
683
+ }
684
+ if (arg in this.argsDispatch_) {
685
+ var dispatch = this.argsDispatch_[arg];
686
+ this.result_[dispatch[0]] = userValue == null ? dispatch[1] : userValue;
687
+ } else {
688
+ return false;
689
+ }
690
+ }
691
+
692
+ if (this.args_.length >= 1) {
693
+ this.result_.logFileName = this.args_.shift();
694
+ }
695
+ return true;
696
+ };
697
+
698
+
699
+ ArgumentsProcessor.prototype.result = function() {
700
+ return this.result_;
701
+ };
702
+
703
+
704
+ ArgumentsProcessor.prototype.printUsageAndExit = function() {
705
+
706
+ function padRight(s, len) {
707
+ s = s.toString();
708
+ if (s.length < len) {
709
+ s = s + (new Array(len - s.length + 1).join(' '));
710
+ }
711
+ return s;
712
+ }
713
+
714
+ print('Cmdline args: [options] [log-file-name]\n' +
715
+ 'Default log file name is "' +
716
+ ArgumentsProcessor.DEFAULTS.logFileName + '".\n');
717
+ print('Options:');
718
+ for (var arg in this.argsDispatch_) {
719
+ var synonims = [arg];
720
+ var dispatch = this.argsDispatch_[arg];
721
+ for (var synArg in this.argsDispatch_) {
722
+ if (arg !== synArg && dispatch === this.argsDispatch_[synArg]) {
723
+ synonims.push(synArg);
724
+ delete this.argsDispatch_[synArg];
725
+ }
726
+ }
727
+ print(' ' + padRight(synonims.join(', '), 20) + dispatch[2]);
728
+ }
729
+ quit(2);
730
+ };
731
+