therubyracer-heroku 0.8.1.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1966) hide show
  1. data/.gitignore +13 -0
  2. data/.gitmodules +3 -0
  3. data/.rspec +1 -0
  4. data/Changelog.md +165 -0
  5. data/Gemfile +1 -0
  6. data/README.md +155 -0
  7. data/Rakefile +34 -0
  8. data/bin/therubyracer +13 -0
  9. data/bin/v8 +8 -0
  10. data/ext/v8/extconf.rb +25 -0
  11. data/ext/v8/rr.cpp +175 -0
  12. data/ext/v8/rr.h +36 -0
  13. data/ext/v8/upstream/2.3.3/.gitignore +26 -0
  14. data/ext/v8/upstream/2.3.3/AUTHORS +31 -0
  15. data/ext/v8/upstream/2.3.3/ChangeLog +1916 -0
  16. data/ext/v8/upstream/2.3.3/LICENSE +55 -0
  17. data/ext/v8/upstream/2.3.3/SConstruct +1154 -0
  18. data/ext/v8/upstream/2.3.3/include/v8-debug.h +381 -0
  19. data/ext/v8/upstream/2.3.3/include/v8-profiler.h +353 -0
  20. data/ext/v8/upstream/2.3.3/include/v8.h +3616 -0
  21. data/ext/v8/upstream/2.3.3/src/SConscript +330 -0
  22. data/ext/v8/upstream/2.3.3/src/accessors.cc +661 -0
  23. data/ext/v8/upstream/2.3.3/src/accessors.h +114 -0
  24. data/ext/v8/upstream/2.3.3/src/allocation.cc +198 -0
  25. data/ext/v8/upstream/2.3.3/src/allocation.h +169 -0
  26. data/ext/v8/upstream/2.3.3/src/api.cc +4795 -0
  27. data/ext/v8/upstream/2.3.3/src/api.h +485 -0
  28. data/ext/v8/upstream/2.3.3/src/apinatives.js +110 -0
  29. data/ext/v8/upstream/2.3.3/src/apiutils.h +69 -0
  30. data/ext/v8/upstream/2.3.3/src/arguments.h +96 -0
  31. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm-inl.h +305 -0
  32. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.cc +2580 -0
  33. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.h +1275 -0
  34. data/ext/v8/upstream/2.3.3/src/arm/builtins-arm.cc +1320 -0
  35. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
  36. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.cc +11398 -0
  37. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.h +1102 -0
  38. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.cc +154 -0
  39. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.h +388 -0
  40. data/ext/v8/upstream/2.3.3/src/arm/cpu-arm.cc +142 -0
  41. data/ext/v8/upstream/2.3.3/src/arm/debug-arm.cc +309 -0
  42. data/ext/v8/upstream/2.3.3/src/arm/disasm-arm.cc +1459 -0
  43. data/ext/v8/upstream/2.3.3/src/arm/fast-codegen-arm.cc +241 -0
  44. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.cc +123 -0
  45. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.h +162 -0
  46. data/ext/v8/upstream/2.3.3/src/arm/full-codegen-arm.cc +3178 -0
  47. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
  48. data/ext/v8/upstream/2.3.3/src/arm/jump-target-arm.cc +164 -0
  49. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.cc +1892 -0
  50. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.h +727 -0
  51. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.cc +1261 -0
  52. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.h +266 -0
  53. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm-inl.h +100 -0
  54. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm.cc +63 -0
  55. data/ext/v8/upstream/2.3.3/src/arm/register-allocator-arm.h +44 -0
  56. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.cc +2822 -0
  57. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.h +361 -0
  58. data/ext/v8/upstream/2.3.3/src/arm/stub-cache-arm.cc +2387 -0
  59. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
  60. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.cc +834 -0
  61. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.h +519 -0
  62. data/ext/v8/upstream/2.3.3/src/array.js +1127 -0
  63. data/ext/v8/upstream/2.3.3/src/assembler.cc +801 -0
  64. data/ext/v8/upstream/2.3.3/src/assembler.h +573 -0
  65. data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
  66. data/ext/v8/upstream/2.3.3/src/ast.cc +1152 -0
  67. data/ext/v8/upstream/2.3.3/src/ast.h +2106 -0
  68. data/ext/v8/upstream/2.3.3/src/bootstrapper.cc +1819 -0
  69. data/ext/v8/upstream/2.3.3/src/bootstrapper.h +118 -0
  70. data/ext/v8/upstream/2.3.3/src/builtins.cc +1529 -0
  71. data/ext/v8/upstream/2.3.3/src/builtins.h +263 -0
  72. data/ext/v8/upstream/2.3.3/src/bytecodes-irregexp.h +104 -0
  73. data/ext/v8/upstream/2.3.3/src/cached-powers.h +119 -0
  74. data/ext/v8/upstream/2.3.3/src/char-predicates-inl.h +86 -0
  75. data/ext/v8/upstream/2.3.3/src/char-predicates.h +65 -0
  76. data/ext/v8/upstream/2.3.3/src/checks.cc +100 -0
  77. data/ext/v8/upstream/2.3.3/src/checks.h +310 -0
  78. data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
  79. data/ext/v8/upstream/2.3.3/src/circular-queue.cc +121 -0
  80. data/ext/v8/upstream/2.3.3/src/circular-queue.h +103 -0
  81. data/ext/v8/upstream/2.3.3/src/code-stubs.cc +177 -0
  82. data/ext/v8/upstream/2.3.3/src/code-stubs.h +177 -0
  83. data/ext/v8/upstream/2.3.3/src/code.h +68 -0
  84. data/ext/v8/upstream/2.3.3/src/codegen-inl.h +60 -0
  85. data/ext/v8/upstream/2.3.3/src/codegen.cc +516 -0
  86. data/ext/v8/upstream/2.3.3/src/codegen.h +897 -0
  87. data/ext/v8/upstream/2.3.3/src/compilation-cache.cc +562 -0
  88. data/ext/v8/upstream/2.3.3/src/compilation-cache.h +102 -0
  89. data/ext/v8/upstream/2.3.3/src/compiler.cc +654 -0
  90. data/ext/v8/upstream/2.3.3/src/compiler.h +299 -0
  91. data/ext/v8/upstream/2.3.3/src/contexts.cc +256 -0
  92. data/ext/v8/upstream/2.3.3/src/contexts.h +342 -0
  93. data/ext/v8/upstream/2.3.3/src/conversions-inl.h +110 -0
  94. data/ext/v8/upstream/2.3.3/src/conversions.cc +1119 -0
  95. data/ext/v8/upstream/2.3.3/src/conversions.h +123 -0
  96. data/ext/v8/upstream/2.3.3/src/counters.cc +78 -0
  97. data/ext/v8/upstream/2.3.3/src/counters.h +239 -0
  98. data/ext/v8/upstream/2.3.3/src/cpu-profiler-inl.h +100 -0
  99. data/ext/v8/upstream/2.3.3/src/cpu-profiler.cc +538 -0
  100. data/ext/v8/upstream/2.3.3/src/cpu-profiler.h +285 -0
  101. data/ext/v8/upstream/2.3.3/src/cpu.h +65 -0
  102. data/ext/v8/upstream/2.3.3/src/d8-debug.cc +356 -0
  103. data/ext/v8/upstream/2.3.3/src/d8-debug.h +155 -0
  104. data/ext/v8/upstream/2.3.3/src/d8-posix.cc +693 -0
  105. data/ext/v8/upstream/2.3.3/src/d8-readline.cc +128 -0
  106. data/ext/v8/upstream/2.3.3/src/d8-windows.cc +42 -0
  107. data/ext/v8/upstream/2.3.3/src/d8.cc +783 -0
  108. data/ext/v8/upstream/2.3.3/src/d8.h +227 -0
  109. data/ext/v8/upstream/2.3.3/src/d8.js +1683 -0
  110. data/ext/v8/upstream/2.3.3/src/data-flow.cc +758 -0
  111. data/ext/v8/upstream/2.3.3/src/data-flow.h +278 -0
  112. data/ext/v8/upstream/2.3.3/src/date.js +1059 -0
  113. data/ext/v8/upstream/2.3.3/src/dateparser-inl.h +123 -0
  114. data/ext/v8/upstream/2.3.3/src/dateparser.cc +178 -0
  115. data/ext/v8/upstream/2.3.3/src/dateparser.h +244 -0
  116. data/ext/v8/upstream/2.3.3/src/debug-agent.cc +427 -0
  117. data/ext/v8/upstream/2.3.3/src/debug-agent.h +129 -0
  118. data/ext/v8/upstream/2.3.3/src/debug-debugger.js +2227 -0
  119. data/ext/v8/upstream/2.3.3/src/debug.cc +3005 -0
  120. data/ext/v8/upstream/2.3.3/src/debug.h +993 -0
  121. data/ext/v8/upstream/2.3.3/src/disasm.h +77 -0
  122. data/ext/v8/upstream/2.3.3/src/disassembler.cc +312 -0
  123. data/ext/v8/upstream/2.3.3/src/disassembler.h +56 -0
  124. data/ext/v8/upstream/2.3.3/src/diy-fp.cc +58 -0
  125. data/ext/v8/upstream/2.3.3/src/diy-fp.h +117 -0
  126. data/ext/v8/upstream/2.3.3/src/double.h +169 -0
  127. data/ext/v8/upstream/2.3.3/src/dtoa-config.c +92 -0
  128. data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
  129. data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
  130. data/ext/v8/upstream/2.3.3/src/execution.cc +809 -0
  131. data/ext/v8/upstream/2.3.3/src/execution.h +336 -0
  132. data/ext/v8/upstream/2.3.3/src/factory.cc +1003 -0
  133. data/ext/v8/upstream/2.3.3/src/factory.h +410 -0
  134. data/ext/v8/upstream/2.3.3/src/fast-codegen.cc +746 -0
  135. data/ext/v8/upstream/2.3.3/src/fast-codegen.h +161 -0
  136. data/ext/v8/upstream/2.3.3/src/fast-dtoa.cc +505 -0
  137. data/ext/v8/upstream/2.3.3/src/fast-dtoa.h +58 -0
  138. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
  139. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.h +55 -0
  140. data/ext/v8/upstream/2.3.3/src/flag-definitions.h +455 -0
  141. data/ext/v8/upstream/2.3.3/src/flags.cc +551 -0
  142. data/ext/v8/upstream/2.3.3/src/flags.h +81 -0
  143. data/ext/v8/upstream/2.3.3/src/flow-graph.cc +763 -0
  144. data/ext/v8/upstream/2.3.3/src/flow-graph.h +180 -0
  145. data/ext/v8/upstream/2.3.3/src/frame-element.cc +42 -0
  146. data/ext/v8/upstream/2.3.3/src/frame-element.h +273 -0
  147. data/ext/v8/upstream/2.3.3/src/frames-inl.h +217 -0
  148. data/ext/v8/upstream/2.3.3/src/frames.cc +826 -0
  149. data/ext/v8/upstream/2.3.3/src/frames.h +682 -0
  150. data/ext/v8/upstream/2.3.3/src/full-codegen.cc +1443 -0
  151. data/ext/v8/upstream/2.3.3/src/full-codegen.h +548 -0
  152. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.cc +76 -0
  153. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.h +135 -0
  154. data/ext/v8/upstream/2.3.3/src/global-handles.cc +520 -0
  155. data/ext/v8/upstream/2.3.3/src/global-handles.h +180 -0
  156. data/ext/v8/upstream/2.3.3/src/globals.h +669 -0
  157. data/ext/v8/upstream/2.3.3/src/handles-inl.h +76 -0
  158. data/ext/v8/upstream/2.3.3/src/handles.cc +825 -0
  159. data/ext/v8/upstream/2.3.3/src/handles.h +393 -0
  160. data/ext/v8/upstream/2.3.3/src/hashmap.cc +226 -0
  161. data/ext/v8/upstream/2.3.3/src/hashmap.h +120 -0
  162. data/ext/v8/upstream/2.3.3/src/heap-inl.h +493 -0
  163. data/ext/v8/upstream/2.3.3/src/heap-profiler.cc +779 -0
  164. data/ext/v8/upstream/2.3.3/src/heap-profiler.h +323 -0
  165. data/ext/v8/upstream/2.3.3/src/heap.cc +4994 -0
  166. data/ext/v8/upstream/2.3.3/src/heap.h +1984 -0
  167. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32-inl.h +360 -0
  168. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.cc +2600 -0
  169. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.h +969 -0
  170. data/ext/v8/upstream/2.3.3/src/ia32/builtins-ia32.cc +1261 -0
  171. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32-inl.h +46 -0
  172. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.cc +13968 -0
  173. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.h +1097 -0
  174. data/ext/v8/upstream/2.3.3/src/ia32/cpu-ia32.cc +83 -0
  175. data/ext/v8/upstream/2.3.3/src/ia32/debug-ia32.cc +309 -0
  176. data/ext/v8/upstream/2.3.3/src/ia32/disasm-ia32.cc +1471 -0
  177. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.cc +954 -0
  178. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.h +155 -0
  179. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.cc +115 -0
  180. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.h +135 -0
  181. data/ext/v8/upstream/2.3.3/src/ia32/full-codegen-ia32.cc +3281 -0
  182. data/ext/v8/upstream/2.3.3/src/ia32/ic-ia32.cc +1966 -0
  183. data/ext/v8/upstream/2.3.3/src/ia32/jump-target-ia32.cc +437 -0
  184. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.cc +1610 -0
  185. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.h +610 -0
  186. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.cc +1247 -0
  187. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.h +214 -0
  188. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32-inl.h +82 -0
  189. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32.cc +157 -0
  190. data/ext/v8/upstream/2.3.3/src/ia32/register-allocator-ia32.h +43 -0
  191. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.cc +30 -0
  192. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.h +62 -0
  193. data/ext/v8/upstream/2.3.3/src/ia32/stub-cache-ia32.cc +2750 -0
  194. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.cc +1334 -0
  195. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.h +627 -0
  196. data/ext/v8/upstream/2.3.3/src/ic-inl.h +120 -0
  197. data/ext/v8/upstream/2.3.3/src/ic.cc +1827 -0
  198. data/ext/v8/upstream/2.3.3/src/ic.h +515 -0
  199. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.cc +646 -0
  200. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.h +48 -0
  201. data/ext/v8/upstream/2.3.3/src/json.js +268 -0
  202. data/ext/v8/upstream/2.3.3/src/jsregexp.cc +5283 -0
  203. data/ext/v8/upstream/2.3.3/src/jsregexp.h +1463 -0
  204. data/ext/v8/upstream/2.3.3/src/jump-target-heavy-inl.h +51 -0
  205. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.cc +429 -0
  206. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.h +244 -0
  207. data/ext/v8/upstream/2.3.3/src/jump-target-inl.h +48 -0
  208. data/ext/v8/upstream/2.3.3/src/jump-target-light-inl.h +56 -0
  209. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
  210. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
  211. data/ext/v8/upstream/2.3.3/src/jump-target.cc +91 -0
  212. data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
  213. data/ext/v8/upstream/2.3.3/src/list-inl.h +166 -0
  214. data/ext/v8/upstream/2.3.3/src/list.h +159 -0
  215. data/ext/v8/upstream/2.3.3/src/liveedit-debugger.js +1057 -0
  216. data/ext/v8/upstream/2.3.3/src/liveedit.cc +1480 -0
  217. data/ext/v8/upstream/2.3.3/src/liveedit.h +170 -0
  218. data/ext/v8/upstream/2.3.3/src/log-inl.h +59 -0
  219. data/ext/v8/upstream/2.3.3/src/log-utils.cc +497 -0
  220. data/ext/v8/upstream/2.3.3/src/log-utils.h +289 -0
  221. data/ext/v8/upstream/2.3.3/src/log.cc +1561 -0
  222. data/ext/v8/upstream/2.3.3/src/log.h +384 -0
  223. data/ext/v8/upstream/2.3.3/src/macro-assembler.h +86 -0
  224. data/ext/v8/upstream/2.3.3/src/macros.py +177 -0
  225. data/ext/v8/upstream/2.3.3/src/mark-compact.cc +2330 -0
  226. data/ext/v8/upstream/2.3.3/src/mark-compact.h +451 -0
  227. data/ext/v8/upstream/2.3.3/src/math.js +264 -0
  228. data/ext/v8/upstream/2.3.3/src/memory.h +74 -0
  229. data/ext/v8/upstream/2.3.3/src/messages.cc +183 -0
  230. data/ext/v8/upstream/2.3.3/src/messages.h +113 -0
  231. data/ext/v8/upstream/2.3.3/src/messages.js +982 -0
  232. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips-inl.h +215 -0
  233. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.cc +1219 -0
  234. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.h +668 -0
  235. data/ext/v8/upstream/2.3.3/src/mips/builtins-mips.cc +205 -0
  236. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips-inl.h +70 -0
  237. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.cc +1437 -0
  238. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.h +434 -0
  239. data/ext/v8/upstream/2.3.3/src/mips/constants-mips.cc +328 -0
  240. data/ext/v8/upstream/2.3.3/src/mips/constants-mips.h +525 -0
  241. data/ext/v8/upstream/2.3.3/src/mips/cpu-mips.cc +73 -0
  242. data/ext/v8/upstream/2.3.3/src/mips/debug-mips.cc +131 -0
  243. data/ext/v8/upstream/2.3.3/src/mips/disasm-mips.cc +787 -0
  244. data/ext/v8/upstream/2.3.3/src/mips/fast-codegen-mips.cc +77 -0
  245. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.cc +102 -0
  246. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.h +164 -0
  247. data/ext/v8/upstream/2.3.3/src/mips/full-codegen-mips.cc +277 -0
  248. data/ext/v8/upstream/2.3.3/src/mips/ic-mips.cc +220 -0
  249. data/ext/v8/upstream/2.3.3/src/mips/jump-target-mips.cc +175 -0
  250. data/ext/v8/upstream/2.3.3/src/mips/macro-assembler-mips.cc +1326 -0
  251. data/ext/v8/upstream/2.3.3/src/mips/macro-assembler-mips.h +461 -0
  252. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips-inl.h +137 -0
  253. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips.cc +63 -0
  254. data/ext/v8/upstream/2.3.3/src/mips/register-allocator-mips.h +46 -0
  255. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.cc +1651 -0
  256. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.h +311 -0
  257. data/ext/v8/upstream/2.3.3/src/mips/stub-cache-mips.cc +403 -0
  258. data/ext/v8/upstream/2.3.3/src/mips/virtual-frame-mips.cc +319 -0
  259. data/ext/v8/upstream/2.3.3/src/mips/virtual-frame-mips.h +548 -0
  260. data/ext/v8/upstream/2.3.3/src/mirror-debugger.js +2380 -0
  261. data/ext/v8/upstream/2.3.3/src/mksnapshot.cc +256 -0
  262. data/ext/v8/upstream/2.3.3/src/natives.h +63 -0
  263. data/ext/v8/upstream/2.3.3/src/objects-debug.cc +1366 -0
  264. data/ext/v8/upstream/2.3.3/src/objects-inl.h +3333 -0
  265. data/ext/v8/upstream/2.3.3/src/objects.cc +8820 -0
  266. data/ext/v8/upstream/2.3.3/src/objects.h +5373 -0
  267. data/ext/v8/upstream/2.3.3/src/oprofile-agent.cc +108 -0
  268. data/ext/v8/upstream/2.3.3/src/oprofile-agent.h +77 -0
  269. data/ext/v8/upstream/2.3.3/src/parser.cc +5207 -0
  270. data/ext/v8/upstream/2.3.3/src/parser.h +197 -0
  271. data/ext/v8/upstream/2.3.3/src/platform-freebsd.cc +667 -0
  272. data/ext/v8/upstream/2.3.3/src/platform-linux.cc +862 -0
  273. data/ext/v8/upstream/2.3.3/src/platform-macos.cc +665 -0
  274. data/ext/v8/upstream/2.3.3/src/platform-nullos.cc +454 -0
  275. data/ext/v8/upstream/2.3.3/src/platform-openbsd.cc +622 -0
  276. data/ext/v8/upstream/2.3.3/src/platform-posix.cc +362 -0
  277. data/ext/v8/upstream/2.3.3/src/platform-solaris.cc +653 -0
  278. data/ext/v8/upstream/2.3.3/src/platform-win32.cc +1911 -0
  279. data/ext/v8/upstream/2.3.3/src/platform.h +577 -0
  280. data/ext/v8/upstream/2.3.3/src/powers-ten.h +2461 -0
  281. data/ext/v8/upstream/2.3.3/src/prettyprinter.cc +1531 -0
  282. data/ext/v8/upstream/2.3.3/src/prettyprinter.h +221 -0
  283. data/ext/v8/upstream/2.3.3/src/profile-generator-inl.h +148 -0
  284. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
  285. data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
  286. data/ext/v8/upstream/2.3.3/src/property.cc +96 -0
  287. data/ext/v8/upstream/2.3.3/src/property.h +315 -0
  288. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  289. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.cc +464 -0
  290. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.h +141 -0
  291. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.cc +356 -0
  292. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.h +103 -0
  293. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.cc +261 -0
  294. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.h +228 -0
  295. data/ext/v8/upstream/2.3.3/src/regexp-stack.cc +103 -0
  296. data/ext/v8/upstream/2.3.3/src/regexp-stack.h +123 -0
  297. data/ext/v8/upstream/2.3.3/src/regexp.js +549 -0
  298. data/ext/v8/upstream/2.3.3/src/register-allocator-inl.h +141 -0
  299. data/ext/v8/upstream/2.3.3/src/register-allocator.cc +104 -0
  300. data/ext/v8/upstream/2.3.3/src/register-allocator.h +320 -0
  301. data/ext/v8/upstream/2.3.3/src/rewriter.cc +1038 -0
  302. data/ext/v8/upstream/2.3.3/src/rewriter.h +54 -0
  303. data/ext/v8/upstream/2.3.3/src/runtime.cc +10599 -0
  304. data/ext/v8/upstream/2.3.3/src/runtime.h +459 -0
  305. data/ext/v8/upstream/2.3.3/src/runtime.js +629 -0
  306. data/ext/v8/upstream/2.3.3/src/scanner.cc +1346 -0
  307. data/ext/v8/upstream/2.3.3/src/scanner.h +503 -0
  308. data/ext/v8/upstream/2.3.3/src/scopeinfo.cc +637 -0
  309. data/ext/v8/upstream/2.3.3/src/scopeinfo.h +233 -0
  310. data/ext/v8/upstream/2.3.3/src/scopes.cc +962 -0
  311. data/ext/v8/upstream/2.3.3/src/scopes.h +400 -0
  312. data/ext/v8/upstream/2.3.3/src/serialize.cc +1461 -0
  313. data/ext/v8/upstream/2.3.3/src/serialize.h +581 -0
  314. data/ext/v8/upstream/2.3.3/src/shell.h +55 -0
  315. data/ext/v8/upstream/2.3.3/src/simulator.h +43 -0
  316. data/ext/v8/upstream/2.3.3/src/smart-pointer.h +109 -0
  317. data/ext/v8/upstream/2.3.3/src/snapshot-common.cc +82 -0
  318. data/ext/v8/upstream/2.3.3/src/snapshot-empty.cc +50 -0
  319. data/ext/v8/upstream/2.3.3/src/snapshot.h +71 -0
  320. data/ext/v8/upstream/2.3.3/src/spaces-inl.h +483 -0
  321. data/ext/v8/upstream/2.3.3/src/spaces.cc +2901 -0
  322. data/ext/v8/upstream/2.3.3/src/spaces.h +2197 -0
  323. data/ext/v8/upstream/2.3.3/src/splay-tree-inl.h +310 -0
  324. data/ext/v8/upstream/2.3.3/src/splay-tree.h +203 -0
  325. data/ext/v8/upstream/2.3.3/src/string-stream.cc +584 -0
  326. data/ext/v8/upstream/2.3.3/src/string-stream.h +189 -0
  327. data/ext/v8/upstream/2.3.3/src/string.js +1006 -0
  328. data/ext/v8/upstream/2.3.3/src/stub-cache.cc +1379 -0
  329. data/ext/v8/upstream/2.3.3/src/stub-cache.h +756 -0
  330. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/COPYING +15 -0
  331. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/dtoa.c +3334 -0
  332. data/ext/v8/upstream/2.3.3/src/third_party/valgrind/valgrind.h +3925 -0
  333. data/ext/v8/upstream/2.3.3/src/token.cc +56 -0
  334. data/ext/v8/upstream/2.3.3/src/token.h +270 -0
  335. data/ext/v8/upstream/2.3.3/src/top.cc +1067 -0
  336. data/ext/v8/upstream/2.3.3/src/top.h +463 -0
  337. data/ext/v8/upstream/2.3.3/src/type-info.cc +53 -0
  338. data/ext/v8/upstream/2.3.3/src/type-info.h +244 -0
  339. data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
  340. data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
  341. data/ext/v8/upstream/2.3.3/src/unicode-inl.h +238 -0
  342. data/ext/v8/upstream/2.3.3/src/unicode.cc +749 -0
  343. data/ext/v8/upstream/2.3.3/src/unicode.h +279 -0
  344. data/ext/v8/upstream/2.3.3/src/uri.js +415 -0
  345. data/ext/v8/upstream/2.3.3/src/utils.cc +285 -0
  346. data/ext/v8/upstream/2.3.3/src/utils.h +745 -0
  347. data/ext/v8/upstream/2.3.3/src/v8-counters.cc +55 -0
  348. data/ext/v8/upstream/2.3.3/src/v8-counters.h +250 -0
  349. data/ext/v8/upstream/2.3.3/src/v8.cc +228 -0
  350. data/ext/v8/upstream/2.3.3/src/v8.h +121 -0
  351. data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
  352. data/ext/v8/upstream/2.3.3/src/v8natives.js +1188 -0
  353. data/ext/v8/upstream/2.3.3/src/v8threads.cc +461 -0
  354. data/ext/v8/upstream/2.3.3/src/v8threads.h +159 -0
  355. data/ext/v8/upstream/2.3.3/src/variables.cc +119 -0
  356. data/ext/v8/upstream/2.3.3/src/variables.h +205 -0
  357. data/ext/v8/upstream/2.3.3/src/version.cc +88 -0
  358. data/ext/v8/upstream/2.3.3/src/version.h +64 -0
  359. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy-inl.h +192 -0
  360. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy.cc +312 -0
  361. data/ext/v8/upstream/2.3.3/src/virtual-frame-inl.h +39 -0
  362. data/ext/v8/upstream/2.3.3/src/virtual-frame-light-inl.h +170 -0
  363. data/ext/v8/upstream/2.3.3/src/virtual-frame-light.cc +52 -0
  364. data/ext/v8/upstream/2.3.3/src/virtual-frame.cc +49 -0
  365. data/ext/v8/upstream/2.3.3/src/virtual-frame.h +46 -0
  366. data/ext/v8/upstream/2.3.3/src/vm-state-inl.h +137 -0
  367. data/ext/v8/upstream/2.3.3/src/vm-state.cc +39 -0
  368. data/ext/v8/upstream/2.3.3/src/vm-state.h +77 -0
  369. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64-inl.h +400 -0
  370. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.cc +2963 -0
  371. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.h +1438 -0
  372. data/ext/v8/upstream/2.3.3/src/x64/builtins-x64.cc +1296 -0
  373. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64-inl.h +46 -0
  374. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.cc +12491 -0
  375. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.h +1090 -0
  376. data/ext/v8/upstream/2.3.3/src/x64/cpu-x64.cc +83 -0
  377. data/ext/v8/upstream/2.3.3/src/x64/debug-x64.cc +267 -0
  378. data/ext/v8/upstream/2.3.3/src/x64/disasm-x64.cc +1696 -0
  379. data/ext/v8/upstream/2.3.3/src/x64/fast-codegen-x64.cc +250 -0
  380. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.cc +113 -0
  381. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.h +125 -0
  382. data/ext/v8/upstream/2.3.3/src/x64/full-codegen-x64.cc +3270 -0
  383. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
  384. data/ext/v8/upstream/2.3.3/src/x64/jump-target-x64.cc +437 -0
  385. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.cc +2793 -0
  386. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.h +916 -0
  387. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.cc +1374 -0
  388. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.h +277 -0
  389. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64-inl.h +87 -0
  390. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64.cc +91 -0
  391. data/ext/v8/upstream/2.3.3/src/x64/register-allocator-x64.h +43 -0
  392. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.cc +27 -0
  393. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.h +63 -0
  394. data/ext/v8/upstream/2.3.3/src/x64/stub-cache-x64.cc +2560 -0
  395. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.cc +1264 -0
  396. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.h +590 -0
  397. data/ext/v8/upstream/2.3.3/src/zone-inl.h +82 -0
  398. data/ext/v8/upstream/2.3.3/src/zone.cc +194 -0
  399. data/ext/v8/upstream/2.3.3/src/zone.h +221 -0
  400. data/ext/v8/upstream/2.3.3/tools/codemap.js +270 -0
  401. data/ext/v8/upstream/2.3.3/tools/consarray.js +93 -0
  402. data/ext/v8/upstream/2.3.3/tools/csvparser.js +83 -0
  403. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
  404. data/ext/v8/upstream/2.3.3/tools/generate-ten-powers.scm +286 -0
  405. data/ext/v8/upstream/2.3.3/tools/gyp/v8.gyp +749 -0
  406. data/ext/v8/upstream/2.3.3/tools/js2c.py +380 -0
  407. data/ext/v8/upstream/2.3.3/tools/jsmin.py +280 -0
  408. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor +33 -0
  409. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor.py +78 -0
  410. data/ext/v8/upstream/2.3.3/tools/logreader.js +338 -0
  411. data/ext/v8/upstream/2.3.3/tools/mac-nm +18 -0
  412. data/ext/v8/upstream/2.3.3/tools/mac-tick-processor +6 -0
  413. data/ext/v8/upstream/2.3.3/tools/oprofile/annotate +7 -0
  414. data/ext/v8/upstream/2.3.3/tools/oprofile/common +19 -0
  415. data/ext/v8/upstream/2.3.3/tools/oprofile/dump +7 -0
  416. data/ext/v8/upstream/2.3.3/tools/oprofile/report +7 -0
  417. data/ext/v8/upstream/2.3.3/tools/oprofile/reset +7 -0
  418. data/ext/v8/upstream/2.3.3/tools/oprofile/run +14 -0
  419. data/ext/v8/upstream/2.3.3/tools/oprofile/shutdown +7 -0
  420. data/ext/v8/upstream/2.3.3/tools/oprofile/start +7 -0
  421. data/ext/v8/upstream/2.3.3/tools/presubmit.py +299 -0
  422. data/ext/v8/upstream/2.3.3/tools/process-heap-prof.py +120 -0
  423. data/ext/v8/upstream/2.3.3/tools/profile.js +691 -0
  424. data/ext/v8/upstream/2.3.3/tools/profile_view.js +224 -0
  425. data/ext/v8/upstream/2.3.3/tools/run-valgrind.py +77 -0
  426. data/ext/v8/upstream/2.3.3/tools/splaytree.js +322 -0
  427. data/ext/v8/upstream/2.3.3/tools/splaytree.py +226 -0
  428. data/ext/v8/upstream/2.3.3/tools/stats-viewer.py +468 -0
  429. data/ext/v8/upstream/2.3.3/tools/tickprocessor-driver.js +59 -0
  430. data/ext/v8/upstream/2.3.3/tools/tickprocessor.js +862 -0
  431. data/ext/v8/upstream/2.3.3/tools/tickprocessor.py +571 -0
  432. data/ext/v8/upstream/2.3.3/tools/utils.py +88 -0
  433. data/ext/v8/upstream/2.3.3/tools/visual_studio/README.txt +71 -0
  434. data/ext/v8/upstream/2.3.3/tools/visual_studio/arm.vsprops +14 -0
  435. data/ext/v8/upstream/2.3.3/tools/visual_studio/common.vsprops +34 -0
  436. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8.vcproj +193 -0
  437. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8_arm.vcproj +193 -0
  438. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8_x64.vcproj +209 -0
  439. data/ext/v8/upstream/2.3.3/tools/visual_studio/d8js2c.cmd +6 -0
  440. data/ext/v8/upstream/2.3.3/tools/visual_studio/debug.vsprops +17 -0
  441. data/ext/v8/upstream/2.3.3/tools/visual_studio/ia32.vsprops +17 -0
  442. data/ext/v8/upstream/2.3.3/tools/visual_studio/js2c.cmd +6 -0
  443. data/ext/v8/upstream/2.3.3/tools/visual_studio/release.vsprops +24 -0
  444. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8.sln +101 -0
  445. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8.vcproj +227 -0
  446. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_arm.sln +74 -0
  447. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_arm.vcproj +227 -0
  448. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base.vcproj +1143 -0
  449. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_arm.vcproj +1115 -0
  450. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_x64.vcproj +1096 -0
  451. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest.vcproj +265 -0
  452. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest_arm.vcproj +249 -0
  453. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  454. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_mksnapshot.vcproj +145 -0
  455. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_mksnapshot_x64.vcproj +145 -0
  456. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample.vcproj +145 -0
  457. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample_arm.vcproj +145 -0
  458. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_process_sample_x64.vcproj +161 -0
  459. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample.vcproj +145 -0
  460. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -0
  461. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_x64.vcproj +161 -0
  462. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot.vcproj +142 -0
  463. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  464. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  465. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  466. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_x64.sln +101 -0
  467. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_x64.vcproj +227 -0
  468. data/ext/v8/upstream/2.3.3/tools/visual_studio/x64.vsprops +17 -0
  469. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.bat +29 -0
  470. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.py +137 -0
  471. data/ext/v8/upstream/Makefile +38 -0
  472. data/ext/v8/upstream/build/scons/CHANGES.txt +5183 -0
  473. data/ext/v8/upstream/build/scons/LICENSE.txt +20 -0
  474. data/ext/v8/upstream/build/scons/MANIFEST +202 -0
  475. data/ext/v8/upstream/build/scons/PKG-INFO +13 -0
  476. data/ext/v8/upstream/build/scons/README.txt +273 -0
  477. data/ext/v8/upstream/build/scons/RELEASE.txt +1040 -0
  478. data/ext/v8/upstream/build/scons/build/lib/SCons/Action.py +1256 -0
  479. data/ext/v8/upstream/build/scons/build/lib/SCons/Builder.py +868 -0
  480. data/ext/v8/upstream/build/scons/build/lib/SCons/CacheDir.py +217 -0
  481. data/ext/v8/upstream/build/scons/build/lib/SCons/Conftest.py +794 -0
  482. data/ext/v8/upstream/build/scons/build/lib/SCons/Debug.py +237 -0
  483. data/ext/v8/upstream/build/scons/build/lib/SCons/Defaults.py +485 -0
  484. data/ext/v8/upstream/build/scons/build/lib/SCons/Environment.py +2327 -0
  485. data/ext/v8/upstream/build/scons/build/lib/SCons/Errors.py +207 -0
  486. data/ext/v8/upstream/build/scons/build/lib/SCons/Executor.py +636 -0
  487. data/ext/v8/upstream/build/scons/build/lib/SCons/Job.py +435 -0
  488. data/ext/v8/upstream/build/scons/build/lib/SCons/Memoize.py +292 -0
  489. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Alias.py +153 -0
  490. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/FS.py +3220 -0
  491. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Python.py +128 -0
  492. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/__init__.py +1341 -0
  493. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/BoolOption.py +50 -0
  494. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/EnumOption.py +50 -0
  495. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/ListOption.py +50 -0
  496. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PackageOption.py +50 -0
  497. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PathOption.py +76 -0
  498. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/__init__.py +74 -0
  499. data/ext/v8/upstream/build/scons/build/lib/SCons/PathList.py +232 -0
  500. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/__init__.py +236 -0
  501. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/aix.py +70 -0
  502. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/cygwin.py +55 -0
  503. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/darwin.py +46 -0
  504. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/hpux.py +46 -0
  505. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/irix.py +44 -0
  506. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/os2.py +58 -0
  507. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/posix.py +264 -0
  508. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/sunos.py +50 -0
  509. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/win32.py +386 -0
  510. data/ext/v8/upstream/build/scons/build/lib/SCons/SConf.py +1038 -0
  511. data/ext/v8/upstream/build/scons/build/lib/SCons/SConsign.py +381 -0
  512. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/C.py +132 -0
  513. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/D.py +74 -0
  514. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Dir.py +111 -0
  515. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Fortran.py +320 -0
  516. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/IDL.py +48 -0
  517. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/LaTeX.py +378 -0
  518. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Prog.py +103 -0
  519. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/RC.py +55 -0
  520. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/__init__.py +415 -0
  521. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Interactive.py +386 -0
  522. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Main.py +1360 -0
  523. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConsOptions.py +944 -0
  524. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConscript.py +642 -0
  525. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/__init__.py +414 -0
  526. data/ext/v8/upstream/build/scons/build/lib/SCons/Sig.py +63 -0
  527. data/ext/v8/upstream/build/scons/build/lib/SCons/Subst.py +911 -0
  528. data/ext/v8/upstream/build/scons/build/lib/SCons/Taskmaster.py +1030 -0
  529. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/386asm.py +61 -0
  530. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/BitKeeper.py +65 -0
  531. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/CVS.py +73 -0
  532. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/FortranCommon.py +247 -0
  533. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/JavaCommon.py +324 -0
  534. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/__init__.py +56 -0
  535. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/arch.py +61 -0
  536. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/common.py +210 -0
  537. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/netframework.py +84 -0
  538. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/sdk.py +321 -0
  539. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vc.py +367 -0
  540. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vs.py +497 -0
  541. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Perforce.py +104 -0
  542. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/PharLapCommon.py +138 -0
  543. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/RCS.py +64 -0
  544. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/SCCS.py +64 -0
  545. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Subversion.py +71 -0
  546. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/__init__.py +675 -0
  547. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixc++.py +82 -0
  548. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixcc.py +74 -0
  549. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixf77.py +80 -0
  550. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixlink.py +76 -0
  551. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/applelink.py +71 -0
  552. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ar.py +63 -0
  553. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/as.py +78 -0
  554. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/bcc32.py +82 -0
  555. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/c++.py +99 -0
  556. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cc.py +114 -0
  557. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cvf.py +58 -0
  558. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/default.py +50 -0
  559. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dmd.py +224 -0
  560. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvi.py +64 -0
  561. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvipdf.py +125 -0
  562. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvips.py +94 -0
  563. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f77.py +62 -0
  564. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f90.py +62 -0
  565. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f95.py +63 -0
  566. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/filesystem.py +98 -0
  567. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/fortran.py +63 -0
  568. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g++.py +90 -0
  569. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g77.py +73 -0
  570. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gas.py +53 -0
  571. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gcc.py +80 -0
  572. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gfortran.py +64 -0
  573. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gnulink.py +63 -0
  574. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gs.py +81 -0
  575. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpc++.py +85 -0
  576. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpcc.py +53 -0
  577. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hplink.py +77 -0
  578. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icc.py +59 -0
  579. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icl.py +52 -0
  580. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifl.py +72 -0
  581. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifort.py +90 -0
  582. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink.py +59 -0
  583. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink32.py +60 -0
  584. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/install.py +229 -0
  585. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/intelc.py +490 -0
  586. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ipkg.py +71 -0
  587. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/jar.py +110 -0
  588. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javac.py +234 -0
  589. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javah.py +138 -0
  590. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/latex.py +79 -0
  591. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/lex.py +99 -0
  592. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/link.py +121 -0
  593. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/linkloc.py +112 -0
  594. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/m4.py +63 -0
  595. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/masm.py +77 -0
  596. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/midl.py +90 -0
  597. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mingw.py +159 -0
  598. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslib.py +64 -0
  599. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslink.py +266 -0
  600. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mssdk.py +50 -0
  601. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvc.py +269 -0
  602. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvs.py +1439 -0
  603. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwcc.py +208 -0
  604. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwld.py +107 -0
  605. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/nasm.py +72 -0
  606. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/__init__.py +314 -0
  607. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/ipk.py +185 -0
  608. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/msi.py +526 -0
  609. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/rpm.py +367 -0
  610. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_tarbz2.py +43 -0
  611. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_targz.py +43 -0
  612. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_zip.py +43 -0
  613. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/tarbz2.py +44 -0
  614. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/targz.py +44 -0
  615. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/zip.py +44 -0
  616. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdf.py +78 -0
  617. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdflatex.py +83 -0
  618. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdftex.py +108 -0
  619. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/qt.py +336 -0
  620. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rmic.py +121 -0
  621. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpcgen.py +70 -0
  622. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpm.py +132 -0
  623. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgiar.py +68 -0
  624. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgic++.py +58 -0
  625. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgicc.py +53 -0
  626. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgilink.py +63 -0
  627. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunar.py +67 -0
  628. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunc++.py +142 -0
  629. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/suncc.py +58 -0
  630. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf77.py +63 -0
  631. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf90.py +64 -0
  632. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf95.py +64 -0
  633. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunlink.py +77 -0
  634. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/swig.py +186 -0
  635. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tar.py +73 -0
  636. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tex.py +805 -0
  637. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/textfile.py +175 -0
  638. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tlib.py +53 -0
  639. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/wix.py +100 -0
  640. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/yacc.py +131 -0
  641. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/zip.py +100 -0
  642. data/ext/v8/upstream/build/scons/build/lib/SCons/Util.py +1645 -0
  643. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/BoolVariable.py +91 -0
  644. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/EnumVariable.py +107 -0
  645. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/ListVariable.py +139 -0
  646. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PackageVariable.py +109 -0
  647. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PathVariable.py +147 -0
  648. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/__init__.py +317 -0
  649. data/ext/v8/upstream/build/scons/build/lib/SCons/Warnings.py +228 -0
  650. data/ext/v8/upstream/build/scons/build/lib/SCons/__init__.py +49 -0
  651. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/__init__.py +302 -0
  652. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_UserString.py +98 -0
  653. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_hashlib.py +91 -0
  654. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_itertools.py +124 -0
  655. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_optparse.py +1725 -0
  656. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets.py +583 -0
  657. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets15.py +176 -0
  658. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_shlex.py +325 -0
  659. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_subprocess.py +1296 -0
  660. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_textwrap.py +382 -0
  661. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/builtins.py +187 -0
  662. data/ext/v8/upstream/build/scons/build/lib/SCons/cpp.py +598 -0
  663. data/ext/v8/upstream/build/scons/build/lib/SCons/dblite.py +248 -0
  664. data/ext/v8/upstream/build/scons/build/lib/SCons/exitfuncs.py +77 -0
  665. data/ext/v8/upstream/build/scons/build/scripts/scons +184 -0
  666. data/ext/v8/upstream/build/scons/build/scripts/scons-time +1529 -0
  667. data/ext/v8/upstream/build/scons/build/scripts/scons.bat +31 -0
  668. data/ext/v8/upstream/build/scons/build/scripts/sconsign +508 -0
  669. data/ext/v8/upstream/build/scons/engine/SCons/Action.py +1256 -0
  670. data/ext/v8/upstream/build/scons/engine/SCons/Builder.py +868 -0
  671. data/ext/v8/upstream/build/scons/engine/SCons/CacheDir.py +217 -0
  672. data/ext/v8/upstream/build/scons/engine/SCons/Conftest.py +794 -0
  673. data/ext/v8/upstream/build/scons/engine/SCons/Debug.py +237 -0
  674. data/ext/v8/upstream/build/scons/engine/SCons/Defaults.py +485 -0
  675. data/ext/v8/upstream/build/scons/engine/SCons/Environment.py +2327 -0
  676. data/ext/v8/upstream/build/scons/engine/SCons/Errors.py +207 -0
  677. data/ext/v8/upstream/build/scons/engine/SCons/Executor.py +636 -0
  678. data/ext/v8/upstream/build/scons/engine/SCons/Job.py +435 -0
  679. data/ext/v8/upstream/build/scons/engine/SCons/Memoize.py +292 -0
  680. data/ext/v8/upstream/build/scons/engine/SCons/Node/Alias.py +153 -0
  681. data/ext/v8/upstream/build/scons/engine/SCons/Node/FS.py +3220 -0
  682. data/ext/v8/upstream/build/scons/engine/SCons/Node/Python.py +128 -0
  683. data/ext/v8/upstream/build/scons/engine/SCons/Node/__init__.py +1341 -0
  684. data/ext/v8/upstream/build/scons/engine/SCons/Options/BoolOption.py +50 -0
  685. data/ext/v8/upstream/build/scons/engine/SCons/Options/EnumOption.py +50 -0
  686. data/ext/v8/upstream/build/scons/engine/SCons/Options/ListOption.py +50 -0
  687. data/ext/v8/upstream/build/scons/engine/SCons/Options/PackageOption.py +50 -0
  688. data/ext/v8/upstream/build/scons/engine/SCons/Options/PathOption.py +76 -0
  689. data/ext/v8/upstream/build/scons/engine/SCons/Options/__init__.py +74 -0
  690. data/ext/v8/upstream/build/scons/engine/SCons/PathList.py +232 -0
  691. data/ext/v8/upstream/build/scons/engine/SCons/Platform/__init__.py +236 -0
  692. data/ext/v8/upstream/build/scons/engine/SCons/Platform/aix.py +70 -0
  693. data/ext/v8/upstream/build/scons/engine/SCons/Platform/cygwin.py +55 -0
  694. data/ext/v8/upstream/build/scons/engine/SCons/Platform/darwin.py +46 -0
  695. data/ext/v8/upstream/build/scons/engine/SCons/Platform/hpux.py +46 -0
  696. data/ext/v8/upstream/build/scons/engine/SCons/Platform/irix.py +44 -0
  697. data/ext/v8/upstream/build/scons/engine/SCons/Platform/os2.py +58 -0
  698. data/ext/v8/upstream/build/scons/engine/SCons/Platform/posix.py +264 -0
  699. data/ext/v8/upstream/build/scons/engine/SCons/Platform/sunos.py +50 -0
  700. data/ext/v8/upstream/build/scons/engine/SCons/Platform/win32.py +386 -0
  701. data/ext/v8/upstream/build/scons/engine/SCons/SConf.py +1038 -0
  702. data/ext/v8/upstream/build/scons/engine/SCons/SConsign.py +381 -0
  703. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/C.py +132 -0
  704. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/D.py +74 -0
  705. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Dir.py +111 -0
  706. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Fortran.py +320 -0
  707. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/IDL.py +48 -0
  708. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  709. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Prog.py +103 -0
  710. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/RC.py +55 -0
  711. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/__init__.py +415 -0
  712. data/ext/v8/upstream/build/scons/engine/SCons/Script/Interactive.py +386 -0
  713. data/ext/v8/upstream/build/scons/engine/SCons/Script/Main.py +1360 -0
  714. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConsOptions.py +944 -0
  715. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConscript.py +642 -0
  716. data/ext/v8/upstream/build/scons/engine/SCons/Script/__init__.py +414 -0
  717. data/ext/v8/upstream/build/scons/engine/SCons/Sig.py +63 -0
  718. data/ext/v8/upstream/build/scons/engine/SCons/Subst.py +911 -0
  719. data/ext/v8/upstream/build/scons/engine/SCons/Taskmaster.py +1030 -0
  720. data/ext/v8/upstream/build/scons/engine/SCons/Tool/386asm.py +61 -0
  721. data/ext/v8/upstream/build/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  722. data/ext/v8/upstream/build/scons/engine/SCons/Tool/CVS.py +73 -0
  723. data/ext/v8/upstream/build/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  724. data/ext/v8/upstream/build/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  725. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  726. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  727. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  728. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  729. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  730. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  731. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  732. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Perforce.py +104 -0
  733. data/ext/v8/upstream/build/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  734. data/ext/v8/upstream/build/scons/engine/SCons/Tool/RCS.py +64 -0
  735. data/ext/v8/upstream/build/scons/engine/SCons/Tool/SCCS.py +64 -0
  736. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Subversion.py +71 -0
  737. data/ext/v8/upstream/build/scons/engine/SCons/Tool/__init__.py +675 -0
  738. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixc++.py +82 -0
  739. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixcc.py +74 -0
  740. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixf77.py +80 -0
  741. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixlink.py +76 -0
  742. data/ext/v8/upstream/build/scons/engine/SCons/Tool/applelink.py +71 -0
  743. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ar.py +63 -0
  744. data/ext/v8/upstream/build/scons/engine/SCons/Tool/as.py +78 -0
  745. data/ext/v8/upstream/build/scons/engine/SCons/Tool/bcc32.py +82 -0
  746. data/ext/v8/upstream/build/scons/engine/SCons/Tool/c++.py +99 -0
  747. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cc.py +114 -0
  748. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cvf.py +58 -0
  749. data/ext/v8/upstream/build/scons/engine/SCons/Tool/default.py +50 -0
  750. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dmd.py +224 -0
  751. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvi.py +64 -0
  752. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvipdf.py +125 -0
  753. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvips.py +94 -0
  754. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f77.py +62 -0
  755. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f90.py +62 -0
  756. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f95.py +63 -0
  757. data/ext/v8/upstream/build/scons/engine/SCons/Tool/filesystem.py +98 -0
  758. data/ext/v8/upstream/build/scons/engine/SCons/Tool/fortran.py +63 -0
  759. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g++.py +90 -0
  760. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g77.py +73 -0
  761. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gas.py +53 -0
  762. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gcc.py +80 -0
  763. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gfortran.py +64 -0
  764. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gnulink.py +63 -0
  765. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gs.py +81 -0
  766. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpc++.py +85 -0
  767. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpcc.py +53 -0
  768. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hplink.py +77 -0
  769. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icc.py +59 -0
  770. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icl.py +52 -0
  771. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifl.py +72 -0
  772. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifort.py +90 -0
  773. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink.py +59 -0
  774. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink32.py +60 -0
  775. data/ext/v8/upstream/build/scons/engine/SCons/Tool/install.py +229 -0
  776. data/ext/v8/upstream/build/scons/engine/SCons/Tool/intelc.py +490 -0
  777. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ipkg.py +71 -0
  778. data/ext/v8/upstream/build/scons/engine/SCons/Tool/jar.py +110 -0
  779. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javac.py +234 -0
  780. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javah.py +138 -0
  781. data/ext/v8/upstream/build/scons/engine/SCons/Tool/latex.py +79 -0
  782. data/ext/v8/upstream/build/scons/engine/SCons/Tool/lex.py +99 -0
  783. data/ext/v8/upstream/build/scons/engine/SCons/Tool/link.py +121 -0
  784. data/ext/v8/upstream/build/scons/engine/SCons/Tool/linkloc.py +112 -0
  785. data/ext/v8/upstream/build/scons/engine/SCons/Tool/m4.py +63 -0
  786. data/ext/v8/upstream/build/scons/engine/SCons/Tool/masm.py +77 -0
  787. data/ext/v8/upstream/build/scons/engine/SCons/Tool/midl.py +90 -0
  788. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mingw.py +159 -0
  789. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslib.py +64 -0
  790. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslink.py +266 -0
  791. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mssdk.py +50 -0
  792. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvc.py +269 -0
  793. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvs.py +1439 -0
  794. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwcc.py +208 -0
  795. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwld.py +107 -0
  796. data/ext/v8/upstream/build/scons/engine/SCons/Tool/nasm.py +72 -0
  797. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  798. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  799. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  800. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  801. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  802. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  803. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  804. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  805. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  806. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  807. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdf.py +78 -0
  808. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdflatex.py +83 -0
  809. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdftex.py +108 -0
  810. data/ext/v8/upstream/build/scons/engine/SCons/Tool/qt.py +336 -0
  811. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rmic.py +121 -0
  812. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpcgen.py +70 -0
  813. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpm.py +132 -0
  814. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgiar.py +68 -0
  815. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgic++.py +58 -0
  816. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgicc.py +53 -0
  817. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgilink.py +63 -0
  818. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunar.py +67 -0
  819. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunc++.py +142 -0
  820. data/ext/v8/upstream/build/scons/engine/SCons/Tool/suncc.py +58 -0
  821. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf77.py +63 -0
  822. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf90.py +64 -0
  823. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf95.py +64 -0
  824. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunlink.py +77 -0
  825. data/ext/v8/upstream/build/scons/engine/SCons/Tool/swig.py +186 -0
  826. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tar.py +73 -0
  827. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tex.py +805 -0
  828. data/ext/v8/upstream/build/scons/engine/SCons/Tool/textfile.py +175 -0
  829. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tlib.py +53 -0
  830. data/ext/v8/upstream/build/scons/engine/SCons/Tool/wix.py +100 -0
  831. data/ext/v8/upstream/build/scons/engine/SCons/Tool/yacc.py +131 -0
  832. data/ext/v8/upstream/build/scons/engine/SCons/Tool/zip.py +100 -0
  833. data/ext/v8/upstream/build/scons/engine/SCons/Util.py +1645 -0
  834. data/ext/v8/upstream/build/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  835. data/ext/v8/upstream/build/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  836. data/ext/v8/upstream/build/scons/engine/SCons/Variables/ListVariable.py +139 -0
  837. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  838. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PathVariable.py +147 -0
  839. data/ext/v8/upstream/build/scons/engine/SCons/Variables/__init__.py +317 -0
  840. data/ext/v8/upstream/build/scons/engine/SCons/Warnings.py +228 -0
  841. data/ext/v8/upstream/build/scons/engine/SCons/__init__.py +49 -0
  842. data/ext/v8/upstream/build/scons/engine/SCons/compat/__init__.py +302 -0
  843. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  844. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  845. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  846. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  847. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets.py +583 -0
  848. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  849. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  850. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  851. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  852. data/ext/v8/upstream/build/scons/engine/SCons/compat/builtins.py +187 -0
  853. data/ext/v8/upstream/build/scons/engine/SCons/cpp.py +598 -0
  854. data/ext/v8/upstream/build/scons/engine/SCons/dblite.py +248 -0
  855. data/ext/v8/upstream/build/scons/engine/SCons/exitfuncs.py +77 -0
  856. data/ext/v8/upstream/build/scons/install/bin/scons +184 -0
  857. data/ext/v8/upstream/build/scons/install/bin/scons-1.2.0.d20100117 +184 -0
  858. data/ext/v8/upstream/build/scons/install/bin/scons-time +1529 -0
  859. data/ext/v8/upstream/build/scons/install/bin/scons-time-1.2.0.d20100117 +1529 -0
  860. data/ext/v8/upstream/build/scons/install/bin/sconsign +508 -0
  861. data/ext/v8/upstream/build/scons/install/bin/sconsign-1.2.0.d20100117 +508 -0
  862. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.py +1256 -0
  863. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.pyc +0 -0
  864. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.py +868 -0
  865. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.pyc +0 -0
  866. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.py +217 -0
  867. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.pyc +0 -0
  868. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.py +794 -0
  869. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.pyc +0 -0
  870. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.py +237 -0
  871. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.pyc +0 -0
  872. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.py +485 -0
  873. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.pyc +0 -0
  874. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.py +2327 -0
  875. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.pyc +0 -0
  876. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.py +207 -0
  877. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.pyc +0 -0
  878. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.py +636 -0
  879. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.pyc +0 -0
  880. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.py +435 -0
  881. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.pyc +0 -0
  882. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.py +292 -0
  883. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.pyc +0 -0
  884. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.py +153 -0
  885. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.pyc +0 -0
  886. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.py +3220 -0
  887. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.pyc +0 -0
  888. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.py +128 -0
  889. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.pyc +0 -0
  890. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.py +1341 -0
  891. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.pyc +0 -0
  892. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.py +50 -0
  893. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.pyc +0 -0
  894. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.py +50 -0
  895. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.pyc +0 -0
  896. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.py +50 -0
  897. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.pyc +0 -0
  898. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.py +50 -0
  899. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.pyc +0 -0
  900. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.py +76 -0
  901. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.pyc +0 -0
  902. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.py +74 -0
  903. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.pyc +0 -0
  904. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.py +232 -0
  905. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.pyc +0 -0
  906. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.py +236 -0
  907. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.pyc +0 -0
  908. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.py +70 -0
  909. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.pyc +0 -0
  910. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.py +55 -0
  911. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.pyc +0 -0
  912. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.py +46 -0
  913. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.pyc +0 -0
  914. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.py +46 -0
  915. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.pyc +0 -0
  916. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.py +44 -0
  917. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.pyc +0 -0
  918. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.py +58 -0
  919. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.pyc +0 -0
  920. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.py +264 -0
  921. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.pyc +0 -0
  922. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.py +50 -0
  923. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.pyc +0 -0
  924. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.py +386 -0
  925. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.pyc +0 -0
  926. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.py +1038 -0
  927. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.pyc +0 -0
  928. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.py +381 -0
  929. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.pyc +0 -0
  930. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.py +132 -0
  931. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.pyc +0 -0
  932. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.py +74 -0
  933. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.pyc +0 -0
  934. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.py +111 -0
  935. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.pyc +0 -0
  936. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.py +320 -0
  937. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.pyc +0 -0
  938. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.py +48 -0
  939. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.pyc +0 -0
  940. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.py +378 -0
  941. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.pyc +0 -0
  942. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.py +103 -0
  943. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.pyc +0 -0
  944. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.py +55 -0
  945. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.pyc +0 -0
  946. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.py +415 -0
  947. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.pyc +0 -0
  948. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.py +386 -0
  949. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.pyc +0 -0
  950. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.py +1360 -0
  951. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.pyc +0 -0
  952. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.py +944 -0
  953. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.pyc +0 -0
  954. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.py +642 -0
  955. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.pyc +0 -0
  956. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.py +414 -0
  957. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.pyc +0 -0
  958. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.py +63 -0
  959. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.pyc +0 -0
  960. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.py +911 -0
  961. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.pyc +0 -0
  962. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.py +1030 -0
  963. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.pyc +0 -0
  964. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.py +61 -0
  965. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.pyc +0 -0
  966. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.py +65 -0
  967. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.pyc +0 -0
  968. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.py +73 -0
  969. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.pyc +0 -0
  970. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.py +247 -0
  971. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.pyc +0 -0
  972. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.py +324 -0
  973. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.pyc +0 -0
  974. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.py +56 -0
  975. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.pyc +0 -0
  976. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.py +61 -0
  977. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.pyc +0 -0
  978. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.py +210 -0
  979. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.pyc +0 -0
  980. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.py +84 -0
  981. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.pyc +0 -0
  982. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.py +321 -0
  983. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.pyc +0 -0
  984. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.py +367 -0
  985. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.pyc +0 -0
  986. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.py +497 -0
  987. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.pyc +0 -0
  988. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.py +104 -0
  989. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.pyc +0 -0
  990. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.py +138 -0
  991. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.pyc +0 -0
  992. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.py +64 -0
  993. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.pyc +0 -0
  994. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.py +64 -0
  995. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.pyc +0 -0
  996. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.py +71 -0
  997. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.pyc +0 -0
  998. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.py +675 -0
  999. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.pyc +0 -0
  1000. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.py +82 -0
  1001. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.pyc +0 -0
  1002. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.py +74 -0
  1003. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.pyc +0 -0
  1004. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.py +80 -0
  1005. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.pyc +0 -0
  1006. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.py +76 -0
  1007. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.pyc +0 -0
  1008. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.py +71 -0
  1009. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.pyc +0 -0
  1010. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.py +63 -0
  1011. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.pyc +0 -0
  1012. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.py +78 -0
  1013. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.pyc +0 -0
  1014. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.py +82 -0
  1015. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.pyc +0 -0
  1016. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.py +99 -0
  1017. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.pyc +0 -0
  1018. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.py +114 -0
  1019. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.pyc +0 -0
  1020. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.py +58 -0
  1021. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.pyc +0 -0
  1022. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.py +50 -0
  1023. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.pyc +0 -0
  1024. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.py +224 -0
  1025. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.pyc +0 -0
  1026. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.py +64 -0
  1027. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.pyc +0 -0
  1028. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.py +125 -0
  1029. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.pyc +0 -0
  1030. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.py +94 -0
  1031. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.pyc +0 -0
  1032. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.py +62 -0
  1033. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.pyc +0 -0
  1034. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.py +62 -0
  1035. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.pyc +0 -0
  1036. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.py +63 -0
  1037. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.pyc +0 -0
  1038. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.py +98 -0
  1039. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.pyc +0 -0
  1040. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.py +63 -0
  1041. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.pyc +0 -0
  1042. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.py +90 -0
  1043. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.pyc +0 -0
  1044. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.py +73 -0
  1045. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.pyc +0 -0
  1046. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.py +53 -0
  1047. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.pyc +0 -0
  1048. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.py +80 -0
  1049. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.pyc +0 -0
  1050. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.py +64 -0
  1051. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.pyc +0 -0
  1052. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.py +63 -0
  1053. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.pyc +0 -0
  1054. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.py +81 -0
  1055. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.pyc +0 -0
  1056. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.py +85 -0
  1057. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.pyc +0 -0
  1058. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.py +53 -0
  1059. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.pyc +0 -0
  1060. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.py +77 -0
  1061. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.pyc +0 -0
  1062. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.py +59 -0
  1063. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.pyc +0 -0
  1064. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.py +52 -0
  1065. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.pyc +0 -0
  1066. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.py +72 -0
  1067. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.pyc +0 -0
  1068. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.py +90 -0
  1069. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.pyc +0 -0
  1070. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.py +59 -0
  1071. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.pyc +0 -0
  1072. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.py +60 -0
  1073. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.pyc +0 -0
  1074. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.py +229 -0
  1075. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.pyc +0 -0
  1076. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.py +490 -0
  1077. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.pyc +0 -0
  1078. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.py +71 -0
  1079. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.pyc +0 -0
  1080. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.py +110 -0
  1081. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.pyc +0 -0
  1082. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.py +234 -0
  1083. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.pyc +0 -0
  1084. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.py +138 -0
  1085. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.pyc +0 -0
  1086. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.py +79 -0
  1087. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.pyc +0 -0
  1088. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.py +99 -0
  1089. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.pyc +0 -0
  1090. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.py +121 -0
  1091. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.pyc +0 -0
  1092. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.py +112 -0
  1093. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.pyc +0 -0
  1094. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.py +63 -0
  1095. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.pyc +0 -0
  1096. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.py +77 -0
  1097. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.pyc +0 -0
  1098. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.py +90 -0
  1099. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.pyc +0 -0
  1100. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.py +159 -0
  1101. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.pyc +0 -0
  1102. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.py +64 -0
  1103. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.pyc +0 -0
  1104. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.py +266 -0
  1105. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.pyc +0 -0
  1106. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.py +50 -0
  1107. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.pyc +0 -0
  1108. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.py +269 -0
  1109. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.pyc +0 -0
  1110. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.py +1439 -0
  1111. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.pyc +0 -0
  1112. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.py +208 -0
  1113. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.pyc +0 -0
  1114. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.py +107 -0
  1115. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.pyc +0 -0
  1116. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.py +72 -0
  1117. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.pyc +0 -0
  1118. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.py +314 -0
  1119. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.pyc +0 -0
  1120. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.py +185 -0
  1121. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.pyc +0 -0
  1122. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.py +526 -0
  1123. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.pyc +0 -0
  1124. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.py +367 -0
  1125. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.pyc +0 -0
  1126. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.py +43 -0
  1127. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.pyc +0 -0
  1128. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.py +43 -0
  1129. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.pyc +0 -0
  1130. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.py +43 -0
  1131. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.pyc +0 -0
  1132. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.py +44 -0
  1133. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.pyc +0 -0
  1134. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.py +44 -0
  1135. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.pyc +0 -0
  1136. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.py +44 -0
  1137. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.pyc +0 -0
  1138. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.py +78 -0
  1139. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.pyc +0 -0
  1140. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.py +83 -0
  1141. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.pyc +0 -0
  1142. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.py +108 -0
  1143. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.pyc +0 -0
  1144. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.py +336 -0
  1145. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.pyc +0 -0
  1146. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.py +121 -0
  1147. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.pyc +0 -0
  1148. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.py +70 -0
  1149. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.pyc +0 -0
  1150. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.py +132 -0
  1151. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.pyc +0 -0
  1152. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.py +68 -0
  1153. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.pyc +0 -0
  1154. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.py +58 -0
  1155. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.pyc +0 -0
  1156. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.py +53 -0
  1157. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.pyc +0 -0
  1158. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.py +63 -0
  1159. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.pyc +0 -0
  1160. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.py +67 -0
  1161. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.pyc +0 -0
  1162. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.py +142 -0
  1163. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.pyc +0 -0
  1164. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.py +58 -0
  1165. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.pyc +0 -0
  1166. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.py +63 -0
  1167. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.pyc +0 -0
  1168. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.py +64 -0
  1169. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.pyc +0 -0
  1170. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.py +64 -0
  1171. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.pyc +0 -0
  1172. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.py +77 -0
  1173. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.pyc +0 -0
  1174. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.py +186 -0
  1175. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.pyc +0 -0
  1176. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.py +73 -0
  1177. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.pyc +0 -0
  1178. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.py +805 -0
  1179. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.pyc +0 -0
  1180. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.py +175 -0
  1181. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.pyc +0 -0
  1182. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.py +53 -0
  1183. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.pyc +0 -0
  1184. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.py +100 -0
  1185. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.pyc +0 -0
  1186. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.py +131 -0
  1187. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.pyc +0 -0
  1188. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.py +100 -0
  1189. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.pyc +0 -0
  1190. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.py +1645 -0
  1191. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.pyc +0 -0
  1192. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.py +91 -0
  1193. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.pyc +0 -0
  1194. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.py +107 -0
  1195. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.pyc +0 -0
  1196. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.py +139 -0
  1197. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.pyc +0 -0
  1198. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.py +109 -0
  1199. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.pyc +0 -0
  1200. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.py +147 -0
  1201. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.pyc +0 -0
  1202. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.py +317 -0
  1203. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.pyc +0 -0
  1204. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.py +228 -0
  1205. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.pyc +0 -0
  1206. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.py +49 -0
  1207. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.pyc +0 -0
  1208. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.py +302 -0
  1209. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.pyc +0 -0
  1210. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.py +98 -0
  1211. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.pyc +0 -0
  1212. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.py +91 -0
  1213. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.pyc +0 -0
  1214. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.py +124 -0
  1215. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.pyc +0 -0
  1216. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.py +1725 -0
  1217. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.pyc +0 -0
  1218. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.py +583 -0
  1219. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.pyc +0 -0
  1220. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.py +176 -0
  1221. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.pyc +0 -0
  1222. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.py +325 -0
  1223. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.pyc +0 -0
  1224. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.py +1296 -0
  1225. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.pyc +0 -0
  1226. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.py +382 -0
  1227. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.pyc +0 -0
  1228. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.py +187 -0
  1229. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.pyc +0 -0
  1230. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.py +598 -0
  1231. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.pyc +0 -0
  1232. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.py +248 -0
  1233. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.pyc +0 -0
  1234. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.py +77 -0
  1235. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.pyc +0 -0
  1236. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/scons-1.2.0.d20100117.egg-info +13 -0
  1237. data/ext/v8/upstream/build/scons/install/man/man1/scons-time.1 +1017 -0
  1238. data/ext/v8/upstream/build/scons/install/man/man1/scons.1 +15179 -0
  1239. data/ext/v8/upstream/build/scons/install/man/man1/sconsign.1 +208 -0
  1240. data/ext/v8/upstream/build/scons/os_spawnv_fix.diff +83 -0
  1241. data/ext/v8/upstream/build/scons/scons-time.1 +1017 -0
  1242. data/ext/v8/upstream/build/scons/scons.1 +15179 -0
  1243. data/ext/v8/upstream/build/scons/sconsign.1 +208 -0
  1244. data/ext/v8/upstream/build/scons/script/scons +184 -0
  1245. data/ext/v8/upstream/build/scons/script/scons-time +1529 -0
  1246. data/ext/v8/upstream/build/scons/script/scons.bat +31 -0
  1247. data/ext/v8/upstream/build/scons/script/sconsign +508 -0
  1248. data/ext/v8/upstream/build/scons/setup.cfg +6 -0
  1249. data/ext/v8/upstream/build/scons/setup.py +427 -0
  1250. data/ext/v8/upstream/build/v8/.gitignore +26 -0
  1251. data/ext/v8/upstream/build/v8/AUTHORS +31 -0
  1252. data/ext/v8/upstream/build/v8/ChangeLog +1916 -0
  1253. data/ext/v8/upstream/build/v8/LICENSE +55 -0
  1254. data/ext/v8/upstream/build/v8/SConstruct +1158 -0
  1255. data/ext/v8/upstream/build/v8/SConstruct.orig +1154 -0
  1256. data/ext/v8/upstream/build/v8/include/v8-debug.h +381 -0
  1257. data/ext/v8/upstream/build/v8/include/v8-profiler.h +353 -0
  1258. data/ext/v8/upstream/build/v8/include/v8.h +3616 -0
  1259. data/ext/v8/upstream/build/v8/src/SConscript +330 -0
  1260. data/ext/v8/upstream/build/v8/src/accessors.cc +661 -0
  1261. data/ext/v8/upstream/build/v8/src/accessors.h +114 -0
  1262. data/ext/v8/upstream/build/v8/src/allocation.cc +198 -0
  1263. data/ext/v8/upstream/build/v8/src/allocation.h +169 -0
  1264. data/ext/v8/upstream/build/v8/src/api.cc +4795 -0
  1265. data/ext/v8/upstream/build/v8/src/api.h +485 -0
  1266. data/ext/v8/upstream/build/v8/src/apinatives.js +110 -0
  1267. data/ext/v8/upstream/build/v8/src/apiutils.h +69 -0
  1268. data/ext/v8/upstream/build/v8/src/arguments.h +96 -0
  1269. data/ext/v8/upstream/build/v8/src/arm/assembler-arm-inl.h +305 -0
  1270. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.cc +2580 -0
  1271. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.h +1275 -0
  1272. data/ext/v8/upstream/build/v8/src/arm/builtins-arm.cc +1320 -0
  1273. data/ext/v8/upstream/build/v8/src/arm/codegen-arm-inl.h +48 -0
  1274. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.cc +11398 -0
  1275. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.h +1102 -0
  1276. data/ext/v8/upstream/build/v8/src/arm/constants-arm.cc +154 -0
  1277. data/ext/v8/upstream/build/v8/src/arm/constants-arm.h +388 -0
  1278. data/ext/v8/upstream/build/v8/src/arm/cpu-arm.cc +142 -0
  1279. data/ext/v8/upstream/build/v8/src/arm/debug-arm.cc +309 -0
  1280. data/ext/v8/upstream/build/v8/src/arm/disasm-arm.cc +1459 -0
  1281. data/ext/v8/upstream/build/v8/src/arm/fast-codegen-arm.cc +241 -0
  1282. data/ext/v8/upstream/build/v8/src/arm/frames-arm.cc +123 -0
  1283. data/ext/v8/upstream/build/v8/src/arm/frames-arm.h +162 -0
  1284. data/ext/v8/upstream/build/v8/src/arm/full-codegen-arm.cc +3178 -0
  1285. data/ext/v8/upstream/build/v8/src/arm/ic-arm.cc +2258 -0
  1286. data/ext/v8/upstream/build/v8/src/arm/jump-target-arm.cc +164 -0
  1287. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.cc +1892 -0
  1288. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.h +727 -0
  1289. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.cc +1261 -0
  1290. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.h +266 -0
  1291. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm-inl.h +100 -0
  1292. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.cc +63 -0
  1293. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.h +44 -0
  1294. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.cc +2822 -0
  1295. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.h +361 -0
  1296. data/ext/v8/upstream/build/v8/src/arm/stub-cache-arm.cc +2387 -0
  1297. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm-inl.h +59 -0
  1298. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.cc +834 -0
  1299. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.h +519 -0
  1300. data/ext/v8/upstream/build/v8/src/array.js +1127 -0
  1301. data/ext/v8/upstream/build/v8/src/assembler.cc +801 -0
  1302. data/ext/v8/upstream/build/v8/src/assembler.h +573 -0
  1303. data/ext/v8/upstream/build/v8/src/ast-inl.h +81 -0
  1304. data/ext/v8/upstream/build/v8/src/ast.cc +1152 -0
  1305. data/ext/v8/upstream/build/v8/src/ast.h +2106 -0
  1306. data/ext/v8/upstream/build/v8/src/bootstrapper.cc +1819 -0
  1307. data/ext/v8/upstream/build/v8/src/bootstrapper.h +118 -0
  1308. data/ext/v8/upstream/build/v8/src/builtins.cc +1529 -0
  1309. data/ext/v8/upstream/build/v8/src/builtins.h +263 -0
  1310. data/ext/v8/upstream/build/v8/src/bytecodes-irregexp.h +104 -0
  1311. data/ext/v8/upstream/build/v8/src/cached-powers.h +119 -0
  1312. data/ext/v8/upstream/build/v8/src/char-predicates-inl.h +86 -0
  1313. data/ext/v8/upstream/build/v8/src/char-predicates.h +65 -0
  1314. data/ext/v8/upstream/build/v8/src/checks.cc +100 -0
  1315. data/ext/v8/upstream/build/v8/src/checks.h +310 -0
  1316. data/ext/v8/upstream/build/v8/src/circular-queue-inl.h +53 -0
  1317. data/ext/v8/upstream/build/v8/src/circular-queue.cc +121 -0
  1318. data/ext/v8/upstream/build/v8/src/circular-queue.h +103 -0
  1319. data/ext/v8/upstream/build/v8/src/code-stubs.cc +177 -0
  1320. data/ext/v8/upstream/build/v8/src/code-stubs.h +177 -0
  1321. data/ext/v8/upstream/build/v8/src/code.h +68 -0
  1322. data/ext/v8/upstream/build/v8/src/codegen-inl.h +60 -0
  1323. data/ext/v8/upstream/build/v8/src/codegen.cc +516 -0
  1324. data/ext/v8/upstream/build/v8/src/codegen.h +897 -0
  1325. data/ext/v8/upstream/build/v8/src/compilation-cache.cc +562 -0
  1326. data/ext/v8/upstream/build/v8/src/compilation-cache.h +102 -0
  1327. data/ext/v8/upstream/build/v8/src/compiler.cc +654 -0
  1328. data/ext/v8/upstream/build/v8/src/compiler.h +299 -0
  1329. data/ext/v8/upstream/build/v8/src/contexts.cc +256 -0
  1330. data/ext/v8/upstream/build/v8/src/contexts.h +342 -0
  1331. data/ext/v8/upstream/build/v8/src/conversions-inl.h +110 -0
  1332. data/ext/v8/upstream/build/v8/src/conversions.cc +1119 -0
  1333. data/ext/v8/upstream/build/v8/src/conversions.h +123 -0
  1334. data/ext/v8/upstream/build/v8/src/counters.cc +78 -0
  1335. data/ext/v8/upstream/build/v8/src/counters.h +239 -0
  1336. data/ext/v8/upstream/build/v8/src/cpu-profiler-inl.h +100 -0
  1337. data/ext/v8/upstream/build/v8/src/cpu-profiler.cc +538 -0
  1338. data/ext/v8/upstream/build/v8/src/cpu-profiler.h +285 -0
  1339. data/ext/v8/upstream/build/v8/src/cpu.h +65 -0
  1340. data/ext/v8/upstream/build/v8/src/d8-debug.cc +356 -0
  1341. data/ext/v8/upstream/build/v8/src/d8-debug.h +155 -0
  1342. data/ext/v8/upstream/build/v8/src/d8-posix.cc +693 -0
  1343. data/ext/v8/upstream/build/v8/src/d8-readline.cc +128 -0
  1344. data/ext/v8/upstream/build/v8/src/d8-windows.cc +42 -0
  1345. data/ext/v8/upstream/build/v8/src/d8.cc +783 -0
  1346. data/ext/v8/upstream/build/v8/src/d8.h +227 -0
  1347. data/ext/v8/upstream/build/v8/src/d8.js +1683 -0
  1348. data/ext/v8/upstream/build/v8/src/data-flow.cc +758 -0
  1349. data/ext/v8/upstream/build/v8/src/data-flow.h +278 -0
  1350. data/ext/v8/upstream/build/v8/src/date.js +1059 -0
  1351. data/ext/v8/upstream/build/v8/src/dateparser-inl.h +123 -0
  1352. data/ext/v8/upstream/build/v8/src/dateparser.cc +178 -0
  1353. data/ext/v8/upstream/build/v8/src/dateparser.h +244 -0
  1354. data/ext/v8/upstream/build/v8/src/debug-agent.cc +427 -0
  1355. data/ext/v8/upstream/build/v8/src/debug-agent.h +129 -0
  1356. data/ext/v8/upstream/build/v8/src/debug-debugger.js +2227 -0
  1357. data/ext/v8/upstream/build/v8/src/debug.cc +3005 -0
  1358. data/ext/v8/upstream/build/v8/src/debug.h +993 -0
  1359. data/ext/v8/upstream/build/v8/src/disasm.h +77 -0
  1360. data/ext/v8/upstream/build/v8/src/disassembler.cc +312 -0
  1361. data/ext/v8/upstream/build/v8/src/disassembler.h +56 -0
  1362. data/ext/v8/upstream/build/v8/src/diy-fp.cc +58 -0
  1363. data/ext/v8/upstream/build/v8/src/diy-fp.h +117 -0
  1364. data/ext/v8/upstream/build/v8/src/double.h +169 -0
  1365. data/ext/v8/upstream/build/v8/src/dtoa-config.c +92 -0
  1366. data/ext/v8/upstream/build/v8/src/dtoa.cc +77 -0
  1367. data/ext/v8/upstream/build/v8/src/dtoa.h +81 -0
  1368. data/ext/v8/upstream/build/v8/src/execution.cc +809 -0
  1369. data/ext/v8/upstream/build/v8/src/execution.h +336 -0
  1370. data/ext/v8/upstream/build/v8/src/factory.cc +1003 -0
  1371. data/ext/v8/upstream/build/v8/src/factory.h +410 -0
  1372. data/ext/v8/upstream/build/v8/src/fast-codegen.cc +746 -0
  1373. data/ext/v8/upstream/build/v8/src/fast-codegen.h +161 -0
  1374. data/ext/v8/upstream/build/v8/src/fast-dtoa.cc +505 -0
  1375. data/ext/v8/upstream/build/v8/src/fast-dtoa.h +58 -0
  1376. data/ext/v8/upstream/build/v8/src/fixed-dtoa.cc +405 -0
  1377. data/ext/v8/upstream/build/v8/src/fixed-dtoa.h +55 -0
  1378. data/ext/v8/upstream/build/v8/src/flag-definitions.h +455 -0
  1379. data/ext/v8/upstream/build/v8/src/flags.cc +551 -0
  1380. data/ext/v8/upstream/build/v8/src/flags.h +81 -0
  1381. data/ext/v8/upstream/build/v8/src/flow-graph.cc +763 -0
  1382. data/ext/v8/upstream/build/v8/src/flow-graph.h +180 -0
  1383. data/ext/v8/upstream/build/v8/src/frame-element.cc +42 -0
  1384. data/ext/v8/upstream/build/v8/src/frame-element.h +273 -0
  1385. data/ext/v8/upstream/build/v8/src/frames-inl.h +217 -0
  1386. data/ext/v8/upstream/build/v8/src/frames.cc +826 -0
  1387. data/ext/v8/upstream/build/v8/src/frames.h +682 -0
  1388. data/ext/v8/upstream/build/v8/src/full-codegen.cc +1443 -0
  1389. data/ext/v8/upstream/build/v8/src/full-codegen.h +548 -0
  1390. data/ext/v8/upstream/build/v8/src/func-name-inferrer.cc +76 -0
  1391. data/ext/v8/upstream/build/v8/src/func-name-inferrer.h +135 -0
  1392. data/ext/v8/upstream/build/v8/src/global-handles.cc +520 -0
  1393. data/ext/v8/upstream/build/v8/src/global-handles.h +180 -0
  1394. data/ext/v8/upstream/build/v8/src/globals.h +669 -0
  1395. data/ext/v8/upstream/build/v8/src/handles-inl.h +76 -0
  1396. data/ext/v8/upstream/build/v8/src/handles.cc +825 -0
  1397. data/ext/v8/upstream/build/v8/src/handles.h +393 -0
  1398. data/ext/v8/upstream/build/v8/src/hashmap.cc +226 -0
  1399. data/ext/v8/upstream/build/v8/src/hashmap.h +120 -0
  1400. data/ext/v8/upstream/build/v8/src/heap-inl.h +493 -0
  1401. data/ext/v8/upstream/build/v8/src/heap-profiler.cc +779 -0
  1402. data/ext/v8/upstream/build/v8/src/heap-profiler.h +323 -0
  1403. data/ext/v8/upstream/build/v8/src/heap.cc +4994 -0
  1404. data/ext/v8/upstream/build/v8/src/heap.h +1984 -0
  1405. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32-inl.h +360 -0
  1406. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.cc +2600 -0
  1407. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.h +969 -0
  1408. data/ext/v8/upstream/build/v8/src/ia32/builtins-ia32.cc +1261 -0
  1409. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32-inl.h +46 -0
  1410. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.cc +13968 -0
  1411. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.h +1097 -0
  1412. data/ext/v8/upstream/build/v8/src/ia32/cpu-ia32.cc +83 -0
  1413. data/ext/v8/upstream/build/v8/src/ia32/debug-ia32.cc +309 -0
  1414. data/ext/v8/upstream/build/v8/src/ia32/disasm-ia32.cc +1471 -0
  1415. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.cc +954 -0
  1416. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.h +155 -0
  1417. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.cc +115 -0
  1418. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.h +135 -0
  1419. data/ext/v8/upstream/build/v8/src/ia32/full-codegen-ia32.cc +3281 -0
  1420. data/ext/v8/upstream/build/v8/src/ia32/ic-ia32.cc +1966 -0
  1421. data/ext/v8/upstream/build/v8/src/ia32/jump-target-ia32.cc +437 -0
  1422. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.cc +1610 -0
  1423. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.h +610 -0
  1424. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.cc +1247 -0
  1425. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.h +214 -0
  1426. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32-inl.h +82 -0
  1427. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.cc +157 -0
  1428. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.h +43 -0
  1429. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.cc +30 -0
  1430. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.h +62 -0
  1431. data/ext/v8/upstream/build/v8/src/ia32/stub-cache-ia32.cc +2750 -0
  1432. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.cc +1334 -0
  1433. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.h +627 -0
  1434. data/ext/v8/upstream/build/v8/src/ic-inl.h +120 -0
  1435. data/ext/v8/upstream/build/v8/src/ic.cc +1827 -0
  1436. data/ext/v8/upstream/build/v8/src/ic.h +515 -0
  1437. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.cc +646 -0
  1438. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.h +48 -0
  1439. data/ext/v8/upstream/build/v8/src/json.js +268 -0
  1440. data/ext/v8/upstream/build/v8/src/jsregexp.cc +5283 -0
  1441. data/ext/v8/upstream/build/v8/src/jsregexp.h +1463 -0
  1442. data/ext/v8/upstream/build/v8/src/jump-target-heavy-inl.h +51 -0
  1443. data/ext/v8/upstream/build/v8/src/jump-target-heavy.cc +429 -0
  1444. data/ext/v8/upstream/build/v8/src/jump-target-heavy.h +244 -0
  1445. data/ext/v8/upstream/build/v8/src/jump-target-inl.h +48 -0
  1446. data/ext/v8/upstream/build/v8/src/jump-target-light-inl.h +56 -0
  1447. data/ext/v8/upstream/build/v8/src/jump-target-light.cc +110 -0
  1448. data/ext/v8/upstream/build/v8/src/jump-target-light.h +192 -0
  1449. data/ext/v8/upstream/build/v8/src/jump-target.cc +91 -0
  1450. data/ext/v8/upstream/build/v8/src/jump-target.h +90 -0
  1451. data/ext/v8/upstream/build/v8/src/list-inl.h +166 -0
  1452. data/ext/v8/upstream/build/v8/src/list.h +159 -0
  1453. data/ext/v8/upstream/build/v8/src/liveedit-debugger.js +1057 -0
  1454. data/ext/v8/upstream/build/v8/src/liveedit.cc +1480 -0
  1455. data/ext/v8/upstream/build/v8/src/liveedit.h +170 -0
  1456. data/ext/v8/upstream/build/v8/src/log-inl.h +59 -0
  1457. data/ext/v8/upstream/build/v8/src/log-utils.cc +497 -0
  1458. data/ext/v8/upstream/build/v8/src/log-utils.h +289 -0
  1459. data/ext/v8/upstream/build/v8/src/log.cc +1561 -0
  1460. data/ext/v8/upstream/build/v8/src/log.h +384 -0
  1461. data/ext/v8/upstream/build/v8/src/macro-assembler.h +86 -0
  1462. data/ext/v8/upstream/build/v8/src/macros.py +177 -0
  1463. data/ext/v8/upstream/build/v8/src/mark-compact.cc +2330 -0
  1464. data/ext/v8/upstream/build/v8/src/mark-compact.h +451 -0
  1465. data/ext/v8/upstream/build/v8/src/math.js +264 -0
  1466. data/ext/v8/upstream/build/v8/src/memory.h +74 -0
  1467. data/ext/v8/upstream/build/v8/src/messages.cc +183 -0
  1468. data/ext/v8/upstream/build/v8/src/messages.h +113 -0
  1469. data/ext/v8/upstream/build/v8/src/messages.js +982 -0
  1470. data/ext/v8/upstream/build/v8/src/mips/assembler-mips-inl.h +215 -0
  1471. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.cc +1219 -0
  1472. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.h +668 -0
  1473. data/ext/v8/upstream/build/v8/src/mips/builtins-mips.cc +205 -0
  1474. data/ext/v8/upstream/build/v8/src/mips/codegen-mips-inl.h +70 -0
  1475. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.cc +1437 -0
  1476. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.h +434 -0
  1477. data/ext/v8/upstream/build/v8/src/mips/constants-mips.cc +328 -0
  1478. data/ext/v8/upstream/build/v8/src/mips/constants-mips.h +525 -0
  1479. data/ext/v8/upstream/build/v8/src/mips/cpu-mips.cc +73 -0
  1480. data/ext/v8/upstream/build/v8/src/mips/debug-mips.cc +131 -0
  1481. data/ext/v8/upstream/build/v8/src/mips/disasm-mips.cc +787 -0
  1482. data/ext/v8/upstream/build/v8/src/mips/fast-codegen-mips.cc +77 -0
  1483. data/ext/v8/upstream/build/v8/src/mips/frames-mips.cc +102 -0
  1484. data/ext/v8/upstream/build/v8/src/mips/frames-mips.h +164 -0
  1485. data/ext/v8/upstream/build/v8/src/mips/full-codegen-mips.cc +277 -0
  1486. data/ext/v8/upstream/build/v8/src/mips/ic-mips.cc +220 -0
  1487. data/ext/v8/upstream/build/v8/src/mips/jump-target-mips.cc +175 -0
  1488. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.cc +1326 -0
  1489. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.h +461 -0
  1490. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips-inl.h +137 -0
  1491. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.cc +63 -0
  1492. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.h +46 -0
  1493. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.cc +1651 -0
  1494. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.h +311 -0
  1495. data/ext/v8/upstream/build/v8/src/mips/stub-cache-mips.cc +403 -0
  1496. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.cc +319 -0
  1497. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.h +548 -0
  1498. data/ext/v8/upstream/build/v8/src/mirror-debugger.js +2380 -0
  1499. data/ext/v8/upstream/build/v8/src/mksnapshot.cc +256 -0
  1500. data/ext/v8/upstream/build/v8/src/natives.h +63 -0
  1501. data/ext/v8/upstream/build/v8/src/objects-debug.cc +1366 -0
  1502. data/ext/v8/upstream/build/v8/src/objects-inl.h +3333 -0
  1503. data/ext/v8/upstream/build/v8/src/objects.cc +8820 -0
  1504. data/ext/v8/upstream/build/v8/src/objects.h +5373 -0
  1505. data/ext/v8/upstream/build/v8/src/oprofile-agent.cc +108 -0
  1506. data/ext/v8/upstream/build/v8/src/oprofile-agent.h +77 -0
  1507. data/ext/v8/upstream/build/v8/src/parser.cc +5207 -0
  1508. data/ext/v8/upstream/build/v8/src/parser.h +197 -0
  1509. data/ext/v8/upstream/build/v8/src/platform-freebsd.cc +667 -0
  1510. data/ext/v8/upstream/build/v8/src/platform-linux.cc +862 -0
  1511. data/ext/v8/upstream/build/v8/src/platform-macos.cc +665 -0
  1512. data/ext/v8/upstream/build/v8/src/platform-nullos.cc +454 -0
  1513. data/ext/v8/upstream/build/v8/src/platform-openbsd.cc +622 -0
  1514. data/ext/v8/upstream/build/v8/src/platform-posix.cc +362 -0
  1515. data/ext/v8/upstream/build/v8/src/platform-solaris.cc +653 -0
  1516. data/ext/v8/upstream/build/v8/src/platform-win32.cc +1911 -0
  1517. data/ext/v8/upstream/build/v8/src/platform.h +577 -0
  1518. data/ext/v8/upstream/build/v8/src/powers-ten.h +2461 -0
  1519. data/ext/v8/upstream/build/v8/src/prettyprinter.cc +1531 -0
  1520. data/ext/v8/upstream/build/v8/src/prettyprinter.h +221 -0
  1521. data/ext/v8/upstream/build/v8/src/profile-generator-inl.h +148 -0
  1522. data/ext/v8/upstream/build/v8/src/profile-generator.cc +1830 -0
  1523. data/ext/v8/upstream/build/v8/src/profile-generator.h +853 -0
  1524. data/ext/v8/upstream/build/v8/src/property.cc +96 -0
  1525. data/ext/v8/upstream/build/v8/src/property.h +315 -0
  1526. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  1527. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.cc +464 -0
  1528. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.h +141 -0
  1529. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.cc +356 -0
  1530. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.h +103 -0
  1531. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.cc +261 -0
  1532. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.h +228 -0
  1533. data/ext/v8/upstream/build/v8/src/regexp-stack.cc +103 -0
  1534. data/ext/v8/upstream/build/v8/src/regexp-stack.h +123 -0
  1535. data/ext/v8/upstream/build/v8/src/regexp.js +549 -0
  1536. data/ext/v8/upstream/build/v8/src/register-allocator-inl.h +141 -0
  1537. data/ext/v8/upstream/build/v8/src/register-allocator.cc +104 -0
  1538. data/ext/v8/upstream/build/v8/src/register-allocator.h +320 -0
  1539. data/ext/v8/upstream/build/v8/src/rewriter.cc +1038 -0
  1540. data/ext/v8/upstream/build/v8/src/rewriter.h +54 -0
  1541. data/ext/v8/upstream/build/v8/src/runtime.cc +10599 -0
  1542. data/ext/v8/upstream/build/v8/src/runtime.h +459 -0
  1543. data/ext/v8/upstream/build/v8/src/runtime.js +629 -0
  1544. data/ext/v8/upstream/build/v8/src/scanner.cc +1346 -0
  1545. data/ext/v8/upstream/build/v8/src/scanner.h +503 -0
  1546. data/ext/v8/upstream/build/v8/src/scopeinfo.cc +637 -0
  1547. data/ext/v8/upstream/build/v8/src/scopeinfo.h +233 -0
  1548. data/ext/v8/upstream/build/v8/src/scopes.cc +962 -0
  1549. data/ext/v8/upstream/build/v8/src/scopes.h +400 -0
  1550. data/ext/v8/upstream/build/v8/src/serialize.cc +1461 -0
  1551. data/ext/v8/upstream/build/v8/src/serialize.h +581 -0
  1552. data/ext/v8/upstream/build/v8/src/shell.h +55 -0
  1553. data/ext/v8/upstream/build/v8/src/simulator.h +43 -0
  1554. data/ext/v8/upstream/build/v8/src/smart-pointer.h +109 -0
  1555. data/ext/v8/upstream/build/v8/src/snapshot-common.cc +82 -0
  1556. data/ext/v8/upstream/build/v8/src/snapshot-empty.cc +50 -0
  1557. data/ext/v8/upstream/build/v8/src/snapshot.h +71 -0
  1558. data/ext/v8/upstream/build/v8/src/spaces-inl.h +483 -0
  1559. data/ext/v8/upstream/build/v8/src/spaces.cc +2901 -0
  1560. data/ext/v8/upstream/build/v8/src/spaces.h +2197 -0
  1561. data/ext/v8/upstream/build/v8/src/splay-tree-inl.h +310 -0
  1562. data/ext/v8/upstream/build/v8/src/splay-tree.h +203 -0
  1563. data/ext/v8/upstream/build/v8/src/string-stream.cc +584 -0
  1564. data/ext/v8/upstream/build/v8/src/string-stream.h +189 -0
  1565. data/ext/v8/upstream/build/v8/src/string.js +1006 -0
  1566. data/ext/v8/upstream/build/v8/src/stub-cache.cc +1379 -0
  1567. data/ext/v8/upstream/build/v8/src/stub-cache.h +756 -0
  1568. data/ext/v8/upstream/build/v8/src/third_party/dtoa/COPYING +15 -0
  1569. data/ext/v8/upstream/build/v8/src/third_party/dtoa/dtoa.c +3334 -0
  1570. data/ext/v8/upstream/build/v8/src/third_party/valgrind/valgrind.h +3925 -0
  1571. data/ext/v8/upstream/build/v8/src/token.cc +56 -0
  1572. data/ext/v8/upstream/build/v8/src/token.h +270 -0
  1573. data/ext/v8/upstream/build/v8/src/top.cc +1067 -0
  1574. data/ext/v8/upstream/build/v8/src/top.h +463 -0
  1575. data/ext/v8/upstream/build/v8/src/type-info.cc +53 -0
  1576. data/ext/v8/upstream/build/v8/src/type-info.h +244 -0
  1577. data/ext/v8/upstream/build/v8/src/unbound-queue-inl.h +95 -0
  1578. data/ext/v8/upstream/build/v8/src/unbound-queue.h +67 -0
  1579. data/ext/v8/upstream/build/v8/src/unicode-inl.h +238 -0
  1580. data/ext/v8/upstream/build/v8/src/unicode.cc +749 -0
  1581. data/ext/v8/upstream/build/v8/src/unicode.h +279 -0
  1582. data/ext/v8/upstream/build/v8/src/uri.js +415 -0
  1583. data/ext/v8/upstream/build/v8/src/utils.cc +285 -0
  1584. data/ext/v8/upstream/build/v8/src/utils.h +745 -0
  1585. data/ext/v8/upstream/build/v8/src/v8-counters.cc +55 -0
  1586. data/ext/v8/upstream/build/v8/src/v8-counters.h +250 -0
  1587. data/ext/v8/upstream/build/v8/src/v8.cc +228 -0
  1588. data/ext/v8/upstream/build/v8/src/v8.h +121 -0
  1589. data/ext/v8/upstream/build/v8/src/v8dll-main.cc +39 -0
  1590. data/ext/v8/upstream/build/v8/src/v8natives.js +1188 -0
  1591. data/ext/v8/upstream/build/v8/src/v8threads.cc +461 -0
  1592. data/ext/v8/upstream/build/v8/src/v8threads.h +159 -0
  1593. data/ext/v8/upstream/build/v8/src/variables.cc +119 -0
  1594. data/ext/v8/upstream/build/v8/src/variables.h +205 -0
  1595. data/ext/v8/upstream/build/v8/src/version.cc +88 -0
  1596. data/ext/v8/upstream/build/v8/src/version.h +64 -0
  1597. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy-inl.h +192 -0
  1598. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy.cc +312 -0
  1599. data/ext/v8/upstream/build/v8/src/virtual-frame-inl.h +39 -0
  1600. data/ext/v8/upstream/build/v8/src/virtual-frame-light-inl.h +170 -0
  1601. data/ext/v8/upstream/build/v8/src/virtual-frame-light.cc +52 -0
  1602. data/ext/v8/upstream/build/v8/src/virtual-frame.cc +49 -0
  1603. data/ext/v8/upstream/build/v8/src/virtual-frame.h +46 -0
  1604. data/ext/v8/upstream/build/v8/src/vm-state-inl.h +137 -0
  1605. data/ext/v8/upstream/build/v8/src/vm-state.cc +39 -0
  1606. data/ext/v8/upstream/build/v8/src/vm-state.h +77 -0
  1607. data/ext/v8/upstream/build/v8/src/x64/assembler-x64-inl.h +400 -0
  1608. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.cc +2963 -0
  1609. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.h +1438 -0
  1610. data/ext/v8/upstream/build/v8/src/x64/builtins-x64.cc +1296 -0
  1611. data/ext/v8/upstream/build/v8/src/x64/codegen-x64-inl.h +46 -0
  1612. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.cc +12491 -0
  1613. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.h +1090 -0
  1614. data/ext/v8/upstream/build/v8/src/x64/cpu-x64.cc +83 -0
  1615. data/ext/v8/upstream/build/v8/src/x64/debug-x64.cc +267 -0
  1616. data/ext/v8/upstream/build/v8/src/x64/disasm-x64.cc +1696 -0
  1617. data/ext/v8/upstream/build/v8/src/x64/fast-codegen-x64.cc +250 -0
  1618. data/ext/v8/upstream/build/v8/src/x64/frames-x64.cc +113 -0
  1619. data/ext/v8/upstream/build/v8/src/x64/frames-x64.h +125 -0
  1620. data/ext/v8/upstream/build/v8/src/x64/full-codegen-x64.cc +3270 -0
  1621. data/ext/v8/upstream/build/v8/src/x64/ic-x64.cc +1907 -0
  1622. data/ext/v8/upstream/build/v8/src/x64/jump-target-x64.cc +437 -0
  1623. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.cc +2793 -0
  1624. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.h +916 -0
  1625. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.cc +1374 -0
  1626. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.h +277 -0
  1627. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64-inl.h +87 -0
  1628. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.cc +91 -0
  1629. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.h +43 -0
  1630. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.cc +27 -0
  1631. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.h +63 -0
  1632. data/ext/v8/upstream/build/v8/src/x64/stub-cache-x64.cc +2560 -0
  1633. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.cc +1264 -0
  1634. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.h +590 -0
  1635. data/ext/v8/upstream/build/v8/src/zone-inl.h +82 -0
  1636. data/ext/v8/upstream/build/v8/src/zone.cc +194 -0
  1637. data/ext/v8/upstream/build/v8/src/zone.h +221 -0
  1638. data/ext/v8/upstream/build/v8/tools/codemap.js +270 -0
  1639. data/ext/v8/upstream/build/v8/tools/consarray.js +93 -0
  1640. data/ext/v8/upstream/build/v8/tools/csvparser.js +83 -0
  1641. data/ext/v8/upstream/build/v8/tools/gc-nvp-trace-processor.py +317 -0
  1642. data/ext/v8/upstream/build/v8/tools/generate-ten-powers.scm +286 -0
  1643. data/ext/v8/upstream/build/v8/tools/gyp/v8.gyp +749 -0
  1644. data/ext/v8/upstream/build/v8/tools/js2c.py +380 -0
  1645. data/ext/v8/upstream/build/v8/tools/jsmin.py +280 -0
  1646. data/ext/v8/upstream/build/v8/tools/linux-tick-processor +33 -0
  1647. data/ext/v8/upstream/build/v8/tools/linux-tick-processor.py +78 -0
  1648. data/ext/v8/upstream/build/v8/tools/logreader.js +338 -0
  1649. data/ext/v8/upstream/build/v8/tools/mac-nm +18 -0
  1650. data/ext/v8/upstream/build/v8/tools/mac-tick-processor +6 -0
  1651. data/ext/v8/upstream/build/v8/tools/oprofile/annotate +7 -0
  1652. data/ext/v8/upstream/build/v8/tools/oprofile/common +19 -0
  1653. data/ext/v8/upstream/build/v8/tools/oprofile/dump +7 -0
  1654. data/ext/v8/upstream/build/v8/tools/oprofile/report +7 -0
  1655. data/ext/v8/upstream/build/v8/tools/oprofile/reset +7 -0
  1656. data/ext/v8/upstream/build/v8/tools/oprofile/run +14 -0
  1657. data/ext/v8/upstream/build/v8/tools/oprofile/shutdown +7 -0
  1658. data/ext/v8/upstream/build/v8/tools/oprofile/start +7 -0
  1659. data/ext/v8/upstream/build/v8/tools/presubmit.py +299 -0
  1660. data/ext/v8/upstream/build/v8/tools/process-heap-prof.py +120 -0
  1661. data/ext/v8/upstream/build/v8/tools/profile.js +691 -0
  1662. data/ext/v8/upstream/build/v8/tools/profile_view.js +224 -0
  1663. data/ext/v8/upstream/build/v8/tools/run-valgrind.py +77 -0
  1664. data/ext/v8/upstream/build/v8/tools/splaytree.js +322 -0
  1665. data/ext/v8/upstream/build/v8/tools/splaytree.py +226 -0
  1666. data/ext/v8/upstream/build/v8/tools/stats-viewer.py +468 -0
  1667. data/ext/v8/upstream/build/v8/tools/tickprocessor-driver.js +59 -0
  1668. data/ext/v8/upstream/build/v8/tools/tickprocessor.js +862 -0
  1669. data/ext/v8/upstream/build/v8/tools/tickprocessor.py +571 -0
  1670. data/ext/v8/upstream/build/v8/tools/utils.py +88 -0
  1671. data/ext/v8/upstream/build/v8/tools/visual_studio/README.txt +71 -0
  1672. data/ext/v8/upstream/build/v8/tools/visual_studio/arm.vsprops +14 -0
  1673. data/ext/v8/upstream/build/v8/tools/visual_studio/common.vsprops +34 -0
  1674. data/ext/v8/upstream/build/v8/tools/visual_studio/d8.vcproj +193 -0
  1675. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_arm.vcproj +193 -0
  1676. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_x64.vcproj +209 -0
  1677. data/ext/v8/upstream/build/v8/tools/visual_studio/d8js2c.cmd +6 -0
  1678. data/ext/v8/upstream/build/v8/tools/visual_studio/debug.vsprops +17 -0
  1679. data/ext/v8/upstream/build/v8/tools/visual_studio/ia32.vsprops +17 -0
  1680. data/ext/v8/upstream/build/v8/tools/visual_studio/js2c.cmd +6 -0
  1681. data/ext/v8/upstream/build/v8/tools/visual_studio/release.vsprops +24 -0
  1682. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.sln +101 -0
  1683. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.vcproj +227 -0
  1684. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.sln +74 -0
  1685. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.vcproj +227 -0
  1686. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base.vcproj +1143 -0
  1687. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_arm.vcproj +1115 -0
  1688. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_x64.vcproj +1096 -0
  1689. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest.vcproj +265 -0
  1690. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_arm.vcproj +249 -0
  1691. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  1692. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot.vcproj +145 -0
  1693. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot_x64.vcproj +145 -0
  1694. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample.vcproj +145 -0
  1695. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_arm.vcproj +145 -0
  1696. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_x64.vcproj +161 -0
  1697. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample.vcproj +145 -0
  1698. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -0
  1699. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_x64.vcproj +161 -0
  1700. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot.vcproj +142 -0
  1701. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  1702. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  1703. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  1704. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.sln +101 -0
  1705. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.vcproj +227 -0
  1706. data/ext/v8/upstream/build/v8/tools/visual_studio/x64.vsprops +17 -0
  1707. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.bat +29 -0
  1708. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.py +137 -0
  1709. data/ext/v8/upstream/detect_cpu.rb +27 -0
  1710. data/ext/v8/upstream/fpic-on-linux-amd64.patch +13 -0
  1711. data/ext/v8/upstream/scons/CHANGES.txt +5183 -0
  1712. data/ext/v8/upstream/scons/LICENSE.txt +20 -0
  1713. data/ext/v8/upstream/scons/MANIFEST +202 -0
  1714. data/ext/v8/upstream/scons/PKG-INFO +13 -0
  1715. data/ext/v8/upstream/scons/README.txt +273 -0
  1716. data/ext/v8/upstream/scons/RELEASE.txt +1040 -0
  1717. data/ext/v8/upstream/scons/engine/SCons/Action.py +1256 -0
  1718. data/ext/v8/upstream/scons/engine/SCons/Builder.py +868 -0
  1719. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +217 -0
  1720. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +794 -0
  1721. data/ext/v8/upstream/scons/engine/SCons/Debug.py +237 -0
  1722. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +485 -0
  1723. data/ext/v8/upstream/scons/engine/SCons/Environment.py +2327 -0
  1724. data/ext/v8/upstream/scons/engine/SCons/Errors.py +207 -0
  1725. data/ext/v8/upstream/scons/engine/SCons/Executor.py +636 -0
  1726. data/ext/v8/upstream/scons/engine/SCons/Job.py +435 -0
  1727. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +292 -0
  1728. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +153 -0
  1729. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +3220 -0
  1730. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +128 -0
  1731. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +1341 -0
  1732. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +50 -0
  1733. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +50 -0
  1734. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +50 -0
  1735. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +50 -0
  1736. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +76 -0
  1737. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +74 -0
  1738. data/ext/v8/upstream/scons/engine/SCons/PathList.py +232 -0
  1739. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +236 -0
  1740. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +70 -0
  1741. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +55 -0
  1742. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +46 -0
  1743. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +46 -0
  1744. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +44 -0
  1745. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +58 -0
  1746. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +264 -0
  1747. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +50 -0
  1748. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +386 -0
  1749. data/ext/v8/upstream/scons/engine/SCons/SConf.py +1038 -0
  1750. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +381 -0
  1751. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +132 -0
  1752. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +74 -0
  1753. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +111 -0
  1754. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +320 -0
  1755. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +48 -0
  1756. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  1757. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +103 -0
  1758. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +55 -0
  1759. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +415 -0
  1760. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +386 -0
  1761. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +1360 -0
  1762. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +944 -0
  1763. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +642 -0
  1764. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +414 -0
  1765. data/ext/v8/upstream/scons/engine/SCons/Sig.py +63 -0
  1766. data/ext/v8/upstream/scons/engine/SCons/Subst.py +911 -0
  1767. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +1030 -0
  1768. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +61 -0
  1769. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  1770. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +73 -0
  1771. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  1772. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  1773. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  1774. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  1775. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  1776. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  1777. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  1778. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  1779. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  1780. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +104 -0
  1781. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  1782. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +64 -0
  1783. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +64 -0
  1784. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +71 -0
  1785. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +675 -0
  1786. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +82 -0
  1787. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +74 -0
  1788. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +80 -0
  1789. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +76 -0
  1790. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +71 -0
  1791. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +63 -0
  1792. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +78 -0
  1793. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +82 -0
  1794. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +99 -0
  1795. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +114 -0
  1796. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +58 -0
  1797. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +50 -0
  1798. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +224 -0
  1799. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +64 -0
  1800. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +125 -0
  1801. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +94 -0
  1802. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +62 -0
  1803. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +62 -0
  1804. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +63 -0
  1805. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +98 -0
  1806. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +63 -0
  1807. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +90 -0
  1808. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +73 -0
  1809. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +53 -0
  1810. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +80 -0
  1811. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +64 -0
  1812. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +63 -0
  1813. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +81 -0
  1814. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +85 -0
  1815. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +53 -0
  1816. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +77 -0
  1817. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +59 -0
  1818. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +52 -0
  1819. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +72 -0
  1820. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +90 -0
  1821. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +59 -0
  1822. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +60 -0
  1823. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +229 -0
  1824. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +490 -0
  1825. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +71 -0
  1826. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +110 -0
  1827. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +234 -0
  1828. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +138 -0
  1829. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +79 -0
  1830. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +99 -0
  1831. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +121 -0
  1832. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +112 -0
  1833. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +63 -0
  1834. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +77 -0
  1835. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +90 -0
  1836. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +159 -0
  1837. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +64 -0
  1838. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +266 -0
  1839. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +50 -0
  1840. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +269 -0
  1841. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +1439 -0
  1842. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +208 -0
  1843. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +107 -0
  1844. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +72 -0
  1845. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  1846. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  1847. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  1848. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  1849. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  1850. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  1851. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  1852. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  1853. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  1854. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  1855. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +78 -0
  1856. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +83 -0
  1857. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +108 -0
  1858. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +336 -0
  1859. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +121 -0
  1860. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +70 -0
  1861. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +132 -0
  1862. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +68 -0
  1863. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +58 -0
  1864. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +53 -0
  1865. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +63 -0
  1866. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +67 -0
  1867. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +142 -0
  1868. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +58 -0
  1869. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +63 -0
  1870. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +64 -0
  1871. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +64 -0
  1872. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +77 -0
  1873. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +186 -0
  1874. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +73 -0
  1875. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +805 -0
  1876. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +175 -0
  1877. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +53 -0
  1878. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +100 -0
  1879. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +131 -0
  1880. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +100 -0
  1881. data/ext/v8/upstream/scons/engine/SCons/Util.py +1645 -0
  1882. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  1883. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  1884. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +139 -0
  1885. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  1886. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +147 -0
  1887. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +317 -0
  1888. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +228 -0
  1889. data/ext/v8/upstream/scons/engine/SCons/__init__.py +49 -0
  1890. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +302 -0
  1891. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  1892. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  1893. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  1894. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  1895. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +583 -0
  1896. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  1897. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  1898. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  1899. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  1900. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +187 -0
  1901. data/ext/v8/upstream/scons/engine/SCons/cpp.py +598 -0
  1902. data/ext/v8/upstream/scons/engine/SCons/dblite.py +248 -0
  1903. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +77 -0
  1904. data/ext/v8/upstream/scons/os_spawnv_fix.diff +83 -0
  1905. data/ext/v8/upstream/scons/scons-time.1 +1017 -0
  1906. data/ext/v8/upstream/scons/scons.1 +15179 -0
  1907. data/ext/v8/upstream/scons/sconsign.1 +208 -0
  1908. data/ext/v8/upstream/scons/script/scons +184 -0
  1909. data/ext/v8/upstream/scons/script/scons-time +1529 -0
  1910. data/ext/v8/upstream/scons/script/scons.bat +31 -0
  1911. data/ext/v8/upstream/scons/script/sconsign +508 -0
  1912. data/ext/v8/upstream/scons/setup.cfg +6 -0
  1913. data/ext/v8/upstream/scons/setup.py +427 -0
  1914. data/ext/v8/v8.cpp +41 -0
  1915. data/ext/v8/v8_array.cpp +50 -0
  1916. data/ext/v8/v8_array.h +8 -0
  1917. data/ext/v8/v8_callbacks.cpp +121 -0
  1918. data/ext/v8/v8_callbacks.h +8 -0
  1919. data/ext/v8/v8_cxt.cpp +92 -0
  1920. data/ext/v8/v8_cxt.h +6 -0
  1921. data/ext/v8/v8_date.cpp +35 -0
  1922. data/ext/v8/v8_date.h +6 -0
  1923. data/ext/v8/v8_exception.cpp +128 -0
  1924. data/ext/v8/v8_exception.h +11 -0
  1925. data/ext/v8/v8_external.cpp +57 -0
  1926. data/ext/v8/v8_external.h +9 -0
  1927. data/ext/v8/v8_func.cpp +66 -0
  1928. data/ext/v8/v8_func.h +12 -0
  1929. data/ext/v8/v8_locker.cpp +41 -0
  1930. data/ext/v8/v8_locker.h +6 -0
  1931. data/ext/v8/v8_msg.cpp +68 -0
  1932. data/ext/v8/v8_msg.h +10 -0
  1933. data/ext/v8/v8_obj.cpp +96 -0
  1934. data/ext/v8/v8_obj.h +11 -0
  1935. data/ext/v8/v8_ref.cpp +37 -0
  1936. data/ext/v8/v8_ref.h +28 -0
  1937. data/ext/v8/v8_script.cpp +36 -0
  1938. data/ext/v8/v8_script.h +8 -0
  1939. data/ext/v8/v8_str.cpp +52 -0
  1940. data/ext/v8/v8_str.h +9 -0
  1941. data/ext/v8/v8_template.cpp +329 -0
  1942. data/ext/v8/v8_template.h +8 -0
  1943. data/ext/v8/v8_try_catch.cpp +99 -0
  1944. data/ext/v8/v8_try_catch.h +5 -0
  1945. data/ext/v8/v8_value.cpp +167 -0
  1946. data/ext/v8/v8_value.h +10 -0
  1947. data/lib/v8.rb +16 -0
  1948. data/lib/v8/access.rb +87 -0
  1949. data/lib/v8/array.rb +17 -0
  1950. data/lib/v8/cli.rb +131 -0
  1951. data/lib/v8/context.rb +88 -0
  1952. data/lib/v8/error.rb +129 -0
  1953. data/lib/v8/function.rb +28 -0
  1954. data/lib/v8/object.rb +69 -0
  1955. data/lib/v8/portal.rb +327 -0
  1956. data/lib/v8/portal/functions.rb +45 -0
  1957. data/lib/v8/tap.rb +9 -0
  1958. data/lib/v8/version.rb +3 -0
  1959. data/spec/ext/cxt_spec.rb +12 -0
  1960. data/spec/ext/func_spec.rb +49 -0
  1961. data/spec/ext/try_catch_spec.rb +32 -0
  1962. data/spec/redjs_helper.rb +3 -0
  1963. data/spec/spec_helper.rb +8 -0
  1964. data/spec/v8/error_spec.rb +131 -0
  1965. data/therubyracer-heroku.gemspec +24 -0
  1966. metadata +2061 -0
