therubyracer 0.8.1.pre2 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of therubyracer might be problematic. Click here for more details.

Files changed (877) hide show
  1. data/Changelog.md +2 -1
  2. data/README.md +6 -3
  3. data/ext/v8/upstream/3.1.8/.gitignore +31 -0
  4. data/ext/v8/upstream/3.1.8/AUTHORS +40 -0
  5. data/ext/v8/upstream/3.1.8/ChangeLog +2566 -0
  6. data/ext/v8/upstream/3.1.8/LICENSE +52 -0
  7. data/ext/v8/upstream/3.1.8/LICENSE.strongtalk +29 -0
  8. data/ext/v8/upstream/3.1.8/LICENSE.v8 +26 -0
  9. data/ext/v8/upstream/3.1.8/LICENSE.valgrind +45 -0
  10. data/ext/v8/upstream/3.1.8/SConstruct +1192 -0
  11. data/ext/v8/upstream/3.1.8/build/README.txt +25 -0
  12. data/ext/v8/upstream/3.1.8/build/all.gyp +18 -0
  13. data/ext/v8/upstream/3.1.8/build/armu.gypi +32 -0
  14. data/ext/v8/upstream/3.1.8/build/common.gypi +82 -0
  15. data/ext/v8/upstream/3.1.8/build/gyp_v8 +145 -0
  16. data/ext/v8/upstream/3.1.8/include/v8-debug.h +384 -0
  17. data/ext/v8/upstream/3.1.8/include/v8-preparser.h +116 -0
  18. data/ext/v8/upstream/3.1.8/include/v8-profiler.h +426 -0
  19. data/ext/v8/upstream/3.1.8/include/v8-testing.h +99 -0
  20. data/ext/v8/upstream/3.1.8/include/v8.h +3846 -0
  21. data/ext/v8/upstream/3.1.8/include/v8stdint.h +53 -0
  22. data/ext/v8/upstream/3.1.8/preparser/preparser-process.cc +206 -0
  23. data/ext/v8/upstream/3.1.8/src/SConscript +356 -0
  24. data/ext/v8/upstream/3.1.8/src/accessors.cc +907 -0
  25. data/ext/v8/upstream/3.1.8/src/accessors.h +121 -0
  26. data/ext/v8/upstream/3.1.8/src/allocation.cc +204 -0
  27. data/ext/v8/upstream/3.1.8/src/allocation.h +176 -0
  28. data/ext/v8/upstream/3.1.8/src/api.cc +5191 -0
  29. data/ext/v8/upstream/3.1.8/src/api.h +508 -0
  30. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/apinatives.js +0 -0
  31. data/ext/v8/upstream/3.1.8/src/apiutils.h +80 -0
  32. data/ext/v8/upstream/3.1.8/src/arguments.h +105 -0
  33. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm-inl.h +352 -0
  34. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.cc +2756 -0
  35. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.h +1294 -0
  36. data/ext/v8/upstream/3.1.8/src/arm/builtins-arm.cc +1628 -0
  37. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.cc +6783 -0
  38. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.h +657 -0
  39. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm-inl.h +48 -0
  40. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.cc +7403 -0
  41. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.h +595 -0
  42. data/ext/v8/upstream/3.1.8/src/arm/constants-arm.cc +152 -0
  43. data/ext/v8/upstream/3.1.8/src/arm/constants-arm.h +769 -0
  44. data/ext/v8/upstream/3.1.8/src/arm/cpu-arm.cc +147 -0
  45. data/ext/v8/upstream/3.1.8/src/arm/debug-arm.cc +315 -0
  46. data/ext/v8/upstream/3.1.8/src/arm/deoptimizer-arm.cc +700 -0
  47. data/ext/v8/upstream/3.1.8/src/arm/disasm-arm.cc +1439 -0
  48. data/ext/v8/upstream/3.1.8/src/arm/frames-arm.cc +45 -0
  49. data/ext/v8/upstream/3.1.8/src/arm/frames-arm.h +168 -0
  50. data/ext/v8/upstream/3.1.8/src/arm/full-codegen-arm.cc +4230 -0
  51. data/ext/v8/upstream/3.1.8/src/arm/ic-arm.cc +1799 -0
  52. data/ext/v8/upstream/3.1.8/src/arm/jump-target-arm.cc +174 -0
  53. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.cc +2041 -0
  54. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.h +2046 -0
  55. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.cc +3822 -0
  56. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.h +312 -0
  57. data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.cc +303 -0
  58. data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.h +84 -0
  59. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.cc +2701 -0
  60. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.h +1015 -0
  61. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.cc +1280 -0
  62. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.h +252 -0
  63. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm-inl.h +0 -0
  64. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.cc +0 -0
  65. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.h +0 -0
  66. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.cc +3165 -0
  67. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.h +402 -0
  68. data/ext/v8/upstream/3.1.8/src/arm/stub-cache-arm.cc +4077 -0
  69. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/virtual-frame-arm-inl.h +0 -0
  70. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.cc +843 -0
  71. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.h +520 -0
  72. data/ext/v8/upstream/3.1.8/src/array.js +1231 -0
  73. data/ext/v8/upstream/3.1.8/src/assembler.cc +973 -0
  74. data/ext/v8/upstream/3.1.8/src/assembler.h +787 -0
  75. data/ext/v8/upstream/3.1.8/src/ast-inl.h +107 -0
  76. data/ext/v8/upstream/3.1.8/src/ast.cc +1067 -0
  77. data/ext/v8/upstream/3.1.8/src/ast.h +2177 -0
  78. data/ext/v8/upstream/3.1.8/src/atomicops.h +165 -0
  79. data/ext/v8/upstream/3.1.8/src/atomicops_internals_arm_gcc.h +145 -0
  80. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.cc +126 -0
  81. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.h +287 -0
  82. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_macosx.h +301 -0
  83. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_msvc.h +203 -0
  84. data/ext/v8/upstream/3.1.8/src/bignum-dtoa.cc +655 -0
  85. data/ext/v8/upstream/3.1.8/src/bignum-dtoa.h +81 -0
  86. data/ext/v8/upstream/3.1.8/src/bignum.cc +768 -0
  87. data/ext/v8/upstream/3.1.8/src/bignum.h +140 -0
  88. data/ext/v8/upstream/3.1.8/src/bootstrapper.cc +1888 -0
  89. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/bootstrapper.h +0 -0
  90. data/ext/v8/upstream/3.1.8/src/builtins.cc +1586 -0
  91. data/ext/v8/upstream/3.1.8/src/builtins.h +339 -0
  92. data/ext/v8/upstream/3.1.8/src/bytecodes-irregexp.h +105 -0
  93. data/ext/v8/upstream/3.1.8/src/cached-powers.cc +177 -0
  94. data/ext/v8/upstream/3.1.8/src/cached-powers.h +65 -0
  95. data/ext/v8/upstream/3.1.8/src/char-predicates-inl.h +94 -0
  96. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/char-predicates.h +0 -0
  97. data/ext/v8/upstream/3.1.8/src/checks.cc +110 -0
  98. data/ext/v8/upstream/3.1.8/src/checks.h +292 -0
  99. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue-inl.h +0 -0
  100. data/ext/v8/upstream/3.1.8/src/circular-queue.cc +122 -0
  101. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue.h +0 -0
  102. data/ext/v8/upstream/3.1.8/src/code-stubs.cc +230 -0
  103. data/ext/v8/upstream/3.1.8/src/code-stubs.h +950 -0
  104. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/code.h +0 -0
  105. data/ext/v8/upstream/3.1.8/src/codegen-inl.h +64 -0
  106. data/ext/v8/upstream/3.1.8/src/codegen.cc +495 -0
  107. data/ext/v8/upstream/3.1.8/src/codegen.h +245 -0
  108. data/ext/v8/upstream/3.1.8/src/compilation-cache.cc +654 -0
  109. data/ext/v8/upstream/3.1.8/src/compilation-cache.h +112 -0
  110. data/ext/v8/upstream/3.1.8/src/compiler.cc +806 -0
  111. data/ext/v8/upstream/3.1.8/src/compiler.h +290 -0
  112. data/ext/v8/upstream/3.1.8/src/contexts.cc +320 -0
  113. data/ext/v8/upstream/3.1.8/src/contexts.h +376 -0
  114. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/conversions-inl.h +0 -0
  115. data/ext/v8/upstream/3.1.8/src/conversions.cc +1069 -0
  116. data/ext/v8/upstream/3.1.8/src/conversions.h +122 -0
  117. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/counters.cc +0 -0
  118. data/ext/v8/upstream/3.1.8/src/counters.h +242 -0
  119. data/ext/v8/upstream/3.1.8/src/cpu-profiler-inl.h +100 -0
  120. data/ext/v8/upstream/3.1.8/src/cpu-profiler.cc +554 -0
  121. data/ext/v8/upstream/3.1.8/src/cpu-profiler.h +291 -0
  122. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/cpu.h +0 -0
  123. data/ext/v8/upstream/3.1.8/src/d8-debug.cc +367 -0
  124. data/ext/v8/upstream/3.1.8/src/d8-debug.h +157 -0
  125. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-posix.cc +0 -0
  126. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-readline.cc +0 -0
  127. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-windows.cc +0 -0
  128. data/ext/v8/upstream/3.1.8/src/d8.cc +792 -0
  129. data/ext/v8/upstream/3.1.8/src/d8.gyp +85 -0
  130. data/ext/v8/upstream/3.1.8/src/d8.h +231 -0
  131. data/ext/v8/upstream/3.1.8/src/d8.js +2798 -0
  132. data/ext/v8/upstream/3.1.8/src/data-flow.cc +545 -0
  133. data/ext/v8/upstream/3.1.8/src/data-flow.h +379 -0
  134. data/ext/v8/upstream/3.1.8/src/date.js +1103 -0
  135. data/ext/v8/upstream/3.1.8/src/dateparser-inl.h +125 -0
  136. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/dateparser.cc +0 -0
  137. data/ext/v8/upstream/3.1.8/src/dateparser.h +263 -0
  138. data/ext/v8/upstream/3.1.8/src/debug-agent.cc +446 -0
  139. data/ext/v8/upstream/3.1.8/src/debug-agent.h +131 -0
  140. data/ext/v8/upstream/3.1.8/src/debug-debugger.js +2569 -0
  141. data/ext/v8/upstream/3.1.8/src/debug.cc +3085 -0
  142. data/ext/v8/upstream/3.1.8/src/debug.h +1025 -0
  143. data/ext/v8/upstream/3.1.8/src/deoptimizer.cc +1185 -0
  144. data/ext/v8/upstream/3.1.8/src/deoptimizer.h +529 -0
  145. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disasm.h +0 -0
  146. data/ext/v8/upstream/3.1.8/src/disassembler.cc +338 -0
  147. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disassembler.h +0 -0
  148. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.cc +0 -0
  149. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.h +0 -0
  150. data/ext/v8/upstream/3.1.8/src/double.h +238 -0
  151. data/ext/v8/upstream/3.1.8/src/dtoa.cc +103 -0
  152. data/ext/v8/upstream/3.1.8/src/dtoa.h +85 -0
  153. data/ext/v8/upstream/3.1.8/src/execution.cc +735 -0
  154. data/ext/v8/upstream/3.1.8/src/execution.h +322 -0
  155. data/ext/v8/upstream/3.1.8/src/extensions/experimental/experimental.gyp +53 -0
  156. data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.cc +264 -0
  157. data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.h +64 -0
  158. data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.cc +141 -0
  159. data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.h +50 -0
  160. data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.cc +58 -0
  161. data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.h +49 -0
  162. data/ext/v8/upstream/3.1.8/src/factory.cc +1087 -0
  163. data/ext/v8/upstream/3.1.8/src/factory.h +432 -0
  164. data/ext/v8/upstream/3.1.8/src/fast-dtoa.cc +736 -0
  165. data/ext/v8/upstream/3.1.8/src/fast-dtoa.h +83 -0
  166. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.cc +0 -0
  167. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.h +0 -0
  168. data/ext/v8/upstream/3.1.8/src/flag-definitions.h +552 -0
  169. data/ext/v8/upstream/3.1.8/src/flags.cc +551 -0
  170. data/ext/v8/upstream/3.1.8/src/flags.h +79 -0
  171. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/frame-element.cc +0 -0
  172. data/ext/v8/upstream/3.1.8/src/frame-element.h +277 -0
  173. data/ext/v8/upstream/3.1.8/src/frames-inl.h +210 -0
  174. data/ext/v8/upstream/3.1.8/src/frames.cc +1232 -0
  175. data/ext/v8/upstream/3.1.8/src/frames.h +826 -0
  176. data/ext/v8/upstream/3.1.8/src/full-codegen.cc +1382 -0
  177. data/ext/v8/upstream/3.1.8/src/full-codegen.h +751 -0
  178. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.cc +90 -0
  179. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.h +111 -0
  180. data/ext/v8/upstream/3.1.8/src/gdb-jit.cc +1547 -0
  181. data/ext/v8/upstream/3.1.8/src/gdb-jit.h +138 -0
  182. data/ext/v8/upstream/3.1.8/src/global-handles.cc +534 -0
  183. data/ext/v8/upstream/3.1.8/src/global-handles.h +181 -0
  184. data/ext/v8/upstream/3.1.8/src/globals.h +325 -0
  185. data/ext/v8/upstream/3.1.8/src/handles-inl.h +80 -0
  186. data/ext/v8/upstream/3.1.8/src/handles.cc +910 -0
  187. data/ext/v8/upstream/3.1.8/src/handles.h +424 -0
  188. data/ext/v8/upstream/3.1.8/src/hashmap.cc +230 -0
  189. data/ext/v8/upstream/3.1.8/src/hashmap.h +121 -0
  190. data/ext/v8/upstream/3.1.8/src/heap-inl.h +587 -0
  191. data/ext/v8/upstream/3.1.8/src/heap-profiler.cc +1128 -0
  192. data/ext/v8/upstream/3.1.8/src/heap-profiler.h +381 -0
  193. data/ext/v8/upstream/3.1.8/src/heap.cc +5610 -0
  194. data/ext/v8/upstream/3.1.8/src/heap.h +2218 -0
  195. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.cc +1490 -0
  196. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.h +3493 -0
  197. data/ext/v8/upstream/3.1.8/src/hydrogen.cc +6056 -0
  198. data/ext/v8/upstream/3.1.8/src/hydrogen.h +1091 -0
  199. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32-inl.h +429 -0
  200. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.cc +2800 -0
  201. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.h +1093 -0
  202. data/ext/v8/upstream/3.1.8/src/ia32/builtins-ia32.cc +1590 -0
  203. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.cc +6624 -0
  204. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.h +536 -0
  205. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/codegen-ia32-inl.h +0 -0
  206. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.cc +10354 -0
  207. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.h +798 -0
  208. data/ext/v8/upstream/3.1.8/src/ia32/cpu-ia32.cc +87 -0
  209. data/ext/v8/upstream/3.1.8/src/ia32/debug-ia32.cc +309 -0
  210. data/ext/v8/upstream/3.1.8/src/ia32/deoptimizer-ia32.cc +664 -0
  211. data/ext/v8/upstream/3.1.8/src/ia32/disasm-ia32.cc +1597 -0
  212. data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.cc +45 -0
  213. data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.h +140 -0
  214. data/ext/v8/upstream/3.1.8/src/ia32/full-codegen-ia32.cc +4278 -0
  215. data/ext/v8/upstream/3.1.8/src/ia32/ic-ia32.cc +1786 -0
  216. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/jump-target-ia32.cc +0 -0
  217. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.cc +3880 -0
  218. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.h +309 -0
  219. data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.cc +460 -0
  220. data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.h +110 -0
  221. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.cc +2095 -0
  222. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.h +2127 -0
  223. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.cc +2031 -0
  224. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.h +798 -0
  225. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.cc +1253 -0
  226. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.h +215 -0
  227. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32-inl.h +0 -0
  228. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.cc +0 -0
  229. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.h +0 -0
  230. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/simulator-ia32.cc +0 -0
  231. data/ext/v8/upstream/3.1.8/src/ia32/simulator-ia32.h +72 -0
  232. data/ext/v8/upstream/3.1.8/src/ia32/stub-cache-ia32.cc +3732 -0
  233. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.cc +1360 -0
  234. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.h +646 -0
  235. data/ext/v8/upstream/3.1.8/src/ic-inl.h +129 -0
  236. data/ext/v8/upstream/3.1.8/src/ic.cc +2333 -0
  237. data/ext/v8/upstream/3.1.8/src/ic.h +639 -0
  238. data/ext/v8/upstream/3.1.8/src/inspector.cc +63 -0
  239. data/ext/v8/upstream/3.1.8/src/inspector.h +62 -0
  240. data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.cc +655 -0
  241. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/interpreter-irregexp.h +0 -0
  242. data/ext/v8/upstream/3.1.8/src/json.js +342 -0
  243. data/ext/v8/upstream/3.1.8/src/jsregexp.cc +5340 -0
  244. data/ext/v8/upstream/3.1.8/src/jsregexp.h +1484 -0
  245. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-heavy-inl.h +0 -0
  246. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.cc +430 -0
  247. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.h +244 -0
  248. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-inl.h +0 -0
  249. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-light-inl.h +0 -0
  250. data/ext/v8/upstream/3.1.8/src/jump-target-light.cc +111 -0
  251. data/ext/v8/upstream/3.1.8/src/jump-target-light.h +193 -0
  252. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.cc +0 -0
  253. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.h +0 -0
  254. data/ext/v8/upstream/3.1.8/src/list-inl.h +206 -0
  255. data/ext/v8/upstream/3.1.8/src/list.h +164 -0
  256. data/ext/v8/upstream/3.1.8/src/lithium-allocator-inl.h +140 -0
  257. data/ext/v8/upstream/3.1.8/src/lithium-allocator.cc +2093 -0
  258. data/ext/v8/upstream/3.1.8/src/lithium-allocator.h +644 -0
  259. data/ext/v8/upstream/3.1.8/src/lithium.cc +168 -0
  260. data/ext/v8/upstream/3.1.8/src/lithium.h +592 -0
  261. data/ext/v8/upstream/3.1.8/src/liveedit-debugger.js +1082 -0
  262. data/ext/v8/upstream/3.1.8/src/liveedit.cc +1650 -0
  263. data/ext/v8/upstream/3.1.8/src/liveedit.h +174 -0
  264. data/ext/v8/upstream/3.1.8/src/liveobjectlist-inl.h +126 -0
  265. data/ext/v8/upstream/3.1.8/src/liveobjectlist.cc +2527 -0
  266. data/ext/v8/upstream/3.1.8/src/liveobjectlist.h +322 -0
  267. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/log-inl.h +0 -0
  268. data/ext/v8/upstream/3.1.8/src/log-utils.cc +336 -0
  269. data/ext/v8/upstream/3.1.8/src/log-utils.h +232 -0
  270. data/ext/v8/upstream/3.1.8/src/log.cc +1608 -0
  271. data/ext/v8/upstream/3.1.8/src/log.h +379 -0
  272. data/ext/v8/upstream/3.1.8/src/macro-assembler.h +120 -0
  273. data/ext/v8/upstream/3.1.8/src/macros.py +178 -0
  274. data/ext/v8/upstream/3.1.8/src/mark-compact.cc +2957 -0
  275. data/ext/v8/upstream/3.1.8/src/mark-compact.h +433 -0
  276. data/ext/v8/upstream/3.1.8/src/math.js +264 -0
  277. data/ext/v8/upstream/3.1.8/src/memory.h +82 -0
  278. data/ext/v8/upstream/3.1.8/src/messages.cc +164 -0
  279. data/ext/v8/upstream/3.1.8/src/messages.h +114 -0
  280. data/ext/v8/upstream/3.1.8/src/messages.js +1071 -0
  281. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips-inl.h +0 -0
  282. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips.cc +0 -0
  283. data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.h +667 -0
  284. data/ext/v8/upstream/3.1.8/src/mips/builtins-mips.cc +205 -0
  285. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips-inl.h +0 -0
  286. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips.cc +0 -0
  287. data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.h +431 -0
  288. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.cc +0 -0
  289. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.h +0 -0
  290. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/cpu-mips.cc +0 -0
  291. data/ext/v8/upstream/3.1.8/src/mips/debug-mips.cc +127 -0
  292. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/disasm-mips.cc +0 -0
  293. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/fast-codegen-mips.cc +0 -0
  294. data/ext/v8/upstream/3.1.8/src/mips/frames-mips.cc +96 -0
  295. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/frames-mips.h +0 -0
  296. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/full-codegen-mips.cc +0 -0
  297. data/ext/v8/upstream/3.1.8/src/mips/ic-mips.cc +208 -0
  298. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/jump-target-mips.cc +0 -0
  299. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.cc +0 -0
  300. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.h +0 -0
  301. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips-inl.h +0 -0
  302. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.cc +0 -0
  303. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.h +0 -0
  304. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.cc +1650 -0
  305. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.h +311 -0
  306. data/ext/v8/upstream/3.1.8/src/mips/stub-cache-mips.cc +418 -0
  307. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.cc +0 -0
  308. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.h +0 -0
  309. data/ext/v8/upstream/3.1.8/src/mirror-debugger.js +2380 -0
  310. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mksnapshot.cc +0 -0
  311. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/natives.h +0 -0
  312. data/ext/v8/upstream/3.1.8/src/objects-debug.cc +722 -0
  313. data/ext/v8/upstream/3.1.8/src/objects-inl.h +3946 -0
  314. data/ext/v8/upstream/3.1.8/src/objects-printer.cc +801 -0
  315. data/ext/v8/upstream/3.1.8/src/objects-visiting.cc +142 -0
  316. data/ext/v8/upstream/3.1.8/src/objects-visiting.h +401 -0
  317. data/ext/v8/upstream/3.1.8/src/objects.cc +10044 -0
  318. data/ext/v8/upstream/3.1.8/src/objects.h +6571 -0
  319. data/ext/v8/upstream/3.1.8/src/parser.cc +5165 -0
  320. data/ext/v8/upstream/3.1.8/src/parser.h +802 -0
  321. data/ext/v8/upstream/3.1.8/src/platform-cygwin.cc +745 -0
  322. data/ext/v8/upstream/3.1.8/src/platform-freebsd.cc +702 -0
  323. data/ext/v8/upstream/3.1.8/src/platform-linux.cc +981 -0
  324. data/ext/v8/upstream/3.1.8/src/platform-macos.cc +732 -0
  325. data/ext/v8/upstream/3.1.8/src/platform-nullos.cc +498 -0
  326. data/ext/v8/upstream/3.1.8/src/platform-openbsd.cc +657 -0
  327. data/ext/v8/upstream/3.1.8/src/platform-posix.cc +399 -0
  328. data/ext/v8/upstream/3.1.8/src/platform-solaris.cc +714 -0
  329. data/ext/v8/upstream/3.1.8/src/platform-win32.cc +1974 -0
  330. data/ext/v8/upstream/3.1.8/src/platform.h +636 -0
  331. data/ext/v8/upstream/3.1.8/src/preparse-data.cc +183 -0
  332. data/ext/v8/upstream/3.1.8/src/preparse-data.h +249 -0
  333. data/ext/v8/upstream/3.1.8/src/preparser-api.cc +213 -0
  334. data/ext/v8/upstream/3.1.8/src/preparser.cc +1205 -0
  335. data/ext/v8/upstream/3.1.8/src/preparser.h +278 -0
  336. data/ext/v8/upstream/3.1.8/src/prettyprinter.cc +1539 -0
  337. data/ext/v8/upstream/3.1.8/src/prettyprinter.h +223 -0
  338. data/ext/v8/upstream/3.1.8/src/profile-generator-inl.h +128 -0
  339. data/ext/v8/upstream/3.1.8/src/profile-generator.cc +2899 -0
  340. data/ext/v8/upstream/3.1.8/src/profile-generator.h +1151 -0
  341. data/ext/v8/upstream/3.1.8/src/property.cc +96 -0
  342. data/ext/v8/upstream/3.1.8/src/property.h +337 -0
  343. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  344. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.cc +470 -0
  345. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.h +142 -0
  346. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.cc +373 -0
  347. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.h +104 -0
  348. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.cc +257 -0
  349. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.h +231 -0
  350. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.cc +0 -0
  351. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.h +0 -0
  352. data/ext/v8/upstream/3.1.8/src/regexp.js +483 -0
  353. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator-inl.h +0 -0
  354. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.cc +0 -0
  355. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.h +0 -0
  356. data/ext/v8/upstream/3.1.8/src/rewriter.cc +1023 -0
  357. data/ext/v8/upstream/3.1.8/src/rewriter.h +59 -0
  358. data/ext/v8/upstream/3.1.8/src/runtime-profiler.cc +443 -0
  359. data/ext/v8/upstream/3.1.8/src/runtime-profiler.h +77 -0
  360. data/ext/v8/upstream/3.1.8/src/runtime.cc +11592 -0
  361. data/ext/v8/upstream/3.1.8/src/runtime.h +582 -0
  362. data/ext/v8/upstream/3.1.8/src/runtime.js +643 -0
  363. data/ext/v8/upstream/3.1.8/src/safepoint-table.cc +253 -0
  364. data/ext/v8/upstream/3.1.8/src/safepoint-table.h +263 -0
  365. data/ext/v8/upstream/3.1.8/src/scanner-base.cc +971 -0
  366. data/ext/v8/upstream/3.1.8/src/scanner-base.h +653 -0
  367. data/ext/v8/upstream/3.1.8/src/scanner.cc +586 -0
  368. data/ext/v8/upstream/3.1.8/src/scanner.h +194 -0
  369. data/ext/v8/upstream/3.1.8/src/scopeinfo.cc +636 -0
  370. data/ext/v8/upstream/3.1.8/src/scopeinfo.h +238 -0
  371. data/ext/v8/upstream/3.1.8/src/scopes.cc +1063 -0
  372. data/ext/v8/upstream/3.1.8/src/scopes.h +494 -0
  373. data/ext/v8/upstream/3.1.8/src/serialize.cc +1535 -0
  374. data/ext/v8/upstream/3.1.8/src/serialize.h +584 -0
  375. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/shell.h +0 -0
  376. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/simulator.h +0 -0
  377. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/smart-pointer.h +0 -0
  378. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-common.cc +0 -0
  379. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-empty.cc +0 -0
  380. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot.h +0 -0
  381. data/ext/v8/upstream/3.1.8/src/spaces-inl.h +524 -0
  382. data/ext/v8/upstream/3.1.8/src/spaces.cc +3254 -0
  383. data/ext/v8/upstream/3.1.8/src/spaces.h +2362 -0
  384. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree-inl.h +0 -0
  385. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree.h +0 -0
  386. data/ext/v8/upstream/3.1.8/src/string-search.cc +40 -0
  387. data/ext/v8/upstream/3.1.8/src/string-search.h +567 -0
  388. data/ext/v8/upstream/3.1.8/src/string-stream.cc +584 -0
  389. data/ext/v8/upstream/3.1.8/src/string-stream.h +191 -0
  390. data/ext/v8/upstream/3.1.8/src/string.js +915 -0
  391. data/ext/v8/upstream/3.1.8/src/strtod.cc +440 -0
  392. data/ext/v8/upstream/3.1.8/src/strtod.h +40 -0
  393. data/ext/v8/upstream/3.1.8/src/stub-cache.cc +1878 -0
  394. data/ext/v8/upstream/3.1.8/src/stub-cache.h +849 -0
  395. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/third_party/valgrind/valgrind.h +0 -0
  396. data/ext/v8/upstream/3.1.8/src/token.cc +63 -0
  397. data/ext/v8/upstream/3.1.8/src/token.h +288 -0
  398. data/ext/v8/upstream/3.1.8/src/top.cc +1152 -0
  399. data/ext/v8/upstream/3.1.8/src/top.h +608 -0
  400. data/ext/v8/upstream/3.1.8/src/type-info.cc +406 -0
  401. data/ext/v8/upstream/3.1.8/src/type-info.h +283 -0
  402. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue-inl.h +0 -0
  403. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue.h +0 -0
  404. data/ext/v8/upstream/3.1.8/src/unicode-inl.h +238 -0
  405. data/ext/v8/upstream/3.1.8/src/unicode.cc +1624 -0
  406. data/ext/v8/upstream/3.1.8/src/unicode.h +280 -0
  407. data/ext/v8/upstream/3.1.8/src/uri.js +402 -0
  408. data/ext/v8/upstream/3.1.8/src/utils.cc +371 -0
  409. data/ext/v8/upstream/3.1.8/src/utils.h +793 -0
  410. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8-counters.cc +0 -0
  411. data/ext/v8/upstream/3.1.8/src/v8-counters.h +290 -0
  412. data/ext/v8/upstream/3.1.8/src/v8.cc +270 -0
  413. data/ext/v8/upstream/3.1.8/src/v8.h +127 -0
  414. data/ext/v8/upstream/3.1.8/src/v8checks.h +64 -0
  415. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8dll-main.cc +0 -0
  416. data/ext/v8/upstream/3.1.8/src/v8globals.h +480 -0
  417. data/ext/v8/upstream/3.1.8/src/v8natives.js +1252 -0
  418. data/ext/v8/upstream/3.1.8/src/v8preparserdll-main.cc +39 -0
  419. data/ext/v8/upstream/3.1.8/src/v8threads.cc +440 -0
  420. data/ext/v8/upstream/3.1.8/src/v8threads.h +157 -0
  421. data/ext/v8/upstream/3.1.8/src/v8utils.h +354 -0
  422. data/ext/v8/upstream/3.1.8/src/variables.cc +132 -0
  423. data/ext/v8/upstream/3.1.8/src/variables.h +212 -0
  424. data/ext/v8/upstream/3.1.8/src/version.cc +95 -0
  425. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/version.h +0 -0
  426. data/ext/v8/upstream/3.1.8/src/virtual-frame-heavy-inl.h +190 -0
  427. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-heavy.cc +0 -0
  428. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-inl.h +0 -0
  429. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light-inl.h +0 -0
  430. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light.cc +0 -0
  431. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame.cc +0 -0
  432. data/ext/v8/upstream/3.1.8/src/virtual-frame.h +59 -0
  433. data/ext/v8/upstream/3.1.8/src/vm-state-inl.h +134 -0
  434. data/ext/v8/upstream/3.1.8/src/vm-state.h +68 -0
  435. data/ext/v8/upstream/3.1.8/src/win32-headers.h +95 -0
  436. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64-inl.h +455 -0
  437. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.cc +3162 -0
  438. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.h +1584 -0
  439. data/ext/v8/upstream/3.1.8/src/x64/builtins-x64.cc +1492 -0
  440. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.cc +5150 -0
  441. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.h +519 -0
  442. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64-inl.h +46 -0
  443. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.cc +8835 -0
  444. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.h +750 -0
  445. data/ext/v8/upstream/3.1.8/src/x64/cpu-x64.cc +86 -0
  446. data/ext/v8/upstream/3.1.8/src/x64/debug-x64.cc +316 -0
  447. data/ext/v8/upstream/3.1.8/src/x64/deoptimizer-x64.cc +781 -0
  448. data/ext/v8/upstream/3.1.8/src/x64/disasm-x64.cc +1737 -0
  449. data/ext/v8/upstream/3.1.8/src/x64/frames-x64.cc +45 -0
  450. data/ext/v8/upstream/3.1.8/src/x64/frames-x64.h +130 -0
  451. data/ext/v8/upstream/3.1.8/src/x64/full-codegen-x64.cc +3984 -0
  452. data/ext/v8/upstream/3.1.8/src/x64/ic-x64.cc +1761 -0
  453. data/ext/v8/upstream/3.1.8/src/x64/jump-target-x64.cc +437 -0
  454. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.cc +3639 -0
  455. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.h +305 -0
  456. data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.cc +320 -0
  457. data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.h +74 -0
  458. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.cc +2044 -0
  459. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.h +2052 -0
  460. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.cc +2660 -0
  461. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.h +1852 -0
  462. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.cc +1382 -0
  463. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.h +278 -0
  464. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64-inl.h +0 -0
  465. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.cc +0 -0
  466. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.h +0 -0
  467. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/simulator-x64.cc +0 -0
  468. data/ext/v8/upstream/3.1.8/src/x64/simulator-x64.h +71 -0
  469. data/ext/v8/upstream/3.1.8/src/x64/stub-cache-x64.cc +3509 -0
  470. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.cc +1292 -0
  471. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.h +593 -0
  472. data/ext/v8/upstream/3.1.8/src/zone-inl.h +83 -0
  473. data/ext/v8/upstream/3.1.8/src/zone.cc +195 -0
  474. data/ext/v8/upstream/3.1.8/src/zone.h +233 -0
  475. data/ext/v8/upstream/3.1.8/tools/codemap.js +265 -0
  476. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/consarray.js +0 -0
  477. data/ext/v8/upstream/3.1.8/tools/csvparser.js +78 -0
  478. data/ext/v8/upstream/3.1.8/tools/disasm.py +92 -0
  479. data/ext/v8/upstream/3.1.8/tools/gc-nvp-trace-processor.py +328 -0
  480. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/generate-ten-powers.scm +0 -0
  481. data/ext/v8/upstream/3.1.8/tools/grokdump.py +840 -0
  482. data/ext/v8/upstream/3.1.8/tools/gyp/v8.gyp +869 -0
  483. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/js2c.py +0 -0
  484. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/jsmin.py +0 -0
  485. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/linux-tick-processor +0 -0
  486. data/ext/v8/upstream/3.1.8/tools/ll_prof.py +919 -0
  487. data/ext/v8/upstream/3.1.8/tools/logreader.js +185 -0
  488. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-nm +0 -0
  489. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-tick-processor +0 -0
  490. data/ext/v8/upstream/3.1.8/tools/oom_dump/README +31 -0
  491. data/ext/v8/upstream/3.1.8/tools/oom_dump/SConstruct +42 -0
  492. data/ext/v8/upstream/3.1.8/tools/oom_dump/oom_dump.cc +288 -0
  493. data/ext/v8/upstream/3.1.8/tools/presubmit.py +305 -0
  494. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/process-heap-prof.py +0 -0
  495. data/ext/v8/upstream/3.1.8/tools/profile.js +751 -0
  496. data/ext/v8/upstream/3.1.8/tools/profile_view.js +219 -0
  497. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/run-valgrind.py +0 -0
  498. data/ext/v8/upstream/3.1.8/tools/splaytree.js +316 -0
  499. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/stats-viewer.py +0 -0
  500. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/tickprocessor-driver.js +0 -0
  501. data/ext/v8/upstream/3.1.8/tools/tickprocessor.js +863 -0
  502. data/ext/v8/upstream/3.1.8/tools/utils.py +96 -0
  503. data/ext/v8/upstream/3.1.8/tools/visual_studio/README.txt +70 -0
  504. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/arm.vsprops +0 -0
  505. data/ext/v8/upstream/3.1.8/tools/visual_studio/common.vsprops +34 -0
  506. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8.vcproj +0 -0
  507. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_arm.vcproj +0 -0
  508. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_x64.vcproj +0 -0
  509. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8js2c.cmd +0 -0
  510. data/ext/v8/upstream/3.1.8/tools/visual_studio/debug.vsprops +17 -0
  511. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/ia32.vsprops +0 -0
  512. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/js2c.cmd +0 -0
  513. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/release.vsprops +0 -0
  514. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.sln +0 -0
  515. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.vcproj +0 -0
  516. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.sln +0 -0
  517. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.vcproj +0 -0
  518. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base.vcproj +1296 -0
  519. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_arm.vcproj +1234 -0
  520. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_x64.vcproj +1296 -0
  521. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest.vcproj +0 -0
  522. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  523. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  524. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  525. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  526. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  527. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  528. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  529. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample.vcproj +147 -0
  530. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_arm.vcproj +147 -0
  531. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_x64.vcproj +163 -0
  532. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  533. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  534. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  535. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  536. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.sln +0 -0
  537. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.vcproj +0 -0
  538. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/x64.vsprops +0 -0
  539. data/ext/v8/upstream/3.1.8/tools/windows-tick-processor.bat +30 -0
  540. data/ext/v8/upstream/Makefile +2 -1
  541. data/ext/v8/v8_template.cpp +2 -2
  542. data/lib/v8/version.rb +1 -1
  543. data/spec/redjs/jsapi_spec.rb +2 -2
  544. metadata +552 -490
  545. data/ext/v8/upstream/2.3.3/.gitignore +0 -26
  546. data/ext/v8/upstream/2.3.3/AUTHORS +0 -31
  547. data/ext/v8/upstream/2.3.3/ChangeLog +0 -1916
  548. data/ext/v8/upstream/2.3.3/LICENSE +0 -55
  549. data/ext/v8/upstream/2.3.3/SConstruct +0 -1154
  550. data/ext/v8/upstream/2.3.3/include/v8-debug.h +0 -381
  551. data/ext/v8/upstream/2.3.3/include/v8-profiler.h +0 -353
  552. data/ext/v8/upstream/2.3.3/include/v8.h +0 -3616
  553. data/ext/v8/upstream/2.3.3/src/SConscript +0 -330
  554. data/ext/v8/upstream/2.3.3/src/accessors.cc +0 -661
  555. data/ext/v8/upstream/2.3.3/src/accessors.h +0 -114
  556. data/ext/v8/upstream/2.3.3/src/allocation.cc +0 -198
  557. data/ext/v8/upstream/2.3.3/src/allocation.h +0 -169
  558. data/ext/v8/upstream/2.3.3/src/api.cc +0 -4795
  559. data/ext/v8/upstream/2.3.3/src/api.h +0 -485
  560. data/ext/v8/upstream/2.3.3/src/apiutils.h +0 -69
  561. data/ext/v8/upstream/2.3.3/src/arguments.h +0 -96
  562. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm-inl.h +0 -305
  563. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.cc +0 -2580
  564. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.h +0 -1275
  565. data/ext/v8/upstream/2.3.3/src/arm/builtins-arm.cc +0 -1320
  566. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +0 -48
  567. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.cc +0 -11398
  568. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.h +0 -1102
  569. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.cc +0 -154
  570. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.h +0 -388
  571. data/ext/v8/upstream/2.3.3/src/arm/cpu-arm.cc +0 -142
  572. data/ext/v8/upstream/2.3.3/src/arm/debug-arm.cc +0 -309
  573. data/ext/v8/upstream/2.3.3/src/arm/disasm-arm.cc +0 -1459
  574. data/ext/v8/upstream/2.3.3/src/arm/fast-codegen-arm.cc +0 -241
  575. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.cc +0 -123
  576. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.h +0 -162
  577. data/ext/v8/upstream/2.3.3/src/arm/full-codegen-arm.cc +0 -3178
  578. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +0 -2258
  579. data/ext/v8/upstream/2.3.3/src/arm/jump-target-arm.cc +0 -164
  580. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.cc +0 -1892
  581. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.h +0 -727
  582. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.cc +0 -1261
  583. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.h +0 -266
  584. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.cc +0 -2822
  585. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.h +0 -361
  586. data/ext/v8/upstream/2.3.3/src/arm/stub-cache-arm.cc +0 -2387
  587. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.cc +0 -834
  588. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.h +0 -519
  589. data/ext/v8/upstream/2.3.3/src/array.js +0 -1127
  590. data/ext/v8/upstream/2.3.3/src/assembler.cc +0 -801
  591. data/ext/v8/upstream/2.3.3/src/assembler.h +0 -573
  592. data/ext/v8/upstream/2.3.3/src/ast-inl.h +0 -81
  593. data/ext/v8/upstream/2.3.3/src/ast.cc +0 -1152
  594. data/ext/v8/upstream/2.3.3/src/ast.h +0 -2106
  595. data/ext/v8/upstream/2.3.3/src/bootstrapper.cc +0 -1819
  596. data/ext/v8/upstream/2.3.3/src/builtins.cc +0 -1529
  597. data/ext/v8/upstream/2.3.3/src/builtins.h +0 -263
  598. data/ext/v8/upstream/2.3.3/src/bytecodes-irregexp.h +0 -104
  599. data/ext/v8/upstream/2.3.3/src/cached-powers.h +0 -119
  600. data/ext/v8/upstream/2.3.3/src/char-predicates-inl.h +0 -86
  601. data/ext/v8/upstream/2.3.3/src/checks.cc +0 -100
  602. data/ext/v8/upstream/2.3.3/src/checks.h +0 -310
  603. data/ext/v8/upstream/2.3.3/src/circular-queue.cc +0 -121
  604. data/ext/v8/upstream/2.3.3/src/code-stubs.cc +0 -177
  605. data/ext/v8/upstream/2.3.3/src/code-stubs.h +0 -177
  606. data/ext/v8/upstream/2.3.3/src/codegen-inl.h +0 -60
  607. data/ext/v8/upstream/2.3.3/src/codegen.cc +0 -516
  608. data/ext/v8/upstream/2.3.3/src/codegen.h +0 -897
  609. data/ext/v8/upstream/2.3.3/src/compilation-cache.cc +0 -562
  610. data/ext/v8/upstream/2.3.3/src/compilation-cache.h +0 -102
  611. data/ext/v8/upstream/2.3.3/src/compiler.cc +0 -654
  612. data/ext/v8/upstream/2.3.3/src/compiler.h +0 -299
  613. data/ext/v8/upstream/2.3.3/src/contexts.cc +0 -256
  614. data/ext/v8/upstream/2.3.3/src/contexts.h +0 -342
  615. data/ext/v8/upstream/2.3.3/src/conversions.cc +0 -1119
  616. data/ext/v8/upstream/2.3.3/src/conversions.h +0 -123
  617. data/ext/v8/upstream/2.3.3/src/counters.h +0 -239
  618. data/ext/v8/upstream/2.3.3/src/cpu-profiler-inl.h +0 -100
  619. data/ext/v8/upstream/2.3.3/src/cpu-profiler.cc +0 -538
  620. data/ext/v8/upstream/2.3.3/src/cpu-profiler.h +0 -285
  621. data/ext/v8/upstream/2.3.3/src/d8-debug.cc +0 -356
  622. data/ext/v8/upstream/2.3.3/src/d8-debug.h +0 -155
  623. data/ext/v8/upstream/2.3.3/src/d8.cc +0 -783
  624. data/ext/v8/upstream/2.3.3/src/d8.h +0 -227
  625. data/ext/v8/upstream/2.3.3/src/d8.js +0 -1683
  626. data/ext/v8/upstream/2.3.3/src/data-flow.cc +0 -758
  627. data/ext/v8/upstream/2.3.3/src/data-flow.h +0 -278
  628. data/ext/v8/upstream/2.3.3/src/date.js +0 -1059
  629. data/ext/v8/upstream/2.3.3/src/dateparser-inl.h +0 -123
  630. data/ext/v8/upstream/2.3.3/src/dateparser.h +0 -244
  631. data/ext/v8/upstream/2.3.3/src/debug-agent.cc +0 -427
  632. data/ext/v8/upstream/2.3.3/src/debug-agent.h +0 -129
  633. data/ext/v8/upstream/2.3.3/src/debug-debugger.js +0 -2227
  634. data/ext/v8/upstream/2.3.3/src/debug.cc +0 -3005
  635. data/ext/v8/upstream/2.3.3/src/debug.h +0 -993
  636. data/ext/v8/upstream/2.3.3/src/disassembler.cc +0 -312
  637. data/ext/v8/upstream/2.3.3/src/double.h +0 -169
  638. data/ext/v8/upstream/2.3.3/src/dtoa-config.c +0 -92
  639. data/ext/v8/upstream/2.3.3/src/dtoa.cc +0 -77
  640. data/ext/v8/upstream/2.3.3/src/dtoa.h +0 -81
  641. data/ext/v8/upstream/2.3.3/src/execution.cc +0 -809
  642. data/ext/v8/upstream/2.3.3/src/execution.h +0 -336
  643. data/ext/v8/upstream/2.3.3/src/factory.cc +0 -1003
  644. data/ext/v8/upstream/2.3.3/src/factory.h +0 -410
  645. data/ext/v8/upstream/2.3.3/src/fast-codegen.cc +0 -746
  646. data/ext/v8/upstream/2.3.3/src/fast-codegen.h +0 -161
  647. data/ext/v8/upstream/2.3.3/src/fast-dtoa.cc +0 -505
  648. data/ext/v8/upstream/2.3.3/src/fast-dtoa.h +0 -58
  649. data/ext/v8/upstream/2.3.3/src/flag-definitions.h +0 -455
  650. data/ext/v8/upstream/2.3.3/src/flags.cc +0 -551
  651. data/ext/v8/upstream/2.3.3/src/flags.h +0 -81
  652. data/ext/v8/upstream/2.3.3/src/flow-graph.cc +0 -763
  653. data/ext/v8/upstream/2.3.3/src/flow-graph.h +0 -180
  654. data/ext/v8/upstream/2.3.3/src/frame-element.h +0 -273
  655. data/ext/v8/upstream/2.3.3/src/frames-inl.h +0 -217
  656. data/ext/v8/upstream/2.3.3/src/frames.cc +0 -826
  657. data/ext/v8/upstream/2.3.3/src/frames.h +0 -682
  658. data/ext/v8/upstream/2.3.3/src/full-codegen.cc +0 -1443
  659. data/ext/v8/upstream/2.3.3/src/full-codegen.h +0 -548
  660. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.cc +0 -76
  661. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.h +0 -135
  662. data/ext/v8/upstream/2.3.3/src/global-handles.cc +0 -520
  663. data/ext/v8/upstream/2.3.3/src/global-handles.h +0 -180
  664. data/ext/v8/upstream/2.3.3/src/globals.h +0 -669
  665. data/ext/v8/upstream/2.3.3/src/handles-inl.h +0 -76
  666. data/ext/v8/upstream/2.3.3/src/handles.cc +0 -825
  667. data/ext/v8/upstream/2.3.3/src/handles.h +0 -393
  668. data/ext/v8/upstream/2.3.3/src/hashmap.cc +0 -226
  669. data/ext/v8/upstream/2.3.3/src/hashmap.h +0 -120
  670. data/ext/v8/upstream/2.3.3/src/heap-inl.h +0 -493
  671. data/ext/v8/upstream/2.3.3/src/heap-profiler.cc +0 -779
  672. data/ext/v8/upstream/2.3.3/src/heap-profiler.h +0 -323
  673. data/ext/v8/upstream/2.3.3/src/heap.cc +0 -4994
  674. data/ext/v8/upstream/2.3.3/src/heap.h +0 -1984
  675. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32-inl.h +0 -360
  676. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.cc +0 -2600
  677. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.h +0 -969
  678. data/ext/v8/upstream/2.3.3/src/ia32/builtins-ia32.cc +0 -1261
  679. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.cc +0 -13968
  680. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.h +0 -1097
  681. data/ext/v8/upstream/2.3.3/src/ia32/cpu-ia32.cc +0 -83
  682. data/ext/v8/upstream/2.3.3/src/ia32/debug-ia32.cc +0 -309
  683. data/ext/v8/upstream/2.3.3/src/ia32/disasm-ia32.cc +0 -1471
  684. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.cc +0 -954
  685. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.h +0 -155
  686. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.cc +0 -115
  687. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.h +0 -135
  688. data/ext/v8/upstream/2.3.3/src/ia32/full-codegen-ia32.cc +0 -3281
  689. data/ext/v8/upstream/2.3.3/src/ia32/ic-ia32.cc +0 -1966
  690. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.cc +0 -1610
  691. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.h +0 -610
  692. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.cc +0 -1247
  693. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.h +0 -214
  694. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.h +0 -62
  695. data/ext/v8/upstream/2.3.3/src/ia32/stub-cache-ia32.cc +0 -2750
  696. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.cc +0 -1334
  697. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.h +0 -627
  698. data/ext/v8/upstream/2.3.3/src/ic-inl.h +0 -120
  699. data/ext/v8/upstream/2.3.3/src/ic.cc +0 -1827
  700. data/ext/v8/upstream/2.3.3/src/ic.h +0 -515
  701. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.cc +0 -646
  702. data/ext/v8/upstream/2.3.3/src/json.js +0 -268
  703. data/ext/v8/upstream/2.3.3/src/jsregexp.cc +0 -5283
  704. data/ext/v8/upstream/2.3.3/src/jsregexp.h +0 -1463
  705. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.cc +0 -429
  706. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.h +0 -244
  707. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +0 -110
  708. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +0 -192
  709. data/ext/v8/upstream/2.3.3/src/list-inl.h +0 -166
  710. data/ext/v8/upstream/2.3.3/src/list.h +0 -159
  711. data/ext/v8/upstream/2.3.3/src/liveedit-debugger.js +0 -1057
  712. data/ext/v8/upstream/2.3.3/src/liveedit.cc +0 -1480
  713. data/ext/v8/upstream/2.3.3/src/liveedit.h +0 -170
  714. data/ext/v8/upstream/2.3.3/src/log-utils.cc +0 -497
  715. data/ext/v8/upstream/2.3.3/src/log-utils.h +0 -289
  716. data/ext/v8/upstream/2.3.3/src/log.cc +0 -1561
  717. data/ext/v8/upstream/2.3.3/src/log.h +0 -384
  718. data/ext/v8/upstream/2.3.3/src/macro-assembler.h +0 -86
  719. data/ext/v8/upstream/2.3.3/src/macros.py +0 -177
  720. data/ext/v8/upstream/2.3.3/src/mark-compact.cc +0 -2330
  721. data/ext/v8/upstream/2.3.3/src/mark-compact.h +0 -451
  722. data/ext/v8/upstream/2.3.3/src/math.js +0 -264
  723. data/ext/v8/upstream/2.3.3/src/memory.h +0 -74
  724. data/ext/v8/upstream/2.3.3/src/messages.cc +0 -183
  725. data/ext/v8/upstream/2.3.3/src/messages.h +0 -113
  726. data/ext/v8/upstream/2.3.3/src/messages.js +0 -982
  727. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.h +0 -668
  728. data/ext/v8/upstream/2.3.3/src/mips/builtins-mips.cc +0 -205
  729. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.h +0 -434
  730. data/ext/v8/upstream/2.3.3/src/mips/debug-mips.cc +0 -131
  731. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.cc +0 -102
  732. data/ext/v8/upstream/2.3.3/src/mips/ic-mips.cc +0 -220
  733. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.cc +0 -1651
  734. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.h +0 -311
  735. data/ext/v8/upstream/2.3.3/src/mips/stub-cache-mips.cc +0 -403
  736. data/ext/v8/upstream/2.3.3/src/mirror-debugger.js +0 -2380
  737. data/ext/v8/upstream/2.3.3/src/objects-debug.cc +0 -1366
  738. data/ext/v8/upstream/2.3.3/src/objects-inl.h +0 -3333
  739. data/ext/v8/upstream/2.3.3/src/objects.cc +0 -8820
  740. data/ext/v8/upstream/2.3.3/src/objects.h +0 -5373
  741. data/ext/v8/upstream/2.3.3/src/oprofile-agent.cc +0 -108
  742. data/ext/v8/upstream/2.3.3/src/oprofile-agent.h +0 -77
  743. data/ext/v8/upstream/2.3.3/src/parser.cc +0 -5207
  744. data/ext/v8/upstream/2.3.3/src/parser.h +0 -197
  745. data/ext/v8/upstream/2.3.3/src/platform-freebsd.cc +0 -667
  746. data/ext/v8/upstream/2.3.3/src/platform-linux.cc +0 -862
  747. data/ext/v8/upstream/2.3.3/src/platform-macos.cc +0 -665
  748. data/ext/v8/upstream/2.3.3/src/platform-nullos.cc +0 -454
  749. data/ext/v8/upstream/2.3.3/src/platform-openbsd.cc +0 -622
  750. data/ext/v8/upstream/2.3.3/src/platform-posix.cc +0 -362
  751. data/ext/v8/upstream/2.3.3/src/platform-solaris.cc +0 -653
  752. data/ext/v8/upstream/2.3.3/src/platform-win32.cc +0 -1911
  753. data/ext/v8/upstream/2.3.3/src/platform.h +0 -577
  754. data/ext/v8/upstream/2.3.3/src/powers-ten.h +0 -2461
  755. data/ext/v8/upstream/2.3.3/src/prettyprinter.cc +0 -1531
  756. data/ext/v8/upstream/2.3.3/src/prettyprinter.h +0 -221
  757. data/ext/v8/upstream/2.3.3/src/profile-generator-inl.h +0 -148
  758. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +0 -1830
  759. data/ext/v8/upstream/2.3.3/src/profile-generator.h +0 -853
  760. data/ext/v8/upstream/2.3.3/src/property.cc +0 -96
  761. data/ext/v8/upstream/2.3.3/src/property.h +0 -315
  762. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.cc +0 -464
  763. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.h +0 -141
  764. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.cc +0 -356
  765. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.h +0 -103
  766. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.cc +0 -261
  767. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.h +0 -228
  768. data/ext/v8/upstream/2.3.3/src/regexp.js +0 -549
  769. data/ext/v8/upstream/2.3.3/src/rewriter.cc +0 -1038
  770. data/ext/v8/upstream/2.3.3/src/rewriter.h +0 -54
  771. data/ext/v8/upstream/2.3.3/src/runtime.cc +0 -10599
  772. data/ext/v8/upstream/2.3.3/src/runtime.h +0 -459
  773. data/ext/v8/upstream/2.3.3/src/runtime.js +0 -629
  774. data/ext/v8/upstream/2.3.3/src/scanner.cc +0 -1346
  775. data/ext/v8/upstream/2.3.3/src/scanner.h +0 -503
  776. data/ext/v8/upstream/2.3.3/src/scopeinfo.cc +0 -637
  777. data/ext/v8/upstream/2.3.3/src/scopeinfo.h +0 -233
  778. data/ext/v8/upstream/2.3.3/src/scopes.cc +0 -962
  779. data/ext/v8/upstream/2.3.3/src/scopes.h +0 -400
  780. data/ext/v8/upstream/2.3.3/src/serialize.cc +0 -1461
  781. data/ext/v8/upstream/2.3.3/src/serialize.h +0 -581
  782. data/ext/v8/upstream/2.3.3/src/spaces-inl.h +0 -483
  783. data/ext/v8/upstream/2.3.3/src/spaces.cc +0 -2901
  784. data/ext/v8/upstream/2.3.3/src/spaces.h +0 -2197
  785. data/ext/v8/upstream/2.3.3/src/string-stream.cc +0 -584
  786. data/ext/v8/upstream/2.3.3/src/string-stream.h +0 -189
  787. data/ext/v8/upstream/2.3.3/src/string.js +0 -1006
  788. data/ext/v8/upstream/2.3.3/src/stub-cache.cc +0 -1379
  789. data/ext/v8/upstream/2.3.3/src/stub-cache.h +0 -756
  790. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/COPYING +0 -15
  791. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/dtoa.c +0 -3334
  792. data/ext/v8/upstream/2.3.3/src/token.cc +0 -56
  793. data/ext/v8/upstream/2.3.3/src/token.h +0 -270
  794. data/ext/v8/upstream/2.3.3/src/top.cc +0 -1067
  795. data/ext/v8/upstream/2.3.3/src/top.h +0 -463
  796. data/ext/v8/upstream/2.3.3/src/type-info.cc +0 -53
  797. data/ext/v8/upstream/2.3.3/src/type-info.h +0 -244
  798. data/ext/v8/upstream/2.3.3/src/unicode-inl.h +0 -238
  799. data/ext/v8/upstream/2.3.3/src/unicode.cc +0 -749
  800. data/ext/v8/upstream/2.3.3/src/unicode.h +0 -279
  801. data/ext/v8/upstream/2.3.3/src/uri.js +0 -415
  802. data/ext/v8/upstream/2.3.3/src/utils.cc +0 -285
  803. data/ext/v8/upstream/2.3.3/src/utils.h +0 -745
  804. data/ext/v8/upstream/2.3.3/src/v8-counters.h +0 -250
  805. data/ext/v8/upstream/2.3.3/src/v8.cc +0 -228
  806. data/ext/v8/upstream/2.3.3/src/v8.h +0 -121
  807. data/ext/v8/upstream/2.3.3/src/v8natives.js +0 -1188
  808. data/ext/v8/upstream/2.3.3/src/v8threads.cc +0 -461
  809. data/ext/v8/upstream/2.3.3/src/v8threads.h +0 -159
  810. data/ext/v8/upstream/2.3.3/src/variables.cc +0 -119
  811. data/ext/v8/upstream/2.3.3/src/variables.h +0 -205
  812. data/ext/v8/upstream/2.3.3/src/version.cc +0 -88
  813. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy-inl.h +0 -192
  814. data/ext/v8/upstream/2.3.3/src/virtual-frame.h +0 -46
  815. data/ext/v8/upstream/2.3.3/src/vm-state-inl.h +0 -137
  816. data/ext/v8/upstream/2.3.3/src/vm-state.cc +0 -39
  817. data/ext/v8/upstream/2.3.3/src/vm-state.h +0 -77
  818. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64-inl.h +0 -400
  819. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.cc +0 -2963
  820. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.h +0 -1438
  821. data/ext/v8/upstream/2.3.3/src/x64/builtins-x64.cc +0 -1296
  822. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64-inl.h +0 -46
  823. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.cc +0 -12491
  824. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.h +0 -1090
  825. data/ext/v8/upstream/2.3.3/src/x64/cpu-x64.cc +0 -83
  826. data/ext/v8/upstream/2.3.3/src/x64/debug-x64.cc +0 -267
  827. data/ext/v8/upstream/2.3.3/src/x64/disasm-x64.cc +0 -1696
  828. data/ext/v8/upstream/2.3.3/src/x64/fast-codegen-x64.cc +0 -250
  829. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.cc +0 -113
  830. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.h +0 -125
  831. data/ext/v8/upstream/2.3.3/src/x64/full-codegen-x64.cc +0 -3270
  832. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +0 -1907
  833. data/ext/v8/upstream/2.3.3/src/x64/jump-target-x64.cc +0 -437
  834. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.cc +0 -2793
  835. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.h +0 -916
  836. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.cc +0 -1374
  837. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.h +0 -277
  838. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.h +0 -63
  839. data/ext/v8/upstream/2.3.3/src/x64/stub-cache-x64.cc +0 -2560
  840. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.cc +0 -1264
  841. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.h +0 -590
  842. data/ext/v8/upstream/2.3.3/src/zone-inl.h +0 -82
  843. data/ext/v8/upstream/2.3.3/src/zone.cc +0 -194
  844. data/ext/v8/upstream/2.3.3/src/zone.h +0 -221
  845. data/ext/v8/upstream/2.3.3/tools/codemap.js +0 -270
  846. data/ext/v8/upstream/2.3.3/tools/csvparser.js +0 -83
  847. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +0 -317
  848. data/ext/v8/upstream/2.3.3/tools/gyp/v8.gyp +0 -749
  849. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor.py +0 -78
  850. data/ext/v8/upstream/2.3.3/tools/logreader.js +0 -338
  851. data/ext/v8/upstream/2.3.3/tools/oprofile/annotate +0 -7
  852. data/ext/v8/upstream/2.3.3/tools/oprofile/common +0 -19
  853. data/ext/v8/upstream/2.3.3/tools/oprofile/dump +0 -7
  854. data/ext/v8/upstream/2.3.3/tools/oprofile/report +0 -7
  855. data/ext/v8/upstream/2.3.3/tools/oprofile/reset +0 -7
  856. data/ext/v8/upstream/2.3.3/tools/oprofile/run +0 -14
  857. data/ext/v8/upstream/2.3.3/tools/oprofile/shutdown +0 -7
  858. data/ext/v8/upstream/2.3.3/tools/oprofile/start +0 -7
  859. data/ext/v8/upstream/2.3.3/tools/presubmit.py +0 -299
  860. data/ext/v8/upstream/2.3.3/tools/profile.js +0 -691
  861. data/ext/v8/upstream/2.3.3/tools/profile_view.js +0 -224
  862. data/ext/v8/upstream/2.3.3/tools/splaytree.js +0 -322
  863. data/ext/v8/upstream/2.3.3/tools/splaytree.py +0 -226
  864. data/ext/v8/upstream/2.3.3/tools/tickprocessor.js +0 -862
  865. data/ext/v8/upstream/2.3.3/tools/tickprocessor.py +0 -571
  866. data/ext/v8/upstream/2.3.3/tools/utils.py +0 -88
  867. data/ext/v8/upstream/2.3.3/tools/visual_studio/README.txt +0 -71
  868. data/ext/v8/upstream/2.3.3/tools/visual_studio/common.vsprops +0 -34
  869. data/ext/v8/upstream/2.3.3/tools/visual_studio/debug.vsprops +0 -17
  870. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base.vcproj +0 -1143
  871. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_arm.vcproj +0 -1115
  872. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_x64.vcproj +0 -1096
  873. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample.vcproj +0 -145
  874. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -145
  875. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -161
  876. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.bat +0 -29
  877. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.py +0 -137
