therubyracer 0.9.0beta2 → 0.9.0beta3

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 (920) hide show
  1. data/.gitmodules +3 -0
  2. data/ext/v8/upstream/Makefile +1 -2
  3. data/ext/v8/upstream/v8/.gitignore +33 -0
  4. data/ext/v8/upstream/v8/AUTHORS +42 -0
  5. data/ext/v8/upstream/v8/ChangeLog +2663 -0
  6. data/ext/v8/upstream/{3.1.8 → v8}/LICENSE +0 -0
  7. data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.strongtalk +0 -0
  8. data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.v8 +0 -0
  9. data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.valgrind +0 -0
  10. data/ext/v8/upstream/v8/SConstruct +1473 -0
  11. data/ext/v8/upstream/{3.1.8 → v8}/build/README.txt +0 -0
  12. data/ext/v8/upstream/{3.1.8 → v8}/build/all.gyp +0 -0
  13. data/ext/v8/upstream/{3.1.8 → v8}/build/armu.gypi +0 -0
  14. data/ext/v8/upstream/{3.1.8 → v8}/build/common.gypi +0 -0
  15. data/ext/v8/upstream/{3.1.8 → v8}/build/gyp_v8 +0 -0
  16. data/ext/v8/upstream/v8/include/v8-debug.h +394 -0
  17. data/ext/v8/upstream/v8/include/v8-preparser.h +116 -0
  18. data/ext/v8/upstream/v8/include/v8-profiler.h +505 -0
  19. data/ext/v8/upstream/v8/include/v8-testing.h +104 -0
  20. data/ext/v8/upstream/v8/include/v8.h +4000 -0
  21. data/ext/v8/upstream/{3.1.8 → v8}/include/v8stdint.h +0 -0
  22. data/ext/v8/upstream/v8/preparser/SConscript +38 -0
  23. data/ext/v8/upstream/v8/preparser/preparser-process.cc +169 -0
  24. data/ext/v8/upstream/v8/src/SConscript +380 -0
  25. data/ext/v8/upstream/v8/src/accessors.cc +766 -0
  26. data/ext/v8/upstream/{3.1.8 → v8}/src/accessors.h +0 -0
  27. data/ext/v8/upstream/v8/src/allocation-inl.h +49 -0
  28. data/ext/v8/upstream/v8/src/allocation.cc +122 -0
  29. data/ext/v8/upstream/v8/src/allocation.h +143 -0
  30. data/ext/v8/upstream/v8/src/api.cc +5678 -0
  31. data/ext/v8/upstream/v8/src/api.h +572 -0
  32. data/ext/v8/upstream/{3.1.8 → v8}/src/apinatives.js +0 -0
  33. data/ext/v8/upstream/v8/src/apiutils.h +73 -0
  34. data/ext/v8/upstream/v8/src/arguments.h +116 -0
  35. data/ext/v8/upstream/v8/src/arm/assembler-arm-inl.h +353 -0
  36. data/ext/v8/upstream/v8/src/arm/assembler-arm.cc +2877 -0
  37. data/ext/v8/upstream/v8/src/arm/assembler-arm.h +1382 -0
  38. data/ext/v8/upstream/v8/src/arm/builtins-arm.cc +1634 -0
  39. data/ext/v8/upstream/v8/src/arm/code-stubs-arm.cc +6917 -0
  40. data/ext/v8/upstream/v8/src/arm/code-stubs-arm.h +623 -0
  41. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/codegen-arm-inl.h +0 -0
  42. data/ext/v8/upstream/v8/src/arm/codegen-arm.cc +7437 -0
  43. data/ext/v8/upstream/v8/src/arm/codegen-arm.h +595 -0
  44. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/constants-arm.cc +0 -0
  45. data/ext/v8/upstream/v8/src/arm/constants-arm.h +778 -0
  46. data/ext/v8/upstream/v8/src/arm/cpu-arm.cc +149 -0
  47. data/ext/v8/upstream/v8/src/arm/debug-arm.cc +317 -0
  48. data/ext/v8/upstream/v8/src/arm/deoptimizer-arm.cc +737 -0
  49. data/ext/v8/upstream/v8/src/arm/disasm-arm.cc +1503 -0
  50. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/frames-arm.cc +0 -0
  51. data/ext/v8/upstream/v8/src/arm/frames-arm.h +168 -0
  52. data/ext/v8/upstream/v8/src/arm/full-codegen-arm.cc +4374 -0
  53. data/ext/v8/upstream/v8/src/arm/ic-arm.cc +1793 -0
  54. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/jump-target-arm.cc +0 -0
  55. data/ext/v8/upstream/v8/src/arm/lithium-arm.cc +2120 -0
  56. data/ext/v8/upstream/v8/src/arm/lithium-arm.h +2179 -0
  57. data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.cc +4132 -0
  58. data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.h +329 -0
  59. data/ext/v8/upstream/v8/src/arm/lithium-gap-resolver-arm.cc +305 -0
  60. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/lithium-gap-resolver-arm.h +0 -0
  61. data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.cc +2939 -0
  62. data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.h +1071 -0
  63. data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.cc +1287 -0
  64. data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.h +253 -0
  65. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm-inl.h +0 -0
  66. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm.cc +0 -0
  67. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm.h +0 -0
  68. data/ext/v8/upstream/v8/src/arm/simulator-arm.cc +3288 -0
  69. data/ext/v8/upstream/v8/src/arm/simulator-arm.h +413 -0
  70. data/ext/v8/upstream/v8/src/arm/stub-cache-arm.cc +4034 -0
  71. data/ext/v8/upstream/{3.1.8 → v8}/src/arm/virtual-frame-arm-inl.h +0 -0
  72. data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.cc +843 -0
  73. data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.h +523 -0
  74. data/ext/v8/upstream/v8/src/array.js +1249 -0
  75. data/ext/v8/upstream/v8/src/assembler.cc +1067 -0
  76. data/ext/v8/upstream/v8/src/assembler.h +823 -0
  77. data/ext/v8/upstream/v8/src/ast-inl.h +112 -0
  78. data/ext/v8/upstream/v8/src/ast.cc +1078 -0
  79. data/ext/v8/upstream/v8/src/ast.h +2234 -0
  80. data/ext/v8/upstream/v8/src/atomicops.h +167 -0
  81. data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_arm_gcc.h +0 -0
  82. data/ext/v8/upstream/v8/src/atomicops_internals_mips_gcc.h +169 -0
  83. data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_gcc.cc +0 -0
  84. data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_gcc.h +0 -0
  85. data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_macosx.h +0 -0
  86. data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_msvc.h +0 -0
  87. data/ext/v8/upstream/{3.1.8 → v8}/src/bignum-dtoa.cc +0 -0
  88. data/ext/v8/upstream/{3.1.8 → v8}/src/bignum-dtoa.h +0 -0
  89. data/ext/v8/upstream/{3.1.8 → v8}/src/bignum.cc +0 -0
  90. data/ext/v8/upstream/{3.1.8 → v8}/src/bignum.h +0 -0
  91. data/ext/v8/upstream/v8/src/bootstrapper.cc +2138 -0
  92. data/ext/v8/upstream/v8/src/bootstrapper.h +185 -0
  93. data/ext/v8/upstream/v8/src/builtins.cc +1708 -0
  94. data/ext/v8/upstream/v8/src/builtins.h +368 -0
  95. data/ext/v8/upstream/{3.1.8 → v8}/src/bytecodes-irregexp.h +0 -0
  96. data/ext/v8/upstream/{3.1.8 → v8}/src/cached-powers.cc +0 -0
  97. data/ext/v8/upstream/{3.1.8 → v8}/src/cached-powers.h +0 -0
  98. data/ext/v8/upstream/{3.1.8 → v8}/src/char-predicates-inl.h +0 -0
  99. data/ext/v8/upstream/{3.1.8 → v8}/src/char-predicates.h +0 -0
  100. data/ext/v8/upstream/v8/src/checks.cc +110 -0
  101. data/ext/v8/upstream/v8/src/checks.h +296 -0
  102. data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue-inl.h +0 -0
  103. data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue.cc +0 -0
  104. data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue.h +0 -0
  105. data/ext/v8/upstream/v8/src/code-stubs.cc +240 -0
  106. data/ext/v8/upstream/v8/src/code-stubs.h +971 -0
  107. data/ext/v8/upstream/{3.1.8 → v8}/src/code.h +0 -0
  108. data/ext/v8/upstream/v8/src/codegen-inl.h +68 -0
  109. data/ext/v8/upstream/v8/src/codegen.cc +505 -0
  110. data/ext/v8/upstream/v8/src/codegen.h +245 -0
  111. data/ext/v8/upstream/v8/src/compilation-cache.cc +540 -0
  112. data/ext/v8/upstream/v8/src/compilation-cache.h +287 -0
  113. data/ext/v8/upstream/v8/src/compiler.cc +792 -0
  114. data/ext/v8/upstream/v8/src/compiler.h +307 -0
  115. data/ext/v8/upstream/v8/src/contexts.cc +327 -0
  116. data/ext/v8/upstream/v8/src/contexts.h +382 -0
  117. data/ext/v8/upstream/{3.1.8 → v8}/src/conversions-inl.h +0 -0
  118. data/ext/v8/upstream/v8/src/conversions.cc +1125 -0
  119. data/ext/v8/upstream/{3.1.8 → v8}/src/conversions.h +0 -0
  120. data/ext/v8/upstream/v8/src/counters.cc +93 -0
  121. data/ext/v8/upstream/v8/src/counters.h +254 -0
  122. data/ext/v8/upstream/v8/src/cpu-profiler-inl.h +101 -0
  123. data/ext/v8/upstream/v8/src/cpu-profiler.cc +606 -0
  124. data/ext/v8/upstream/v8/src/cpu-profiler.h +305 -0
  125. data/ext/v8/upstream/v8/src/cpu.h +67 -0
  126. data/ext/v8/upstream/v8/src/d8-debug.cc +367 -0
  127. data/ext/v8/upstream/v8/src/d8-debug.h +158 -0
  128. data/ext/v8/upstream/v8/src/d8-posix.cc +695 -0
  129. data/ext/v8/upstream/{3.1.8 → v8}/src/d8-readline.cc +0 -0
  130. data/ext/v8/upstream/{3.1.8 → v8}/src/d8-windows.cc +0 -0
  131. data/ext/v8/upstream/v8/src/d8.cc +796 -0
  132. data/ext/v8/upstream/v8/src/d8.gyp +88 -0
  133. data/ext/v8/upstream/{3.1.8 → v8}/src/d8.h +0 -0
  134. data/ext/v8/upstream/{3.1.8 → v8}/src/d8.js +0 -0
  135. data/ext/v8/upstream/{3.1.8 → v8}/src/data-flow.cc +0 -0
  136. data/ext/v8/upstream/v8/src/data-flow.h +379 -0
  137. data/ext/v8/upstream/{3.1.8 → v8}/src/date.js +0 -0
  138. data/ext/v8/upstream/{3.1.8 → v8}/src/dateparser-inl.h +0 -0
  139. data/ext/v8/upstream/{3.1.8 → v8}/src/dateparser.cc +0 -0
  140. data/ext/v8/upstream/v8/src/dateparser.h +265 -0
  141. data/ext/v8/upstream/v8/src/debug-agent.cc +447 -0
  142. data/ext/v8/upstream/v8/src/debug-agent.h +129 -0
  143. data/ext/v8/upstream/{3.1.8 → v8}/src/debug-debugger.js +0 -0
  144. data/ext/v8/upstream/v8/src/debug.cc +3188 -0
  145. data/ext/v8/upstream/v8/src/debug.h +1055 -0
  146. data/ext/v8/upstream/v8/src/deoptimizer.cc +1296 -0
  147. data/ext/v8/upstream/v8/src/deoptimizer.h +629 -0
  148. data/ext/v8/upstream/v8/src/disasm.h +80 -0
  149. data/ext/v8/upstream/v8/src/disassembler.cc +339 -0
  150. data/ext/v8/upstream/{3.1.8 → v8}/src/disassembler.h +0 -0
  151. data/ext/v8/upstream/{3.1.8 → v8}/src/diy-fp.cc +0 -0
  152. data/ext/v8/upstream/{3.1.8 → v8}/src/diy-fp.h +0 -0
  153. data/ext/v8/upstream/{3.1.8 → v8}/src/double.h +0 -0
  154. data/ext/v8/upstream/{3.1.8 → v8}/src/dtoa.cc +0 -0
  155. data/ext/v8/upstream/{3.1.8 → v8}/src/dtoa.h +0 -0
  156. data/ext/v8/upstream/v8/src/execution.cc +791 -0
  157. data/ext/v8/upstream/v8/src/execution.h +291 -0
  158. data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.cc +250 -0
  159. data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.h +89 -0
  160. data/ext/v8/upstream/v8/src/extensions/experimental/experimental.gyp +55 -0
  161. data/ext/v8/upstream/v8/src/extensions/experimental/i18n-extension.cc +284 -0
  162. data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/experimental/i18n-extension.h +0 -0
  163. data/ext/v8/upstream/v8/src/extensions/externalize-string-extension.cc +141 -0
  164. data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/externalize-string-extension.h +0 -0
  165. data/ext/v8/upstream/v8/src/extensions/gc-extension.cc +58 -0
  166. data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/gc-extension.h +0 -0
  167. data/ext/v8/upstream/v8/src/factory.cc +1194 -0
  168. data/ext/v8/upstream/v8/src/factory.h +436 -0
  169. data/ext/v8/upstream/{3.1.8 → v8}/src/fast-dtoa.cc +0 -0
  170. data/ext/v8/upstream/{3.1.8 → v8}/src/fast-dtoa.h +0 -0
  171. data/ext/v8/upstream/{3.1.8 → v8}/src/fixed-dtoa.cc +0 -0
  172. data/ext/v8/upstream/{3.1.8 → v8}/src/fixed-dtoa.h +0 -0
  173. data/ext/v8/upstream/v8/src/flag-definitions.h +556 -0
  174. data/ext/v8/upstream/{3.1.8 → v8}/src/flags.cc +0 -0
  175. data/ext/v8/upstream/{3.1.8 → v8}/src/flags.h +0 -0
  176. data/ext/v8/upstream/v8/src/frame-element.cc +37 -0
  177. data/ext/v8/upstream/v8/src/frame-element.h +269 -0
  178. data/ext/v8/upstream/v8/src/frames-inl.h +236 -0
  179. data/ext/v8/upstream/v8/src/frames.cc +1273 -0
  180. data/ext/v8/upstream/v8/src/frames.h +854 -0
  181. data/ext/v8/upstream/v8/src/full-codegen.cc +1385 -0
  182. data/ext/v8/upstream/v8/src/full-codegen.h +753 -0
  183. data/ext/v8/upstream/v8/src/func-name-inferrer.cc +91 -0
  184. data/ext/v8/upstream/v8/src/func-name-inferrer.h +111 -0
  185. data/ext/v8/upstream/v8/src/gdb-jit.cc +1548 -0
  186. data/ext/v8/upstream/{3.1.8 → v8}/src/gdb-jit.h +0 -0
  187. data/ext/v8/upstream/v8/src/global-handles.cc +596 -0
  188. data/ext/v8/upstream/v8/src/global-handles.h +239 -0
  189. data/ext/v8/upstream/v8/src/globals.h +325 -0
  190. data/ext/v8/upstream/v8/src/handles-inl.h +177 -0
  191. data/ext/v8/upstream/v8/src/handles.cc +965 -0
  192. data/ext/v8/upstream/v8/src/handles.h +372 -0
  193. data/ext/v8/upstream/{3.1.8 → v8}/src/hashmap.cc +0 -0
  194. data/ext/v8/upstream/v8/src/hashmap.h +121 -0
  195. data/ext/v8/upstream/v8/src/heap-inl.h +703 -0
  196. data/ext/v8/upstream/v8/src/heap-profiler.cc +1173 -0
  197. data/ext/v8/upstream/v8/src/heap-profiler.h +396 -0
  198. data/ext/v8/upstream/v8/src/heap.cc +5856 -0
  199. data/ext/v8/upstream/v8/src/heap.h +2264 -0
  200. data/ext/v8/upstream/v8/src/hydrogen-instructions.cc +1639 -0
  201. data/ext/v8/upstream/v8/src/hydrogen-instructions.h +3657 -0
  202. data/ext/v8/upstream/v8/src/hydrogen.cc +6011 -0
  203. data/ext/v8/upstream/v8/src/hydrogen.h +1137 -0
  204. data/ext/v8/upstream/v8/src/ia32/assembler-ia32-inl.h +430 -0
  205. data/ext/v8/upstream/v8/src/ia32/assembler-ia32.cc +2846 -0
  206. data/ext/v8/upstream/v8/src/ia32/assembler-ia32.h +1159 -0
  207. data/ext/v8/upstream/v8/src/ia32/builtins-ia32.cc +1596 -0
  208. data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.cc +6549 -0
  209. data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.h +495 -0
  210. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/codegen-ia32-inl.h +0 -0
  211. data/ext/v8/upstream/v8/src/ia32/codegen-ia32.cc +10385 -0
  212. data/ext/v8/upstream/v8/src/ia32/codegen-ia32.h +801 -0
  213. data/ext/v8/upstream/v8/src/ia32/cpu-ia32.cc +88 -0
  214. data/ext/v8/upstream/v8/src/ia32/debug-ia32.cc +312 -0
  215. data/ext/v8/upstream/v8/src/ia32/deoptimizer-ia32.cc +774 -0
  216. data/ext/v8/upstream/v8/src/ia32/disasm-ia32.cc +1620 -0
  217. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/frames-ia32.cc +0 -0
  218. data/ext/v8/upstream/v8/src/ia32/frames-ia32.h +140 -0
  219. data/ext/v8/upstream/v8/src/ia32/full-codegen-ia32.cc +4357 -0
  220. data/ext/v8/upstream/v8/src/ia32/ic-ia32.cc +1779 -0
  221. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/jump-target-ia32.cc +0 -0
  222. data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.cc +4158 -0
  223. data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.h +318 -0
  224. data/ext/v8/upstream/v8/src/ia32/lithium-gap-resolver-ia32.cc +466 -0
  225. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/lithium-gap-resolver-ia32.h +0 -0
  226. data/ext/v8/upstream/v8/src/ia32/lithium-ia32.cc +2181 -0
  227. data/ext/v8/upstream/v8/src/ia32/lithium-ia32.h +2235 -0
  228. data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.cc +2056 -0
  229. data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.h +807 -0
  230. data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.cc +1264 -0
  231. data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.h +216 -0
  232. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/register-allocator-ia32-inl.h +0 -0
  233. data/ext/v8/upstream/v8/src/ia32/register-allocator-ia32.cc +157 -0
  234. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/register-allocator-ia32.h +0 -0
  235. data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/simulator-ia32.cc +0 -0
  236. data/ext/v8/upstream/v8/src/ia32/simulator-ia32.h +72 -0
  237. data/ext/v8/upstream/v8/src/ia32/stub-cache-ia32.cc +3711 -0
  238. data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.cc +1366 -0
  239. data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.h +650 -0
  240. data/ext/v8/upstream/v8/src/ic-inl.h +130 -0
  241. data/ext/v8/upstream/v8/src/ic.cc +2389 -0
  242. data/ext/v8/upstream/v8/src/ic.h +675 -0
  243. data/ext/v8/upstream/{3.1.8 → v8}/src/inspector.cc +0 -0
  244. data/ext/v8/upstream/{3.1.8 → v8}/src/inspector.h +0 -0
  245. data/ext/v8/upstream/v8/src/interpreter-irregexp.cc +659 -0
  246. data/ext/v8/upstream/v8/src/interpreter-irregexp.h +49 -0
  247. data/ext/v8/upstream/v8/src/isolate.cc +883 -0
  248. data/ext/v8/upstream/v8/src/isolate.h +1306 -0
  249. data/ext/v8/upstream/v8/src/json.js +342 -0
  250. data/ext/v8/upstream/v8/src/jsregexp.cc +5371 -0
  251. data/ext/v8/upstream/v8/src/jsregexp.h +1483 -0
  252. data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-heavy-inl.h +0 -0
  253. data/ext/v8/upstream/v8/src/jump-target-heavy.cc +427 -0
  254. data/ext/v8/upstream/v8/src/jump-target-heavy.h +238 -0
  255. data/ext/v8/upstream/v8/src/jump-target-inl.h +48 -0
  256. data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-light-inl.h +0 -0
  257. data/ext/v8/upstream/v8/src/jump-target-light.cc +111 -0
  258. data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-light.h +0 -0
  259. data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target.cc +0 -0
  260. data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target.h +0 -0
  261. data/ext/v8/upstream/{3.1.8 → v8}/src/list-inl.h +0 -0
  262. data/ext/v8/upstream/{3.1.8 → v8}/src/list.h +0 -0
  263. data/ext/v8/upstream/v8/src/lithium-allocator-inl.h +142 -0
  264. data/ext/v8/upstream/v8/src/lithium-allocator.cc +2105 -0
  265. data/ext/v8/upstream/v8/src/lithium-allocator.h +630 -0
  266. data/ext/v8/upstream/v8/src/lithium.cc +169 -0
  267. data/ext/v8/upstream/{3.1.8 → v8}/src/lithium.h +0 -0
  268. data/ext/v8/upstream/{3.1.8 → v8}/src/liveedit-debugger.js +0 -0
  269. data/ext/v8/upstream/v8/src/liveedit.cc +1693 -0
  270. data/ext/v8/upstream/v8/src/liveedit.h +179 -0
  271. data/ext/v8/upstream/{3.1.8 → v8}/src/liveobjectlist-inl.h +0 -0
  272. data/ext/v8/upstream/v8/src/liveobjectlist.cc +2589 -0
  273. data/ext/v8/upstream/v8/src/liveobjectlist.h +322 -0
  274. data/ext/v8/upstream/{3.1.8 → v8}/src/log-inl.h +0 -0
  275. data/ext/v8/upstream/v8/src/log-utils.cc +423 -0
  276. data/ext/v8/upstream/v8/src/log-utils.h +229 -0
  277. data/ext/v8/upstream/v8/src/log.cc +1666 -0
  278. data/ext/v8/upstream/v8/src/log.h +446 -0
  279. data/ext/v8/upstream/{3.1.8 → v8}/src/macro-assembler.h +0 -0
  280. data/ext/v8/upstream/{3.1.8 → v8}/src/macros.py +0 -0
  281. data/ext/v8/upstream/v8/src/mark-compact.cc +3092 -0
  282. data/ext/v8/upstream/v8/src/mark-compact.h +506 -0
  283. data/ext/v8/upstream/{3.1.8 → v8}/src/math.js +0 -0
  284. data/ext/v8/upstream/v8/src/messages.cc +166 -0
  285. data/ext/v8/upstream/{3.1.8 → v8}/src/messages.h +0 -0
  286. data/ext/v8/upstream/v8/src/messages.js +1090 -0
  287. data/ext/v8/upstream/v8/src/mips/assembler-mips-inl.h +335 -0
  288. data/ext/v8/upstream/v8/src/mips/assembler-mips.cc +2093 -0
  289. data/ext/v8/upstream/v8/src/mips/assembler-mips.h +1066 -0
  290. data/ext/v8/upstream/v8/src/mips/builtins-mips.cc +148 -0
  291. data/ext/v8/upstream/v8/src/mips/code-stubs-mips.cc +752 -0
  292. data/ext/v8/upstream/v8/src/mips/code-stubs-mips.h +511 -0
  293. data/ext/v8/upstream/v8/src/mips/codegen-mips-inl.h +64 -0
  294. data/ext/v8/upstream/v8/src/mips/codegen-mips.cc +1213 -0
  295. data/ext/v8/upstream/v8/src/mips/codegen-mips.h +633 -0
  296. data/ext/v8/upstream/v8/src/mips/constants-mips.cc +352 -0
  297. data/ext/v8/upstream/v8/src/mips/constants-mips.h +723 -0
  298. data/ext/v8/upstream/v8/src/mips/cpu-mips.cc +90 -0
  299. data/ext/v8/upstream/v8/src/mips/debug-mips.cc +155 -0
  300. data/ext/v8/upstream/v8/src/mips/deoptimizer-mips.cc +91 -0
  301. data/ext/v8/upstream/v8/src/mips/disasm-mips.cc +1023 -0
  302. data/ext/v8/upstream/v8/src/mips/frames-mips.cc +48 -0
  303. data/ext/v8/upstream/v8/src/mips/frames-mips.h +179 -0
  304. data/ext/v8/upstream/v8/src/mips/full-codegen-mips.cc +727 -0
  305. data/ext/v8/upstream/v8/src/mips/ic-mips.cc +244 -0
  306. data/ext/v8/upstream/v8/src/mips/jump-target-mips.cc +80 -0
  307. data/ext/v8/upstream/v8/src/mips/lithium-codegen-mips.h +65 -0
  308. data/ext/v8/upstream/v8/src/mips/lithium-mips.h +304 -0
  309. data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.cc +3327 -0
  310. data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.h +1058 -0
  311. data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.cc +478 -0
  312. data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.h +250 -0
  313. data/ext/v8/upstream/v8/src/mips/register-allocator-mips-inl.h +134 -0
  314. data/ext/v8/upstream/{3.1.8 → v8}/src/mips/register-allocator-mips.cc +0 -0
  315. data/ext/v8/upstream/v8/src/mips/register-allocator-mips.h +47 -0
  316. data/ext/v8/upstream/v8/src/mips/simulator-mips.cc +2438 -0
  317. data/ext/v8/upstream/v8/src/mips/simulator-mips.h +394 -0
  318. data/ext/v8/upstream/v8/src/mips/stub-cache-mips.cc +601 -0
  319. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips-inl.h +58 -0
  320. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.cc +307 -0
  321. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.h +530 -0
  322. data/ext/v8/upstream/v8/src/mirror-debugger.js +2381 -0
  323. data/ext/v8/upstream/v8/src/mksnapshot.cc +256 -0
  324. data/ext/v8/upstream/{3.1.8 → v8}/src/natives.h +0 -0
  325. data/ext/v8/upstream/v8/src/objects-debug.cc +722 -0
  326. data/ext/v8/upstream/v8/src/objects-inl.h +4166 -0
  327. data/ext/v8/upstream/v8/src/objects-printer.cc +801 -0
  328. data/ext/v8/upstream/v8/src/objects-visiting.cc +142 -0
  329. data/ext/v8/upstream/v8/src/objects-visiting.h +422 -0
  330. data/ext/v8/upstream/v8/src/objects.cc +10296 -0
  331. data/ext/v8/upstream/v8/src/objects.h +6662 -0
  332. data/ext/v8/upstream/v8/src/parser.cc +5168 -0
  333. data/ext/v8/upstream/v8/src/parser.h +823 -0
  334. data/ext/v8/upstream/v8/src/platform-cygwin.cc +811 -0
  335. data/ext/v8/upstream/v8/src/platform-freebsd.cc +854 -0
  336. data/ext/v8/upstream/v8/src/platform-linux.cc +1120 -0
  337. data/ext/v8/upstream/v8/src/platform-macos.cc +865 -0
  338. data/ext/v8/upstream/v8/src/platform-nullos.cc +504 -0
  339. data/ext/v8/upstream/v8/src/platform-openbsd.cc +672 -0
  340. data/ext/v8/upstream/v8/src/platform-posix.cc +424 -0
  341. data/ext/v8/upstream/v8/src/platform-solaris.cc +796 -0
  342. data/ext/v8/upstream/v8/src/platform-tls-mac.h +62 -0
  343. data/ext/v8/upstream/v8/src/platform-tls-win32.h +62 -0
  344. data/ext/v8/upstream/v8/src/platform-tls.h +50 -0
  345. data/ext/v8/upstream/v8/src/platform-win32.cc +2072 -0
  346. data/ext/v8/upstream/v8/src/platform.h +693 -0
  347. data/ext/v8/upstream/v8/src/preparse-data.cc +185 -0
  348. data/ext/v8/upstream/{3.1.8 → v8}/src/preparse-data.h +0 -0
  349. data/ext/v8/upstream/v8/src/preparser-api.cc +219 -0
  350. data/ext/v8/upstream/v8/src/preparser.cc +1205 -0
  351. data/ext/v8/upstream/{3.1.8 → v8}/src/preparser.h +0 -0
  352. data/ext/v8/upstream/v8/src/prettyprinter.cc +1530 -0
  353. data/ext/v8/upstream/v8/src/prettyprinter.h +223 -0
  354. data/ext/v8/upstream/{3.1.8 → v8}/src/profile-generator-inl.h +0 -0
  355. data/ext/v8/upstream/v8/src/profile-generator.cc +3095 -0
  356. data/ext/v8/upstream/v8/src/profile-generator.h +1125 -0
  357. data/ext/v8/upstream/v8/src/property.cc +102 -0
  358. data/ext/v8/upstream/v8/src/property.h +348 -0
  359. data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  360. data/ext/v8/upstream/v8/src/regexp-macro-assembler-irregexp.cc +470 -0
  361. data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-irregexp.h +0 -0
  362. data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-tracer.cc +0 -0
  363. data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-tracer.h +0 -0
  364. data/ext/v8/upstream/v8/src/regexp-macro-assembler.cc +266 -0
  365. data/ext/v8/upstream/v8/src/regexp-macro-assembler.h +236 -0
  366. data/ext/v8/upstream/v8/src/regexp-stack.cc +111 -0
  367. data/ext/v8/upstream/v8/src/regexp-stack.h +147 -0
  368. data/ext/v8/upstream/v8/src/regexp.js +483 -0
  369. data/ext/v8/upstream/v8/src/register-allocator-inl.h +141 -0
  370. data/ext/v8/upstream/v8/src/register-allocator.cc +98 -0
  371. data/ext/v8/upstream/v8/src/register-allocator.h +310 -0
  372. data/ext/v8/upstream/v8/src/rewriter.cc +1024 -0
  373. data/ext/v8/upstream/{3.1.8 → v8}/src/rewriter.h +0 -0
  374. data/ext/v8/upstream/v8/src/runtime-profiler.cc +478 -0
  375. data/ext/v8/upstream/v8/src/runtime-profiler.h +192 -0
  376. data/ext/v8/upstream/v8/src/runtime.cc +11949 -0
  377. data/ext/v8/upstream/v8/src/runtime.h +643 -0
  378. data/ext/v8/upstream/{3.1.8 → v8}/src/runtime.js +0 -0
  379. data/ext/v8/upstream/v8/src/safepoint-table.cc +256 -0
  380. data/ext/v8/upstream/v8/src/safepoint-table.h +269 -0
  381. data/ext/v8/upstream/v8/src/scanner-base.cc +964 -0
  382. data/ext/v8/upstream/v8/src/scanner-base.h +664 -0
  383. data/ext/v8/upstream/v8/src/scanner.cc +584 -0
  384. data/ext/v8/upstream/v8/src/scanner.h +196 -0
  385. data/ext/v8/upstream/v8/src/scopeinfo.cc +631 -0
  386. data/ext/v8/upstream/v8/src/scopeinfo.h +249 -0
  387. data/ext/v8/upstream/v8/src/scopes.cc +1093 -0
  388. data/ext/v8/upstream/v8/src/scopes.h +508 -0
  389. data/ext/v8/upstream/v8/src/serialize.cc +1574 -0
  390. data/ext/v8/upstream/v8/src/serialize.h +589 -0
  391. data/ext/v8/upstream/{3.1.8 → v8}/src/shell.h +0 -0
  392. data/ext/v8/upstream/{3.1.8 → v8}/src/simulator.h +0 -0
  393. data/ext/v8/upstream/v8/src/small-pointer-list.h +163 -0
  394. data/ext/v8/upstream/{3.1.8 → v8}/src/smart-pointer.h +0 -0
  395. data/ext/v8/upstream/v8/src/snapshot-common.cc +82 -0
  396. data/ext/v8/upstream/{3.1.8 → v8}/src/snapshot-empty.cc +0 -0
  397. data/ext/v8/upstream/v8/src/snapshot.h +73 -0
  398. data/ext/v8/upstream/v8/src/spaces-inl.h +529 -0
  399. data/ext/v8/upstream/v8/src/spaces.cc +3147 -0
  400. data/ext/v8/upstream/v8/src/spaces.h +2368 -0
  401. data/ext/v8/upstream/{3.1.8 → v8}/src/splay-tree-inl.h +0 -0
  402. data/ext/v8/upstream/{3.1.8 → v8}/src/splay-tree.h +0 -0
  403. data/ext/v8/upstream/v8/src/string-search.cc +41 -0
  404. data/ext/v8/upstream/v8/src/string-search.h +568 -0
  405. data/ext/v8/upstream/v8/src/string-stream.cc +592 -0
  406. data/ext/v8/upstream/{3.1.8 → v8}/src/string-stream.h +0 -0
  407. data/ext/v8/upstream/v8/src/string.js +915 -0
  408. data/ext/v8/upstream/{3.1.8 → v8}/src/strtod.cc +0 -0
  409. data/ext/v8/upstream/{3.1.8 → v8}/src/strtod.h +0 -0
  410. data/ext/v8/upstream/v8/src/stub-cache.cc +1940 -0
  411. data/ext/v8/upstream/v8/src/stub-cache.h +866 -0
  412. data/ext/v8/upstream/{3.1.8 → v8}/src/third_party/valgrind/valgrind.h +0 -0
  413. data/ext/v8/upstream/v8/src/token.cc +63 -0
  414. data/ext/v8/upstream/v8/src/token.h +288 -0
  415. data/ext/v8/upstream/v8/src/top.cc +983 -0
  416. data/ext/v8/upstream/v8/src/type-info.cc +472 -0
  417. data/ext/v8/upstream/v8/src/type-info.h +290 -0
  418. data/ext/v8/upstream/{3.1.8 → v8}/src/unbound-queue-inl.h +0 -0
  419. data/ext/v8/upstream/{3.1.8 → v8}/src/unbound-queue.h +0 -0
  420. data/ext/v8/upstream/{3.1.8 → v8}/src/unicode-inl.h +0 -0
  421. data/ext/v8/upstream/v8/src/unicode.cc +1624 -0
  422. data/ext/v8/upstream/v8/src/unicode.h +280 -0
  423. data/ext/v8/upstream/{3.1.8 → v8}/src/uri.js +0 -0
  424. data/ext/v8/upstream/{3.1.8 → v8}/src/utils.cc +0 -0
  425. data/ext/v8/upstream/v8/src/utils.h +796 -0
  426. data/ext/v8/upstream/v8/src/v8-counters.cc +62 -0
  427. data/ext/v8/upstream/v8/src/v8-counters.h +311 -0
  428. data/ext/v8/upstream/v8/src/v8.cc +215 -0
  429. data/ext/v8/upstream/v8/src/v8.h +130 -0
  430. data/ext/v8/upstream/{3.1.8 → v8}/src/v8checks.h +0 -0
  431. data/ext/v8/upstream/{3.1.8 → v8}/src/v8dll-main.cc +0 -0
  432. data/ext/v8/upstream/v8/src/v8globals.h +486 -0
  433. data/ext/v8/upstream/{3.1.8/src/memory.h → v8/src/v8memory.h} +0 -0
  434. data/ext/v8/upstream/v8/src/v8natives.js +1293 -0
  435. data/ext/v8/upstream/{3.1.8 → v8}/src/v8preparserdll-main.cc +0 -0
  436. data/ext/v8/upstream/v8/src/v8threads.cc +453 -0
  437. data/ext/v8/upstream/v8/src/v8threads.h +164 -0
  438. data/ext/v8/upstream/v8/src/v8utils.h +317 -0
  439. data/ext/v8/upstream/{3.1.8 → v8}/src/variables.cc +0 -0
  440. data/ext/v8/upstream/v8/src/variables.h +212 -0
  441. data/ext/v8/upstream/v8/src/version.cc +116 -0
  442. data/ext/v8/upstream/v8/src/version.h +68 -0
  443. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-heavy-inl.h +0 -0
  444. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-heavy.cc +0 -0
  445. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-inl.h +0 -0
  446. data/ext/v8/upstream/v8/src/virtual-frame-light-inl.h +171 -0
  447. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-light.cc +0 -0
  448. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame.cc +0 -0
  449. data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame.h +0 -0
  450. data/ext/v8/upstream/v8/src/vm-state-inl.h +138 -0
  451. data/ext/v8/upstream/v8/src/vm-state.h +70 -0
  452. data/ext/v8/upstream/v8/src/win32-headers.h +96 -0
  453. data/ext/v8/upstream/v8/src/x64/assembler-x64-inl.h +456 -0
  454. data/ext/v8/upstream/v8/src/x64/assembler-x64.cc +2954 -0
  455. data/ext/v8/upstream/v8/src/x64/assembler-x64.h +1630 -0
  456. data/ext/v8/upstream/v8/src/x64/builtins-x64.cc +1493 -0
  457. data/ext/v8/upstream/v8/src/x64/code-stubs-x64.cc +5132 -0
  458. data/ext/v8/upstream/v8/src/x64/code-stubs-x64.h +477 -0
  459. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/codegen-x64-inl.h +0 -0
  460. data/ext/v8/upstream/v8/src/x64/codegen-x64.cc +8843 -0
  461. data/ext/v8/upstream/v8/src/x64/codegen-x64.h +753 -0
  462. data/ext/v8/upstream/v8/src/x64/cpu-x64.cc +88 -0
  463. data/ext/v8/upstream/v8/src/x64/debug-x64.cc +318 -0
  464. data/ext/v8/upstream/v8/src/x64/deoptimizer-x64.cc +815 -0
  465. data/ext/v8/upstream/v8/src/x64/disasm-x64.cc +1752 -0
  466. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/frames-x64.cc +0 -0
  467. data/ext/v8/upstream/v8/src/x64/frames-x64.h +130 -0
  468. data/ext/v8/upstream/v8/src/x64/full-codegen-x64.cc +4339 -0
  469. data/ext/v8/upstream/v8/src/x64/ic-x64.cc +1752 -0
  470. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/jump-target-x64.cc +0 -0
  471. data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.cc +3970 -0
  472. data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.h +318 -0
  473. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/lithium-gap-resolver-x64.cc +0 -0
  474. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/lithium-gap-resolver-x64.h +0 -0
  475. data/ext/v8/upstream/v8/src/x64/lithium-x64.cc +2115 -0
  476. data/ext/v8/upstream/v8/src/x64/lithium-x64.h +2161 -0
  477. data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.cc +2911 -0
  478. data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.h +1984 -0
  479. data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.cc +1398 -0
  480. data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.h +282 -0
  481. data/ext/v8/upstream/v8/src/x64/register-allocator-x64-inl.h +87 -0
  482. data/ext/v8/upstream/v8/src/x64/register-allocator-x64.cc +95 -0
  483. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/register-allocator-x64.h +0 -0
  484. data/ext/v8/upstream/{3.1.8 → v8}/src/x64/simulator-x64.cc +0 -0
  485. data/ext/v8/upstream/v8/src/x64/simulator-x64.h +71 -0
  486. data/ext/v8/upstream/v8/src/x64/stub-cache-x64.cc +3460 -0
  487. data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.cc +1296 -0
  488. data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.h +597 -0
  489. data/ext/v8/upstream/v8/src/zone-inl.h +129 -0
  490. data/ext/v8/upstream/v8/src/zone.cc +196 -0
  491. data/ext/v8/upstream/v8/src/zone.h +236 -0
  492. data/ext/v8/upstream/{3.1.8 → v8}/tools/codemap.js +0 -0
  493. data/ext/v8/upstream/{3.1.8 → v8}/tools/consarray.js +0 -0
  494. data/ext/v8/upstream/{3.1.8 → v8}/tools/csvparser.js +0 -0
  495. data/ext/v8/upstream/{3.1.8 → v8}/tools/disasm.py +0 -0
  496. data/ext/v8/upstream/v8/tools/freebsd-tick-processor +10 -0
  497. data/ext/v8/upstream/{3.1.8 → v8}/tools/gc-nvp-trace-processor.py +0 -0
  498. data/ext/v8/upstream/{3.1.8 → v8}/tools/generate-ten-powers.scm +0 -0
  499. data/ext/v8/upstream/{3.1.8 → v8}/tools/grokdump.py +0 -0
  500. data/ext/v8/upstream/v8/tools/gyp/v8.gyp +844 -0
  501. data/ext/v8/upstream/{3.1.8 → v8}/tools/js2c.py +0 -0
  502. data/ext/v8/upstream/{3.1.8 → v8}/tools/jsmin.py +0 -0
  503. data/ext/v8/upstream/v8/tools/linux-tick-processor +35 -0
  504. data/ext/v8/upstream/{3.1.8 → v8}/tools/ll_prof.py +0 -0
  505. data/ext/v8/upstream/{3.1.8 → v8}/tools/logreader.js +0 -0
  506. data/ext/v8/upstream/{3.1.8 → v8}/tools/mac-nm +0 -0
  507. data/ext/v8/upstream/{3.1.8 → v8}/tools/mac-tick-processor +0 -0
  508. data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/README +0 -0
  509. data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/SConstruct +0 -0
  510. data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/oom_dump.cc +0 -0
  511. data/ext/v8/upstream/{3.1.8 → v8}/tools/presubmit.py +0 -0
  512. data/ext/v8/upstream/{3.1.8 → v8}/tools/process-heap-prof.py +0 -0
  513. data/ext/v8/upstream/{3.1.8 → v8}/tools/profile.js +0 -0
  514. data/ext/v8/upstream/{3.1.8 → v8}/tools/profile_view.js +0 -0
  515. data/ext/v8/upstream/{3.1.8 → v8}/tools/run-valgrind.py +0 -0
  516. data/ext/v8/upstream/{3.1.8 → v8}/tools/splaytree.js +0 -0
  517. data/ext/v8/upstream/{3.1.8 → v8}/tools/stats-viewer.py +0 -0
  518. data/ext/v8/upstream/v8/tools/test.py +1490 -0
  519. data/ext/v8/upstream/{3.1.8 → v8}/tools/tickprocessor-driver.js +0 -0
  520. data/ext/v8/upstream/v8/tools/tickprocessor.js +877 -0
  521. data/ext/v8/upstream/{3.1.8 → v8}/tools/utils.py +0 -0
  522. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/README.txt +0 -0
  523. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/arm.vsprops +0 -0
  524. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/common.vsprops +0 -0
  525. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8.vcproj +0 -0
  526. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8_arm.vcproj +0 -0
  527. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8_x64.vcproj +0 -0
  528. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8js2c.cmd +0 -0
  529. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/debug.vsprops +0 -0
  530. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/ia32.vsprops +0 -0
  531. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/js2c.cmd +0 -0
  532. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/release.vsprops +0 -0
  533. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8.sln +0 -0
  534. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8.vcproj +0 -0
  535. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_arm.sln +0 -0
  536. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_arm.vcproj +0 -0
  537. data/ext/v8/upstream/v8/tools/visual_studio/v8_base.vcproj +1308 -0
  538. data/ext/v8/upstream/v8/tools/visual_studio/v8_base_arm.vcproj +1238 -0
  539. data/ext/v8/upstream/v8/tools/visual_studio/v8_base_x64.vcproj +1300 -0
  540. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest.vcproj +0 -0
  541. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  542. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  543. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  544. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  545. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  546. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  547. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  548. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
  549. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
  550. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
  551. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  552. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  553. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  554. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  555. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_x64.sln +0 -0
  556. data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_x64.vcproj +0 -0
  557. data/ext/v8/upstream/v8/tools/visual_studio/x64.vsprops +18 -0
  558. data/ext/v8/upstream/{3.1.8 → v8}/tools/windows-tick-processor.bat +0 -0
  559. data/ext/v8/v8_callbacks.cpp +52 -92
  560. data/ext/v8/v8_date.cpp +2 -3
  561. data/ext/v8/v8_object.cpp +4 -0
  562. data/ext/v8/v8_template.cpp +2 -2
  563. data/ext/v8/v8_try_catch.cpp +8 -38
  564. data/lib/v8/version.rb +1 -1
  565. data/spec/ext/ext_spec_helper.rb +2 -20
  566. data/spec/ext/object_spec.rb +0 -12
  567. data/spec/ext/try_catch_spec.rb +29 -1
  568. data/spec/spec_helper.rb +1 -0
  569. data/spec/v8/portal/proxies_spec.rb +1 -84
  570. data/specmem/handle_memspec.rb +41 -0
  571. data/specmem/object_memspec.rb +16 -0
  572. data/specmem/proxies_memspec.rb +86 -0
  573. data/specmem/spec_helper.rb +24 -0
  574. data/therubyracer.gemspec +7 -2
  575. metadata +564 -541
  576. data/ext/v8/upstream/3.1.8/.gitignore +0 -31
  577. data/ext/v8/upstream/3.1.8/AUTHORS +0 -40
  578. data/ext/v8/upstream/3.1.8/ChangeLog +0 -2566
  579. data/ext/v8/upstream/3.1.8/SConstruct +0 -1192
  580. data/ext/v8/upstream/3.1.8/include/v8-debug.h +0 -384
  581. data/ext/v8/upstream/3.1.8/include/v8-preparser.h +0 -116
  582. data/ext/v8/upstream/3.1.8/include/v8-profiler.h +0 -426
  583. data/ext/v8/upstream/3.1.8/include/v8-testing.h +0 -99
  584. data/ext/v8/upstream/3.1.8/include/v8.h +0 -3846
  585. data/ext/v8/upstream/3.1.8/preparser/preparser-process.cc +0 -206
  586. data/ext/v8/upstream/3.1.8/src/SConscript +0 -356
  587. data/ext/v8/upstream/3.1.8/src/accessors.cc +0 -907
  588. data/ext/v8/upstream/3.1.8/src/allocation.cc +0 -204
  589. data/ext/v8/upstream/3.1.8/src/allocation.h +0 -176
  590. data/ext/v8/upstream/3.1.8/src/api.cc +0 -5191
  591. data/ext/v8/upstream/3.1.8/src/api.h +0 -508
  592. data/ext/v8/upstream/3.1.8/src/apiutils.h +0 -80
  593. data/ext/v8/upstream/3.1.8/src/arguments.h +0 -105
  594. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm-inl.h +0 -352
  595. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.cc +0 -2756
  596. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.h +0 -1294
  597. data/ext/v8/upstream/3.1.8/src/arm/builtins-arm.cc +0 -1628
  598. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.cc +0 -6783
  599. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.h +0 -657
  600. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.cc +0 -7403
  601. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.h +0 -595
  602. data/ext/v8/upstream/3.1.8/src/arm/constants-arm.h +0 -769
  603. data/ext/v8/upstream/3.1.8/src/arm/cpu-arm.cc +0 -147
  604. data/ext/v8/upstream/3.1.8/src/arm/debug-arm.cc +0 -315
  605. data/ext/v8/upstream/3.1.8/src/arm/deoptimizer-arm.cc +0 -700
  606. data/ext/v8/upstream/3.1.8/src/arm/disasm-arm.cc +0 -1439
  607. data/ext/v8/upstream/3.1.8/src/arm/frames-arm.h +0 -168
  608. data/ext/v8/upstream/3.1.8/src/arm/full-codegen-arm.cc +0 -4230
  609. data/ext/v8/upstream/3.1.8/src/arm/ic-arm.cc +0 -1799
  610. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.cc +0 -2041
  611. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.h +0 -2046
  612. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.cc +0 -3822
  613. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.h +0 -312
  614. data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.cc +0 -303
  615. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.cc +0 -2701
  616. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.h +0 -1015
  617. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.cc +0 -1280
  618. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.h +0 -252
  619. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.cc +0 -3165
  620. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.h +0 -402
  621. data/ext/v8/upstream/3.1.8/src/arm/stub-cache-arm.cc +0 -4077
  622. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.cc +0 -843
  623. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.h +0 -520
  624. data/ext/v8/upstream/3.1.8/src/array.js +0 -1231
  625. data/ext/v8/upstream/3.1.8/src/assembler.cc +0 -973
  626. data/ext/v8/upstream/3.1.8/src/assembler.h +0 -787
  627. data/ext/v8/upstream/3.1.8/src/ast-inl.h +0 -107
  628. data/ext/v8/upstream/3.1.8/src/ast.cc +0 -1067
  629. data/ext/v8/upstream/3.1.8/src/ast.h +0 -2177
  630. data/ext/v8/upstream/3.1.8/src/atomicops.h +0 -165
  631. data/ext/v8/upstream/3.1.8/src/bootstrapper.cc +0 -1888
  632. data/ext/v8/upstream/3.1.8/src/bootstrapper.h +0 -118
  633. data/ext/v8/upstream/3.1.8/src/builtins.cc +0 -1586
  634. data/ext/v8/upstream/3.1.8/src/builtins.h +0 -339
  635. data/ext/v8/upstream/3.1.8/src/checks.cc +0 -110
  636. data/ext/v8/upstream/3.1.8/src/checks.h +0 -292
  637. data/ext/v8/upstream/3.1.8/src/code-stubs.cc +0 -230
  638. data/ext/v8/upstream/3.1.8/src/code-stubs.h +0 -950
  639. data/ext/v8/upstream/3.1.8/src/codegen-inl.h +0 -64
  640. data/ext/v8/upstream/3.1.8/src/codegen.cc +0 -495
  641. data/ext/v8/upstream/3.1.8/src/codegen.h +0 -245
  642. data/ext/v8/upstream/3.1.8/src/compilation-cache.cc +0 -654
  643. data/ext/v8/upstream/3.1.8/src/compilation-cache.h +0 -112
  644. data/ext/v8/upstream/3.1.8/src/compiler.cc +0 -806
  645. data/ext/v8/upstream/3.1.8/src/compiler.h +0 -290
  646. data/ext/v8/upstream/3.1.8/src/contexts.cc +0 -320
  647. data/ext/v8/upstream/3.1.8/src/contexts.h +0 -376
  648. data/ext/v8/upstream/3.1.8/src/conversions.cc +0 -1069
  649. data/ext/v8/upstream/3.1.8/src/counters.cc +0 -78
  650. data/ext/v8/upstream/3.1.8/src/counters.h +0 -242
  651. data/ext/v8/upstream/3.1.8/src/cpu-profiler-inl.h +0 -100
  652. data/ext/v8/upstream/3.1.8/src/cpu-profiler.cc +0 -554
  653. data/ext/v8/upstream/3.1.8/src/cpu-profiler.h +0 -291
  654. data/ext/v8/upstream/3.1.8/src/cpu.h +0 -65
  655. data/ext/v8/upstream/3.1.8/src/d8-debug.cc +0 -367
  656. data/ext/v8/upstream/3.1.8/src/d8-debug.h +0 -157
  657. data/ext/v8/upstream/3.1.8/src/d8-posix.cc +0 -693
  658. data/ext/v8/upstream/3.1.8/src/d8.cc +0 -792
  659. data/ext/v8/upstream/3.1.8/src/d8.gyp +0 -85
  660. data/ext/v8/upstream/3.1.8/src/data-flow.h +0 -379
  661. data/ext/v8/upstream/3.1.8/src/dateparser.h +0 -263
  662. data/ext/v8/upstream/3.1.8/src/debug-agent.cc +0 -446
  663. data/ext/v8/upstream/3.1.8/src/debug-agent.h +0 -131
  664. data/ext/v8/upstream/3.1.8/src/debug.cc +0 -3085
  665. data/ext/v8/upstream/3.1.8/src/debug.h +0 -1025
  666. data/ext/v8/upstream/3.1.8/src/deoptimizer.cc +0 -1185
  667. data/ext/v8/upstream/3.1.8/src/deoptimizer.h +0 -529
  668. data/ext/v8/upstream/3.1.8/src/disasm.h +0 -77
  669. data/ext/v8/upstream/3.1.8/src/disassembler.cc +0 -338
  670. data/ext/v8/upstream/3.1.8/src/execution.cc +0 -735
  671. data/ext/v8/upstream/3.1.8/src/execution.h +0 -322
  672. data/ext/v8/upstream/3.1.8/src/extensions/experimental/experimental.gyp +0 -53
  673. data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.cc +0 -264
  674. data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.cc +0 -141
  675. data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.cc +0 -58
  676. data/ext/v8/upstream/3.1.8/src/factory.cc +0 -1087
  677. data/ext/v8/upstream/3.1.8/src/factory.h +0 -432
  678. data/ext/v8/upstream/3.1.8/src/flag-definitions.h +0 -552
  679. data/ext/v8/upstream/3.1.8/src/frame-element.cc +0 -42
  680. data/ext/v8/upstream/3.1.8/src/frame-element.h +0 -277
  681. data/ext/v8/upstream/3.1.8/src/frames-inl.h +0 -210
  682. data/ext/v8/upstream/3.1.8/src/frames.cc +0 -1232
  683. data/ext/v8/upstream/3.1.8/src/frames.h +0 -826
  684. data/ext/v8/upstream/3.1.8/src/full-codegen.cc +0 -1382
  685. data/ext/v8/upstream/3.1.8/src/full-codegen.h +0 -751
  686. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.cc +0 -90
  687. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.h +0 -111
  688. data/ext/v8/upstream/3.1.8/src/gdb-jit.cc +0 -1547
  689. data/ext/v8/upstream/3.1.8/src/global-handles.cc +0 -534
  690. data/ext/v8/upstream/3.1.8/src/global-handles.h +0 -181
  691. data/ext/v8/upstream/3.1.8/src/globals.h +0 -325
  692. data/ext/v8/upstream/3.1.8/src/handles-inl.h +0 -80
  693. data/ext/v8/upstream/3.1.8/src/handles.cc +0 -910
  694. data/ext/v8/upstream/3.1.8/src/handles.h +0 -424
  695. data/ext/v8/upstream/3.1.8/src/hashmap.h +0 -121
  696. data/ext/v8/upstream/3.1.8/src/heap-inl.h +0 -587
  697. data/ext/v8/upstream/3.1.8/src/heap-profiler.cc +0 -1128
  698. data/ext/v8/upstream/3.1.8/src/heap-profiler.h +0 -381
  699. data/ext/v8/upstream/3.1.8/src/heap.cc +0 -5610
  700. data/ext/v8/upstream/3.1.8/src/heap.h +0 -2218
  701. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.cc +0 -1490
  702. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.h +0 -3493
  703. data/ext/v8/upstream/3.1.8/src/hydrogen.cc +0 -6056
  704. data/ext/v8/upstream/3.1.8/src/hydrogen.h +0 -1091
  705. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32-inl.h +0 -429
  706. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.cc +0 -2800
  707. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.h +0 -1093
  708. data/ext/v8/upstream/3.1.8/src/ia32/builtins-ia32.cc +0 -1590
  709. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.cc +0 -6624
  710. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.h +0 -536
  711. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.cc +0 -10354
  712. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.h +0 -798
  713. data/ext/v8/upstream/3.1.8/src/ia32/cpu-ia32.cc +0 -87
  714. data/ext/v8/upstream/3.1.8/src/ia32/debug-ia32.cc +0 -309
  715. data/ext/v8/upstream/3.1.8/src/ia32/deoptimizer-ia32.cc +0 -664
  716. data/ext/v8/upstream/3.1.8/src/ia32/disasm-ia32.cc +0 -1597
  717. data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.h +0 -140
  718. data/ext/v8/upstream/3.1.8/src/ia32/full-codegen-ia32.cc +0 -4278
  719. data/ext/v8/upstream/3.1.8/src/ia32/ic-ia32.cc +0 -1786
  720. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.cc +0 -3880
  721. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.h +0 -309
  722. data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.cc +0 -460
  723. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.cc +0 -2095
  724. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.h +0 -2127
  725. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.cc +0 -2031
  726. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.h +0 -798
  727. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.cc +0 -1253
  728. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.h +0 -215
  729. data/ext/v8/upstream/3.1.8/src/ia32/register-allocator-ia32.cc +0 -157
  730. data/ext/v8/upstream/3.1.8/src/ia32/simulator-ia32.h +0 -72
  731. data/ext/v8/upstream/3.1.8/src/ia32/stub-cache-ia32.cc +0 -3732
  732. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.cc +0 -1360
  733. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.h +0 -646
  734. data/ext/v8/upstream/3.1.8/src/ic-inl.h +0 -129
  735. data/ext/v8/upstream/3.1.8/src/ic.cc +0 -2333
  736. data/ext/v8/upstream/3.1.8/src/ic.h +0 -639
  737. data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.cc +0 -655
  738. data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.h +0 -48
  739. data/ext/v8/upstream/3.1.8/src/json.js +0 -342
  740. data/ext/v8/upstream/3.1.8/src/jsregexp.cc +0 -5340
  741. data/ext/v8/upstream/3.1.8/src/jsregexp.h +0 -1484
  742. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.cc +0 -430
  743. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.h +0 -244
  744. data/ext/v8/upstream/3.1.8/src/jump-target-inl.h +0 -48
  745. data/ext/v8/upstream/3.1.8/src/jump-target-light.cc +0 -111
  746. data/ext/v8/upstream/3.1.8/src/lithium-allocator-inl.h +0 -140
  747. data/ext/v8/upstream/3.1.8/src/lithium-allocator.cc +0 -2093
  748. data/ext/v8/upstream/3.1.8/src/lithium-allocator.h +0 -644
  749. data/ext/v8/upstream/3.1.8/src/lithium.cc +0 -168
  750. data/ext/v8/upstream/3.1.8/src/liveedit.cc +0 -1650
  751. data/ext/v8/upstream/3.1.8/src/liveedit.h +0 -174
  752. data/ext/v8/upstream/3.1.8/src/liveobjectlist.cc +0 -2527
  753. data/ext/v8/upstream/3.1.8/src/liveobjectlist.h +0 -322
  754. data/ext/v8/upstream/3.1.8/src/log-utils.cc +0 -336
  755. data/ext/v8/upstream/3.1.8/src/log-utils.h +0 -232
  756. data/ext/v8/upstream/3.1.8/src/log.cc +0 -1608
  757. data/ext/v8/upstream/3.1.8/src/log.h +0 -379
  758. data/ext/v8/upstream/3.1.8/src/mark-compact.cc +0 -2957
  759. data/ext/v8/upstream/3.1.8/src/mark-compact.h +0 -433
  760. data/ext/v8/upstream/3.1.8/src/messages.cc +0 -164
  761. data/ext/v8/upstream/3.1.8/src/messages.js +0 -1071
  762. data/ext/v8/upstream/3.1.8/src/mips/assembler-mips-inl.h +0 -215
  763. data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.cc +0 -1219
  764. data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.h +0 -667
  765. data/ext/v8/upstream/3.1.8/src/mips/builtins-mips.cc +0 -205
  766. data/ext/v8/upstream/3.1.8/src/mips/codegen-mips-inl.h +0 -70
  767. data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.cc +0 -1437
  768. data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.h +0 -431
  769. data/ext/v8/upstream/3.1.8/src/mips/constants-mips.cc +0 -328
  770. data/ext/v8/upstream/3.1.8/src/mips/constants-mips.h +0 -525
  771. data/ext/v8/upstream/3.1.8/src/mips/cpu-mips.cc +0 -73
  772. data/ext/v8/upstream/3.1.8/src/mips/debug-mips.cc +0 -127
  773. data/ext/v8/upstream/3.1.8/src/mips/disasm-mips.cc +0 -787
  774. data/ext/v8/upstream/3.1.8/src/mips/fast-codegen-mips.cc +0 -77
  775. data/ext/v8/upstream/3.1.8/src/mips/frames-mips.cc +0 -96
  776. data/ext/v8/upstream/3.1.8/src/mips/frames-mips.h +0 -164
  777. data/ext/v8/upstream/3.1.8/src/mips/full-codegen-mips.cc +0 -277
  778. data/ext/v8/upstream/3.1.8/src/mips/ic-mips.cc +0 -208
  779. data/ext/v8/upstream/3.1.8/src/mips/jump-target-mips.cc +0 -175
  780. data/ext/v8/upstream/3.1.8/src/mips/macro-assembler-mips.cc +0 -1326
  781. data/ext/v8/upstream/3.1.8/src/mips/macro-assembler-mips.h +0 -461
  782. data/ext/v8/upstream/3.1.8/src/mips/register-allocator-mips-inl.h +0 -137
  783. data/ext/v8/upstream/3.1.8/src/mips/register-allocator-mips.h +0 -46
  784. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.cc +0 -1650
  785. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.h +0 -311
  786. data/ext/v8/upstream/3.1.8/src/mips/stub-cache-mips.cc +0 -418
  787. data/ext/v8/upstream/3.1.8/src/mips/virtual-frame-mips.cc +0 -319
  788. data/ext/v8/upstream/3.1.8/src/mips/virtual-frame-mips.h +0 -548
  789. data/ext/v8/upstream/3.1.8/src/mirror-debugger.js +0 -2380
  790. data/ext/v8/upstream/3.1.8/src/mksnapshot.cc +0 -256
  791. data/ext/v8/upstream/3.1.8/src/objects-debug.cc +0 -722
  792. data/ext/v8/upstream/3.1.8/src/objects-inl.h +0 -3946
  793. data/ext/v8/upstream/3.1.8/src/objects-printer.cc +0 -801
  794. data/ext/v8/upstream/3.1.8/src/objects-visiting.cc +0 -142
  795. data/ext/v8/upstream/3.1.8/src/objects-visiting.h +0 -401
  796. data/ext/v8/upstream/3.1.8/src/objects.cc +0 -10044
  797. data/ext/v8/upstream/3.1.8/src/objects.h +0 -6571
  798. data/ext/v8/upstream/3.1.8/src/parser.cc +0 -5165
  799. data/ext/v8/upstream/3.1.8/src/parser.h +0 -802
  800. data/ext/v8/upstream/3.1.8/src/platform-cygwin.cc +0 -745
  801. data/ext/v8/upstream/3.1.8/src/platform-freebsd.cc +0 -702
  802. data/ext/v8/upstream/3.1.8/src/platform-linux.cc +0 -981
  803. data/ext/v8/upstream/3.1.8/src/platform-macos.cc +0 -732
  804. data/ext/v8/upstream/3.1.8/src/platform-nullos.cc +0 -498
  805. data/ext/v8/upstream/3.1.8/src/platform-openbsd.cc +0 -657
  806. data/ext/v8/upstream/3.1.8/src/platform-posix.cc +0 -399
  807. data/ext/v8/upstream/3.1.8/src/platform-solaris.cc +0 -714
  808. data/ext/v8/upstream/3.1.8/src/platform-win32.cc +0 -1974
  809. data/ext/v8/upstream/3.1.8/src/platform.h +0 -636
  810. data/ext/v8/upstream/3.1.8/src/preparse-data.cc +0 -183
  811. data/ext/v8/upstream/3.1.8/src/preparser-api.cc +0 -213
  812. data/ext/v8/upstream/3.1.8/src/preparser.cc +0 -1205
  813. data/ext/v8/upstream/3.1.8/src/prettyprinter.cc +0 -1539
  814. data/ext/v8/upstream/3.1.8/src/prettyprinter.h +0 -223
  815. data/ext/v8/upstream/3.1.8/src/profile-generator.cc +0 -2899
  816. data/ext/v8/upstream/3.1.8/src/profile-generator.h +0 -1151
  817. data/ext/v8/upstream/3.1.8/src/property.cc +0 -96
  818. data/ext/v8/upstream/3.1.8/src/property.h +0 -337
  819. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.cc +0 -470
  820. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.cc +0 -257
  821. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.h +0 -231
  822. data/ext/v8/upstream/3.1.8/src/regexp-stack.cc +0 -103
  823. data/ext/v8/upstream/3.1.8/src/regexp-stack.h +0 -123
  824. data/ext/v8/upstream/3.1.8/src/regexp.js +0 -483
  825. data/ext/v8/upstream/3.1.8/src/register-allocator-inl.h +0 -141
  826. data/ext/v8/upstream/3.1.8/src/register-allocator.cc +0 -104
  827. data/ext/v8/upstream/3.1.8/src/register-allocator.h +0 -320
  828. data/ext/v8/upstream/3.1.8/src/rewriter.cc +0 -1023
  829. data/ext/v8/upstream/3.1.8/src/runtime-profiler.cc +0 -443
  830. data/ext/v8/upstream/3.1.8/src/runtime-profiler.h +0 -77
  831. data/ext/v8/upstream/3.1.8/src/runtime.cc +0 -11592
  832. data/ext/v8/upstream/3.1.8/src/runtime.h +0 -582
  833. data/ext/v8/upstream/3.1.8/src/safepoint-table.cc +0 -253
  834. data/ext/v8/upstream/3.1.8/src/safepoint-table.h +0 -263
  835. data/ext/v8/upstream/3.1.8/src/scanner-base.cc +0 -971
  836. data/ext/v8/upstream/3.1.8/src/scanner-base.h +0 -653
  837. data/ext/v8/upstream/3.1.8/src/scanner.cc +0 -586
  838. data/ext/v8/upstream/3.1.8/src/scanner.h +0 -194
  839. data/ext/v8/upstream/3.1.8/src/scopeinfo.cc +0 -636
  840. data/ext/v8/upstream/3.1.8/src/scopeinfo.h +0 -238
  841. data/ext/v8/upstream/3.1.8/src/scopes.cc +0 -1063
  842. data/ext/v8/upstream/3.1.8/src/scopes.h +0 -494
  843. data/ext/v8/upstream/3.1.8/src/serialize.cc +0 -1535
  844. data/ext/v8/upstream/3.1.8/src/serialize.h +0 -584
  845. data/ext/v8/upstream/3.1.8/src/snapshot-common.cc +0 -82
  846. data/ext/v8/upstream/3.1.8/src/snapshot.h +0 -71
  847. data/ext/v8/upstream/3.1.8/src/spaces-inl.h +0 -524
  848. data/ext/v8/upstream/3.1.8/src/spaces.cc +0 -3254
  849. data/ext/v8/upstream/3.1.8/src/spaces.h +0 -2362
  850. data/ext/v8/upstream/3.1.8/src/string-search.cc +0 -40
  851. data/ext/v8/upstream/3.1.8/src/string-search.h +0 -567
  852. data/ext/v8/upstream/3.1.8/src/string-stream.cc +0 -584
  853. data/ext/v8/upstream/3.1.8/src/string.js +0 -915
  854. data/ext/v8/upstream/3.1.8/src/stub-cache.cc +0 -1878
  855. data/ext/v8/upstream/3.1.8/src/stub-cache.h +0 -849
  856. data/ext/v8/upstream/3.1.8/src/token.cc +0 -63
  857. data/ext/v8/upstream/3.1.8/src/token.h +0 -288
  858. data/ext/v8/upstream/3.1.8/src/top.cc +0 -1152
  859. data/ext/v8/upstream/3.1.8/src/top.h +0 -608
  860. data/ext/v8/upstream/3.1.8/src/type-info.cc +0 -406
  861. data/ext/v8/upstream/3.1.8/src/type-info.h +0 -283
  862. data/ext/v8/upstream/3.1.8/src/unicode.cc +0 -1624
  863. data/ext/v8/upstream/3.1.8/src/unicode.h +0 -280
  864. data/ext/v8/upstream/3.1.8/src/utils.h +0 -793
  865. data/ext/v8/upstream/3.1.8/src/v8-counters.cc +0 -55
  866. data/ext/v8/upstream/3.1.8/src/v8-counters.h +0 -290
  867. data/ext/v8/upstream/3.1.8/src/v8.cc +0 -270
  868. data/ext/v8/upstream/3.1.8/src/v8.h +0 -127
  869. data/ext/v8/upstream/3.1.8/src/v8globals.h +0 -480
  870. data/ext/v8/upstream/3.1.8/src/v8natives.js +0 -1252
  871. data/ext/v8/upstream/3.1.8/src/v8threads.cc +0 -440
  872. data/ext/v8/upstream/3.1.8/src/v8threads.h +0 -157
  873. data/ext/v8/upstream/3.1.8/src/v8utils.h +0 -354
  874. data/ext/v8/upstream/3.1.8/src/variables.h +0 -212
  875. data/ext/v8/upstream/3.1.8/src/version.cc +0 -95
  876. data/ext/v8/upstream/3.1.8/src/version.h +0 -64
  877. data/ext/v8/upstream/3.1.8/src/virtual-frame-light-inl.h +0 -170
  878. data/ext/v8/upstream/3.1.8/src/vm-state-inl.h +0 -134
  879. data/ext/v8/upstream/3.1.8/src/vm-state.h +0 -68
  880. data/ext/v8/upstream/3.1.8/src/win32-headers.h +0 -95
  881. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64-inl.h +0 -455
  882. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.cc +0 -3162
  883. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.h +0 -1584
  884. data/ext/v8/upstream/3.1.8/src/x64/builtins-x64.cc +0 -1492
  885. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.cc +0 -5150
  886. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.h +0 -519
  887. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.cc +0 -8835
  888. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.h +0 -750
  889. data/ext/v8/upstream/3.1.8/src/x64/cpu-x64.cc +0 -86
  890. data/ext/v8/upstream/3.1.8/src/x64/debug-x64.cc +0 -316
  891. data/ext/v8/upstream/3.1.8/src/x64/deoptimizer-x64.cc +0 -781
  892. data/ext/v8/upstream/3.1.8/src/x64/disasm-x64.cc +0 -1737
  893. data/ext/v8/upstream/3.1.8/src/x64/frames-x64.h +0 -130
  894. data/ext/v8/upstream/3.1.8/src/x64/full-codegen-x64.cc +0 -3984
  895. data/ext/v8/upstream/3.1.8/src/x64/ic-x64.cc +0 -1761
  896. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.cc +0 -3639
  897. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.h +0 -305
  898. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.cc +0 -2044
  899. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.h +0 -2052
  900. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.cc +0 -2660
  901. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.h +0 -1852
  902. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.cc +0 -1382
  903. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.h +0 -278
  904. data/ext/v8/upstream/3.1.8/src/x64/register-allocator-x64-inl.h +0 -87
  905. data/ext/v8/upstream/3.1.8/src/x64/register-allocator-x64.cc +0 -91
  906. data/ext/v8/upstream/3.1.8/src/x64/simulator-x64.h +0 -71
  907. data/ext/v8/upstream/3.1.8/src/x64/stub-cache-x64.cc +0 -3509
  908. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.cc +0 -1292
  909. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.h +0 -593
  910. data/ext/v8/upstream/3.1.8/src/zone-inl.h +0 -83
  911. data/ext/v8/upstream/3.1.8/src/zone.cc +0 -195
  912. data/ext/v8/upstream/3.1.8/src/zone.h +0 -233
  913. data/ext/v8/upstream/3.1.8/tools/gyp/v8.gyp +0 -869
  914. data/ext/v8/upstream/3.1.8/tools/linux-tick-processor +0 -33
  915. data/ext/v8/upstream/3.1.8/tools/tickprocessor.js +0 -863
  916. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base.vcproj +0 -1296
  917. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_arm.vcproj +0 -1234
  918. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_x64.vcproj +0 -1296
  919. data/ext/v8/upstream/3.1.8/tools/visual_studio/x64.vsprops +0 -17
  920. data/spec/ext/mem_spec.rb +0 -42