@@ -0,0 +1,43 @@
1
+ // Copyright 2009 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #ifndef V8_IA32_REGISTER_ALLOCATOR_IA32_H_
29
+ #define V8_IA32_REGISTER_ALLOCATOR_IA32_H_
30
+
31
+ namespace v8 {
32
+ namespace internal {
33
+
34
+ class RegisterAllocatorConstants : public AllStatic {
35
+ public:
36
+ static const int kNumRegisters = 5;
37
+ static const int kInvalidRegister = -1;
38
+ };
39
+
40
+
41
+ } } // namespace v8::internal
42
+
43
+ #endif // V8_IA32_REGISTER_ALLOCATOR_IA32_H_
@@ -0,0 +1,30 @@
1
+ // Copyright 2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ // Since there is no simulator for the ia32 architecture this file is empty.
30
+
@@ -0,0 +1,62 @@
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
+ #ifndef V8_IA32_SIMULATOR_IA32_H_
29
+ #define V8_IA32_SIMULATOR_IA32_H_
30
+
31
+ #include "allocation.h"
32
+
33
+ // Since there is no simulator for the ia32 architecture the only thing we can
34
+ // do is to call the entry directly.
35
+ #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
36
+ entry(p0, p1, p2, p3, p4);
37
+
38
+ // The stack limit beyond which we will throw stack overflow errors in
39
+ // generated code. Because generated code on ia32 uses the C stack, we
40
+ // just use the C stack limit.
41
+ class SimulatorStack : public v8::internal::AllStatic {
42
+ public:
43
+ static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
44
+ return c_limit;
45
+ }
46
+
47
+ static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
48
+ return try_catch_address;
49
+ }
50
+
51
+ static inline void UnregisterCTryCatch() { }
52
+ };
53
+
54
+ // Call the generated regexp code directly. The entry function pointer should
55
+ // expect eight int/pointer sized arguments and return an int.
56
+ #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
57
+ entry(p0, p1, p2, p3, p4, p5, p6)
58
+
59
+ #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
60
+ reinterpret_cast<TryCatch*>(try_catch_address)
61
+
62
+ #endif // V8_IA32_SIMULATOR_IA32_H_
@@ -0,0 +1,2750 @@
1
+ // Copyright 2006-2009 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #include "v8.h"
29
+
30
+ #if defined(V8_TARGET_ARCH_IA32)
31
+
32
+ #include "ic-inl.h"
33
+ #include "codegen-inl.h"
34
+ #include "stub-cache.h"
35
+
36
+ namespace v8 {
37
+ namespace internal {
38
+
39
+ #define __ ACCESS_MASM(masm)
40
+
41
+
42
+ static void ProbeTable(MacroAssembler* masm,
43
+ Code::Flags flags,
44
+ StubCache::Table table,
45
+ Register name,
46
+ Register offset,
47
+ Register extra) {
48
+ ExternalReference key_offset(SCTableReference::keyReference(table));
49
+ ExternalReference value_offset(SCTableReference::valueReference(table));
50
+
51
+ Label miss;
52
+
53
+ if (extra.is_valid()) {
54
+ // Get the code entry from the cache.
55
+ __ mov(extra, Operand::StaticArray(offset, times_2, value_offset));
56
+
57
+ // Check that the key in the entry matches the name.
58
+ __ cmp(name, Operand::StaticArray(offset, times_2, key_offset));
59
+ __ j(not_equal, &miss, not_taken);
60
+
61
+ // Check that the flags match what we're looking for.
62
+ __ mov(offset, FieldOperand(extra, Code::kFlagsOffset));
63
+ __ and_(offset, ~Code::kFlagsNotUsedInLookup);
64
+ __ cmp(offset, flags);
65
+ __ j(not_equal, &miss);
66
+
67
+ // Jump to the first instruction in the code stub.
68
+ __ add(Operand(extra), Immediate(Code::kHeaderSize - kHeapObjectTag));
69
+ __ jmp(Operand(extra));
70
+
71
+ __ bind(&miss);
72
+ } else {
73
+ // Save the offset on the stack.
74
+ __ push(offset);
75
+
76
+ // Check that the key in the entry matches the name.
77
+ __ cmp(name, Operand::StaticArray(offset, times_2, key_offset));
78
+ __ j(not_equal, &miss, not_taken);
79
+
80
+ // Get the code entry from the cache.
81
+ __ mov(offset, Operand::StaticArray(offset, times_2, value_offset));
82
+
83
+ // Check that the flags match what we're looking for.
84
+ __ mov(offset, FieldOperand(offset, Code::kFlagsOffset));
85
+ __ and_(offset, ~Code::kFlagsNotUsedInLookup);
86
+ __ cmp(offset, flags);
87
+ __ j(not_equal, &miss);
88
+
89
+ // Restore offset and re-load code entry from cache.
90
+ __ pop(offset);
91
+ __ mov(offset, Operand::StaticArray(offset, times_2, value_offset));
92
+
93
+ // Jump to the first instruction in the code stub.
94
+ __ add(Operand(offset), Immediate(Code::kHeaderSize - kHeapObjectTag));
95
+ __ jmp(Operand(offset));
96
+
97
+ // Pop at miss.
98
+ __ bind(&miss);
99
+ __ pop(offset);
100
+ }
101
+ }
102
+
103
+
104
+ // Helper function used to check that the dictionary doesn't contain
105
+ // the property. This function may return false negatives, so miss_label
106
+ // must always call a backup property check that is complete.
107
+ // This function is safe to call if the receiver has fast properties.
108
+ // Name must be a symbol and receiver must be a heap object.
109
+ static void GenerateDictionaryNegativeLookup(MacroAssembler* masm,
110
+ Label* miss_label,
111
+ Register receiver,
112
+ String* name,
113
+ Register r0,
114
+ Register r1) {
115
+ ASSERT(name->IsSymbol());
116
+ __ IncrementCounter(&Counters::negative_lookups, 1);
117
+ __ IncrementCounter(&Counters::negative_lookups_miss, 1);
118
+
119
+ Label done;
120
+ __ mov(r0, FieldOperand(receiver, HeapObject::kMapOffset));
121
+
122
+ const int kInterceptorOrAccessCheckNeededMask =
123
+ (1 << Map::kHasNamedInterceptor) | (1 << Map::kIsAccessCheckNeeded);
124
+
125
+ // Bail out if the receiver has a named interceptor or requires access checks.
126
+ __ test_b(FieldOperand(r0, Map::kBitFieldOffset),
127
+ kInterceptorOrAccessCheckNeededMask);
128
+ __ j(not_zero, miss_label, not_taken);
129
+
130
+ // Check that receiver is a JSObject.
131
+ __ CmpInstanceType(r0, FIRST_JS_OBJECT_TYPE);
132
+ __ j(below, miss_label, not_taken);
133
+
134
+ // Load properties array.
135
+ Register properties = r0;
136
+ __ mov(properties, FieldOperand(receiver, JSObject::kPropertiesOffset));
137
+
138
+ // Check that the properties array is a dictionary.
139
+ __ cmp(FieldOperand(properties, HeapObject::kMapOffset),
140
+ Immediate(Factory::hash_table_map()));
141
+ __ j(not_equal, miss_label);
142
+
143
+ // Compute the capacity mask.
144
+ const int kCapacityOffset =
145
+ StringDictionary::kHeaderSize +
146
+ StringDictionary::kCapacityIndex * kPointerSize;
147
+
148
+ // Generate an unrolled loop that performs a few probes before
149
+ // giving up.
150
+ static const int kProbes = 4;
151
+ const int kElementsStartOffset =
152
+ StringDictionary::kHeaderSize +
153
+ StringDictionary::kElementsStartIndex * kPointerSize;
154
+
155
+ // If names of slots in range from 1 to kProbes - 1 for the hash value are
156
+ // not equal to the name and kProbes-th slot is not used (its name is the
157
+ // undefined value), it guarantees the hash table doesn't contain the
158
+ // property. It's true even if some slots represent deleted properties
159
+ // (their names are the null value).
160
+ for (int i = 0; i < kProbes; i++) {
161
+ // r0 points to properties hash.
162
+ // Compute the masked index: (hash + i + i * i) & mask.
163
+ Register index = r1;
164
+ // Capacity is smi 2^n.
165
+ __ mov(index, FieldOperand(properties, kCapacityOffset));
166
+ __ dec(index);
167
+ __ and_(Operand(index),
168
+ Immediate(Smi::FromInt(name->Hash() +
169
+ StringDictionary::GetProbeOffset(i))));
170
+
171
+ // Scale the index by multiplying by the entry size.
172
+ ASSERT(StringDictionary::kEntrySize == 3);
173
+ __ lea(index, Operand(index, index, times_2, 0)); // index *= 3.
174
+
175
+ Register entity_name = r1;
176
+ // Having undefined at this place means the name is not contained.
177
+ ASSERT_EQ(kSmiTagSize, 1);
178
+ __ mov(entity_name, Operand(properties, index, times_half_pointer_size,
179
+ kElementsStartOffset - kHeapObjectTag));
180
+ __ cmp(entity_name, Factory::undefined_value());
181
+ if (i != kProbes - 1) {
182
+ __ j(equal, &done, taken);
183
+
184
+ // Stop if found the property.
185
+ __ cmp(entity_name, Handle<String>(name));
186
+ __ j(equal, miss_label, not_taken);
187
+
188
+ // Check if the entry name is not a symbol.
189
+ __ mov(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset));
190
+ __ test_b(FieldOperand(entity_name, Map::kInstanceTypeOffset),
191
+ kIsSymbolMask);
192
+ __ j(zero, miss_label, not_taken);
193
+ } else {
194
+ // Give up probing if still not found the undefined value.
195
+ __ j(not_equal, miss_label, not_taken);
196
+ }
197
+ }
198
+
199
+ __ bind(&done);
200
+ __ DecrementCounter(&Counters::negative_lookups_miss, 1);
201
+ }
202
+
203
+
204
+ void StubCache::GenerateProbe(MacroAssembler* masm,
205
+ Code::Flags flags,
206
+ Register receiver,
207
+ Register name,
208
+ Register scratch,
209
+ Register extra) {
210
+ Label miss;
211
+
212
+ // Make sure that code is valid. The shifting code relies on the
213
+ // entry size being 8.
214
+ ASSERT(sizeof(Entry) == 8);
215
+
216
+ // Make sure the flags does not name a specific type.
217
+ ASSERT(Code::ExtractTypeFromFlags(flags) == 0);
218
+
219
+ // Make sure that there are no register conflicts.
220
+ ASSERT(!scratch.is(receiver));
221
+ ASSERT(!scratch.is(name));
222
+ ASSERT(!extra.is(receiver));
223
+ ASSERT(!extra.is(name));
224
+ ASSERT(!extra.is(scratch));
225
+
226
+ // Check that the receiver isn't a smi.
227
+ __ test(receiver, Immediate(kSmiTagMask));
228
+ __ j(zero, &miss, not_taken);
229
+
230
+ // Get the map of the receiver and compute the hash.
231
+ __ mov(scratch, FieldOperand(name, String::kHashFieldOffset));
232
+ __ add(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
233
+ __ xor_(scratch, flags);
234
+ __ and_(scratch, (kPrimaryTableSize - 1) << kHeapObjectTagSize);
235
+
236
+ // Probe the primary table.
237
+ ProbeTable(masm, flags, kPrimary, name, scratch, extra);
238
+
239
+ // Primary miss: Compute hash for secondary probe.
240
+ __ mov(scratch, FieldOperand(name, String::kHashFieldOffset));
241
+ __ add(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
242
+ __ xor_(scratch, flags);
243
+ __ and_(scratch, (kPrimaryTableSize - 1) << kHeapObjectTagSize);
244
+ __ sub(scratch, Operand(name));
245
+ __ add(Operand(scratch), Immediate(flags));
246
+ __ and_(scratch, (kSecondaryTableSize - 1) << kHeapObjectTagSize);
247
+
248
+ // Probe the secondary table.
249
+ ProbeTable(masm, flags, kSecondary, name, scratch, extra);
250
+
251
+ // Cache miss: Fall-through and let caller handle the miss by
252
+ // entering the runtime system.
253
+ __ bind(&miss);
254
+ }
255
+
256
+
257
+ void StubCompiler::GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm,
258
+ int index,
259
+ Register prototype) {
260
+ // Load the global or builtins object from the current context.
261
+ __ mov(prototype, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
262
+ // Load the global context from the global or builtins object.
263
+ __ mov(prototype,
264
+ FieldOperand(prototype, GlobalObject::kGlobalContextOffset));
265
+ // Load the function from the global context.
266
+ __ mov(prototype, Operand(prototype, Context::SlotOffset(index)));
267
+ // Load the initial map. The global functions all have initial maps.
268
+ __ mov(prototype,
269
+ FieldOperand(prototype, JSFunction::kPrototypeOrInitialMapOffset));
270
+ // Load the prototype from the initial map.
271
+ __ mov(prototype, FieldOperand(prototype, Map::kPrototypeOffset));
272
+ }
273
+
274
+
275
+ void StubCompiler::GenerateDirectLoadGlobalFunctionPrototype(
276
+ MacroAssembler* masm, int index, Register prototype) {
277
+ // Get the global function with the given index.
278
+ JSFunction* function = JSFunction::cast(Top::global_context()->get(index));
279
+ // Load its initial map. The global functions all have initial maps.
280
+ __ Set(prototype, Immediate(Handle<Map>(function->initial_map())));
281
+ // Load the prototype from the initial map.
282
+ __ mov(prototype, FieldOperand(prototype, Map::kPrototypeOffset));
283
+ }
284
+
285
+
286
+ void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm,
287
+ Register receiver,
288
+ Register scratch,
289
+ Label* miss_label) {
290
+ // Check that the receiver isn't a smi.
291
+ __ test(receiver, Immediate(kSmiTagMask));
292
+ __ j(zero, miss_label, not_taken);
293
+
294
+ // Check that the object is a JS array.
295
+ __ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch);
296
+ __ j(not_equal, miss_label, not_taken);
297
+
298
+ // Load length directly from the JS array.
299
+ __ mov(eax, FieldOperand(receiver, JSArray::kLengthOffset));
300
+ __ ret(0);
301
+ }
302
+
303
+
304
+ // Generate code to check if an object is a string. If the object is
305
+ // a string, the map's instance type is left in the scratch register.
306
+ static void GenerateStringCheck(MacroAssembler* masm,
307
+ Register receiver,
308
+ Register scratch,
309
+ Label* smi,
310
+ Label* non_string_object) {
311
+ // Check that the object isn't a smi.
312
+ __ test(receiver, Immediate(kSmiTagMask));
313
+ __ j(zero, smi, not_taken);
314
+
315
+ // Check that the object is a string.
316
+ __ mov(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
317
+ __ movzx_b(scratch, FieldOperand(scratch, Map::kInstanceTypeOffset));
318
+ ASSERT(kNotStringTag != 0);
319
+ __ test(scratch, Immediate(kNotStringTag));
320
+ __ j(not_zero, non_string_object, not_taken);
321
+ }
322
+
323
+
324
+ void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
325
+ Register receiver,
326
+ Register scratch1,
327
+ Register scratch2,
328
+ Label* miss) {
329
+ Label check_wrapper;
330
+
331
+ // Check if the object is a string leaving the instance type in the
332
+ // scratch register.
333
+ GenerateStringCheck(masm, receiver, scratch1, miss, &check_wrapper);
334
+
335
+ // Load length from the string and convert to a smi.
336
+ __ mov(eax, FieldOperand(receiver, String::kLengthOffset));
337
+ __ ret(0);
338
+
339
+ // Check if the object is a JSValue wrapper.
340
+ __ bind(&check_wrapper);
341
+ __ cmp(scratch1, JS_VALUE_TYPE);
342
+ __ j(not_equal, miss, not_taken);
343
+
344
+ // Check if the wrapped value is a string and load the length
345
+ // directly if it is.
346
+ __ mov(scratch2, FieldOperand(receiver, JSValue::kValueOffset));
347
+ GenerateStringCheck(masm, scratch2, scratch1, miss, miss);
348
+ __ mov(eax, FieldOperand(scratch2, String::kLengthOffset));
349
+ __ ret(0);
350
+ }
351
+
352
+
353
+ void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm,
354
+ Register receiver,
355
+ Register scratch1,
356
+ Register scratch2,
357
+ Label* miss_label) {
358
+ __ TryGetFunctionPrototype(receiver, scratch1, scratch2, miss_label);
359
+ __ mov(eax, Operand(scratch1));
360
+ __ ret(0);
361
+ }
362
+
363
+
364
+ // Load a fast property out of a holder object (src). In-object properties
365
+ // are loaded directly otherwise the property is loaded from the properties
366
+ // fixed array.
367
+ void StubCompiler::GenerateFastPropertyLoad(MacroAssembler* masm,
368
+ Register dst, Register src,
369
+ JSObject* holder, int index) {
370
+ // Adjust for the number of properties stored in the holder.
371
+ index -= holder->map()->inobject_properties();
372
+ if (index < 0) {
373
+ // Get the property straight out of the holder.
374
+ int offset = holder->map()->instance_size() + (index * kPointerSize);
375
+ __ mov(dst, FieldOperand(src, offset));
376
+ } else {
377
+ // Calculate the offset into the properties array.
378
+ int offset = index * kPointerSize + FixedArray::kHeaderSize;
379
+ __ mov(dst, FieldOperand(src, JSObject::kPropertiesOffset));
380
+ __ mov(dst, FieldOperand(dst, offset));
381
+ }
382
+ }
383
+
384
+
385
+ static void PushInterceptorArguments(MacroAssembler* masm,
386
+ Register receiver,
387
+ Register holder,
388
+ Register name,
389
+ JSObject* holder_obj) {
390
+ __ push(name);
391
+ InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor();
392
+ ASSERT(!Heap::InNewSpace(interceptor));
393
+ Register scratch = name;
394
+ __ mov(scratch, Immediate(Handle<Object>(interceptor)));
395
+ __ push(scratch);
396
+ __ push(receiver);
397
+ __ push(holder);
398
+ __ push(FieldOperand(scratch, InterceptorInfo::kDataOffset));
399
+ }
400
+
401
+
402
+ static void CompileCallLoadPropertyWithInterceptor(MacroAssembler* masm,
403
+ Register receiver,
404
+ Register holder,
405
+ Register name,
406
+ JSObject* holder_obj) {
407
+ PushInterceptorArguments(masm, receiver, holder, name, holder_obj);
408
+ __ CallExternalReference(
409
+ ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly)),
410
+ 5);
411
+ }
412
+
413
+
414
+ // Reserves space for the extra arguments to FastHandleApiCall in the
415
+ // caller's frame.
416
+ //
417
+ // These arguments are set by CheckPrototypes and GenerateFastApiCall.
418
+ static void ReserveSpaceForFastApiCall(MacroAssembler* masm, Register scratch) {
419
+ // ----------- S t a t e -------------
420
+ // -- esp[0] : return address
421
+ // -- esp[4] : last argument in the internal frame of the caller
422
+ // -----------------------------------
423
+ __ pop(scratch);
424
+ __ push(Immediate(Smi::FromInt(0)));
425
+ __ push(Immediate(Smi::FromInt(0)));
426
+ __ push(Immediate(Smi::FromInt(0)));
427
+ __ push(Immediate(Smi::FromInt(0)));
428
+ __ push(scratch);
429
+ }
430
+
431
+
432
+ // Undoes the effects of ReserveSpaceForFastApiCall.
433
+ static void FreeSpaceForFastApiCall(MacroAssembler* masm, Register scratch) {
434
+ // ----------- S t a t e -------------
435
+ // -- esp[0] : return address
436
+ // -- esp[4] : last fast api call extra argument
437
+ // -- ...
438
+ // -- esp[16] : first fast api call extra argument
439
+ // -- esp[20] : last argument in the internal frame
440
+ // -----------------------------------
441
+ __ pop(scratch);
442
+ __ add(Operand(esp), Immediate(kPointerSize * 4));
443
+ __ push(scratch);
444
+ }
445
+
446
+
447
+ // Generates call to FastHandleApiCall builtin.
448
+ static void GenerateFastApiCall(MacroAssembler* masm,
449
+ const CallOptimization& optimization,
450
+ int argc) {
451
+ // ----------- S t a t e -------------
452
+ // -- esp[0] : return address
453
+ // -- esp[4] : object passing the type check
454
+ // (last fast api call extra argument,
455
+ // set by CheckPrototypes)
456
+ // -- esp[8] : api call data
457
+ // -- esp[12] : api callback
458
+ // -- esp[16] : api function
459
+ // (first fast api call extra argument)
460
+ // -- esp[20] : last argument
461
+ // -- ...
462
+ // -- esp[(argc + 5) * 4] : first argument
463
+ // -- esp[(argc + 6) * 4] : receiver
464
+ // -----------------------------------
465
+
466
+ // Get the function and setup the context.
467
+ JSFunction* function = optimization.constant_function();
468
+ __ mov(edi, Immediate(Handle<JSFunction>(function)));
469
+ __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
470
+
471
+ // Pass the additional arguments FastHandleApiCall expects.
472
+ __ mov(Operand(esp, 4 * kPointerSize), edi);
473
+ bool info_loaded = false;
474
+ Object* callback = optimization.api_call_info()->callback();
475
+ if (Heap::InNewSpace(callback)) {
476
+ info_loaded = true;
477
+ __ mov(ecx, Handle<CallHandlerInfo>(optimization.api_call_info()));
478
+ __ mov(ebx, FieldOperand(ecx, CallHandlerInfo::kCallbackOffset));
479
+ __ mov(Operand(esp, 3 * kPointerSize), ebx);
480
+ } else {
481
+ __ mov(Operand(esp, 3 * kPointerSize), Immediate(Handle<Object>(callback)));
482
+ }
483
+ Object* call_data = optimization.api_call_info()->data();
484
+ if (Heap::InNewSpace(call_data)) {
485
+ if (!info_loaded) {
486
+ __ mov(ecx, Handle<CallHandlerInfo>(optimization.api_call_info()));
487
+ }
488
+ __ mov(ebx, FieldOperand(ecx, CallHandlerInfo::kDataOffset));
489
+ __ mov(Operand(esp, 2 * kPointerSize), ebx);
490
+ } else {
491
+ __ mov(Operand(esp, 2 * kPointerSize),
492
+ Immediate(Handle<Object>(call_data)));
493
+ }
494
+
495
+ // Set the number of arguments.
496
+ __ mov(eax, Immediate(argc + 4));
497
+
498
+ // Jump to the fast api call builtin (tail call).
499
+ Handle<Code> code = Handle<Code>(
500
+ Builtins::builtin(Builtins::FastHandleApiCall));
501
+ ParameterCount expected(0);
502
+ __ InvokeCode(code, expected, expected,
503
+ RelocInfo::CODE_TARGET, JUMP_FUNCTION);
504
+ }
505
+
506
+
507
+ class CallInterceptorCompiler BASE_EMBEDDED {
508
+ public:
509
+ CallInterceptorCompiler(StubCompiler* stub_compiler,
510
+ const ParameterCount& arguments,
511
+ Register name)
512
+ : stub_compiler_(stub_compiler),
513
+ arguments_(arguments),
514
+ name_(name) {}
515
+
516
+ void Compile(MacroAssembler* masm,
517
+ JSObject* object,
518
+ JSObject* holder,
519
+ String* name,
520
+ LookupResult* lookup,
521
+ Register receiver,
522
+ Register scratch1,
523
+ Register scratch2,
524
+ Register scratch3,
525
+ Label* miss) {
526
+ ASSERT(holder->HasNamedInterceptor());
527
+ ASSERT(!holder->GetNamedInterceptor()->getter()->IsUndefined());
528
+
529
+ // Check that the receiver isn't a smi.
530
+ __ test(receiver, Immediate(kSmiTagMask));
531
+ __ j(zero, miss, not_taken);
532
+
533
+ CallOptimization optimization(lookup);
534
+
535
+ if (optimization.is_constant_call()) {
536
+ CompileCacheable(masm,
537
+ object,
538
+ receiver,
539
+ scratch1,
540
+ scratch2,
541
+ scratch3,
542
+ holder,
543
+ lookup,
544
+ name,
545
+ optimization,
546
+ miss);
547
+ } else {
548
+ CompileRegular(masm,
549
+ object,
550
+ receiver,
551
+ scratch1,
552
+ scratch2,
553
+ scratch3,
554
+ name,
555
+ holder,
556
+ miss);
557
+ }
558
+ }
559
+
560
+ private:
561
+ void CompileCacheable(MacroAssembler* masm,
562
+ JSObject* object,
563
+ Register receiver,
564
+ Register scratch1,
565
+ Register scratch2,
566
+ Register scratch3,
567
+ JSObject* interceptor_holder,
568
+ LookupResult* lookup,
569
+ String* name,
570
+ const CallOptimization& optimization,
571
+ Label* miss_label) {
572
+ ASSERT(optimization.is_constant_call());
573
+ ASSERT(!lookup->holder()->IsGlobalObject());
574
+
575
+ int depth1 = kInvalidProtoDepth;
576
+ int depth2 = kInvalidProtoDepth;
577
+ bool can_do_fast_api_call = false;
578
+ if (optimization.is_simple_api_call() &&
579
+ !lookup->holder()->IsGlobalObject()) {
580
+ depth1 =
581
+ optimization.GetPrototypeDepthOfExpectedType(object,
582
+ interceptor_holder);
583
+ if (depth1 == kInvalidProtoDepth) {
584
+ depth2 =
585
+ optimization.GetPrototypeDepthOfExpectedType(interceptor_holder,
586
+ lookup->holder());
587
+ }
588
+ can_do_fast_api_call = (depth1 != kInvalidProtoDepth) ||
589
+ (depth2 != kInvalidProtoDepth);
590
+ }
591
+
592
+ __ IncrementCounter(&Counters::call_const_interceptor, 1);
593
+
594
+ if (can_do_fast_api_call) {
595
+ __ IncrementCounter(&Counters::call_const_interceptor_fast_api, 1);
596
+ ReserveSpaceForFastApiCall(masm, scratch1);
597
+ }
598
+
599
+ // Check that the maps from receiver to interceptor's holder
600
+ // haven't changed and thus we can invoke interceptor.
601
+ Label miss_cleanup;
602
+ Label* miss = can_do_fast_api_call ? &miss_cleanup : miss_label;
603
+ Register holder =
604
+ stub_compiler_->CheckPrototypes(object, receiver,
605
+ interceptor_holder, scratch1,
606
+ scratch2, scratch3, name, depth1, miss);
607
+
608
+ // Invoke an interceptor and if it provides a value,
609
+ // branch to |regular_invoke|.
610
+ Label regular_invoke;
611
+ LoadWithInterceptor(masm, receiver, holder, interceptor_holder,
612
+ &regular_invoke);
613
+
614
+ // Interceptor returned nothing for this property. Try to use cached
615
+ // constant function.
616
+
617
+ // Check that the maps from interceptor's holder to constant function's
618
+ // holder haven't changed and thus we can use cached constant function.
619
+ if (interceptor_holder != lookup->holder()) {
620
+ stub_compiler_->CheckPrototypes(interceptor_holder, receiver,
621
+ lookup->holder(), scratch1,
622
+ scratch2, scratch3, name, depth2, miss);
623
+ } else {
624
+ // CheckPrototypes has a side effect of fetching a 'holder'
625
+ // for API (object which is instanceof for the signature). It's
626
+ // safe to omit it here, as if present, it should be fetched
627
+ // by the previous CheckPrototypes.
628
+ ASSERT(depth2 == kInvalidProtoDepth);
629
+ }
630
+
631
+ // Invoke function.
632
+ if (can_do_fast_api_call) {
633
+ GenerateFastApiCall(masm, optimization, arguments_.immediate());
634
+ } else {
635
+ __ InvokeFunction(optimization.constant_function(), arguments_,
636
+ JUMP_FUNCTION);
637
+ }
638
+
639
+ // Deferred code for fast API call case---clean preallocated space.
640
+ if (can_do_fast_api_call) {
641
+ __ bind(&miss_cleanup);
642
+ FreeSpaceForFastApiCall(masm, scratch1);
643
+ __ jmp(miss_label);
644
+ }
645
+
646
+ // Invoke a regular function.
647
+ __ bind(&regular_invoke);
648
+ if (can_do_fast_api_call) {
649
+ FreeSpaceForFastApiCall(masm, scratch1);
650
+ }
651
+ }
652
+
653
+ void CompileRegular(MacroAssembler* masm,
654
+ JSObject* object,
655
+ Register receiver,
656
+ Register scratch1,
657
+ Register scratch2,
658
+ Register scratch3,
659
+ String* name,
660
+ JSObject* interceptor_holder,
661
+ Label* miss_label) {
662
+ Register holder =
663
+ stub_compiler_->CheckPrototypes(object, receiver, interceptor_holder,
664
+ scratch1, scratch2, scratch3, name,
665
+ miss_label);
666
+
667
+ __ EnterInternalFrame();
668
+ // Save the name_ register across the call.
669
+ __ push(name_);
670
+
671
+ PushInterceptorArguments(masm,
672
+ receiver,
673
+ holder,
674
+ name_,
675
+ interceptor_holder);
676
+
677
+ __ CallExternalReference(
678
+ ExternalReference(
679
+ IC_Utility(IC::kLoadPropertyWithInterceptorForCall)),
680
+ 5);
681
+
682
+ // Restore the name_ register.
683
+ __ pop(name_);
684
+ __ LeaveInternalFrame();
685
+ }
686
+
687
+ void LoadWithInterceptor(MacroAssembler* masm,
688
+ Register receiver,
689
+ Register holder,
690
+ JSObject* holder_obj,
691
+ Label* interceptor_succeeded) {
692
+ __ EnterInternalFrame();
693
+ __ push(holder); // Save the holder.
694
+ __ push(name_); // Save the name.
695
+
696
+ CompileCallLoadPropertyWithInterceptor(masm,
697
+ receiver,
698
+ holder,
699
+ name_,
700
+ holder_obj);
701
+
702
+ __ pop(name_); // Restore the name.
703
+ __ pop(receiver); // Restore the holder.
704
+ __ LeaveInternalFrame();
705
+
706
+ __ cmp(eax, Factory::no_interceptor_result_sentinel());
707
+ __ j(not_equal, interceptor_succeeded);
708
+ }
709
+
710
+ StubCompiler* stub_compiler_;
711
+ const ParameterCount& arguments_;
712
+ Register name_;
713
+ };
714
+
715
+
716
+ void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) {
717
+ ASSERT(kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC);
718
+ Code* code = NULL;
719
+ if (kind == Code::LOAD_IC) {
720
+ code = Builtins::builtin(Builtins::LoadIC_Miss);
721
+ } else {
722
+ code = Builtins::builtin(Builtins::KeyedLoadIC_Miss);
723
+ }
724
+
725
+ Handle<Code> ic(code);
726
+ __ jmp(ic, RelocInfo::CODE_TARGET);
727
+ }
728
+
729
+
730
+ // Both name_reg and receiver_reg are preserved on jumps to miss_label,
731
+ // but may be destroyed if store is successful.
732
+ void StubCompiler::GenerateStoreField(MacroAssembler* masm,
733
+ JSObject* object,
734
+ int index,
735
+ Map* transition,
736
+ Register receiver_reg,
737
+ Register name_reg,
738
+ Register scratch,
739
+ Label* miss_label) {
740
+ // Check that the object isn't a smi.
741
+ __ test(receiver_reg, Immediate(kSmiTagMask));
742
+ __ j(zero, miss_label, not_taken);
743
+
744
+ // Check that the map of the object hasn't changed.
745
+ __ cmp(FieldOperand(receiver_reg, HeapObject::kMapOffset),
746
+ Immediate(Handle<Map>(object->map())));
747
+ __ j(not_equal, miss_label, not_taken);
748
+
749
+ // Perform global security token check if needed.
750
+ if (object->IsJSGlobalProxy()) {
751
+ __ CheckAccessGlobalProxy(receiver_reg, scratch, miss_label);
752
+ }
753
+
754
+ // Stub never generated for non-global objects that require access
755
+ // checks.
756
+ ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
757
+
758
+ // Perform map transition for the receiver if necessary.
759
+ if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) {
760
+ // The properties must be extended before we can store the value.
761
+ // We jump to a runtime call that extends the properties array.
762
+ __ pop(scratch); // Return address.
763
+ __ push(receiver_reg);
764
+ __ push(Immediate(Handle<Map>(transition)));
765
+ __ push(eax);
766
+ __ push(scratch);
767
+ __ TailCallExternalReference(
768
+ ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage)), 3, 1);
769
+ return;
770
+ }
771
+
772
+ if (transition != NULL) {
773
+ // Update the map of the object; no write barrier updating is
774
+ // needed because the map is never in new space.
775
+ __ mov(FieldOperand(receiver_reg, HeapObject::kMapOffset),
776
+ Immediate(Handle<Map>(transition)));
777
+ }
778
+
779
+ // Adjust for the number of properties stored in the object. Even in the
780
+ // face of a transition we can use the old map here because the size of the
781
+ // object and the number of in-object properties is not going to change.
782
+ index -= object->map()->inobject_properties();
783
+
784
+ if (index < 0) {
785
+ // Set the property straight into the object.
786
+ int offset = object->map()->instance_size() + (index * kPointerSize);
787
+ __ mov(FieldOperand(receiver_reg, offset), eax);
788
+
789
+ // Update the write barrier for the array address.
790
+ // Pass the value being stored in the now unused name_reg.
791
+ __ mov(name_reg, Operand(eax));
792
+ __ RecordWrite(receiver_reg, offset, name_reg, scratch);
793
+ } else {
794
+ // Write to the properties array.
795
+ int offset = index * kPointerSize + FixedArray::kHeaderSize;
796
+ // Get the properties array (optimistically).
797
+ __ mov(scratch, FieldOperand(receiver_reg, JSObject::kPropertiesOffset));
798
+ __ mov(FieldOperand(scratch, offset), eax);
799
+
800
+ // Update the write barrier for the array address.
801
+ // Pass the value being stored in the now unused name_reg.
802
+ __ mov(name_reg, Operand(eax));
803
+ __ RecordWrite(scratch, offset, name_reg, receiver_reg);
804
+ }
805
+
806
+ // Return the value (register eax).
807
+ __ ret(0);
808
+ }
809
+
810
+
811
+ // Generate code to check that a global property cell is empty. Create
812
+ // the property cell at compilation time if no cell exists for the
813
+ // property.
814
+ static Object* GenerateCheckPropertyCell(MacroAssembler* masm,
815
+ GlobalObject* global,
816
+ String* name,
817
+ Register scratch,
818
+ Label* miss) {
819
+ Object* probe = global->EnsurePropertyCell(name);
820
+ if (probe->IsFailure()) return probe;
821
+ JSGlobalPropertyCell* cell = JSGlobalPropertyCell::cast(probe);
822
+ ASSERT(cell->value()->IsTheHole());
823
+ __ mov(scratch, Immediate(Handle<Object>(cell)));
824
+ __ cmp(FieldOperand(scratch, JSGlobalPropertyCell::kValueOffset),
825
+ Immediate(Factory::the_hole_value()));
826
+ __ j(not_equal, miss, not_taken);
827
+ return cell;
828
+ }
829
+
830
+
831
+ // Calls GenerateCheckPropertyCell for each global object in the prototype chain
832
+ // from object to (but not including) holder.
833
+ static Object* GenerateCheckPropertyCells(MacroAssembler* masm,
834
+ JSObject* object,
835
+ JSObject* holder,
836
+ String* name,
837
+ Register scratch,
838
+ Label* miss) {
839
+ JSObject* current = object;
840
+ while (current != holder) {
841
+ if (current->IsGlobalObject()) {
842
+ Object* cell = GenerateCheckPropertyCell(masm,
843
+ GlobalObject::cast(current),
844
+ name,
845
+ scratch,
846
+ miss);
847
+ if (cell->IsFailure()) {
848
+ return cell;
849
+ }
850
+ }
851
+ ASSERT(current->IsJSObject());
852
+ current = JSObject::cast(current->GetPrototype());
853
+ }
854
+ return NULL;
855
+ }
856
+
857
+
858
+ #undef __
859
+ #define __ ACCESS_MASM(masm())
860
+
861
+
862
+ Register StubCompiler::CheckPrototypes(JSObject* object,
863
+ Register object_reg,
864
+ JSObject* holder,
865
+ Register holder_reg,
866
+ Register scratch1,
867
+ Register scratch2,
868
+ String* name,
869
+ int save_at_depth,
870
+ Label* miss) {
871
+ // Make sure there's no overlap between holder and object registers.
872
+ ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg));
873
+ ASSERT(!scratch2.is(object_reg) && !scratch2.is(holder_reg)
874
+ && !scratch2.is(scratch1));
875
+ // Keep track of the current object in register reg.
876
+ Register reg = object_reg;
877
+ JSObject* current = object;
878
+ int depth = 0;
879
+
880
+ if (save_at_depth == depth) {
881
+ __ mov(Operand(esp, kPointerSize), reg);
882
+ }
883
+
884
+ // Traverse the prototype chain and check the maps in the prototype chain for
885
+ // fast and global objects or do negative lookup for normal objects.
886
+ while (current != holder) {
887
+ depth++;
888
+
889
+ // Only global objects and objects that do not require access
890
+ // checks are allowed in stubs.
891
+ ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
892
+
893
+ ASSERT(current->GetPrototype()->IsJSObject());
894
+ JSObject* prototype = JSObject::cast(current->GetPrototype());
895
+ if (!current->HasFastProperties() &&
896
+ !current->IsJSGlobalObject() &&
897
+ !current->IsJSGlobalProxy()) {
898
+ if (!name->IsSymbol()) {
899
+ Object* lookup_result = Heap::LookupSymbol(name);
900
+ if (lookup_result->IsFailure()) {
901
+ set_failure(Failure::cast(lookup_result));
902
+ return reg;
903
+ } else {
904
+ name = String::cast(lookup_result);
905
+ }
906
+ }
907
+ ASSERT(current->property_dictionary()->FindEntry(name) ==
908
+ StringDictionary::kNotFound);
909
+
910
+ GenerateDictionaryNegativeLookup(masm(),
911
+ miss,
912
+ reg,
913
+ name,
914
+ scratch1,
915
+ scratch2);
916
+ __ mov(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
917
+ reg = holder_reg; // from now the object is in holder_reg
918
+ __ mov(reg, FieldOperand(scratch1, Map::kPrototypeOffset));
919
+ } else if (Heap::InNewSpace(prototype)) {
920
+ // Get the map of the current object.
921
+ __ mov(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
922
+ __ cmp(Operand(scratch1), Immediate(Handle<Map>(current->map())));
923
+ // Branch on the result of the map check.
924
+ __ j(not_equal, miss, not_taken);
925
+ // Check access rights to the global object. This has to happen
926
+ // after the map check so that we know that the object is
927
+ // actually a global object.
928
+ if (current->IsJSGlobalProxy()) {
929
+ __ CheckAccessGlobalProxy(reg, scratch1, miss);
930
+
931
+ // Restore scratch register to be the map of the object.
932
+ // We load the prototype from the map in the scratch register.
933
+ __ mov(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
934
+ }
935
+ // The prototype is in new space; we cannot store a reference
936
+ // to it in the code. Load it from the map.
937
+ reg = holder_reg; // from now the object is in holder_reg
938
+ __ mov(reg, FieldOperand(scratch1, Map::kPrototypeOffset));
939
+ } else {
940
+ // Check the map of the current object.
941
+ __ cmp(FieldOperand(reg, HeapObject::kMapOffset),
942
+ Immediate(Handle<Map>(current->map())));
943
+ // Branch on the result of the map check.
944
+ __ j(not_equal, miss, not_taken);
945
+ // Check access rights to the global object. This has to happen
946
+ // after the map check so that we know that the object is
947
+ // actually a global object.
948
+ if (current->IsJSGlobalProxy()) {
949
+ __ CheckAccessGlobalProxy(reg, scratch1, miss);
950
+ }
951
+ // The prototype is in old space; load it directly.
952
+ reg = holder_reg; // from now the object is in holder_reg
953
+ __ mov(reg, Handle<JSObject>(prototype));
954
+ }
955
+
956
+ if (save_at_depth == depth) {
957
+ __ mov(Operand(esp, kPointerSize), reg);
958
+ }
959
+
960
+ // Go to the next object in the prototype chain.
961
+ current = prototype;
962
+ }
963
+ ASSERT(current == holder);
964
+
965
+ // Log the check depth.
966
+ LOG(IntEvent("check-maps-depth", depth + 1));
967
+
968
+ // Check the holder map.
969
+ __ cmp(FieldOperand(reg, HeapObject::kMapOffset),
970
+ Immediate(Handle<Map>(holder->map())));
971
+ __ j(not_equal, miss, not_taken);
972
+
973
+ // Perform security check for access to the global object.
974
+ ASSERT(holder->IsJSGlobalProxy() || !holder->IsAccessCheckNeeded());
975
+ if (holder->IsJSGlobalProxy()) {
976
+ __ CheckAccessGlobalProxy(reg, scratch1, miss);
977
+ };
978
+
979
+ // If we've skipped any global objects, it's not enough to verify
980
+ // that their maps haven't changed. We also need to check that the
981
+ // property cell for the property is still empty.
982
+ Object* result = GenerateCheckPropertyCells(masm(),
983
+ object,
984
+ holder,
985
+ name,
986
+ scratch1,
987
+ miss);
988
+ if (result->IsFailure()) set_failure(Failure::cast(result));
989
+
990
+ // Return the register containing the holder.
991
+ return reg;
992
+ }
993
+
994
+
995
+ void StubCompiler::GenerateLoadField(JSObject* object,
996
+ JSObject* holder,
997
+ Register receiver,
998
+ Register scratch1,
999
+ Register scratch2,
1000
+ Register scratch3,
1001
+ int index,
1002
+ String* name,
1003
+ Label* miss) {
1004
+ // Check that the receiver isn't a smi.
1005
+ __ test(receiver, Immediate(kSmiTagMask));
1006
+ __ j(zero, miss, not_taken);
1007
+
1008
+ // Check the prototype chain.
1009
+ Register reg =
1010
+ CheckPrototypes(object, receiver, holder,
1011
+ scratch1, scratch2, scratch3, name, miss);
1012
+
1013
+ // Get the value from the properties.
1014
+ GenerateFastPropertyLoad(masm(), eax, reg, holder, index);
1015
+ __ ret(0);
1016
+ }
1017
+
1018
+
1019
+ bool StubCompiler::GenerateLoadCallback(JSObject* object,
1020
+ JSObject* holder,
1021
+ Register receiver,
1022
+ Register name_reg,
1023
+ Register scratch1,
1024
+ Register scratch2,
1025
+ Register scratch3,
1026
+ AccessorInfo* callback,
1027
+ String* name,
1028
+ Label* miss,
1029
+ Failure** failure) {
1030
+ // Check that the receiver isn't a smi.
1031
+ __ test(receiver, Immediate(kSmiTagMask));
1032
+ __ j(zero, miss, not_taken);
1033
+
1034
+ // Check that the maps haven't changed.
1035
+ Register reg =
1036
+ CheckPrototypes(object, receiver, holder,
1037
+ scratch1, scratch2, scratch3, name, miss);
1038
+
1039
+ Handle<AccessorInfo> callback_handle(callback);
1040
+
1041
+ Register other = reg.is(scratch1) ? scratch2 : scratch1;
1042
+ __ EnterInternalFrame();
1043
+ __ PushHandleScope(other);
1044
+ // Push the stack address where the list of arguments ends
1045
+ __ mov(other, esp);
1046
+ __ sub(Operand(other), Immediate(2 * kPointerSize));
1047
+ __ push(other);
1048
+ __ push(receiver); // receiver
1049
+ __ push(reg); // holder
1050
+ // Push data from AccessorInfo.
1051
+ if (Heap::InNewSpace(callback_handle->data())) {
1052
+ __ mov(other, Immediate(callback_handle));
1053
+ __ push(FieldOperand(other, AccessorInfo::kDataOffset));
1054
+ } else {
1055
+ __ push(Immediate(Handle<Object>(callback_handle->data())));
1056
+ }
1057
+ __ push(name_reg); // name
1058
+ // Save a pointer to where we pushed the arguments pointer.
1059
+ // This will be passed as the const AccessorInfo& to the C++ callback.
1060
+ __ mov(eax, esp);
1061
+ __ add(Operand(eax), Immediate(4 * kPointerSize));
1062
+ __ mov(ebx, esp);
1063
+
1064
+ // Do call through the api.
1065
+ ASSERT_EQ(5, ApiGetterEntryStub::kStackSpace);
1066
+ Address getter_address = v8::ToCData<Address>(callback->getter());
1067
+ ApiFunction fun(getter_address);
1068
+ ApiGetterEntryStub stub(callback_handle, &fun);
1069
+ // Emitting a stub call may try to allocate (if the code is not
1070
+ // already generated). Do not allow the assembler to perform a
1071
+ // garbage collection but instead return the allocation failure
1072
+ // object.
1073
+ Object* result = masm()->TryCallStub(&stub);
1074
+ if (result->IsFailure()) {
1075
+ *failure = Failure::cast(result);
1076
+ return false;
1077
+ }
1078
+
1079
+ // We need to avoid using eax since that now holds the result.
1080
+ Register tmp = other.is(eax) ? reg : other;
1081
+ // Emitting PopHandleScope may try to allocate. Do not allow the
1082
+ // assembler to perform a garbage collection but instead return a
1083
+ // failure object.
1084
+ result = masm()->TryPopHandleScope(eax, tmp);
1085
+ if (result->IsFailure()) {
1086
+ *failure = Failure::cast(result);
1087
+ return false;
1088
+ }
1089
+ __ LeaveInternalFrame();
1090
+
1091
+ __ ret(0);
1092
+ return true;
1093
+ }
1094
+
1095
+
1096
+ void StubCompiler::GenerateLoadConstant(JSObject* object,
1097
+ JSObject* holder,
1098
+ Register receiver,
1099
+ Register scratch1,
1100
+ Register scratch2,
1101
+ Register scratch3,
1102
+ Object* value,
1103
+ String* name,
1104
+ Label* miss) {
1105
+ // Check that the receiver isn't a smi.
1106
+ __ test(receiver, Immediate(kSmiTagMask));
1107
+ __ j(zero, miss, not_taken);
1108
+
1109
+ // Check that the maps haven't changed.
1110
+ Register reg =
1111
+ CheckPrototypes(object, receiver, holder,
1112
+ scratch1, scratch2, scratch3, name, miss);
1113
+
1114
+ // Return the constant value.
1115
+ __ mov(eax, Handle<Object>(value));
1116
+ __ ret(0);
1117
+ }
1118
+
1119
+
1120
+ void StubCompiler::GenerateLoadInterceptor(JSObject* object,
1121
+ JSObject* interceptor_holder,
1122
+ LookupResult* lookup,
1123
+ Register receiver,
1124
+ Register name_reg,
1125
+ Register scratch1,
1126
+ Register scratch2,
1127
+ Register scratch3,
1128
+ String* name,
1129
+ Label* miss) {
1130
+ ASSERT(interceptor_holder->HasNamedInterceptor());
1131
+ ASSERT(!interceptor_holder->GetNamedInterceptor()->getter()->IsUndefined());
1132
+
1133
+ // Check that the receiver isn't a smi.
1134
+ __ test(receiver, Immediate(kSmiTagMask));
1135
+ __ j(zero, miss, not_taken);
1136
+
1137
+ // So far the most popular follow ups for interceptor loads are FIELD
1138
+ // and CALLBACKS, so inline only them, other cases may be added
1139
+ // later.
1140
+ bool compile_followup_inline = false;
1141
+ if (lookup->IsProperty() && lookup->IsCacheable()) {
1142
+ if (lookup->type() == FIELD) {
1143
+ compile_followup_inline = true;
1144
+ } else if (lookup->type() == CALLBACKS &&
1145
+ lookup->GetCallbackObject()->IsAccessorInfo() &&
1146
+ AccessorInfo::cast(lookup->GetCallbackObject())->getter() != NULL) {
1147
+ compile_followup_inline = true;
1148
+ }
1149
+ }
1150
+
1151
+ if (compile_followup_inline) {
1152
+ // Compile the interceptor call, followed by inline code to load the
1153
+ // property from further up the prototype chain if the call fails.
1154
+ // Check that the maps haven't changed.
1155
+ Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
1156
+ scratch1, scratch2, scratch3,
1157
+ name, miss);
1158
+ ASSERT(holder_reg.is(receiver) || holder_reg.is(scratch1));
1159
+
1160
+ // Save necessary data before invoking an interceptor.
1161
+ // Requires a frame to make GC aware of pushed pointers.
1162
+ __ EnterInternalFrame();
1163
+
1164
+ if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1165
+ // CALLBACKS case needs a receiver to be passed into C++ callback.
1166
+ __ push(receiver);
1167
+ }
1168
+ __ push(holder_reg);
1169
+ __ push(name_reg);
1170
+
1171
+ // Invoke an interceptor. Note: map checks from receiver to
1172
+ // interceptor's holder has been compiled before (see a caller
1173
+ // of this method.)
1174
+ CompileCallLoadPropertyWithInterceptor(masm(),
1175
+ receiver,
1176
+ holder_reg,
1177
+ name_reg,
1178
+ interceptor_holder);
1179
+
1180
+ // Check if interceptor provided a value for property. If it's
1181
+ // the case, return immediately.
1182
+ Label interceptor_failed;
1183
+ __ cmp(eax, Factory::no_interceptor_result_sentinel());
1184
+ __ j(equal, &interceptor_failed);
1185
+ __ LeaveInternalFrame();
1186
+ __ ret(0);
1187
+
1188
+ __ bind(&interceptor_failed);
1189
+ __ pop(name_reg);
1190
+ __ pop(holder_reg);
1191
+ if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1192
+ __ pop(receiver);
1193
+ }
1194
+
1195
+ __ LeaveInternalFrame();
1196
+
1197
+ // Check that the maps from interceptor's holder to lookup's holder
1198
+ // haven't changed. And load lookup's holder into holder_reg.
1199
+ if (interceptor_holder != lookup->holder()) {
1200
+ holder_reg = CheckPrototypes(interceptor_holder,
1201
+ holder_reg,
1202
+ lookup->holder(),
1203
+ scratch1,
1204
+ scratch2,
1205
+ scratch3,
1206
+ name,
1207
+ miss);
1208
+ }
1209
+
1210
+ if (lookup->type() == FIELD) {
1211
+ // We found FIELD property in prototype chain of interceptor's holder.
1212
+ // Retrieve a field from field's holder.
1213
+ GenerateFastPropertyLoad(masm(), eax, holder_reg,
1214
+ lookup->holder(), lookup->GetFieldIndex());
1215
+ __ ret(0);
1216
+ } else {
1217
+ // We found CALLBACKS property in prototype chain of interceptor's
1218
+ // holder.
1219
+ ASSERT(lookup->type() == CALLBACKS);
1220
+ ASSERT(lookup->GetCallbackObject()->IsAccessorInfo());
1221
+ AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
1222
+ ASSERT(callback != NULL);
1223
+ ASSERT(callback->getter() != NULL);
1224
+
1225
+ // Tail call to runtime.
1226
+ // Important invariant in CALLBACKS case: the code above must be
1227
+ // structured to never clobber |receiver| register.
1228
+ __ pop(scratch2); // return address
1229
+ __ push(receiver);
1230
+ __ push(holder_reg);
1231
+ __ mov(holder_reg, Immediate(Handle<AccessorInfo>(callback)));
1232
+ __ push(holder_reg);
1233
+ __ push(FieldOperand(holder_reg, AccessorInfo::kDataOffset));
1234
+ __ push(name_reg);
1235
+ __ push(scratch2); // restore return address
1236
+
1237
+ ExternalReference ref =
1238
+ ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
1239
+ __ TailCallExternalReference(ref, 5, 1);
1240
+ }
1241
+ } else { // !compile_followup_inline
1242
+ // Call the runtime system to load the interceptor.
1243
+ // Check that the maps haven't changed.
1244
+ Register holder_reg =
1245
+ CheckPrototypes(object, receiver, interceptor_holder,
1246
+ scratch1, scratch2, scratch3, name, miss);
1247
+ __ pop(scratch2); // save old return address
1248
+ PushInterceptorArguments(masm(), receiver, holder_reg,
1249
+ name_reg, interceptor_holder);
1250
+ __ push(scratch2); // restore old return address
1251
+
1252
+ ExternalReference ref = ExternalReference(
1253
+ IC_Utility(IC::kLoadPropertyWithInterceptorForLoad));
1254
+ __ TailCallExternalReference(ref, 5, 1);
1255
+ }
1256
+ }
1257
+
1258
+
1259
+ // TODO(1241006): Avoid having lazy compile stubs specialized by the
1260
+ // number of arguments. It is not needed anymore.
1261
+ Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
1262
+ // Enter an internal frame.
1263
+ __ EnterInternalFrame();
1264
+
1265
+ // Push a copy of the function onto the stack.
1266
+ __ push(edi);
1267
+
1268
+ __ push(edi); // function is also the parameter to the runtime call
1269
+ __ CallRuntime(Runtime::kLazyCompile, 1);
1270
+ __ pop(edi);
1271
+
1272
+ // Tear down temporary frame.
1273
+ __ LeaveInternalFrame();
1274
+
1275
+ // Do a tail-call of the compiled function.
1276
+ __ lea(ecx, FieldOperand(eax, Code::kHeaderSize));
1277
+ __ jmp(Operand(ecx));
1278
+
1279
+ return GetCodeWithFlags(flags, "LazyCompileStub");
1280
+ }
1281
+
1282
+
1283
+ void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
1284
+ if (kind_ == Code::KEYED_CALL_IC) {
1285
+ __ cmp(Operand(ecx), Immediate(Handle<String>(name)));
1286
+ __ j(not_equal, miss, not_taken);
1287
+ }
1288
+ }
1289
+
1290
+
1291
+ void CallStubCompiler::GenerateMissBranch() {
1292
+ Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
1293
+ __ jmp(ic, RelocInfo::CODE_TARGET);
1294
+ }
1295
+
1296
+
1297
+ Object* CallStubCompiler::CompileCallField(JSObject* object,
1298
+ JSObject* holder,
1299
+ int index,
1300
+ String* name) {
1301
+ // ----------- S t a t e -------------
1302
+ // -- ecx : name
1303
+ // -- esp[0] : return address
1304
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1305
+ // -- ...
1306
+ // -- esp[(argc + 1) * 4] : receiver
1307
+ // -----------------------------------
1308
+ Label miss;
1309
+
1310
+ GenerateNameCheck(name, &miss);
1311
+
1312
+ // Get the receiver from the stack.
1313
+ const int argc = arguments().immediate();
1314
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1315
+
1316
+ // Check that the receiver isn't a smi.
1317
+ __ test(edx, Immediate(kSmiTagMask));
1318
+ __ j(zero, &miss, not_taken);
1319
+
1320
+ // Do the right check and compute the holder register.
1321
+ Register reg = CheckPrototypes(object, edx, holder, ebx, eax, edi,
1322
+ name, &miss);
1323
+
1324
+ GenerateFastPropertyLoad(masm(), edi, reg, holder, index);
1325
+
1326
+ // Check that the function really is a function.
1327
+ __ test(edi, Immediate(kSmiTagMask));
1328
+ __ j(zero, &miss, not_taken);
1329
+ __ CmpObjectType(edi, JS_FUNCTION_TYPE, ebx);
1330
+ __ j(not_equal, &miss, not_taken);
1331
+
1332
+ // Patch the receiver on the stack with the global proxy if
1333
+ // necessary.
1334
+ if (object->IsGlobalObject()) {
1335
+ __ mov(edx, FieldOperand(edx, GlobalObject::kGlobalReceiverOffset));
1336
+ __ mov(Operand(esp, (argc + 1) * kPointerSize), edx);
1337
+ }
1338
+
1339
+ // Invoke the function.
1340
+ __ InvokeFunction(edi, arguments(), JUMP_FUNCTION);
1341
+
1342
+ // Handle call cache miss.
1343
+ __ bind(&miss);
1344
+ GenerateMissBranch();
1345
+
1346
+ // Return the generated code.
1347
+ return GetCode(FIELD, name);
1348
+ }
1349
+
1350
+
1351
+ Object* CallStubCompiler::CompileArrayPushCall(Object* object,
1352
+ JSObject* holder,
1353
+ JSFunction* function,
1354
+ String* name,
1355
+ CheckType check) {
1356
+ // ----------- S t a t e -------------
1357
+ // -- ecx : name
1358
+ // -- esp[0] : return address
1359
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1360
+ // -- ...
1361
+ // -- esp[(argc + 1) * 4] : receiver
1362
+ // -----------------------------------
1363
+ ASSERT(check == RECEIVER_MAP_CHECK);
1364
+
1365
+ // If object is not an array, bail out to regular call.
1366
+ if (!object->IsJSArray()) {
1367
+ return Heap::undefined_value();
1368
+ }
1369
+
1370
+ Label miss;
1371
+
1372
+ GenerateNameCheck(name, &miss);
1373
+
1374
+ // Get the receiver from the stack.
1375
+ const int argc = arguments().immediate();
1376
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1377
+
1378
+ // Check that the receiver isn't a smi.
1379
+ __ test(edx, Immediate(kSmiTagMask));
1380
+ __ j(zero, &miss);
1381
+
1382
+ CheckPrototypes(JSObject::cast(object), edx,
1383
+ holder, ebx,
1384
+ eax, edi, name, &miss);
1385
+
1386
+ if (argc == 0) {
1387
+ // Noop, return the length.
1388
+ __ mov(eax, FieldOperand(edx, JSArray::kLengthOffset));
1389
+ __ ret((argc + 1) * kPointerSize);
1390
+ } else {
1391
+ // Get the elements array of the object.
1392
+ __ mov(ebx, FieldOperand(edx, JSArray::kElementsOffset));
1393
+
1394
+ // Check that the elements are in fast mode (not dictionary).
1395
+ __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
1396
+ Immediate(Factory::fixed_array_map()));
1397
+ __ j(not_equal, &miss);
1398
+
1399
+ if (argc == 1) { // Otherwise fall through to call builtin.
1400
+ Label call_builtin, exit, with_write_barrier, attempt_to_grow_elements;
1401
+
1402
+ // Get the array's length into eax and calculate new length.
1403
+ __ mov(eax, FieldOperand(edx, JSArray::kLengthOffset));
1404
+ STATIC_ASSERT(kSmiTagSize == 1);
1405
+ STATIC_ASSERT(kSmiTag == 0);
1406
+ __ add(Operand(eax), Immediate(Smi::FromInt(argc)));
1407
+
1408
+ // Get the element's length into ecx.
1409
+ __ mov(ecx, FieldOperand(ebx, FixedArray::kLengthOffset));
1410
+
1411
+ // Check if we could survive without allocation.
1412
+ __ cmp(eax, Operand(ecx));
1413
+ __ j(greater, &attempt_to_grow_elements);
1414
+
1415
+ // Save new length.
1416
+ __ mov(FieldOperand(edx, JSArray::kLengthOffset), eax);
1417
+
1418
+ // Push the element.
1419
+ __ lea(edx, FieldOperand(ebx,
1420
+ eax, times_half_pointer_size,
1421
+ FixedArray::kHeaderSize - argc * kPointerSize));
1422
+ __ mov(ecx, Operand(esp, argc * kPointerSize));
1423
+ __ mov(Operand(edx, 0), ecx);
1424
+
1425
+ // Check if value is a smi.
1426
+ __ test(ecx, Immediate(kSmiTagMask));
1427
+ __ j(not_zero, &with_write_barrier);
1428
+
1429
+ __ bind(&exit);
1430
+ __ ret((argc + 1) * kPointerSize);
1431
+
1432
+ __ bind(&with_write_barrier);
1433
+
1434
+ __ InNewSpace(ebx, ecx, equal, &exit);
1435
+
1436
+ __ RecordWriteHelper(ebx, edx, ecx);
1437
+ __ ret((argc + 1) * kPointerSize);
1438
+
1439
+ __ bind(&attempt_to_grow_elements);
1440
+ ExternalReference new_space_allocation_top =
1441
+ ExternalReference::new_space_allocation_top_address();
1442
+ ExternalReference new_space_allocation_limit =
1443
+ ExternalReference::new_space_allocation_limit_address();
1444
+
1445
+ const int kAllocationDelta = 4;
1446
+ // Load top.
1447
+ __ mov(ecx, Operand::StaticVariable(new_space_allocation_top));
1448
+
1449
+ // Check if it's the end of elements.
1450
+ __ lea(edx, FieldOperand(ebx,
1451
+ eax, times_half_pointer_size,
1452
+ FixedArray::kHeaderSize - argc * kPointerSize));
1453
+ __ cmp(edx, Operand(ecx));
1454
+ __ j(not_equal, &call_builtin);
1455
+ __ add(Operand(ecx), Immediate(kAllocationDelta * kPointerSize));
1456
+ __ cmp(ecx, Operand::StaticVariable(new_space_allocation_limit));
1457
+ __ j(above, &call_builtin);
1458
+
1459
+ // We fit and could grow elements.
1460
+ __ mov(Operand::StaticVariable(new_space_allocation_top), ecx);
1461
+ __ mov(ecx, Operand(esp, argc * kPointerSize));
1462
+
1463
+ // Push the argument...
1464
+ __ mov(Operand(edx, 0), ecx);
1465
+ // ... and fill the rest with holes.
1466
+ for (int i = 1; i < kAllocationDelta; i++) {
1467
+ __ mov(Operand(edx, i * kPointerSize),
1468
+ Immediate(Factory::the_hole_value()));
1469
+ }
1470
+
1471
+ // Restore receiver to edx as finish sequence assumes it's here.
1472
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1473
+
1474
+ // Increment element's and array's sizes.
1475
+ __ add(FieldOperand(ebx, FixedArray::kLengthOffset),
1476
+ Immediate(Smi::FromInt(kAllocationDelta)));
1477
+ __ mov(FieldOperand(edx, JSArray::kLengthOffset), eax);
1478
+
1479
+ // Elements are in new space, so write barrier is not required.
1480
+ __ ret((argc + 1) * kPointerSize);
1481
+
1482
+ __ bind(&call_builtin);
1483
+ }
1484
+
1485
+ __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush),
1486
+ argc + 1,
1487
+ 1);
1488
+ }
1489
+
1490
+ __ bind(&miss);
1491
+ GenerateMissBranch();
1492
+
1493
+ // Return the generated code.
1494
+ return GetCode(function);
1495
+ }
1496
+
1497
+
1498
+ Object* CallStubCompiler::CompileArrayPopCall(Object* object,
1499
+ JSObject* holder,
1500
+ JSFunction* function,
1501
+ String* name,
1502
+ CheckType check) {
1503
+ // ----------- S t a t e -------------
1504
+ // -- ecx : name
1505
+ // -- esp[0] : return address
1506
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1507
+ // -- ...
1508
+ // -- esp[(argc + 1) * 4] : receiver
1509
+ // -----------------------------------
1510
+ ASSERT(check == RECEIVER_MAP_CHECK);
1511
+
1512
+ // If object is not an array, bail out to regular call.
1513
+ if (!object->IsJSArray()) {
1514
+ return Heap::undefined_value();
1515
+ }
1516
+
1517
+ Label miss, return_undefined, call_builtin;
1518
+
1519
+ GenerateNameCheck(name, &miss);
1520
+
1521
+ // Get the receiver from the stack.
1522
+ const int argc = arguments().immediate();
1523
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1524
+
1525
+ // Check that the receiver isn't a smi.
1526
+ __ test(edx, Immediate(kSmiTagMask));
1527
+ __ j(zero, &miss);
1528
+ CheckPrototypes(JSObject::cast(object), edx,
1529
+ holder, ebx,
1530
+ eax, edi, name, &miss);
1531
+
1532
+ // Get the elements array of the object.
1533
+ __ mov(ebx, FieldOperand(edx, JSArray::kElementsOffset));
1534
+
1535
+ // Check that the elements are in fast mode (not dictionary).
1536
+ __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
1537
+ Immediate(Factory::fixed_array_map()));
1538
+ __ j(not_equal, &miss);
1539
+
1540
+ // Get the array's length into ecx and calculate new length.
1541
+ __ mov(ecx, FieldOperand(edx, JSArray::kLengthOffset));
1542
+ __ sub(Operand(ecx), Immediate(Smi::FromInt(1)));
1543
+ __ j(negative, &return_undefined);
1544
+
1545
+ // Get the last element.
1546
+ STATIC_ASSERT(kSmiTagSize == 1);
1547
+ STATIC_ASSERT(kSmiTag == 0);
1548
+ __ mov(eax, FieldOperand(ebx,
1549
+ ecx, times_half_pointer_size,
1550
+ FixedArray::kHeaderSize));
1551
+ __ cmp(Operand(eax), Immediate(Factory::the_hole_value()));
1552
+ __ j(equal, &call_builtin);
1553
+
1554
+ // Set the array's length.
1555
+ __ mov(FieldOperand(edx, JSArray::kLengthOffset), ecx);
1556
+
1557
+ // Fill with the hole.
1558
+ __ mov(FieldOperand(ebx,
1559
+ ecx, times_half_pointer_size,
1560
+ FixedArray::kHeaderSize),
1561
+ Immediate(Factory::the_hole_value()));
1562
+ __ ret((argc + 1) * kPointerSize);
1563
+
1564
+ __ bind(&return_undefined);
1565
+ __ mov(eax, Immediate(Factory::undefined_value()));
1566
+ __ ret((argc + 1) * kPointerSize);
1567
+
1568
+ __ bind(&call_builtin);
1569
+ __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop),
1570
+ argc + 1,
1571
+ 1);
1572
+
1573
+ __ bind(&miss);
1574
+ GenerateMissBranch();
1575
+
1576
+ // Return the generated code.
1577
+ return GetCode(function);
1578
+ }
1579
+
1580
+
1581
+ Object* CallStubCompiler::CompileStringCharCodeAtCall(Object* object,
1582
+ JSObject* holder,
1583
+ JSFunction* function,
1584
+ String* name,
1585
+ CheckType check) {
1586
+ // ----------- S t a t e -------------
1587
+ // -- ecx : function name
1588
+ // -- esp[0] : return address
1589
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1590
+ // -- ...
1591
+ // -- esp[(argc + 1) * 4] : receiver
1592
+ // -----------------------------------
1593
+
1594
+ const int argc = arguments().immediate();
1595
+
1596
+ Label miss;
1597
+ Label index_out_of_range;
1598
+ GenerateNameCheck(name, &miss);
1599
+
1600
+ // Check that the maps starting from the prototype haven't changed.
1601
+ GenerateDirectLoadGlobalFunctionPrototype(masm(),
1602
+ Context::STRING_FUNCTION_INDEX,
1603
+ eax);
1604
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), eax, holder,
1605
+ ebx, edx, edi, name, &miss);
1606
+
1607
+ Register receiver = ebx;
1608
+ Register index = edi;
1609
+ Register scratch = edx;
1610
+ Register result = eax;
1611
+ __ mov(receiver, Operand(esp, (argc + 1) * kPointerSize));
1612
+ if (argc > 0) {
1613
+ __ mov(index, Operand(esp, (argc - 0) * kPointerSize));
1614
+ } else {
1615
+ __ Set(index, Immediate(Factory::undefined_value()));
1616
+ }
1617
+
1618
+ StringCharCodeAtGenerator char_code_at_generator(receiver,
1619
+ index,
1620
+ scratch,
1621
+ result,
1622
+ &miss, // When not a string.
1623
+ &miss, // When not a number.
1624
+ &index_out_of_range,
1625
+ STRING_INDEX_IS_NUMBER);
1626
+ char_code_at_generator.GenerateFast(masm());
1627
+ __ ret((argc + 1) * kPointerSize);
1628
+
1629
+ ICRuntimeCallHelper call_helper;
1630
+ char_code_at_generator.GenerateSlow(masm(), call_helper);
1631
+
1632
+ __ bind(&index_out_of_range);
1633
+ __ Set(eax, Immediate(Factory::nan_value()));
1634
+ __ ret((argc + 1) * kPointerSize);
1635
+
1636
+ __ bind(&miss);
1637
+
1638
+ GenerateMissBranch();
1639
+
1640
+ // Return the generated code.
1641
+ return GetCode(function);
1642
+ }
1643
+
1644
+
1645
+ Object* CallStubCompiler::CompileStringCharAtCall(Object* object,
1646
+ JSObject* holder,
1647
+ JSFunction* function,
1648
+ String* name,
1649
+ CheckType check) {
1650
+ // ----------- S t a t e -------------
1651
+ // -- ecx : function name
1652
+ // -- esp[0] : return address
1653
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1654
+ // -- ...
1655
+ // -- esp[(argc + 1) * 4] : receiver
1656
+ // -----------------------------------
1657
+
1658
+ const int argc = arguments().immediate();
1659
+
1660
+ Label miss;
1661
+ Label index_out_of_range;
1662
+
1663
+ GenerateNameCheck(name, &miss);
1664
+
1665
+ // Check that the maps starting from the prototype haven't changed.
1666
+ GenerateDirectLoadGlobalFunctionPrototype(masm(),
1667
+ Context::STRING_FUNCTION_INDEX,
1668
+ eax);
1669
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), eax, holder,
1670
+ ebx, edx, edi, name, &miss);
1671
+
1672
+ Register receiver = eax;
1673
+ Register index = edi;
1674
+ Register scratch1 = ebx;
1675
+ Register scratch2 = edx;
1676
+ Register result = eax;
1677
+ __ mov(receiver, Operand(esp, (argc + 1) * kPointerSize));
1678
+ if (argc > 0) {
1679
+ __ mov(index, Operand(esp, (argc - 0) * kPointerSize));
1680
+ } else {
1681
+ __ Set(index, Immediate(Factory::undefined_value()));
1682
+ }
1683
+
1684
+ StringCharAtGenerator char_at_generator(receiver,
1685
+ index,
1686
+ scratch1,
1687
+ scratch2,
1688
+ result,
1689
+ &miss, // When not a string.
1690
+ &miss, // When not a number.
1691
+ &index_out_of_range,
1692
+ STRING_INDEX_IS_NUMBER);
1693
+ char_at_generator.GenerateFast(masm());
1694
+ __ ret((argc + 1) * kPointerSize);
1695
+
1696
+ ICRuntimeCallHelper call_helper;
1697
+ char_at_generator.GenerateSlow(masm(), call_helper);
1698
+
1699
+ __ bind(&index_out_of_range);
1700
+ __ Set(eax, Immediate(Factory::empty_string()));
1701
+ __ ret((argc + 1) * kPointerSize);
1702
+
1703
+ __ bind(&miss);
1704
+ // Restore function name in ecx.
1705
+
1706
+ GenerateMissBranch();
1707
+
1708
+ // Return the generated code.
1709
+ return GetCode(function);
1710
+ }
1711
+
1712
+
1713
+ Object* CallStubCompiler::CompileCallConstant(Object* object,
1714
+ JSObject* holder,
1715
+ JSFunction* function,
1716
+ String* name,
1717
+ CheckType check) {
1718
+ // ----------- S t a t e -------------
1719
+ // -- ecx : name
1720
+ // -- esp[0] : return address
1721
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1722
+ // -- ...
1723
+ // -- esp[(argc + 1) * 4] : receiver
1724
+ // -----------------------------------
1725
+
1726
+ SharedFunctionInfo* function_info = function->shared();
1727
+ if (function_info->HasCustomCallGenerator()) {
1728
+ const int id = function_info->custom_call_generator_id();
1729
+ Object* result =
1730
+ CompileCustomCall(id, object, holder, function, name, check);
1731
+ // undefined means bail out to regular compiler.
1732
+ if (!result->IsUndefined()) {
1733
+ return result;
1734
+ }
1735
+ }
1736
+
1737
+ Label miss_in_smi_check;
1738
+
1739
+ GenerateNameCheck(name, &miss_in_smi_check);
1740
+
1741
+ // Get the receiver from the stack.
1742
+ const int argc = arguments().immediate();
1743
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1744
+
1745
+ // Check that the receiver isn't a smi.
1746
+ if (check != NUMBER_CHECK) {
1747
+ __ test(edx, Immediate(kSmiTagMask));
1748
+ __ j(zero, &miss_in_smi_check, not_taken);
1749
+ }
1750
+
1751
+ // Make sure that it's okay not to patch the on stack receiver
1752
+ // unless we're doing a receiver map check.
1753
+ ASSERT(!object->IsGlobalObject() || check == RECEIVER_MAP_CHECK);
1754
+
1755
+ CallOptimization optimization(function);
1756
+ int depth = kInvalidProtoDepth;
1757
+ Label miss;
1758
+
1759
+ switch (check) {
1760
+ case RECEIVER_MAP_CHECK:
1761
+ __ IncrementCounter(&Counters::call_const, 1);
1762
+
1763
+ if (optimization.is_simple_api_call() && !object->IsGlobalObject()) {
1764
+ depth = optimization.GetPrototypeDepthOfExpectedType(
1765
+ JSObject::cast(object), holder);
1766
+ }
1767
+
1768
+ if (depth != kInvalidProtoDepth) {
1769
+ __ IncrementCounter(&Counters::call_const_fast_api, 1);
1770
+ ReserveSpaceForFastApiCall(masm(), eax);
1771
+ }
1772
+
1773
+ // Check that the maps haven't changed.
1774
+ CheckPrototypes(JSObject::cast(object), edx, holder,
1775
+ ebx, eax, edi, name, depth, &miss);
1776
+
1777
+ // Patch the receiver on the stack with the global proxy if
1778
+ // necessary.
1779
+ if (object->IsGlobalObject()) {
1780
+ ASSERT(depth == kInvalidProtoDepth);
1781
+ __ mov(edx, FieldOperand(edx, GlobalObject::kGlobalReceiverOffset));
1782
+ __ mov(Operand(esp, (argc + 1) * kPointerSize), edx);
1783
+ }
1784
+ break;
1785
+
1786
+ case STRING_CHECK:
1787
+ if (!function->IsBuiltin()) {
1788
+ // Calling non-builtins with a value as receiver requires boxing.
1789
+ __ jmp(&miss);
1790
+ } else {
1791
+ // Check that the object is a string or a symbol.
1792
+ __ CmpObjectType(edx, FIRST_NONSTRING_TYPE, eax);
1793
+ __ j(above_equal, &miss, not_taken);
1794
+ // Check that the maps starting from the prototype haven't changed.
1795
+ GenerateDirectLoadGlobalFunctionPrototype(
1796
+ masm(), Context::STRING_FUNCTION_INDEX, eax);
1797
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), eax, holder,
1798
+ ebx, edx, edi, name, &miss);
1799
+ }
1800
+ break;
1801
+
1802
+ case NUMBER_CHECK: {
1803
+ if (!function->IsBuiltin()) {
1804
+ // Calling non-builtins with a value as receiver requires boxing.
1805
+ __ jmp(&miss);
1806
+ } else {
1807
+ Label fast;
1808
+ // Check that the object is a smi or a heap number.
1809
+ __ test(edx, Immediate(kSmiTagMask));
1810
+ __ j(zero, &fast, taken);
1811
+ __ CmpObjectType(edx, HEAP_NUMBER_TYPE, eax);
1812
+ __ j(not_equal, &miss, not_taken);
1813
+ __ bind(&fast);
1814
+ // Check that the maps starting from the prototype haven't changed.
1815
+ GenerateDirectLoadGlobalFunctionPrototype(
1816
+ masm(), Context::NUMBER_FUNCTION_INDEX, eax);
1817
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), eax, holder,
1818
+ ebx, edx, edi, name, &miss);
1819
+ }
1820
+ break;
1821
+ }
1822
+
1823
+ case BOOLEAN_CHECK: {
1824
+ if (!function->IsBuiltin()) {
1825
+ // Calling non-builtins with a value as receiver requires boxing.
1826
+ __ jmp(&miss);
1827
+ } else {
1828
+ Label fast;
1829
+ // Check that the object is a boolean.
1830
+ __ cmp(edx, Factory::true_value());
1831
+ __ j(equal, &fast, taken);
1832
+ __ cmp(edx, Factory::false_value());
1833
+ __ j(not_equal, &miss, not_taken);
1834
+ __ bind(&fast);
1835
+ // Check that the maps starting from the prototype haven't changed.
1836
+ GenerateDirectLoadGlobalFunctionPrototype(
1837
+ masm(), Context::BOOLEAN_FUNCTION_INDEX, eax);
1838
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), eax, holder,
1839
+ ebx, edx, edi, name, &miss);
1840
+ }
1841
+ break;
1842
+ }
1843
+
1844
+ default:
1845
+ UNREACHABLE();
1846
+ }
1847
+
1848
+ if (depth != kInvalidProtoDepth) {
1849
+ GenerateFastApiCall(masm(), optimization, argc);
1850
+ } else {
1851
+ __ InvokeFunction(function, arguments(), JUMP_FUNCTION);
1852
+ }
1853
+
1854
+ // Handle call cache miss.
1855
+ __ bind(&miss);
1856
+ if (depth != kInvalidProtoDepth) {
1857
+ FreeSpaceForFastApiCall(masm(), eax);
1858
+ }
1859
+ __ bind(&miss_in_smi_check);
1860
+ GenerateMissBranch();
1861
+
1862
+ // Return the generated code.
1863
+ return GetCode(function);
1864
+ }
1865
+
1866
+
1867
+ Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
1868
+ JSObject* holder,
1869
+ String* name) {
1870
+ // ----------- S t a t e -------------
1871
+ // -- ecx : name
1872
+ // -- esp[0] : return address
1873
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1874
+ // -- ...
1875
+ // -- esp[(argc + 1) * 4] : receiver
1876
+ // -----------------------------------
1877
+ Label miss;
1878
+
1879
+ GenerateNameCheck(name, &miss);
1880
+
1881
+ // Get the number of arguments.
1882
+ const int argc = arguments().immediate();
1883
+
1884
+ LookupResult lookup;
1885
+ LookupPostInterceptor(holder, name, &lookup);
1886
+
1887
+ // Get the receiver from the stack.
1888
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1889
+
1890
+ CallInterceptorCompiler compiler(this, arguments(), ecx);
1891
+ compiler.Compile(masm(),
1892
+ object,
1893
+ holder,
1894
+ name,
1895
+ &lookup,
1896
+ edx,
1897
+ ebx,
1898
+ edi,
1899
+ eax,
1900
+ &miss);
1901
+
1902
+ // Restore receiver.
1903
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1904
+
1905
+ // Check that the function really is a function.
1906
+ __ test(eax, Immediate(kSmiTagMask));
1907
+ __ j(zero, &miss, not_taken);
1908
+ __ CmpObjectType(eax, JS_FUNCTION_TYPE, ebx);
1909
+ __ j(not_equal, &miss, not_taken);
1910
+
1911
+ // Patch the receiver on the stack with the global proxy if
1912
+ // necessary.
1913
+ if (object->IsGlobalObject()) {
1914
+ __ mov(edx, FieldOperand(edx, GlobalObject::kGlobalReceiverOffset));
1915
+ __ mov(Operand(esp, (argc + 1) * kPointerSize), edx);
1916
+ }
1917
+
1918
+ // Invoke the function.
1919
+ __ mov(edi, eax);
1920
+ __ InvokeFunction(edi, arguments(), JUMP_FUNCTION);
1921
+
1922
+ // Handle load cache miss.
1923
+ __ bind(&miss);
1924
+ GenerateMissBranch();
1925
+
1926
+ // Return the generated code.
1927
+ return GetCode(INTERCEPTOR, name);
1928
+ }
1929
+
1930
+
1931
+ Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
1932
+ GlobalObject* holder,
1933
+ JSGlobalPropertyCell* cell,
1934
+ JSFunction* function,
1935
+ String* name) {
1936
+ // ----------- S t a t e -------------
1937
+ // -- ecx : name
1938
+ // -- esp[0] : return address
1939
+ // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1940
+ // -- ...
1941
+ // -- esp[(argc + 1) * 4] : receiver
1942
+ // -----------------------------------
1943
+ Label miss;
1944
+
1945
+ GenerateNameCheck(name, &miss);
1946
+
1947
+ // Get the number of arguments.
1948
+ const int argc = arguments().immediate();
1949
+
1950
+ // Get the receiver from the stack.
1951
+ __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));
1952
+
1953
+ // If the object is the holder then we know that it's a global
1954
+ // object which can only happen for contextual calls. In this case,
1955
+ // the receiver cannot be a smi.
1956
+ if (object != holder) {
1957
+ __ test(edx, Immediate(kSmiTagMask));
1958
+ __ j(zero, &miss, not_taken);
1959
+ }
1960
+
1961
+ // Check that the maps haven't changed.
1962
+ CheckPrototypes(object, edx, holder, ebx, eax, edi, name, &miss);
1963
+
1964
+ // Get the value from the cell.
1965
+ __ mov(edi, Immediate(Handle<JSGlobalPropertyCell>(cell)));
1966
+ __ mov(edi, FieldOperand(edi, JSGlobalPropertyCell::kValueOffset));
1967
+
1968
+ // Check that the cell contains the same function.
1969
+ if (Heap::InNewSpace(function)) {
1970
+ // We can't embed a pointer to a function in new space so we have
1971
+ // to verify that the shared function info is unchanged. This has
1972
+ // the nice side effect that multiple closures based on the same
1973
+ // function can all use this call IC. Before we load through the
1974
+ // function, we have to verify that it still is a function.
1975
+ __ test(edi, Immediate(kSmiTagMask));
1976
+ __ j(zero, &miss, not_taken);
1977
+ __ CmpObjectType(edi, JS_FUNCTION_TYPE, ebx);
1978
+ __ j(not_equal, &miss, not_taken);
1979
+
1980
+ // Check the shared function info. Make sure it hasn't changed.
1981
+ __ cmp(FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset),
1982
+ Immediate(Handle<SharedFunctionInfo>(function->shared())));
1983
+ __ j(not_equal, &miss, not_taken);
1984
+ } else {
1985
+ __ cmp(Operand(edi), Immediate(Handle<JSFunction>(function)));
1986
+ __ j(not_equal, &miss, not_taken);
1987
+ }
1988
+
1989
+ // Patch the receiver on the stack with the global proxy.
1990
+ if (object->IsGlobalObject()) {
1991
+ __ mov(edx, FieldOperand(edx, GlobalObject::kGlobalReceiverOffset));
1992
+ __ mov(Operand(esp, (argc + 1) * kPointerSize), edx);
1993
+ }
1994
+
1995
+ // Setup the context (function already in edi).
1996
+ __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
1997
+
1998
+ // Jump to the cached code (tail call).
1999
+ __ IncrementCounter(&Counters::call_global_inline, 1);
2000
+ ASSERT(function->is_compiled());
2001
+ Handle<Code> code(function->code());
2002
+ ParameterCount expected(function->shared()->formal_parameter_count());
2003
+ __ InvokeCode(code, expected, arguments(),
2004
+ RelocInfo::CODE_TARGET, JUMP_FUNCTION);
2005
+
2006
+ // Handle call cache miss.
2007
+ __ bind(&miss);
2008
+ __ IncrementCounter(&Counters::call_global_inline_miss, 1);
2009
+ GenerateMissBranch();
2010
+
2011
+ // Return the generated code.
2012
+ return GetCode(NORMAL, name);
2013
+ }
2014
+
2015
+
2016
+ Object* StoreStubCompiler::CompileStoreField(JSObject* object,
2017
+ int index,
2018
+ Map* transition,
2019
+ String* name) {
2020
+ // ----------- S t a t e -------------
2021
+ // -- eax : value
2022
+ // -- ecx : name
2023
+ // -- edx : receiver
2024
+ // -- esp[0] : return address
2025
+ // -----------------------------------
2026
+ Label miss;
2027
+
2028
+ // Generate store field code. Trashes the name register.
2029
+ GenerateStoreField(masm(),
2030
+ object,
2031
+ index,
2032
+ transition,
2033
+ edx, ecx, ebx,
2034
+ &miss);
2035
+
2036
+ // Handle store cache miss.
2037
+ __ bind(&miss);
2038
+ __ mov(ecx, Immediate(Handle<String>(name))); // restore name
2039
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
2040
+ __ jmp(ic, RelocInfo::CODE_TARGET);
2041
+
2042
+ // Return the generated code.
2043
+ return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
2044
+ }
2045
+
2046
+
2047
+ Object* StoreStubCompiler::CompileStoreCallback(JSObject* object,
2048
+ AccessorInfo* callback,
2049
+ String* name) {
2050
+ // ----------- S t a t e -------------
2051
+ // -- eax : value
2052
+ // -- ecx : name
2053
+ // -- edx : receiver
2054
+ // -- esp[0] : return address
2055
+ // -----------------------------------
2056
+ Label miss;
2057
+
2058
+ // Check that the object isn't a smi.
2059
+ __ test(edx, Immediate(kSmiTagMask));
2060
+ __ j(zero, &miss, not_taken);
2061
+
2062
+ // Check that the map of the object hasn't changed.
2063
+ __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
2064
+ Immediate(Handle<Map>(object->map())));
2065
+ __ j(not_equal, &miss, not_taken);
2066
+
2067
+ // Perform global security token check if needed.
2068
+ if (object->IsJSGlobalProxy()) {
2069
+ __ CheckAccessGlobalProxy(edx, ebx, &miss);
2070
+ }
2071
+
2072
+ // Stub never generated for non-global objects that require access
2073
+ // checks.
2074
+ ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
2075
+
2076
+ __ pop(ebx); // remove the return address
2077
+ __ push(edx); // receiver
2078
+ __ push(Immediate(Handle<AccessorInfo>(callback))); // callback info
2079
+ __ push(ecx); // name
2080
+ __ push(eax); // value
2081
+ __ push(ebx); // restore return address
2082
+
2083
+ // Do tail-call to the runtime system.
2084
+ ExternalReference store_callback_property =
2085
+ ExternalReference(IC_Utility(IC::kStoreCallbackProperty));
2086
+ __ TailCallExternalReference(store_callback_property, 4, 1);
2087
+
2088
+ // Handle store cache miss.
2089
+ __ bind(&miss);
2090
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
2091
+ __ jmp(ic, RelocInfo::CODE_TARGET);
2092
+
2093
+ // Return the generated code.
2094
+ return GetCode(CALLBACKS, name);
2095
+ }
2096
+
2097
+
2098
+ Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver,
2099
+ String* name) {
2100
+ // ----------- S t a t e -------------
2101
+ // -- eax : value
2102
+ // -- ecx : name
2103
+ // -- edx : receiver
2104
+ // -- esp[0] : return address
2105
+ // -----------------------------------
2106
+ Label miss;
2107
+
2108
+ // Check that the object isn't a smi.
2109
+ __ test(edx, Immediate(kSmiTagMask));
2110
+ __ j(zero, &miss, not_taken);
2111
+
2112
+ // Check that the map of the object hasn't changed.
2113
+ __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
2114
+ Immediate(Handle<Map>(receiver->map())));
2115
+ __ j(not_equal, &miss, not_taken);
2116
+
2117
+ // Perform global security token check if needed.
2118
+ if (receiver->IsJSGlobalProxy()) {
2119
+ __ CheckAccessGlobalProxy(edx, ebx, &miss);
2120
+ }
2121
+
2122
+ // Stub never generated for non-global objects that require access
2123
+ // checks.
2124
+ ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
2125
+
2126
+ __ pop(ebx); // remove the return address
2127
+ __ push(edx); // receiver
2128
+ __ push(ecx); // name
2129
+ __ push(eax); // value
2130
+ __ push(ebx); // restore return address
2131
+
2132
+ // Do tail-call to the runtime system.
2133
+ ExternalReference store_ic_property =
2134
+ ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
2135
+ __ TailCallExternalReference(store_ic_property, 3, 1);
2136
+
2137
+ // Handle store cache miss.
2138
+ __ bind(&miss);
2139
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
2140
+ __ jmp(ic, RelocInfo::CODE_TARGET);
2141
+
2142
+ // Return the generated code.
2143
+ return GetCode(INTERCEPTOR, name);
2144
+ }
2145
+
2146
+
2147
+ Object* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object,
2148
+ JSGlobalPropertyCell* cell,
2149
+ String* name) {
2150
+ // ----------- S t a t e -------------
2151
+ // -- eax : value
2152
+ // -- ecx : name
2153
+ // -- edx : receiver
2154
+ // -- esp[0] : return address
2155
+ // -----------------------------------
2156
+ Label miss;
2157
+
2158
+ // Check that the map of the global has not changed.
2159
+ __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
2160
+ Immediate(Handle<Map>(object->map())));
2161
+ __ j(not_equal, &miss, not_taken);
2162
+
2163
+ // Store the value in the cell.
2164
+ __ mov(ecx, Immediate(Handle<JSGlobalPropertyCell>(cell)));
2165
+ __ mov(FieldOperand(ecx, JSGlobalPropertyCell::kValueOffset), eax);
2166
+
2167
+ // Return the value (register eax).
2168
+ __ IncrementCounter(&Counters::named_store_global_inline, 1);
2169
+ __ ret(0);
2170
+
2171
+ // Handle store cache miss.
2172
+ __ bind(&miss);
2173
+ __ IncrementCounter(&Counters::named_store_global_inline_miss, 1);
2174
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
2175
+ __ jmp(ic, RelocInfo::CODE_TARGET);
2176
+
2177
+ // Return the generated code.
2178
+ return GetCode(NORMAL, name);
2179
+ }
2180
+
2181
+
2182
+ Object* KeyedStoreStubCompiler::CompileStoreField(JSObject* object,
2183
+ int index,
2184
+ Map* transition,
2185
+ String* name) {
2186
+ // ----------- S t a t e -------------
2187
+ // -- eax : value
2188
+ // -- ecx : key
2189
+ // -- edx : receiver
2190
+ // -- esp[0] : return address
2191
+ // -----------------------------------
2192
+ Label miss;
2193
+
2194
+ __ IncrementCounter(&Counters::keyed_store_field, 1);
2195
+
2196
+ // Check that the name has not changed.
2197
+ __ cmp(Operand(ecx), Immediate(Handle<String>(name)));
2198
+ __ j(not_equal, &miss, not_taken);
2199
+
2200
+ // Generate store field code. Trashes the name register.
2201
+ GenerateStoreField(masm(),
2202
+ object,
2203
+ index,
2204
+ transition,
2205
+ edx, ecx, ebx,
2206
+ &miss);
2207
+
2208
+ // Handle store cache miss.
2209
+ __ bind(&miss);
2210
+ __ DecrementCounter(&Counters::keyed_store_field, 1);
2211
+ Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Miss));
2212
+ __ jmp(ic, RelocInfo::CODE_TARGET);
2213
+
2214
+ // Return the generated code.
2215
+ return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
2216
+ }
2217
+
2218
+
2219
+ Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
2220
+ JSObject* object,
2221
+ JSObject* last) {
2222
+ // ----------- S t a t e -------------
2223
+ // -- eax : receiver
2224
+ // -- ecx : name
2225
+ // -- esp[0] : return address
2226
+ // -----------------------------------
2227
+ Label miss;
2228
+
2229
+ // Check that the receiver isn't a smi.
2230
+ __ test(eax, Immediate(kSmiTagMask));
2231
+ __ j(zero, &miss, not_taken);
2232
+
2233
+ ASSERT(last->IsGlobalObject() || last->HasFastProperties());
2234
+
2235
+ // Check the maps of the full prototype chain. Also check that
2236
+ // global property cells up to (but not including) the last object
2237
+ // in the prototype chain are empty.
2238
+ CheckPrototypes(object, eax, last, ebx, edx, edi, name, &miss);
2239
+
2240
+ // If the last object in the prototype chain is a global object,
2241
+ // check that the global property cell is empty.
2242
+ if (last->IsGlobalObject()) {
2243
+ Object* cell = GenerateCheckPropertyCell(masm(),
2244
+ GlobalObject::cast(last),
2245
+ name,
2246
+ edx,
2247
+ &miss);
2248
+ if (cell->IsFailure()) return cell;
2249
+ }
2250
+
2251
+ // Return undefined if maps of the full prototype chain are still the
2252
+ // same and no global property with this name contains a value.
2253
+ __ mov(eax, Factory::undefined_value());
2254
+ __ ret(0);
2255
+
2256
+ __ bind(&miss);
2257
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2258
+
2259
+ // Return the generated code.
2260
+ return GetCode(NONEXISTENT, Heap::empty_string());
2261
+ }
2262
+
2263
+
2264
+ Object* LoadStubCompiler::CompileLoadField(JSObject* object,
2265
+ JSObject* holder,
2266
+ int index,
2267
+ String* name) {
2268
+ // ----------- S t a t e -------------
2269
+ // -- eax : receiver
2270
+ // -- ecx : name
2271
+ // -- esp[0] : return address
2272
+ // -----------------------------------
2273
+ Label miss;
2274
+
2275
+ GenerateLoadField(object, holder, eax, ebx, edx, edi, index, name, &miss);
2276
+ __ bind(&miss);
2277
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2278
+
2279
+ // Return the generated code.
2280
+ return GetCode(FIELD, name);
2281
+ }
2282
+
2283
+
2284
+ Object* LoadStubCompiler::CompileLoadCallback(String* name,
2285
+ JSObject* object,
2286
+ JSObject* holder,
2287
+ AccessorInfo* callback) {
2288
+ // ----------- S t a t e -------------
2289
+ // -- eax : receiver
2290
+ // -- ecx : name
2291
+ // -- esp[0] : return address
2292
+ // -----------------------------------
2293
+ Label miss;
2294
+
2295
+ Failure* failure = Failure::InternalError();
2296
+ bool success = GenerateLoadCallback(object, holder, eax, ecx, ebx, edx, edi,
2297
+ callback, name, &miss, &failure);
2298
+ if (!success) return failure;
2299
+
2300
+ __ bind(&miss);
2301
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2302
+
2303
+ // Return the generated code.
2304
+ return GetCode(CALLBACKS, name);
2305
+ }
2306
+
2307
+
2308
+ Object* LoadStubCompiler::CompileLoadConstant(JSObject* object,
2309
+ JSObject* holder,
2310
+ Object* value,
2311
+ String* name) {
2312
+ // ----------- S t a t e -------------
2313
+ // -- eax : receiver
2314
+ // -- ecx : name
2315
+ // -- esp[0] : return address
2316
+ // -----------------------------------
2317
+ Label miss;
2318
+
2319
+ GenerateLoadConstant(object, holder, eax, ebx, edx, edi, value, name, &miss);
2320
+ __ bind(&miss);
2321
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2322
+
2323
+ // Return the generated code.
2324
+ return GetCode(CONSTANT_FUNCTION, name);
2325
+ }
2326
+
2327
+
2328
+ Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
2329
+ JSObject* holder,
2330
+ String* name) {
2331
+ // ----------- S t a t e -------------
2332
+ // -- eax : receiver
2333
+ // -- ecx : name
2334
+ // -- esp[0] : return address
2335
+ // -----------------------------------
2336
+ Label miss;
2337
+
2338
+ LookupResult lookup;
2339
+ LookupPostInterceptor(holder, name, &lookup);
2340
+
2341
+ // TODO(368): Compile in the whole chain: all the interceptors in
2342
+ // prototypes and ultimate answer.
2343
+ GenerateLoadInterceptor(receiver,
2344
+ holder,
2345
+ &lookup,
2346
+ eax,
2347
+ ecx,
2348
+ edx,
2349
+ ebx,
2350
+ edi,
2351
+ name,
2352
+ &miss);
2353
+
2354
+ __ bind(&miss);
2355
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2356
+
2357
+ // Return the generated code.
2358
+ return GetCode(INTERCEPTOR, name);
2359
+ }
2360
+
2361
+
2362
+ Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object,
2363
+ GlobalObject* holder,
2364
+ JSGlobalPropertyCell* cell,
2365
+ String* name,
2366
+ bool is_dont_delete) {
2367
+ // ----------- S t a t e -------------
2368
+ // -- eax : receiver
2369
+ // -- ecx : name
2370
+ // -- esp[0] : return address
2371
+ // -----------------------------------
2372
+ Label miss;
2373
+
2374
+ // If the object is the holder then we know that it's a global
2375
+ // object which can only happen for contextual loads. In this case,
2376
+ // the receiver cannot be a smi.
2377
+ if (object != holder) {
2378
+ __ test(eax, Immediate(kSmiTagMask));
2379
+ __ j(zero, &miss, not_taken);
2380
+ }
2381
+
2382
+ // Check that the maps haven't changed.
2383
+ CheckPrototypes(object, eax, holder, ebx, edx, edi, name, &miss);
2384
+
2385
+ // Get the value from the cell.
2386
+ __ mov(ebx, Immediate(Handle<JSGlobalPropertyCell>(cell)));
2387
+ __ mov(ebx, FieldOperand(ebx, JSGlobalPropertyCell::kValueOffset));
2388
+
2389
+ // Check for deleted property if property can actually be deleted.
2390
+ if (!is_dont_delete) {
2391
+ __ cmp(ebx, Factory::the_hole_value());
2392
+ __ j(equal, &miss, not_taken);
2393
+ } else if (FLAG_debug_code) {
2394
+ __ cmp(ebx, Factory::the_hole_value());
2395
+ __ Check(not_equal, "DontDelete cells can't contain the hole");
2396
+ }
2397
+
2398
+ __ IncrementCounter(&Counters::named_load_global_inline, 1);
2399
+ __ mov(eax, ebx);
2400
+ __ ret(0);
2401
+
2402
+ __ bind(&miss);
2403
+ __ IncrementCounter(&Counters::named_load_global_inline_miss, 1);
2404
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2405
+
2406
+ // Return the generated code.
2407
+ return GetCode(NORMAL, name);
2408
+ }
2409
+
2410
+
2411
+ Object* KeyedLoadStubCompiler::CompileLoadField(String* name,
2412
+ JSObject* receiver,
2413
+ JSObject* holder,
2414
+ int index) {
2415
+ // ----------- S t a t e -------------
2416
+ // -- eax : key
2417
+ // -- edx : receiver
2418
+ // -- esp[0] : return address
2419
+ // -----------------------------------
2420
+ Label miss;
2421
+
2422
+ __ IncrementCounter(&Counters::keyed_load_field, 1);
2423
+
2424
+ // Check that the name has not changed.
2425
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2426
+ __ j(not_equal, &miss, not_taken);
2427
+
2428
+ GenerateLoadField(receiver, holder, edx, ebx, ecx, edi, index, name, &miss);
2429
+
2430
+ __ bind(&miss);
2431
+ __ DecrementCounter(&Counters::keyed_load_field, 1);
2432
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2433
+
2434
+ // Return the generated code.
2435
+ return GetCode(FIELD, name);
2436
+ }
2437
+
2438
+
2439
+ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
2440
+ JSObject* receiver,
2441
+ JSObject* holder,
2442
+ AccessorInfo* callback) {
2443
+ // ----------- S t a t e -------------
2444
+ // -- eax : key
2445
+ // -- edx : receiver
2446
+ // -- esp[0] : return address
2447
+ // -----------------------------------
2448
+ Label miss;
2449
+
2450
+ __ IncrementCounter(&Counters::keyed_load_callback, 1);
2451
+
2452
+ // Check that the name has not changed.
2453
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2454
+ __ j(not_equal, &miss, not_taken);
2455
+
2456
+ Failure* failure = Failure::InternalError();
2457
+ bool success = GenerateLoadCallback(receiver, holder, edx, eax, ebx, ecx, edi,
2458
+ callback, name, &miss, &failure);
2459
+ if (!success) return failure;
2460
+
2461
+ __ bind(&miss);
2462
+ __ DecrementCounter(&Counters::keyed_load_callback, 1);
2463
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2464
+
2465
+ // Return the generated code.
2466
+ return GetCode(CALLBACKS, name);
2467
+ }
2468
+
2469
+
2470
+ Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
2471
+ JSObject* receiver,
2472
+ JSObject* holder,
2473
+ Object* value) {
2474
+ // ----------- S t a t e -------------
2475
+ // -- eax : key
2476
+ // -- edx : receiver
2477
+ // -- esp[0] : return address
2478
+ // -----------------------------------
2479
+ Label miss;
2480
+
2481
+ __ IncrementCounter(&Counters::keyed_load_constant_function, 1);
2482
+
2483
+ // Check that the name has not changed.
2484
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2485
+ __ j(not_equal, &miss, not_taken);
2486
+
2487
+ GenerateLoadConstant(receiver, holder, edx, ebx, ecx, edi,
2488
+ value, name, &miss);
2489
+ __ bind(&miss);
2490
+ __ DecrementCounter(&Counters::keyed_load_constant_function, 1);
2491
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2492
+
2493
+ // Return the generated code.
2494
+ return GetCode(CONSTANT_FUNCTION, name);
2495
+ }
2496
+
2497
+
2498
+ Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
2499
+ JSObject* holder,
2500
+ String* name) {
2501
+ // ----------- S t a t e -------------
2502
+ // -- eax : key
2503
+ // -- edx : receiver
2504
+ // -- esp[0] : return address
2505
+ // -----------------------------------
2506
+ Label miss;
2507
+
2508
+ __ IncrementCounter(&Counters::keyed_load_interceptor, 1);
2509
+
2510
+ // Check that the name has not changed.
2511
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2512
+ __ j(not_equal, &miss, not_taken);
2513
+
2514
+ LookupResult lookup;
2515
+ LookupPostInterceptor(holder, name, &lookup);
2516
+ GenerateLoadInterceptor(receiver,
2517
+ holder,
2518
+ &lookup,
2519
+ edx,
2520
+ eax,
2521
+ ecx,
2522
+ ebx,
2523
+ edi,
2524
+ name,
2525
+ &miss);
2526
+ __ bind(&miss);
2527
+ __ DecrementCounter(&Counters::keyed_load_interceptor, 1);
2528
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2529
+
2530
+ // Return the generated code.
2531
+ return GetCode(INTERCEPTOR, name);
2532
+ }
2533
+
2534
+
2535
+
2536
+
2537
+ Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
2538
+ // ----------- S t a t e -------------
2539
+ // -- eax : key
2540
+ // -- edx : receiver
2541
+ // -- esp[0] : return address
2542
+ // -----------------------------------
2543
+ Label miss;
2544
+
2545
+ __ IncrementCounter(&Counters::keyed_load_array_length, 1);
2546
+
2547
+ // Check that the name has not changed.
2548
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2549
+ __ j(not_equal, &miss, not_taken);
2550
+
2551
+ GenerateLoadArrayLength(masm(), edx, ecx, &miss);
2552
+ __ bind(&miss);
2553
+ __ DecrementCounter(&Counters::keyed_load_array_length, 1);
2554
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2555
+
2556
+ // Return the generated code.
2557
+ return GetCode(CALLBACKS, name);
2558
+ }
2559
+
2560
+
2561
+ Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
2562
+ // ----------- S t a t e -------------
2563
+ // -- eax : key
2564
+ // -- edx : receiver
2565
+ // -- esp[0] : return address
2566
+ // -----------------------------------
2567
+ Label miss;
2568
+
2569
+ __ IncrementCounter(&Counters::keyed_load_string_length, 1);
2570
+
2571
+ // Check that the name has not changed.
2572
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2573
+ __ j(not_equal, &miss, not_taken);
2574
+
2575
+ GenerateLoadStringLength(masm(), edx, ecx, ebx, &miss);
2576
+ __ bind(&miss);
2577
+ __ DecrementCounter(&Counters::keyed_load_string_length, 1);
2578
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2579
+
2580
+ // Return the generated code.
2581
+ return GetCode(CALLBACKS, name);
2582
+ }
2583
+
2584
+
2585
+ Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
2586
+ // ----------- S t a t e -------------
2587
+ // -- eax : key
2588
+ // -- edx : receiver
2589
+ // -- esp[0] : return address
2590
+ // -----------------------------------
2591
+ Label miss;
2592
+
2593
+ __ IncrementCounter(&Counters::keyed_load_function_prototype, 1);
2594
+
2595
+ // Check that the name has not changed.
2596
+ __ cmp(Operand(eax), Immediate(Handle<String>(name)));
2597
+ __ j(not_equal, &miss, not_taken);
2598
+
2599
+ GenerateLoadFunctionPrototype(masm(), edx, ecx, ebx, &miss);
2600
+ __ bind(&miss);
2601
+ __ DecrementCounter(&Counters::keyed_load_function_prototype, 1);
2602
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2603
+
2604
+ // Return the generated code.
2605
+ return GetCode(CALLBACKS, name);
2606
+ }
2607
+
2608
+
2609
+ // Specialized stub for constructing objects from functions which only have only
2610
+ // simple assignments of the form this.x = ...; in their body.
2611
+ Object* ConstructStubCompiler::CompileConstructStub(
2612
+ SharedFunctionInfo* shared) {
2613
+ // ----------- S t a t e -------------
2614
+ // -- eax : argc
2615
+ // -- edi : constructor
2616
+ // -- esp[0] : return address
2617
+ // -- esp[4] : last argument
2618
+ // -----------------------------------
2619
+ Label generic_stub_call;
2620
+ #ifdef ENABLE_DEBUGGER_SUPPORT
2621
+ // Check to see whether there are any break points in the function code. If
2622
+ // there are jump to the generic constructor stub which calls the actual
2623
+ // code for the function thereby hitting the break points.
2624
+ __ mov(ebx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
2625
+ __ mov(ebx, FieldOperand(ebx, SharedFunctionInfo::kDebugInfoOffset));
2626
+ __ cmp(ebx, Factory::undefined_value());
2627
+ __ j(not_equal, &generic_stub_call, not_taken);
2628
+ #endif
2629
+
2630
+ // Load the initial map and verify that it is in fact a map.
2631
+ __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset));
2632
+ // Will both indicate a NULL and a Smi.
2633
+ __ test(ebx, Immediate(kSmiTagMask));
2634
+ __ j(zero, &generic_stub_call);
2635
+ __ CmpObjectType(ebx, MAP_TYPE, ecx);
2636
+ __ j(not_equal, &generic_stub_call);
2637
+
2638
+ #ifdef DEBUG
2639
+ // Cannot construct functions this way.
2640
+ // edi: constructor
2641
+ // ebx: initial map
2642
+ __ CmpInstanceType(ebx, JS_FUNCTION_TYPE);
2643
+ __ Assert(not_equal, "Function constructed by construct stub.");
2644
+ #endif
2645
+
2646
+ // Now allocate the JSObject on the heap by moving the new space allocation
2647
+ // top forward.
2648
+ // edi: constructor
2649
+ // ebx: initial map
2650
+ __ movzx_b(ecx, FieldOperand(ebx, Map::kInstanceSizeOffset));
2651
+ __ shl(ecx, kPointerSizeLog2);
2652
+ __ AllocateInNewSpace(ecx,
2653
+ edx,
2654
+ ecx,
2655
+ no_reg,
2656
+ &generic_stub_call,
2657
+ NO_ALLOCATION_FLAGS);
2658
+
2659
+ // Allocated the JSObject, now initialize the fields and add the heap tag.
2660
+ // ebx: initial map
2661
+ // edx: JSObject (untagged)
2662
+ __ mov(Operand(edx, JSObject::kMapOffset), ebx);
2663
+ __ mov(ebx, Factory::empty_fixed_array());
2664
+ __ mov(Operand(edx, JSObject::kPropertiesOffset), ebx);
2665
+ __ mov(Operand(edx, JSObject::kElementsOffset), ebx);
2666
+
2667
+ // Push the allocated object to the stack. This is the object that will be
2668
+ // returned (after it is tagged).
2669
+ __ push(edx);
2670
+
2671
+ // eax: argc
2672
+ // edx: JSObject (untagged)
2673
+ // Load the address of the first in-object property into edx.
2674
+ __ lea(edx, Operand(edx, JSObject::kHeaderSize));
2675
+ // Calculate the location of the first argument. The stack contains the
2676
+ // allocated object and the return address on top of the argc arguments.
2677
+ __ lea(ecx, Operand(esp, eax, times_4, 1 * kPointerSize));
2678
+
2679
+ // Use edi for holding undefined which is used in several places below.
2680
+ __ mov(edi, Factory::undefined_value());
2681
+
2682
+ // eax: argc
2683
+ // ecx: first argument
2684
+ // edx: first in-object property of the JSObject
2685
+ // edi: undefined
2686
+ // Fill the initialized properties with a constant value or a passed argument
2687
+ // depending on the this.x = ...; assignment in the function.
2688
+ for (int i = 0; i < shared->this_property_assignments_count(); i++) {
2689
+ if (shared->IsThisPropertyAssignmentArgument(i)) {
2690
+ // Check if the argument assigned to the property is actually passed.
2691
+ // If argument is not passed the property is set to undefined,
2692
+ // otherwise find it on the stack.
2693
+ int arg_number = shared->GetThisPropertyAssignmentArgument(i);
2694
+ __ mov(ebx, edi);
2695
+ __ cmp(eax, arg_number);
2696
+ if (CpuFeatures::IsSupported(CMOV)) {
2697
+ CpuFeatures::Scope use_cmov(CMOV);
2698
+ __ cmov(above, ebx, Operand(ecx, arg_number * -kPointerSize));
2699
+ } else {
2700
+ Label not_passed;
2701
+ __ j(below_equal, &not_passed);
2702
+ __ mov(ebx, Operand(ecx, arg_number * -kPointerSize));
2703
+ __ bind(&not_passed);
2704
+ }
2705
+ // Store value in the property.
2706
+ __ mov(Operand(edx, i * kPointerSize), ebx);
2707
+ } else {
2708
+ // Set the property to the constant value.
2709
+ Handle<Object> constant(shared->GetThisPropertyAssignmentConstant(i));
2710
+ __ mov(Operand(edx, i * kPointerSize), Immediate(constant));
2711
+ }
2712
+ }
2713
+
2714
+ // Fill the unused in-object property fields with undefined.
2715
+ for (int i = shared->this_property_assignments_count();
2716
+ i < shared->CalculateInObjectProperties();
2717
+ i++) {
2718
+ __ mov(Operand(edx, i * kPointerSize), edi);
2719
+ }
2720
+
2721
+ // Move argc to ebx and retrieve and tag the JSObject to return.
2722
+ __ mov(ebx, eax);
2723
+ __ pop(eax);
2724
+ __ or_(Operand(eax), Immediate(kHeapObjectTag));
2725
+
2726
+ // Remove caller arguments and receiver from the stack and return.
2727
+ __ pop(ecx);
2728
+ __ lea(esp, Operand(esp, ebx, times_pointer_size, 1 * kPointerSize));
2729
+ __ push(ecx);
2730
+ __ IncrementCounter(&Counters::constructed_objects, 1);
2731
+ __ IncrementCounter(&Counters::constructed_objects_stub, 1);
2732
+ __ ret(0);
2733
+
2734
+ // Jump to the generic stub in case the specialized code cannot handle the
2735
+ // construction.
2736
+ __ bind(&generic_stub_call);
2737
+ Code* code = Builtins::builtin(Builtins::JSConstructStubGeneric);
2738
+ Handle<Code> generic_construct_stub(code);
2739
+ __ jmp(generic_construct_stub, RelocInfo::CODE_TARGET);
2740
+
2741
+ // Return the generated code.
2742
+ return GetCode();
2743
+ }
2744
+
2745
+
2746
+ #undef __
2747
+
2748
+ } } // namespace v8::internal
2749
+
2750
+ #endif // V8_TARGET_ARCH_IA32