@@ -1,1320 +0,0 @@
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 "codegen-inl.h"
33
- #include "debug.h"
34
- #include "runtime.h"
35
-
36
- namespace v8 {
37
- namespace internal {
38
-
39
-
40
- #define __ ACCESS_MASM(masm)
41
-
42
-
43
- void Builtins::Generate_Adaptor(MacroAssembler* masm,
44
- CFunctionId id,
45
- BuiltinExtraArguments extra_args) {
46
- // ----------- S t a t e -------------
47
- // -- r0 : number of arguments excluding receiver
48
- // -- r1 : called function (only guaranteed when
49
- // extra_args requires it)
50
- // -- cp : context
51
- // -- sp[0] : last argument
52
- // -- ...
53
- // -- sp[4 * (argc - 1)] : first argument (argc == r0)
54
- // -- sp[4 * argc] : receiver
55
- // -----------------------------------
56
-
57
- // Insert extra arguments.
58
- int num_extra_args = 0;
59
- if (extra_args == NEEDS_CALLED_FUNCTION) {
60
- num_extra_args = 1;
61
- __ push(r1);
62
- } else {
63
- ASSERT(extra_args == NO_EXTRA_ARGUMENTS);
64
- }
65
-
66
- // JumpToExternalReference expects r0 to contain the number of arguments
67
- // including the receiver and the extra arguments.
68
- __ add(r0, r0, Operand(num_extra_args + 1));
69
- __ JumpToExternalReference(ExternalReference(id));
70
- }
71
-
72
-
73
- // Load the built-in Array function from the current context.
74
- static void GenerateLoadArrayFunction(MacroAssembler* masm, Register result) {
75
- // Load the global context.
76
-
77
- __ ldr(result, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_INDEX)));
78
- __ ldr(result,
79
- FieldMemOperand(result, GlobalObject::kGlobalContextOffset));
80
- // Load the Array function from the global context.
81
- __ ldr(result,
82
- MemOperand(result,
83
- Context::SlotOffset(Context::ARRAY_FUNCTION_INDEX)));
84
- }
85
-
86
-
87
- // This constant has the same value as JSArray::kPreallocatedArrayElements and
88
- // if JSArray::kPreallocatedArrayElements is changed handling of loop unfolding
89
- // below should be reconsidered.
90
- static const int kLoopUnfoldLimit = 4;
91
-
92
-
93
- // Allocate an empty JSArray. The allocated array is put into the result
94
- // register. An elements backing store is allocated with size initial_capacity
95
- // and filled with the hole values.
96
- static void AllocateEmptyJSArray(MacroAssembler* masm,
97
- Register array_function,
98
- Register result,
99
- Register scratch1,
100
- Register scratch2,
101
- Register scratch3,
102
- int initial_capacity,
103
- Label* gc_required) {
104
- ASSERT(initial_capacity > 0);
105
- // Load the initial map from the array function.
106
- __ ldr(scratch1, FieldMemOperand(array_function,
107
- JSFunction::kPrototypeOrInitialMapOffset));
108
-
109
- // Allocate the JSArray object together with space for a fixed array with the
110
- // requested elements.
111
- int size = JSArray::kSize + FixedArray::SizeFor(initial_capacity);
112
- __ AllocateInNewSpace(size,
113
- result,
114
- scratch2,
115
- scratch3,
116
- gc_required,
117
- TAG_OBJECT);
118
-
119
- // Allocated the JSArray. Now initialize the fields except for the elements
120
- // array.
121
- // result: JSObject
122
- // scratch1: initial map
123
- // scratch2: start of next object
124
- __ str(scratch1, FieldMemOperand(result, JSObject::kMapOffset));
125
- __ LoadRoot(scratch1, Heap::kEmptyFixedArrayRootIndex);
126
- __ str(scratch1, FieldMemOperand(result, JSArray::kPropertiesOffset));
127
- // Field JSArray::kElementsOffset is initialized later.
128
- __ mov(scratch3, Operand(0));
129
- __ str(scratch3, FieldMemOperand(result, JSArray::kLengthOffset));
130
-
131
- // Calculate the location of the elements array and set elements array member
132
- // of the JSArray.
133
- // result: JSObject
134
- // scratch2: start of next object
135
- __ add(scratch1, result, Operand(JSArray::kSize));
136
- __ str(scratch1, FieldMemOperand(result, JSArray::kElementsOffset));
137
-
138
- // Clear the heap tag on the elements array.
139
- ASSERT(kSmiTag == 0);
140
- __ sub(scratch1, scratch1, Operand(kHeapObjectTag));
141
-
142
- // Initialize the FixedArray and fill it with holes. FixedArray length is
143
- // stored as a smi.
144
- // result: JSObject
145
- // scratch1: elements array (untagged)
146
- // scratch2: start of next object
147
- __ LoadRoot(scratch3, Heap::kFixedArrayMapRootIndex);
148
- ASSERT_EQ(0 * kPointerSize, FixedArray::kMapOffset);
149
- __ str(scratch3, MemOperand(scratch1, kPointerSize, PostIndex));
150
- __ mov(scratch3, Operand(Smi::FromInt(initial_capacity)));
151
- ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
152
- __ str(scratch3, MemOperand(scratch1, kPointerSize, PostIndex));
153
-
154
- // Fill the FixedArray with the hole value.
155
- ASSERT_EQ(2 * kPointerSize, FixedArray::kHeaderSize);
156
- ASSERT(initial_capacity <= kLoopUnfoldLimit);
157
- __ LoadRoot(scratch3, Heap::kTheHoleValueRootIndex);
158
- for (int i = 0; i < initial_capacity; i++) {
159
- __ str(scratch3, MemOperand(scratch1, kPointerSize, PostIndex));
160
- }
161
- }
162
-
163
- // Allocate a JSArray with the number of elements stored in a register. The
164
- // register array_function holds the built-in Array function and the register
165
- // array_size holds the size of the array as a smi. The allocated array is put
166
- // into the result register and beginning and end of the FixedArray elements
167
- // storage is put into registers elements_array_storage and elements_array_end
168
- // (see below for when that is not the case). If the parameter fill_with_holes
169
- // is true the allocated elements backing store is filled with the hole values
170
- // otherwise it is left uninitialized. When the backing store is filled the
171
- // register elements_array_storage is scratched.
172
- static void AllocateJSArray(MacroAssembler* masm,
173
- Register array_function, // Array function.
174
- Register array_size, // As a smi.
175
- Register result,
176
- Register elements_array_storage,
177
- Register elements_array_end,
178
- Register scratch1,
179
- Register scratch2,
180
- bool fill_with_hole,
181
- Label* gc_required) {
182
- Label not_empty, allocated;
183
-
184
- // Load the initial map from the array function.
185
- __ ldr(elements_array_storage,
186
- FieldMemOperand(array_function,
187
- JSFunction::kPrototypeOrInitialMapOffset));
188
-
189
- // Check whether an empty sized array is requested.
190
- __ tst(array_size, array_size);
191
- __ b(nz, &not_empty);
192
-
193
- // If an empty array is requested allocate a small elements array anyway. This
194
- // keeps the code below free of special casing for the empty array.
195
- int size = JSArray::kSize +
196
- FixedArray::SizeFor(JSArray::kPreallocatedArrayElements);
197
- __ AllocateInNewSpace(size,
198
- result,
199
- elements_array_end,
200
- scratch1,
201
- gc_required,
202
- TAG_OBJECT);
203
- __ jmp(&allocated);
204
-
205
- // Allocate the JSArray object together with space for a FixedArray with the
206
- // requested number of elements.
207
- __ bind(&not_empty);
208
- ASSERT(kSmiTagSize == 1 && kSmiTag == 0);
209
- __ mov(elements_array_end,
210
- Operand((JSArray::kSize + FixedArray::kHeaderSize) / kPointerSize));
211
- __ add(elements_array_end,
212
- elements_array_end,
213
- Operand(array_size, ASR, kSmiTagSize));
214
- __ AllocateInNewSpace(
215
- elements_array_end,
216
- result,
217
- scratch1,
218
- scratch2,
219
- gc_required,
220
- static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS));
221
-
222
- // Allocated the JSArray. Now initialize the fields except for the elements
223
- // array.
224
- // result: JSObject
225
- // elements_array_storage: initial map
226
- // array_size: size of array (smi)
227
- __ bind(&allocated);
228
- __ str(elements_array_storage, FieldMemOperand(result, JSObject::kMapOffset));
229
- __ LoadRoot(elements_array_storage, Heap::kEmptyFixedArrayRootIndex);
230
- __ str(elements_array_storage,
231
- FieldMemOperand(result, JSArray::kPropertiesOffset));
232
- // Field JSArray::kElementsOffset is initialized later.
233
- __ str(array_size, FieldMemOperand(result, JSArray::kLengthOffset));
234
-
235
- // Calculate the location of the elements array and set elements array member
236
- // of the JSArray.
237
- // result: JSObject
238
- // array_size: size of array (smi)
239
- __ add(elements_array_storage, result, Operand(JSArray::kSize));
240
- __ str(elements_array_storage,
241
- FieldMemOperand(result, JSArray::kElementsOffset));
242
-
243
- // Clear the heap tag on the elements array.
244
- ASSERT(kSmiTag == 0);
245
- __ sub(elements_array_storage,
246
- elements_array_storage,
247
- Operand(kHeapObjectTag));
248
- // Initialize the fixed array and fill it with holes. FixedArray length is
249
- // stored as a smi.
250
- // result: JSObject
251
- // elements_array_storage: elements array (untagged)
252
- // array_size: size of array (smi)
253
- __ LoadRoot(scratch1, Heap::kFixedArrayMapRootIndex);
254
- ASSERT_EQ(0 * kPointerSize, FixedArray::kMapOffset);
255
- __ str(scratch1, MemOperand(elements_array_storage, kPointerSize, PostIndex));
256
- ASSERT(kSmiTag == 0);
257
- __ tst(array_size, array_size);
258
- // Length of the FixedArray is the number of pre-allocated elements if
259
- // the actual JSArray has length 0 and the size of the JSArray for non-empty
260
- // JSArrays. The length of a FixedArray is stored as a smi.
261
- __ mov(array_size,
262
- Operand(Smi::FromInt(JSArray::kPreallocatedArrayElements)),
263
- LeaveCC,
264
- eq);
265
- ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
266
- __ str(array_size,
267
- MemOperand(elements_array_storage, kPointerSize, PostIndex));
268
-
269
- // Calculate elements array and elements array end.
270
- // result: JSObject
271
- // elements_array_storage: elements array element storage
272
- // array_size: smi-tagged size of elements array
273
- ASSERT(kSmiTag == 0 && kSmiTagSize < kPointerSizeLog2);
274
- __ add(elements_array_end,
275
- elements_array_storage,
276
- Operand(array_size, LSL, kPointerSizeLog2 - kSmiTagSize));
277
-
278
- // Fill the allocated FixedArray with the hole value if requested.
279
- // result: JSObject
280
- // elements_array_storage: elements array element storage
281
- // elements_array_end: start of next object
282
- if (fill_with_hole) {
283
- Label loop, entry;
284
- __ LoadRoot(scratch1, Heap::kTheHoleValueRootIndex);
285
- __ jmp(&entry);
286
- __ bind(&loop);
287
- __ str(scratch1,
288
- MemOperand(elements_array_storage, kPointerSize, PostIndex));
289
- __ bind(&entry);
290
- __ cmp(elements_array_storage, elements_array_end);
291
- __ b(lt, &loop);
292
- }
293
- }
294
-
295
- // Create a new array for the built-in Array function. This function allocates
296
- // the JSArray object and the FixedArray elements array and initializes these.
297
- // If the Array cannot be constructed in native code the runtime is called. This
298
- // function assumes the following state:
299
- // r0: argc
300
- // r1: constructor (built-in Array function)
301
- // lr: return address
302
- // sp[0]: last argument
303
- // This function is used for both construct and normal calls of Array. The only
304
- // difference between handling a construct call and a normal call is that for a
305
- // construct call the constructor function in r1 needs to be preserved for
306
- // entering the generic code. In both cases argc in r0 needs to be preserved.
307
- // Both registers are preserved by this code so no need to differentiate between
308
- // construct call and normal call.
309
- static void ArrayNativeCode(MacroAssembler* masm,
310
- Label* call_generic_code) {
311
- Label argc_one_or_more, argc_two_or_more;
312
-
313
- // Check for array construction with zero arguments or one.
314
- __ cmp(r0, Operand(0));
315
- __ b(ne, &argc_one_or_more);
316
-
317
- // Handle construction of an empty array.
318
- AllocateEmptyJSArray(masm,
319
- r1,
320
- r2,
321
- r3,
322
- r4,
323
- r5,
324
- JSArray::kPreallocatedArrayElements,
325
- call_generic_code);
326
- __ IncrementCounter(&Counters::array_function_native, 1, r3, r4);
327
- // Setup return value, remove receiver from stack and return.
328
- __ mov(r0, r2);
329
- __ add(sp, sp, Operand(kPointerSize));
330
- __ Jump(lr);
331
-
332
- // Check for one argument. Bail out if argument is not smi or if it is
333
- // negative.
334
- __ bind(&argc_one_or_more);
335
- __ cmp(r0, Operand(1));
336
- __ b(ne, &argc_two_or_more);
337
- ASSERT(kSmiTag == 0);
338
- __ ldr(r2, MemOperand(sp)); // Get the argument from the stack.
339
- __ and_(r3, r2, Operand(kIntptrSignBit | kSmiTagMask), SetCC);
340
- __ b(ne, call_generic_code);
341
-
342
- // Handle construction of an empty array of a certain size. Bail out if size
343
- // is too large to actually allocate an elements array.
344
- ASSERT(kSmiTag == 0);
345
- __ cmp(r2, Operand(JSObject::kInitialMaxFastElementArray << kSmiTagSize));
346
- __ b(ge, call_generic_code);
347
-
348
- // r0: argc
349
- // r1: constructor
350
- // r2: array_size (smi)
351
- // sp[0]: argument
352
- AllocateJSArray(masm,
353
- r1,
354
- r2,
355
- r3,
356
- r4,
357
- r5,
358
- r6,
359
- r7,
360
- true,
361
- call_generic_code);
362
- __ IncrementCounter(&Counters::array_function_native, 1, r2, r4);
363
- // Setup return value, remove receiver and argument from stack and return.
364
- __ mov(r0, r3);
365
- __ add(sp, sp, Operand(2 * kPointerSize));
366
- __ Jump(lr);
367
-
368
- // Handle construction of an array from a list of arguments.
369
- __ bind(&argc_two_or_more);
370
- __ mov(r2, Operand(r0, LSL, kSmiTagSize)); // Convet argc to a smi.
371
-
372
- // r0: argc
373
- // r1: constructor
374
- // r2: array_size (smi)
375
- // sp[0]: last argument
376
- AllocateJSArray(masm,
377
- r1,
378
- r2,
379
- r3,
380
- r4,
381
- r5,
382
- r6,
383
- r7,
384
- false,
385
- call_generic_code);
386
- __ IncrementCounter(&Counters::array_function_native, 1, r2, r6);
387
-
388
- // Fill arguments as array elements. Copy from the top of the stack (last
389
- // element) to the array backing store filling it backwards. Note:
390
- // elements_array_end points after the backing store therefore PreIndex is
391
- // used when filling the backing store.
392
- // r0: argc
393
- // r3: JSArray
394
- // r4: elements_array storage start (untagged)
395
- // r5: elements_array_end (untagged)
396
- // sp[0]: last argument
397
- Label loop, entry;
398
- __ jmp(&entry);
399
- __ bind(&loop);
400
- __ ldr(r2, MemOperand(sp, kPointerSize, PostIndex));
401
- __ str(r2, MemOperand(r5, -kPointerSize, PreIndex));
402
- __ bind(&entry);
403
- __ cmp(r4, r5);
404
- __ b(lt, &loop);
405
-
406
- // Remove caller arguments and receiver from the stack, setup return value and
407
- // return.
408
- // r0: argc
409
- // r3: JSArray
410
- // sp[0]: receiver
411
- __ add(sp, sp, Operand(kPointerSize));
412
- __ mov(r0, r3);
413
- __ Jump(lr);
414
- }
415
-
416
-
417
- void Builtins::Generate_ArrayCode(MacroAssembler* masm) {
418
- // ----------- S t a t e -------------
419
- // -- r0 : number of arguments
420
- // -- lr : return address
421
- // -- sp[...]: constructor arguments
422
- // -----------------------------------
423
- Label generic_array_code, one_or_more_arguments, two_or_more_arguments;
424
-
425
- // Get the Array function.
426
- GenerateLoadArrayFunction(masm, r1);
427
-
428
- if (FLAG_debug_code) {
429
- // Initial map for the builtin Array function shoud be a map.
430
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
431
- __ tst(r2, Operand(kSmiTagMask));
432
- __ Assert(ne, "Unexpected initial map for Array function");
433
- __ CompareObjectType(r2, r3, r4, MAP_TYPE);
434
- __ Assert(eq, "Unexpected initial map for Array function");
435
- }
436
-
437
- // Run the native code for the Array function called as a normal function.
438
- ArrayNativeCode(masm, &generic_array_code);
439
-
440
- // Jump to the generic array code if the specialized code cannot handle
441
- // the construction.
442
- __ bind(&generic_array_code);
443
- Code* code = Builtins::builtin(Builtins::ArrayCodeGeneric);
444
- Handle<Code> array_code(code);
445
- __ Jump(array_code, RelocInfo::CODE_TARGET);
446
- }
447
-
448
-
449
- void Builtins::Generate_ArrayConstructCode(MacroAssembler* masm) {
450
- // ----------- S t a t e -------------
451
- // -- r0 : number of arguments
452
- // -- r1 : constructor function
453
- // -- lr : return address
454
- // -- sp[...]: constructor arguments
455
- // -----------------------------------
456
- Label generic_constructor;
457
-
458
- if (FLAG_debug_code) {
459
- // The array construct code is only set for the builtin Array function which
460
- // always have a map.
461
- GenerateLoadArrayFunction(masm, r2);
462
- __ cmp(r1, r2);
463
- __ Assert(eq, "Unexpected Array function");
464
- // Initial map for the builtin Array function should be a map.
465
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
466
- __ tst(r2, Operand(kSmiTagMask));
467
- __ Assert(ne, "Unexpected initial map for Array function");
468
- __ CompareObjectType(r2, r3, r4, MAP_TYPE);
469
- __ Assert(eq, "Unexpected initial map for Array function");
470
- }
471
-
472
- // Run the native code for the Array function called as a constructor.
473
- ArrayNativeCode(masm, &generic_constructor);
474
-
475
- // Jump to the generic construct code in case the specialized code cannot
476
- // handle the construction.
477
- __ bind(&generic_constructor);
478
- Code* code = Builtins::builtin(Builtins::JSConstructStubGeneric);
479
- Handle<Code> generic_construct_stub(code);
480
- __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET);
481
- }
482
-
483
-
484
- void Builtins::Generate_JSConstructCall(MacroAssembler* masm) {
485
- // ----------- S t a t e -------------
486
- // -- r0 : number of arguments
487
- // -- r1 : constructor function
488
- // -- lr : return address
489
- // -- sp[...]: constructor arguments
490
- // -----------------------------------
491
-
492
- Label non_function_call;
493
- // Check that the function is not a smi.
494
- __ tst(r1, Operand(kSmiTagMask));
495
- __ b(eq, &non_function_call);
496
- // Check that the function is a JSFunction.
497
- __ CompareObjectType(r1, r2, r2, JS_FUNCTION_TYPE);
498
- __ b(ne, &non_function_call);
499
-
500
- // Jump to the function-specific construct stub.
501
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
502
- __ ldr(r2, FieldMemOperand(r2, SharedFunctionInfo::kConstructStubOffset));
503
- __ add(pc, r2, Operand(Code::kHeaderSize - kHeapObjectTag));
504
-
505
- // r0: number of arguments
506
- // r1: called object
507
- __ bind(&non_function_call);
508
- // CALL_NON_FUNCTION expects the non-function constructor as receiver
509
- // (instead of the original receiver from the call site). The receiver is
510
- // stack element argc.
511
- __ str(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2));
512
- // Set expected number of arguments to zero (not changing r0).
513
- __ mov(r2, Operand(0));
514
- __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION_AS_CONSTRUCTOR);
515
- __ Jump(Handle<Code>(builtin(ArgumentsAdaptorTrampoline)),
516
- RelocInfo::CODE_TARGET);
517
- }
518
-
519
-
520
- static void Generate_JSConstructStubHelper(MacroAssembler* masm,
521
- bool is_api_function) {
522
- // Enter a construct frame.
523
- __ EnterConstructFrame();
524
-
525
- // Preserve the two incoming parameters on the stack.
526
- __ mov(r0, Operand(r0, LSL, kSmiTagSize));
527
- __ push(r0); // Smi-tagged arguments count.
528
- __ push(r1); // Constructor function.
529
-
530
- // Use r7 for holding undefined which is used in several places below.
531
- __ LoadRoot(r7, Heap::kUndefinedValueRootIndex);
532
-
533
- // Try to allocate the object without transitioning into C code. If any of the
534
- // preconditions is not met, the code bails out to the runtime call.
535
- Label rt_call, allocated;
536
- if (FLAG_inline_new) {
537
- Label undo_allocation;
538
- #ifdef ENABLE_DEBUGGER_SUPPORT
539
- ExternalReference debug_step_in_fp =
540
- ExternalReference::debug_step_in_fp_address();
541
- __ mov(r2, Operand(debug_step_in_fp));
542
- __ ldr(r2, MemOperand(r2));
543
- __ tst(r2, r2);
544
- __ b(nz, &rt_call);
545
- #endif
546
-
547
- // Load the initial map and verify that it is in fact a map.
548
- // r1: constructor function
549
- // r7: undefined value
550
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
551
- __ tst(r2, Operand(kSmiTagMask));
552
- __ b(eq, &rt_call);
553
- __ CompareObjectType(r2, r3, r4, MAP_TYPE);
554
- __ b(ne, &rt_call);
555
-
556
- // Check that the constructor is not constructing a JSFunction (see comments
557
- // in Runtime_NewObject in runtime.cc). In which case the initial map's
558
- // instance type would be JS_FUNCTION_TYPE.
559
- // r1: constructor function
560
- // r2: initial map
561
- // r7: undefined value
562
- __ CompareInstanceType(r2, r3, JS_FUNCTION_TYPE);
563
- __ b(eq, &rt_call);
564
-
565
- // Now allocate the JSObject on the heap.
566
- // r1: constructor function
567
- // r2: initial map
568
- // r7: undefined value
569
- __ ldrb(r3, FieldMemOperand(r2, Map::kInstanceSizeOffset));
570
- __ AllocateInNewSpace(r3, r4, r5, r6, &rt_call, SIZE_IN_WORDS);
571
-
572
- // Allocated the JSObject, now initialize the fields. Map is set to initial
573
- // map and properties and elements are set to empty fixed array.
574
- // r1: constructor function
575
- // r2: initial map
576
- // r3: object size
577
- // r4: JSObject (not tagged)
578
- // r7: undefined value
579
- __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex);
580
- __ mov(r5, r4);
581
- ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
582
- __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
583
- ASSERT_EQ(1 * kPointerSize, JSObject::kPropertiesOffset);
584
- __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
585
- ASSERT_EQ(2 * kPointerSize, JSObject::kElementsOffset);
586
- __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
587
-
588
- // Fill all the in-object properties with undefined.
589
- // r1: constructor function
590
- // r2: initial map
591
- // r3: object size (in words)
592
- // r4: JSObject (not tagged)
593
- // r5: First in-object property of JSObject (not tagged)
594
- // r7: undefined value
595
- __ add(r6, r4, Operand(r3, LSL, kPointerSizeLog2)); // End of object.
596
- ASSERT_EQ(3 * kPointerSize, JSObject::kHeaderSize);
597
- { Label loop, entry;
598
- __ b(&entry);
599
- __ bind(&loop);
600
- __ str(r7, MemOperand(r5, kPointerSize, PostIndex));
601
- __ bind(&entry);
602
- __ cmp(r5, r6);
603
- __ b(lt, &loop);
604
- }
605
-
606
- // Add the object tag to make the JSObject real, so that we can continue and
607
- // jump into the continuation code at any time from now on. Any failures
608
- // need to undo the allocation, so that the heap is in a consistent state
609
- // and verifiable.
610
- __ add(r4, r4, Operand(kHeapObjectTag));
611
-
612
- // Check if a non-empty properties array is needed. Continue with allocated
613
- // object if not fall through to runtime call if it is.
614
- // r1: constructor function
615
- // r4: JSObject
616
- // r5: start of next object (not tagged)
617
- // r7: undefined value
618
- __ ldrb(r3, FieldMemOperand(r2, Map::kUnusedPropertyFieldsOffset));
619
- // The field instance sizes contains both pre-allocated property fields and
620
- // in-object properties.
621
- __ ldr(r0, FieldMemOperand(r2, Map::kInstanceSizesOffset));
622
- __ Ubfx(r6, r0, Map::kPreAllocatedPropertyFieldsByte * 8, 8);
623
- __ add(r3, r3, Operand(r6));
624
- __ Ubfx(r6, r0, Map::kInObjectPropertiesByte * 8, 8);
625
- __ sub(r3, r3, Operand(r6), SetCC);
626
-
627
- // Done if no extra properties are to be allocated.
628
- __ b(eq, &allocated);
629
- __ Assert(pl, "Property allocation count failed.");
630
-
631
- // Scale the number of elements by pointer size and add the header for
632
- // FixedArrays to the start of the next object calculation from above.
633
- // r1: constructor
634
- // r3: number of elements in properties array
635
- // r4: JSObject
636
- // r5: start of next object
637
- // r7: undefined value
638
- __ add(r0, r3, Operand(FixedArray::kHeaderSize / kPointerSize));
639
- __ AllocateInNewSpace(
640
- r0,
641
- r5,
642
- r6,
643
- r2,
644
- &undo_allocation,
645
- static_cast<AllocationFlags>(RESULT_CONTAINS_TOP | SIZE_IN_WORDS));
646
-
647
- // Initialize the FixedArray.
648
- // r1: constructor
649
- // r3: number of elements in properties array
650
- // r4: JSObject
651
- // r5: FixedArray (not tagged)
652
- // r7: undefined value
653
- __ LoadRoot(r6, Heap::kFixedArrayMapRootIndex);
654
- __ mov(r2, r5);
655
- ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
656
- __ str(r6, MemOperand(r2, kPointerSize, PostIndex));
657
- ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
658
- __ mov(r0, Operand(r3, LSL, kSmiTagSize));
659
- __ str(r0, MemOperand(r2, kPointerSize, PostIndex));
660
-
661
- // Initialize the fields to undefined.
662
- // r1: constructor function
663
- // r2: First element of FixedArray (not tagged)
664
- // r3: number of elements in properties array
665
- // r4: JSObject
666
- // r5: FixedArray (not tagged)
667
- // r7: undefined
668
- __ add(r6, r2, Operand(r3, LSL, kPointerSizeLog2)); // End of object.
669
- ASSERT_EQ(2 * kPointerSize, FixedArray::kHeaderSize);
670
- { Label loop, entry;
671
- __ b(&entry);
672
- __ bind(&loop);
673
- __ str(r7, MemOperand(r2, kPointerSize, PostIndex));
674
- __ bind(&entry);
675
- __ cmp(r2, r6);
676
- __ b(lt, &loop);
677
- }
678
-
679
- // Store the initialized FixedArray into the properties field of
680
- // the JSObject
681
- // r1: constructor function
682
- // r4: JSObject
683
- // r5: FixedArray (not tagged)
684
- __ add(r5, r5, Operand(kHeapObjectTag)); // Add the heap tag.
685
- __ str(r5, FieldMemOperand(r4, JSObject::kPropertiesOffset));
686
-
687
- // Continue with JSObject being successfully allocated
688
- // r1: constructor function
689
- // r4: JSObject
690
- __ jmp(&allocated);
691
-
692
- // Undo the setting of the new top so that the heap is verifiable. For
693
- // example, the map's unused properties potentially do not match the
694
- // allocated objects unused properties.
695
- // r4: JSObject (previous new top)
696
- __ bind(&undo_allocation);
697
- __ UndoAllocationInNewSpace(r4, r5);
698
- }
699
-
700
- // Allocate the new receiver object using the runtime call.
701
- // r1: constructor function
702
- __ bind(&rt_call);
703
- __ push(r1); // argument for Runtime_NewObject
704
- __ CallRuntime(Runtime::kNewObject, 1);
705
- __ mov(r4, r0);
706
-
707
- // Receiver for constructor call allocated.
708
- // r4: JSObject
709
- __ bind(&allocated);
710
- __ push(r4);
711
-
712
- // Push the function and the allocated receiver from the stack.
713
- // sp[0]: receiver (newly allocated object)
714
- // sp[1]: constructor function
715
- // sp[2]: number of arguments (smi-tagged)
716
- __ ldr(r1, MemOperand(sp, kPointerSize));
717
- __ push(r1); // Constructor function.
718
- __ push(r4); // Receiver.
719
-
720
- // Reload the number of arguments from the stack.
721
- // r1: constructor function
722
- // sp[0]: receiver
723
- // sp[1]: constructor function
724
- // sp[2]: receiver
725
- // sp[3]: constructor function
726
- // sp[4]: number of arguments (smi-tagged)
727
- __ ldr(r3, MemOperand(sp, 4 * kPointerSize));
728
-
729
- // Setup pointer to last argument.
730
- __ add(r2, fp, Operand(StandardFrameConstants::kCallerSPOffset));
731
-
732
- // Setup number of arguments for function call below
733
- __ mov(r0, Operand(r3, LSR, kSmiTagSize));
734
-
735
- // Copy arguments and receiver to the expression stack.
736
- // r0: number of arguments
737
- // r2: address of last argument (caller sp)
738
- // r1: constructor function
739
- // r3: number of arguments (smi-tagged)
740
- // sp[0]: receiver
741
- // sp[1]: constructor function
742
- // sp[2]: receiver
743
- // sp[3]: constructor function
744
- // sp[4]: number of arguments (smi-tagged)
745
- Label loop, entry;
746
- __ b(&entry);
747
- __ bind(&loop);
748
- __ ldr(ip, MemOperand(r2, r3, LSL, kPointerSizeLog2 - 1));
749
- __ push(ip);
750
- __ bind(&entry);
751
- __ sub(r3, r3, Operand(2), SetCC);
752
- __ b(ge, &loop);
753
-
754
- // Call the function.
755
- // r0: number of arguments
756
- // r1: constructor function
757
- if (is_api_function) {
758
- __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
759
- Handle<Code> code = Handle<Code>(
760
- Builtins::builtin(Builtins::HandleApiCallConstruct));
761
- ParameterCount expected(0);
762
- __ InvokeCode(code, expected, expected,
763
- RelocInfo::CODE_TARGET, CALL_FUNCTION);
764
- } else {
765
- ParameterCount actual(r0);
766
- __ InvokeFunction(r1, actual, CALL_FUNCTION);
767
- }
768
-
769
- // Pop the function from the stack.
770
- // sp[0]: constructor function
771
- // sp[2]: receiver
772
- // sp[3]: constructor function
773
- // sp[4]: number of arguments (smi-tagged)
774
- __ pop();
775
-
776
- // Restore context from the frame.
777
- // r0: result
778
- // sp[0]: receiver
779
- // sp[1]: constructor function
780
- // sp[2]: number of arguments (smi-tagged)
781
- __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
782
-
783
- // If the result is an object (in the ECMA sense), we should get rid
784
- // of the receiver and use the result; see ECMA-262 section 13.2.2-7
785
- // on page 74.
786
- Label use_receiver, exit;
787
-
788
- // If the result is a smi, it is *not* an object in the ECMA sense.
789
- // r0: result
790
- // sp[0]: receiver (newly allocated object)
791
- // sp[1]: constructor function
792
- // sp[2]: number of arguments (smi-tagged)
793
- __ tst(r0, Operand(kSmiTagMask));
794
- __ b(eq, &use_receiver);
795
-
796
- // If the type of the result (stored in its map) is less than
797
- // FIRST_JS_OBJECT_TYPE, it is not an object in the ECMA sense.
798
- __ CompareObjectType(r0, r3, r3, FIRST_JS_OBJECT_TYPE);
799
- __ b(ge, &exit);
800
-
801
- // Throw away the result of the constructor invocation and use the
802
- // on-stack receiver as the result.
803
- __ bind(&use_receiver);
804
- __ ldr(r0, MemOperand(sp));
805
-
806
- // Remove receiver from the stack, remove caller arguments, and
807
- // return.
808
- __ bind(&exit);
809
- // r0: result
810
- // sp[0]: receiver (newly allocated object)
811
- // sp[1]: constructor function
812
- // sp[2]: number of arguments (smi-tagged)
813
- __ ldr(r1, MemOperand(sp, 2 * kPointerSize));
814
- __ LeaveConstructFrame();
815
- __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2 - 1));
816
- __ add(sp, sp, Operand(kPointerSize));
817
- __ IncrementCounter(&Counters::constructed_objects, 1, r1, r2);
818
- __ Jump(lr);
819
- }
820
-
821
-
822
- void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
823
- Generate_JSConstructStubHelper(masm, false);
824
- }
825
-
826
-
827
- void Builtins::Generate_JSConstructStubApi(MacroAssembler* masm) {
828
- Generate_JSConstructStubHelper(masm, true);
829
- }
830
-
831
-
832
- static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
833
- bool is_construct) {
834
- // Called from Generate_JS_Entry
835
- // r0: code entry
836
- // r1: function
837
- // r2: receiver
838
- // r3: argc
839
- // r4: argv
840
- // r5-r7, cp may be clobbered
841
-
842
- // Clear the context before we push it when entering the JS frame.
843
- __ mov(cp, Operand(0));
844
-
845
- // Enter an internal frame.
846
- __ EnterInternalFrame();
847
-
848
- // Set up the context from the function argument.
849
- __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
850
-
851
- // Set up the roots register.
852
- ExternalReference roots_address = ExternalReference::roots_address();
853
- __ mov(r10, Operand(roots_address));
854
-
855
- // Push the function and the receiver onto the stack.
856
- __ push(r1);
857
- __ push(r2);
858
-
859
- // Copy arguments to the stack in a loop.
860
- // r1: function
861
- // r3: argc
862
- // r4: argv, i.e. points to first arg
863
- Label loop, entry;
864
- __ add(r2, r4, Operand(r3, LSL, kPointerSizeLog2));
865
- // r2 points past last arg.
866
- __ b(&entry);
867
- __ bind(&loop);
868
- __ ldr(r0, MemOperand(r4, kPointerSize, PostIndex)); // read next parameter
869
- __ ldr(r0, MemOperand(r0)); // dereference handle
870
- __ push(r0); // push parameter
871
- __ bind(&entry);
872
- __ cmp(r4, r2);
873
- __ b(ne, &loop);
874
-
875
- // Initialize all JavaScript callee-saved registers, since they will be seen
876
- // by the garbage collector as part of handlers.
877
- __ LoadRoot(r4, Heap::kUndefinedValueRootIndex);
878
- __ mov(r5, Operand(r4));
879
- __ mov(r6, Operand(r4));
880
- __ mov(r7, Operand(r4));
881
- if (kR9Available == 1) {
882
- __ mov(r9, Operand(r4));
883
- }
884
-
885
- // Invoke the code and pass argc as r0.
886
- __ mov(r0, Operand(r3));
887
- if (is_construct) {
888
- __ Call(Handle<Code>(Builtins::builtin(Builtins::JSConstructCall)),
889
- RelocInfo::CODE_TARGET);
890
- } else {
891
- ParameterCount actual(r0);
892
- __ InvokeFunction(r1, actual, CALL_FUNCTION);
893
- }
894
-
895
- // Exit the JS frame and remove the parameters (except function), and return.
896
- // Respect ABI stack constraint.
897
- __ LeaveInternalFrame();
898
- __ Jump(lr);
899
-
900
- // r0: result
901
- }
902
-
903
-
904
- void Builtins::Generate_JSEntryTrampoline(MacroAssembler* masm) {
905
- Generate_JSEntryTrampolineHelper(masm, false);
906
- }
907
-
908
-
909
- void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
910
- Generate_JSEntryTrampolineHelper(masm, true);
911
- }
912
-
913
-
914
- void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
915
- // 1. Make sure we have at least one argument.
916
- // r0: actual number of arguments
917
- { Label done;
918
- __ tst(r0, Operand(r0));
919
- __ b(ne, &done);
920
- __ LoadRoot(r2, Heap::kUndefinedValueRootIndex);
921
- __ push(r2);
922
- __ add(r0, r0, Operand(1));
923
- __ bind(&done);
924
- }
925
-
926
- // 2. Get the function to call (passed as receiver) from the stack, check
927
- // if it is a function.
928
- // r0: actual number of arguments
929
- Label non_function;
930
- __ ldr(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2));
931
- __ tst(r1, Operand(kSmiTagMask));
932
- __ b(eq, &non_function);
933
- __ CompareObjectType(r1, r2, r2, JS_FUNCTION_TYPE);
934
- __ b(ne, &non_function);
935
-
936
- // 3a. Patch the first argument if necessary when calling a function.
937
- // r0: actual number of arguments
938
- // r1: function
939
- Label shift_arguments;
940
- { Label convert_to_object, use_global_receiver, patch_receiver;
941
- // Change context eagerly in case we need the global receiver.
942
- __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
943
-
944
- __ add(r2, sp, Operand(r0, LSL, kPointerSizeLog2));
945
- __ ldr(r2, MemOperand(r2, -kPointerSize));
946
- // r0: actual number of arguments
947
- // r1: function
948
- // r2: first argument
949
- __ tst(r2, Operand(kSmiTagMask));
950
- __ b(eq, &convert_to_object);
951
-
952
- __ LoadRoot(r3, Heap::kNullValueRootIndex);
953
- __ cmp(r2, r3);
954
- __ b(eq, &use_global_receiver);
955
- __ LoadRoot(r3, Heap::kUndefinedValueRootIndex);
956
- __ cmp(r2, r3);
957
- __ b(eq, &use_global_receiver);
958
-
959
- __ CompareObjectType(r2, r3, r3, FIRST_JS_OBJECT_TYPE);
960
- __ b(lt, &convert_to_object);
961
- __ cmp(r3, Operand(LAST_JS_OBJECT_TYPE));
962
- __ b(le, &shift_arguments);
963
-
964
- __ bind(&convert_to_object);
965
- __ EnterInternalFrame(); // In order to preserve argument count.
966
- __ mov(r0, Operand(r0, LSL, kSmiTagSize)); // Smi-tagged.
967
- __ push(r0);
968
-
969
- __ push(r2);
970
- __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_JS);
971
- __ mov(r2, r0);
972
-
973
- __ pop(r0);
974
- __ mov(r0, Operand(r0, ASR, kSmiTagSize));
975
- __ LeaveInternalFrame();
976
- // Restore the function to r1.
977
- __ ldr(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2));
978
- __ jmp(&patch_receiver);
979
-
980
- // Use the global receiver object from the called function as the
981
- // receiver.
982
- __ bind(&use_global_receiver);
983
- const int kGlobalIndex =
984
- Context::kHeaderSize + Context::GLOBAL_INDEX * kPointerSize;
985
- __ ldr(r2, FieldMemOperand(cp, kGlobalIndex));
986
- __ ldr(r2, FieldMemOperand(r2, GlobalObject::kGlobalContextOffset));
987
- __ ldr(r2, FieldMemOperand(r2, kGlobalIndex));
988
- __ ldr(r2, FieldMemOperand(r2, GlobalObject::kGlobalReceiverOffset));
989
-
990
- __ bind(&patch_receiver);
991
- __ add(r3, sp, Operand(r0, LSL, kPointerSizeLog2));
992
- __ str(r2, MemOperand(r3, -kPointerSize));
993
-
994
- __ jmp(&shift_arguments);
995
- }
996
-
997
- // 3b. Patch the first argument when calling a non-function. The
998
- // CALL_NON_FUNCTION builtin expects the non-function callee as
999
- // receiver, so overwrite the first argument which will ultimately
1000
- // become the receiver.
1001
- // r0: actual number of arguments
1002
- // r1: function
1003
- __ bind(&non_function);
1004
- __ add(r2, sp, Operand(r0, LSL, kPointerSizeLog2));
1005
- __ str(r1, MemOperand(r2, -kPointerSize));
1006
- // Clear r1 to indicate a non-function being called.
1007
- __ mov(r1, Operand(0));
1008
-
1009
- // 4. Shift arguments and return address one slot down on the stack
1010
- // (overwriting the original receiver). Adjust argument count to make
1011
- // the original first argument the new receiver.
1012
- // r0: actual number of arguments
1013
- // r1: function
1014
- __ bind(&shift_arguments);
1015
- { Label loop;
1016
- // Calculate the copy start address (destination). Copy end address is sp.
1017
- __ add(r2, sp, Operand(r0, LSL, kPointerSizeLog2));
1018
-
1019
- __ bind(&loop);
1020
- __ ldr(ip, MemOperand(r2, -kPointerSize));
1021
- __ str(ip, MemOperand(r2));
1022
- __ sub(r2, r2, Operand(kPointerSize));
1023
- __ cmp(r2, sp);
1024
- __ b(ne, &loop);
1025
- // Adjust the actual number of arguments and remove the top element
1026
- // (which is a copy of the last argument).
1027
- __ sub(r0, r0, Operand(1));
1028
- __ pop();
1029
- }
1030
-
1031
- // 5a. Call non-function via tail call to CALL_NON_FUNCTION builtin.
1032
- // r0: actual number of arguments
1033
- // r1: function
1034
- { Label function;
1035
- __ tst(r1, r1);
1036
- __ b(ne, &function);
1037
- __ mov(r2, Operand(0)); // expected arguments is 0 for CALL_NON_FUNCTION
1038
- __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION);
1039
- __ Jump(Handle<Code>(builtin(ArgumentsAdaptorTrampoline)),
1040
- RelocInfo::CODE_TARGET);
1041
- __ bind(&function);
1042
- }
1043
-
1044
- // 5b. Get the code to call from the function and check that the number of
1045
- // expected arguments matches what we're providing. If so, jump
1046
- // (tail-call) to the code in register edx without checking arguments.
1047
- // r0: actual number of arguments
1048
- // r1: function
1049
- __ ldr(r3, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
1050
- __ ldr(r2,
1051
- FieldMemOperand(r3, SharedFunctionInfo::kFormalParameterCountOffset));
1052
- __ mov(r2, Operand(r2, ASR, kSmiTagSize));
1053
- __ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kCodeOffset));
1054
- __ add(r3, r3, Operand(Code::kHeaderSize - kHeapObjectTag));
1055
- __ cmp(r2, r0); // Check formal and actual parameter counts.
1056
- __ Jump(Handle<Code>(builtin(ArgumentsAdaptorTrampoline)),
1057
- RelocInfo::CODE_TARGET, ne);
1058
-
1059
- ParameterCount expected(0);
1060
- __ InvokeCode(r3, expected, expected, JUMP_FUNCTION);
1061
- }
1062
-
1063
-
1064
- void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
1065
- const int kIndexOffset = -5 * kPointerSize;
1066
- const int kLimitOffset = -4 * kPointerSize;
1067
- const int kArgsOffset = 2 * kPointerSize;
1068
- const int kRecvOffset = 3 * kPointerSize;
1069
- const int kFunctionOffset = 4 * kPointerSize;
1070
-
1071
- __ EnterInternalFrame();
1072
-
1073
- __ ldr(r0, MemOperand(fp, kFunctionOffset)); // get the function
1074
- __ push(r0);
1075
- __ ldr(r0, MemOperand(fp, kArgsOffset)); // get the args array
1076
- __ push(r0);
1077
- __ InvokeBuiltin(Builtins::APPLY_PREPARE, CALL_JS);
1078
-
1079
- // Check the stack for overflow. We are not trying need to catch
1080
- // interruptions (e.g. debug break and preemption) here, so the "real stack
1081
- // limit" is checked.
1082
- Label okay;
1083
- __ LoadRoot(r2, Heap::kRealStackLimitRootIndex);
1084
- // Make r2 the space we have left. The stack might already be overflowed
1085
- // here which will cause r2 to become negative.
1086
- __ sub(r2, sp, r2);
1087
- // Check if the arguments will overflow the stack.
1088
- __ cmp(r2, Operand(r0, LSL, kPointerSizeLog2 - kSmiTagSize));
1089
- __ b(gt, &okay); // Signed comparison.
1090
-
1091
- // Out of stack space.
1092
- __ ldr(r1, MemOperand(fp, kFunctionOffset));
1093
- __ push(r1);
1094
- __ push(r0);
1095
- __ InvokeBuiltin(Builtins::APPLY_OVERFLOW, CALL_JS);
1096
- // End of stack check.
1097
-
1098
- // Push current limit and index.
1099
- __ bind(&okay);
1100
- __ push(r0); // limit
1101
- __ mov(r1, Operand(0)); // initial index
1102
- __ push(r1);
1103
-
1104
- // Change context eagerly to get the right global object if necessary.
1105
- __ ldr(r0, MemOperand(fp, kFunctionOffset));
1106
- __ ldr(cp, FieldMemOperand(r0, JSFunction::kContextOffset));
1107
-
1108
- // Compute the receiver.
1109
- Label call_to_object, use_global_receiver, push_receiver;
1110
- __ ldr(r0, MemOperand(fp, kRecvOffset));
1111
- __ tst(r0, Operand(kSmiTagMask));
1112
- __ b(eq, &call_to_object);
1113
- __ LoadRoot(r1, Heap::kNullValueRootIndex);
1114
- __ cmp(r0, r1);
1115
- __ b(eq, &use_global_receiver);
1116
- __ LoadRoot(r1, Heap::kUndefinedValueRootIndex);
1117
- __ cmp(r0, r1);
1118
- __ b(eq, &use_global_receiver);
1119
-
1120
- // Check if the receiver is already a JavaScript object.
1121
- // r0: receiver
1122
- __ CompareObjectType(r0, r1, r1, FIRST_JS_OBJECT_TYPE);
1123
- __ b(lt, &call_to_object);
1124
- __ cmp(r1, Operand(LAST_JS_OBJECT_TYPE));
1125
- __ b(le, &push_receiver);
1126
-
1127
- // Convert the receiver to a regular object.
1128
- // r0: receiver
1129
- __ bind(&call_to_object);
1130
- __ push(r0);
1131
- __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_JS);
1132
- __ b(&push_receiver);
1133
-
1134
- // Use the current global receiver object as the receiver.
1135
- __ bind(&use_global_receiver);
1136
- const int kGlobalOffset =
1137
- Context::kHeaderSize + Context::GLOBAL_INDEX * kPointerSize;
1138
- __ ldr(r0, FieldMemOperand(cp, kGlobalOffset));
1139
- __ ldr(r0, FieldMemOperand(r0, GlobalObject::kGlobalContextOffset));
1140
- __ ldr(r0, FieldMemOperand(r0, kGlobalOffset));
1141
- __ ldr(r0, FieldMemOperand(r0, GlobalObject::kGlobalReceiverOffset));
1142
-
1143
- // Push the receiver.
1144
- // r0: receiver
1145
- __ bind(&push_receiver);
1146
- __ push(r0);
1147
-
1148
- // Copy all arguments from the array to the stack.
1149
- Label entry, loop;
1150
- __ ldr(r0, MemOperand(fp, kIndexOffset));
1151
- __ b(&entry);
1152
-
1153
- // Load the current argument from the arguments array and push it to the
1154
- // stack.
1155
- // r0: current argument index
1156
- __ bind(&loop);
1157
- __ ldr(r1, MemOperand(fp, kArgsOffset));
1158
- __ push(r1);
1159
- __ push(r0);
1160
-
1161
- // Call the runtime to access the property in the arguments array.
1162
- __ CallRuntime(Runtime::kGetProperty, 2);
1163
- __ push(r0);
1164
-
1165
- // Use inline caching to access the arguments.
1166
- __ ldr(r0, MemOperand(fp, kIndexOffset));
1167
- __ add(r0, r0, Operand(1 << kSmiTagSize));
1168
- __ str(r0, MemOperand(fp, kIndexOffset));
1169
-
1170
- // Test if the copy loop has finished copying all the elements from the
1171
- // arguments object.
1172
- __ bind(&entry);
1173
- __ ldr(r1, MemOperand(fp, kLimitOffset));
1174
- __ cmp(r0, r1);
1175
- __ b(ne, &loop);
1176
-
1177
- // Invoke the function.
1178
- ParameterCount actual(r0);
1179
- __ mov(r0, Operand(r0, ASR, kSmiTagSize));
1180
- __ ldr(r1, MemOperand(fp, kFunctionOffset));
1181
- __ InvokeFunction(r1, actual, CALL_FUNCTION);
1182
-
1183
- // Tear down the internal frame and remove function, receiver and args.
1184
- __ LeaveInternalFrame();
1185
- __ add(sp, sp, Operand(3 * kPointerSize));
1186
- __ Jump(lr);
1187
- }
1188
-
1189
-
1190
- static void EnterArgumentsAdaptorFrame(MacroAssembler* masm) {
1191
- __ mov(r0, Operand(r0, LSL, kSmiTagSize));
1192
- __ mov(r4, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
1193
- __ stm(db_w, sp, r0.bit() | r1.bit() | r4.bit() | fp.bit() | lr.bit());
1194
- __ add(fp, sp, Operand(3 * kPointerSize));
1195
- }
1196
-
1197
-
1198
- static void LeaveArgumentsAdaptorFrame(MacroAssembler* masm) {
1199
- // ----------- S t a t e -------------
1200
- // -- r0 : result being passed through
1201
- // -----------------------------------
1202
- // Get the number of arguments passed (as a smi), tear down the frame and
1203
- // then tear down the parameters.
1204
- __ ldr(r1, MemOperand(fp, -3 * kPointerSize));
1205
- __ mov(sp, fp);
1206
- __ ldm(ia_w, sp, fp.bit() | lr.bit());
1207
- __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2 - kSmiTagSize));
1208
- __ add(sp, sp, Operand(kPointerSize)); // adjust for receiver
1209
- }
1210
-
1211
-
1212
- void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
1213
- // ----------- S t a t e -------------
1214
- // -- r0 : actual number of arguments
1215
- // -- r1 : function (passed through to callee)
1216
- // -- r2 : expected number of arguments
1217
- // -- r3 : code entry to call
1218
- // -----------------------------------
1219
-
1220
- Label invoke, dont_adapt_arguments;
1221
-
1222
- Label enough, too_few;
1223
- __ cmp(r0, r2);
1224
- __ b(lt, &too_few);
1225
- __ cmp(r2, Operand(SharedFunctionInfo::kDontAdaptArgumentsSentinel));
1226
- __ b(eq, &dont_adapt_arguments);
1227
-
1228
- { // Enough parameters: actual >= expected
1229
- __ bind(&enough);
1230
- EnterArgumentsAdaptorFrame(masm);
1231
-
1232
- // Calculate copy start address into r0 and copy end address into r2.
1233
- // r0: actual number of arguments as a smi
1234
- // r1: function
1235
- // r2: expected number of arguments
1236
- // r3: code entry to call
1237
- __ add(r0, fp, Operand(r0, LSL, kPointerSizeLog2 - kSmiTagSize));
1238
- // adjust for return address and receiver
1239
- __ add(r0, r0, Operand(2 * kPointerSize));
1240
- __ sub(r2, r0, Operand(r2, LSL, kPointerSizeLog2));
1241
-
1242
- // Copy the arguments (including the receiver) to the new stack frame.
1243
- // r0: copy start address
1244
- // r1: function
1245
- // r2: copy end address
1246
- // r3: code entry to call
1247
-
1248
- Label copy;
1249
- __ bind(&copy);
1250
- __ ldr(ip, MemOperand(r0, 0));
1251
- __ push(ip);
1252
- __ cmp(r0, r2); // Compare before moving to next argument.
1253
- __ sub(r0, r0, Operand(kPointerSize));
1254
- __ b(ne, &copy);
1255
-
1256
- __ b(&invoke);
1257
- }
1258
-
1259
- { // Too few parameters: Actual < expected
1260
- __ bind(&too_few);
1261
- EnterArgumentsAdaptorFrame(masm);
1262
-
1263
- // Calculate copy start address into r0 and copy end address is fp.
1264
- // r0: actual number of arguments as a smi
1265
- // r1: function
1266
- // r2: expected number of arguments
1267
- // r3: code entry to call
1268
- __ add(r0, fp, Operand(r0, LSL, kPointerSizeLog2 - kSmiTagSize));
1269
-
1270
- // Copy the arguments (including the receiver) to the new stack frame.
1271
- // r0: copy start address
1272
- // r1: function
1273
- // r2: expected number of arguments
1274
- // r3: code entry to call
1275
- Label copy;
1276
- __ bind(&copy);
1277
- // Adjust load for return address and receiver.
1278
- __ ldr(ip, MemOperand(r0, 2 * kPointerSize));
1279
- __ push(ip);
1280
- __ cmp(r0, fp); // Compare before moving to next argument.
1281
- __ sub(r0, r0, Operand(kPointerSize));
1282
- __ b(ne, &copy);
1283
-
1284
- // Fill the remaining expected arguments with undefined.
1285
- // r1: function
1286
- // r2: expected number of arguments
1287
- // r3: code entry to call
1288
- __ LoadRoot(ip, Heap::kUndefinedValueRootIndex);
1289
- __ sub(r2, fp, Operand(r2, LSL, kPointerSizeLog2));
1290
- __ sub(r2, r2, Operand(4 * kPointerSize)); // Adjust for frame.
1291
-
1292
- Label fill;
1293
- __ bind(&fill);
1294
- __ push(ip);
1295
- __ cmp(sp, r2);
1296
- __ b(ne, &fill);
1297
- }
1298
-
1299
- // Call the entry point.
1300
- __ bind(&invoke);
1301
- __ Call(r3);
1302
-
1303
- // Exit frame and return.
1304
- LeaveArgumentsAdaptorFrame(masm);
1305
- __ Jump(lr);
1306
-
1307
-
1308
- // -------------------------------------------
1309
- // Dont adapt arguments.
1310
- // -------------------------------------------
1311
- __ bind(&dont_adapt_arguments);
1312
- __ Jump(r3);
1313
- }
1314
-
1315
-
1316
- #undef __
1317
-
1318
- } } // namespace v8::internal
1319
-
1320
- #endif // V8_TARGET_ARCH_ARM