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,128 @@
1
+ // Copyright 2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ #include <cstdio> // NOLINT
30
+ #include <readline/readline.h>
31
+ #include <readline/history.h>
32
+
33
+
34
+ #include "d8.h"
35
+
36
+
37
+ // There are incompatibilities between different versions and different
38
+ // implementations of readline. This smooths out one known incompatibility.
39
+ #if RL_READLINE_VERSION >= 0x0500
40
+ #define completion_matches rl_completion_matches
41
+ #endif
42
+
43
+
44
+ namespace v8 {
45
+
46
+
47
+ class ReadLineEditor: public LineEditor {
48
+ public:
49
+ ReadLineEditor() : LineEditor(LineEditor::READLINE, "readline") { }
50
+ virtual i::SmartPointer<char> Prompt(const char* prompt);
51
+ virtual bool Open();
52
+ virtual bool Close();
53
+ virtual void AddHistory(const char* str);
54
+ private:
55
+ static char** AttemptedCompletion(const char* text, int start, int end);
56
+ static char* CompletionGenerator(const char* text, int state);
57
+ static char kWordBreakCharacters[];
58
+ };
59
+
60
+
61
+ static ReadLineEditor read_line_editor;
62
+ char ReadLineEditor::kWordBreakCharacters[] = {' ', '\t', '\n', '"',
63
+ '\\', '\'', '`', '@', '.', '>', '<', '=', ';', '|', '&', '{', '(',
64
+ '\0'};
65
+
66
+
67
+ bool ReadLineEditor::Open() {
68
+ rl_initialize();
69
+ rl_attempted_completion_function = AttemptedCompletion;
70
+ rl_completer_word_break_characters = kWordBreakCharacters;
71
+ rl_bind_key('\t', rl_complete);
72
+ using_history();
73
+ return read_history(Shell::kHistoryFileName) == 0;
74
+ }
75
+
76
+
77
+ bool ReadLineEditor::Close() {
78
+ return write_history(Shell::kHistoryFileName) == 0;
79
+ }
80
+
81
+
82
+ i::SmartPointer<char> ReadLineEditor::Prompt(const char* prompt) {
83
+ char* result = readline(prompt);
84
+ return i::SmartPointer<char>(result);
85
+ }
86
+
87
+
88
+ void ReadLineEditor::AddHistory(const char* str) {
89
+ add_history(str);
90
+ }
91
+
92
+
93
+ char** ReadLineEditor::AttemptedCompletion(const char* text,
94
+ int start,
95
+ int end) {
96
+ char** result = completion_matches(text, CompletionGenerator);
97
+ rl_attempted_completion_over = true;
98
+ return result;
99
+ }
100
+
101
+
102
+ char* ReadLineEditor::CompletionGenerator(const char* text, int state) {
103
+ static unsigned current_index;
104
+ static Persistent<Array> current_completions;
105
+ if (state == 0) {
106
+ i::SmartPointer<char> full_text(i::StrNDup(rl_line_buffer, rl_point));
107
+ HandleScope scope;
108
+ Handle<Array> completions =
109
+ Shell::GetCompletions(String::New(text), String::New(*full_text));
110
+ current_completions = Persistent<Array>::New(completions);
111
+ current_index = 0;
112
+ }
113
+ if (current_index < current_completions->Length()) {
114
+ HandleScope scope;
115
+ Handle<Integer> index = Integer::New(current_index);
116
+ Handle<Value> str_obj = current_completions->Get(index);
117
+ current_index++;
118
+ String::Utf8Value str(str_obj);
119
+ return strdup(*str);
120
+ } else {
121
+ current_completions.Dispose();
122
+ current_completions.Clear();
123
+ return NULL;
124
+ }
125
+ }
126
+
127
+
128
+ } // namespace v8
@@ -0,0 +1,42 @@
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
+ #include "d8.h"
30
+ #include "d8-debug.h"
31
+ #include "debug.h"
32
+ #include "api.h"
33
+
34
+
35
+ namespace v8 {
36
+
37
+
38
+ void Shell::AddOSMethods(Handle<ObjectTemplate> os_templ) {
39
+ }
40
+
41
+
42
+ } // namespace v8
@@ -0,0 +1,776 @@
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
+ #include <stdlib.h>
30
+ #include <errno.h>
31
+
32
+ #include "d8.h"
33
+ #include "d8-debug.h"
34
+ #include "debug.h"
35
+ #include "api.h"
36
+ #include "natives.h"
37
+ #include "platform.h"
38
+
39
+
40
+ namespace v8 {
41
+
42
+
43
+ const char* Shell::kHistoryFileName = ".d8_history";
44
+ const char* Shell::kPrompt = "d8> ";
45
+
46
+
47
+ LineEditor *LineEditor::first_ = NULL;
48
+
49
+
50
+ LineEditor::LineEditor(Type type, const char* name)
51
+ : type_(type),
52
+ name_(name),
53
+ next_(first_) {
54
+ first_ = this;
55
+ }
56
+
57
+
58
+ LineEditor* LineEditor::Get() {
59
+ LineEditor* current = first_;
60
+ LineEditor* best = current;
61
+ while (current != NULL) {
62
+ if (current->type_ > best->type_)
63
+ best = current;
64
+ current = current->next_;
65
+ }
66
+ return best;
67
+ }
68
+
69
+
70
+ class DumbLineEditor: public LineEditor {
71
+ public:
72
+ DumbLineEditor() : LineEditor(LineEditor::DUMB, "dumb") { }
73
+ virtual i::SmartPointer<char> Prompt(const char* prompt);
74
+ };
75
+
76
+
77
+ static DumbLineEditor dumb_line_editor;
78
+
79
+
80
+ i::SmartPointer<char> DumbLineEditor::Prompt(const char* prompt) {
81
+ static const int kBufferSize = 256;
82
+ char buffer[kBufferSize];
83
+ printf("%s", prompt);
84
+ char* str = fgets(buffer, kBufferSize, stdin);
85
+ return i::SmartPointer<char>(str ? i::StrDup(str) : str);
86
+ }
87
+
88
+
89
+ CounterMap* Shell::counter_map_;
90
+ i::OS::MemoryMappedFile* Shell::counters_file_ = NULL;
91
+ CounterCollection Shell::local_counters_;
92
+ CounterCollection* Shell::counters_ = &local_counters_;
93
+ Persistent<Context> Shell::utility_context_;
94
+ Persistent<Context> Shell::evaluation_context_;
95
+
96
+
97
+ bool CounterMap::Match(void* key1, void* key2) {
98
+ const char* name1 = reinterpret_cast<const char*>(key1);
99
+ const char* name2 = reinterpret_cast<const char*>(key2);
100
+ return strcmp(name1, name2) == 0;
101
+ }
102
+
103
+
104
+ // Converts a V8 value to a C string.
105
+ const char* ToCString(const v8::String::Utf8Value& value) {
106
+ return *value ? *value : "<string conversion failed>";
107
+ }
108
+
109
+
110
+ // Executes a string within the current v8 context.
111
+ bool Shell::ExecuteString(Handle<String> source,
112
+ Handle<Value> name,
113
+ bool print_result,
114
+ bool report_exceptions) {
115
+ HandleScope handle_scope;
116
+ TryCatch try_catch;
117
+ if (i::FLAG_debugger) {
118
+ // When debugging make exceptions appear to be uncaught.
119
+ try_catch.SetVerbose(true);
120
+ }
121
+ Handle<Script> script = Script::Compile(source, name);
122
+ if (script.IsEmpty()) {
123
+ // Print errors that happened during compilation.
124
+ if (report_exceptions && !i::FLAG_debugger)
125
+ ReportException(&try_catch);
126
+ return false;
127
+ } else {
128
+ Handle<Value> result = script->Run();
129
+ if (result.IsEmpty()) {
130
+ // Print errors that happened during execution.
131
+ if (report_exceptions && !i::FLAG_debugger)
132
+ ReportException(&try_catch);
133
+ return false;
134
+ } else {
135
+ if (print_result && !result->IsUndefined()) {
136
+ // If all went well and the result wasn't undefined then print
137
+ // the returned value.
138
+ v8::String::Utf8Value str(result);
139
+ const char* cstr = ToCString(str);
140
+ printf("%s\n", cstr);
141
+ }
142
+ return true;
143
+ }
144
+ }
145
+ }
146
+
147
+
148
+ Handle<Value> Shell::Print(const Arguments& args) {
149
+ Handle<Value> val = Write(args);
150
+ printf("\n");
151
+ return val;
152
+ }
153
+
154
+
155
+ Handle<Value> Shell::Write(const Arguments& args) {
156
+ for (int i = 0; i < args.Length(); i++) {
157
+ HandleScope handle_scope;
158
+ if (i != 0) {
159
+ printf(" ");
160
+ }
161
+ v8::String::Utf8Value str(args[i]);
162
+ int n = fwrite(*str, sizeof(**str), str.length(), stdout);
163
+ if (n != str.length()) {
164
+ printf("Error in fwrite\n");
165
+ exit(1);
166
+ }
167
+ }
168
+ return Undefined();
169
+ }
170
+
171
+
172
+ Handle<Value> Shell::Read(const Arguments& args) {
173
+ String::Utf8Value file(args[0]);
174
+ if (*file == NULL) {
175
+ return ThrowException(String::New("Error loading file"));
176
+ }
177
+ Handle<String> source = ReadFile(*file);
178
+ if (source.IsEmpty()) {
179
+ return ThrowException(String::New("Error loading file"));
180
+ }
181
+ return source;
182
+ }
183
+
184
+
185
+ Handle<Value> Shell::ReadLine(const Arguments& args) {
186
+ i::SmartPointer<char> line(i::ReadLine(""));
187
+ if (*line == NULL) {
188
+ return Null();
189
+ }
190
+ size_t len = strlen(*line);
191
+ if (len > 0 && line[len - 1] == '\n') {
192
+ --len;
193
+ }
194
+ return String::New(*line, len);
195
+ }
196
+
197
+
198
+ Handle<Value> Shell::Load(const Arguments& args) {
199
+ for (int i = 0; i < args.Length(); i++) {
200
+ HandleScope handle_scope;
201
+ String::Utf8Value file(args[i]);
202
+ if (*file == NULL) {
203
+ return ThrowException(String::New("Error loading file"));
204
+ }
205
+ Handle<String> source = ReadFile(*file);
206
+ if (source.IsEmpty()) {
207
+ return ThrowException(String::New("Error loading file"));
208
+ }
209
+ if (!ExecuteString(source, String::New(*file), false, false)) {
210
+ return ThrowException(String::New("Error executing file"));
211
+ }
212
+ }
213
+ return Undefined();
214
+ }
215
+
216
+
217
+ Handle<Value> Shell::Yield(const Arguments& args) {
218
+ v8::Unlocker unlocker;
219
+ return Undefined();
220
+ }
221
+
222
+
223
+ Handle<Value> Shell::Quit(const Arguments& args) {
224
+ int exit_code = args[0]->Int32Value();
225
+ OnExit();
226
+ exit(exit_code);
227
+ return Undefined();
228
+ }
229
+
230
+
231
+ Handle<Value> Shell::Version(const Arguments& args) {
232
+ return String::New(V8::GetVersion());
233
+ }
234
+
235
+
236
+ void Shell::ReportException(v8::TryCatch* try_catch) {
237
+ HandleScope handle_scope;
238
+ v8::String::Utf8Value exception(try_catch->Exception());
239
+ const char* exception_string = ToCString(exception);
240
+ Handle<Message> message = try_catch->Message();
241
+ if (message.IsEmpty()) {
242
+ // V8 didn't provide any extra information about this error; just
243
+ // print the exception.
244
+ printf("%s\n", exception_string);
245
+ } else {
246
+ // Print (filename):(line number): (message).
247
+ v8::String::Utf8Value filename(message->GetScriptResourceName());
248
+ const char* filename_string = ToCString(filename);
249
+ int linenum = message->GetLineNumber();
250
+ printf("%s:%i: %s\n", filename_string, linenum, exception_string);
251
+ // Print line of source code.
252
+ v8::String::Utf8Value sourceline(message->GetSourceLine());
253
+ const char* sourceline_string = ToCString(sourceline);
254
+ printf("%s\n", sourceline_string);
255
+ // Print wavy underline (GetUnderline is deprecated).
256
+ int start = message->GetStartColumn();
257
+ for (int i = 0; i < start; i++) {
258
+ printf(" ");
259
+ }
260
+ int end = message->GetEndColumn();
261
+ for (int i = start; i < end; i++) {
262
+ printf("^");
263
+ }
264
+ printf("\n");
265
+ }
266
+ }
267
+
268
+
269
+ Handle<Array> Shell::GetCompletions(Handle<String> text, Handle<String> full) {
270
+ HandleScope handle_scope;
271
+ Context::Scope context_scope(utility_context_);
272
+ Handle<Object> global = utility_context_->Global();
273
+ Handle<Value> fun = global->Get(String::New("GetCompletions"));
274
+ static const int kArgc = 3;
275
+ Handle<Value> argv[kArgc] = { evaluation_context_->Global(), text, full };
276
+ Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
277
+ return handle_scope.Close(Handle<Array>::Cast(val));
278
+ }
279
+
280
+
281
+ #ifdef ENABLE_DEBUGGER_SUPPORT
282
+ Handle<Object> Shell::DebugMessageDetails(Handle<String> message) {
283
+ Context::Scope context_scope(utility_context_);
284
+ Handle<Object> global = utility_context_->Global();
285
+ Handle<Value> fun = global->Get(String::New("DebugMessageDetails"));
286
+ static const int kArgc = 1;
287
+ Handle<Value> argv[kArgc] = { message };
288
+ Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
289
+ return Handle<Object>::Cast(val);
290
+ }
291
+
292
+
293
+ Handle<Value> Shell::DebugCommandToJSONRequest(Handle<String> command) {
294
+ Context::Scope context_scope(utility_context_);
295
+ Handle<Object> global = utility_context_->Global();
296
+ Handle<Value> fun = global->Get(String::New("DebugCommandToJSONRequest"));
297
+ static const int kArgc = 1;
298
+ Handle<Value> argv[kArgc] = { command };
299
+ Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
300
+ return val;
301
+ }
302
+ #endif
303
+
304
+
305
+ int32_t* Counter::Bind(const char* name, bool is_histogram) {
306
+ int i;
307
+ for (i = 0; i < kMaxNameSize - 1 && name[i]; i++)
308
+ name_[i] = static_cast<char>(name[i]);
309
+ name_[i] = '\0';
310
+ is_histogram_ = is_histogram;
311
+ return ptr();
312
+ }
313
+
314
+
315
+ void Counter::AddSample(int32_t sample) {
316
+ count_++;
317
+ sample_total_ += sample;
318
+ }
319
+
320
+
321
+ CounterCollection::CounterCollection() {
322
+ magic_number_ = 0xDEADFACE;
323
+ max_counters_ = kMaxCounters;
324
+ max_name_size_ = Counter::kMaxNameSize;
325
+ counters_in_use_ = 0;
326
+ }
327
+
328
+
329
+ Counter* CounterCollection::GetNextCounter() {
330
+ if (counters_in_use_ == kMaxCounters) return NULL;
331
+ return &counters_[counters_in_use_++];
332
+ }
333
+
334
+
335
+ void Shell::MapCounters(const char* name) {
336
+ counters_file_ = i::OS::MemoryMappedFile::create(name,
337
+ sizeof(CounterCollection), &local_counters_);
338
+ void* memory = (counters_file_ == NULL) ?
339
+ NULL : counters_file_->memory();
340
+ if (memory == NULL) {
341
+ printf("Could not map counters file %s\n", name);
342
+ exit(1);
343
+ }
344
+ counters_ = static_cast<CounterCollection*>(memory);
345
+ V8::SetCounterFunction(LookupCounter);
346
+ V8::SetCreateHistogramFunction(CreateHistogram);
347
+ V8::SetAddHistogramSampleFunction(AddHistogramSample);
348
+ }
349
+
350
+
351
+ int CounterMap::Hash(const char* name) {
352
+ int h = 0;
353
+ int c;
354
+ while ((c = *name++) != 0) {
355
+ h += h << 5;
356
+ h += c;
357
+ }
358
+ return h;
359
+ }
360
+
361
+
362
+ Counter* Shell::GetCounter(const char* name, bool is_histogram) {
363
+ Counter* counter = counter_map_->Lookup(name);
364
+
365
+ if (counter == NULL) {
366
+ counter = counters_->GetNextCounter();
367
+ if (counter != NULL) {
368
+ counter_map_->Set(name, counter);
369
+ counter->Bind(name, is_histogram);
370
+ }
371
+ } else {
372
+ ASSERT(counter->is_histogram() == is_histogram);
373
+ }
374
+ return counter;
375
+ }
376
+
377
+
378
+ int* Shell::LookupCounter(const char* name) {
379
+ Counter* counter = GetCounter(name, false);
380
+
381
+ if (counter != NULL) {
382
+ return counter->ptr();
383
+ } else {
384
+ return NULL;
385
+ }
386
+ }
387
+
388
+
389
+ void* Shell::CreateHistogram(const char* name,
390
+ int min,
391
+ int max,
392
+ size_t buckets) {
393
+ return GetCounter(name, true);
394
+ }
395
+
396
+
397
+ void Shell::AddHistogramSample(void* histogram, int sample) {
398
+ Counter* counter = reinterpret_cast<Counter*>(histogram);
399
+ counter->AddSample(sample);
400
+ }
401
+
402
+
403
+ void Shell::Initialize() {
404
+ Shell::counter_map_ = new CounterMap();
405
+ // Set up counters
406
+ if (i::FLAG_map_counters != NULL)
407
+ MapCounters(i::FLAG_map_counters);
408
+ if (i::FLAG_dump_counters) {
409
+ V8::SetCounterFunction(LookupCounter);
410
+ V8::SetCreateHistogramFunction(CreateHistogram);
411
+ V8::SetAddHistogramSampleFunction(AddHistogramSample);
412
+ }
413
+
414
+ // Initialize the global objects
415
+ HandleScope scope;
416
+ Handle<ObjectTemplate> global_template = ObjectTemplate::New();
417
+ global_template->Set(String::New("print"), FunctionTemplate::New(Print));
418
+ global_template->Set(String::New("write"), FunctionTemplate::New(Write));
419
+ global_template->Set(String::New("read"), FunctionTemplate::New(Read));
420
+ global_template->Set(String::New("readline"),
421
+ FunctionTemplate::New(ReadLine));
422
+ global_template->Set(String::New("load"), FunctionTemplate::New(Load));
423
+ global_template->Set(String::New("quit"), FunctionTemplate::New(Quit));
424
+ global_template->Set(String::New("version"), FunctionTemplate::New(Version));
425
+
426
+ Handle<ObjectTemplate> os_templ = ObjectTemplate::New();
427
+ AddOSMethods(os_templ);
428
+ global_template->Set(String::New("os"), os_templ);
429
+
430
+ utility_context_ = Context::New(NULL, global_template);
431
+ utility_context_->SetSecurityToken(Undefined());
432
+ Context::Scope utility_scope(utility_context_);
433
+
434
+ i::JSArguments js_args = i::FLAG_js_arguments;
435
+ i::Handle<i::FixedArray> arguments_array =
436
+ i::Factory::NewFixedArray(js_args.argc());
437
+ for (int j = 0; j < js_args.argc(); j++) {
438
+ i::Handle<i::String> arg =
439
+ i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j]));
440
+ arguments_array->set(j, *arg);
441
+ }
442
+ i::Handle<i::JSArray> arguments_jsarray =
443
+ i::Factory::NewJSArrayWithElements(arguments_array);
444
+ global_template->Set(String::New("arguments"),
445
+ Utils::ToLocal(arguments_jsarray));
446
+
447
+ #ifdef ENABLE_DEBUGGER_SUPPORT
448
+ // Install the debugger object in the utility scope
449
+ i::Debug::Load();
450
+ i::JSObject* debug = i::Debug::debug_context()->global();
451
+ utility_context_->Global()->Set(String::New("$debug"),
452
+ Utils::ToLocal(&debug));
453
+ #endif
454
+
455
+ // Run the d8 shell utility script in the utility context
456
+ int source_index = i::NativesCollection<i::D8>::GetIndex("d8");
457
+ i::Vector<const char> shell_source
458
+ = i::NativesCollection<i::D8>::GetScriptSource(source_index);
459
+ i::Vector<const char> shell_source_name
460
+ = i::NativesCollection<i::D8>::GetScriptName(source_index);
461
+ Handle<String> source = String::New(shell_source.start(),
462
+ shell_source.length());
463
+ Handle<String> name = String::New(shell_source_name.start(),
464
+ shell_source_name.length());
465
+ Handle<Script> script = Script::Compile(source, name);
466
+ script->Run();
467
+
468
+ // Mark the d8 shell script as native to avoid it showing up as normal source
469
+ // in the debugger.
470
+ i::Handle<i::JSFunction> script_fun = Utils::OpenHandle(*script);
471
+ i::Handle<i::Script> script_object =
472
+ i::Handle<i::Script>(i::Script::cast(script_fun->shared()->script()));
473
+ script_object->set_type(i::Smi::FromInt(i::Script::TYPE_NATIVE));
474
+
475
+ // Create the evaluation context
476
+ evaluation_context_ = Context::New(NULL, global_template);
477
+ evaluation_context_->SetSecurityToken(Undefined());
478
+
479
+ #ifdef ENABLE_DEBUGGER_SUPPORT
480
+ // Set the security token of the debug context to allow access.
481
+ i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
482
+
483
+ // Start the debugger agent if requested.
484
+ if (i::FLAG_debugger_agent) {
485
+ v8::Debug::EnableAgent("d8 shell", i::FLAG_debugger_port);
486
+ }
487
+
488
+ // Start the in-process debugger if requested.
489
+ if (i::FLAG_debugger && !i::FLAG_debugger_agent) {
490
+ v8::Debug::SetDebugEventListener(HandleDebugEvent);
491
+ }
492
+ #endif
493
+ }
494
+
495
+
496
+ void Shell::OnExit() {
497
+ if (i::FLAG_dump_counters) {
498
+ ::printf("+----------------------------------------+-------------+\n");
499
+ ::printf("| Name | Value |\n");
500
+ ::printf("+----------------------------------------+-------------+\n");
501
+ for (CounterMap::Iterator i(counter_map_); i.More(); i.Next()) {
502
+ Counter* counter = i.CurrentValue();
503
+ if (counter->is_histogram()) {
504
+ ::printf("| c:%-36s | %11i |\n", i.CurrentKey(), counter->count());
505
+ ::printf("| t:%-36s | %11i |\n",
506
+ i.CurrentKey(),
507
+ counter->sample_total());
508
+ } else {
509
+ ::printf("| %-38s | %11i |\n", i.CurrentKey(), counter->count());
510
+ }
511
+ }
512
+ ::printf("+----------------------------------------+-------------+\n");
513
+ }
514
+ if (counters_file_ != NULL)
515
+ delete counters_file_;
516
+ }
517
+
518
+
519
+ static char* ReadChars(const char* name, int* size_out) {
520
+ v8::Unlocker unlocker; // Release the V8 lock while reading files.
521
+ FILE* file = i::OS::FOpen(name, "rb");
522
+ if (file == NULL) return NULL;
523
+
524
+ fseek(file, 0, SEEK_END);
525
+ int size = ftell(file);
526
+ rewind(file);
527
+
528
+ char* chars = new char[size + 1];
529
+ chars[size] = '\0';
530
+ for (int i = 0; i < size;) {
531
+ int read = fread(&chars[i], 1, size - i, file);
532
+ i += read;
533
+ }
534
+ fclose(file);
535
+ *size_out = size;
536
+ return chars;
537
+ }
538
+
539
+
540
+ static char* ReadToken(char* data, char token) {
541
+ char* next = i::OS::StrChr(data, token);
542
+ if (next != NULL) {
543
+ *next = '\0';
544
+ return (next + 1);
545
+ }
546
+
547
+ return NULL;
548
+ }
549
+
550
+
551
+ static char* ReadLine(char* data) {
552
+ return ReadToken(data, '\n');
553
+ }
554
+
555
+
556
+ static char* ReadWord(char* data) {
557
+ return ReadToken(data, ' ');
558
+ }
559
+
560
+
561
+ // Reads a file into a v8 string.
562
+ Handle<String> Shell::ReadFile(const char* name) {
563
+ int size = 0;
564
+ char* chars = ReadChars(name, &size);
565
+ if (chars == NULL) return Handle<String>();
566
+ Handle<String> result = String::New(chars);
567
+ delete[] chars;
568
+ return result;
569
+ }
570
+
571
+
572
+ void Shell::RunShell() {
573
+ LineEditor* editor = LineEditor::Get();
574
+ printf("V8 version %s [console: %s]\n", V8::GetVersion(), editor->name());
575
+ editor->Open();
576
+ while (true) {
577
+ Locker locker;
578
+ HandleScope handle_scope;
579
+ Context::Scope context_scope(evaluation_context_);
580
+ i::SmartPointer<char> input = editor->Prompt(Shell::kPrompt);
581
+ if (input.is_empty())
582
+ break;
583
+ editor->AddHistory(*input);
584
+ Handle<String> name = String::New("(d8)");
585
+ ExecuteString(String::New(*input), name, true, true);
586
+ }
587
+ editor->Close();
588
+ printf("\n");
589
+ }
590
+
591
+
592
+ class ShellThread : public i::Thread {
593
+ public:
594
+ ShellThread(int no, i::Vector<const char> files)
595
+ : no_(no), files_(files) { }
596
+ virtual void Run();
597
+ private:
598
+ int no_;
599
+ i::Vector<const char> files_;
600
+ };
601
+
602
+
603
+ void ShellThread::Run() {
604
+ // Prepare the context for this thread.
605
+ Locker locker;
606
+ HandleScope scope;
607
+ Handle<ObjectTemplate> global_template = ObjectTemplate::New();
608
+ global_template->Set(String::New("print"),
609
+ FunctionTemplate::New(Shell::Print));
610
+ global_template->Set(String::New("write"),
611
+ FunctionTemplate::New(Shell::Write));
612
+ global_template->Set(String::New("read"),
613
+ FunctionTemplate::New(Shell::Read));
614
+ global_template->Set(String::New("readline"),
615
+ FunctionTemplate::New(Shell::ReadLine));
616
+ global_template->Set(String::New("load"),
617
+ FunctionTemplate::New(Shell::Load));
618
+ global_template->Set(String::New("yield"),
619
+ FunctionTemplate::New(Shell::Yield));
620
+ global_template->Set(String::New("version"),
621
+ FunctionTemplate::New(Shell::Version));
622
+
623
+ char* ptr = const_cast<char*>(files_.start());
624
+ while ((ptr != NULL) && (*ptr != '\0')) {
625
+ // For each newline-separated line.
626
+ char* next_line = ReadLine(ptr);
627
+
628
+ if (*ptr == '#') {
629
+ // Skip comment lines.
630
+ ptr = next_line;
631
+ continue;
632
+ }
633
+
634
+ Persistent<Context> thread_context = Context::New(NULL, global_template);
635
+ thread_context->SetSecurityToken(Undefined());
636
+ Context::Scope context_scope(thread_context);
637
+
638
+ while ((ptr != NULL) && (*ptr != '\0')) {
639
+ char* filename = ptr;
640
+ ptr = ReadWord(ptr);
641
+
642
+ // Skip empty strings.
643
+ if (strlen(filename) == 0) {
644
+ break;
645
+ }
646
+
647
+ Handle<String> str = Shell::ReadFile(filename);
648
+ if (str.IsEmpty()) {
649
+ printf("WARNING: %s not found\n", filename);
650
+ break;
651
+ }
652
+
653
+ Shell::ExecuteString(str, String::New(filename), false, false);
654
+ }
655
+
656
+ thread_context.Dispose();
657
+ ptr = next_line;
658
+ }
659
+ }
660
+
661
+
662
+ int Shell::Main(int argc, char* argv[]) {
663
+ i::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
664
+ if (i::FLAG_help) {
665
+ return 1;
666
+ }
667
+ Initialize();
668
+ bool run_shell = (argc == 1);
669
+
670
+ // Default use preemption if threads are created.
671
+ bool use_preemption = true;
672
+
673
+ // Default to use lowest possible thread preemption interval to test as many
674
+ // edgecases as possible.
675
+ int preemption_interval = 1;
676
+
677
+ i::List<i::Thread*> threads(1);
678
+
679
+ {
680
+ // Acquire the V8 lock once initialization has finished. Since the thread
681
+ // below may spawn new threads accessing V8 holding the V8 lock here is
682
+ // mandatory.
683
+ Locker locker;
684
+ Context::Scope context_scope(evaluation_context_);
685
+ for (int i = 1; i < argc; i++) {
686
+ char* str = argv[i];
687
+ if (strcmp(str, "--shell") == 0) {
688
+ run_shell = true;
689
+ } else if (strcmp(str, "--preemption") == 0) {
690
+ use_preemption = true;
691
+ } else if (strcmp(str, "--no-preemption") == 0) {
692
+ use_preemption = false;
693
+ } else if (strcmp(str, "--preemption-interval") == 0) {
694
+ if (i + 1 < argc) {
695
+ char* end = NULL;
696
+ preemption_interval = strtol(argv[++i], &end, 10); // NOLINT
697
+ if (preemption_interval <= 0 || *end != '\0' || errno == ERANGE) {
698
+ printf("Invalid value for --preemption-interval '%s'\n", argv[i]);
699
+ return 1;
700
+ }
701
+ } else {
702
+ printf("Missing value for --preemption-interval\n");
703
+ return 1;
704
+ }
705
+ } else if (strcmp(str, "-f") == 0) {
706
+ // Ignore any -f flags for compatibility with other stand-alone
707
+ // JavaScript engines.
708
+ continue;
709
+ } else if (strncmp(str, "--", 2) == 0) {
710
+ printf("Warning: unknown flag %s.\nTry --help for options\n", str);
711
+ } else if (strcmp(str, "-e") == 0 && i + 1 < argc) {
712
+ // Execute argument given to -e option directly.
713
+ v8::HandleScope handle_scope;
714
+ v8::Handle<v8::String> file_name = v8::String::New("unnamed");
715
+ v8::Handle<v8::String> source = v8::String::New(argv[i + 1]);
716
+ if (!ExecuteString(source, file_name, false, true)) {
717
+ OnExit();
718
+ return 1;
719
+ }
720
+ i++;
721
+ } else if (strcmp(str, "-p") == 0 && i + 1 < argc) {
722
+ int size = 0;
723
+ const char* files = ReadChars(argv[++i], &size);
724
+ if (files == NULL) return 1;
725
+ ShellThread* thread =
726
+ new ShellThread(threads.length(),
727
+ i::Vector<const char>(files, size));
728
+ thread->Start();
729
+ threads.Add(thread);
730
+ } else {
731
+ // Use all other arguments as names of files to load and run.
732
+ HandleScope handle_scope;
733
+ Handle<String> file_name = v8::String::New(str);
734
+ Handle<String> source = ReadFile(str);
735
+ if (source.IsEmpty()) {
736
+ printf("Error reading '%s'\n", str);
737
+ return 1;
738
+ }
739
+ if (!ExecuteString(source, file_name, false, true)) {
740
+ OnExit();
741
+ return 1;
742
+ }
743
+ }
744
+ }
745
+
746
+ // Start preemption if threads have been created and preemption is enabled.
747
+ if (threads.length() > 0 && use_preemption) {
748
+ Locker::StartPreemption(preemption_interval);
749
+ }
750
+
751
+ #ifdef ENABLE_DEBUGGER_SUPPORT
752
+ // Run the remote debugger if requested.
753
+ if (i::FLAG_remote_debugger) {
754
+ RunRemoteDebugger(i::FLAG_debugger_port);
755
+ return 0;
756
+ }
757
+ #endif
758
+ }
759
+ if (run_shell)
760
+ RunShell();
761
+ for (int i = 0; i < threads.length(); i++) {
762
+ i::Thread* thread = threads[i];
763
+ thread->Join();
764
+ delete thread;
765
+ }
766
+ OnExit();
767
+ return 0;
768
+ }
769
+
770
+
771
+ } // namespace v8
772
+
773
+
774
+ int main(int argc, char* argv[]) {
775
+ return v8::Shell::Main(argc, argv);
776
+ }