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
@@ -0,0 +1,1306 @@
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
+ #ifndef V8_ISOLATE_H_
29
+ #define V8_ISOLATE_H_
30
+
31
+ #include "../include/v8-debug.h"
32
+ #include "allocation.h"
33
+ #include "apiutils.h"
34
+ #include "atomicops.h"
35
+ #include "builtins.h"
36
+ #include "contexts.h"
37
+ #include "execution.h"
38
+ #include "frames.h"
39
+ #include "global-handles.h"
40
+ #include "handles.h"
41
+ #include "heap.h"
42
+ #include "regexp-stack.h"
43
+ #include "runtime-profiler.h"
44
+ #include "runtime.h"
45
+ #include "zone.h"
46
+
47
+ namespace v8 {
48
+ namespace internal {
49
+
50
+ class AstSentinels;
51
+ class Bootstrapper;
52
+ class CodeGenerator;
53
+ class CodeRange;
54
+ class CompilationCache;
55
+ class ContextSlotCache;
56
+ class ContextSwitcher;
57
+ class Counters;
58
+ class CpuFeatures;
59
+ class CpuProfiler;
60
+ class DeoptimizerData;
61
+ class Deserializer;
62
+ class EmptyStatement;
63
+ class ExternalReferenceTable;
64
+ class Factory;
65
+ class FunctionInfoListener;
66
+ class HandleScopeImplementer;
67
+ class HeapProfiler;
68
+ class InlineRuntimeFunctionsTable;
69
+ class NoAllocationStringAllocator;
70
+ class PcToCodeCache;
71
+ class PreallocatedMemoryThread;
72
+ class ProducerHeapProfile;
73
+ class RegExpStack;
74
+ class SaveContext;
75
+ class ScannerConstants;
76
+ class StringInputBuffer;
77
+ class StringTracker;
78
+ class StubCache;
79
+ class ThreadManager;
80
+ class ThreadState;
81
+ class ThreadVisitor; // Defined in v8threads.h
82
+ class VMState;
83
+
84
+ // 'void function pointer', used to roundtrip the
85
+ // ExternalReference::ExternalReferenceRedirector since we can not include
86
+ // assembler.h, where it is defined, here.
87
+ typedef void* ExternalReferenceRedirectorPointer();
88
+
89
+
90
+ #ifdef ENABLE_DEBUGGER_SUPPORT
91
+ class Debug;
92
+ class Debugger;
93
+ class DebuggerAgent;
94
+ #endif
95
+
96
+ #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
97
+ !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
98
+ class Redirection;
99
+ class Simulator;
100
+ #endif
101
+
102
+
103
+ // Static indirection table for handles to constants. If a frame
104
+ // element represents a constant, the data contains an index into
105
+ // this table of handles to the actual constants.
106
+ // Static indirection table for handles to constants. If a Result
107
+ // represents a constant, the data contains an index into this table
108
+ // of handles to the actual constants.
109
+ typedef ZoneList<Handle<Object> > ZoneObjectList;
110
+
111
+ #define RETURN_IF_SCHEDULED_EXCEPTION(isolate) \
112
+ if (isolate->has_scheduled_exception()) \
113
+ return isolate->PromoteScheduledException()
114
+
115
+ #define RETURN_IF_EMPTY_HANDLE_VALUE(isolate, call, value) \
116
+ if (call.is_null()) { \
117
+ ASSERT(isolate->has_pending_exception()); \
118
+ return value; \
119
+ }
120
+
121
+ #define RETURN_IF_EMPTY_HANDLE(isolate, call) \
122
+ RETURN_IF_EMPTY_HANDLE_VALUE(isolate, call, Failure::Exception())
123
+
124
+ #define ISOLATE_ADDRESS_LIST(C) \
125
+ C(handler_address) \
126
+ C(c_entry_fp_address) \
127
+ C(context_address) \
128
+ C(pending_exception_address) \
129
+ C(external_caught_exception_address)
130
+
131
+ #ifdef ENABLE_LOGGING_AND_PROFILING
132
+ #define ISOLATE_ADDRESS_LIST_PROF(C) \
133
+ C(js_entry_sp_address)
134
+ #else
135
+ #define ISOLATE_ADDRESS_LIST_PROF(C)
136
+ #endif
137
+
138
+
139
+ class ThreadLocalTop BASE_EMBEDDED {
140
+ public:
141
+ // Initialize the thread data.
142
+ void Initialize();
143
+
144
+ // Get the top C++ try catch handler or NULL if none are registered.
145
+ //
146
+ // This method is not guarenteed to return an address that can be
147
+ // used for comparison with addresses into the JS stack. If such an
148
+ // address is needed, use try_catch_handler_address.
149
+ v8::TryCatch* TryCatchHandler();
150
+
151
+ // Get the address of the top C++ try catch handler or NULL if
152
+ // none are registered.
153
+ //
154
+ // This method always returns an address that can be compared to
155
+ // pointers into the JavaScript stack. When running on actual
156
+ // hardware, try_catch_handler_address and TryCatchHandler return
157
+ // the same pointer. When running on a simulator with a separate JS
158
+ // stack, try_catch_handler_address returns a JS stack address that
159
+ // corresponds to the place on the JS stack where the C++ handler
160
+ // would have been if the stack were not separate.
161
+ inline Address try_catch_handler_address() {
162
+ return try_catch_handler_address_;
163
+ }
164
+
165
+ // Set the address of the top C++ try catch handler.
166
+ inline void set_try_catch_handler_address(Address address) {
167
+ try_catch_handler_address_ = address;
168
+ }
169
+
170
+ void Free() {
171
+ ASSERT(!has_pending_message_);
172
+ ASSERT(!external_caught_exception_);
173
+ ASSERT(try_catch_handler_address_ == NULL);
174
+ }
175
+
176
+ // The context where the current execution method is created and for variable
177
+ // lookups.
178
+ Context* context_;
179
+ int thread_id_;
180
+ MaybeObject* pending_exception_;
181
+ bool has_pending_message_;
182
+ const char* pending_message_;
183
+ Object* pending_message_obj_;
184
+ Script* pending_message_script_;
185
+ int pending_message_start_pos_;
186
+ int pending_message_end_pos_;
187
+ // Use a separate value for scheduled exceptions to preserve the
188
+ // invariants that hold about pending_exception. We may want to
189
+ // unify them later.
190
+ MaybeObject* scheduled_exception_;
191
+ bool external_caught_exception_;
192
+ SaveContext* save_context_;
193
+ v8::TryCatch* catcher_;
194
+
195
+ // Stack.
196
+ Address c_entry_fp_; // the frame pointer of the top c entry frame
197
+ Address handler_; // try-blocks are chained through the stack
198
+
199
+ #ifdef USE_SIMULATOR
200
+ #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS)
201
+ Simulator* simulator_;
202
+ #endif
203
+ #endif // USE_SIMULATOR
204
+
205
+ #ifdef ENABLE_LOGGING_AND_PROFILING
206
+ Address js_entry_sp_; // the stack pointer of the bottom js entry frame
207
+ Address external_callback_; // the external callback we're currently in
208
+ #endif
209
+
210
+ #ifdef ENABLE_VMSTATE_TRACKING
211
+ StateTag current_vm_state_;
212
+ #endif
213
+
214
+ // Generated code scratch locations.
215
+ int32_t formal_count_;
216
+
217
+ // Call back function to report unsafe JS accesses.
218
+ v8::FailedAccessCheckCallback failed_access_check_callback_;
219
+
220
+ private:
221
+ Address try_catch_handler_address_;
222
+ };
223
+
224
+ #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS)
225
+
226
+ #define ISOLATE_PLATFORM_INIT_LIST(V) \
227
+ /* VirtualFrame::SpilledScope state */ \
228
+ V(bool, is_virtual_frame_in_spilled_scope, false) \
229
+ /* CodeGenerator::EmitNamedStore state */ \
230
+ V(int, inlined_write_barrier_size, -1)
231
+
232
+ #if !defined(__arm__) && !defined(__mips__)
233
+ class HashMap;
234
+ #endif
235
+
236
+ #else
237
+
238
+ #define ISOLATE_PLATFORM_INIT_LIST(V)
239
+
240
+ #endif
241
+
242
+ #ifdef ENABLE_DEBUGGER_SUPPORT
243
+
244
+ #define ISOLATE_DEBUGGER_INIT_LIST(V) \
245
+ V(uint64_t, enabled_cpu_features, 0) \
246
+ V(v8::Debug::EventCallback, debug_event_callback, NULL) \
247
+ V(DebuggerAgent*, debugger_agent_instance, NULL)
248
+ #else
249
+
250
+ #define ISOLATE_DEBUGGER_INIT_LIST(V)
251
+
252
+ #endif
253
+
254
+ #ifdef DEBUG
255
+
256
+ #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V) \
257
+ V(CommentStatistic, paged_space_comments_statistics, \
258
+ CommentStatistic::kMaxComments + 1)
259
+ #else
260
+
261
+ #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
262
+
263
+ #endif
264
+
265
+ #ifdef ENABLE_LOGGING_AND_PROFILING
266
+
267
+ #define ISOLATE_LOGGING_INIT_LIST(V) \
268
+ V(CpuProfiler*, cpu_profiler, NULL) \
269
+ V(HeapProfiler*, heap_profiler, NULL)
270
+
271
+ #else
272
+
273
+ #define ISOLATE_LOGGING_INIT_LIST(V)
274
+
275
+ #endif
276
+
277
+ #define ISOLATE_INIT_ARRAY_LIST(V) \
278
+ /* SerializerDeserializer state. */ \
279
+ V(Object*, serialize_partial_snapshot_cache, kPartialSnapshotCacheCapacity) \
280
+ V(int, jsregexp_static_offsets_vector, kJSRegexpStaticOffsetsVectorSize) \
281
+ V(int, bad_char_shift_table, kUC16AlphabetSize) \
282
+ V(int, good_suffix_shift_table, (kBMMaxShift + 1)) \
283
+ V(int, suffix_table, (kBMMaxShift + 1)) \
284
+ ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
285
+
286
+ typedef List<HeapObject*, PreallocatedStorage> DebugObjectCache;
287
+
288
+ #define ISOLATE_INIT_LIST(V) \
289
+ /* AssertNoZoneAllocation state. */ \
290
+ V(bool, zone_allow_allocation, true) \
291
+ /* SerializerDeserializer state. */ \
292
+ V(int, serialize_partial_snapshot_cache_length, 0) \
293
+ /* Assembler state. */ \
294
+ /* A previously allocated buffer of kMinimalBufferSize bytes, or NULL. */ \
295
+ V(byte*, assembler_spare_buffer, NULL) \
296
+ V(FatalErrorCallback, exception_behavior, NULL) \
297
+ V(v8::Debug::MessageHandler, message_handler, NULL) \
298
+ /* To distinguish the function templates, so that we can find them in the */ \
299
+ /* function cache of the global context. */ \
300
+ V(int, next_serial_number, 0) \
301
+ V(ExternalReferenceRedirectorPointer*, external_reference_redirector, NULL) \
302
+ V(bool, always_allow_natives_syntax, false) \
303
+ /* Part of the state of liveedit. */ \
304
+ V(FunctionInfoListener*, active_function_info_listener, NULL) \
305
+ /* State for Relocatable. */ \
306
+ V(Relocatable*, relocatable_top, NULL) \
307
+ /* State for CodeEntry in profile-generator. */ \
308
+ V(CodeGenerator*, current_code_generator, NULL) \
309
+ V(bool, jump_target_compiling_deferred_code, false) \
310
+ V(DebugObjectCache*, string_stream_debug_object_cache, NULL) \
311
+ V(Object*, string_stream_current_security_token, NULL) \
312
+ /* TODO(isolates): Release this on destruction? */ \
313
+ V(int*, irregexp_interpreter_backtrack_stack_cache, NULL) \
314
+ /* Serializer state. */ \
315
+ V(ExternalReferenceTable*, external_reference_table, NULL) \
316
+ /* AstNode state. */ \
317
+ V(unsigned, ast_node_id, 0) \
318
+ V(unsigned, ast_node_count, 0) \
319
+ /* SafeStackFrameIterator activations count. */ \
320
+ V(int, safe_stack_iterator_counter, 0) \
321
+ ISOLATE_PLATFORM_INIT_LIST(V) \
322
+ ISOLATE_LOGGING_INIT_LIST(V) \
323
+ ISOLATE_DEBUGGER_INIT_LIST(V)
324
+
325
+ class Isolate {
326
+ // These forward declarations are required to make the friend declarations in
327
+ // PerIsolateThreadData work on some older versions of gcc.
328
+ class ThreadDataTable;
329
+ class EntryStackItem;
330
+ public:
331
+ ~Isolate();
332
+
333
+ typedef int ThreadId;
334
+
335
+ // A thread has a PerIsolateThreadData instance for each isolate that it has
336
+ // entered. That instance is allocated when the isolate is initially entered
337
+ // and reused on subsequent entries.
338
+ class PerIsolateThreadData {
339
+ public:
340
+ PerIsolateThreadData(Isolate* isolate, ThreadId thread_id)
341
+ : isolate_(isolate),
342
+ thread_id_(thread_id),
343
+ stack_limit_(0),
344
+ thread_state_(NULL),
345
+ #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
346
+ !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
347
+ simulator_(NULL),
348
+ #endif
349
+ next_(NULL),
350
+ prev_(NULL) { }
351
+ Isolate* isolate() const { return isolate_; }
352
+ ThreadId thread_id() const { return thread_id_; }
353
+ void set_stack_limit(uintptr_t value) { stack_limit_ = value; }
354
+ uintptr_t stack_limit() const { return stack_limit_; }
355
+ ThreadState* thread_state() const { return thread_state_; }
356
+ void set_thread_state(ThreadState* value) { thread_state_ = value; }
357
+
358
+ #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
359
+ !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
360
+ Simulator* simulator() const { return simulator_; }
361
+ void set_simulator(Simulator* simulator) {
362
+ simulator_ = simulator;
363
+ }
364
+ #endif
365
+
366
+ bool Matches(Isolate* isolate, ThreadId thread_id) const {
367
+ return isolate_ == isolate && thread_id_ == thread_id;
368
+ }
369
+
370
+ private:
371
+ Isolate* isolate_;
372
+ ThreadId thread_id_;
373
+ uintptr_t stack_limit_;
374
+ ThreadState* thread_state_;
375
+
376
+ #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
377
+ !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
378
+ Simulator* simulator_;
379
+ #endif
380
+
381
+ PerIsolateThreadData* next_;
382
+ PerIsolateThreadData* prev_;
383
+
384
+ friend class Isolate;
385
+ friend class ThreadDataTable;
386
+ friend class EntryStackItem;
387
+
388
+ DISALLOW_COPY_AND_ASSIGN(PerIsolateThreadData);
389
+ };
390
+
391
+
392
+ enum AddressId {
393
+ #define C(name) k_##name,
394
+ ISOLATE_ADDRESS_LIST(C)
395
+ ISOLATE_ADDRESS_LIST_PROF(C)
396
+ #undef C
397
+ k_isolate_address_count
398
+ };
399
+
400
+ // Returns the PerIsolateThreadData for the current thread (or NULL if one is
401
+ // not currently set).
402
+ static PerIsolateThreadData* CurrentPerIsolateThreadData() {
403
+ return reinterpret_cast<PerIsolateThreadData*>(
404
+ Thread::GetThreadLocal(per_isolate_thread_data_key_));
405
+ }
406
+
407
+ // Returns the isolate inside which the current thread is running.
408
+ INLINE(static Isolate* Current()) {
409
+ Isolate* isolate = reinterpret_cast<Isolate*>(
410
+ Thread::GetExistingThreadLocal(isolate_key_));
411
+ ASSERT(isolate != NULL);
412
+ return isolate;
413
+ }
414
+
415
+ INLINE(static Isolate* UncheckedCurrent()) {
416
+ return reinterpret_cast<Isolate*>(Thread::GetThreadLocal(isolate_key_));
417
+ }
418
+
419
+ bool Init(Deserializer* des);
420
+
421
+ bool IsInitialized() { return state_ == INITIALIZED; }
422
+
423
+ // True if at least one thread Enter'ed this isolate.
424
+ bool IsInUse() { return entry_stack_ != NULL; }
425
+
426
+ // Destroys the non-default isolates.
427
+ // Sets default isolate into "has_been_disposed" state rather then destroying,
428
+ // for legacy API reasons.
429
+ void TearDown();
430
+
431
+ bool IsDefaultIsolate() const { return this == default_isolate_; }
432
+
433
+ // Ensures that process-wide resources and the default isolate have been
434
+ // allocated. It is only necessary to call this method in rare casses, for
435
+ // example if you are using V8 from within the body of a static initializer.
436
+ // Safe to call multiple times.
437
+ static void EnsureDefaultIsolate();
438
+
439
+ // Get the debugger from the default isolate. Preinitializes the
440
+ // default isolate if needed.
441
+ static Debugger* GetDefaultIsolateDebugger();
442
+
443
+ // Get the stack guard from the default isolate. Preinitializes the
444
+ // default isolate if needed.
445
+ static StackGuard* GetDefaultIsolateStackGuard();
446
+
447
+ // Returns the key used to store the pointer to the current isolate.
448
+ // Used internally for V8 threads that do not execute JavaScript but still
449
+ // are part of the domain of an isolate (like the context switcher).
450
+ static Thread::LocalStorageKey isolate_key() {
451
+ return isolate_key_;
452
+ }
453
+
454
+ // Returns the key used to store process-wide thread IDs.
455
+ static Thread::LocalStorageKey thread_id_key() {
456
+ return thread_id_key_;
457
+ }
458
+
459
+ // Atomically allocates a new thread ID.
460
+ static ThreadId AllocateThreadId();
461
+
462
+ // If a client attempts to create a Locker without specifying an isolate,
463
+ // we assume that the client is using legacy behavior. Set up the current
464
+ // thread to be inside the implicit isolate (or fail a check if we have
465
+ // switched to non-legacy behavior).
466
+ static void EnterDefaultIsolate();
467
+
468
+ // Debug.
469
+ // Mutex for serializing access to break control structures.
470
+ Mutex* break_access() { return break_access_; }
471
+
472
+ Address get_address_from_id(AddressId id);
473
+
474
+ // Access to top context (where the current function object was created).
475
+ Context* context() { return thread_local_top_.context_; }
476
+ void set_context(Context* context) {
477
+ thread_local_top_.context_ = context;
478
+ }
479
+ Context** context_address() { return &thread_local_top_.context_; }
480
+
481
+ SaveContext* save_context() {return thread_local_top_.save_context_; }
482
+ void set_save_context(SaveContext* save) {
483
+ thread_local_top_.save_context_ = save;
484
+ }
485
+
486
+ // Access to current thread id.
487
+ int thread_id() { return thread_local_top_.thread_id_; }
488
+ void set_thread_id(int id) { thread_local_top_.thread_id_ = id; }
489
+
490
+ // Interface to pending exception.
491
+ MaybeObject* pending_exception() {
492
+ ASSERT(has_pending_exception());
493
+ return thread_local_top_.pending_exception_;
494
+ }
495
+ bool external_caught_exception() {
496
+ return thread_local_top_.external_caught_exception_;
497
+ }
498
+ void set_pending_exception(MaybeObject* exception) {
499
+ thread_local_top_.pending_exception_ = exception;
500
+ }
501
+ void clear_pending_exception() {
502
+ thread_local_top_.pending_exception_ = heap_.the_hole_value();
503
+ }
504
+ MaybeObject** pending_exception_address() {
505
+ return &thread_local_top_.pending_exception_;
506
+ }
507
+ bool has_pending_exception() {
508
+ return !thread_local_top_.pending_exception_->IsTheHole();
509
+ }
510
+ void clear_pending_message() {
511
+ thread_local_top_.has_pending_message_ = false;
512
+ thread_local_top_.pending_message_ = NULL;
513
+ thread_local_top_.pending_message_obj_ = heap_.the_hole_value();
514
+ thread_local_top_.pending_message_script_ = NULL;
515
+ }
516
+ v8::TryCatch* try_catch_handler() {
517
+ return thread_local_top_.TryCatchHandler();
518
+ }
519
+ Address try_catch_handler_address() {
520
+ return thread_local_top_.try_catch_handler_address();
521
+ }
522
+ bool* external_caught_exception_address() {
523
+ return &thread_local_top_.external_caught_exception_;
524
+ }
525
+
526
+ MaybeObject** scheduled_exception_address() {
527
+ return &thread_local_top_.scheduled_exception_;
528
+ }
529
+ MaybeObject* scheduled_exception() {
530
+ ASSERT(has_scheduled_exception());
531
+ return thread_local_top_.scheduled_exception_;
532
+ }
533
+ bool has_scheduled_exception() {
534
+ return !thread_local_top_.scheduled_exception_->IsTheHole();
535
+ }
536
+ void clear_scheduled_exception() {
537
+ thread_local_top_.scheduled_exception_ = heap_.the_hole_value();
538
+ }
539
+
540
+ bool IsExternallyCaught();
541
+
542
+ bool is_catchable_by_javascript(MaybeObject* exception) {
543
+ return (exception != Failure::OutOfMemoryException()) &&
544
+ (exception != heap()->termination_exception());
545
+ }
546
+
547
+ // JS execution stack (see frames.h).
548
+ static Address c_entry_fp(ThreadLocalTop* thread) {
549
+ return thread->c_entry_fp_;
550
+ }
551
+ static Address handler(ThreadLocalTop* thread) { return thread->handler_; }
552
+
553
+ inline Address* c_entry_fp_address() {
554
+ return &thread_local_top_.c_entry_fp_;
555
+ }
556
+ inline Address* handler_address() { return &thread_local_top_.handler_; }
557
+
558
+ #ifdef ENABLE_LOGGING_AND_PROFILING
559
+ // Bottom JS entry (see StackTracer::Trace in log.cc).
560
+ static Address js_entry_sp(ThreadLocalTop* thread) {
561
+ return thread->js_entry_sp_;
562
+ }
563
+ inline Address* js_entry_sp_address() {
564
+ return &thread_local_top_.js_entry_sp_;
565
+ }
566
+ #endif
567
+
568
+ // Generated code scratch locations.
569
+ void* formal_count_address() { return &thread_local_top_.formal_count_; }
570
+
571
+ // Returns the global object of the current context. It could be
572
+ // a builtin object, or a js global object.
573
+ Handle<GlobalObject> global() {
574
+ return Handle<GlobalObject>(context()->global());
575
+ }
576
+
577
+ // Returns the global proxy object of the current context.
578
+ Object* global_proxy() {
579
+ return context()->global_proxy();
580
+ }
581
+
582
+ Handle<JSBuiltinsObject> js_builtins_object() {
583
+ return Handle<JSBuiltinsObject>(thread_local_top_.context_->builtins());
584
+ }
585
+
586
+ static int ArchiveSpacePerThread() { return sizeof(ThreadLocalTop); }
587
+ void FreeThreadResources() { thread_local_top_.Free(); }
588
+
589
+ // This method is called by the api after operations that may throw
590
+ // exceptions. If an exception was thrown and not handled by an external
591
+ // handler the exception is scheduled to be rethrown when we return to running
592
+ // JavaScript code. If an exception is scheduled true is returned.
593
+ bool OptionalRescheduleException(bool is_bottom_call);
594
+
595
+ void SetCaptureStackTraceForUncaughtExceptions(
596
+ bool capture,
597
+ int frame_limit,
598
+ StackTrace::StackTraceOptions options);
599
+
600
+ // Tells whether the current context has experienced an out of memory
601
+ // exception.
602
+ bool is_out_of_memory();
603
+
604
+ void PrintCurrentStackTrace(FILE* out);
605
+ void PrintStackTrace(FILE* out, char* thread_data);
606
+ void PrintStack(StringStream* accumulator);
607
+ void PrintStack();
608
+ Handle<String> StackTraceString();
609
+ Handle<JSArray> CaptureCurrentStackTrace(
610
+ int frame_limit,
611
+ StackTrace::StackTraceOptions options);
612
+
613
+ // Returns if the top context may access the given global object. If
614
+ // the result is false, the pending exception is guaranteed to be
615
+ // set.
616
+ bool MayNamedAccess(JSObject* receiver,
617
+ Object* key,
618
+ v8::AccessType type);
619
+ bool MayIndexedAccess(JSObject* receiver,
620
+ uint32_t index,
621
+ v8::AccessType type);
622
+
623
+ void SetFailedAccessCheckCallback(v8::FailedAccessCheckCallback callback);
624
+ void ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type);
625
+
626
+ // Exception throwing support. The caller should use the result
627
+ // of Throw() as its return value.
628
+ Failure* Throw(Object* exception, MessageLocation* location = NULL);
629
+ // Re-throw an exception. This involves no error reporting since
630
+ // error reporting was handled when the exception was thrown
631
+ // originally.
632
+ Failure* ReThrow(MaybeObject* exception, MessageLocation* location = NULL);
633
+ void ScheduleThrow(Object* exception);
634
+ void ReportPendingMessages();
635
+ Failure* ThrowIllegalOperation();
636
+
637
+ // Promote a scheduled exception to pending. Asserts has_scheduled_exception.
638
+ Failure* PromoteScheduledException();
639
+ void DoThrow(MaybeObject* exception,
640
+ MessageLocation* location,
641
+ const char* message);
642
+ // Checks if exception should be reported and finds out if it's
643
+ // caught externally.
644
+ bool ShouldReportException(bool* can_be_caught_externally,
645
+ bool catchable_by_javascript);
646
+
647
+ // Attempts to compute the current source location, storing the
648
+ // result in the target out parameter.
649
+ void ComputeLocation(MessageLocation* target);
650
+
651
+ // Override command line flag.
652
+ void TraceException(bool flag);
653
+
654
+ // Out of resource exception helpers.
655
+ Failure* StackOverflow();
656
+ Failure* TerminateExecution();
657
+
658
+ // Administration
659
+ void Iterate(ObjectVisitor* v);
660
+ void Iterate(ObjectVisitor* v, ThreadLocalTop* t);
661
+ char* Iterate(ObjectVisitor* v, char* t);
662
+ void IterateThread(ThreadVisitor* v);
663
+ void IterateThread(ThreadVisitor* v, char* t);
664
+
665
+
666
+ // Returns the current global context.
667
+ Handle<Context> global_context();
668
+
669
+ // Returns the global context of the calling JavaScript code. That
670
+ // is, the global context of the top-most JavaScript frame.
671
+ Handle<Context> GetCallingGlobalContext();
672
+
673
+ void RegisterTryCatchHandler(v8::TryCatch* that);
674
+ void UnregisterTryCatchHandler(v8::TryCatch* that);
675
+
676
+ char* ArchiveThread(char* to);
677
+ char* RestoreThread(char* from);
678
+
679
+ static const char* const kStackOverflowMessage;
680
+
681
+ static const int kUC16AlphabetSize = 256; // See StringSearchBase.
682
+ static const int kBMMaxShift = 250; // See StringSearchBase.
683
+
684
+ // Accessors.
685
+ #define GLOBAL_ACCESSOR(type, name, initialvalue) \
686
+ inline type name() const { \
687
+ ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
688
+ return name##_; \
689
+ } \
690
+ inline void set_##name(type value) { \
691
+ ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
692
+ name##_ = value; \
693
+ }
694
+ ISOLATE_INIT_LIST(GLOBAL_ACCESSOR)
695
+ #undef GLOBAL_ACCESSOR
696
+
697
+ #define GLOBAL_ARRAY_ACCESSOR(type, name, length) \
698
+ inline type* name() { \
699
+ ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
700
+ return &(name##_)[0]; \
701
+ }
702
+ ISOLATE_INIT_ARRAY_LIST(GLOBAL_ARRAY_ACCESSOR)
703
+ #undef GLOBAL_ARRAY_ACCESSOR
704
+
705
+ #define GLOBAL_CONTEXT_FIELD_ACCESSOR(index, type, name) \
706
+ Handle<type> name() { \
707
+ return Handle<type>(context()->global_context()->name()); \
708
+ }
709
+ GLOBAL_CONTEXT_FIELDS(GLOBAL_CONTEXT_FIELD_ACCESSOR)
710
+ #undef GLOBAL_CONTEXT_FIELD_ACCESSOR
711
+
712
+ Bootstrapper* bootstrapper() { return bootstrapper_; }
713
+ Counters* counters() { return counters_; }
714
+ CodeRange* code_range() { return code_range_; }
715
+ RuntimeProfiler* runtime_profiler() { return runtime_profiler_; }
716
+ CompilationCache* compilation_cache() { return compilation_cache_; }
717
+ Logger* logger() { return logger_; }
718
+ StackGuard* stack_guard() { return &stack_guard_; }
719
+ Heap* heap() { return &heap_; }
720
+ StatsTable* stats_table() { return stats_table_; }
721
+ StubCache* stub_cache() { return stub_cache_; }
722
+ DeoptimizerData* deoptimizer_data() { return deoptimizer_data_; }
723
+ ThreadLocalTop* thread_local_top() { return &thread_local_top_; }
724
+
725
+ TranscendentalCache* transcendental_cache() const {
726
+ return transcendental_cache_;
727
+ }
728
+
729
+ MemoryAllocator* memory_allocator() {
730
+ return memory_allocator_;
731
+ }
732
+
733
+ KeyedLookupCache* keyed_lookup_cache() {
734
+ return keyed_lookup_cache_;
735
+ }
736
+
737
+ ContextSlotCache* context_slot_cache() {
738
+ return context_slot_cache_;
739
+ }
740
+
741
+ DescriptorLookupCache* descriptor_lookup_cache() {
742
+ return descriptor_lookup_cache_;
743
+ }
744
+
745
+ v8::ImplementationUtilities::HandleScopeData* handle_scope_data() {
746
+ return &handle_scope_data_;
747
+ }
748
+ HandleScopeImplementer* handle_scope_implementer() {
749
+ ASSERT(handle_scope_implementer_);
750
+ return handle_scope_implementer_;
751
+ }
752
+ Zone* zone() { return &zone_; }
753
+
754
+ ScannerConstants* scanner_constants() {
755
+ return scanner_constants_;
756
+ }
757
+
758
+ PcToCodeCache* pc_to_code_cache() { return pc_to_code_cache_; }
759
+
760
+ StringInputBuffer* write_input_buffer() { return write_input_buffer_; }
761
+
762
+ GlobalHandles* global_handles() { return global_handles_; }
763
+
764
+ ThreadManager* thread_manager() { return thread_manager_; }
765
+
766
+ ContextSwitcher* context_switcher() { return context_switcher_; }
767
+
768
+ void set_context_switcher(ContextSwitcher* switcher) {
769
+ context_switcher_ = switcher;
770
+ }
771
+
772
+ StringTracker* string_tracker() { return string_tracker_; }
773
+
774
+ unibrow::Mapping<unibrow::Ecma262UnCanonicalize>* jsregexp_uncanonicalize() {
775
+ return &jsregexp_uncanonicalize_;
776
+ }
777
+
778
+ unibrow::Mapping<unibrow::CanonicalizationRange>* jsregexp_canonrange() {
779
+ return &jsregexp_canonrange_;
780
+ }
781
+
782
+ StringInputBuffer* objects_string_compare_buffer_a() {
783
+ return &objects_string_compare_buffer_a_;
784
+ }
785
+
786
+ StringInputBuffer* objects_string_compare_buffer_b() {
787
+ return &objects_string_compare_buffer_b_;
788
+ }
789
+
790
+ StaticResource<StringInputBuffer>* objects_string_input_buffer() {
791
+ return &objects_string_input_buffer_;
792
+ }
793
+
794
+ AstSentinels* ast_sentinels() { return ast_sentinels_; }
795
+
796
+ RuntimeState* runtime_state() { return &runtime_state_; }
797
+
798
+ StringInputBuffer* liveedit_compare_substrings_buf1() {
799
+ return &liveedit_compare_substrings_buf1_;
800
+ }
801
+
802
+ StringInputBuffer* liveedit_compare_substrings_buf2() {
803
+ return &liveedit_compare_substrings_buf2_;
804
+ }
805
+
806
+ StaticResource<SafeStringInputBuffer>* compiler_safe_string_input_buffer() {
807
+ return &compiler_safe_string_input_buffer_;
808
+ }
809
+
810
+ Builtins* builtins() { return &builtins_; }
811
+
812
+ unibrow::Mapping<unibrow::Ecma262Canonicalize>*
813
+ regexp_macro_assembler_canonicalize() {
814
+ return &regexp_macro_assembler_canonicalize_;
815
+ }
816
+
817
+ RegExpStack* regexp_stack() { return regexp_stack_; }
818
+
819
+ unibrow::Mapping<unibrow::Ecma262Canonicalize>*
820
+ interp_canonicalize_mapping() {
821
+ return &interp_canonicalize_mapping_;
822
+ }
823
+
824
+ ZoneObjectList* frame_element_constant_list() {
825
+ return &frame_element_constant_list_;
826
+ }
827
+
828
+ ZoneObjectList* result_constant_list() {
829
+ return &result_constant_list_;
830
+ }
831
+
832
+ void* PreallocatedStorageNew(size_t size);
833
+ void PreallocatedStorageDelete(void* p);
834
+ void PreallocatedStorageInit(size_t size);
835
+
836
+ #ifdef ENABLE_DEBUGGER_SUPPORT
837
+ Debugger* debugger() { return debugger_; }
838
+ Debug* debug() { return debug_; }
839
+ #endif
840
+
841
+ #ifdef ENABLE_LOGGING_AND_PROFILING
842
+ ProducerHeapProfile* producer_heap_profile() {
843
+ return producer_heap_profile_;
844
+ }
845
+ #endif
846
+
847
+ #ifdef DEBUG
848
+ HistogramInfo* heap_histograms() { return heap_histograms_; }
849
+
850
+ JSObject::SpillInformation* js_spill_information() {
851
+ return &js_spill_information_;
852
+ }
853
+
854
+ int* code_kind_statistics() { return code_kind_statistics_; }
855
+ #endif
856
+
857
+ #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \
858
+ defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__)
859
+ bool simulator_initialized() { return simulator_initialized_; }
860
+ void set_simulator_initialized(bool initialized) {
861
+ simulator_initialized_ = initialized;
862
+ }
863
+
864
+ HashMap* simulator_i_cache() { return simulator_i_cache_; }
865
+ void set_simulator_i_cache(HashMap* hash_map) {
866
+ simulator_i_cache_ = hash_map;
867
+ }
868
+
869
+ Redirection* simulator_redirection() {
870
+ return simulator_redirection_;
871
+ }
872
+ void set_simulator_redirection(Redirection* redirection) {
873
+ simulator_redirection_ = redirection;
874
+ }
875
+ #endif
876
+
877
+ Factory* factory() { return reinterpret_cast<Factory*>(this); }
878
+
879
+ // SerializerDeserializer state.
880
+ static const int kPartialSnapshotCacheCapacity = 1400;
881
+
882
+ static const int kJSRegexpStaticOffsetsVectorSize = 50;
883
+
884
+ #ifdef ENABLE_LOGGING_AND_PROFILING
885
+ Address external_callback() {
886
+ return thread_local_top_.external_callback_;
887
+ }
888
+ void set_external_callback(Address callback) {
889
+ thread_local_top_.external_callback_ = callback;
890
+ }
891
+ #endif
892
+
893
+ #ifdef ENABLE_VMSTATE_TRACKING
894
+ StateTag current_vm_state() {
895
+ return thread_local_top_.current_vm_state_;
896
+ }
897
+
898
+ void SetCurrentVMState(StateTag state) {
899
+ if (RuntimeProfiler::IsEnabled()) {
900
+ if (state == JS) {
901
+ // JS or non-JS -> JS transition.
902
+ RuntimeProfiler::IsolateEnteredJS(this);
903
+ } else if (thread_local_top_.current_vm_state_ == JS) {
904
+ // JS -> non-JS transition.
905
+ ASSERT(RuntimeProfiler::IsSomeIsolateInJS());
906
+ RuntimeProfiler::IsolateExitedJS(this);
907
+ }
908
+ }
909
+ thread_local_top_.current_vm_state_ = state;
910
+ }
911
+ #endif
912
+
913
+ void ResetEagerOptimizingData();
914
+
915
+ private:
916
+ Isolate();
917
+
918
+ // The per-process lock should be acquired before the ThreadDataTable is
919
+ // modified.
920
+ class ThreadDataTable {
921
+ public:
922
+ ThreadDataTable();
923
+ ~ThreadDataTable();
924
+
925
+ PerIsolateThreadData* Lookup(Isolate* isolate, ThreadId thread_id);
926
+ void Insert(PerIsolateThreadData* data);
927
+ void Remove(Isolate* isolate, ThreadId thread_id);
928
+ void Remove(PerIsolateThreadData* data);
929
+
930
+ private:
931
+ PerIsolateThreadData* list_;
932
+ };
933
+
934
+ // These items form a stack synchronously with threads Enter'ing and Exit'ing
935
+ // the Isolate. The top of the stack points to a thread which is currently
936
+ // running the Isolate. When the stack is empty, the Isolate is considered
937
+ // not entered by any thread and can be Disposed.
938
+ // If the same thread enters the Isolate more then once, the entry_count_
939
+ // is incremented rather then a new item pushed to the stack.
940
+ class EntryStackItem {
941
+ public:
942
+ EntryStackItem(PerIsolateThreadData* previous_thread_data,
943
+ Isolate* previous_isolate,
944
+ EntryStackItem* previous_item)
945
+ : entry_count(1),
946
+ previous_thread_data(previous_thread_data),
947
+ previous_isolate(previous_isolate),
948
+ previous_item(previous_item) { }
949
+
950
+ int entry_count;
951
+ PerIsolateThreadData* previous_thread_data;
952
+ Isolate* previous_isolate;
953
+ EntryStackItem* previous_item;
954
+
955
+ DISALLOW_COPY_AND_ASSIGN(EntryStackItem);
956
+ };
957
+
958
+ // This mutex protects highest_thread_id_, thread_data_table_ and
959
+ // default_isolate_.
960
+ static Mutex* process_wide_mutex_;
961
+
962
+ static Thread::LocalStorageKey per_isolate_thread_data_key_;
963
+ static Thread::LocalStorageKey isolate_key_;
964
+ static Thread::LocalStorageKey thread_id_key_;
965
+ static Isolate* default_isolate_;
966
+ static ThreadDataTable* thread_data_table_;
967
+ static ThreadId highest_thread_id_;
968
+
969
+ bool PreInit();
970
+
971
+ void Deinit();
972
+
973
+ static void SetIsolateThreadLocals(Isolate* isolate,
974
+ PerIsolateThreadData* data);
975
+
976
+ enum State {
977
+ UNINITIALIZED, // Some components may not have been allocated.
978
+ PREINITIALIZED, // Components have been allocated but not initialized.
979
+ INITIALIZED // All components are fully initialized.
980
+ };
981
+
982
+ State state_;
983
+ EntryStackItem* entry_stack_;
984
+
985
+ // Allocate and insert PerIsolateThreadData into the ThreadDataTable
986
+ // (regardless of whether such data already exists).
987
+ PerIsolateThreadData* AllocatePerIsolateThreadData(ThreadId thread_id);
988
+
989
+ // Find the PerThread for this particular (isolate, thread) combination.
990
+ // If one does not yet exist, allocate a new one.
991
+ PerIsolateThreadData* FindOrAllocatePerThreadDataForThisThread();
992
+
993
+ // PreInits and returns a default isolate. Needed when a new thread tries
994
+ // to create a Locker for the first time (the lock itself is in the isolate).
995
+ static Isolate* GetDefaultIsolateForLocking();
996
+
997
+ // Initializes the current thread to run this Isolate.
998
+ // Not thread-safe. Multiple threads should not Enter/Exit the same isolate
999
+ // at the same time, this should be prevented using external locking.
1000
+ void Enter();
1001
+
1002
+ // Exits the current thread. The previosuly entered Isolate is restored
1003
+ // for the thread.
1004
+ // Not thread-safe. Multiple threads should not Enter/Exit the same isolate
1005
+ // at the same time, this should be prevented using external locking.
1006
+ void Exit();
1007
+
1008
+ void PreallocatedMemoryThreadStart();
1009
+ void PreallocatedMemoryThreadStop();
1010
+ void InitializeThreadLocal();
1011
+
1012
+ void PrintStackTrace(FILE* out, ThreadLocalTop* thread);
1013
+ void MarkCompactPrologue(bool is_compacting,
1014
+ ThreadLocalTop* archived_thread_data);
1015
+ void MarkCompactEpilogue(bool is_compacting,
1016
+ ThreadLocalTop* archived_thread_data);
1017
+
1018
+ void FillCache();
1019
+
1020
+ int stack_trace_nesting_level_;
1021
+ StringStream* incomplete_message_;
1022
+ // The preallocated memory thread singleton.
1023
+ PreallocatedMemoryThread* preallocated_memory_thread_;
1024
+ Address isolate_addresses_[k_isolate_address_count + 1]; // NOLINT
1025
+ NoAllocationStringAllocator* preallocated_message_space_;
1026
+
1027
+ Bootstrapper* bootstrapper_;
1028
+ RuntimeProfiler* runtime_profiler_;
1029
+ CompilationCache* compilation_cache_;
1030
+ Counters* counters_;
1031
+ CodeRange* code_range_;
1032
+ Mutex* break_access_;
1033
+ Heap heap_;
1034
+ Logger* logger_;
1035
+ StackGuard stack_guard_;
1036
+ StatsTable* stats_table_;
1037
+ StubCache* stub_cache_;
1038
+ DeoptimizerData* deoptimizer_data_;
1039
+ ThreadLocalTop thread_local_top_;
1040
+ bool capture_stack_trace_for_uncaught_exceptions_;
1041
+ int stack_trace_for_uncaught_exceptions_frame_limit_;
1042
+ StackTrace::StackTraceOptions stack_trace_for_uncaught_exceptions_options_;
1043
+ TranscendentalCache* transcendental_cache_;
1044
+ MemoryAllocator* memory_allocator_;
1045
+ KeyedLookupCache* keyed_lookup_cache_;
1046
+ ContextSlotCache* context_slot_cache_;
1047
+ DescriptorLookupCache* descriptor_lookup_cache_;
1048
+ v8::ImplementationUtilities::HandleScopeData handle_scope_data_;
1049
+ HandleScopeImplementer* handle_scope_implementer_;
1050
+ ScannerConstants* scanner_constants_;
1051
+ Zone zone_;
1052
+ PreallocatedStorage in_use_list_;
1053
+ PreallocatedStorage free_list_;
1054
+ bool preallocated_storage_preallocated_;
1055
+ PcToCodeCache* pc_to_code_cache_;
1056
+ StringInputBuffer* write_input_buffer_;
1057
+ GlobalHandles* global_handles_;
1058
+ ContextSwitcher* context_switcher_;
1059
+ ThreadManager* thread_manager_;
1060
+ AstSentinels* ast_sentinels_;
1061
+ RuntimeState runtime_state_;
1062
+ StringInputBuffer liveedit_compare_substrings_buf1_;
1063
+ StringInputBuffer liveedit_compare_substrings_buf2_;
1064
+ StaticResource<SafeStringInputBuffer> compiler_safe_string_input_buffer_;
1065
+ Builtins builtins_;
1066
+ StringTracker* string_tracker_;
1067
+ unibrow::Mapping<unibrow::Ecma262UnCanonicalize> jsregexp_uncanonicalize_;
1068
+ unibrow::Mapping<unibrow::CanonicalizationRange> jsregexp_canonrange_;
1069
+ StringInputBuffer objects_string_compare_buffer_a_;
1070
+ StringInputBuffer objects_string_compare_buffer_b_;
1071
+ StaticResource<StringInputBuffer> objects_string_input_buffer_;
1072
+ unibrow::Mapping<unibrow::Ecma262Canonicalize>
1073
+ regexp_macro_assembler_canonicalize_;
1074
+ RegExpStack* regexp_stack_;
1075
+ unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_;
1076
+ ZoneObjectList frame_element_constant_list_;
1077
+ ZoneObjectList result_constant_list_;
1078
+
1079
+ #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \
1080
+ defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__)
1081
+ bool simulator_initialized_;
1082
+ HashMap* simulator_i_cache_;
1083
+ Redirection* simulator_redirection_;
1084
+ #endif
1085
+
1086
+ #ifdef DEBUG
1087
+ // A static array of histogram info for each type.
1088
+ HistogramInfo heap_histograms_[LAST_TYPE + 1];
1089
+ JSObject::SpillInformation js_spill_information_;
1090
+ int code_kind_statistics_[Code::NUMBER_OF_KINDS];
1091
+ #endif
1092
+
1093
+ #ifdef ENABLE_DEBUGGER_SUPPORT
1094
+ Debugger* debugger_;
1095
+ Debug* debug_;
1096
+ #endif
1097
+
1098
+ #ifdef ENABLE_LOGGING_AND_PROFILING
1099
+ ProducerHeapProfile* producer_heap_profile_;
1100
+ #endif
1101
+
1102
+ #define GLOBAL_BACKING_STORE(type, name, initialvalue) \
1103
+ type name##_;
1104
+ ISOLATE_INIT_LIST(GLOBAL_BACKING_STORE)
1105
+ #undef GLOBAL_BACKING_STORE
1106
+
1107
+ #define GLOBAL_ARRAY_BACKING_STORE(type, name, length) \
1108
+ type name##_[length];
1109
+ ISOLATE_INIT_ARRAY_LIST(GLOBAL_ARRAY_BACKING_STORE)
1110
+ #undef GLOBAL_ARRAY_BACKING_STORE
1111
+
1112
+ #ifdef DEBUG
1113
+ // This class is huge and has a number of fields controlled by
1114
+ // preprocessor defines. Make sure the offsets of these fields agree
1115
+ // between compilation units.
1116
+ #define ISOLATE_FIELD_OFFSET(type, name, ignored) \
1117
+ static const intptr_t name##_debug_offset_;
1118
+ ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET)
1119
+ ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET)
1120
+ #undef ISOLATE_FIELD_OFFSET
1121
+ #endif
1122
+
1123
+ friend class ExecutionAccess;
1124
+ friend class IsolateInitializer;
1125
+ friend class v8::Isolate;
1126
+ friend class v8::Locker;
1127
+
1128
+ DISALLOW_COPY_AND_ASSIGN(Isolate);
1129
+ };
1130
+
1131
+
1132
+ // If the GCC version is 4.1.x or 4.2.x an additional field is added to the
1133
+ // class as a work around for a bug in the generated code found with these
1134
+ // versions of GCC. See V8 issue 122 for details.
1135
+ class SaveContext BASE_EMBEDDED {
1136
+ public:
1137
+ explicit SaveContext(Isolate* isolate) : prev_(isolate->save_context()) {
1138
+ if (isolate->context() != NULL) {
1139
+ context_ = Handle<Context>(isolate->context());
1140
+ #if __GNUC_VERSION__ >= 40100 && __GNUC_VERSION__ < 40300
1141
+ dummy_ = Handle<Context>(isolate->context());
1142
+ #endif
1143
+ }
1144
+ isolate->set_save_context(this);
1145
+
1146
+ // If there is no JS frame under the current C frame, use the value 0.
1147
+ JavaScriptFrameIterator it(isolate);
1148
+ js_sp_ = it.done() ? 0 : it.frame()->sp();
1149
+ }
1150
+
1151
+ ~SaveContext() {
1152
+ if (context_.is_null()) {
1153
+ Isolate* isolate = Isolate::Current();
1154
+ isolate->set_context(NULL);
1155
+ isolate->set_save_context(prev_);
1156
+ } else {
1157
+ Isolate* isolate = context_->GetIsolate();
1158
+ isolate->set_context(*context_);
1159
+ isolate->set_save_context(prev_);
1160
+ }
1161
+ }
1162
+
1163
+ Handle<Context> context() { return context_; }
1164
+ SaveContext* prev() { return prev_; }
1165
+
1166
+ // Returns true if this save context is below a given JavaScript frame.
1167
+ bool below(JavaScriptFrame* frame) {
1168
+ return (js_sp_ == 0) || (frame->sp() < js_sp_);
1169
+ }
1170
+
1171
+ private:
1172
+ Handle<Context> context_;
1173
+ #if __GNUC_VERSION__ >= 40100 && __GNUC_VERSION__ < 40300
1174
+ Handle<Context> dummy_;
1175
+ #endif
1176
+ SaveContext* prev_;
1177
+ Address js_sp_; // The top JS frame's sp when saving context.
1178
+ };
1179
+
1180
+
1181
+ class AssertNoContextChange BASE_EMBEDDED {
1182
+ #ifdef DEBUG
1183
+ public:
1184
+ AssertNoContextChange() :
1185
+ scope_(Isolate::Current()),
1186
+ context_(Isolate::Current()->context(), Isolate::Current()) {
1187
+ }
1188
+
1189
+ ~AssertNoContextChange() {
1190
+ ASSERT(Isolate::Current()->context() == *context_);
1191
+ }
1192
+
1193
+ private:
1194
+ HandleScope scope_;
1195
+ Handle<Context> context_;
1196
+ #else
1197
+ public:
1198
+ AssertNoContextChange() { }
1199
+ #endif
1200
+ };
1201
+
1202
+
1203
+ class ExecutionAccess BASE_EMBEDDED {
1204
+ public:
1205
+ explicit ExecutionAccess(Isolate* isolate) : isolate_(isolate) {
1206
+ Lock(isolate);
1207
+ }
1208
+ ~ExecutionAccess() { Unlock(isolate_); }
1209
+
1210
+ static void Lock(Isolate* isolate) { isolate->break_access_->Lock(); }
1211
+ static void Unlock(Isolate* isolate) { isolate->break_access_->Unlock(); }
1212
+
1213
+ static bool TryLock(Isolate* isolate) {
1214
+ return isolate->break_access_->TryLock();
1215
+ }
1216
+
1217
+ private:
1218
+ Isolate* isolate_;
1219
+ };
1220
+
1221
+
1222
+ // Support for checking for stack-overflows in C++ code.
1223
+ class StackLimitCheck BASE_EMBEDDED {
1224
+ public:
1225
+ explicit StackLimitCheck(Isolate* isolate) : isolate_(isolate) { }
1226
+
1227
+ bool HasOverflowed() const {
1228
+ StackGuard* stack_guard = isolate_->stack_guard();
1229
+ // Stack has overflowed in C++ code only if stack pointer exceeds the C++
1230
+ // stack guard and the limits are not set to interrupt values.
1231
+ // TODO(214): Stack overflows are ignored if a interrupt is pending. This
1232
+ // code should probably always use the initial C++ limit.
1233
+ return (reinterpret_cast<uintptr_t>(this) < stack_guard->climit()) &&
1234
+ stack_guard->IsStackOverflow();
1235
+ }
1236
+ private:
1237
+ Isolate* isolate_;
1238
+ };
1239
+
1240
+
1241
+ // Support for temporarily postponing interrupts. When the outermost
1242
+ // postpone scope is left the interrupts will be re-enabled and any
1243
+ // interrupts that occurred while in the scope will be taken into
1244
+ // account.
1245
+ class PostponeInterruptsScope BASE_EMBEDDED {
1246
+ public:
1247
+ explicit PostponeInterruptsScope(Isolate* isolate)
1248
+ : stack_guard_(isolate->stack_guard()) {
1249
+ stack_guard_->thread_local_.postpone_interrupts_nesting_++;
1250
+ stack_guard_->DisableInterrupts();
1251
+ }
1252
+
1253
+ ~PostponeInterruptsScope() {
1254
+ if (--stack_guard_->thread_local_.postpone_interrupts_nesting_ == 0) {
1255
+ stack_guard_->EnableInterrupts();
1256
+ }
1257
+ }
1258
+ private:
1259
+ StackGuard* stack_guard_;
1260
+ };
1261
+
1262
+
1263
+ // Temporary macros for accessing current isolate and its subobjects.
1264
+ // They provide better readability, especially when used a lot in the code.
1265
+ #define HEAP (v8::internal::Isolate::Current()->heap())
1266
+ #define FACTORY (v8::internal::Isolate::Current()->factory())
1267
+ #define ISOLATE (v8::internal::Isolate::Current())
1268
+ #define ZONE (v8::internal::Isolate::Current()->zone())
1269
+ #define LOGGER (v8::internal::Isolate::Current()->logger())
1270
+
1271
+
1272
+ // Tells whether the global context is marked with out of memory.
1273
+ inline bool Context::has_out_of_memory() {
1274
+ return global_context()->out_of_memory()->IsTrue();
1275
+ }
1276
+
1277
+
1278
+ // Mark the global context with out of memory.
1279
+ inline void Context::mark_out_of_memory() {
1280
+ global_context()->set_out_of_memory(HEAP->true_value());
1281
+ }
1282
+
1283
+
1284
+ // Temporary macro to be used to flag definitions that are indeed static
1285
+ // and not per-isolate. (It would be great to be able to grep for [static]!)
1286
+ #define RLYSTC static
1287
+
1288
+
1289
+ // Temporary macro to be used to flag classes that should be static.
1290
+ #define STATIC_CLASS class
1291
+
1292
+
1293
+ // Temporary macro to be used to flag classes that are completely converted
1294
+ // to be isolate-friendly. Their mix of static/nonstatic methods/fields is
1295
+ // correct.
1296
+ #define ISOLATED_CLASS class
1297
+
1298
+ } } // namespace v8::internal
1299
+
1300
+ // TODO(isolates): Get rid of these -inl.h includes and place them only where
1301
+ // they're needed.
1302
+ #include "allocation-inl.h"
1303
+ #include "zone-inl.h"
1304
+ #include "frames-inl.h"
1305
+
1306
+ #endif // V8_ISOLATE_H_