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,361 @@
1
+ // Copyright 2009 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+ // Declares a Simulator for ARM instructions if we are not generating a native
30
+ // ARM binary. This Simulator allows us to run and debug ARM code generation on
31
+ // regular desktop machines.
32
+ // V8 calls into generated code by "calling" the CALL_GENERATED_CODE macro,
33
+ // which will start execution in the Simulator or forwards to the real entry
34
+ // on a ARM HW platform.
35
+
36
+ #ifndef V8_ARM_SIMULATOR_ARM_H_
37
+ #define V8_ARM_SIMULATOR_ARM_H_
38
+
39
+ #include "allocation.h"
40
+
41
+ #if defined(__arm__)
42
+
43
+ // When running without a simulator we call the entry directly.
44
+ #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
45
+ (entry(p0, p1, p2, p3, p4))
46
+
47
+ // The stack limit beyond which we will throw stack overflow errors in
48
+ // generated code. Because generated code on arm uses the C stack, we
49
+ // just use the C stack limit.
50
+ class SimulatorStack : public v8::internal::AllStatic {
51
+ public:
52
+ static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
53
+ return c_limit;
54
+ }
55
+
56
+ static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
57
+ return try_catch_address;
58
+ }
59
+
60
+ static inline void UnregisterCTryCatch() { }
61
+ };
62
+
63
+
64
+ // Call the generated regexp code directly. The entry function pointer should
65
+ // expect eight int/pointer sized arguments and return an int.
66
+ #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
67
+ entry(p0, p1, p2, p3, p4, p5, p6)
68
+
69
+ #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
70
+ reinterpret_cast<TryCatch*>(try_catch_address)
71
+
72
+
73
+ #else // defined(__arm__)
74
+
75
+ // When running with the simulator transition into simulated execution at this
76
+ // point.
77
+ #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
78
+ reinterpret_cast<Object*>( \
79
+ assembler::arm::Simulator::current()->Call(FUNCTION_ADDR(entry), 5, \
80
+ p0, p1, p2, p3, p4))
81
+
82
+ #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
83
+ assembler::arm::Simulator::current()->Call( \
84
+ FUNCTION_ADDR(entry), 7, p0, p1, p2, p3, p4, p5, p6)
85
+
86
+ #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
87
+ try_catch_address == NULL ? \
88
+ NULL : *(reinterpret_cast<TryCatch**>(try_catch_address))
89
+
90
+
91
+ #include "constants-arm.h"
92
+ #include "hashmap.h"
93
+
94
+
95
+ namespace assembler {
96
+ namespace arm {
97
+
98
+ class CachePage {
99
+ public:
100
+ static const int LINE_VALID = 0;
101
+ static const int LINE_INVALID = 1;
102
+
103
+ static const int kPageShift = 12;
104
+ static const int kPageSize = 1 << kPageShift;
105
+ static const int kPageMask = kPageSize - 1;
106
+ static const int kLineShift = 2; // The cache line is only 4 bytes right now.
107
+ static const int kLineLength = 1 << kLineShift;
108
+ static const int kLineMask = kLineLength - 1;
109
+
110
+ CachePage() {
111
+ memset(&validity_map_, LINE_INVALID, sizeof(validity_map_));
112
+ }
113
+
114
+ char* ValidityByte(int offset) {
115
+ return &validity_map_[offset >> kLineShift];
116
+ }
117
+
118
+ char* CachedData(int offset) {
119
+ return &data_[offset];
120
+ }
121
+
122
+ private:
123
+ char data_[kPageSize]; // The cached data.
124
+ static const int kValidityMapSize = kPageSize >> kLineShift;
125
+ char validity_map_[kValidityMapSize]; // One byte per line.
126
+ };
127
+
128
+
129
+ class Simulator {
130
+ public:
131
+ friend class Debugger;
132
+ enum Register {
133
+ no_reg = -1,
134
+ r0 = 0, r1, r2, r3, r4, r5, r6, r7,
135
+ r8, r9, r10, r11, r12, r13, r14, r15,
136
+ num_registers,
137
+ sp = 13,
138
+ lr = 14,
139
+ pc = 15,
140
+ s0 = 0, s1, s2, s3, s4, s5, s6, s7,
141
+ s8, s9, s10, s11, s12, s13, s14, s15,
142
+ s16, s17, s18, s19, s20, s21, s22, s23,
143
+ s24, s25, s26, s27, s28, s29, s30, s31,
144
+ num_s_registers = 32,
145
+ d0 = 0, d1, d2, d3, d4, d5, d6, d7,
146
+ d8, d9, d10, d11, d12, d13, d14, d15,
147
+ num_d_registers = 16
148
+ };
149
+
150
+ Simulator();
151
+ ~Simulator();
152
+
153
+ // The currently executing Simulator instance. Potentially there can be one
154
+ // for each native thread.
155
+ static Simulator* current();
156
+
157
+ // Accessors for register state. Reading the pc value adheres to the ARM
158
+ // architecture specification and is off by a 8 from the currently executing
159
+ // instruction.
160
+ void set_register(int reg, int32_t value);
161
+ int32_t get_register(int reg) const;
162
+ void set_dw_register(int dreg, const int* dbl);
163
+
164
+ // Support for VFP.
165
+ void set_s_register(int reg, unsigned int value);
166
+ unsigned int get_s_register(int reg) const;
167
+ void set_d_register_from_double(int dreg, const double& dbl);
168
+ double get_double_from_d_register(int dreg);
169
+ void set_s_register_from_float(int sreg, const float dbl);
170
+ float get_float_from_s_register(int sreg);
171
+ void set_s_register_from_sinteger(int reg, const int value);
172
+ int get_sinteger_from_s_register(int reg);
173
+
174
+ // Special case of set_register and get_register to access the raw PC value.
175
+ void set_pc(int32_t value);
176
+ int32_t get_pc() const;
177
+
178
+ // Accessor to the internal simulator stack area.
179
+ uintptr_t StackLimit() const;
180
+
181
+ // Executes ARM instructions until the PC reaches end_sim_pc.
182
+ void Execute();
183
+
184
+ // Call on program start.
185
+ static void Initialize();
186
+
187
+ // V8 generally calls into generated JS code with 5 parameters and into
188
+ // generated RegExp code with 7 parameters. This is a convenience function,
189
+ // which sets up the simulator state and grabs the result on return.
190
+ int32_t Call(byte* entry, int argument_count, ...);
191
+
192
+ // Push an address onto the JS stack.
193
+ uintptr_t PushAddress(uintptr_t address);
194
+
195
+ // Pop an address from the JS stack.
196
+ uintptr_t PopAddress();
197
+
198
+ // ICache checking.
199
+ static void FlushICache(void* start, size_t size);
200
+
201
+ private:
202
+ enum special_values {
203
+ // Known bad pc value to ensure that the simulator does not execute
204
+ // without being properly setup.
205
+ bad_lr = -1,
206
+ // A pc value used to signal the simulator to stop execution. Generally
207
+ // the lr is set to this value on transition from native C code to
208
+ // simulated execution, so that the simulator can "return" to the native
209
+ // C code.
210
+ end_sim_pc = -2
211
+ };
212
+
213
+ // Unsupported instructions use Format to print an error and stop execution.
214
+ void Format(Instr* instr, const char* format);
215
+
216
+ // Checks if the current instruction should be executed based on its
217
+ // condition bits.
218
+ bool ConditionallyExecute(Instr* instr);
219
+
220
+ // Helper functions to set the conditional flags in the architecture state.
221
+ void SetNZFlags(int32_t val);
222
+ void SetCFlag(bool val);
223
+ void SetVFlag(bool val);
224
+ bool CarryFrom(int32_t left, int32_t right);
225
+ bool BorrowFrom(int32_t left, int32_t right);
226
+ bool OverflowFrom(int32_t alu_out,
227
+ int32_t left,
228
+ int32_t right,
229
+ bool addition);
230
+
231
+ // Support for VFP.
232
+ void Compute_FPSCR_Flags(double val1, double val2);
233
+ void Copy_FPSCR_to_APSR();
234
+
235
+ // Helper functions to decode common "addressing" modes
236
+ int32_t GetShiftRm(Instr* instr, bool* carry_out);
237
+ int32_t GetImm(Instr* instr, bool* carry_out);
238
+ void HandleRList(Instr* instr, bool load);
239
+ void SoftwareInterrupt(Instr* instr);
240
+
241
+ // Read and write memory.
242
+ inline uint8_t ReadBU(int32_t addr);
243
+ inline int8_t ReadB(int32_t addr);
244
+ inline void WriteB(int32_t addr, uint8_t value);
245
+ inline void WriteB(int32_t addr, int8_t value);
246
+
247
+ inline uint16_t ReadHU(int32_t addr, Instr* instr);
248
+ inline int16_t ReadH(int32_t addr, Instr* instr);
249
+ // Note: Overloaded on the sign of the value.
250
+ inline void WriteH(int32_t addr, uint16_t value, Instr* instr);
251
+ inline void WriteH(int32_t addr, int16_t value, Instr* instr);
252
+
253
+ inline int ReadW(int32_t addr, Instr* instr);
254
+ inline void WriteW(int32_t addr, int value, Instr* instr);
255
+
256
+ int32_t* ReadDW(int32_t addr);
257
+ void WriteDW(int32_t addr, int32_t value1, int32_t value2);
258
+
259
+ // Executing is handled based on the instruction type.
260
+ void DecodeType01(Instr* instr); // both type 0 and type 1 rolled into one
261
+ void DecodeType2(Instr* instr);
262
+ void DecodeType3(Instr* instr);
263
+ void DecodeType4(Instr* instr);
264
+ void DecodeType5(Instr* instr);
265
+ void DecodeType6(Instr* instr);
266
+ void DecodeType7(Instr* instr);
267
+ void DecodeUnconditional(Instr* instr);
268
+
269
+ // Support for VFP.
270
+ void DecodeTypeVFP(Instr* instr);
271
+ void DecodeType6CoprocessorIns(Instr* instr);
272
+
273
+ void DecodeVMOVBetweenCoreAndSinglePrecisionRegisters(Instr* instr);
274
+ void DecodeVCMP(Instr* instr);
275
+ void DecodeVCVTBetweenDoubleAndSingle(Instr* instr);
276
+ void DecodeVCVTBetweenFloatingPointAndInteger(Instr* instr);
277
+
278
+ // Executes one instruction.
279
+ void InstructionDecode(Instr* instr);
280
+
281
+ // ICache.
282
+ static void CheckICache(Instr* instr);
283
+ static void FlushOnePage(intptr_t start, int size);
284
+ static CachePage* GetCachePage(void* page);
285
+
286
+ // Runtime call support.
287
+ static void* RedirectExternalReference(void* external_function,
288
+ bool fp_return);
289
+
290
+ // For use in calls that take two double values, constructed from r0, r1, r2
291
+ // and r3.
292
+ void GetFpArgs(double* x, double* y);
293
+ void SetFpResult(const double& result);
294
+ void TrashCallerSaveRegisters();
295
+
296
+ // Architecture state.
297
+ // Saturating instructions require a Q flag to indicate saturation.
298
+ // There is currently no way to read the CPSR directly, and thus read the Q
299
+ // flag, so this is left unimplemented.
300
+ int32_t registers_[16];
301
+ bool n_flag_;
302
+ bool z_flag_;
303
+ bool c_flag_;
304
+ bool v_flag_;
305
+
306
+ // VFP architecture state.
307
+ unsigned int vfp_register[num_s_registers];
308
+ bool n_flag_FPSCR_;
309
+ bool z_flag_FPSCR_;
310
+ bool c_flag_FPSCR_;
311
+ bool v_flag_FPSCR_;
312
+
313
+ // VFP FP exception flags architecture state.
314
+ bool inv_op_vfp_flag_;
315
+ bool div_zero_vfp_flag_;
316
+ bool overflow_vfp_flag_;
317
+ bool underflow_vfp_flag_;
318
+ bool inexact_vfp_flag_;
319
+
320
+ // Simulator support.
321
+ char* stack_;
322
+ bool pc_modified_;
323
+ int icount_;
324
+ static bool initialized_;
325
+
326
+ // Icache simulation
327
+ static v8::internal::HashMap* i_cache_;
328
+
329
+ // Registered breakpoints.
330
+ Instr* break_pc_;
331
+ instr_t break_instr_;
332
+ };
333
+
334
+ } } // namespace assembler::arm
335
+
336
+
337
+ // The simulator has its own stack. Thus it has a different stack limit from
338
+ // the C-based native code. Setting the c_limit to indicate a very small
339
+ // stack cause stack overflow errors, since the simulator ignores the input.
340
+ // This is unlikely to be an issue in practice, though it might cause testing
341
+ // trouble down the line.
342
+ class SimulatorStack : public v8::internal::AllStatic {
343
+ public:
344
+ static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
345
+ return assembler::arm::Simulator::current()->StackLimit();
346
+ }
347
+
348
+ static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
349
+ assembler::arm::Simulator* sim = assembler::arm::Simulator::current();
350
+ return sim->PushAddress(try_catch_address);
351
+ }
352
+
353
+ static inline void UnregisterCTryCatch() {
354
+ assembler::arm::Simulator::current()->PopAddress();
355
+ }
356
+ };
357
+
358
+
359
+ #endif // defined(__arm__)
360
+
361
+ #endif // V8_ARM_SIMULATOR_ARM_H_
@@ -0,0 +1,2387 @@
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_ARM)
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
+ ExternalReference key_offset(SCTableReference::keyReference(table));
48
+ ExternalReference value_offset(SCTableReference::valueReference(table));
49
+
50
+ Label miss;
51
+
52
+ // Save the offset on the stack.
53
+ __ push(offset);
54
+
55
+ // Check that the key in the entry matches the name.
56
+ __ mov(ip, Operand(key_offset));
57
+ __ ldr(ip, MemOperand(ip, offset, LSL, 1));
58
+ __ cmp(name, ip);
59
+ __ b(ne, &miss);
60
+
61
+ // Get the code entry from the cache.
62
+ __ mov(ip, Operand(value_offset));
63
+ __ ldr(offset, MemOperand(ip, offset, LSL, 1));
64
+
65
+ // Check that the flags match what we're looking for.
66
+ __ ldr(offset, FieldMemOperand(offset, Code::kFlagsOffset));
67
+ __ and_(offset, offset, Operand(~Code::kFlagsNotUsedInLookup));
68
+ __ cmp(offset, Operand(flags));
69
+ __ b(ne, &miss);
70
+
71
+ // Restore offset and re-load code entry from cache.
72
+ __ pop(offset);
73
+ __ mov(ip, Operand(value_offset));
74
+ __ ldr(offset, MemOperand(ip, offset, LSL, 1));
75
+
76
+ // Jump to the first instruction in the code stub.
77
+ __ add(offset, offset, Operand(Code::kHeaderSize - kHeapObjectTag));
78
+ __ Jump(offset);
79
+
80
+ // Miss: Restore offset and fall through.
81
+ __ bind(&miss);
82
+ __ pop(offset);
83
+ }
84
+
85
+
86
+ // Helper function used to check that the dictionary doesn't contain
87
+ // the property. This function may return false negatives, so miss_label
88
+ // must always call a backup property check that is complete.
89
+ // This function is safe to call if the receiver has fast properties.
90
+ // Name must be a symbol and receiver must be a heap object.
91
+ static void GenerateDictionaryNegativeLookup(MacroAssembler* masm,
92
+ Label* miss_label,
93
+ Register receiver,
94
+ String* name,
95
+ Register scratch0,
96
+ Register scratch1) {
97
+ ASSERT(name->IsSymbol());
98
+ __ IncrementCounter(&Counters::negative_lookups, 1, scratch0, scratch1);
99
+ __ IncrementCounter(&Counters::negative_lookups_miss, 1, scratch0, scratch1);
100
+
101
+ Label done;
102
+
103
+ const int kInterceptorOrAccessCheckNeededMask =
104
+ (1 << Map::kHasNamedInterceptor) | (1 << Map::kIsAccessCheckNeeded);
105
+
106
+ // Bail out if the receiver has a named interceptor or requires access checks.
107
+ Register map = scratch1;
108
+ __ ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset));
109
+ __ ldrb(scratch0, FieldMemOperand(map, Map::kBitFieldOffset));
110
+ __ tst(scratch0, Operand(kInterceptorOrAccessCheckNeededMask));
111
+ __ b(ne, miss_label);
112
+
113
+ // Check that receiver is a JSObject.
114
+ __ ldrb(scratch0, FieldMemOperand(map, Map::kInstanceTypeOffset));
115
+ __ cmp(scratch0, Operand(FIRST_JS_OBJECT_TYPE));
116
+ __ b(lt, miss_label);
117
+
118
+ // Load properties array.
119
+ Register properties = scratch0;
120
+ __ ldr(properties, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
121
+ // Check that the properties array is a dictionary.
122
+ __ ldr(map, FieldMemOperand(properties, HeapObject::kMapOffset));
123
+ Register tmp = properties;
124
+ __ LoadRoot(tmp, Heap::kHashTableMapRootIndex);
125
+ __ cmp(map, tmp);
126
+ __ b(ne, miss_label);
127
+
128
+ // Restore the temporarily used register.
129
+ __ ldr(properties, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
130
+
131
+ // Compute the capacity mask.
132
+ const int kCapacityOffset =
133
+ StringDictionary::kHeaderSize +
134
+ StringDictionary::kCapacityIndex * kPointerSize;
135
+
136
+ // Generate an unrolled loop that performs a few probes before
137
+ // giving up.
138
+ static const int kProbes = 4;
139
+ const int kElementsStartOffset =
140
+ StringDictionary::kHeaderSize +
141
+ StringDictionary::kElementsStartIndex * kPointerSize;
142
+
143
+ // If names of slots in range from 1 to kProbes - 1 for the hash value are
144
+ // not equal to the name and kProbes-th slot is not used (its name is the
145
+ // undefined value), it guarantees the hash table doesn't contain the
146
+ // property. It's true even if some slots represent deleted properties
147
+ // (their names are the null value).
148
+ for (int i = 0; i < kProbes; i++) {
149
+ // scratch0 points to properties hash.
150
+ // Compute the masked index: (hash + i + i * i) & mask.
151
+ Register index = scratch1;
152
+ // Capacity is smi 2^n.
153
+ __ ldr(index, FieldMemOperand(properties, kCapacityOffset));
154
+ __ sub(index, index, Operand(1));
155
+ __ and_(index, index, Operand(
156
+ Smi::FromInt(name->Hash() + StringDictionary::GetProbeOffset(i))));
157
+
158
+ // Scale the index by multiplying by the entry size.
159
+ ASSERT(StringDictionary::kEntrySize == 3);
160
+ __ add(index, index, Operand(index, LSL, 1)); // index *= 3.
161
+
162
+ Register entity_name = scratch1;
163
+ // Having undefined at this place means the name is not contained.
164
+ ASSERT_EQ(kSmiTagSize, 1);
165
+ Register tmp = properties;
166
+ __ add(tmp, properties, Operand(index, LSL, 1));
167
+ __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset));
168
+
169
+ ASSERT(!tmp.is(entity_name));
170
+ __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex);
171
+ __ cmp(entity_name, tmp);
172
+ if (i != kProbes - 1) {
173
+ __ b(eq, &done);
174
+
175
+ // Stop if found the property.
176
+ __ cmp(entity_name, Operand(Handle<String>(name)));
177
+ __ b(eq, miss_label);
178
+
179
+ // Check if the entry name is not a symbol.
180
+ __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
181
+ __ ldrb(entity_name,
182
+ FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
183
+ __ tst(entity_name, Operand(kIsSymbolMask));
184
+ __ b(eq, miss_label);
185
+
186
+ // Restore the properties.
187
+ __ ldr(properties,
188
+ FieldMemOperand(receiver, JSObject::kPropertiesOffset));
189
+ } else {
190
+ // Give up probing if still not found the undefined value.
191
+ __ b(ne, miss_label);
192
+ }
193
+ }
194
+ __ bind(&done);
195
+ __ DecrementCounter(&Counters::negative_lookups_miss, 1, scratch0, scratch1);
196
+ }
197
+
198
+
199
+ void StubCache::GenerateProbe(MacroAssembler* masm,
200
+ Code::Flags flags,
201
+ Register receiver,
202
+ Register name,
203
+ Register scratch,
204
+ Register extra) {
205
+ Label miss;
206
+
207
+ // Make sure that code is valid. The shifting code relies on the
208
+ // entry size being 8.
209
+ ASSERT(sizeof(Entry) == 8);
210
+
211
+ // Make sure the flags does not name a specific type.
212
+ ASSERT(Code::ExtractTypeFromFlags(flags) == 0);
213
+
214
+ // Make sure that there are no register conflicts.
215
+ ASSERT(!scratch.is(receiver));
216
+ ASSERT(!scratch.is(name));
217
+
218
+ // Check that the receiver isn't a smi.
219
+ __ tst(receiver, Operand(kSmiTagMask));
220
+ __ b(eq, &miss);
221
+
222
+ // Get the map of the receiver and compute the hash.
223
+ __ ldr(scratch, FieldMemOperand(name, String::kHashFieldOffset));
224
+ __ ldr(ip, FieldMemOperand(receiver, HeapObject::kMapOffset));
225
+ __ add(scratch, scratch, Operand(ip));
226
+ __ eor(scratch, scratch, Operand(flags));
227
+ __ and_(scratch,
228
+ scratch,
229
+ Operand((kPrimaryTableSize - 1) << kHeapObjectTagSize));
230
+
231
+ // Probe the primary table.
232
+ ProbeTable(masm, flags, kPrimary, name, scratch);
233
+
234
+ // Primary miss: Compute hash for secondary probe.
235
+ __ sub(scratch, scratch, Operand(name));
236
+ __ add(scratch, scratch, Operand(flags));
237
+ __ and_(scratch,
238
+ scratch,
239
+ Operand((kSecondaryTableSize - 1) << kHeapObjectTagSize));
240
+
241
+ // Probe the secondary table.
242
+ ProbeTable(masm, flags, kSecondary, name, scratch);
243
+
244
+ // Cache miss: Fall-through and let caller handle the miss by
245
+ // entering the runtime system.
246
+ __ bind(&miss);
247
+ }
248
+
249
+
250
+ void StubCompiler::GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm,
251
+ int index,
252
+ Register prototype) {
253
+ // Load the global or builtins object from the current context.
254
+ __ ldr(prototype, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_INDEX)));
255
+ // Load the global context from the global or builtins object.
256
+ __ ldr(prototype,
257
+ FieldMemOperand(prototype, GlobalObject::kGlobalContextOffset));
258
+ // Load the function from the global context.
259
+ __ ldr(prototype, MemOperand(prototype, Context::SlotOffset(index)));
260
+ // Load the initial map. The global functions all have initial maps.
261
+ __ ldr(prototype,
262
+ FieldMemOperand(prototype, JSFunction::kPrototypeOrInitialMapOffset));
263
+ // Load the prototype from the initial map.
264
+ __ ldr(prototype, FieldMemOperand(prototype, Map::kPrototypeOffset));
265
+ }
266
+
267
+
268
+ void StubCompiler::GenerateDirectLoadGlobalFunctionPrototype(
269
+ MacroAssembler* masm, int index, Register prototype) {
270
+ // Get the global function with the given index.
271
+ JSFunction* function = JSFunction::cast(Top::global_context()->get(index));
272
+ // Load its initial map. The global functions all have initial maps.
273
+ __ Move(prototype, Handle<Map>(function->initial_map()));
274
+ // Load the prototype from the initial map.
275
+ __ ldr(prototype, FieldMemOperand(prototype, Map::kPrototypeOffset));
276
+ }
277
+
278
+
279
+ // Load a fast property out of a holder object (src). In-object properties
280
+ // are loaded directly otherwise the property is loaded from the properties
281
+ // fixed array.
282
+ void StubCompiler::GenerateFastPropertyLoad(MacroAssembler* masm,
283
+ Register dst, Register src,
284
+ JSObject* holder, int index) {
285
+ // Adjust for the number of properties stored in the holder.
286
+ index -= holder->map()->inobject_properties();
287
+ if (index < 0) {
288
+ // Get the property straight out of the holder.
289
+ int offset = holder->map()->instance_size() + (index * kPointerSize);
290
+ __ ldr(dst, FieldMemOperand(src, offset));
291
+ } else {
292
+ // Calculate the offset into the properties array.
293
+ int offset = index * kPointerSize + FixedArray::kHeaderSize;
294
+ __ ldr(dst, FieldMemOperand(src, JSObject::kPropertiesOffset));
295
+ __ ldr(dst, FieldMemOperand(dst, offset));
296
+ }
297
+ }
298
+
299
+
300
+ void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm,
301
+ Register receiver,
302
+ Register scratch,
303
+ Label* miss_label) {
304
+ // Check that the receiver isn't a smi.
305
+ __ tst(receiver, Operand(kSmiTagMask));
306
+ __ b(eq, miss_label);
307
+
308
+ // Check that the object is a JS array.
309
+ __ CompareObjectType(receiver, scratch, scratch, JS_ARRAY_TYPE);
310
+ __ b(ne, miss_label);
311
+
312
+ // Load length directly from the JS array.
313
+ __ ldr(r0, FieldMemOperand(receiver, JSArray::kLengthOffset));
314
+ __ Ret();
315
+ }
316
+
317
+
318
+ // Generate code to check if an object is a string. If the object is a
319
+ // heap object, its map's instance type is left in the scratch1 register.
320
+ // If this is not needed, scratch1 and scratch2 may be the same register.
321
+ static void GenerateStringCheck(MacroAssembler* masm,
322
+ Register receiver,
323
+ Register scratch1,
324
+ Register scratch2,
325
+ Label* smi,
326
+ Label* non_string_object) {
327
+ // Check that the receiver isn't a smi.
328
+ __ tst(receiver, Operand(kSmiTagMask));
329
+ __ b(eq, smi);
330
+
331
+ // Check that the object is a string.
332
+ __ ldr(scratch1, FieldMemOperand(receiver, HeapObject::kMapOffset));
333
+ __ ldrb(scratch1, FieldMemOperand(scratch1, Map::kInstanceTypeOffset));
334
+ __ and_(scratch2, scratch1, Operand(kIsNotStringMask));
335
+ // The cast is to resolve the overload for the argument of 0x0.
336
+ __ cmp(scratch2, Operand(static_cast<int32_t>(kStringTag)));
337
+ __ b(ne, non_string_object);
338
+ }
339
+
340
+
341
+ // Generate code to load the length from a string object and return the length.
342
+ // If the receiver object is not a string or a wrapped string object the
343
+ // execution continues at the miss label. The register containing the
344
+ // receiver is potentially clobbered.
345
+ void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
346
+ Register receiver,
347
+ Register scratch1,
348
+ Register scratch2,
349
+ Label* miss) {
350
+ Label check_wrapper;
351
+
352
+ // Check if the object is a string leaving the instance type in the
353
+ // scratch1 register.
354
+ GenerateStringCheck(masm, receiver, scratch1, scratch2, miss, &check_wrapper);
355
+
356
+ // Load length directly from the string.
357
+ __ ldr(r0, FieldMemOperand(receiver, String::kLengthOffset));
358
+ __ Ret();
359
+
360
+ // Check if the object is a JSValue wrapper.
361
+ __ bind(&check_wrapper);
362
+ __ cmp(scratch1, Operand(JS_VALUE_TYPE));
363
+ __ b(ne, miss);
364
+
365
+ // Unwrap the value and check if the wrapped value is a string.
366
+ __ ldr(scratch1, FieldMemOperand(receiver, JSValue::kValueOffset));
367
+ GenerateStringCheck(masm, scratch1, scratch2, scratch2, miss, miss);
368
+ __ ldr(r0, FieldMemOperand(scratch1, String::kLengthOffset));
369
+ __ Ret();
370
+ }
371
+
372
+
373
+ void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm,
374
+ Register receiver,
375
+ Register scratch1,
376
+ Register scratch2,
377
+ Label* miss_label) {
378
+ __ TryGetFunctionPrototype(receiver, scratch1, scratch2, miss_label);
379
+ __ mov(r0, scratch1);
380
+ __ Ret();
381
+ }
382
+
383
+
384
+ // Generate StoreField code, value is passed in r0 register.
385
+ // When leaving generated code after success, the receiver_reg and name_reg
386
+ // may be clobbered. Upon branch to miss_label, the receiver and name
387
+ // registers have their original values.
388
+ void StubCompiler::GenerateStoreField(MacroAssembler* masm,
389
+ JSObject* object,
390
+ int index,
391
+ Map* transition,
392
+ Register receiver_reg,
393
+ Register name_reg,
394
+ Register scratch,
395
+ Label* miss_label) {
396
+ // r0 : value
397
+ Label exit;
398
+
399
+ // Check that the receiver isn't a smi.
400
+ __ tst(receiver_reg, Operand(kSmiTagMask));
401
+ __ b(eq, miss_label);
402
+
403
+ // Check that the map of the receiver hasn't changed.
404
+ __ ldr(scratch, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
405
+ __ cmp(scratch, Operand(Handle<Map>(object->map())));
406
+ __ b(ne, miss_label);
407
+
408
+ // Perform global security token check if needed.
409
+ if (object->IsJSGlobalProxy()) {
410
+ __ CheckAccessGlobalProxy(receiver_reg, scratch, miss_label);
411
+ }
412
+
413
+ // Stub never generated for non-global objects that require access
414
+ // checks.
415
+ ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
416
+
417
+ // Perform map transition for the receiver if necessary.
418
+ if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) {
419
+ // The properties must be extended before we can store the value.
420
+ // We jump to a runtime call that extends the properties array.
421
+ __ push(receiver_reg);
422
+ __ mov(r2, Operand(Handle<Map>(transition)));
423
+ __ Push(r2, r0);
424
+ __ TailCallExternalReference(
425
+ ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage)),
426
+ 3, 1);
427
+ return;
428
+ }
429
+
430
+ if (transition != NULL) {
431
+ // Update the map of the object; no write barrier updating is
432
+ // needed because the map is never in new space.
433
+ __ mov(ip, Operand(Handle<Map>(transition)));
434
+ __ str(ip, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
435
+ }
436
+
437
+ // Adjust for the number of properties stored in the object. Even in the
438
+ // face of a transition we can use the old map here because the size of the
439
+ // object and the number of in-object properties is not going to change.
440
+ index -= object->map()->inobject_properties();
441
+
442
+ if (index < 0) {
443
+ // Set the property straight into the object.
444
+ int offset = object->map()->instance_size() + (index * kPointerSize);
445
+ __ str(r0, FieldMemOperand(receiver_reg, offset));
446
+
447
+ // Skip updating write barrier if storing a smi.
448
+ __ tst(r0, Operand(kSmiTagMask));
449
+ __ b(eq, &exit);
450
+
451
+ // Update the write barrier for the array address.
452
+ // Pass the now unused name_reg as a scratch register.
453
+ __ RecordWrite(receiver_reg, Operand(offset), name_reg, scratch);
454
+ } else {
455
+ // Write to the properties array.
456
+ int offset = index * kPointerSize + FixedArray::kHeaderSize;
457
+ // Get the properties array
458
+ __ ldr(scratch, FieldMemOperand(receiver_reg, JSObject::kPropertiesOffset));
459
+ __ str(r0, FieldMemOperand(scratch, offset));
460
+
461
+ // Skip updating write barrier if storing a smi.
462
+ __ tst(r0, Operand(kSmiTagMask));
463
+ __ b(eq, &exit);
464
+
465
+ // Update the write barrier for the array address.
466
+ // Ok to clobber receiver_reg and name_reg, since we return.
467
+ __ RecordWrite(scratch, Operand(offset), name_reg, receiver_reg);
468
+ }
469
+
470
+ // Return the value (register r0).
471
+ __ bind(&exit);
472
+ __ Ret();
473
+ }
474
+
475
+
476
+ void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) {
477
+ ASSERT(kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC);
478
+ Code* code = NULL;
479
+ if (kind == Code::LOAD_IC) {
480
+ code = Builtins::builtin(Builtins::LoadIC_Miss);
481
+ } else {
482
+ code = Builtins::builtin(Builtins::KeyedLoadIC_Miss);
483
+ }
484
+
485
+ Handle<Code> ic(code);
486
+ __ Jump(ic, RelocInfo::CODE_TARGET);
487
+ }
488
+
489
+
490
+ static void GenerateCallFunction(MacroAssembler* masm,
491
+ Object* object,
492
+ const ParameterCount& arguments,
493
+ Label* miss) {
494
+ // ----------- S t a t e -------------
495
+ // -- r0: receiver
496
+ // -- r1: function to call
497
+ // -----------------------------------
498
+
499
+ // Check that the function really is a function.
500
+ __ BranchOnSmi(r1, miss);
501
+ __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
502
+ __ b(ne, miss);
503
+
504
+ // Patch the receiver on the stack with the global proxy if
505
+ // necessary.
506
+ if (object->IsGlobalObject()) {
507
+ __ ldr(r3, FieldMemOperand(r0, GlobalObject::kGlobalReceiverOffset));
508
+ __ str(r3, MemOperand(sp, arguments.immediate() * kPointerSize));
509
+ }
510
+
511
+ // Invoke the function.
512
+ __ InvokeFunction(r1, arguments, JUMP_FUNCTION);
513
+ }
514
+
515
+
516
+ static void PushInterceptorArguments(MacroAssembler* masm,
517
+ Register receiver,
518
+ Register holder,
519
+ Register name,
520
+ JSObject* holder_obj) {
521
+ __ push(name);
522
+ InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor();
523
+ ASSERT(!Heap::InNewSpace(interceptor));
524
+ Register scratch = name;
525
+ __ mov(scratch, Operand(Handle<Object>(interceptor)));
526
+ __ push(scratch);
527
+ __ push(receiver);
528
+ __ push(holder);
529
+ __ ldr(scratch, FieldMemOperand(scratch, InterceptorInfo::kDataOffset));
530
+ __ push(scratch);
531
+ }
532
+
533
+
534
+ static void CompileCallLoadPropertyWithInterceptor(MacroAssembler* masm,
535
+ Register receiver,
536
+ Register holder,
537
+ Register name,
538
+ JSObject* holder_obj) {
539
+ PushInterceptorArguments(masm, receiver, holder, name, holder_obj);
540
+
541
+ ExternalReference ref =
542
+ ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly));
543
+ __ mov(r0, Operand(5));
544
+ __ mov(r1, Operand(ref));
545
+
546
+ CEntryStub stub(1);
547
+ __ CallStub(&stub);
548
+ }
549
+
550
+
551
+ // Reserves space for the extra arguments to FastHandleApiCall in the
552
+ // caller's frame.
553
+ //
554
+ // These arguments are set by CheckPrototypes and GenerateFastApiCall.
555
+ static void ReserveSpaceForFastApiCall(MacroAssembler* masm,
556
+ Register scratch) {
557
+ __ mov(scratch, Operand(Smi::FromInt(0)));
558
+ __ push(scratch);
559
+ __ push(scratch);
560
+ __ push(scratch);
561
+ __ push(scratch);
562
+ }
563
+
564
+
565
+ // Undoes the effects of ReserveSpaceForFastApiCall.
566
+ static void FreeSpaceForFastApiCall(MacroAssembler* masm) {
567
+ __ Drop(4);
568
+ }
569
+
570
+
571
+ // Generates call to FastHandleApiCall builtin.
572
+ static void GenerateFastApiCall(MacroAssembler* masm,
573
+ const CallOptimization& optimization,
574
+ int argc) {
575
+ // Get the function and setup the context.
576
+ JSFunction* function = optimization.constant_function();
577
+ __ mov(r7, Operand(Handle<JSFunction>(function)));
578
+ __ ldr(cp, FieldMemOperand(r7, JSFunction::kContextOffset));
579
+
580
+ // Pass the additional arguments FastHandleApiCall expects.
581
+ bool info_loaded = false;
582
+ Object* callback = optimization.api_call_info()->callback();
583
+ if (Heap::InNewSpace(callback)) {
584
+ info_loaded = true;
585
+ __ Move(r0, Handle<CallHandlerInfo>(optimization.api_call_info()));
586
+ __ ldr(r6, FieldMemOperand(r0, CallHandlerInfo::kCallbackOffset));
587
+ } else {
588
+ __ Move(r6, Handle<Object>(callback));
589
+ }
590
+ Object* call_data = optimization.api_call_info()->data();
591
+ if (Heap::InNewSpace(call_data)) {
592
+ if (!info_loaded) {
593
+ __ Move(r0, Handle<CallHandlerInfo>(optimization.api_call_info()));
594
+ }
595
+ __ ldr(r5, FieldMemOperand(r0, CallHandlerInfo::kDataOffset));
596
+ } else {
597
+ __ Move(r5, Handle<Object>(call_data));
598
+ }
599
+
600
+ __ add(sp, sp, Operand(1 * kPointerSize));
601
+ __ stm(ia, sp, r5.bit() | r6.bit() | r7.bit());
602
+ __ sub(sp, sp, Operand(1 * kPointerSize));
603
+
604
+ // Set the number of arguments.
605
+ __ mov(r0, Operand(argc + 4));
606
+
607
+ // Jump to the fast api call builtin (tail call).
608
+ Handle<Code> code = Handle<Code>(
609
+ Builtins::builtin(Builtins::FastHandleApiCall));
610
+ ParameterCount expected(0);
611
+ __ InvokeCode(code, expected, expected,
612
+ RelocInfo::CODE_TARGET, JUMP_FUNCTION);
613
+ }
614
+
615
+
616
+ class CallInterceptorCompiler BASE_EMBEDDED {
617
+ public:
618
+ CallInterceptorCompiler(StubCompiler* stub_compiler,
619
+ const ParameterCount& arguments,
620
+ Register name)
621
+ : stub_compiler_(stub_compiler),
622
+ arguments_(arguments),
623
+ name_(name) {}
624
+
625
+ void Compile(MacroAssembler* masm,
626
+ JSObject* object,
627
+ JSObject* holder,
628
+ String* name,
629
+ LookupResult* lookup,
630
+ Register receiver,
631
+ Register scratch1,
632
+ Register scratch2,
633
+ Register scratch3,
634
+ Label* miss) {
635
+ ASSERT(holder->HasNamedInterceptor());
636
+ ASSERT(!holder->GetNamedInterceptor()->getter()->IsUndefined());
637
+
638
+ // Check that the receiver isn't a smi.
639
+ __ BranchOnSmi(receiver, miss);
640
+
641
+ CallOptimization optimization(lookup);
642
+
643
+ if (optimization.is_constant_call()) {
644
+ CompileCacheable(masm,
645
+ object,
646
+ receiver,
647
+ scratch1,
648
+ scratch2,
649
+ scratch3,
650
+ holder,
651
+ lookup,
652
+ name,
653
+ optimization,
654
+ miss);
655
+ } else {
656
+ CompileRegular(masm,
657
+ object,
658
+ receiver,
659
+ scratch1,
660
+ scratch2,
661
+ scratch3,
662
+ name,
663
+ holder,
664
+ miss);
665
+ }
666
+ }
667
+
668
+ private:
669
+ void CompileCacheable(MacroAssembler* masm,
670
+ JSObject* object,
671
+ Register receiver,
672
+ Register scratch1,
673
+ Register scratch2,
674
+ Register scratch3,
675
+ JSObject* interceptor_holder,
676
+ LookupResult* lookup,
677
+ String* name,
678
+ const CallOptimization& optimization,
679
+ Label* miss_label) {
680
+ ASSERT(optimization.is_constant_call());
681
+ ASSERT(!lookup->holder()->IsGlobalObject());
682
+
683
+ int depth1 = kInvalidProtoDepth;
684
+ int depth2 = kInvalidProtoDepth;
685
+ bool can_do_fast_api_call = false;
686
+ if (optimization.is_simple_api_call() &&
687
+ !lookup->holder()->IsGlobalObject()) {
688
+ depth1 =
689
+ optimization.GetPrototypeDepthOfExpectedType(object,
690
+ interceptor_holder);
691
+ if (depth1 == kInvalidProtoDepth) {
692
+ depth2 =
693
+ optimization.GetPrototypeDepthOfExpectedType(interceptor_holder,
694
+ lookup->holder());
695
+ }
696
+ can_do_fast_api_call = (depth1 != kInvalidProtoDepth) ||
697
+ (depth2 != kInvalidProtoDepth);
698
+ }
699
+
700
+ __ IncrementCounter(&Counters::call_const_interceptor, 1,
701
+ scratch1, scratch2);
702
+
703
+ if (can_do_fast_api_call) {
704
+ __ IncrementCounter(&Counters::call_const_interceptor_fast_api, 1,
705
+ scratch1, scratch2);
706
+ ReserveSpaceForFastApiCall(masm, scratch1);
707
+ }
708
+
709
+ // Check that the maps from receiver to interceptor's holder
710
+ // haven't changed and thus we can invoke interceptor.
711
+ Label miss_cleanup;
712
+ Label* miss = can_do_fast_api_call ? &miss_cleanup : miss_label;
713
+ Register holder =
714
+ stub_compiler_->CheckPrototypes(object, receiver,
715
+ interceptor_holder, scratch1,
716
+ scratch2, scratch3, name, depth1, miss);
717
+
718
+ // Invoke an interceptor and if it provides a value,
719
+ // branch to |regular_invoke|.
720
+ Label regular_invoke;
721
+ LoadWithInterceptor(masm, receiver, holder, interceptor_holder, scratch2,
722
+ &regular_invoke);
723
+
724
+ // Interceptor returned nothing for this property. Try to use cached
725
+ // constant function.
726
+
727
+ // Check that the maps from interceptor's holder to constant function's
728
+ // holder haven't changed and thus we can use cached constant function.
729
+ if (interceptor_holder != lookup->holder()) {
730
+ stub_compiler_->CheckPrototypes(interceptor_holder, receiver,
731
+ lookup->holder(), scratch1,
732
+ scratch2, scratch3, name, depth2, miss);
733
+ } else {
734
+ // CheckPrototypes has a side effect of fetching a 'holder'
735
+ // for API (object which is instanceof for the signature). It's
736
+ // safe to omit it here, as if present, it should be fetched
737
+ // by the previous CheckPrototypes.
738
+ ASSERT(depth2 == kInvalidProtoDepth);
739
+ }
740
+
741
+ // Invoke function.
742
+ if (can_do_fast_api_call) {
743
+ GenerateFastApiCall(masm, optimization, arguments_.immediate());
744
+ } else {
745
+ __ InvokeFunction(optimization.constant_function(), arguments_,
746
+ JUMP_FUNCTION);
747
+ }
748
+
749
+ // Deferred code for fast API call case---clean preallocated space.
750
+ if (can_do_fast_api_call) {
751
+ __ bind(&miss_cleanup);
752
+ FreeSpaceForFastApiCall(masm);
753
+ __ b(miss_label);
754
+ }
755
+
756
+ // Invoke a regular function.
757
+ __ bind(&regular_invoke);
758
+ if (can_do_fast_api_call) {
759
+ FreeSpaceForFastApiCall(masm);
760
+ }
761
+ }
762
+
763
+ void CompileRegular(MacroAssembler* masm,
764
+ JSObject* object,
765
+ Register receiver,
766
+ Register scratch1,
767
+ Register scratch2,
768
+ Register scratch3,
769
+ String* name,
770
+ JSObject* interceptor_holder,
771
+ Label* miss_label) {
772
+ Register holder =
773
+ stub_compiler_->CheckPrototypes(object, receiver, interceptor_holder,
774
+ scratch1, scratch2, scratch3, name,
775
+ miss_label);
776
+
777
+ // Call a runtime function to load the interceptor property.
778
+ __ EnterInternalFrame();
779
+ // Save the name_ register across the call.
780
+ __ push(name_);
781
+
782
+ PushInterceptorArguments(masm,
783
+ receiver,
784
+ holder,
785
+ name_,
786
+ interceptor_holder);
787
+
788
+ __ CallExternalReference(
789
+ ExternalReference(
790
+ IC_Utility(IC::kLoadPropertyWithInterceptorForCall)),
791
+ 5);
792
+
793
+ // Restore the name_ register.
794
+ __ pop(name_);
795
+ __ LeaveInternalFrame();
796
+ }
797
+
798
+ void LoadWithInterceptor(MacroAssembler* masm,
799
+ Register receiver,
800
+ Register holder,
801
+ JSObject* holder_obj,
802
+ Register scratch,
803
+ Label* interceptor_succeeded) {
804
+ __ EnterInternalFrame();
805
+ __ Push(holder, name_);
806
+
807
+ CompileCallLoadPropertyWithInterceptor(masm,
808
+ receiver,
809
+ holder,
810
+ name_,
811
+ holder_obj);
812
+
813
+ __ pop(name_); // Restore the name.
814
+ __ pop(receiver); // Restore the holder.
815
+ __ LeaveInternalFrame();
816
+
817
+ // If interceptor returns no-result sentinel, call the constant function.
818
+ __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex);
819
+ __ cmp(r0, scratch);
820
+ __ b(ne, interceptor_succeeded);
821
+ }
822
+
823
+ StubCompiler* stub_compiler_;
824
+ const ParameterCount& arguments_;
825
+ Register name_;
826
+ };
827
+
828
+
829
+ // Generate code to check that a global property cell is empty. Create
830
+ // the property cell at compilation time if no cell exists for the
831
+ // property.
832
+ static Object* GenerateCheckPropertyCell(MacroAssembler* masm,
833
+ GlobalObject* global,
834
+ String* name,
835
+ Register scratch,
836
+ Label* miss) {
837
+ Object* probe = global->EnsurePropertyCell(name);
838
+ if (probe->IsFailure()) return probe;
839
+ JSGlobalPropertyCell* cell = JSGlobalPropertyCell::cast(probe);
840
+ ASSERT(cell->value()->IsTheHole());
841
+ __ mov(scratch, Operand(Handle<Object>(cell)));
842
+ __ ldr(scratch,
843
+ FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset));
844
+ __ LoadRoot(ip, Heap::kTheHoleValueRootIndex);
845
+ __ cmp(scratch, ip);
846
+ __ b(ne, miss);
847
+ return cell;
848
+ }
849
+
850
+
851
+ #undef __
852
+ #define __ ACCESS_MASM(masm())
853
+
854
+
855
+ Register StubCompiler::CheckPrototypes(JSObject* object,
856
+ Register object_reg,
857
+ JSObject* holder,
858
+ Register holder_reg,
859
+ Register scratch1,
860
+ Register scratch2,
861
+ String* name,
862
+ int save_at_depth,
863
+ Label* miss) {
864
+ // Make sure there's no overlap between holder and object registers.
865
+ ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg));
866
+ ASSERT(!scratch2.is(object_reg) && !scratch2.is(holder_reg)
867
+ && !scratch2.is(scratch1));
868
+
869
+ // Keep track of the current object in register reg.
870
+ Register reg = object_reg;
871
+ int depth = 0;
872
+
873
+ if (save_at_depth == depth) {
874
+ __ str(reg, MemOperand(sp));
875
+ }
876
+
877
+ // Check the maps in the prototype chain.
878
+ // Traverse the prototype chain from the object and do map checks.
879
+ JSObject* current = object;
880
+ while (current != holder) {
881
+ depth++;
882
+
883
+ // Only global objects and objects that do not require access
884
+ // checks are allowed in stubs.
885
+ ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
886
+
887
+ JSObject* prototype = JSObject::cast(current->GetPrototype());
888
+ if (!current->HasFastProperties() &&
889
+ !current->IsJSGlobalObject() &&
890
+ !current->IsJSGlobalProxy()) {
891
+ if (!name->IsSymbol()) {
892
+ Object* lookup_result = Heap::LookupSymbol(name);
893
+ if (lookup_result->IsFailure()) {
894
+ set_failure(Failure::cast(lookup_result));
895
+ return reg;
896
+ } else {
897
+ name = String::cast(lookup_result);
898
+ }
899
+ }
900
+ ASSERT(current->property_dictionary()->FindEntry(name) ==
901
+ StringDictionary::kNotFound);
902
+
903
+ GenerateDictionaryNegativeLookup(masm(),
904
+ miss,
905
+ reg,
906
+ name,
907
+ scratch1,
908
+ scratch2);
909
+ __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
910
+ reg = holder_reg; // from now the object is in holder_reg
911
+ __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
912
+ } else {
913
+ // Get the map of the current object.
914
+ __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
915
+ __ cmp(scratch1, Operand(Handle<Map>(current->map())));
916
+
917
+ // Branch on the result of the map check.
918
+ __ b(ne, miss);
919
+
920
+ // Check access rights to the global object. This has to happen
921
+ // after the map check so that we know that the object is
922
+ // actually a global object.
923
+ if (current->IsJSGlobalProxy()) {
924
+ __ CheckAccessGlobalProxy(reg, scratch1, miss);
925
+ // Restore scratch register to be the map of the object. In the
926
+ // new space case below, we load the prototype from the map in
927
+ // the scratch register.
928
+ __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
929
+ }
930
+
931
+ reg = holder_reg; // from now the object is in holder_reg
932
+ if (Heap::InNewSpace(prototype)) {
933
+ // The prototype is in new space; we cannot store a reference
934
+ // to it in the code. Load it from the map.
935
+ __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
936
+ } else {
937
+ // The prototype is in old space; load it directly.
938
+ __ mov(reg, Operand(Handle<JSObject>(prototype)));
939
+ }
940
+ }
941
+
942
+ if (save_at_depth == depth) {
943
+ __ str(reg, MemOperand(sp));
944
+ }
945
+
946
+ // Go to the next object in the prototype chain.
947
+ current = prototype;
948
+ }
949
+
950
+ // Check the holder map.
951
+ __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
952
+ __ cmp(scratch1, Operand(Handle<Map>(current->map())));
953
+ __ b(ne, miss);
954
+
955
+ // Log the check depth.
956
+ LOG(IntEvent("check-maps-depth", depth + 1));
957
+
958
+ // Perform security check for access to the global object and return
959
+ // the holder register.
960
+ ASSERT(current == holder);
961
+ ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
962
+ if (current->IsJSGlobalProxy()) {
963
+ __ CheckAccessGlobalProxy(reg, scratch1, miss);
964
+ }
965
+
966
+ // If we've skipped any global objects, it's not enough to verify
967
+ // that their maps haven't changed. We also need to check that the
968
+ // property cell for the property is still empty.
969
+ current = object;
970
+ while (current != holder) {
971
+ if (current->IsGlobalObject()) {
972
+ Object* cell = GenerateCheckPropertyCell(masm(),
973
+ GlobalObject::cast(current),
974
+ name,
975
+ scratch1,
976
+ miss);
977
+ if (cell->IsFailure()) {
978
+ set_failure(Failure::cast(cell));
979
+ return reg;
980
+ }
981
+ }
982
+ current = JSObject::cast(current->GetPrototype());
983
+ }
984
+
985
+ // Return the register containing the holder.
986
+ return reg;
987
+ }
988
+
989
+
990
+ void StubCompiler::GenerateLoadField(JSObject* object,
991
+ JSObject* holder,
992
+ Register receiver,
993
+ Register scratch1,
994
+ Register scratch2,
995
+ Register scratch3,
996
+ int index,
997
+ String* name,
998
+ Label* miss) {
999
+ // Check that the receiver isn't a smi.
1000
+ __ tst(receiver, Operand(kSmiTagMask));
1001
+ __ b(eq, miss);
1002
+
1003
+ // Check that the maps haven't changed.
1004
+ Register reg =
1005
+ CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3,
1006
+ name, miss);
1007
+ GenerateFastPropertyLoad(masm(), r0, reg, holder, index);
1008
+ __ Ret();
1009
+ }
1010
+
1011
+
1012
+ void StubCompiler::GenerateLoadConstant(JSObject* object,
1013
+ JSObject* holder,
1014
+ Register receiver,
1015
+ Register scratch1,
1016
+ Register scratch2,
1017
+ Register scratch3,
1018
+ Object* value,
1019
+ String* name,
1020
+ Label* miss) {
1021
+ // Check that the receiver isn't a smi.
1022
+ __ tst(receiver, Operand(kSmiTagMask));
1023
+ __ b(eq, miss);
1024
+
1025
+ // Check that the maps haven't changed.
1026
+ Register reg =
1027
+ CheckPrototypes(object, receiver, holder,
1028
+ scratch1, scratch2, scratch3, name, miss);
1029
+
1030
+ // Return the constant value.
1031
+ __ mov(r0, Operand(Handle<Object>(value)));
1032
+ __ Ret();
1033
+ }
1034
+
1035
+
1036
+ bool StubCompiler::GenerateLoadCallback(JSObject* object,
1037
+ JSObject* holder,
1038
+ Register receiver,
1039
+ Register name_reg,
1040
+ Register scratch1,
1041
+ Register scratch2,
1042
+ Register scratch3,
1043
+ AccessorInfo* callback,
1044
+ String* name,
1045
+ Label* miss,
1046
+ Failure** failure) {
1047
+ // Check that the receiver isn't a smi.
1048
+ __ tst(receiver, Operand(kSmiTagMask));
1049
+ __ b(eq, miss);
1050
+
1051
+ // Check that the maps haven't changed.
1052
+ Register reg =
1053
+ CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3,
1054
+ name, miss);
1055
+
1056
+ // Push the arguments on the JS stack of the caller.
1057
+ __ push(receiver); // Receiver.
1058
+ __ push(reg); // Holder.
1059
+ __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback data
1060
+ __ ldr(reg, FieldMemOperand(ip, AccessorInfo::kDataOffset));
1061
+ __ Push(ip, reg, name_reg);
1062
+
1063
+ // Do tail-call to the runtime system.
1064
+ ExternalReference load_callback_property =
1065
+ ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
1066
+ __ TailCallExternalReference(load_callback_property, 5, 1);
1067
+
1068
+ return true;
1069
+ }
1070
+
1071
+
1072
+ void StubCompiler::GenerateLoadInterceptor(JSObject* object,
1073
+ JSObject* interceptor_holder,
1074
+ LookupResult* lookup,
1075
+ Register receiver,
1076
+ Register name_reg,
1077
+ Register scratch1,
1078
+ Register scratch2,
1079
+ Register scratch3,
1080
+ String* name,
1081
+ Label* miss) {
1082
+ ASSERT(interceptor_holder->HasNamedInterceptor());
1083
+ ASSERT(!interceptor_holder->GetNamedInterceptor()->getter()->IsUndefined());
1084
+
1085
+ // Check that the receiver isn't a smi.
1086
+ __ BranchOnSmi(receiver, miss);
1087
+
1088
+ // So far the most popular follow ups for interceptor loads are FIELD
1089
+ // and CALLBACKS, so inline only them, other cases may be added
1090
+ // later.
1091
+ bool compile_followup_inline = false;
1092
+ if (lookup->IsProperty() && lookup->IsCacheable()) {
1093
+ if (lookup->type() == FIELD) {
1094
+ compile_followup_inline = true;
1095
+ } else if (lookup->type() == CALLBACKS &&
1096
+ lookup->GetCallbackObject()->IsAccessorInfo() &&
1097
+ AccessorInfo::cast(lookup->GetCallbackObject())->getter() != NULL) {
1098
+ compile_followup_inline = true;
1099
+ }
1100
+ }
1101
+
1102
+ if (compile_followup_inline) {
1103
+ // Compile the interceptor call, followed by inline code to load the
1104
+ // property from further up the prototype chain if the call fails.
1105
+ // Check that the maps haven't changed.
1106
+ Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
1107
+ scratch1, scratch2, scratch3,
1108
+ name, miss);
1109
+ ASSERT(holder_reg.is(receiver) || holder_reg.is(scratch1));
1110
+
1111
+ // Save necessary data before invoking an interceptor.
1112
+ // Requires a frame to make GC aware of pushed pointers.
1113
+ __ EnterInternalFrame();
1114
+
1115
+ if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1116
+ // CALLBACKS case needs a receiver to be passed into C++ callback.
1117
+ __ Push(receiver, holder_reg, name_reg);
1118
+ } else {
1119
+ __ Push(holder_reg, name_reg);
1120
+ }
1121
+
1122
+ // Invoke an interceptor. Note: map checks from receiver to
1123
+ // interceptor's holder has been compiled before (see a caller
1124
+ // of this method.)
1125
+ CompileCallLoadPropertyWithInterceptor(masm(),
1126
+ receiver,
1127
+ holder_reg,
1128
+ name_reg,
1129
+ interceptor_holder);
1130
+
1131
+ // Check if interceptor provided a value for property. If it's
1132
+ // the case, return immediately.
1133
+ Label interceptor_failed;
1134
+ __ LoadRoot(scratch1, Heap::kNoInterceptorResultSentinelRootIndex);
1135
+ __ cmp(r0, scratch1);
1136
+ __ b(eq, &interceptor_failed);
1137
+ __ LeaveInternalFrame();
1138
+ __ Ret();
1139
+
1140
+ __ bind(&interceptor_failed);
1141
+ __ pop(name_reg);
1142
+ __ pop(holder_reg);
1143
+ if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1144
+ __ pop(receiver);
1145
+ }
1146
+
1147
+ __ LeaveInternalFrame();
1148
+
1149
+ // Check that the maps from interceptor's holder to lookup's holder
1150
+ // haven't changed. And load lookup's holder into |holder| register.
1151
+ if (interceptor_holder != lookup->holder()) {
1152
+ holder_reg = CheckPrototypes(interceptor_holder,
1153
+ holder_reg,
1154
+ lookup->holder(),
1155
+ scratch1,
1156
+ scratch2,
1157
+ scratch3,
1158
+ name,
1159
+ miss);
1160
+ }
1161
+
1162
+ if (lookup->type() == FIELD) {
1163
+ // We found FIELD property in prototype chain of interceptor's holder.
1164
+ // Retrieve a field from field's holder.
1165
+ GenerateFastPropertyLoad(masm(), r0, holder_reg,
1166
+ lookup->holder(), lookup->GetFieldIndex());
1167
+ __ Ret();
1168
+ } else {
1169
+ // We found CALLBACKS property in prototype chain of interceptor's
1170
+ // holder.
1171
+ ASSERT(lookup->type() == CALLBACKS);
1172
+ ASSERT(lookup->GetCallbackObject()->IsAccessorInfo());
1173
+ AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
1174
+ ASSERT(callback != NULL);
1175
+ ASSERT(callback->getter() != NULL);
1176
+
1177
+ // Tail call to runtime.
1178
+ // Important invariant in CALLBACKS case: the code above must be
1179
+ // structured to never clobber |receiver| register.
1180
+ __ Move(scratch2, Handle<AccessorInfo>(callback));
1181
+ // holder_reg is either receiver or scratch1.
1182
+ if (!receiver.is(holder_reg)) {
1183
+ ASSERT(scratch1.is(holder_reg));
1184
+ __ Push(receiver, holder_reg, scratch2);
1185
+ __ ldr(scratch1,
1186
+ FieldMemOperand(holder_reg, AccessorInfo::kDataOffset));
1187
+ __ Push(scratch1, name_reg);
1188
+ } else {
1189
+ __ push(receiver);
1190
+ __ ldr(scratch1,
1191
+ FieldMemOperand(holder_reg, AccessorInfo::kDataOffset));
1192
+ __ Push(holder_reg, scratch2, scratch1, name_reg);
1193
+ }
1194
+
1195
+ ExternalReference ref =
1196
+ ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
1197
+ __ TailCallExternalReference(ref, 5, 1);
1198
+ }
1199
+ } else { // !compile_followup_inline
1200
+ // Call the runtime system to load the interceptor.
1201
+ // Check that the maps haven't changed.
1202
+ Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
1203
+ scratch1, scratch2, scratch3,
1204
+ name, miss);
1205
+ PushInterceptorArguments(masm(), receiver, holder_reg,
1206
+ name_reg, interceptor_holder);
1207
+
1208
+ ExternalReference ref = ExternalReference(
1209
+ IC_Utility(IC::kLoadPropertyWithInterceptorForLoad));
1210
+ __ TailCallExternalReference(ref, 5, 1);
1211
+ }
1212
+ }
1213
+
1214
+
1215
+ Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
1216
+ // ----------- S t a t e -------------
1217
+ // -- r1: function
1218
+ // -- lr: return address
1219
+ // -----------------------------------
1220
+
1221
+ // Enter an internal frame.
1222
+ __ EnterInternalFrame();
1223
+
1224
+ // Preserve the function.
1225
+ __ push(r1);
1226
+
1227
+ // Push the function on the stack as the argument to the runtime function.
1228
+ __ push(r1);
1229
+ __ CallRuntime(Runtime::kLazyCompile, 1);
1230
+
1231
+ // Calculate the entry point.
1232
+ __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag));
1233
+
1234
+ // Restore saved function.
1235
+ __ pop(r1);
1236
+
1237
+ // Tear down temporary frame.
1238
+ __ LeaveInternalFrame();
1239
+
1240
+ // Do a tail-call of the compiled function.
1241
+ __ Jump(r2);
1242
+
1243
+ return GetCodeWithFlags(flags, "LazyCompileStub");
1244
+ }
1245
+
1246
+
1247
+ void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
1248
+ if (kind_ == Code::KEYED_CALL_IC) {
1249
+ __ cmp(r2, Operand(Handle<String>(name)));
1250
+ __ b(ne, miss);
1251
+ }
1252
+ }
1253
+
1254
+
1255
+ void CallStubCompiler::GenerateMissBranch() {
1256
+ Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
1257
+ __ Jump(ic, RelocInfo::CODE_TARGET);
1258
+ }
1259
+
1260
+
1261
+ Object* CallStubCompiler::CompileCallField(JSObject* object,
1262
+ JSObject* holder,
1263
+ int index,
1264
+ String* name) {
1265
+ // ----------- S t a t e -------------
1266
+ // -- r2 : name
1267
+ // -- lr : return address
1268
+ // -----------------------------------
1269
+ Label miss;
1270
+
1271
+ GenerateNameCheck(name, &miss);
1272
+
1273
+ const int argc = arguments().immediate();
1274
+
1275
+ // Get the receiver of the function from the stack into r0.
1276
+ __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1277
+ // Check that the receiver isn't a smi.
1278
+ __ tst(r0, Operand(kSmiTagMask));
1279
+ __ b(eq, &miss);
1280
+
1281
+ // Do the right check and compute the holder register.
1282
+ Register reg = CheckPrototypes(object, r0, holder, r1, r3, r4, name, &miss);
1283
+ GenerateFastPropertyLoad(masm(), r1, reg, holder, index);
1284
+
1285
+ GenerateCallFunction(masm(), object, arguments(), &miss);
1286
+
1287
+ // Handle call cache miss.
1288
+ __ bind(&miss);
1289
+ GenerateMissBranch();
1290
+
1291
+ // Return the generated code.
1292
+ return GetCode(FIELD, name);
1293
+ }
1294
+
1295
+
1296
+ Object* CallStubCompiler::CompileArrayPushCall(Object* object,
1297
+ JSObject* holder,
1298
+ JSFunction* function,
1299
+ String* name,
1300
+ CheckType check) {
1301
+ // ----------- S t a t e -------------
1302
+ // -- r2 : name
1303
+ // -- lr : return address
1304
+ // -----------------------------------
1305
+
1306
+ // If object is not an array, bail out to regular call.
1307
+ if (!object->IsJSArray()) {
1308
+ return Heap::undefined_value();
1309
+ }
1310
+
1311
+ // TODO(639): faster implementation.
1312
+ ASSERT(check == RECEIVER_MAP_CHECK);
1313
+
1314
+ Label miss;
1315
+
1316
+ GenerateNameCheck(name, &miss);
1317
+
1318
+ // Get the receiver from the stack
1319
+ const int argc = arguments().immediate();
1320
+ __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1321
+
1322
+ // Check that the receiver isn't a smi.
1323
+ __ tst(r1, Operand(kSmiTagMask));
1324
+ __ b(eq, &miss);
1325
+
1326
+ // Check that the maps haven't changed.
1327
+ CheckPrototypes(JSObject::cast(object), r1, holder, r3, r0, r4, name, &miss);
1328
+
1329
+ if (object->IsGlobalObject()) {
1330
+ __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1331
+ __ str(r3, MemOperand(sp, argc * kPointerSize));
1332
+ }
1333
+
1334
+ __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush),
1335
+ argc + 1,
1336
+ 1);
1337
+
1338
+ // Handle call cache miss.
1339
+ __ bind(&miss);
1340
+ GenerateMissBranch();
1341
+
1342
+ // Return the generated code.
1343
+ return GetCode(function);
1344
+ }
1345
+
1346
+
1347
+ Object* CallStubCompiler::CompileArrayPopCall(Object* object,
1348
+ JSObject* holder,
1349
+ JSFunction* function,
1350
+ String* name,
1351
+ CheckType check) {
1352
+ // ----------- S t a t e -------------
1353
+ // -- r2 : name
1354
+ // -- lr : return address
1355
+ // -----------------------------------
1356
+
1357
+ // If object is not an array, bail out to regular call.
1358
+ if (!object->IsJSArray()) {
1359
+ return Heap::undefined_value();
1360
+ }
1361
+
1362
+ // TODO(642): faster implementation.
1363
+ ASSERT(check == RECEIVER_MAP_CHECK);
1364
+
1365
+ Label miss;
1366
+
1367
+ GenerateNameCheck(name, &miss);
1368
+
1369
+ // Get the receiver from the stack
1370
+ const int argc = arguments().immediate();
1371
+ __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1372
+
1373
+ // Check that the receiver isn't a smi.
1374
+ __ tst(r1, Operand(kSmiTagMask));
1375
+ __ b(eq, &miss);
1376
+
1377
+ // Check that the maps haven't changed.
1378
+ CheckPrototypes(JSObject::cast(object), r1, holder, r3, r0, r4, name, &miss);
1379
+
1380
+ if (object->IsGlobalObject()) {
1381
+ __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1382
+ __ str(r3, MemOperand(sp, argc * kPointerSize));
1383
+ }
1384
+
1385
+ __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop),
1386
+ argc + 1,
1387
+ 1);
1388
+
1389
+ // Handle call cache miss.
1390
+ __ bind(&miss);
1391
+ GenerateMissBranch();
1392
+
1393
+ // Return the generated code.
1394
+ return GetCode(function);
1395
+ }
1396
+
1397
+
1398
+ Object* CallStubCompiler::CompileStringCharCodeAtCall(Object* object,
1399
+ JSObject* holder,
1400
+ JSFunction* function,
1401
+ String* name,
1402
+ CheckType check) {
1403
+ // TODO(722): implement this.
1404
+ return Heap::undefined_value();
1405
+ }
1406
+
1407
+
1408
+ Object* CallStubCompiler::CompileStringCharAtCall(Object* object,
1409
+ JSObject* holder,
1410
+ JSFunction* function,
1411
+ String* name,
1412
+ CheckType check) {
1413
+ // TODO(722): implement this.
1414
+ return Heap::undefined_value();
1415
+ }
1416
+
1417
+
1418
+ Object* CallStubCompiler::CompileCallConstant(Object* object,
1419
+ JSObject* holder,
1420
+ JSFunction* function,
1421
+ String* name,
1422
+ CheckType check) {
1423
+ // ----------- S t a t e -------------
1424
+ // -- r2 : name
1425
+ // -- lr : return address
1426
+ // -----------------------------------
1427
+ SharedFunctionInfo* function_info = function->shared();
1428
+ if (function_info->HasCustomCallGenerator()) {
1429
+ const int id = function_info->custom_call_generator_id();
1430
+ Object* result =
1431
+ CompileCustomCall(id, object, holder, function, name, check);
1432
+ // undefined means bail out to regular compiler.
1433
+ if (!result->IsUndefined()) {
1434
+ return result;
1435
+ }
1436
+ }
1437
+
1438
+ Label miss_in_smi_check;
1439
+
1440
+ GenerateNameCheck(name, &miss_in_smi_check);
1441
+
1442
+ // Get the receiver from the stack
1443
+ const int argc = arguments().immediate();
1444
+ __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1445
+
1446
+ // Check that the receiver isn't a smi.
1447
+ if (check != NUMBER_CHECK) {
1448
+ __ tst(r1, Operand(kSmiTagMask));
1449
+ __ b(eq, &miss_in_smi_check);
1450
+ }
1451
+
1452
+ // Make sure that it's okay not to patch the on stack receiver
1453
+ // unless we're doing a receiver map check.
1454
+ ASSERT(!object->IsGlobalObject() || check == RECEIVER_MAP_CHECK);
1455
+
1456
+ CallOptimization optimization(function);
1457
+ int depth = kInvalidProtoDepth;
1458
+ Label miss;
1459
+
1460
+ switch (check) {
1461
+ case RECEIVER_MAP_CHECK:
1462
+ __ IncrementCounter(&Counters::call_const, 1, r0, r3);
1463
+
1464
+ if (optimization.is_simple_api_call() && !object->IsGlobalObject()) {
1465
+ depth = optimization.GetPrototypeDepthOfExpectedType(
1466
+ JSObject::cast(object), holder);
1467
+ }
1468
+
1469
+ if (depth != kInvalidProtoDepth) {
1470
+ __ IncrementCounter(&Counters::call_const_fast_api, 1, r0, r3);
1471
+ ReserveSpaceForFastApiCall(masm(), r0);
1472
+ }
1473
+
1474
+ // Check that the maps haven't changed.
1475
+ CheckPrototypes(JSObject::cast(object), r1, holder, r0, r3, r4, name,
1476
+ depth, &miss);
1477
+
1478
+ // Patch the receiver on the stack with the global proxy if
1479
+ // necessary.
1480
+ if (object->IsGlobalObject()) {
1481
+ ASSERT(depth == kInvalidProtoDepth);
1482
+ __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1483
+ __ str(r3, MemOperand(sp, argc * kPointerSize));
1484
+ }
1485
+ break;
1486
+
1487
+ case STRING_CHECK:
1488
+ if (!function->IsBuiltin()) {
1489
+ // Calling non-builtins with a value as receiver requires boxing.
1490
+ __ jmp(&miss);
1491
+ } else {
1492
+ // Check that the object is a two-byte string or a symbol.
1493
+ __ CompareObjectType(r1, r3, r3, FIRST_NONSTRING_TYPE);
1494
+ __ b(hs, &miss);
1495
+ // Check that the maps starting from the prototype haven't changed.
1496
+ GenerateDirectLoadGlobalFunctionPrototype(
1497
+ masm(), Context::STRING_FUNCTION_INDEX, r0);
1498
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1499
+ r1, r4, name, &miss);
1500
+ }
1501
+ break;
1502
+
1503
+ case NUMBER_CHECK: {
1504
+ if (!function->IsBuiltin()) {
1505
+ // Calling non-builtins with a value as receiver requires boxing.
1506
+ __ jmp(&miss);
1507
+ } else {
1508
+ Label fast;
1509
+ // Check that the object is a smi or a heap number.
1510
+ __ tst(r1, Operand(kSmiTagMask));
1511
+ __ b(eq, &fast);
1512
+ __ CompareObjectType(r1, r0, r0, HEAP_NUMBER_TYPE);
1513
+ __ b(ne, &miss);
1514
+ __ bind(&fast);
1515
+ // Check that the maps starting from the prototype haven't changed.
1516
+ GenerateDirectLoadGlobalFunctionPrototype(
1517
+ masm(), Context::NUMBER_FUNCTION_INDEX, r0);
1518
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1519
+ r1, r4, name, &miss);
1520
+ }
1521
+ break;
1522
+ }
1523
+
1524
+ case BOOLEAN_CHECK: {
1525
+ if (!function->IsBuiltin()) {
1526
+ // Calling non-builtins with a value as receiver requires boxing.
1527
+ __ jmp(&miss);
1528
+ } else {
1529
+ Label fast;
1530
+ // Check that the object is a boolean.
1531
+ __ LoadRoot(ip, Heap::kTrueValueRootIndex);
1532
+ __ cmp(r1, ip);
1533
+ __ b(eq, &fast);
1534
+ __ LoadRoot(ip, Heap::kFalseValueRootIndex);
1535
+ __ cmp(r1, ip);
1536
+ __ b(ne, &miss);
1537
+ __ bind(&fast);
1538
+ // Check that the maps starting from the prototype haven't changed.
1539
+ GenerateDirectLoadGlobalFunctionPrototype(
1540
+ masm(), Context::BOOLEAN_FUNCTION_INDEX, r0);
1541
+ CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1542
+ r1, r4, name, &miss);
1543
+ }
1544
+ break;
1545
+ }
1546
+
1547
+ default:
1548
+ UNREACHABLE();
1549
+ }
1550
+
1551
+ if (depth != kInvalidProtoDepth) {
1552
+ GenerateFastApiCall(masm(), optimization, argc);
1553
+ } else {
1554
+ __ InvokeFunction(function, arguments(), JUMP_FUNCTION);
1555
+ }
1556
+
1557
+ // Handle call cache miss.
1558
+ __ bind(&miss);
1559
+ if (depth != kInvalidProtoDepth) {
1560
+ FreeSpaceForFastApiCall(masm());
1561
+ }
1562
+
1563
+ __ bind(&miss_in_smi_check);
1564
+ GenerateMissBranch();
1565
+
1566
+ // Return the generated code.
1567
+ return GetCode(function);
1568
+ }
1569
+
1570
+
1571
+ Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
1572
+ JSObject* holder,
1573
+ String* name) {
1574
+ // ----------- S t a t e -------------
1575
+ // -- r2 : name
1576
+ // -- lr : return address
1577
+ // -----------------------------------
1578
+
1579
+ Label miss;
1580
+
1581
+ GenerateNameCheck(name, &miss);
1582
+
1583
+ // Get the number of arguments.
1584
+ const int argc = arguments().immediate();
1585
+
1586
+ LookupResult lookup;
1587
+ LookupPostInterceptor(holder, name, &lookup);
1588
+
1589
+ // Get the receiver from the stack.
1590
+ __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1591
+
1592
+ CallInterceptorCompiler compiler(this, arguments(), r2);
1593
+ compiler.Compile(masm(),
1594
+ object,
1595
+ holder,
1596
+ name,
1597
+ &lookup,
1598
+ r1,
1599
+ r3,
1600
+ r4,
1601
+ r0,
1602
+ &miss);
1603
+
1604
+ // Move returned value, the function to call, to r1.
1605
+ __ mov(r1, r0);
1606
+ // Restore receiver.
1607
+ __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1608
+
1609
+ GenerateCallFunction(masm(), object, arguments(), &miss);
1610
+
1611
+ // Handle call cache miss.
1612
+ __ bind(&miss);
1613
+ GenerateMissBranch();
1614
+
1615
+ // Return the generated code.
1616
+ return GetCode(INTERCEPTOR, name);
1617
+ }
1618
+
1619
+
1620
+ Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
1621
+ GlobalObject* holder,
1622
+ JSGlobalPropertyCell* cell,
1623
+ JSFunction* function,
1624
+ String* name) {
1625
+ // ----------- S t a t e -------------
1626
+ // -- r2 : name
1627
+ // -- lr : return address
1628
+ // -----------------------------------
1629
+ Label miss;
1630
+
1631
+ GenerateNameCheck(name, &miss);
1632
+
1633
+ // Get the number of arguments.
1634
+ const int argc = arguments().immediate();
1635
+
1636
+ // Get the receiver from the stack.
1637
+ __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1638
+
1639
+ // If the object is the holder then we know that it's a global
1640
+ // object which can only happen for contextual calls. In this case,
1641
+ // the receiver cannot be a smi.
1642
+ if (object != holder) {
1643
+ __ tst(r0, Operand(kSmiTagMask));
1644
+ __ b(eq, &miss);
1645
+ }
1646
+
1647
+ // Check that the maps haven't changed.
1648
+ CheckPrototypes(object, r0, holder, r3, r1, r4, name, &miss);
1649
+
1650
+ // Get the value from the cell.
1651
+ __ mov(r3, Operand(Handle<JSGlobalPropertyCell>(cell)));
1652
+ __ ldr(r1, FieldMemOperand(r3, JSGlobalPropertyCell::kValueOffset));
1653
+
1654
+ // Check that the cell contains the same function.
1655
+ if (Heap::InNewSpace(function)) {
1656
+ // We can't embed a pointer to a function in new space so we have
1657
+ // to verify that the shared function info is unchanged. This has
1658
+ // the nice side effect that multiple closures based on the same
1659
+ // function can all use this call IC. Before we load through the
1660
+ // function, we have to verify that it still is a function.
1661
+ __ tst(r1, Operand(kSmiTagMask));
1662
+ __ b(eq, &miss);
1663
+ __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
1664
+ __ b(ne, &miss);
1665
+
1666
+ // Check the shared function info. Make sure it hasn't changed.
1667
+ __ mov(r3, Operand(Handle<SharedFunctionInfo>(function->shared())));
1668
+ __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
1669
+ __ cmp(r4, r3);
1670
+ __ b(ne, &miss);
1671
+ } else {
1672
+ __ cmp(r1, Operand(Handle<JSFunction>(function)));
1673
+ __ b(ne, &miss);
1674
+ }
1675
+
1676
+ // Patch the receiver on the stack with the global proxy if
1677
+ // necessary.
1678
+ if (object->IsGlobalObject()) {
1679
+ __ ldr(r3, FieldMemOperand(r0, GlobalObject::kGlobalReceiverOffset));
1680
+ __ str(r3, MemOperand(sp, argc * kPointerSize));
1681
+ }
1682
+
1683
+ // Setup the context (function already in r1).
1684
+ __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
1685
+
1686
+ // Jump to the cached code (tail call).
1687
+ __ IncrementCounter(&Counters::call_global_inline, 1, r3, r4);
1688
+ ASSERT(function->is_compiled());
1689
+ Handle<Code> code(function->code());
1690
+ ParameterCount expected(function->shared()->formal_parameter_count());
1691
+ __ InvokeCode(code, expected, arguments(),
1692
+ RelocInfo::CODE_TARGET, JUMP_FUNCTION);
1693
+
1694
+ // Handle call cache miss.
1695
+ __ bind(&miss);
1696
+ __ IncrementCounter(&Counters::call_global_inline_miss, 1, r1, r3);
1697
+ GenerateMissBranch();
1698
+
1699
+ // Return the generated code.
1700
+ return GetCode(NORMAL, name);
1701
+ }
1702
+
1703
+
1704
+ Object* StoreStubCompiler::CompileStoreField(JSObject* object,
1705
+ int index,
1706
+ Map* transition,
1707
+ String* name) {
1708
+ // ----------- S t a t e -------------
1709
+ // -- r0 : value
1710
+ // -- r1 : receiver
1711
+ // -- r2 : name
1712
+ // -- lr : return address
1713
+ // -----------------------------------
1714
+ Label miss;
1715
+
1716
+ GenerateStoreField(masm(),
1717
+ object,
1718
+ index,
1719
+ transition,
1720
+ r1, r2, r3,
1721
+ &miss);
1722
+ __ bind(&miss);
1723
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1724
+ __ Jump(ic, RelocInfo::CODE_TARGET);
1725
+
1726
+ // Return the generated code.
1727
+ return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
1728
+ }
1729
+
1730
+
1731
+ Object* StoreStubCompiler::CompileStoreCallback(JSObject* object,
1732
+ AccessorInfo* callback,
1733
+ String* name) {
1734
+ // ----------- S t a t e -------------
1735
+ // -- r0 : value
1736
+ // -- r1 : receiver
1737
+ // -- r2 : name
1738
+ // -- lr : return address
1739
+ // -----------------------------------
1740
+ Label miss;
1741
+
1742
+ // Check that the object isn't a smi.
1743
+ __ tst(r1, Operand(kSmiTagMask));
1744
+ __ b(eq, &miss);
1745
+
1746
+ // Check that the map of the object hasn't changed.
1747
+ __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1748
+ __ cmp(r3, Operand(Handle<Map>(object->map())));
1749
+ __ b(ne, &miss);
1750
+
1751
+ // Perform global security token check if needed.
1752
+ if (object->IsJSGlobalProxy()) {
1753
+ __ CheckAccessGlobalProxy(r1, r3, &miss);
1754
+ }
1755
+
1756
+ // Stub never generated for non-global objects that require access
1757
+ // checks.
1758
+ ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
1759
+
1760
+ __ push(r1); // receiver
1761
+ __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info
1762
+ __ Push(ip, r2, r0);
1763
+
1764
+ // Do tail-call to the runtime system.
1765
+ ExternalReference store_callback_property =
1766
+ ExternalReference(IC_Utility(IC::kStoreCallbackProperty));
1767
+ __ TailCallExternalReference(store_callback_property, 4, 1);
1768
+
1769
+ // Handle store cache miss.
1770
+ __ bind(&miss);
1771
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1772
+ __ Jump(ic, RelocInfo::CODE_TARGET);
1773
+
1774
+ // Return the generated code.
1775
+ return GetCode(CALLBACKS, name);
1776
+ }
1777
+
1778
+
1779
+ Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver,
1780
+ String* name) {
1781
+ // ----------- S t a t e -------------
1782
+ // -- r0 : value
1783
+ // -- r1 : receiver
1784
+ // -- r2 : name
1785
+ // -- lr : return address
1786
+ // -----------------------------------
1787
+ Label miss;
1788
+
1789
+ // Check that the object isn't a smi.
1790
+ __ tst(r1, Operand(kSmiTagMask));
1791
+ __ b(eq, &miss);
1792
+
1793
+ // Check that the map of the object hasn't changed.
1794
+ __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1795
+ __ cmp(r3, Operand(Handle<Map>(receiver->map())));
1796
+ __ b(ne, &miss);
1797
+
1798
+ // Perform global security token check if needed.
1799
+ if (receiver->IsJSGlobalProxy()) {
1800
+ __ CheckAccessGlobalProxy(r1, r3, &miss);
1801
+ }
1802
+
1803
+ // Stub is never generated for non-global objects that require access
1804
+ // checks.
1805
+ ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
1806
+
1807
+ __ Push(r1, r2, r0); // Receiver, name, value.
1808
+
1809
+ // Do tail-call to the runtime system.
1810
+ ExternalReference store_ic_property =
1811
+ ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
1812
+ __ TailCallExternalReference(store_ic_property, 3, 1);
1813
+
1814
+ // Handle store cache miss.
1815
+ __ bind(&miss);
1816
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1817
+ __ Jump(ic, RelocInfo::CODE_TARGET);
1818
+
1819
+ // Return the generated code.
1820
+ return GetCode(INTERCEPTOR, name);
1821
+ }
1822
+
1823
+
1824
+ Object* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object,
1825
+ JSGlobalPropertyCell* cell,
1826
+ String* name) {
1827
+ // ----------- S t a t e -------------
1828
+ // -- r0 : value
1829
+ // -- r1 : receiver
1830
+ // -- r2 : name
1831
+ // -- lr : return address
1832
+ // -----------------------------------
1833
+ Label miss;
1834
+
1835
+ // Check that the map of the global has not changed.
1836
+ __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1837
+ __ cmp(r3, Operand(Handle<Map>(object->map())));
1838
+ __ b(ne, &miss);
1839
+
1840
+ // Store the value in the cell.
1841
+ __ mov(r2, Operand(Handle<JSGlobalPropertyCell>(cell)));
1842
+ __ str(r0, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset));
1843
+
1844
+ __ IncrementCounter(&Counters::named_store_global_inline, 1, r4, r3);
1845
+ __ Ret();
1846
+
1847
+ // Handle store cache miss.
1848
+ __ bind(&miss);
1849
+ __ IncrementCounter(&Counters::named_store_global_inline_miss, 1, r4, r3);
1850
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1851
+ __ Jump(ic, RelocInfo::CODE_TARGET);
1852
+
1853
+ // Return the generated code.
1854
+ return GetCode(NORMAL, name);
1855
+ }
1856
+
1857
+
1858
+ Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
1859
+ JSObject* object,
1860
+ JSObject* last) {
1861
+ // ----------- S t a t e -------------
1862
+ // -- r0 : receiver
1863
+ // -- lr : return address
1864
+ // -----------------------------------
1865
+ Label miss;
1866
+
1867
+ // Check that receiver is not a smi.
1868
+ __ tst(r0, Operand(kSmiTagMask));
1869
+ __ b(eq, &miss);
1870
+
1871
+ // Check the maps of the full prototype chain.
1872
+ CheckPrototypes(object, r0, last, r3, r1, r4, name, &miss);
1873
+
1874
+ // If the last object in the prototype chain is a global object,
1875
+ // check that the global property cell is empty.
1876
+ if (last->IsGlobalObject()) {
1877
+ Object* cell = GenerateCheckPropertyCell(masm(),
1878
+ GlobalObject::cast(last),
1879
+ name,
1880
+ r1,
1881
+ &miss);
1882
+ if (cell->IsFailure()) return cell;
1883
+ }
1884
+
1885
+ // Return undefined if maps of the full prototype chain are still the
1886
+ // same and no global property with this name contains a value.
1887
+ __ LoadRoot(r0, Heap::kUndefinedValueRootIndex);
1888
+ __ Ret();
1889
+
1890
+ __ bind(&miss);
1891
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
1892
+
1893
+ // Return the generated code.
1894
+ return GetCode(NONEXISTENT, Heap::empty_string());
1895
+ }
1896
+
1897
+
1898
+ Object* LoadStubCompiler::CompileLoadField(JSObject* object,
1899
+ JSObject* holder,
1900
+ int index,
1901
+ String* name) {
1902
+ // ----------- S t a t e -------------
1903
+ // -- r0 : receiver
1904
+ // -- r2 : name
1905
+ // -- lr : return address
1906
+ // -----------------------------------
1907
+ Label miss;
1908
+
1909
+ GenerateLoadField(object, holder, r0, r3, r1, r4, index, name, &miss);
1910
+ __ bind(&miss);
1911
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
1912
+
1913
+ // Return the generated code.
1914
+ return GetCode(FIELD, name);
1915
+ }
1916
+
1917
+
1918
+ Object* LoadStubCompiler::CompileLoadCallback(String* name,
1919
+ JSObject* object,
1920
+ JSObject* holder,
1921
+ AccessorInfo* callback) {
1922
+ // ----------- S t a t e -------------
1923
+ // -- r0 : receiver
1924
+ // -- r2 : name
1925
+ // -- lr : return address
1926
+ // -----------------------------------
1927
+ Label miss;
1928
+
1929
+ Failure* failure = Failure::InternalError();
1930
+ bool success = GenerateLoadCallback(object, holder, r0, r2, r3, r1, r4,
1931
+ callback, name, &miss, &failure);
1932
+ if (!success) return failure;
1933
+
1934
+ __ bind(&miss);
1935
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
1936
+
1937
+ // Return the generated code.
1938
+ return GetCode(CALLBACKS, name);
1939
+ }
1940
+
1941
+
1942
+ Object* LoadStubCompiler::CompileLoadConstant(JSObject* object,
1943
+ JSObject* holder,
1944
+ Object* value,
1945
+ String* name) {
1946
+ // ----------- S t a t e -------------
1947
+ // -- r0 : receiver
1948
+ // -- r2 : name
1949
+ // -- lr : return address
1950
+ // -----------------------------------
1951
+ Label miss;
1952
+
1953
+ GenerateLoadConstant(object, holder, r0, r3, r1, r4, value, name, &miss);
1954
+ __ bind(&miss);
1955
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
1956
+
1957
+ // Return the generated code.
1958
+ return GetCode(CONSTANT_FUNCTION, name);
1959
+ }
1960
+
1961
+
1962
+ Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* object,
1963
+ JSObject* holder,
1964
+ String* name) {
1965
+ // ----------- S t a t e -------------
1966
+ // -- r0 : receiver
1967
+ // -- r2 : name
1968
+ // -- lr : return address
1969
+ // -----------------------------------
1970
+ Label miss;
1971
+
1972
+ LookupResult lookup;
1973
+ LookupPostInterceptor(holder, name, &lookup);
1974
+ GenerateLoadInterceptor(object,
1975
+ holder,
1976
+ &lookup,
1977
+ r0,
1978
+ r2,
1979
+ r3,
1980
+ r1,
1981
+ r4,
1982
+ name,
1983
+ &miss);
1984
+ __ bind(&miss);
1985
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
1986
+
1987
+ // Return the generated code.
1988
+ return GetCode(INTERCEPTOR, name);
1989
+ }
1990
+
1991
+
1992
+ Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object,
1993
+ GlobalObject* holder,
1994
+ JSGlobalPropertyCell* cell,
1995
+ String* name,
1996
+ bool is_dont_delete) {
1997
+ // ----------- S t a t e -------------
1998
+ // -- r0 : receiver
1999
+ // -- r2 : name
2000
+ // -- lr : return address
2001
+ // -----------------------------------
2002
+ Label miss;
2003
+
2004
+ // If the object is the holder then we know that it's a global
2005
+ // object which can only happen for contextual calls. In this case,
2006
+ // the receiver cannot be a smi.
2007
+ if (object != holder) {
2008
+ __ tst(r0, Operand(kSmiTagMask));
2009
+ __ b(eq, &miss);
2010
+ }
2011
+
2012
+ // Check that the map of the global has not changed.
2013
+ CheckPrototypes(object, r0, holder, r3, r4, r1, name, &miss);
2014
+
2015
+ // Get the value from the cell.
2016
+ __ mov(r3, Operand(Handle<JSGlobalPropertyCell>(cell)));
2017
+ __ ldr(r4, FieldMemOperand(r3, JSGlobalPropertyCell::kValueOffset));
2018
+
2019
+ // Check for deleted property if property can actually be deleted.
2020
+ if (!is_dont_delete) {
2021
+ __ LoadRoot(ip, Heap::kTheHoleValueRootIndex);
2022
+ __ cmp(r4, ip);
2023
+ __ b(eq, &miss);
2024
+ }
2025
+
2026
+ __ mov(r0, r4);
2027
+ __ IncrementCounter(&Counters::named_load_global_inline, 1, r1, r3);
2028
+ __ Ret();
2029
+
2030
+ __ bind(&miss);
2031
+ __ IncrementCounter(&Counters::named_load_global_inline_miss, 1, r1, r3);
2032
+ GenerateLoadMiss(masm(), Code::LOAD_IC);
2033
+
2034
+ // Return the generated code.
2035
+ return GetCode(NORMAL, name);
2036
+ }
2037
+
2038
+
2039
+ Object* KeyedLoadStubCompiler::CompileLoadField(String* name,
2040
+ JSObject* receiver,
2041
+ JSObject* holder,
2042
+ int index) {
2043
+ // ----------- S t a t e -------------
2044
+ // -- lr : return address
2045
+ // -- r0 : key
2046
+ // -- r1 : receiver
2047
+ // -----------------------------------
2048
+ Label miss;
2049
+
2050
+ // Check the key is the cached one.
2051
+ __ cmp(r0, Operand(Handle<String>(name)));
2052
+ __ b(ne, &miss);
2053
+
2054
+ GenerateLoadField(receiver, holder, r1, r2, r3, r4, index, name, &miss);
2055
+ __ bind(&miss);
2056
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2057
+
2058
+ return GetCode(FIELD, name);
2059
+ }
2060
+
2061
+
2062
+ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
2063
+ JSObject* receiver,
2064
+ JSObject* holder,
2065
+ AccessorInfo* callback) {
2066
+ // ----------- S t a t e -------------
2067
+ // -- lr : return address
2068
+ // -- r0 : key
2069
+ // -- r1 : receiver
2070
+ // -----------------------------------
2071
+ Label miss;
2072
+
2073
+ // Check the key is the cached one.
2074
+ __ cmp(r0, Operand(Handle<String>(name)));
2075
+ __ b(ne, &miss);
2076
+
2077
+ Failure* failure = Failure::InternalError();
2078
+ bool success = GenerateLoadCallback(receiver, holder, r1, r0, r2, r3, r4,
2079
+ callback, name, &miss, &failure);
2080
+ if (!success) return failure;
2081
+
2082
+ __ bind(&miss);
2083
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2084
+
2085
+ return GetCode(CALLBACKS, name);
2086
+ }
2087
+
2088
+
2089
+ Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
2090
+ JSObject* receiver,
2091
+ JSObject* holder,
2092
+ Object* value) {
2093
+ // ----------- S t a t e -------------
2094
+ // -- lr : return address
2095
+ // -- r0 : key
2096
+ // -- r1 : receiver
2097
+ // -----------------------------------
2098
+ Label miss;
2099
+
2100
+ // Check the key is the cached one.
2101
+ __ cmp(r0, Operand(Handle<String>(name)));
2102
+ __ b(ne, &miss);
2103
+
2104
+ GenerateLoadConstant(receiver, holder, r1, r2, r3, r4, value, name, &miss);
2105
+ __ bind(&miss);
2106
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2107
+
2108
+ // Return the generated code.
2109
+ return GetCode(CONSTANT_FUNCTION, name);
2110
+ }
2111
+
2112
+
2113
+ Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
2114
+ JSObject* holder,
2115
+ String* name) {
2116
+ // ----------- S t a t e -------------
2117
+ // -- lr : return address
2118
+ // -- r0 : key
2119
+ // -- r1 : receiver
2120
+ // -----------------------------------
2121
+ Label miss;
2122
+
2123
+ // Check the key is the cached one.
2124
+ __ cmp(r0, Operand(Handle<String>(name)));
2125
+ __ b(ne, &miss);
2126
+
2127
+ LookupResult lookup;
2128
+ LookupPostInterceptor(holder, name, &lookup);
2129
+ GenerateLoadInterceptor(receiver,
2130
+ holder,
2131
+ &lookup,
2132
+ r1,
2133
+ r0,
2134
+ r2,
2135
+ r3,
2136
+ r4,
2137
+ name,
2138
+ &miss);
2139
+ __ bind(&miss);
2140
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2141
+
2142
+ return GetCode(INTERCEPTOR, name);
2143
+ }
2144
+
2145
+
2146
+ Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
2147
+ // ----------- S t a t e -------------
2148
+ // -- lr : return address
2149
+ // -- r0 : key
2150
+ // -- r1 : receiver
2151
+ // -----------------------------------
2152
+ Label miss;
2153
+
2154
+ // Check the key is the cached one.
2155
+ __ cmp(r0, Operand(Handle<String>(name)));
2156
+ __ b(ne, &miss);
2157
+
2158
+ GenerateLoadArrayLength(masm(), r1, r2, &miss);
2159
+ __ bind(&miss);
2160
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2161
+
2162
+ return GetCode(CALLBACKS, name);
2163
+ }
2164
+
2165
+
2166
+ Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
2167
+ // ----------- S t a t e -------------
2168
+ // -- lr : return address
2169
+ // -- r0 : key
2170
+ // -- r1 : receiver
2171
+ // -----------------------------------
2172
+ Label miss;
2173
+ __ IncrementCounter(&Counters::keyed_load_string_length, 1, r1, r3);
2174
+
2175
+ // Check the key is the cached one.
2176
+ __ cmp(r0, Operand(Handle<String>(name)));
2177
+ __ b(ne, &miss);
2178
+
2179
+ GenerateLoadStringLength(masm(), r1, r2, r3, &miss);
2180
+ __ bind(&miss);
2181
+ __ DecrementCounter(&Counters::keyed_load_string_length, 1, r1, r3);
2182
+
2183
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2184
+
2185
+ return GetCode(CALLBACKS, name);
2186
+ }
2187
+
2188
+
2189
+ // TODO(1224671): implement the fast case.
2190
+ Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
2191
+ // ----------- S t a t e -------------
2192
+ // -- lr : return address
2193
+ // -- r0 : key
2194
+ // -- r1 : receiver
2195
+ // -----------------------------------
2196
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2197
+
2198
+ return GetCode(CALLBACKS, name);
2199
+ }
2200
+
2201
+
2202
+ Object* KeyedStoreStubCompiler::CompileStoreField(JSObject* object,
2203
+ int index,
2204
+ Map* transition,
2205
+ String* name) {
2206
+ // ----------- S t a t e -------------
2207
+ // -- r0 : value
2208
+ // -- r1 : key
2209
+ // -- r2 : receiver
2210
+ // -- lr : return address
2211
+ // -----------------------------------
2212
+ Label miss;
2213
+
2214
+ __ IncrementCounter(&Counters::keyed_store_field, 1, r3, r4);
2215
+
2216
+ // Check that the name has not changed.
2217
+ __ cmp(r1, Operand(Handle<String>(name)));
2218
+ __ b(ne, &miss);
2219
+
2220
+ // r3 is used as scratch register. r1 and r2 keep their values if a jump to
2221
+ // the miss label is generated.
2222
+ GenerateStoreField(masm(),
2223
+ object,
2224
+ index,
2225
+ transition,
2226
+ r2, r1, r3,
2227
+ &miss);
2228
+ __ bind(&miss);
2229
+
2230
+ __ DecrementCounter(&Counters::keyed_store_field, 1, r3, r4);
2231
+ Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Miss));
2232
+
2233
+ __ Jump(ic, RelocInfo::CODE_TARGET);
2234
+
2235
+ // Return the generated code.
2236
+ return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
2237
+ }
2238
+
2239
+
2240
+ Object* ConstructStubCompiler::CompileConstructStub(
2241
+ SharedFunctionInfo* shared) {
2242
+ // ----------- S t a t e -------------
2243
+ // -- r0 : argc
2244
+ // -- r1 : constructor
2245
+ // -- lr : return address
2246
+ // -- [sp] : last argument
2247
+ // -----------------------------------
2248
+ Label generic_stub_call;
2249
+
2250
+ // Use r7 for holding undefined which is used in several places below.
2251
+ __ LoadRoot(r7, Heap::kUndefinedValueRootIndex);
2252
+
2253
+ #ifdef ENABLE_DEBUGGER_SUPPORT
2254
+ // Check to see whether there are any break points in the function code. If
2255
+ // there are jump to the generic constructor stub which calls the actual
2256
+ // code for the function thereby hitting the break points.
2257
+ __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
2258
+ __ ldr(r2, FieldMemOperand(r2, SharedFunctionInfo::kDebugInfoOffset));
2259
+ __ cmp(r2, r7);
2260
+ __ b(ne, &generic_stub_call);
2261
+ #endif
2262
+
2263
+ // Load the initial map and verify that it is in fact a map.
2264
+ // r1: constructor function
2265
+ // r7: undefined
2266
+ __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
2267
+ __ tst(r2, Operand(kSmiTagMask));
2268
+ __ b(eq, &generic_stub_call);
2269
+ __ CompareObjectType(r2, r3, r4, MAP_TYPE);
2270
+ __ b(ne, &generic_stub_call);
2271
+
2272
+ #ifdef DEBUG
2273
+ // Cannot construct functions this way.
2274
+ // r0: argc
2275
+ // r1: constructor function
2276
+ // r2: initial map
2277
+ // r7: undefined
2278
+ __ CompareInstanceType(r2, r3, JS_FUNCTION_TYPE);
2279
+ __ Check(ne, "Function constructed by construct stub.");
2280
+ #endif
2281
+
2282
+ // Now allocate the JSObject in new space.
2283
+ // r0: argc
2284
+ // r1: constructor function
2285
+ // r2: initial map
2286
+ // r7: undefined
2287
+ __ ldrb(r3, FieldMemOperand(r2, Map::kInstanceSizeOffset));
2288
+ __ AllocateInNewSpace(r3,
2289
+ r4,
2290
+ r5,
2291
+ r6,
2292
+ &generic_stub_call,
2293
+ SIZE_IN_WORDS);
2294
+
2295
+ // Allocated the JSObject, now initialize the fields. Map is set to initial
2296
+ // map and properties and elements are set to empty fixed array.
2297
+ // r0: argc
2298
+ // r1: constructor function
2299
+ // r2: initial map
2300
+ // r3: object size (in words)
2301
+ // r4: JSObject (not tagged)
2302
+ // r7: undefined
2303
+ __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex);
2304
+ __ mov(r5, r4);
2305
+ ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
2306
+ __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2307
+ ASSERT_EQ(1 * kPointerSize, JSObject::kPropertiesOffset);
2308
+ __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
2309
+ ASSERT_EQ(2 * kPointerSize, JSObject::kElementsOffset);
2310
+ __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
2311
+
2312
+ // Calculate the location of the first argument. The stack contains only the
2313
+ // argc arguments.
2314
+ __ add(r1, sp, Operand(r0, LSL, kPointerSizeLog2));
2315
+
2316
+ // Fill all the in-object properties with undefined.
2317
+ // r0: argc
2318
+ // r1: first argument
2319
+ // r3: object size (in words)
2320
+ // r4: JSObject (not tagged)
2321
+ // r5: First in-object property of JSObject (not tagged)
2322
+ // r7: undefined
2323
+ // Fill the initialized properties with a constant value or a passed argument
2324
+ // depending on the this.x = ...; assignment in the function.
2325
+ for (int i = 0; i < shared->this_property_assignments_count(); i++) {
2326
+ if (shared->IsThisPropertyAssignmentArgument(i)) {
2327
+ Label not_passed, next;
2328
+ // Check if the argument assigned to the property is actually passed.
2329
+ int arg_number = shared->GetThisPropertyAssignmentArgument(i);
2330
+ __ cmp(r0, Operand(arg_number));
2331
+ __ b(le, &not_passed);
2332
+ // Argument passed - find it on the stack.
2333
+ __ ldr(r2, MemOperand(r1, (arg_number + 1) * -kPointerSize));
2334
+ __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2335
+ __ b(&next);
2336
+ __ bind(&not_passed);
2337
+ // Set the property to undefined.
2338
+ __ str(r7, MemOperand(r5, kPointerSize, PostIndex));
2339
+ __ bind(&next);
2340
+ } else {
2341
+ // Set the property to the constant value.
2342
+ Handle<Object> constant(shared->GetThisPropertyAssignmentConstant(i));
2343
+ __ mov(r2, Operand(constant));
2344
+ __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2345
+ }
2346
+ }
2347
+
2348
+ // Fill the unused in-object property fields with undefined.
2349
+ for (int i = shared->this_property_assignments_count();
2350
+ i < shared->CalculateInObjectProperties();
2351
+ i++) {
2352
+ __ str(r7, MemOperand(r5, kPointerSize, PostIndex));
2353
+ }
2354
+
2355
+ // r0: argc
2356
+ // r4: JSObject (not tagged)
2357
+ // Move argc to r1 and the JSObject to return to r0 and tag it.
2358
+ __ mov(r1, r0);
2359
+ __ mov(r0, r4);
2360
+ __ orr(r0, r0, Operand(kHeapObjectTag));
2361
+
2362
+ // r0: JSObject
2363
+ // r1: argc
2364
+ // Remove caller arguments and receiver from the stack and return.
2365
+ __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2));
2366
+ __ add(sp, sp, Operand(kPointerSize));
2367
+ __ IncrementCounter(&Counters::constructed_objects, 1, r1, r2);
2368
+ __ IncrementCounter(&Counters::constructed_objects_stub, 1, r1, r2);
2369
+ __ Jump(lr);
2370
+
2371
+ // Jump to the generic stub in case the specialized code cannot handle the
2372
+ // construction.
2373
+ __ bind(&generic_stub_call);
2374
+ Code* code = Builtins::builtin(Builtins::JSConstructStubGeneric);
2375
+ Handle<Code> generic_construct_stub(code);
2376
+ __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET);
2377
+
2378
+ // Return the generated code.
2379
+ return GetCode();
2380
+ }
2381
+
2382
+
2383
+ #undef __
2384
+
2385
+ } } // namespace v8::internal
2386
+
2387
+ #endif // V8_TARGET_ARCH_ARM