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,283 @@
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
+ import sys
29
+ from os.path import join, dirname, abspath
30
+ root_dir = dirname(File('SConstruct').rfile().abspath)
31
+ sys.path.append(join(root_dir, 'tools'))
32
+ import js2c
33
+ Import('context')
34
+
35
+
36
+ SOURCES = {
37
+ 'all': Split("""
38
+ accessors.cc
39
+ allocation.cc
40
+ api.cc
41
+ assembler.cc
42
+ ast.cc
43
+ bootstrapper.cc
44
+ builtins.cc
45
+ checks.cc
46
+ code-stubs.cc
47
+ codegen.cc
48
+ compilation-cache.cc
49
+ compiler.cc
50
+ contexts.cc
51
+ conversions.cc
52
+ counters.cc
53
+ dateparser.cc
54
+ debug-agent.cc
55
+ debug.cc
56
+ disassembler.cc
57
+ execution.cc
58
+ factory.cc
59
+ fast-codegen.cc
60
+ flags.cc
61
+ frame-element.cc
62
+ frames.cc
63
+ func-name-inferrer.cc
64
+ global-handles.cc
65
+ handles.cc
66
+ hashmap.cc
67
+ heap-profiler.cc
68
+ heap.cc
69
+ ic.cc
70
+ interpreter-irregexp.cc
71
+ jsregexp.cc
72
+ jump-target.cc
73
+ log-utils.cc
74
+ log.cc
75
+ mark-compact.cc
76
+ messages.cc
77
+ objects.cc
78
+ oprofile-agent.cc
79
+ parser.cc
80
+ property.cc
81
+ regexp-macro-assembler-irregexp.cc
82
+ regexp-macro-assembler.cc
83
+ regexp-stack.cc
84
+ register-allocator.cc
85
+ rewriter.cc
86
+ runtime.cc
87
+ scanner.cc
88
+ scopeinfo.cc
89
+ scopes.cc
90
+ serialize.cc
91
+ snapshot-common.cc
92
+ spaces.cc
93
+ string-stream.cc
94
+ stub-cache.cc
95
+ token.cc
96
+ top.cc
97
+ unicode.cc
98
+ usage-analyzer.cc
99
+ utils.cc
100
+ v8-counters.cc
101
+ v8.cc
102
+ v8threads.cc
103
+ variables.cc
104
+ version.cc
105
+ virtual-frame.cc
106
+ zone.cc
107
+ """),
108
+ 'arch:arm': Split("""
109
+ arm/builtins-arm.cc
110
+ arm/codegen-arm.cc
111
+ arm/constants-arm.cc
112
+ arm/cpu-arm.cc
113
+ arm/debug-arm.cc
114
+ arm/disasm-arm.cc
115
+ arm/fast-codegen-arm.cc
116
+ arm/frames-arm.cc
117
+ arm/ic-arm.cc
118
+ arm/jump-target-arm.cc
119
+ arm/macro-assembler-arm.cc
120
+ arm/regexp-macro-assembler-arm.cc
121
+ arm/register-allocator-arm.cc
122
+ arm/stub-cache-arm.cc
123
+ arm/virtual-frame-arm.cc
124
+ """),
125
+ 'armvariant:arm': Split("""
126
+ arm/assembler-arm.cc
127
+ """),
128
+ 'armvariant:thumb2': Split("""
129
+ arm/assembler-thumb2.cc
130
+ """),
131
+ 'arch:ia32': Split("""
132
+ ia32/assembler-ia32.cc
133
+ ia32/builtins-ia32.cc
134
+ ia32/codegen-ia32.cc
135
+ ia32/cpu-ia32.cc
136
+ ia32/debug-ia32.cc
137
+ ia32/disasm-ia32.cc
138
+ ia32/fast-codegen-ia32.cc
139
+ ia32/frames-ia32.cc
140
+ ia32/ic-ia32.cc
141
+ ia32/jump-target-ia32.cc
142
+ ia32/macro-assembler-ia32.cc
143
+ ia32/regexp-macro-assembler-ia32.cc
144
+ ia32/register-allocator-ia32.cc
145
+ ia32/stub-cache-ia32.cc
146
+ ia32/virtual-frame-ia32.cc
147
+ """),
148
+ 'arch:x64': Split("""
149
+ x64/assembler-x64.cc
150
+ x64/builtins-x64.cc
151
+ x64/codegen-x64.cc
152
+ x64/cpu-x64.cc
153
+ x64/debug-x64.cc
154
+ x64/disasm-x64.cc
155
+ x64/fast-codegen-x64.cc
156
+ x64/frames-x64.cc
157
+ x64/ic-x64.cc
158
+ x64/jump-target-x64.cc
159
+ x64/macro-assembler-x64.cc
160
+ x64/regexp-macro-assembler-x64.cc
161
+ x64/register-allocator-x64.cc
162
+ x64/stub-cache-x64.cc
163
+ x64/virtual-frame-x64.cc
164
+ """),
165
+ 'simulator:arm': ['arm/simulator-arm.cc'],
166
+ 'os:freebsd': ['platform-freebsd.cc', 'platform-posix.cc'],
167
+ 'os:openbsd': ['platform-openbsd.cc', 'platform-posix.cc'],
168
+ 'os:linux': ['platform-linux.cc', 'platform-posix.cc'],
169
+ 'os:android': ['platform-linux.cc', 'platform-posix.cc'],
170
+ 'os:macos': ['platform-macos.cc', 'platform-posix.cc'],
171
+ 'os:nullos': ['platform-nullos.cc'],
172
+ 'os:win32': ['platform-win32.cc'],
173
+ 'mode:release': [],
174
+ 'mode:debug': [
175
+ 'objects-debug.cc', 'prettyprinter.cc', 'regexp-macro-assembler-tracer.cc'
176
+ ]
177
+ }
178
+
179
+
180
+ D8_FILES = {
181
+ 'all': [
182
+ 'd8.cc', 'd8-debug.cc'
183
+ ],
184
+ 'os:linux': [
185
+ 'd8-posix.cc'
186
+ ],
187
+ 'os:macos': [
188
+ 'd8-posix.cc'
189
+ ],
190
+ 'os:android': [
191
+ 'd8-posix.cc'
192
+ ],
193
+ 'os:freebsd': [
194
+ 'd8-posix.cc'
195
+ ],
196
+ 'os:openbsd': [
197
+ 'd8-posix.cc'
198
+ ],
199
+ 'os:win32': [
200
+ 'd8-windows.cc'
201
+ ],
202
+ 'os:nullos': [
203
+ 'd8-windows.cc' # Empty implementation at the moment.
204
+ ],
205
+ 'console:readline': [
206
+ 'd8-readline.cc'
207
+ ]
208
+ }
209
+
210
+
211
+ LIBRARY_FILES = '''
212
+ runtime.js
213
+ v8natives.js
214
+ array.js
215
+ string.js
216
+ uri.js
217
+ math.js
218
+ messages.js
219
+ apinatives.js
220
+ debug-delay.js
221
+ mirror-delay.js
222
+ date-delay.js
223
+ regexp-delay.js
224
+ json-delay.js
225
+ '''.split()
226
+
227
+
228
+ def Abort(message):
229
+ print message
230
+ sys.exit(1)
231
+
232
+
233
+ def ConfigureObjectFiles():
234
+ env = Environment()
235
+ env.Replace(**context.flags['v8'])
236
+ context.ApplyEnvOverrides(env)
237
+ env['BUILDERS']['JS2C'] = Builder(action=js2c.JS2C)
238
+ env['BUILDERS']['Snapshot'] = Builder(action='$SOURCE $TARGET --logfile "$LOGFILE"')
239
+
240
+ # Build the standard platform-independent source files.
241
+ source_files = context.GetRelevantSources(SOURCES)
242
+
243
+ d8_files = context.GetRelevantSources(D8_FILES)
244
+ d8_js = env.JS2C('d8-js.cc', 'd8.js', TYPE='D8')
245
+ d8_js_obj = context.ConfigureObject(env, d8_js, CPPPATH=['.'])
246
+ d8_objs = [context.ConfigureObject(env, [d8_files]), d8_js_obj]
247
+
248
+ # Combine the JavaScript library files into a single C++ file and
249
+ # compile it.
250
+ library_files = [s for s in LIBRARY_FILES]
251
+ library_files.append('macros.py')
252
+ libraries_src, libraries_empty_src = env.JS2C(['libraries.cc', 'libraries-empty.cc'], library_files, TYPE='CORE')
253
+ libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.'])
254
+
255
+ # Build dtoa.
256
+ dtoa_env = env.Copy()
257
+ dtoa_env.Replace(**context.flags['dtoa'])
258
+ dtoa_files = ['dtoa-config.c']
259
+ dtoa_obj = context.ConfigureObject(dtoa_env, dtoa_files)
260
+
261
+ source_objs = context.ConfigureObject(env, source_files)
262
+ non_snapshot_files = [dtoa_obj, source_objs]
263
+
264
+ # Create snapshot if necessary.
265
+ empty_snapshot_obj = context.ConfigureObject(env, 'snapshot-empty.cc')
266
+ mksnapshot_env = env.Copy()
267
+ mksnapshot_env.Replace(**context.flags['mksnapshot'])
268
+ mksnapshot_src = 'mksnapshot.cc'
269
+ mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb')
270
+ if context.use_snapshot:
271
+ if context.build_snapshot:
272
+ snapshot_cc = env.Snapshot('snapshot.cc', mksnapshot, LOGFILE=File('snapshot.log').abspath)
273
+ else:
274
+ snapshot_cc = Command('snapshot.cc', [], [])
275
+ snapshot_obj = context.ConfigureObject(env, snapshot_cc, CPPPATH=['.'])
276
+ else:
277
+ snapshot_obj = empty_snapshot_obj
278
+ library_objs = [non_snapshot_files, libraries_obj, snapshot_obj]
279
+ return (library_objs, d8_objs, [mksnapshot])
280
+
281
+
282
+ (library_objs, d8_objs, mksnapshot) = ConfigureObjectFiles()
283
+ Return('library_objs d8_objs mksnapshot')
@@ -0,0 +1,695 @@
1
+ // Copyright 2006-2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #include "v8.h"
29
+
30
+ #include "accessors.h"
31
+ #include "execution.h"
32
+ #include "factory.h"
33
+ #include "scopeinfo.h"
34
+ #include "top.h"
35
+ #include "zone-inl.h"
36
+
37
+ namespace v8 {
38
+ namespace internal {
39
+
40
+
41
+ template <class C>
42
+ static C* FindInPrototypeChain(Object* obj, bool* found_it) {
43
+ ASSERT(!*found_it);
44
+ while (!Is<C>(obj)) {
45
+ if (obj == Heap::null_value()) return NULL;
46
+ obj = obj->GetPrototype();
47
+ }
48
+ *found_it = true;
49
+ return C::cast(obj);
50
+ }
51
+
52
+
53
+ // Entry point that never should be called.
54
+ Object* Accessors::IllegalSetter(JSObject*, Object*, void*) {
55
+ UNREACHABLE();
56
+ return NULL;
57
+ }
58
+
59
+
60
+ Object* Accessors::IllegalGetAccessor(Object* object, void*) {
61
+ UNREACHABLE();
62
+ return object;
63
+ }
64
+
65
+
66
+ Object* Accessors::ReadOnlySetAccessor(JSObject*, Object* value, void*) {
67
+ // According to ECMA-262, section 8.6.2.2, page 28, setting
68
+ // read-only properties must be silently ignored.
69
+ return value;
70
+ }
71
+
72
+
73
+ //
74
+ // Accessors::ArrayLength
75
+ //
76
+
77
+
78
+ Object* Accessors::ArrayGetLength(Object* object, void*) {
79
+ // Traverse the prototype chain until we reach an array.
80
+ bool found_it = false;
81
+ JSArray* holder = FindInPrototypeChain<JSArray>(object, &found_it);
82
+ if (!found_it) return Smi::FromInt(0);
83
+ return holder->length();
84
+ }
85
+
86
+
87
+ // The helper function will 'flatten' Number objects.
88
+ Object* Accessors::FlattenNumber(Object* value) {
89
+ if (value->IsNumber() || !value->IsJSValue()) return value;
90
+ JSValue* wrapper = JSValue::cast(value);
91
+ ASSERT(
92
+ Top::context()->global_context()->number_function()->has_initial_map());
93
+ Map* number_map =
94
+ Top::context()->global_context()->number_function()->initial_map();
95
+ if (wrapper->map() == number_map) return wrapper->value();
96
+ return value;
97
+ }
98
+
99
+
100
+ Object* Accessors::ArraySetLength(JSObject* object, Object* value, void*) {
101
+ value = FlattenNumber(value);
102
+
103
+ // Need to call methods that may trigger GC.
104
+ HandleScope scope;
105
+
106
+ // Protect raw pointers.
107
+ Handle<JSObject> object_handle(object);
108
+ Handle<Object> value_handle(value);
109
+
110
+ bool has_exception;
111
+ Handle<Object> uint32_v = Execution::ToUint32(value_handle, &has_exception);
112
+ if (has_exception) return Failure::Exception();
113
+ Handle<Object> number_v = Execution::ToNumber(value_handle, &has_exception);
114
+ if (has_exception) return Failure::Exception();
115
+
116
+ // Restore raw pointers,
117
+ object = *object_handle;
118
+ value = *value_handle;
119
+
120
+ if (uint32_v->Number() == number_v->Number()) {
121
+ if (object->IsJSArray()) {
122
+ return JSArray::cast(object)->SetElementsLength(*uint32_v);
123
+ } else {
124
+ // This means one of the object's prototypes is a JSArray and
125
+ // the object does not have a 'length' property.
126
+ // Calling SetProperty causes an infinite loop.
127
+ return object->IgnoreAttributesAndSetLocalProperty(Heap::length_symbol(),
128
+ value, NONE);
129
+ }
130
+ }
131
+ return Top::Throw(*Factory::NewRangeError("invalid_array_length",
132
+ HandleVector<Object>(NULL, 0)));
133
+ }
134
+
135
+
136
+ const AccessorDescriptor Accessors::ArrayLength = {
137
+ ArrayGetLength,
138
+ ArraySetLength,
139
+ 0
140
+ };
141
+
142
+
143
+ //
144
+ // Accessors::StringLength
145
+ //
146
+
147
+
148
+ Object* Accessors::StringGetLength(Object* object, void*) {
149
+ Object* value = object;
150
+ if (object->IsJSValue()) value = JSValue::cast(object)->value();
151
+ if (value->IsString()) return Smi::FromInt(String::cast(value)->length());
152
+ // If object is not a string we return 0 to be compatible with WebKit.
153
+ // Note: Firefox returns the length of ToString(object).
154
+ return Smi::FromInt(0);
155
+ }
156
+
157
+
158
+ const AccessorDescriptor Accessors::StringLength = {
159
+ StringGetLength,
160
+ IllegalSetter,
161
+ 0
162
+ };
163
+
164
+
165
+ //
166
+ // Accessors::ScriptSource
167
+ //
168
+
169
+
170
+ Object* Accessors::ScriptGetSource(Object* object, void*) {
171
+ Object* script = JSValue::cast(object)->value();
172
+ return Script::cast(script)->source();
173
+ }
174
+
175
+
176
+ const AccessorDescriptor Accessors::ScriptSource = {
177
+ ScriptGetSource,
178
+ IllegalSetter,
179
+ 0
180
+ };
181
+
182
+
183
+ //
184
+ // Accessors::ScriptName
185
+ //
186
+
187
+
188
+ Object* Accessors::ScriptGetName(Object* object, void*) {
189
+ Object* script = JSValue::cast(object)->value();
190
+ return Script::cast(script)->name();
191
+ }
192
+
193
+
194
+ const AccessorDescriptor Accessors::ScriptName = {
195
+ ScriptGetName,
196
+ IllegalSetter,
197
+ 0
198
+ };
199
+
200
+
201
+ //
202
+ // Accessors::ScriptId
203
+ //
204
+
205
+
206
+ Object* Accessors::ScriptGetId(Object* object, void*) {
207
+ Object* script = JSValue::cast(object)->value();
208
+ return Script::cast(script)->id();
209
+ }
210
+
211
+
212
+ const AccessorDescriptor Accessors::ScriptId = {
213
+ ScriptGetId,
214
+ IllegalSetter,
215
+ 0
216
+ };
217
+
218
+
219
+ //
220
+ // Accessors::ScriptLineOffset
221
+ //
222
+
223
+
224
+ Object* Accessors::ScriptGetLineOffset(Object* object, void*) {
225
+ Object* script = JSValue::cast(object)->value();
226
+ return Script::cast(script)->line_offset();
227
+ }
228
+
229
+
230
+ const AccessorDescriptor Accessors::ScriptLineOffset = {
231
+ ScriptGetLineOffset,
232
+ IllegalSetter,
233
+ 0
234
+ };
235
+
236
+
237
+ //
238
+ // Accessors::ScriptColumnOffset
239
+ //
240
+
241
+
242
+ Object* Accessors::ScriptGetColumnOffset(Object* object, void*) {
243
+ Object* script = JSValue::cast(object)->value();
244
+ return Script::cast(script)->column_offset();
245
+ }
246
+
247
+
248
+ const AccessorDescriptor Accessors::ScriptColumnOffset = {
249
+ ScriptGetColumnOffset,
250
+ IllegalSetter,
251
+ 0
252
+ };
253
+
254
+
255
+ //
256
+ // Accessors::ScriptData
257
+ //
258
+
259
+
260
+ Object* Accessors::ScriptGetData(Object* object, void*) {
261
+ Object* script = JSValue::cast(object)->value();
262
+ return Script::cast(script)->data();
263
+ }
264
+
265
+
266
+ const AccessorDescriptor Accessors::ScriptData = {
267
+ ScriptGetData,
268
+ IllegalSetter,
269
+ 0
270
+ };
271
+
272
+
273
+ //
274
+ // Accessors::ScriptType
275
+ //
276
+
277
+
278
+ Object* Accessors::ScriptGetType(Object* object, void*) {
279
+ Object* script = JSValue::cast(object)->value();
280
+ return Script::cast(script)->type();
281
+ }
282
+
283
+
284
+ const AccessorDescriptor Accessors::ScriptType = {
285
+ ScriptGetType,
286
+ IllegalSetter,
287
+ 0
288
+ };
289
+
290
+
291
+ //
292
+ // Accessors::ScriptCompilationType
293
+ //
294
+
295
+
296
+ Object* Accessors::ScriptGetCompilationType(Object* object, void*) {
297
+ Object* script = JSValue::cast(object)->value();
298
+ return Script::cast(script)->compilation_type();
299
+ }
300
+
301
+
302
+ const AccessorDescriptor Accessors::ScriptCompilationType = {
303
+ ScriptGetCompilationType,
304
+ IllegalSetter,
305
+ 0
306
+ };
307
+
308
+
309
+ //
310
+ // Accessors::ScriptGetLineEnds
311
+ //
312
+
313
+
314
+ Object* Accessors::ScriptGetLineEnds(Object* object, void*) {
315
+ HandleScope scope;
316
+ Handle<Script> script(Script::cast(JSValue::cast(object)->value()));
317
+ InitScriptLineEnds(script);
318
+ ASSERT(script->line_ends()->IsFixedArray());
319
+ Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends()));
320
+ Handle<FixedArray> copy = Factory::CopyFixedArray(line_ends);
321
+ Handle<JSArray> js_array = Factory::NewJSArrayWithElements(copy);
322
+ return *js_array;
323
+ }
324
+
325
+
326
+ const AccessorDescriptor Accessors::ScriptLineEnds = {
327
+ ScriptGetLineEnds,
328
+ IllegalSetter,
329
+ 0
330
+ };
331
+
332
+
333
+ //
334
+ // Accessors::ScriptGetContextData
335
+ //
336
+
337
+
338
+ Object* Accessors::ScriptGetContextData(Object* object, void*) {
339
+ Object* script = JSValue::cast(object)->value();
340
+ return Script::cast(script)->context_data();
341
+ }
342
+
343
+
344
+ const AccessorDescriptor Accessors::ScriptContextData = {
345
+ ScriptGetContextData,
346
+ IllegalSetter,
347
+ 0
348
+ };
349
+
350
+
351
+ //
352
+ // Accessors::ScriptGetEvalFromScript
353
+ //
354
+
355
+
356
+ Object* Accessors::ScriptGetEvalFromScript(Object* object, void*) {
357
+ Object* script = JSValue::cast(object)->value();
358
+ if (!Script::cast(script)->eval_from_shared()->IsUndefined()) {
359
+ Handle<SharedFunctionInfo> eval_from_shared(
360
+ SharedFunctionInfo::cast(Script::cast(script)->eval_from_shared()));
361
+
362
+ if (eval_from_shared->script()->IsScript()) {
363
+ Handle<Script> eval_from_script(Script::cast(eval_from_shared->script()));
364
+ return *GetScriptWrapper(eval_from_script);
365
+ }
366
+ }
367
+ return Heap::undefined_value();
368
+ }
369
+
370
+
371
+ const AccessorDescriptor Accessors::ScriptEvalFromScript = {
372
+ ScriptGetEvalFromScript,
373
+ IllegalSetter,
374
+ 0
375
+ };
376
+
377
+
378
+ //
379
+ // Accessors::ScriptGetEvalFromScriptPosition
380
+ //
381
+
382
+
383
+ Object* Accessors::ScriptGetEvalFromScriptPosition(Object* object, void*) {
384
+ HandleScope scope;
385
+ Handle<Script> script(Script::cast(JSValue::cast(object)->value()));
386
+
387
+ // If this is not a script compiled through eval there is no eval position.
388
+ int compilation_type = Smi::cast(script->compilation_type())->value();
389
+ if (compilation_type != Script::COMPILATION_TYPE_EVAL) {
390
+ return Heap::undefined_value();
391
+ }
392
+
393
+ // Get the function from where eval was called and find the source position
394
+ // from the instruction offset.
395
+ Handle<Code> code(SharedFunctionInfo::cast(
396
+ script->eval_from_shared())->code());
397
+ return Smi::FromInt(code->SourcePosition(code->instruction_start() +
398
+ script->eval_from_instructions_offset()->value()));
399
+ }
400
+
401
+
402
+ const AccessorDescriptor Accessors::ScriptEvalFromScriptPosition = {
403
+ ScriptGetEvalFromScriptPosition,
404
+ IllegalSetter,
405
+ 0
406
+ };
407
+
408
+
409
+ //
410
+ // Accessors::ScriptGetEvalFromFunctionName
411
+ //
412
+
413
+
414
+ Object* Accessors::ScriptGetEvalFromFunctionName(Object* object, void*) {
415
+ Object* script = JSValue::cast(object)->value();
416
+ Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(
417
+ Script::cast(script)->eval_from_shared()));
418
+
419
+
420
+ // Find the name of the function calling eval.
421
+ if (!shared->name()->IsUndefined()) {
422
+ return shared->name();
423
+ } else {
424
+ return shared->inferred_name();
425
+ }
426
+ }
427
+
428
+
429
+ const AccessorDescriptor Accessors::ScriptEvalFromFunctionName = {
430
+ ScriptGetEvalFromFunctionName,
431
+ IllegalSetter,
432
+ 0
433
+ };
434
+
435
+
436
+ //
437
+ // Accessors::FunctionPrototype
438
+ //
439
+
440
+
441
+ Object* Accessors::FunctionGetPrototype(Object* object, void*) {
442
+ bool found_it = false;
443
+ JSFunction* function = FindInPrototypeChain<JSFunction>(object, &found_it);
444
+ if (!found_it) return Heap::undefined_value();
445
+ if (!function->has_prototype()) {
446
+ Object* prototype = Heap::AllocateFunctionPrototype(function);
447
+ if (prototype->IsFailure()) return prototype;
448
+ Object* result = function->SetPrototype(prototype);
449
+ if (result->IsFailure()) return result;
450
+ }
451
+ return function->prototype();
452
+ }
453
+
454
+
455
+ Object* Accessors::FunctionSetPrototype(JSObject* object,
456
+ Object* value,
457
+ void*) {
458
+ bool found_it = false;
459
+ JSFunction* function = FindInPrototypeChain<JSFunction>(object, &found_it);
460
+ if (!found_it) return Heap::undefined_value();
461
+ if (function->has_initial_map()) {
462
+ // If the function has allocated the initial map
463
+ // replace it with a copy containing the new prototype.
464
+ Object* new_map = function->initial_map()->CopyDropTransitions();
465
+ if (new_map->IsFailure()) return new_map;
466
+ function->set_initial_map(Map::cast(new_map));
467
+ }
468
+ Object* prototype = function->SetPrototype(value);
469
+ if (prototype->IsFailure()) return prototype;
470
+ ASSERT(function->prototype() == value);
471
+ return function;
472
+ }
473
+
474
+
475
+ const AccessorDescriptor Accessors::FunctionPrototype = {
476
+ FunctionGetPrototype,
477
+ FunctionSetPrototype,
478
+ 0
479
+ };
480
+
481
+
482
+ //
483
+ // Accessors::FunctionLength
484
+ //
485
+
486
+
487
+ Object* Accessors::FunctionGetLength(Object* object, void*) {
488
+ bool found_it = false;
489
+ JSFunction* function = FindInPrototypeChain<JSFunction>(object, &found_it);
490
+ if (!found_it) return Smi::FromInt(0);
491
+ // Check if already compiled.
492
+ if (!function->is_compiled()) {
493
+ // If the function isn't compiled yet, the length is not computed
494
+ // correctly yet. Compile it now and return the right length.
495
+ HandleScope scope;
496
+ Handle<JSFunction> function_handle(function);
497
+ if (!CompileLazy(function_handle, KEEP_EXCEPTION)) {
498
+ return Failure::Exception();
499
+ }
500
+ return Smi::FromInt(function_handle->shared()->length());
501
+ } else {
502
+ return Smi::FromInt(function->shared()->length());
503
+ }
504
+ }
505
+
506
+
507
+ const AccessorDescriptor Accessors::FunctionLength = {
508
+ FunctionGetLength,
509
+ ReadOnlySetAccessor,
510
+ 0
511
+ };
512
+
513
+
514
+ //
515
+ // Accessors::FunctionName
516
+ //
517
+
518
+
519
+ Object* Accessors::FunctionGetName(Object* object, void*) {
520
+ bool found_it = false;
521
+ JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
522
+ if (!found_it) return Heap::undefined_value();
523
+ return holder->shared()->name();
524
+ }
525
+
526
+
527
+ const AccessorDescriptor Accessors::FunctionName = {
528
+ FunctionGetName,
529
+ ReadOnlySetAccessor,
530
+ 0
531
+ };
532
+
533
+
534
+ //
535
+ // Accessors::FunctionArguments
536
+ //
537
+
538
+
539
+ Object* Accessors::FunctionGetArguments(Object* object, void*) {
540
+ HandleScope scope;
541
+ bool found_it = false;
542
+ JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
543
+ if (!found_it) return Heap::undefined_value();
544
+ Handle<JSFunction> function(holder);
545
+
546
+ // Find the top invocation of the function by traversing frames.
547
+ for (JavaScriptFrameIterator it; !it.done(); it.Advance()) {
548
+ // Skip all frames that aren't invocations of the given function.
549
+ JavaScriptFrame* frame = it.frame();
550
+ if (frame->function() != *function) continue;
551
+
552
+ // If there is an arguments variable in the stack, we return that.
553
+ int index = ScopeInfo<>::StackSlotIndex(frame->code(),
554
+ Heap::arguments_symbol());
555
+ if (index >= 0) {
556
+ Handle<Object> arguments = Handle<Object>(frame->GetExpression(index));
557
+ if (!arguments->IsTheHole()) return *arguments;
558
+ }
559
+
560
+ // If there isn't an arguments variable in the stack, we need to
561
+ // find the frame that holds the actual arguments passed to the
562
+ // function on the stack.
563
+ it.AdvanceToArgumentsFrame();
564
+ frame = it.frame();
565
+
566
+ // Get the number of arguments and construct an arguments object
567
+ // mirror for the right frame.
568
+ const int length = frame->GetProvidedParametersCount();
569
+ Handle<JSObject> arguments = Factory::NewArgumentsObject(function, length);
570
+ Handle<FixedArray> array = Factory::NewFixedArray(length);
571
+
572
+ // Copy the parameters to the arguments object.
573
+ ASSERT(array->length() == length);
574
+ for (int i = 0; i < length; i++) array->set(i, frame->GetParameter(i));
575
+ arguments->set_elements(*array);
576
+
577
+ // Return the freshly allocated arguments object.
578
+ return *arguments;
579
+ }
580
+
581
+ // No frame corresponding to the given function found. Return null.
582
+ return Heap::null_value();
583
+ }
584
+
585
+
586
+ const AccessorDescriptor Accessors::FunctionArguments = {
587
+ FunctionGetArguments,
588
+ ReadOnlySetAccessor,
589
+ 0
590
+ };
591
+
592
+
593
+ //
594
+ // Accessors::FunctionCaller
595
+ //
596
+
597
+
598
+ Object* Accessors::FunctionGetCaller(Object* object, void*) {
599
+ HandleScope scope;
600
+ bool found_it = false;
601
+ JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
602
+ if (!found_it) return Heap::undefined_value();
603
+ Handle<JSFunction> function(holder);
604
+
605
+ // Find the top invocation of the function by traversing frames.
606
+ for (JavaScriptFrameIterator it; !it.done(); it.Advance()) {
607
+ // Skip all frames that aren't invocations of the given function.
608
+ if (it.frame()->function() != *function) continue;
609
+ // Once we have found the frame, we need to go to the caller
610
+ // frame. This may require skipping through a number of top-level
611
+ // frames, e.g. frames for scripts not functions.
612
+ while (true) {
613
+ it.Advance();
614
+ if (it.done()) return Heap::null_value();
615
+ JSFunction* caller = JSFunction::cast(it.frame()->function());
616
+ if (!caller->shared()->is_toplevel()) return caller;
617
+ }
618
+ }
619
+
620
+ // No frame corresponding to the given function found. Return null.
621
+ return Heap::null_value();
622
+ }
623
+
624
+
625
+ const AccessorDescriptor Accessors::FunctionCaller = {
626
+ FunctionGetCaller,
627
+ ReadOnlySetAccessor,
628
+ 0
629
+ };
630
+
631
+
632
+ //
633
+ // Accessors::ObjectPrototype
634
+ //
635
+
636
+
637
+ Object* Accessors::ObjectGetPrototype(Object* receiver, void*) {
638
+ Object* current = receiver->GetPrototype();
639
+ while (current->IsJSObject() &&
640
+ JSObject::cast(current)->map()->is_hidden_prototype()) {
641
+ current = current->GetPrototype();
642
+ }
643
+ return current;
644
+ }
645
+
646
+
647
+ Object* Accessors::ObjectSetPrototype(JSObject* receiver,
648
+ Object* value,
649
+ void*) {
650
+ // Before we can set the prototype we need to be sure
651
+ // prototype cycles are prevented.
652
+ // It is sufficient to validate that the receiver is not in the new prototype
653
+ // chain.
654
+
655
+ // Silently ignore the change if value is not a JSObject or null.
656
+ // SpiderMonkey behaves this way.
657
+ if (!value->IsJSObject() && !value->IsNull()) return value;
658
+
659
+ for (Object* pt = value; pt != Heap::null_value(); pt = pt->GetPrototype()) {
660
+ if (JSObject::cast(pt) == receiver) {
661
+ // Cycle detected.
662
+ HandleScope scope;
663
+ return Top::Throw(*Factory::NewError("cyclic_proto",
664
+ HandleVector<Object>(NULL, 0)));
665
+ }
666
+ }
667
+
668
+ // Find the first object in the chain whose prototype object is not
669
+ // hidden and set the new prototype on that object.
670
+ JSObject* current = receiver;
671
+ Object* current_proto = receiver->GetPrototype();
672
+ while (current_proto->IsJSObject() &&
673
+ JSObject::cast(current_proto)->map()->is_hidden_prototype()) {
674
+ current = JSObject::cast(current_proto);
675
+ current_proto = current_proto->GetPrototype();
676
+ }
677
+
678
+ // Set the new prototype of the object.
679
+ Object* new_map = current->map()->CopyDropTransitions();
680
+ if (new_map->IsFailure()) return new_map;
681
+ Map::cast(new_map)->set_prototype(value);
682
+ current->set_map(Map::cast(new_map));
683
+
684
+ // To be consistent with other Set functions, return the value.
685
+ return value;
686
+ }
687
+
688
+
689
+ const AccessorDescriptor Accessors::ObjectPrototype = {
690
+ ObjectGetPrototype,
691
+ ObjectSetPrototype,
692
+ 0
693
+ };
694
+
695
+ } } // namespace v8::internal