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,91 @@
1
+ /*
2
+ * Copyright 2007-2008 the V8 project authors. All rights reserved.
3
+ * Redistribution and use in source and binary forms, with or without
4
+ * modification, are permitted provided that the following conditions are
5
+ * met:
6
+ *
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above
10
+ * copyright notice, this list of conditions and the following
11
+ * disclaimer in the documentation and/or other materials provided
12
+ * with the distribution.
13
+ * * Neither the name of Google Inc. nor the names of its
14
+ * contributors may be used to endorse or promote products derived
15
+ * from this software without specific prior written permission.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+
30
+ /**
31
+ * Dtoa needs to have a particular environment set up for it so
32
+ * instead of using it directly you should use this file.
33
+ *
34
+ * The way it works is that when you link with it, its definitions
35
+ * of dtoa, strtod etc. override the default ones. So if you fail
36
+ * to link with this library everything will still work, it's just
37
+ * subtly wrong.
38
+ */
39
+
40
+ #if !(defined(__APPLE__) && defined(__MACH__)) && \
41
+ !defined(WIN32) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
42
+ #include <endian.h>
43
+ #endif
44
+ #include <math.h>
45
+ #include <float.h>
46
+
47
+ /* The floating point word order on ARM is big endian when floating point
48
+ * emulation is used, even if the byte order is little endian */
49
+ #if !(defined(__APPLE__) && defined(__MACH__)) && !defined(WIN32) && \
50
+ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
51
+ __FLOAT_WORD_ORDER == __BIG_ENDIAN
52
+ #define IEEE_MC68k
53
+ #else
54
+ #define IEEE_8087
55
+ #endif
56
+
57
+ #define __MATH_H__
58
+ #if defined(__APPLE__) && defined(__MACH__) || defined(__FreeBSD__) || \
59
+ defined(__OpenBSD__)
60
+ /* stdlib.h on FreeBSD and Apple's 10.5 and later SDKs will mangle the
61
+ * name of strtod. If it's included after strtod is redefined as
62
+ * gay_strtod, it will mangle the name of gay_strtod, which is
63
+ * unwanted. */
64
+ #include <stdlib.h>
65
+
66
+ #endif
67
+ /* stdlib.h on Windows adds __declspec(dllimport) to all functions when using
68
+ * the DLL version of the CRT (compiling with /MD or /MDd). If stdlib.h is
69
+ * included after strtod is redefined as gay_strtod, it will add
70
+ * __declspec(dllimport) to gay_strtod, which causes the compilation of
71
+ * gay_strtod in dtoa.c to fail.
72
+ */
73
+ #if defined(WIN32) && defined(_DLL)
74
+ #include "stdlib.h"
75
+ #endif
76
+
77
+ /* For MinGW, turn on __NO_ISOCEXT so that its strtod doesn't get added */
78
+ #ifdef __MINGW32__
79
+ #define __NO_ISOCEXT
80
+ #endif /* __MINGW32__ */
81
+
82
+ /* On 64-bit systems, we need to make sure that a Long is only 32 bits. */
83
+ #ifdef V8_TARGET_ARCH_X64
84
+ #define Long int
85
+ #endif /* V8_TARGET_ARCH_X64 */
86
+
87
+ /* Make sure we use the David M. Gay version of strtod(). On Linux, we
88
+ * cannot use the same name (maybe the function does not have weak
89
+ * linkage?). */
90
+ #define strtod gay_strtod
91
+ #include "third_party/dtoa/dtoa.c"
@@ -0,0 +1,701 @@
1
+ // Copyright 2006-2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #include <stdlib.h>
29
+
30
+ #include "v8.h"
31
+
32
+ #include "api.h"
33
+ #include "bootstrapper.h"
34
+ #include "codegen-inl.h"
35
+ #include "debug.h"
36
+ #include "simulator.h"
37
+ #include "v8threads.h"
38
+
39
+ namespace v8 {
40
+ namespace internal {
41
+
42
+
43
+ static Handle<Object> Invoke(bool construct,
44
+ Handle<JSFunction> func,
45
+ Handle<Object> receiver,
46
+ int argc,
47
+ Object*** args,
48
+ bool* has_pending_exception) {
49
+ // Make sure we have a real function, not a boilerplate function.
50
+ ASSERT(!func->IsBoilerplate());
51
+
52
+ // Entering JavaScript.
53
+ VMState state(JS);
54
+
55
+ // Placeholder for return value.
56
+ Object* value = reinterpret_cast<Object*>(kZapValue);
57
+
58
+ typedef Object* (*JSEntryFunction)(
59
+ byte* entry,
60
+ Object* function,
61
+ Object* receiver,
62
+ int argc,
63
+ Object*** args);
64
+
65
+ Handle<Code> code;
66
+ if (construct) {
67
+ JSConstructEntryStub stub;
68
+ code = stub.GetCode();
69
+ } else {
70
+ JSEntryStub stub;
71
+ code = stub.GetCode();
72
+ }
73
+
74
+ // Convert calls on global objects to be calls on the global
75
+ // receiver instead to avoid having a 'this' pointer which refers
76
+ // directly to a global object.
77
+ if (receiver->IsGlobalObject()) {
78
+ Handle<GlobalObject> global = Handle<GlobalObject>::cast(receiver);
79
+ receiver = Handle<JSObject>(global->global_receiver());
80
+ }
81
+
82
+ // Make sure that the global object of the context we're about to
83
+ // make the current one is indeed a global object.
84
+ ASSERT(func->context()->global()->IsGlobalObject());
85
+
86
+ {
87
+ // Save and restore context around invocation and block the
88
+ // allocation of handles without explicit handle scopes.
89
+ SaveContext save;
90
+ NoHandleAllocation na;
91
+ JSEntryFunction entry = FUNCTION_CAST<JSEntryFunction>(code->entry());
92
+
93
+ // Call the function through the right JS entry stub.
94
+ byte* entry_address= func->code()->entry();
95
+ JSFunction* function = *func;
96
+ Object* receiver_pointer = *receiver;
97
+ value = CALL_GENERATED_CODE(entry, entry_address, function,
98
+ receiver_pointer, argc, args);
99
+ }
100
+
101
+ #ifdef DEBUG
102
+ value->Verify();
103
+ #endif
104
+
105
+ // Update the pending exception flag and return the value.
106
+ *has_pending_exception = value->IsException();
107
+ ASSERT(*has_pending_exception == Top::has_pending_exception());
108
+ if (*has_pending_exception) {
109
+ Top::ReportPendingMessages();
110
+ return Handle<Object>();
111
+ } else {
112
+ Top::clear_pending_message();
113
+ }
114
+
115
+ return Handle<Object>(value);
116
+ }
117
+
118
+
119
+ Handle<Object> Execution::Call(Handle<JSFunction> func,
120
+ Handle<Object> receiver,
121
+ int argc,
122
+ Object*** args,
123
+ bool* pending_exception) {
124
+ return Invoke(false, func, receiver, argc, args, pending_exception);
125
+ }
126
+
127
+
128
+ Handle<Object> Execution::New(Handle<JSFunction> func, int argc,
129
+ Object*** args, bool* pending_exception) {
130
+ return Invoke(true, func, Top::global(), argc, args, pending_exception);
131
+ }
132
+
133
+
134
+ Handle<Object> Execution::TryCall(Handle<JSFunction> func,
135
+ Handle<Object> receiver,
136
+ int argc,
137
+ Object*** args,
138
+ bool* caught_exception) {
139
+ // Enter a try-block while executing the JavaScript code. To avoid
140
+ // duplicate error printing it must be non-verbose. Also, to avoid
141
+ // creating message objects during stack overflow we shouldn't
142
+ // capture messages.
143
+ v8::TryCatch catcher;
144
+ catcher.SetVerbose(false);
145
+ catcher.SetCaptureMessage(false);
146
+
147
+ Handle<Object> result = Invoke(false, func, receiver, argc, args,
148
+ caught_exception);
149
+
150
+ if (*caught_exception) {
151
+ ASSERT(catcher.HasCaught());
152
+ ASSERT(Top::has_pending_exception());
153
+ ASSERT(Top::external_caught_exception());
154
+ if (Top::pending_exception() == Heap::termination_exception()) {
155
+ result = Factory::termination_exception();
156
+ } else {
157
+ result = v8::Utils::OpenHandle(*catcher.Exception());
158
+ }
159
+ Top::OptionalRescheduleException(true);
160
+ }
161
+
162
+ ASSERT(!Top::has_pending_exception());
163
+ ASSERT(!Top::external_caught_exception());
164
+ return result;
165
+ }
166
+
167
+
168
+ Handle<Object> Execution::GetFunctionDelegate(Handle<Object> object) {
169
+ ASSERT(!object->IsJSFunction());
170
+
171
+ // If you return a function from here, it will be called when an
172
+ // attempt is made to call the given object as a function.
173
+
174
+ // Regular expressions can be called as functions in both Firefox
175
+ // and Safari so we allow it too.
176
+ if (object->IsJSRegExp()) {
177
+ Handle<String> exec = Factory::exec_symbol();
178
+ return Handle<Object>(object->GetProperty(*exec));
179
+ }
180
+
181
+ // Objects created through the API can have an instance-call handler
182
+ // that should be used when calling the object as a function.
183
+ if (object->IsHeapObject() &&
184
+ HeapObject::cast(*object)->map()->has_instance_call_handler()) {
185
+ return Handle<JSFunction>(
186
+ Top::global_context()->call_as_function_delegate());
187
+ }
188
+
189
+ return Factory::undefined_value();
190
+ }
191
+
192
+
193
+ Handle<Object> Execution::GetConstructorDelegate(Handle<Object> object) {
194
+ ASSERT(!object->IsJSFunction());
195
+
196
+ // If you return a function from here, it will be called when an
197
+ // attempt is made to call the given object as a constructor.
198
+
199
+ // Objects created through the API can have an instance-call handler
200
+ // that should be used when calling the object as a function.
201
+ if (object->IsHeapObject() &&
202
+ HeapObject::cast(*object)->map()->has_instance_call_handler()) {
203
+ return Handle<JSFunction>(
204
+ Top::global_context()->call_as_constructor_delegate());
205
+ }
206
+
207
+ return Factory::undefined_value();
208
+ }
209
+
210
+
211
+ // Static state for stack guards.
212
+ StackGuard::ThreadLocal StackGuard::thread_local_;
213
+
214
+
215
+ bool StackGuard::IsStackOverflow() {
216
+ ExecutionAccess access;
217
+ return (thread_local_.jslimit_ != kInterruptLimit &&
218
+ thread_local_.climit_ != kInterruptLimit);
219
+ }
220
+
221
+
222
+ void StackGuard::EnableInterrupts() {
223
+ ExecutionAccess access;
224
+ if (IsSet(access)) {
225
+ set_limits(kInterruptLimit, access);
226
+ }
227
+ }
228
+
229
+
230
+ void StackGuard::SetStackLimit(uintptr_t limit) {
231
+ ExecutionAccess access;
232
+ // If the current limits are special (eg due to a pending interrupt) then
233
+ // leave them alone.
234
+ uintptr_t jslimit = SimulatorStack::JsLimitFromCLimit(limit);
235
+ if (thread_local_.jslimit_ == thread_local_.real_jslimit_) {
236
+ thread_local_.jslimit_ = jslimit;
237
+ }
238
+ if (thread_local_.climit_ == thread_local_.real_climit_) {
239
+ thread_local_.climit_ = limit;
240
+ }
241
+ thread_local_.real_climit_ = limit;
242
+ thread_local_.real_jslimit_ = jslimit;
243
+ }
244
+
245
+
246
+ void StackGuard::DisableInterrupts() {
247
+ ExecutionAccess access;
248
+ reset_limits(access);
249
+ }
250
+
251
+
252
+ bool StackGuard::IsSet(const ExecutionAccess& lock) {
253
+ return thread_local_.interrupt_flags_ != 0;
254
+ }
255
+
256
+
257
+ bool StackGuard::IsInterrupted() {
258
+ ExecutionAccess access;
259
+ return thread_local_.interrupt_flags_ & INTERRUPT;
260
+ }
261
+
262
+
263
+ void StackGuard::Interrupt() {
264
+ ExecutionAccess access;
265
+ thread_local_.interrupt_flags_ |= INTERRUPT;
266
+ set_limits(kInterruptLimit, access);
267
+ }
268
+
269
+
270
+ bool StackGuard::IsPreempted() {
271
+ ExecutionAccess access;
272
+ return thread_local_.interrupt_flags_ & PREEMPT;
273
+ }
274
+
275
+
276
+ void StackGuard::Preempt() {
277
+ ExecutionAccess access;
278
+ thread_local_.interrupt_flags_ |= PREEMPT;
279
+ set_limits(kInterruptLimit, access);
280
+ }
281
+
282
+
283
+ bool StackGuard::IsTerminateExecution() {
284
+ ExecutionAccess access;
285
+ return thread_local_.interrupt_flags_ & TERMINATE;
286
+ }
287
+
288
+
289
+ void StackGuard::TerminateExecution() {
290
+ ExecutionAccess access;
291
+ thread_local_.interrupt_flags_ |= TERMINATE;
292
+ set_limits(kInterruptLimit, access);
293
+ }
294
+
295
+
296
+ #ifdef ENABLE_DEBUGGER_SUPPORT
297
+ bool StackGuard::IsDebugBreak() {
298
+ ExecutionAccess access;
299
+ return thread_local_.interrupt_flags_ & DEBUGBREAK;
300
+ }
301
+
302
+
303
+ void StackGuard::DebugBreak() {
304
+ ExecutionAccess access;
305
+ thread_local_.interrupt_flags_ |= DEBUGBREAK;
306
+ set_limits(kInterruptLimit, access);
307
+ }
308
+
309
+
310
+ bool StackGuard::IsDebugCommand() {
311
+ ExecutionAccess access;
312
+ return thread_local_.interrupt_flags_ & DEBUGCOMMAND;
313
+ }
314
+
315
+
316
+ void StackGuard::DebugCommand() {
317
+ if (FLAG_debugger_auto_break) {
318
+ ExecutionAccess access;
319
+ thread_local_.interrupt_flags_ |= DEBUGCOMMAND;
320
+ set_limits(kInterruptLimit, access);
321
+ }
322
+ }
323
+ #endif
324
+
325
+ void StackGuard::Continue(InterruptFlag after_what) {
326
+ ExecutionAccess access;
327
+ thread_local_.interrupt_flags_ &= ~static_cast<int>(after_what);
328
+ if (thread_local_.interrupt_flags_ == 0) {
329
+ reset_limits(access);
330
+ }
331
+ }
332
+
333
+
334
+ int StackGuard::ArchiveSpacePerThread() {
335
+ return sizeof(ThreadLocal);
336
+ }
337
+
338
+
339
+ char* StackGuard::ArchiveStackGuard(char* to) {
340
+ ExecutionAccess access;
341
+ memcpy(to, reinterpret_cast<char*>(&thread_local_), sizeof(ThreadLocal));
342
+ ThreadLocal blank;
343
+ thread_local_ = blank;
344
+ return to + sizeof(ThreadLocal);
345
+ }
346
+
347
+
348
+ char* StackGuard::RestoreStackGuard(char* from) {
349
+ ExecutionAccess access;
350
+ memcpy(reinterpret_cast<char*>(&thread_local_), from, sizeof(ThreadLocal));
351
+ Heap::SetStackLimits();
352
+ return from + sizeof(ThreadLocal);
353
+ }
354
+
355
+
356
+ static internal::Thread::LocalStorageKey stack_limit_key =
357
+ internal::Thread::CreateThreadLocalKey();
358
+
359
+
360
+ void StackGuard::FreeThreadResources() {
361
+ Thread::SetThreadLocal(
362
+ stack_limit_key,
363
+ reinterpret_cast<void*>(thread_local_.real_climit_));
364
+ }
365
+
366
+
367
+ void StackGuard::ThreadLocal::Clear() {
368
+ real_jslimit_ = kIllegalLimit;
369
+ jslimit_ = kIllegalLimit;
370
+ real_climit_ = kIllegalLimit;
371
+ climit_ = kIllegalLimit;
372
+ nesting_ = 0;
373
+ postpone_interrupts_nesting_ = 0;
374
+ interrupt_flags_ = 0;
375
+ Heap::SetStackLimits();
376
+ }
377
+
378
+
379
+ void StackGuard::ThreadLocal::Initialize() {
380
+ if (real_climit_ == kIllegalLimit) {
381
+ // Takes the address of the limit variable in order to find out where
382
+ // the top of stack is right now.
383
+ uintptr_t limit = reinterpret_cast<uintptr_t>(&limit) - kLimitSize;
384
+ ASSERT(reinterpret_cast<uintptr_t>(&limit) > kLimitSize);
385
+ real_jslimit_ = SimulatorStack::JsLimitFromCLimit(limit);
386
+ jslimit_ = SimulatorStack::JsLimitFromCLimit(limit);
387
+ real_climit_ = limit;
388
+ climit_ = limit;
389
+ Heap::SetStackLimits();
390
+ }
391
+ nesting_ = 0;
392
+ postpone_interrupts_nesting_ = 0;
393
+ interrupt_flags_ = 0;
394
+ }
395
+
396
+
397
+ void StackGuard::ClearThread(const ExecutionAccess& lock) {
398
+ thread_local_.Clear();
399
+ }
400
+
401
+
402
+ void StackGuard::InitThread(const ExecutionAccess& lock) {
403
+ thread_local_.Initialize();
404
+ void* stored_limit = Thread::GetThreadLocal(stack_limit_key);
405
+ // You should hold the ExecutionAccess lock when you call this.
406
+ if (stored_limit != NULL) {
407
+ StackGuard::SetStackLimit(reinterpret_cast<intptr_t>(stored_limit));
408
+ }
409
+ }
410
+
411
+
412
+ // --- C a l l s t o n a t i v e s ---
413
+
414
+ #define RETURN_NATIVE_CALL(name, argc, argv, has_pending_exception) \
415
+ do { \
416
+ Object** args[argc] = argv; \
417
+ ASSERT(has_pending_exception != NULL); \
418
+ return Call(Top::name##_fun(), Top::builtins(), argc, args, \
419
+ has_pending_exception); \
420
+ } while (false)
421
+
422
+
423
+ Handle<Object> Execution::ToBoolean(Handle<Object> obj) {
424
+ // See the similar code in runtime.js:ToBoolean.
425
+ if (obj->IsBoolean()) return obj;
426
+ bool result = true;
427
+ if (obj->IsString()) {
428
+ result = Handle<String>::cast(obj)->length() != 0;
429
+ } else if (obj->IsNull() || obj->IsUndefined()) {
430
+ result = false;
431
+ } else if (obj->IsNumber()) {
432
+ double value = obj->Number();
433
+ result = !((value == 0) || isnan(value));
434
+ }
435
+ return Handle<Object>(Heap::ToBoolean(result));
436
+ }
437
+
438
+
439
+ Handle<Object> Execution::ToNumber(Handle<Object> obj, bool* exc) {
440
+ RETURN_NATIVE_CALL(to_number, 1, { obj.location() }, exc);
441
+ }
442
+
443
+
444
+ Handle<Object> Execution::ToString(Handle<Object> obj, bool* exc) {
445
+ RETURN_NATIVE_CALL(to_string, 1, { obj.location() }, exc);
446
+ }
447
+
448
+
449
+ Handle<Object> Execution::ToDetailString(Handle<Object> obj, bool* exc) {
450
+ RETURN_NATIVE_CALL(to_detail_string, 1, { obj.location() }, exc);
451
+ }
452
+
453
+
454
+ Handle<Object> Execution::ToObject(Handle<Object> obj, bool* exc) {
455
+ if (obj->IsJSObject()) return obj;
456
+ RETURN_NATIVE_CALL(to_object, 1, { obj.location() }, exc);
457
+ }
458
+
459
+
460
+ Handle<Object> Execution::ToInteger(Handle<Object> obj, bool* exc) {
461
+ RETURN_NATIVE_CALL(to_integer, 1, { obj.location() }, exc);
462
+ }
463
+
464
+
465
+ Handle<Object> Execution::ToUint32(Handle<Object> obj, bool* exc) {
466
+ RETURN_NATIVE_CALL(to_uint32, 1, { obj.location() }, exc);
467
+ }
468
+
469
+
470
+ Handle<Object> Execution::ToInt32(Handle<Object> obj, bool* exc) {
471
+ RETURN_NATIVE_CALL(to_int32, 1, { obj.location() }, exc);
472
+ }
473
+
474
+
475
+ Handle<Object> Execution::NewDate(double time, bool* exc) {
476
+ Handle<Object> time_obj = Factory::NewNumber(time);
477
+ RETURN_NATIVE_CALL(create_date, 1, { time_obj.location() }, exc);
478
+ }
479
+
480
+
481
+ #undef RETURN_NATIVE_CALL
482
+
483
+
484
+ Handle<Object> Execution::CharAt(Handle<String> string, uint32_t index) {
485
+ int int_index = static_cast<int>(index);
486
+ if (int_index < 0 || int_index >= string->length()) {
487
+ return Factory::undefined_value();
488
+ }
489
+
490
+ Handle<Object> char_at =
491
+ GetProperty(Top::builtins(), Factory::char_at_symbol());
492
+ if (!char_at->IsJSFunction()) {
493
+ return Factory::undefined_value();
494
+ }
495
+
496
+ bool caught_exception;
497
+ Handle<Object> index_object = Factory::NewNumberFromInt(int_index);
498
+ Object** index_arg[] = { index_object.location() };
499
+ Handle<Object> result = TryCall(Handle<JSFunction>::cast(char_at),
500
+ string,
501
+ ARRAY_SIZE(index_arg),
502
+ index_arg,
503
+ &caught_exception);
504
+ if (caught_exception) {
505
+ return Factory::undefined_value();
506
+ }
507
+ return result;
508
+ }
509
+
510
+
511
+ Handle<JSFunction> Execution::InstantiateFunction(
512
+ Handle<FunctionTemplateInfo> data, bool* exc) {
513
+ // Fast case: see if the function has already been instantiated
514
+ int serial_number = Smi::cast(data->serial_number())->value();
515
+ Object* elm =
516
+ Top::global_context()->function_cache()->GetElement(serial_number);
517
+ if (elm->IsJSFunction()) return Handle<JSFunction>(JSFunction::cast(elm));
518
+ // The function has not yet been instantiated in this context; do it.
519
+ Object** args[1] = { Handle<Object>::cast(data).location() };
520
+ Handle<Object> result =
521
+ Call(Top::instantiate_fun(), Top::builtins(), 1, args, exc);
522
+ if (*exc) return Handle<JSFunction>::null();
523
+ return Handle<JSFunction>::cast(result);
524
+ }
525
+
526
+
527
+ Handle<JSObject> Execution::InstantiateObject(Handle<ObjectTemplateInfo> data,
528
+ bool* exc) {
529
+ if (data->property_list()->IsUndefined() &&
530
+ !data->constructor()->IsUndefined()) {
531
+ // Initialization to make gcc happy.
532
+ Object* result = NULL;
533
+ {
534
+ HandleScope scope;
535
+ Handle<FunctionTemplateInfo> cons_template =
536
+ Handle<FunctionTemplateInfo>(
537
+ FunctionTemplateInfo::cast(data->constructor()));
538
+ Handle<JSFunction> cons = InstantiateFunction(cons_template, exc);
539
+ if (*exc) return Handle<JSObject>::null();
540
+ Handle<Object> value = New(cons, 0, NULL, exc);
541
+ if (*exc) return Handle<JSObject>::null();
542
+ result = *value;
543
+ }
544
+ ASSERT(!*exc);
545
+ return Handle<JSObject>(JSObject::cast(result));
546
+ } else {
547
+ Object** args[1] = { Handle<Object>::cast(data).location() };
548
+ Handle<Object> result =
549
+ Call(Top::instantiate_fun(), Top::builtins(), 1, args, exc);
550
+ if (*exc) return Handle<JSObject>::null();
551
+ return Handle<JSObject>::cast(result);
552
+ }
553
+ }
554
+
555
+
556
+ void Execution::ConfigureInstance(Handle<Object> instance,
557
+ Handle<Object> instance_template,
558
+ bool* exc) {
559
+ Object** args[2] = { instance.location(), instance_template.location() };
560
+ Execution::Call(Top::configure_instance_fun(), Top::builtins(), 2, args, exc);
561
+ }
562
+
563
+
564
+ Handle<String> Execution::GetStackTraceLine(Handle<Object> recv,
565
+ Handle<JSFunction> fun,
566
+ Handle<Object> pos,
567
+ Handle<Object> is_global) {
568
+ const int argc = 4;
569
+ Object** args[argc] = { recv.location(),
570
+ Handle<Object>::cast(fun).location(),
571
+ pos.location(),
572
+ is_global.location() };
573
+ bool caught_exception = false;
574
+ Handle<Object> result = TryCall(Top::get_stack_trace_line_fun(),
575
+ Top::builtins(), argc, args,
576
+ &caught_exception);
577
+ if (caught_exception || !result->IsString()) return Factory::empty_symbol();
578
+ return Handle<String>::cast(result);
579
+ }
580
+
581
+
582
+ static Object* RuntimePreempt() {
583
+ // Clear the preempt request flag.
584
+ StackGuard::Continue(PREEMPT);
585
+
586
+ ContextSwitcher::PreemptionReceived();
587
+
588
+ #ifdef ENABLE_DEBUGGER_SUPPORT
589
+ if (Debug::InDebugger()) {
590
+ // If currently in the debugger don't do any actual preemption but record
591
+ // that preemption occoured while in the debugger.
592
+ Debug::PreemptionWhileInDebugger();
593
+ } else {
594
+ // Perform preemption.
595
+ v8::Unlocker unlocker;
596
+ Thread::YieldCPU();
597
+ }
598
+ #else
599
+ // Perform preemption.
600
+ v8::Unlocker unlocker;
601
+ Thread::YieldCPU();
602
+ #endif
603
+
604
+ return Heap::undefined_value();
605
+ }
606
+
607
+
608
+ #ifdef ENABLE_DEBUGGER_SUPPORT
609
+ Object* Execution::DebugBreakHelper() {
610
+ // Just continue if breaks are disabled.
611
+ if (Debug::disable_break()) {
612
+ return Heap::undefined_value();
613
+ }
614
+
615
+ // Ignore debug break during bootstrapping.
616
+ if (Bootstrapper::IsActive()) {
617
+ return Heap::undefined_value();
618
+ }
619
+
620
+ {
621
+ JavaScriptFrameIterator it;
622
+ ASSERT(!it.done());
623
+ Object* fun = it.frame()->function();
624
+ if (fun && fun->IsJSFunction()) {
625
+ // Don't stop in builtin functions.
626
+ if (JSFunction::cast(fun)->IsBuiltin()) {
627
+ return Heap::undefined_value();
628
+ }
629
+ GlobalObject* global = JSFunction::cast(fun)->context()->global();
630
+ // Don't stop in debugger functions.
631
+ if (Debug::IsDebugGlobal(global)) {
632
+ return Heap::undefined_value();
633
+ }
634
+ }
635
+ }
636
+
637
+ // Collect the break state before clearing the flags.
638
+ bool debug_command_only =
639
+ StackGuard::IsDebugCommand() && !StackGuard::IsDebugBreak();
640
+
641
+ // Clear the debug request flags.
642
+ StackGuard::Continue(DEBUGBREAK);
643
+ StackGuard::Continue(DEBUGCOMMAND);
644
+
645
+ HandleScope scope;
646
+ // Enter the debugger. Just continue if we fail to enter the debugger.
647
+ EnterDebugger debugger;
648
+ if (debugger.FailedToEnter()) {
649
+ return Heap::undefined_value();
650
+ }
651
+
652
+ // Notify the debug event listeners. Indicate auto continue if the break was
653
+ // a debug command break.
654
+ Debugger::OnDebugBreak(Factory::undefined_value(), debug_command_only);
655
+
656
+ // Return to continue execution.
657
+ return Heap::undefined_value();
658
+ }
659
+ #endif
660
+
661
+ Object* Execution::HandleStackGuardInterrupt() {
662
+ #ifdef ENABLE_DEBUGGER_SUPPORT
663
+ if (StackGuard::IsDebugBreak() || StackGuard::IsDebugCommand()) {
664
+ DebugBreakHelper();
665
+ }
666
+ #endif
667
+ if (StackGuard::IsPreempted()) RuntimePreempt();
668
+ if (StackGuard::IsTerminateExecution()) {
669
+ StackGuard::Continue(TERMINATE);
670
+ return Top::TerminateExecution();
671
+ }
672
+ if (StackGuard::IsInterrupted()) {
673
+ // interrupt
674
+ StackGuard::Continue(INTERRUPT);
675
+ return Top::StackOverflow();
676
+ }
677
+ return Heap::undefined_value();
678
+ }
679
+
680
+ // --- G C E x t e n s i o n ---
681
+
682
+ const char* GCExtension::kSource = "native function gc();";
683
+
684
+
685
+ v8::Handle<v8::FunctionTemplate> GCExtension::GetNativeFunction(
686
+ v8::Handle<v8::String> str) {
687
+ return v8::FunctionTemplate::New(GCExtension::GC);
688
+ }
689
+
690
+
691
+ v8::Handle<v8::Value> GCExtension::GC(const v8::Arguments& args) {
692
+ // All allocation spaces other than NEW_SPACE have the same effect.
693
+ Heap::CollectAllGarbage(false);
694
+ return v8::Undefined();
695
+ }
696
+
697
+
698
+ static GCExtension kGCExtension;
699
+ v8::DeclareExtension kGCExtensionDeclaration(&kGCExtension);
700
+
701
+ } } // namespace v8::internal