@@ -1,208 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
-
29
-
30
- #include "v8.h"
31
-
32
- #if defined(V8_TARGET_ARCH_MIPS)
33
-
34
- #include "codegen-inl.h"
35
- #include "ic-inl.h"
36
- #include "runtime.h"
37
- #include "stub-cache.h"
38
-
39
- namespace v8 {
40
- namespace internal {
41
-
42
-
43
- // ----------------------------------------------------------------------------
44
- // Static IC stub generators.
45
- //
46
-
47
- #define __ ACCESS_MASM(masm)
48
-
49
-
50
- void LoadIC::GenerateArrayLength(MacroAssembler* masm) {
51
- UNIMPLEMENTED_MIPS();
52
- }
53
-
54
-
55
- void LoadIC::GenerateStringLength(MacroAssembler* masm) {
56
- UNIMPLEMENTED_MIPS();
57
- }
58
-
59
-
60
- void LoadIC::GenerateFunctionPrototype(MacroAssembler* masm) {
61
- UNIMPLEMENTED_MIPS();
62
- }
63
-
64
-
65
- // Defined in ic.cc.
66
- Object* CallIC_Miss(Arguments args);
67
-
68
- void CallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
69
- UNIMPLEMENTED_MIPS();
70
- }
71
-
72
-
73
- void CallIC::GenerateNormal(MacroAssembler* masm, int argc) {
74
- UNIMPLEMENTED_MIPS();
75
- }
76
-
77
- void CallIC::GenerateMiss(MacroAssembler* masm, int argc) {
78
- UNIMPLEMENTED_MIPS();
79
- // Registers:
80
- // a2: name
81
- // ra: return address
82
-
83
- // Get the receiver of the function from the stack.
84
- __ lw(a3, MemOperand(sp, argc*kPointerSize));
85
-
86
- __ EnterInternalFrame();
87
-
88
- // Push the receiver and the name of the function.
89
- __ MultiPush(a2.bit() | a3.bit());
90
-
91
- // Call the entry.
92
- __ li(a0, Operand(2));
93
- __ li(a1, Operand(ExternalReference(IC_Utility(kCallIC_Miss))));
94
-
95
- CEntryStub stub(1);
96
- __ CallStub(&stub);
97
-
98
- // Move result to r1 and leave the internal frame.
99
- __ mov(a1, v0);
100
- __ LeaveInternalFrame();
101
-
102
- // Check if the receiver is a global object of some sort.
103
- Label invoke, global;
104
- __ lw(a2, MemOperand(sp, argc * kPointerSize));
105
- __ andi(t0, a2, kSmiTagMask);
106
- __ Branch(eq, &invoke, t0, Operand(zero_reg));
107
- __ GetObjectType(a2, a3, a3);
108
- __ Branch(eq, &global, a3, Operand(JS_GLOBAL_OBJECT_TYPE));
109
- __ Branch(ne, &invoke, a3, Operand(JS_BUILTINS_OBJECT_TYPE));
110
-
111
- // Patch the receiver on the stack.
112
- __ bind(&global);
113
- __ lw(a2, FieldMemOperand(a2, GlobalObject::kGlobalReceiverOffset));
114
- __ sw(a2, MemOperand(sp, argc * kPointerSize));
115
-
116
- // Invoke the function.
117
- ParameterCount actual(argc);
118
- __ bind(&invoke);
119
- __ InvokeFunction(a1, actual, JUMP_FUNCTION);
120
- }
121
-
122
- // Defined in ic.cc.
123
- Object* LoadIC_Miss(Arguments args);
124
-
125
- void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
126
- UNIMPLEMENTED_MIPS();
127
- }
128
-
129
-
130
- void LoadIC::GenerateNormal(MacroAssembler* masm) {
131
- UNIMPLEMENTED_MIPS();
132
- }
133
-
134
-
135
- void LoadIC::GenerateMiss(MacroAssembler* masm) {
136
- UNIMPLEMENTED_MIPS();
137
- }
138
-
139
-
140
- void LoadIC::ClearInlinedVersion(Address address) {}
141
- bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) {
142
- return false;
143
- }
144
-
145
- void KeyedLoadIC::ClearInlinedVersion(Address address) {}
146
- bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) {
147
- return false;
148
- }
149
-
150
- void KeyedStoreIC::ClearInlinedVersion(Address address) {}
151
- void KeyedStoreIC::RestoreInlinedVersion(Address address) {}
152
- bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) {
153
- return false;
154
- }
155
-
156
-
157
- Object* KeyedLoadIC_Miss(Arguments args);
158
-
159
-
160
- void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
161
- UNIMPLEMENTED_MIPS();
162
- }
163
-
164
-
165
- void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
166
- UNIMPLEMENTED_MIPS();
167
- }
168
-
169
-
170
- void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
171
- UNIMPLEMENTED_MIPS();
172
- }
173
-
174
-
175
- void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) {
176
- UNIMPLEMENTED_MIPS();
177
- }
178
-
179
-
180
- void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
181
- UNIMPLEMENTED_MIPS();
182
- }
183
-
184
-
185
- void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
186
- UNIMPLEMENTED_MIPS();
187
- }
188
-
189
-
190
- void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
191
- UNIMPLEMENTED_MIPS();
192
- }
193
-
194
-
195
- void StoreIC::GenerateMiss(MacroAssembler* masm) {
196
- UNIMPLEMENTED_MIPS();
197
- }
198
-
199
-
200
- void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
201
- UNIMPLEMENTED_MIPS();
202
- }
203
-
204
- #undef __
205
-
206
- } } // namespace v8::internal
207
-
208
- #endif // V8_TARGET_ARCH_MIPS
@@ -1,175 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
-
29
- #include "v8.h"
30
-
31
- #if defined(V8_TARGET_ARCH_MIPS)
32
-
33
- #include "codegen-inl.h"
34
- #include "jump-target-inl.h"
35
- #include "register-allocator-inl.h"
36
- #include "virtual-frame-inl.h"
37
-
38
- namespace v8 {
39
- namespace internal {
40
-
41
- // -------------------------------------------------------------------------
42
- // JumpTarget implementation.
43
-
44
- #define __ ACCESS_MASM(cgen()->masm())
45
-
46
- void JumpTarget::DoJump() {
47
- ASSERT(cgen()->has_valid_frame());
48
- // Live non-frame registers are not allowed at unconditional jumps
49
- // because we have no way of invalidating the corresponding results
50
- // which are still live in the C++ code.
51
- ASSERT(cgen()->HasValidEntryRegisters());
52
-
53
- if (is_bound()) {
54
- // Backward jump. There already a frame expectation at the target.
55
- ASSERT(direction_ == BIDIRECTIONAL);
56
- cgen()->frame()->MergeTo(entry_frame_);
57
- cgen()->DeleteFrame();
58
- } else {
59
- // Use the current frame as the expected one at the target if necessary.
60
- if (entry_frame_ == NULL) {
61
- entry_frame_ = cgen()->frame();
62
- RegisterFile empty;
63
- cgen()->SetFrame(NULL, &empty);
64
- } else {
65
- cgen()->frame()->MergeTo(entry_frame_);
66
- cgen()->DeleteFrame();
67
- }
68
-
69
- // The predicate is_linked() should be made true. Its implementation
70
- // detects the presence of a frame pointer in the reaching_frames_ list.
71
- if (!is_linked()) {
72
- reaching_frames_.Add(NULL);
73
- ASSERT(is_linked());
74
- }
75
- }
76
- __ b(&entry_label_);
77
- __ nop(); // Branch delay slot nop.
78
- }
79
-
80
-
81
- void JumpTarget::DoBranch(Condition cc, Hint ignored) {
82
- UNIMPLEMENTED_MIPS();
83
- }
84
-
85
-
86
- void JumpTarget::Call() {
87
- UNIMPLEMENTED_MIPS();
88
- }
89
-
90
-
91
- void JumpTarget::DoBind() {
92
- ASSERT(!is_bound());
93
-
94
- // Live non-frame registers are not allowed at the start of a basic
95
- // block.
96
- ASSERT(!cgen()->has_valid_frame() || cgen()->HasValidEntryRegisters());
97
-
98
- if (cgen()->has_valid_frame()) {
99
- // If there is a current frame we can use it on the fall through.
100
- if (entry_frame_ == NULL) {
101
- entry_frame_ = new VirtualFrame(cgen()->frame());
102
- } else {
103
- ASSERT(cgen()->frame()->Equals(entry_frame_));
104
- }
105
- } else {
106
- // If there is no current frame we must have an entry frame which we can
107
- // copy.
108
- ASSERT(entry_frame_ != NULL);
109
- RegisterFile empty;
110
- cgen()->SetFrame(new VirtualFrame(entry_frame_), &empty);
111
- }
112
-
113
- // The predicate is_linked() should be made false. Its implementation
114
- // detects the presence (or absence) of frame pointers in the
115
- // reaching_frames_ list. If we inserted a bogus frame to make
116
- // is_linked() true, remove it now.
117
- if (is_linked()) {
118
- reaching_frames_.Clear();
119
- }
120
-
121
- __ bind(&entry_label_);
122
- }
123
-
124
-
125
- void BreakTarget::Jump() {
126
- // On ARM we do not currently emit merge code for jumps, so we need to do
127
- // it explicitly here. The only merging necessary is to drop extra
128
- // statement state from the stack.
129
- ASSERT(cgen()->has_valid_frame());
130
- int count = cgen()->frame()->height() - expected_height_;
131
- cgen()->frame()->Drop(count);
132
- DoJump();
133
- }
134
-
135
-
136
- void BreakTarget::Jump(Result* arg) {
137
- UNIMPLEMENTED_MIPS();
138
- }
139
-
140
-
141
- void BreakTarget::Bind() {
142
- #ifdef DEBUG
143
- // All the forward-reaching frames should have been adjusted at the
144
- // jumps to this target.
145
- for (int i = 0; i < reaching_frames_.length(); i++) {
146
- ASSERT(reaching_frames_[i] == NULL ||
147
- reaching_frames_[i]->height() == expected_height_);
148
- }
149
- #endif
150
- // Drop leftover statement state from the frame before merging, even
151
- // on the fall through. This is so we can bind the return target
152
- // with state on the frame.
153
- if (cgen()->has_valid_frame()) {
154
- int count = cgen()->frame()->height() - expected_height_;
155
- // On ARM we do not currently emit merge code at binding sites, so we need
156
- // to do it explicitly here. The only merging necessary is to drop extra
157
- // statement state from the stack.
158
- cgen()->frame()->Drop(count);
159
- }
160
-
161
- DoBind();
162
- }
163
-
164
-
165
- void BreakTarget::Bind(Result* arg) {
166
- UNIMPLEMENTED_MIPS();
167
- }
168
-
169
-
170
- #undef __
171
-
172
-
173
- } } // namespace v8::internal
174
-
175
- #endif // V8_TARGET_ARCH_MIPS
@@ -1,1326 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
-
29
-
30
- #include "v8.h"
31
-
32
- #if defined(V8_TARGET_ARCH_MIPS)
33
-
34
- #include "bootstrapper.h"
35
- #include "codegen-inl.h"
36
- #include "debug.h"
37
- #include "runtime.h"
38
-
39
- namespace v8 {
40
- namespace internal {
41
-
42
- MacroAssembler::MacroAssembler(void* buffer, int size)
43
- : Assembler(buffer, size),
44
- unresolved_(0),
45
- generating_stub_(false),
46
- allow_stub_calls_(true),
47
- code_object_(Heap::undefined_value()) {
48
- }
49
-
50
-
51
-
52
- void MacroAssembler::Jump(Register target, Condition cond,
53
- Register r1, const Operand& r2) {
54
- Jump(Operand(target), cond, r1, r2);
55
- }
56
-
57
-
58
- void MacroAssembler::Jump(intptr_t target, RelocInfo::Mode rmode,
59
- Condition cond, Register r1, const Operand& r2) {
60
- Jump(Operand(target, rmode), cond, r1, r2);
61
- }
62
-
63
-
64
- void MacroAssembler::Jump(byte* target, RelocInfo::Mode rmode,
65
- Condition cond, Register r1, const Operand& r2) {
66
- ASSERT(!RelocInfo::IsCodeTarget(rmode));
67
- Jump(reinterpret_cast<intptr_t>(target), rmode, cond, r1, r2);
68
- }
69
-
70
-
71
- void MacroAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode,
72
- Condition cond, Register r1, const Operand& r2) {
73
- ASSERT(RelocInfo::IsCodeTarget(rmode));
74
- Jump(reinterpret_cast<intptr_t>(code.location()), rmode, cond);
75
- }
76
-
77
-
78
- void MacroAssembler::Call(Register target,
79
- Condition cond, Register r1, const Operand& r2) {
80
- Call(Operand(target), cond, r1, r2);
81
- }
82
-
83
-
84
- void MacroAssembler::Call(intptr_t target, RelocInfo::Mode rmode,
85
- Condition cond, Register r1, const Operand& r2) {
86
- Call(Operand(target, rmode), cond, r1, r2);
87
- }
88
-
89
-
90
- void MacroAssembler::Call(byte* target, RelocInfo::Mode rmode,
91
- Condition cond, Register r1, const Operand& r2) {
92
- ASSERT(!RelocInfo::IsCodeTarget(rmode));
93
- Call(reinterpret_cast<intptr_t>(target), rmode, cond, r1, r2);
94
- }
95
-
96
-
97
- void MacroAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
98
- Condition cond, Register r1, const Operand& r2) {
99
- ASSERT(RelocInfo::IsCodeTarget(rmode));
100
- Call(reinterpret_cast<intptr_t>(code.location()), rmode, cond, r1, r2);
101
- }
102
-
103
-
104
- void MacroAssembler::Ret(Condition cond, Register r1, const Operand& r2) {
105
- Jump(Operand(ra), cond, r1, r2);
106
- }
107
-
108
-
109
- void MacroAssembler::LoadRoot(Register destination,
110
- Heap::RootListIndex index) {
111
- lw(destination, MemOperand(s6, index << kPointerSizeLog2));
112
- }
113
-
114
- void MacroAssembler::LoadRoot(Register destination,
115
- Heap::RootListIndex index,
116
- Condition cond,
117
- Register src1, const Operand& src2) {
118
- Branch(NegateCondition(cond), 2, src1, src2);
119
- lw(destination, MemOperand(s6, index << kPointerSizeLog2));
120
- }
121
-
122
-
123
- void MacroAssembler::RecordWrite(Register object, Register offset,
124
- Register scratch) {
125
- UNIMPLEMENTED_MIPS();
126
- }
127
-
128
-
129
- // ---------------------------------------------------------------------------
130
- // Instruction macros
131
-
132
- void MacroAssembler::Add(Register rd, Register rs, const Operand& rt) {
133
- if (rt.is_reg()) {
134
- add(rd, rs, rt.rm());
135
- } else {
136
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
137
- addi(rd, rs, rt.imm32_);
138
- } else {
139
- // li handles the relocation.
140
- ASSERT(!rs.is(at));
141
- li(at, rt);
142
- add(rd, rs, at);
143
- }
144
- }
145
- }
146
-
147
-
148
- void MacroAssembler::Addu(Register rd, Register rs, const Operand& rt) {
149
- if (rt.is_reg()) {
150
- addu(rd, rs, rt.rm());
151
- } else {
152
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
153
- addiu(rd, rs, rt.imm32_);
154
- } else {
155
- // li handles the relocation.
156
- ASSERT(!rs.is(at));
157
- li(at, rt);
158
- addu(rd, rs, at);
159
- }
160
- }
161
- }
162
-
163
-
164
- void MacroAssembler::Mul(Register rd, Register rs, const Operand& rt) {
165
- if (rt.is_reg()) {
166
- mul(rd, rs, rt.rm());
167
- } else {
168
- // li handles the relocation.
169
- ASSERT(!rs.is(at));
170
- li(at, rt);
171
- mul(rd, rs, at);
172
- }
173
- }
174
-
175
-
176
- void MacroAssembler::Mult(Register rs, const Operand& rt) {
177
- if (rt.is_reg()) {
178
- mult(rs, rt.rm());
179
- } else {
180
- // li handles the relocation.
181
- ASSERT(!rs.is(at));
182
- li(at, rt);
183
- mult(rs, at);
184
- }
185
- }
186
-
187
-
188
- void MacroAssembler::Multu(Register rs, const Operand& rt) {
189
- if (rt.is_reg()) {
190
- multu(rs, rt.rm());
191
- } else {
192
- // li handles the relocation.
193
- ASSERT(!rs.is(at));
194
- li(at, rt);
195
- multu(rs, at);
196
- }
197
- }
198
-
199
-
200
- void MacroAssembler::Div(Register rs, const Operand& rt) {
201
- if (rt.is_reg()) {
202
- div(rs, rt.rm());
203
- } else {
204
- // li handles the relocation.
205
- ASSERT(!rs.is(at));
206
- li(at, rt);
207
- div(rs, at);
208
- }
209
- }
210
-
211
-
212
- void MacroAssembler::Divu(Register rs, const Operand& rt) {
213
- if (rt.is_reg()) {
214
- divu(rs, rt.rm());
215
- } else {
216
- // li handles the relocation.
217
- ASSERT(!rs.is(at));
218
- li(at, rt);
219
- divu(rs, at);
220
- }
221
- }
222
-
223
-
224
- void MacroAssembler::And(Register rd, Register rs, const Operand& rt) {
225
- if (rt.is_reg()) {
226
- and_(rd, rs, rt.rm());
227
- } else {
228
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
229
- andi(rd, rs, rt.imm32_);
230
- } else {
231
- // li handles the relocation.
232
- ASSERT(!rs.is(at));
233
- li(at, rt);
234
- and_(rd, rs, at);
235
- }
236
- }
237
- }
238
-
239
-
240
- void MacroAssembler::Or(Register rd, Register rs, const Operand& rt) {
241
- if (rt.is_reg()) {
242
- or_(rd, rs, rt.rm());
243
- } else {
244
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
245
- ori(rd, rs, rt.imm32_);
246
- } else {
247
- // li handles the relocation.
248
- ASSERT(!rs.is(at));
249
- li(at, rt);
250
- or_(rd, rs, at);
251
- }
252
- }
253
- }
254
-
255
-
256
- void MacroAssembler::Xor(Register rd, Register rs, const Operand& rt) {
257
- if (rt.is_reg()) {
258
- xor_(rd, rs, rt.rm());
259
- } else {
260
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
261
- xori(rd, rs, rt.imm32_);
262
- } else {
263
- // li handles the relocation.
264
- ASSERT(!rs.is(at));
265
- li(at, rt);
266
- xor_(rd, rs, at);
267
- }
268
- }
269
- }
270
-
271
-
272
- void MacroAssembler::Nor(Register rd, Register rs, const Operand& rt) {
273
- if (rt.is_reg()) {
274
- nor(rd, rs, rt.rm());
275
- } else {
276
- // li handles the relocation.
277
- ASSERT(!rs.is(at));
278
- li(at, rt);
279
- nor(rd, rs, at);
280
- }
281
- }
282
-
283
-
284
- void MacroAssembler::Slt(Register rd, Register rs, const Operand& rt) {
285
- if (rt.is_reg()) {
286
- slt(rd, rs, rt.rm());
287
- } else {
288
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
289
- slti(rd, rs, rt.imm32_);
290
- } else {
291
- // li handles the relocation.
292
- ASSERT(!rs.is(at));
293
- li(at, rt);
294
- slt(rd, rs, at);
295
- }
296
- }
297
- }
298
-
299
-
300
- void MacroAssembler::Sltu(Register rd, Register rs, const Operand& rt) {
301
- if (rt.is_reg()) {
302
- sltu(rd, rs, rt.rm());
303
- } else {
304
- if (is_int16(rt.imm32_) && !MustUseAt(rt.rmode_)) {
305
- sltiu(rd, rs, rt.imm32_);
306
- } else {
307
- // li handles the relocation.
308
- ASSERT(!rs.is(at));
309
- li(at, rt);
310
- sltu(rd, rs, at);
311
- }
312
- }
313
- }
314
-
315
-
316
- //------------Pseudo-instructions-------------
317
-
318
- void MacroAssembler::movn(Register rd, Register rt) {
319
- addiu(at, zero_reg, -1); // Fill at with ones.
320
- xor_(rd, rt, at);
321
- }
322
-
323
-
324
- void MacroAssembler::li(Register rd, Operand j, bool gen2instr) {
325
- ASSERT(!j.is_reg());
326
-
327
- if (!MustUseAt(j.rmode_) && !gen2instr) {
328
- // Normal load of an immediate value which does not need Relocation Info.
329
- if (is_int16(j.imm32_)) {
330
- addiu(rd, zero_reg, j.imm32_);
331
- } else if (!(j.imm32_ & HIMask)) {
332
- ori(rd, zero_reg, j.imm32_);
333
- } else if (!(j.imm32_ & LOMask)) {
334
- lui(rd, (HIMask & j.imm32_) >> 16);
335
- } else {
336
- lui(rd, (HIMask & j.imm32_) >> 16);
337
- ori(rd, rd, (LOMask & j.imm32_));
338
- }
339
- } else if (MustUseAt(j.rmode_) || gen2instr) {
340
- if (MustUseAt(j.rmode_)) {
341
- RecordRelocInfo(j.rmode_, j.imm32_);
342
- }
343
- // We need always the same number of instructions as we may need to patch
344
- // this code to load another value which may need 2 instructions to load.
345
- if (is_int16(j.imm32_)) {
346
- nop();
347
- addiu(rd, zero_reg, j.imm32_);
348
- } else if (!(j.imm32_ & HIMask)) {
349
- nop();
350
- ori(rd, zero_reg, j.imm32_);
351
- } else if (!(j.imm32_ & LOMask)) {
352
- nop();
353
- lui(rd, (HIMask & j.imm32_) >> 16);
354
- } else {
355
- lui(rd, (HIMask & j.imm32_) >> 16);
356
- ori(rd, rd, (LOMask & j.imm32_));
357
- }
358
- }
359
- }
360
-
361
-
362
- // Exception-generating instructions and debugging support
363
- void MacroAssembler::stop(const char* msg) {
364
- // TO_UPGRADE: Just a break for now. Maybe we could upgrade it.
365
- // We use the 0x54321 value to be able to find it easily when reading memory.
366
- break_(0x54321);
367
- }
368
-
369
-
370
- void MacroAssembler::MultiPush(RegList regs) {
371
- int16_t NumSaved = 0;
372
- int16_t NumToPush = NumberOfBitsSet(regs);
373
-
374
- addiu(sp, sp, -4 * NumToPush);
375
- for (int16_t i = kNumRegisters; i > 0; i--) {
376
- if ((regs & (1 << i)) != 0) {
377
- sw(ToRegister(i), MemOperand(sp, 4 * (NumToPush - ++NumSaved)));
378
- }
379
- }
380
- }
381
-
382
-
383
- void MacroAssembler::MultiPushReversed(RegList regs) {
384
- int16_t NumSaved = 0;
385
- int16_t NumToPush = NumberOfBitsSet(regs);
386
-
387
- addiu(sp, sp, -4 * NumToPush);
388
- for (int16_t i = 0; i < kNumRegisters; i++) {
389
- if ((regs & (1 << i)) != 0) {
390
- sw(ToRegister(i), MemOperand(sp, 4 * (NumToPush - ++NumSaved)));
391
- }
392
- }
393
- }
394
-
395
-
396
- void MacroAssembler::MultiPop(RegList regs) {
397
- int16_t NumSaved = 0;
398
-
399
- for (int16_t i = 0; i < kNumRegisters; i++) {
400
- if ((regs & (1 << i)) != 0) {
401
- lw(ToRegister(i), MemOperand(sp, 4 * (NumSaved++)));
402
- }
403
- }
404
- addiu(sp, sp, 4 * NumSaved);
405
- }
406
-
407
-
408
- void MacroAssembler::MultiPopReversed(RegList regs) {
409
- int16_t NumSaved = 0;
410
-
411
- for (int16_t i = kNumRegisters; i > 0; i--) {
412
- if ((regs & (1 << i)) != 0) {
413
- lw(ToRegister(i), MemOperand(sp, 4 * (NumSaved++)));
414
- }
415
- }
416
- addiu(sp, sp, 4 * NumSaved);
417
- }
418
-
419
-
420
- // Emulated condtional branches do not emit a nop in the branch delay slot.
421
-
422
- // Trashes the at register if no scratch register is provided.
423
- void MacroAssembler::Branch(Condition cond, int16_t offset, Register rs,
424
- const Operand& rt, Register scratch) {
425
- Register r2 = no_reg;
426
- if (rt.is_reg()) {
427
- // We don't want any other register but scratch clobbered.
428
- ASSERT(!scratch.is(rs) && !scratch.is(rt.rm_));
429
- r2 = rt.rm_;
430
- } else if (cond != cc_always) {
431
- // We don't want any other register but scratch clobbered.
432
- ASSERT(!scratch.is(rs));
433
- r2 = scratch;
434
- li(r2, rt);
435
- }
436
-
437
- switch (cond) {
438
- case cc_always:
439
- b(offset);
440
- break;
441
- case eq:
442
- beq(rs, r2, offset);
443
- break;
444
- case ne:
445
- bne(rs, r2, offset);
446
- break;
447
-
448
- // Signed comparison
449
- case greater:
450
- slt(scratch, r2, rs);
451
- bne(scratch, zero_reg, offset);
452
- break;
453
- case greater_equal:
454
- slt(scratch, rs, r2);
455
- beq(scratch, zero_reg, offset);
456
- break;
457
- case less:
458
- slt(scratch, rs, r2);
459
- bne(scratch, zero_reg, offset);
460
- break;
461
- case less_equal:
462
- slt(scratch, r2, rs);
463
- beq(scratch, zero_reg, offset);
464
- break;
465
-
466
- // Unsigned comparison.
467
- case Ugreater:
468
- sltu(scratch, r2, rs);
469
- bne(scratch, zero_reg, offset);
470
- break;
471
- case Ugreater_equal:
472
- sltu(scratch, rs, r2);
473
- beq(scratch, zero_reg, offset);
474
- break;
475
- case Uless:
476
- sltu(scratch, rs, r2);
477
- bne(scratch, zero_reg, offset);
478
- break;
479
- case Uless_equal:
480
- sltu(scratch, r2, rs);
481
- beq(scratch, zero_reg, offset);
482
- break;
483
-
484
- default:
485
- UNREACHABLE();
486
- }
487
- // Emit a nop in the branch delay slot.
488
- nop();
489
- }
490
-
491
-
492
- void MacroAssembler::Branch(Condition cond, Label* L, Register rs,
493
- const Operand& rt, Register scratch) {
494
- Register r2 = no_reg;
495
- if (rt.is_reg()) {
496
- r2 = rt.rm_;
497
- } else if (cond != cc_always) {
498
- r2 = scratch;
499
- li(r2, rt);
500
- }
501
-
502
- // We use branch_offset as an argument for the branch instructions to be sure
503
- // it is called just before generating the branch instruction, as needed.
504
-
505
- switch (cond) {
506
- case cc_always:
507
- b(shifted_branch_offset(L, false));
508
- break;
509
- case eq:
510
- beq(rs, r2, shifted_branch_offset(L, false));
511
- break;
512
- case ne:
513
- bne(rs, r2, shifted_branch_offset(L, false));
514
- break;
515
-
516
- // Signed comparison
517
- case greater:
518
- slt(scratch, r2, rs);
519
- bne(scratch, zero_reg, shifted_branch_offset(L, false));
520
- break;
521
- case greater_equal:
522
- slt(scratch, rs, r2);
523
- beq(scratch, zero_reg, shifted_branch_offset(L, false));
524
- break;
525
- case less:
526
- slt(scratch, rs, r2);
527
- bne(scratch, zero_reg, shifted_branch_offset(L, false));
528
- break;
529
- case less_equal:
530
- slt(scratch, r2, rs);
531
- beq(scratch, zero_reg, shifted_branch_offset(L, false));
532
- break;
533
-
534
- // Unsigned comparison.
535
- case Ugreater:
536
- sltu(scratch, r2, rs);
537
- bne(scratch, zero_reg, shifted_branch_offset(L, false));
538
- break;
539
- case Ugreater_equal:
540
- sltu(scratch, rs, r2);
541
- beq(scratch, zero_reg, shifted_branch_offset(L, false));
542
- break;
543
- case Uless:
544
- sltu(scratch, rs, r2);
545
- bne(scratch, zero_reg, shifted_branch_offset(L, false));
546
- break;
547
- case Uless_equal:
548
- sltu(scratch, r2, rs);
549
- beq(scratch, zero_reg, shifted_branch_offset(L, false));
550
- break;
551
-
552
- default:
553
- UNREACHABLE();
554
- }
555
- // Emit a nop in the branch delay slot.
556
- nop();
557
- }
558
-
559
-
560
- // Trashes the at register if no scratch register is provided.
561
- // We need to use a bgezal or bltzal, but they can't be used directly with the
562
- // slt instructions. We could use sub or add instead but we would miss overflow
563
- // cases, so we keep slt and add an intermediate third instruction.
564
- void MacroAssembler::BranchAndLink(Condition cond, int16_t offset, Register rs,
565
- const Operand& rt, Register scratch) {
566
- Register r2 = no_reg;
567
- if (rt.is_reg()) {
568
- r2 = rt.rm_;
569
- } else if (cond != cc_always) {
570
- r2 = scratch;
571
- li(r2, rt);
572
- }
573
-
574
- switch (cond) {
575
- case cc_always:
576
- bal(offset);
577
- break;
578
- case eq:
579
- bne(rs, r2, 2);
580
- nop();
581
- bal(offset);
582
- break;
583
- case ne:
584
- beq(rs, r2, 2);
585
- nop();
586
- bal(offset);
587
- break;
588
-
589
- // Signed comparison
590
- case greater:
591
- slt(scratch, r2, rs);
592
- addiu(scratch, scratch, -1);
593
- bgezal(scratch, offset);
594
- break;
595
- case greater_equal:
596
- slt(scratch, rs, r2);
597
- addiu(scratch, scratch, -1);
598
- bltzal(scratch, offset);
599
- break;
600
- case less:
601
- slt(scratch, rs, r2);
602
- addiu(scratch, scratch, -1);
603
- bgezal(scratch, offset);
604
- break;
605
- case less_equal:
606
- slt(scratch, r2, rs);
607
- addiu(scratch, scratch, -1);
608
- bltzal(scratch, offset);
609
- break;
610
-
611
- // Unsigned comparison.
612
- case Ugreater:
613
- sltu(scratch, r2, rs);
614
- addiu(scratch, scratch, -1);
615
- bgezal(scratch, offset);
616
- break;
617
- case Ugreater_equal:
618
- sltu(scratch, rs, r2);
619
- addiu(scratch, scratch, -1);
620
- bltzal(scratch, offset);
621
- break;
622
- case Uless:
623
- sltu(scratch, rs, r2);
624
- addiu(scratch, scratch, -1);
625
- bgezal(scratch, offset);
626
- break;
627
- case Uless_equal:
628
- sltu(scratch, r2, rs);
629
- addiu(scratch, scratch, -1);
630
- bltzal(scratch, offset);
631
- break;
632
-
633
- default:
634
- UNREACHABLE();
635
- }
636
- // Emit a nop in the branch delay slot.
637
- nop();
638
- }
639
-
640
-
641
- void MacroAssembler::BranchAndLink(Condition cond, Label* L, Register rs,
642
- const Operand& rt, Register scratch) {
643
- Register r2 = no_reg;
644
- if (rt.is_reg()) {
645
- r2 = rt.rm_;
646
- } else if (cond != cc_always) {
647
- r2 = scratch;
648
- li(r2, rt);
649
- }
650
-
651
- switch (cond) {
652
- case cc_always:
653
- bal(shifted_branch_offset(L, false));
654
- break;
655
- case eq:
656
- bne(rs, r2, 2);
657
- nop();
658
- bal(shifted_branch_offset(L, false));
659
- break;
660
- case ne:
661
- beq(rs, r2, 2);
662
- nop();
663
- bal(shifted_branch_offset(L, false));
664
- break;
665
-
666
- // Signed comparison
667
- case greater:
668
- slt(scratch, r2, rs);
669
- addiu(scratch, scratch, -1);
670
- bgezal(scratch, shifted_branch_offset(L, false));
671
- break;
672
- case greater_equal:
673
- slt(scratch, rs, r2);
674
- addiu(scratch, scratch, -1);
675
- bltzal(scratch, shifted_branch_offset(L, false));
676
- break;
677
- case less:
678
- slt(scratch, rs, r2);
679
- addiu(scratch, scratch, -1);
680
- bgezal(scratch, shifted_branch_offset(L, false));
681
- break;
682
- case less_equal:
683
- slt(scratch, r2, rs);
684
- addiu(scratch, scratch, -1);
685
- bltzal(scratch, shifted_branch_offset(L, false));
686
- break;
687
-
688
- // Unsigned comparison.
689
- case Ugreater:
690
- sltu(scratch, r2, rs);
691
- addiu(scratch, scratch, -1);
692
- bgezal(scratch, shifted_branch_offset(L, false));
693
- break;
694
- case Ugreater_equal:
695
- sltu(scratch, rs, r2);
696
- addiu(scratch, scratch, -1);
697
- bltzal(scratch, shifted_branch_offset(L, false));
698
- break;
699
- case Uless:
700
- sltu(scratch, rs, r2);
701
- addiu(scratch, scratch, -1);
702
- bgezal(scratch, shifted_branch_offset(L, false));
703
- break;
704
- case Uless_equal:
705
- sltu(scratch, r2, rs);
706
- addiu(scratch, scratch, -1);
707
- bltzal(scratch, shifted_branch_offset(L, false));
708
- break;
709
-
710
- default:
711
- UNREACHABLE();
712
- }
713
- // Emit a nop in the branch delay slot.
714
- nop();
715
- }
716
-
717
-
718
- void MacroAssembler::Jump(const Operand& target,
719
- Condition cond, Register rs, const Operand& rt) {
720
- if (target.is_reg()) {
721
- if (cond == cc_always) {
722
- jr(target.rm());
723
- } else {
724
- Branch(NegateCondition(cond), 2, rs, rt);
725
- jr(target.rm());
726
- }
727
- } else { // !target.is_reg()
728
- if (!MustUseAt(target.rmode_)) {
729
- if (cond == cc_always) {
730
- j(target.imm32_);
731
- } else {
732
- Branch(NegateCondition(cond), 2, rs, rt);
733
- j(target.imm32_); // Will generate only one instruction.
734
- }
735
- } else { // MustUseAt(target)
736
- li(at, target);
737
- if (cond == cc_always) {
738
- jr(at);
739
- } else {
740
- Branch(NegateCondition(cond), 2, rs, rt);
741
- jr(at); // Will generate only one instruction.
742
- }
743
- }
744
- }
745
- // Emit a nop in the branch delay slot.
746
- nop();
747
- }
748
-
749
-
750
- void MacroAssembler::Call(const Operand& target,
751
- Condition cond, Register rs, const Operand& rt) {
752
- if (target.is_reg()) {
753
- if (cond == cc_always) {
754
- jalr(target.rm());
755
- } else {
756
- Branch(NegateCondition(cond), 2, rs, rt);
757
- jalr(target.rm());
758
- }
759
- } else { // !target.is_reg()
760
- if (!MustUseAt(target.rmode_)) {
761
- if (cond == cc_always) {
762
- jal(target.imm32_);
763
- } else {
764
- Branch(NegateCondition(cond), 2, rs, rt);
765
- jal(target.imm32_); // Will generate only one instruction.
766
- }
767
- } else { // MustUseAt(target)
768
- li(at, target);
769
- if (cond == cc_always) {
770
- jalr(at);
771
- } else {
772
- Branch(NegateCondition(cond), 2, rs, rt);
773
- jalr(at); // Will generate only one instruction.
774
- }
775
- }
776
- }
777
- // Emit a nop in the branch delay slot.
778
- nop();
779
- }
780
-
781
- void MacroAssembler::StackLimitCheck(Label* on_stack_overflow) {
782
- UNIMPLEMENTED_MIPS();
783
- }
784
-
785
-
786
- void MacroAssembler::Drop(int count, Condition cond) {
787
- UNIMPLEMENTED_MIPS();
788
- }
789
-
790
-
791
- void MacroAssembler::Call(Label* target) {
792
- UNIMPLEMENTED_MIPS();
793
- }
794
-
795
-
796
- #ifdef ENABLE_DEBUGGER_SUPPORT
797
- // ---------------------------------------------------------------------------
798
- // Debugger Support
799
-
800
- void MacroAssembler::DebugBreak() {
801
- UNIMPLEMENTED_MIPS();
802
- }
803
- #endif
804
-
805
-
806
- // ---------------------------------------------------------------------------
807
- // Exception handling
808
-
809
- void MacroAssembler::PushTryHandler(CodeLocation try_location,
810
- HandlerType type) {
811
- // Adjust this code if not the case.
812
- ASSERT(StackHandlerConstants::kSize == 4 * kPointerSize);
813
- // The return address is passed in register ra.
814
- if (try_location == IN_JAVASCRIPT) {
815
- if (type == TRY_CATCH_HANDLER) {
816
- li(t0, Operand(StackHandler::TRY_CATCH));
817
- } else {
818
- li(t0, Operand(StackHandler::TRY_FINALLY));
819
- }
820
- ASSERT(StackHandlerConstants::kStateOffset == 1 * kPointerSize
821
- && StackHandlerConstants::kFPOffset == 2 * kPointerSize
822
- && StackHandlerConstants::kPCOffset == 3 * kPointerSize
823
- && StackHandlerConstants::kNextOffset == 0 * kPointerSize);
824
- // Save the current handler as the next handler.
825
- LoadExternalReference(t2, ExternalReference(Top::k_handler_address));
826
- lw(t1, MemOperand(t2));
827
-
828
- addiu(sp, sp, -StackHandlerConstants::kSize);
829
- sw(ra, MemOperand(sp, 12));
830
- sw(fp, MemOperand(sp, 8));
831
- sw(t0, MemOperand(sp, 4));
832
- sw(t1, MemOperand(sp, 0));
833
-
834
- // Link this handler as the new current one.
835
- sw(sp, MemOperand(t2));
836
-
837
- } else {
838
- // Must preserve a0-a3, and s0 (argv).
839
- ASSERT(try_location == IN_JS_ENTRY);
840
- ASSERT(StackHandlerConstants::kStateOffset == 1 * kPointerSize
841
- && StackHandlerConstants::kFPOffset == 2 * kPointerSize
842
- && StackHandlerConstants::kPCOffset == 3 * kPointerSize
843
- && StackHandlerConstants::kNextOffset == 0 * kPointerSize);
844
-
845
- // The frame pointer does not point to a JS frame so we save NULL
846
- // for fp. We expect the code throwing an exception to check fp
847
- // before dereferencing it to restore the context.
848
- li(t0, Operand(StackHandler::ENTRY));
849
-
850
- // Save the current handler as the next handler.
851
- LoadExternalReference(t2, ExternalReference(Top::k_handler_address));
852
- lw(t1, MemOperand(t2));
853
-
854
- addiu(sp, sp, -StackHandlerConstants::kSize);
855
- sw(ra, MemOperand(sp, 12));
856
- sw(zero_reg, MemOperand(sp, 8));
857
- sw(t0, MemOperand(sp, 4));
858
- sw(t1, MemOperand(sp, 0));
859
-
860
- // Link this handler as the new current one.
861
- sw(sp, MemOperand(t2));
862
- }
863
- }
864
-
865
-
866
- void MacroAssembler::PopTryHandler() {
867
- UNIMPLEMENTED_MIPS();
868
- }
869
-
870
-
871
-
872
- // -----------------------------------------------------------------------------
873
- // Activation frames
874
-
875
- void MacroAssembler::SetupAlignedCall(Register scratch, int arg_count) {
876
- Label extra_push, end;
877
-
878
- andi(scratch, sp, 7);
879
-
880
- // We check for args and receiver size on the stack, all of them word sized.
881
- // We add one for sp, that we also want to store on the stack.
882
- if (((arg_count + 1) % kPointerSizeLog2) == 0) {
883
- Branch(ne, &extra_push, at, Operand(zero_reg));
884
- } else { // ((arg_count + 1) % 2) == 1
885
- Branch(eq, &extra_push, at, Operand(zero_reg));
886
- }
887
-
888
- // Save sp on the stack.
889
- mov(scratch, sp);
890
- Push(scratch);
891
- b(&end);
892
-
893
- // Align before saving sp on the stack.
894
- bind(&extra_push);
895
- mov(scratch, sp);
896
- addiu(sp, sp, -8);
897
- sw(scratch, MemOperand(sp));
898
-
899
- // The stack is aligned and sp is stored on the top.
900
- bind(&end);
901
- }
902
-
903
-
904
- void MacroAssembler::ReturnFromAlignedCall() {
905
- lw(sp, MemOperand(sp));
906
- }
907
-
908
-
909
- // -----------------------------------------------------------------------------
910
- // JavaScript invokes
911
-
912
- void MacroAssembler::InvokePrologue(const ParameterCount& expected,
913
- const ParameterCount& actual,
914
- Handle<Code> code_constant,
915
- Register code_reg,
916
- Label* done,
917
- InvokeFlag flag) {
918
- bool definitely_matches = false;
919
- Label regular_invoke;
920
-
921
- // Check whether the expected and actual arguments count match. If not,
922
- // setup registers according to contract with ArgumentsAdaptorTrampoline:
923
- // a0: actual arguments count
924
- // a1: function (passed through to callee)
925
- // a2: expected arguments count
926
- // a3: callee code entry
927
-
928
- // The code below is made a lot easier because the calling code already sets
929
- // up actual and expected registers according to the contract if values are
930
- // passed in registers.
931
- ASSERT(actual.is_immediate() || actual.reg().is(a0));
932
- ASSERT(expected.is_immediate() || expected.reg().is(a2));
933
- ASSERT((!code_constant.is_null() && code_reg.is(no_reg)) || code_reg.is(a3));
934
-
935
- if (expected.is_immediate()) {
936
- ASSERT(actual.is_immediate());
937
- if (expected.immediate() == actual.immediate()) {
938
- definitely_matches = true;
939
- } else {
940
- li(a0, Operand(actual.immediate()));
941
- const int sentinel = SharedFunctionInfo::kDontAdaptArgumentsSentinel;
942
- if (expected.immediate() == sentinel) {
943
- // Don't worry about adapting arguments for builtins that
944
- // don't want that done. Skip adaption code by making it look
945
- // like we have a match between expected and actual number of
946
- // arguments.
947
- definitely_matches = true;
948
- } else {
949
- li(a2, Operand(expected.immediate()));
950
- }
951
- }
952
- } else if (actual.is_immediate()) {
953
- Branch(eq, &regular_invoke, expected.reg(), Operand(actual.immediate()));
954
- li(a0, Operand(actual.immediate()));
955
- } else {
956
- Branch(eq, &regular_invoke, expected.reg(), Operand(actual.reg()));
957
- }
958
-
959
- if (!definitely_matches) {
960
- if (!code_constant.is_null()) {
961
- li(a3, Operand(code_constant));
962
- addiu(a3, a3, Code::kHeaderSize - kHeapObjectTag);
963
- }
964
-
965
- ExternalReference adaptor(Builtins::ArgumentsAdaptorTrampoline);
966
- if (flag == CALL_FUNCTION) {
967
- CallBuiltin(adaptor);
968
- b(done);
969
- nop();
970
- } else {
971
- JumpToBuiltin(adaptor);
972
- }
973
- bind(&regular_invoke);
974
- }
975
- }
976
-
977
- void MacroAssembler::InvokeCode(Register code,
978
- const ParameterCount& expected,
979
- const ParameterCount& actual,
980
- InvokeFlag flag) {
981
- Label done;
982
-
983
- InvokePrologue(expected, actual, Handle<Code>::null(), code, &done, flag);
984
- if (flag == CALL_FUNCTION) {
985
- Call(code);
986
- } else {
987
- ASSERT(flag == JUMP_FUNCTION);
988
- Jump(code);
989
- }
990
- // Continue here if InvokePrologue does handle the invocation due to
991
- // mismatched parameter counts.
992
- bind(&done);
993
- }
994
-
995
-
996
- void MacroAssembler::InvokeCode(Handle<Code> code,
997
- const ParameterCount& expected,
998
- const ParameterCount& actual,
999
- RelocInfo::Mode rmode,
1000
- InvokeFlag flag) {
1001
- Label done;
1002
-
1003
- InvokePrologue(expected, actual, code, no_reg, &done, flag);
1004
- if (flag == CALL_FUNCTION) {
1005
- Call(code, rmode);
1006
- } else {
1007
- Jump(code, rmode);
1008
- }
1009
- // Continue here if InvokePrologue does handle the invocation due to
1010
- // mismatched parameter counts.
1011
- bind(&done);
1012
- }
1013
-
1014
-
1015
- void MacroAssembler::InvokeFunction(Register function,
1016
- const ParameterCount& actual,
1017
- InvokeFlag flag) {
1018
- // Contract with called JS functions requires that function is passed in a1.
1019
- ASSERT(function.is(a1));
1020
- Register expected_reg = a2;
1021
- Register code_reg = a3;
1022
-
1023
- lw(code_reg, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset));
1024
- lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
1025
- lw(expected_reg,
1026
- FieldMemOperand(code_reg,
1027
- SharedFunctionInfo::kFormalParameterCountOffset));
1028
- lw(code_reg,
1029
- MemOperand(code_reg, SharedFunctionInfo::kCodeOffset - kHeapObjectTag));
1030
- addiu(code_reg, code_reg, Code::kHeaderSize - kHeapObjectTag);
1031
-
1032
- ParameterCount expected(expected_reg);
1033
- InvokeCode(code_reg, expected, actual, flag);
1034
- }
1035
-
1036
-
1037
- // ---------------------------------------------------------------------------
1038
- // Support functions.
1039
-
1040
- void MacroAssembler::GetObjectType(Register function,
1041
- Register map,
1042
- Register type_reg) {
1043
- lw(map, FieldMemOperand(function, HeapObject::kMapOffset));
1044
- lbu(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset));
1045
- }
1046
-
1047
-
1048
- void MacroAssembler::CallBuiltin(ExternalReference builtin_entry) {
1049
- // Load builtin address.
1050
- LoadExternalReference(t9, builtin_entry);
1051
- lw(t9, MemOperand(t9)); // Deref address.
1052
- addiu(t9, t9, Code::kHeaderSize - kHeapObjectTag);
1053
- // Call and allocate arguments slots.
1054
- jalr(t9);
1055
- // Use the branch delay slot to allocated argument slots.
1056
- addiu(sp, sp, -StandardFrameConstants::kRArgsSlotsSize);
1057
- addiu(sp, sp, StandardFrameConstants::kRArgsSlotsSize);
1058
- }
1059
-
1060
-
1061
- void MacroAssembler::CallBuiltin(Register target) {
1062
- // Target already holds target address.
1063
- // Call and allocate arguments slots.
1064
- jalr(target);
1065
- // Use the branch delay slot to allocated argument slots.
1066
- addiu(sp, sp, -StandardFrameConstants::kRArgsSlotsSize);
1067
- addiu(sp, sp, StandardFrameConstants::kRArgsSlotsSize);
1068
- }
1069
-
1070
-
1071
- void MacroAssembler::JumpToBuiltin(ExternalReference builtin_entry) {
1072
- // Load builtin address.
1073
- LoadExternalReference(t9, builtin_entry);
1074
- lw(t9, MemOperand(t9)); // Deref address.
1075
- addiu(t9, t9, Code::kHeaderSize - kHeapObjectTag);
1076
- // Call and allocate arguments slots.
1077
- jr(t9);
1078
- // Use the branch delay slot to allocated argument slots.
1079
- addiu(sp, sp, -StandardFrameConstants::kRArgsSlotsSize);
1080
- }
1081
-
1082
-
1083
- void MacroAssembler::JumpToBuiltin(Register target) {
1084
- // t9 already holds target address.
1085
- // Call and allocate arguments slots.
1086
- jr(t9);
1087
- // Use the branch delay slot to allocated argument slots.
1088
- addiu(sp, sp, -StandardFrameConstants::kRArgsSlotsSize);
1089
- }
1090
-
1091
-
1092
- // -----------------------------------------------------------------------------
1093
- // Runtime calls
1094
-
1095
- void MacroAssembler::CallStub(CodeStub* stub, Condition cond,
1096
- Register r1, const Operand& r2) {
1097
- ASSERT(allow_stub_calls()); // Stub calls are not allowed in some stubs.
1098
- Call(stub->GetCode(), RelocInfo::CODE_TARGET, cond, r1, r2);
1099
- }
1100
-
1101
-
1102
- void MacroAssembler::StubReturn(int argc) {
1103
- UNIMPLEMENTED_MIPS();
1104
- }
1105
-
1106
-
1107
- void MacroAssembler::IllegalOperation(int num_arguments) {
1108
- if (num_arguments > 0) {
1109
- addiu(sp, sp, num_arguments * kPointerSize);
1110
- }
1111
- LoadRoot(v0, Heap::kUndefinedValueRootIndex);
1112
- }
1113
-
1114
-
1115
- void MacroAssembler::CallRuntime(Runtime::Function* f, int num_arguments) {
1116
- // All parameters are on the stack. v0 has the return value after call.
1117
-
1118
- // If the expected number of arguments of the runtime function is
1119
- // constant, we check that the actual number of arguments match the
1120
- // expectation.
1121
- if (f->nargs >= 0 && f->nargs != num_arguments) {
1122
- IllegalOperation(num_arguments);
1123
- return;
1124
- }
1125
-
1126
- // TODO(1236192): Most runtime routines don't need the number of
1127
- // arguments passed in because it is constant. At some point we
1128
- // should remove this need and make the runtime routine entry code
1129
- // smarter.
1130
- li(a0, num_arguments);
1131
- LoadExternalReference(a1, ExternalReference(f));
1132
- CEntryStub stub(1);
1133
- CallStub(&stub);
1134
- }
1135
-
1136
-
1137
- void MacroAssembler::CallRuntime(Runtime::FunctionId fid, int num_arguments) {
1138
- CallRuntime(Runtime::FunctionForId(fid), num_arguments);
1139
- }
1140
-
1141
-
1142
- void MacroAssembler::TailCallExternalReference(const ExternalReference& ext,
1143
- int num_arguments,
1144
- int result_size) {
1145
- UNIMPLEMENTED_MIPS();
1146
- }
1147
-
1148
-
1149
- void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid,
1150
- int num_arguments,
1151
- int result_size) {
1152
- TailCallExternalReference(ExternalReference(fid), num_arguments, result_size);
1153
- }
1154
-
1155
-
1156
- void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) {
1157
- UNIMPLEMENTED_MIPS();
1158
- }
1159
-
1160
-
1161
- Handle<Code> MacroAssembler::ResolveBuiltin(Builtins::JavaScript id,
1162
- bool* resolved) {
1163
- UNIMPLEMENTED_MIPS();
1164
- return Handle<Code>(reinterpret_cast<Code*>(NULL)); // UNIMPLEMENTED RETURN
1165
- }
1166
-
1167
-
1168
- void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
1169
- InvokeJSFlags flags) {
1170
- UNIMPLEMENTED_MIPS();
1171
- }
1172
-
1173
-
1174
- void MacroAssembler::GetBuiltinEntry(Register target, Builtins::JavaScript id) {
1175
- UNIMPLEMENTED_MIPS();
1176
- }
1177
-
1178
-
1179
- void MacroAssembler::SetCounter(StatsCounter* counter, int value,
1180
- Register scratch1, Register scratch2) {
1181
- UNIMPLEMENTED_MIPS();
1182
- }
1183
-
1184
-
1185
- void MacroAssembler::IncrementCounter(StatsCounter* counter, int value,
1186
- Register scratch1, Register scratch2) {
1187
- UNIMPLEMENTED_MIPS();
1188
- }
1189
-
1190
-
1191
- void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
1192
- Register scratch1, Register scratch2) {
1193
- UNIMPLEMENTED_MIPS();
1194
- }
1195
-
1196
-
1197
- // -----------------------------------------------------------------------------
1198
- // Debugging
1199
-
1200
- void MacroAssembler::Assert(Condition cc, const char* msg,
1201
- Register rs, Operand rt) {
1202
- UNIMPLEMENTED_MIPS();
1203
- }
1204
-
1205
-
1206
- void MacroAssembler::Check(Condition cc, const char* msg,
1207
- Register rs, Operand rt) {
1208
- UNIMPLEMENTED_MIPS();
1209
- }
1210
-
1211
-
1212
- void MacroAssembler::Abort(const char* msg) {
1213
- UNIMPLEMENTED_MIPS();
1214
- }
1215
-
1216
-
1217
- void MacroAssembler::EnterFrame(StackFrame::Type type) {
1218
- addiu(sp, sp, -5 * kPointerSize);
1219
- li(t0, Operand(Smi::FromInt(type)));
1220
- li(t1, Operand(CodeObject()));
1221
- sw(ra, MemOperand(sp, 4 * kPointerSize));
1222
- sw(fp, MemOperand(sp, 3 * kPointerSize));
1223
- sw(cp, MemOperand(sp, 2 * kPointerSize));
1224
- sw(t0, MemOperand(sp, 1 * kPointerSize));
1225
- sw(t1, MemOperand(sp, 0 * kPointerSize));
1226
- addiu(fp, sp, 3 * kPointerSize);
1227
- }
1228
-
1229
-
1230
- void MacroAssembler::LeaveFrame(StackFrame::Type type) {
1231
- mov(sp, fp);
1232
- lw(fp, MemOperand(sp, 0 * kPointerSize));
1233
- lw(ra, MemOperand(sp, 1 * kPointerSize));
1234
- addiu(sp, sp, 2 * kPointerSize);
1235
- }
1236
-
1237
-
1238
- void MacroAssembler::EnterExitFrame(ExitFrame::Mode mode,
1239
- Register hold_argc,
1240
- Register hold_argv,
1241
- Register hold_function) {
1242
- // Compute the argv pointer and keep it in a callee-saved register.
1243
- // a0 is argc.
1244
- sll(t0, a0, kPointerSizeLog2);
1245
- add(hold_argv, sp, t0);
1246
- addi(hold_argv, hold_argv, -kPointerSize);
1247
-
1248
- // Compute callee's stack pointer before making changes and save it as
1249
- // t1 register so that it is restored as sp register on exit, thereby
1250
- // popping the args.
1251
- // t1 = sp + kPointerSize * #args
1252
- add(t1, sp, t0);
1253
-
1254
- // Align the stack at this point.
1255
- AlignStack(0);
1256
-
1257
- // Save registers.
1258
- addiu(sp, sp, -12);
1259
- sw(t1, MemOperand(sp, 8));
1260
- sw(ra, MemOperand(sp, 4));
1261
- sw(fp, MemOperand(sp, 0));
1262
- mov(fp, sp); // Setup new frame pointer.
1263
-
1264
- // Push debug marker.
1265
- if (mode == ExitFrame::MODE_DEBUG) {
1266
- Push(zero_reg);
1267
- } else {
1268
- li(t0, Operand(CodeObject()));
1269
- Push(t0);
1270
- }
1271
-
1272
- // Save the frame pointer and the context in top.
1273
- LoadExternalReference(t0, ExternalReference(Top::k_c_entry_fp_address));
1274
- sw(fp, MemOperand(t0));
1275
- LoadExternalReference(t0, ExternalReference(Top::k_context_address));
1276
- sw(cp, MemOperand(t0));
1277
-
1278
- // Setup argc and the builtin function in callee-saved registers.
1279
- mov(hold_argc, a0);
1280
- mov(hold_function, a1);
1281
- }
1282
-
1283
-
1284
- void MacroAssembler::LeaveExitFrame(ExitFrame::Mode mode) {
1285
- // Clear top frame.
1286
- LoadExternalReference(t0, ExternalReference(Top::k_c_entry_fp_address));
1287
- sw(zero_reg, MemOperand(t0));
1288
-
1289
- // Restore current context from top and clear it in debug mode.
1290
- LoadExternalReference(t0, ExternalReference(Top::k_context_address));
1291
- lw(cp, MemOperand(t0));
1292
- #ifdef DEBUG
1293
- sw(a3, MemOperand(t0));
1294
- #endif
1295
-
1296
- // Pop the arguments, restore registers, and return.
1297
- mov(sp, fp); // Respect ABI stack constraint.
1298
- lw(fp, MemOperand(sp, 0));
1299
- lw(ra, MemOperand(sp, 4));
1300
- lw(sp, MemOperand(sp, 8));
1301
- jr(ra);
1302
- nop(); // Branch delay slot nop.
1303
- }
1304
-
1305
-
1306
- void MacroAssembler::AlignStack(int offset) {
1307
- // On MIPS an offset of 0 aligns to 0 modulo 8 bytes,
1308
- // and an offset of 1 aligns to 4 modulo 8 bytes.
1309
- int activation_frame_alignment = OS::ActivationFrameAlignment();
1310
- if (activation_frame_alignment != kPointerSize) {
1311
- // This code needs to be made more general if this assert doesn't hold.
1312
- ASSERT(activation_frame_alignment == 2 * kPointerSize);
1313
- if (offset == 0) {
1314
- andi(t0, sp, activation_frame_alignment - 1);
1315
- Push(zero_reg, eq, t0, zero_reg);
1316
- } else {
1317
- andi(t0, sp, activation_frame_alignment - 1);
1318
- addiu(t0, t0, -4);
1319
- Push(zero_reg, eq, t0, zero_reg);
1320
- }
1321
- }
1322
- }
1323
-
1324
- } } // namespace v8::internal
1325
-
1326
- #endif // V8_TARGET_ARCH_MIPS