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,63 @@
1
+ // Copyright 2006-2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #include "../include/v8stdint.h"
29
+ #include "token.h"
30
+
31
+ namespace v8 {
32
+ namespace internal {
33
+
34
+ #define T(name, string, precedence) #name,
35
+ const char* const Token::name_[NUM_TOKENS] = {
36
+ TOKEN_LIST(T, T, IGNORE_TOKEN)
37
+ };
38
+ #undef T
39
+
40
+
41
+ #define T(name, string, precedence) string,
42
+ const char* const Token::string_[NUM_TOKENS] = {
43
+ TOKEN_LIST(T, T, IGNORE_TOKEN)
44
+ };
45
+ #undef T
46
+
47
+
48
+ #define T(name, string, precedence) precedence,
49
+ const int8_t Token::precedence_[NUM_TOKENS] = {
50
+ TOKEN_LIST(T, T, IGNORE_TOKEN)
51
+ };
52
+ #undef T
53
+
54
+
55
+ #define KT(a, b, c) 'T',
56
+ #define KK(a, b, c) 'K',
57
+ const char Token::token_type[] = {
58
+ TOKEN_LIST(KT, KK, IGNORE_TOKEN)
59
+ };
60
+ #undef KT
61
+ #undef KK
62
+
63
+ } } // namespace v8::internal
@@ -0,0 +1,288 @@
1
+ // Copyright 2006-2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #ifndef V8_TOKEN_H_
29
+ #define V8_TOKEN_H_
30
+
31
+ #include "checks.h"
32
+
33
+ namespace v8 {
34
+ namespace internal {
35
+
36
+ // TOKEN_LIST takes a list of 3 macros M, all of which satisfy the
37
+ // same signature M(name, string, precedence), where name is the
38
+ // symbolic token name, string is the corresponding syntactic symbol
39
+ // (or NULL, for literals), and precedence is the precedence (or 0).
40
+ // The parameters are invoked for token categories as follows:
41
+ //
42
+ // T: Non-keyword tokens
43
+ // K: Keyword tokens
44
+ // F: Future (reserved) keyword tokens
45
+
46
+ // IGNORE_TOKEN is a convenience macro that can be supplied as
47
+ // an argument (at any position) for a TOKEN_LIST call. It does
48
+ // nothing with tokens belonging to the respective category.
49
+
50
+ #define IGNORE_TOKEN(name, string, precedence)
51
+
52
+ #define TOKEN_LIST(T, K, F) \
53
+ /* End of source indicator. */ \
54
+ T(EOS, "EOS", 0) \
55
+ \
56
+ /* Punctuators (ECMA-262, section 7.7, page 15). */ \
57
+ T(LPAREN, "(", 0) \
58
+ T(RPAREN, ")", 0) \
59
+ T(LBRACK, "[", 0) \
60
+ T(RBRACK, "]", 0) \
61
+ T(LBRACE, "{", 0) \
62
+ T(RBRACE, "}", 0) \
63
+ T(COLON, ":", 0) \
64
+ T(SEMICOLON, ";", 0) \
65
+ T(PERIOD, ".", 0) \
66
+ T(CONDITIONAL, "?", 3) \
67
+ T(INC, "++", 0) \
68
+ T(DEC, "--", 0) \
69
+ \
70
+ /* Assignment operators. */ \
71
+ /* IsAssignmentOp() and Assignment::is_compound() relies on */ \
72
+ /* this block of enum values being contiguous and sorted in the */ \
73
+ /* same order! */ \
74
+ T(INIT_VAR, "=init_var", 2) /* AST-use only. */ \
75
+ T(INIT_CONST, "=init_const", 2) /* AST-use only. */ \
76
+ T(ASSIGN, "=", 2) \
77
+ T(ASSIGN_BIT_OR, "|=", 2) \
78
+ T(ASSIGN_BIT_XOR, "^=", 2) \
79
+ T(ASSIGN_BIT_AND, "&=", 2) \
80
+ T(ASSIGN_SHL, "<<=", 2) \
81
+ T(ASSIGN_SAR, ">>=", 2) \
82
+ T(ASSIGN_SHR, ">>>=", 2) \
83
+ T(ASSIGN_ADD, "+=", 2) \
84
+ T(ASSIGN_SUB, "-=", 2) \
85
+ T(ASSIGN_MUL, "*=", 2) \
86
+ T(ASSIGN_DIV, "/=", 2) \
87
+ T(ASSIGN_MOD, "%=", 2) \
88
+ \
89
+ /* Binary operators sorted by precedence. */ \
90
+ /* IsBinaryOp() relies on this block of enum values */ \
91
+ /* being contiguous and sorted in the same order! */ \
92
+ T(COMMA, ",", 1) \
93
+ T(OR, "||", 4) \
94
+ T(AND, "&&", 5) \
95
+ T(BIT_OR, "|", 6) \
96
+ T(BIT_XOR, "^", 7) \
97
+ T(BIT_AND, "&", 8) \
98
+ T(SHL, "<<", 11) \
99
+ T(SAR, ">>", 11) \
100
+ T(SHR, ">>>", 11) \
101
+ T(ADD, "+", 12) \
102
+ T(SUB, "-", 12) \
103
+ T(MUL, "*", 13) \
104
+ T(DIV, "/", 13) \
105
+ T(MOD, "%", 13) \
106
+ \
107
+ /* Compare operators sorted by precedence. */ \
108
+ /* IsCompareOp() relies on this block of enum values */ \
109
+ /* being contiguous and sorted in the same order! */ \
110
+ T(EQ, "==", 9) \
111
+ T(NE, "!=", 9) \
112
+ T(EQ_STRICT, "===", 9) \
113
+ T(NE_STRICT, "!==", 9) \
114
+ T(LT, "<", 10) \
115
+ T(GT, ">", 10) \
116
+ T(LTE, "<=", 10) \
117
+ T(GTE, ">=", 10) \
118
+ K(INSTANCEOF, "instanceof", 10) \
119
+ K(IN, "in", 10) \
120
+ \
121
+ /* Unary operators. */ \
122
+ /* IsUnaryOp() relies on this block of enum values */ \
123
+ /* being contiguous and sorted in the same order! */ \
124
+ T(NOT, "!", 0) \
125
+ T(BIT_NOT, "~", 0) \
126
+ K(DELETE, "delete", 0) \
127
+ K(TYPEOF, "typeof", 0) \
128
+ K(VOID, "void", 0) \
129
+ \
130
+ /* Keywords (ECMA-262, section 7.5.2, page 13). */ \
131
+ K(BREAK, "break", 0) \
132
+ K(CASE, "case", 0) \
133
+ K(CATCH, "catch", 0) \
134
+ K(CONTINUE, "continue", 0) \
135
+ K(DEBUGGER, "debugger", 0) \
136
+ K(DEFAULT, "default", 0) \
137
+ /* DELETE */ \
138
+ K(DO, "do", 0) \
139
+ K(ELSE, "else", 0) \
140
+ K(FINALLY, "finally", 0) \
141
+ K(FOR, "for", 0) \
142
+ K(FUNCTION, "function", 0) \
143
+ K(IF, "if", 0) \
144
+ /* IN */ \
145
+ /* INSTANCEOF */ \
146
+ K(NEW, "new", 0) \
147
+ K(RETURN, "return", 0) \
148
+ K(SWITCH, "switch", 0) \
149
+ K(THIS, "this", 0) \
150
+ K(THROW, "throw", 0) \
151
+ K(TRY, "try", 0) \
152
+ /* TYPEOF */ \
153
+ K(VAR, "var", 0) \
154
+ /* VOID */ \
155
+ K(WHILE, "while", 0) \
156
+ K(WITH, "with", 0) \
157
+ \
158
+ /* Literals (ECMA-262, section 7.8, page 16). */ \
159
+ K(NULL_LITERAL, "null", 0) \
160
+ K(TRUE_LITERAL, "true", 0) \
161
+ K(FALSE_LITERAL, "false", 0) \
162
+ T(NUMBER, NULL, 0) \
163
+ T(STRING, NULL, 0) \
164
+ \
165
+ /* Identifiers (not keywords or future reserved words). */ \
166
+ T(IDENTIFIER, NULL, 0) \
167
+ \
168
+ /* Future reserved words (ECMA-262, section 7.6.1.2). */ \
169
+ T(FUTURE_RESERVED_WORD, NULL, 0) \
170
+ K(CONST, "const", 0) \
171
+ K(NATIVE, "native", 0) \
172
+ \
173
+ /* Illegal token - not able to scan. */ \
174
+ T(ILLEGAL, "ILLEGAL", 0) \
175
+ \
176
+ /* Scanner-internal use only. */ \
177
+ T(WHITESPACE, NULL, 0)
178
+
179
+
180
+ class Token {
181
+ public:
182
+ // All token values.
183
+ #define T(name, string, precedence) name,
184
+ enum Value {
185
+ TOKEN_LIST(T, T, IGNORE_TOKEN)
186
+ NUM_TOKENS
187
+ };
188
+ #undef T
189
+
190
+ // Returns a string corresponding to the C++ token name
191
+ // (e.g. "LT" for the token LT).
192
+ static const char* Name(Value tok) {
193
+ ASSERT(tok < NUM_TOKENS); // tok is unsigned
194
+ return name_[tok];
195
+ }
196
+
197
+ // Predicates
198
+ static bool IsKeyword(Value tok) {
199
+ return token_type[tok] == 'K';
200
+ }
201
+
202
+ static bool IsAssignmentOp(Value tok) {
203
+ return INIT_VAR <= tok && tok <= ASSIGN_MOD;
204
+ }
205
+
206
+ static bool IsBinaryOp(Value op) {
207
+ return COMMA <= op && op <= MOD;
208
+ }
209
+
210
+ static bool IsCompareOp(Value op) {
211
+ return EQ <= op && op <= IN;
212
+ }
213
+
214
+ static bool IsOrderedCompareOp(Value op) {
215
+ return op == LT || op == LTE || op == GT || op == GTE;
216
+ }
217
+
218
+ static Value NegateCompareOp(Value op) {
219
+ ASSERT(IsCompareOp(op));
220
+ switch (op) {
221
+ case EQ: return NE;
222
+ case NE: return EQ;
223
+ case EQ_STRICT: return NE_STRICT;
224
+ case LT: return GTE;
225
+ case GT: return LTE;
226
+ case LTE: return GT;
227
+ case GTE: return LT;
228
+ default:
229
+ return op;
230
+ }
231
+ }
232
+
233
+ static Value InvertCompareOp(Value op) {
234
+ ASSERT(IsCompareOp(op));
235
+ switch (op) {
236
+ case EQ: return NE;
237
+ case NE: return EQ;
238
+ case EQ_STRICT: return NE_STRICT;
239
+ case LT: return GT;
240
+ case GT: return LT;
241
+ case LTE: return GTE;
242
+ case GTE: return LTE;
243
+ default:
244
+ return op;
245
+ }
246
+ }
247
+
248
+ static bool IsBitOp(Value op) {
249
+ return (BIT_OR <= op && op <= SHR) || op == BIT_NOT;
250
+ }
251
+
252
+ static bool IsUnaryOp(Value op) {
253
+ return (NOT <= op && op <= VOID) || op == ADD || op == SUB;
254
+ }
255
+
256
+ static bool IsCountOp(Value op) {
257
+ return op == INC || op == DEC;
258
+ }
259
+
260
+ static bool IsShiftOp(Value op) {
261
+ return (SHL <= op) && (op <= SHR);
262
+ }
263
+
264
+ // Returns a string corresponding to the JS token string
265
+ // (.e., "<" for the token LT) or NULL if the token doesn't
266
+ // have a (unique) string (e.g. an IDENTIFIER).
267
+ static const char* String(Value tok) {
268
+ ASSERT(tok < NUM_TOKENS); // tok is unsigned.
269
+ return string_[tok];
270
+ }
271
+
272
+ // Returns the precedence > 0 for binary and compare
273
+ // operators; returns 0 otherwise.
274
+ static int Precedence(Value tok) {
275
+ ASSERT(tok < NUM_TOKENS); // tok is unsigned.
276
+ return precedence_[tok];
277
+ }
278
+
279
+ private:
280
+ static const char* const name_[NUM_TOKENS];
281
+ static const char* const string_[NUM_TOKENS];
282
+ static const int8_t precedence_[NUM_TOKENS];
283
+ static const char token_type[NUM_TOKENS];
284
+ };
285
+
286
+ } } // namespace v8::internal
287
+
288
+ #endif // V8_TOKEN_H_
@@ -0,0 +1,983 @@
1
+ // Copyright 2006-2008 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #include "v8.h"
29
+
30
+ #include "api.h"
31
+ #include "bootstrapper.h"
32
+ #include "compiler.h"
33
+ #include "debug.h"
34
+ #include "execution.h"
35
+ #include "messages.h"
36
+ #include "platform.h"
37
+ #include "simulator.h"
38
+ #include "string-stream.h"
39
+ #include "vm-state-inl.h"
40
+
41
+
42
+ // TODO(isolates): move to isolate.cc. This stuff is kept here to
43
+ // simplify merging.
44
+
45
+ namespace v8 {
46
+ namespace internal {
47
+
48
+ v8::TryCatch* ThreadLocalTop::TryCatchHandler() {
49
+ return TRY_CATCH_FROM_ADDRESS(try_catch_handler_address());
50
+ }
51
+
52
+
53
+ void ThreadLocalTop::Initialize() {
54
+ c_entry_fp_ = 0;
55
+ handler_ = 0;
56
+ #ifdef USE_SIMULATOR
57
+ #ifdef V8_TARGET_ARCH_ARM
58
+ simulator_ = Simulator::current(Isolate::Current());
59
+ #elif V8_TARGET_ARCH_MIPS
60
+ simulator_ = Simulator::current(Isolate::Current());
61
+ #endif
62
+ #endif
63
+ #ifdef ENABLE_LOGGING_AND_PROFILING
64
+ js_entry_sp_ = NULL;
65
+ external_callback_ = NULL;
66
+ #endif
67
+ #ifdef ENABLE_VMSTATE_TRACKING
68
+ current_vm_state_ = EXTERNAL;
69
+ #endif
70
+ try_catch_handler_address_ = NULL;
71
+ context_ = NULL;
72
+ int id = Isolate::Current()->thread_manager()->CurrentId();
73
+ thread_id_ = (id == 0) ? ThreadManager::kInvalidId : id;
74
+ external_caught_exception_ = false;
75
+ failed_access_check_callback_ = NULL;
76
+ save_context_ = NULL;
77
+ catcher_ = NULL;
78
+ }
79
+
80
+
81
+ Address Isolate::get_address_from_id(Isolate::AddressId id) {
82
+ return isolate_addresses_[id];
83
+ }
84
+
85
+
86
+ char* Isolate::Iterate(ObjectVisitor* v, char* thread_storage) {
87
+ ThreadLocalTop* thread = reinterpret_cast<ThreadLocalTop*>(thread_storage);
88
+ Iterate(v, thread);
89
+ return thread_storage + sizeof(ThreadLocalTop);
90
+ }
91
+
92
+
93
+ void Isolate::IterateThread(ThreadVisitor* v) {
94
+ v->VisitThread(this, thread_local_top());
95
+ }
96
+
97
+
98
+ void Isolate::IterateThread(ThreadVisitor* v, char* t) {
99
+ ThreadLocalTop* thread = reinterpret_cast<ThreadLocalTop*>(t);
100
+ v->VisitThread(this, thread);
101
+ }
102
+
103
+
104
+ void Isolate::Iterate(ObjectVisitor* v, ThreadLocalTop* thread) {
105
+ // Visit the roots from the top for a given thread.
106
+ Object* pending;
107
+ // The pending exception can sometimes be a failure. We can't show
108
+ // that to the GC, which only understands objects.
109
+ if (thread->pending_exception_->ToObject(&pending)) {
110
+ v->VisitPointer(&pending);
111
+ thread->pending_exception_ = pending; // In case GC updated it.
112
+ }
113
+ v->VisitPointer(&(thread->pending_message_obj_));
114
+ v->VisitPointer(BitCast<Object**>(&(thread->pending_message_script_)));
115
+ v->VisitPointer(BitCast<Object**>(&(thread->context_)));
116
+ Object* scheduled;
117
+ if (thread->scheduled_exception_->ToObject(&scheduled)) {
118
+ v->VisitPointer(&scheduled);
119
+ thread->scheduled_exception_ = scheduled;
120
+ }
121
+
122
+ for (v8::TryCatch* block = thread->TryCatchHandler();
123
+ block != NULL;
124
+ block = TRY_CATCH_FROM_ADDRESS(block->next_)) {
125
+ v->VisitPointer(BitCast<Object**>(&(block->exception_)));
126
+ v->VisitPointer(BitCast<Object**>(&(block->message_)));
127
+ }
128
+
129
+ // Iterate over pointers on native execution stack.
130
+ for (StackFrameIterator it(this, thread); !it.done(); it.Advance()) {
131
+ it.frame()->Iterate(v);
132
+ }
133
+ }
134
+
135
+
136
+ void Isolate::Iterate(ObjectVisitor* v) {
137
+ ThreadLocalTop* current_t = thread_local_top();
138
+ Iterate(v, current_t);
139
+ }
140
+
141
+
142
+ void Isolate::RegisterTryCatchHandler(v8::TryCatch* that) {
143
+ // The ARM simulator has a separate JS stack. We therefore register
144
+ // the C++ try catch handler with the simulator and get back an
145
+ // address that can be used for comparisons with addresses into the
146
+ // JS stack. When running without the simulator, the address
147
+ // returned will be the address of the C++ try catch handler itself.
148
+ Address address = reinterpret_cast<Address>(
149
+ SimulatorStack::RegisterCTryCatch(reinterpret_cast<uintptr_t>(that)));
150
+ thread_local_top()->set_try_catch_handler_address(address);
151
+ }
152
+
153
+
154
+ void Isolate::UnregisterTryCatchHandler(v8::TryCatch* that) {
155
+ ASSERT(thread_local_top()->TryCatchHandler() == that);
156
+ thread_local_top()->set_try_catch_handler_address(
157
+ reinterpret_cast<Address>(that->next_));
158
+ thread_local_top()->catcher_ = NULL;
159
+ SimulatorStack::UnregisterCTryCatch();
160
+ }
161
+
162
+
163
+ Handle<String> Isolate::StackTraceString() {
164
+ if (stack_trace_nesting_level_ == 0) {
165
+ stack_trace_nesting_level_++;
166
+ HeapStringAllocator allocator;
167
+ StringStream::ClearMentionedObjectCache();
168
+ StringStream accumulator(&allocator);
169
+ incomplete_message_ = &accumulator;
170
+ PrintStack(&accumulator);
171
+ Handle<String> stack_trace = accumulator.ToString();
172
+ incomplete_message_ = NULL;
173
+ stack_trace_nesting_level_ = 0;
174
+ return stack_trace;
175
+ } else if (stack_trace_nesting_level_ == 1) {
176
+ stack_trace_nesting_level_++;
177
+ OS::PrintError(
178
+ "\n\nAttempt to print stack while printing stack (double fault)\n");
179
+ OS::PrintError(
180
+ "If you are lucky you may find a partial stack dump on stdout.\n\n");
181
+ incomplete_message_->OutputToStdOut();
182
+ return factory()->empty_symbol();
183
+ } else {
184
+ OS::Abort();
185
+ // Unreachable
186
+ return factory()->empty_symbol();
187
+ }
188
+ }
189
+
190
+
191
+ Handle<JSArray> Isolate::CaptureCurrentStackTrace(
192
+ int frame_limit, StackTrace::StackTraceOptions options) {
193
+ // Ensure no negative values.
194
+ int limit = Max(frame_limit, 0);
195
+ Handle<JSArray> stack_trace = factory()->NewJSArray(frame_limit);
196
+
197
+ Handle<String> column_key = factory()->LookupAsciiSymbol("column");
198
+ Handle<String> line_key = factory()->LookupAsciiSymbol("lineNumber");
199
+ Handle<String> script_key = factory()->LookupAsciiSymbol("scriptName");
200
+ Handle<String> name_or_source_url_key =
201
+ factory()->LookupAsciiSymbol("nameOrSourceURL");
202
+ Handle<String> script_name_or_source_url_key =
203
+ factory()->LookupAsciiSymbol("scriptNameOrSourceURL");
204
+ Handle<String> function_key = factory()->LookupAsciiSymbol("functionName");
205
+ Handle<String> eval_key = factory()->LookupAsciiSymbol("isEval");
206
+ Handle<String> constructor_key =
207
+ factory()->LookupAsciiSymbol("isConstructor");
208
+
209
+ StackTraceFrameIterator it(this);
210
+ int frames_seen = 0;
211
+ while (!it.done() && (frames_seen < limit)) {
212
+ JavaScriptFrame* frame = it.frame();
213
+ // Set initial size to the maximum inlining level + 1 for the outermost
214
+ // function.
215
+ List<FrameSummary> frames(Compiler::kMaxInliningLevels + 1);
216
+ frame->Summarize(&frames);
217
+ for (int i = frames.length() - 1; i >= 0 && frames_seen < limit; i--) {
218
+ // Create a JSObject to hold the information for the StackFrame.
219
+ Handle<JSObject> stackFrame = factory()->NewJSObject(object_function());
220
+
221
+ Handle<JSFunction> fun = frames[i].function();
222
+ Handle<Script> script(Script::cast(fun->shared()->script()));
223
+
224
+ if (options & StackTrace::kLineNumber) {
225
+ int script_line_offset = script->line_offset()->value();
226
+ int position = frames[i].code()->SourcePosition(frames[i].pc());
227
+ int line_number = GetScriptLineNumber(script, position);
228
+ // line_number is already shifted by the script_line_offset.
229
+ int relative_line_number = line_number - script_line_offset;
230
+ if (options & StackTrace::kColumnOffset && relative_line_number >= 0) {
231
+ Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends()));
232
+ int start = (relative_line_number == 0) ? 0 :
233
+ Smi::cast(line_ends->get(relative_line_number - 1))->value() + 1;
234
+ int column_offset = position - start;
235
+ if (relative_line_number == 0) {
236
+ // For the case where the code is on the same line as the script
237
+ // tag.
238
+ column_offset += script->column_offset()->value();
239
+ }
240
+ SetLocalPropertyNoThrow(stackFrame, column_key,
241
+ Handle<Smi>(Smi::FromInt(column_offset + 1)));
242
+ }
243
+ SetLocalPropertyNoThrow(stackFrame, line_key,
244
+ Handle<Smi>(Smi::FromInt(line_number + 1)));
245
+ }
246
+
247
+ if (options & StackTrace::kScriptName) {
248
+ Handle<Object> script_name(script->name(), this);
249
+ SetLocalPropertyNoThrow(stackFrame, script_key, script_name);
250
+ }
251
+
252
+ if (options & StackTrace::kScriptNameOrSourceURL) {
253
+ Handle<Object> script_name(script->name(), this);
254
+ Handle<JSValue> script_wrapper = GetScriptWrapper(script);
255
+ Handle<Object> property = GetProperty(script_wrapper,
256
+ name_or_source_url_key);
257
+ ASSERT(property->IsJSFunction());
258
+ Handle<JSFunction> method = Handle<JSFunction>::cast(property);
259
+ bool caught_exception;
260
+ Handle<Object> result = Execution::TryCall(method, script_wrapper, 0,
261
+ NULL, &caught_exception);
262
+ if (caught_exception) {
263
+ result = factory()->undefined_value();
264
+ }
265
+ SetLocalPropertyNoThrow(stackFrame, script_name_or_source_url_key,
266
+ result);
267
+ }
268
+
269
+ if (options & StackTrace::kFunctionName) {
270
+ Handle<Object> fun_name(fun->shared()->name(), this);
271
+ if (fun_name->ToBoolean()->IsFalse()) {
272
+ fun_name = Handle<Object>(fun->shared()->inferred_name(), this);
273
+ }
274
+ SetLocalPropertyNoThrow(stackFrame, function_key, fun_name);
275
+ }
276
+
277
+ if (options & StackTrace::kIsEval) {
278
+ int type = Smi::cast(script->compilation_type())->value();
279
+ Handle<Object> is_eval = (type == Script::COMPILATION_TYPE_EVAL) ?
280
+ factory()->true_value() : factory()->false_value();
281
+ SetLocalPropertyNoThrow(stackFrame, eval_key, is_eval);
282
+ }
283
+
284
+ if (options & StackTrace::kIsConstructor) {
285
+ Handle<Object> is_constructor = (frames[i].is_constructor()) ?
286
+ factory()->true_value() : factory()->false_value();
287
+ SetLocalPropertyNoThrow(stackFrame, constructor_key, is_constructor);
288
+ }
289
+
290
+ FixedArray::cast(stack_trace->elements())->set(frames_seen, *stackFrame);
291
+ frames_seen++;
292
+ }
293
+ it.Advance();
294
+ }
295
+
296
+ stack_trace->set_length(Smi::FromInt(frames_seen));
297
+ return stack_trace;
298
+ }
299
+
300
+
301
+ void Isolate::PrintStack() {
302
+ if (stack_trace_nesting_level_ == 0) {
303
+ stack_trace_nesting_level_++;
304
+
305
+ StringAllocator* allocator;
306
+ if (preallocated_message_space_ == NULL) {
307
+ allocator = new HeapStringAllocator();
308
+ } else {
309
+ allocator = preallocated_message_space_;
310
+ }
311
+
312
+ StringStream::ClearMentionedObjectCache();
313
+ StringStream accumulator(allocator);
314
+ incomplete_message_ = &accumulator;
315
+ PrintStack(&accumulator);
316
+ accumulator.OutputToStdOut();
317
+ accumulator.Log();
318
+ incomplete_message_ = NULL;
319
+ stack_trace_nesting_level_ = 0;
320
+ if (preallocated_message_space_ == NULL) {
321
+ // Remove the HeapStringAllocator created above.
322
+ delete allocator;
323
+ }
324
+ } else if (stack_trace_nesting_level_ == 1) {
325
+ stack_trace_nesting_level_++;
326
+ OS::PrintError(
327
+ "\n\nAttempt to print stack while printing stack (double fault)\n");
328
+ OS::PrintError(
329
+ "If you are lucky you may find a partial stack dump on stdout.\n\n");
330
+ incomplete_message_->OutputToStdOut();
331
+ }
332
+ }
333
+
334
+
335
+ static void PrintFrames(StringStream* accumulator,
336
+ StackFrame::PrintMode mode) {
337
+ StackFrameIterator it;
338
+ for (int i = 0; !it.done(); it.Advance()) {
339
+ it.frame()->Print(accumulator, mode, i++);
340
+ }
341
+ }
342
+
343
+
344
+ void Isolate::PrintStack(StringStream* accumulator) {
345
+ if (!IsInitialized()) {
346
+ accumulator->Add(
347
+ "\n==== Stack trace is not available ==========================\n\n");
348
+ accumulator->Add(
349
+ "\n==== Isolate for the thread is not initialized =============\n\n");
350
+ return;
351
+ }
352
+ // The MentionedObjectCache is not GC-proof at the moment.
353
+ AssertNoAllocation nogc;
354
+ ASSERT(StringStream::IsMentionedObjectCacheClear());
355
+
356
+ // Avoid printing anything if there are no frames.
357
+ if (c_entry_fp(thread_local_top()) == 0) return;
358
+
359
+ accumulator->Add(
360
+ "\n==== Stack trace ============================================\n\n");
361
+ PrintFrames(accumulator, StackFrame::OVERVIEW);
362
+
363
+ accumulator->Add(
364
+ "\n==== Details ================================================\n\n");
365
+ PrintFrames(accumulator, StackFrame::DETAILS);
366
+
367
+ accumulator->PrintMentionedObjectCache();
368
+ accumulator->Add("=====================\n\n");
369
+ }
370
+
371
+
372
+ void Isolate::SetFailedAccessCheckCallback(
373
+ v8::FailedAccessCheckCallback callback) {
374
+ thread_local_top()->failed_access_check_callback_ = callback;
375
+ }
376
+
377
+
378
+ void Isolate::ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type) {
379
+ if (!thread_local_top()->failed_access_check_callback_) return;
380
+
381
+ ASSERT(receiver->IsAccessCheckNeeded());
382
+ ASSERT(context());
383
+
384
+ // Get the data object from access check info.
385
+ JSFunction* constructor = JSFunction::cast(receiver->map()->constructor());
386
+ if (!constructor->shared()->IsApiFunction()) return;
387
+ Object* data_obj =
388
+ constructor->shared()->get_api_func_data()->access_check_info();
389
+ if (data_obj == heap_.undefined_value()) return;
390
+
391
+ HandleScope scope;
392
+ Handle<JSObject> receiver_handle(receiver);
393
+ Handle<Object> data(AccessCheckInfo::cast(data_obj)->data());
394
+ thread_local_top()->failed_access_check_callback_(
395
+ v8::Utils::ToLocal(receiver_handle),
396
+ type,
397
+ v8::Utils::ToLocal(data));
398
+ }
399
+
400
+
401
+ enum MayAccessDecision {
402
+ YES, NO, UNKNOWN
403
+ };
404
+
405
+
406
+ static MayAccessDecision MayAccessPreCheck(Isolate* isolate,
407
+ JSObject* receiver,
408
+ v8::AccessType type) {
409
+ // During bootstrapping, callback functions are not enabled yet.
410
+ if (isolate->bootstrapper()->IsActive()) return YES;
411
+
412
+ if (receiver->IsJSGlobalProxy()) {
413
+ Object* receiver_context = JSGlobalProxy::cast(receiver)->context();
414
+ if (!receiver_context->IsContext()) return NO;
415
+
416
+ // Get the global context of current top context.
417
+ // avoid using Isolate::global_context() because it uses Handle.
418
+ Context* global_context = isolate->context()->global()->global_context();
419
+ if (receiver_context == global_context) return YES;
420
+
421
+ if (Context::cast(receiver_context)->security_token() ==
422
+ global_context->security_token())
423
+ return YES;
424
+ }
425
+
426
+ return UNKNOWN;
427
+ }
428
+
429
+
430
+ bool Isolate::MayNamedAccess(JSObject* receiver, Object* key,
431
+ v8::AccessType type) {
432
+ ASSERT(receiver->IsAccessCheckNeeded());
433
+
434
+ // The callers of this method are not expecting a GC.
435
+ AssertNoAllocation no_gc;
436
+
437
+ // Skip checks for hidden properties access. Note, we do not
438
+ // require existence of a context in this case.
439
+ if (key == heap_.hidden_symbol()) return true;
440
+
441
+ // Check for compatibility between the security tokens in the
442
+ // current lexical context and the accessed object.
443
+ ASSERT(context());
444
+
445
+ MayAccessDecision decision = MayAccessPreCheck(this, receiver, type);
446
+ if (decision != UNKNOWN) return decision == YES;
447
+
448
+ // Get named access check callback
449
+ JSFunction* constructor = JSFunction::cast(receiver->map()->constructor());
450
+ if (!constructor->shared()->IsApiFunction()) return false;
451
+
452
+ Object* data_obj =
453
+ constructor->shared()->get_api_func_data()->access_check_info();
454
+ if (data_obj == heap_.undefined_value()) return false;
455
+
456
+ Object* fun_obj = AccessCheckInfo::cast(data_obj)->named_callback();
457
+ v8::NamedSecurityCallback callback =
458
+ v8::ToCData<v8::NamedSecurityCallback>(fun_obj);
459
+
460
+ if (!callback) return false;
461
+
462
+ HandleScope scope(this);
463
+ Handle<JSObject> receiver_handle(receiver, this);
464
+ Handle<Object> key_handle(key, this);
465
+ Handle<Object> data(AccessCheckInfo::cast(data_obj)->data(), this);
466
+ LOG(this, ApiNamedSecurityCheck(key));
467
+ bool result = false;
468
+ {
469
+ // Leaving JavaScript.
470
+ VMState state(this, EXTERNAL);
471
+ result = callback(v8::Utils::ToLocal(receiver_handle),
472
+ v8::Utils::ToLocal(key_handle),
473
+ type,
474
+ v8::Utils::ToLocal(data));
475
+ }
476
+ return result;
477
+ }
478
+
479
+
480
+ bool Isolate::MayIndexedAccess(JSObject* receiver,
481
+ uint32_t index,
482
+ v8::AccessType type) {
483
+ ASSERT(receiver->IsAccessCheckNeeded());
484
+ // Check for compatibility between the security tokens in the
485
+ // current lexical context and the accessed object.
486
+ ASSERT(context());
487
+
488
+ MayAccessDecision decision = MayAccessPreCheck(this, receiver, type);
489
+ if (decision != UNKNOWN) return decision == YES;
490
+
491
+ // Get indexed access check callback
492
+ JSFunction* constructor = JSFunction::cast(receiver->map()->constructor());
493
+ if (!constructor->shared()->IsApiFunction()) return false;
494
+
495
+ Object* data_obj =
496
+ constructor->shared()->get_api_func_data()->access_check_info();
497
+ if (data_obj == heap_.undefined_value()) return false;
498
+
499
+ Object* fun_obj = AccessCheckInfo::cast(data_obj)->indexed_callback();
500
+ v8::IndexedSecurityCallback callback =
501
+ v8::ToCData<v8::IndexedSecurityCallback>(fun_obj);
502
+
503
+ if (!callback) return false;
504
+
505
+ HandleScope scope(this);
506
+ Handle<JSObject> receiver_handle(receiver, this);
507
+ Handle<Object> data(AccessCheckInfo::cast(data_obj)->data(), this);
508
+ LOG(this, ApiIndexedSecurityCheck(index));
509
+ bool result = false;
510
+ {
511
+ // Leaving JavaScript.
512
+ VMState state(this, EXTERNAL);
513
+ result = callback(v8::Utils::ToLocal(receiver_handle),
514
+ index,
515
+ type,
516
+ v8::Utils::ToLocal(data));
517
+ }
518
+ return result;
519
+ }
520
+
521
+
522
+ const char* const Isolate::kStackOverflowMessage =
523
+ "Uncaught RangeError: Maximum call stack size exceeded";
524
+
525
+
526
+ Failure* Isolate::StackOverflow() {
527
+ HandleScope scope;
528
+ Handle<String> key = factory()->stack_overflow_symbol();
529
+ Handle<JSObject> boilerplate =
530
+ Handle<JSObject>::cast(GetProperty(js_builtins_object(), key));
531
+ Handle<Object> exception = Copy(boilerplate);
532
+ // TODO(1240995): To avoid having to call JavaScript code to compute
533
+ // the message for stack overflow exceptions which is very likely to
534
+ // double fault with another stack overflow exception, we use a
535
+ // precomputed message.
536
+ DoThrow(*exception, NULL, kStackOverflowMessage);
537
+ return Failure::Exception();
538
+ }
539
+
540
+
541
+ Failure* Isolate::TerminateExecution() {
542
+ DoThrow(heap_.termination_exception(), NULL, NULL);
543
+ return Failure::Exception();
544
+ }
545
+
546
+
547
+ Failure* Isolate::Throw(Object* exception, MessageLocation* location) {
548
+ DoThrow(exception, location, NULL);
549
+ return Failure::Exception();
550
+ }
551
+
552
+
553
+ Failure* Isolate::ReThrow(MaybeObject* exception, MessageLocation* location) {
554
+ bool can_be_caught_externally = false;
555
+ ShouldReportException(&can_be_caught_externally,
556
+ is_catchable_by_javascript(exception));
557
+ thread_local_top()->catcher_ = can_be_caught_externally ?
558
+ try_catch_handler() : NULL;
559
+
560
+ // Set the exception being re-thrown.
561
+ set_pending_exception(exception);
562
+ return Failure::Exception();
563
+ }
564
+
565
+
566
+ Failure* Isolate::ThrowIllegalOperation() {
567
+ return Throw(heap_.illegal_access_symbol());
568
+ }
569
+
570
+
571
+ void Isolate::ScheduleThrow(Object* exception) {
572
+ // When scheduling a throw we first throw the exception to get the
573
+ // error reporting if it is uncaught before rescheduling it.
574
+ Throw(exception);
575
+ thread_local_top()->scheduled_exception_ = pending_exception();
576
+ thread_local_top()->external_caught_exception_ = false;
577
+ clear_pending_exception();
578
+ }
579
+
580
+
581
+ Failure* Isolate::PromoteScheduledException() {
582
+ MaybeObject* thrown = scheduled_exception();
583
+ clear_scheduled_exception();
584
+ // Re-throw the exception to avoid getting repeated error reporting.
585
+ return ReThrow(thrown);
586
+ }
587
+
588
+
589
+ void Isolate::PrintCurrentStackTrace(FILE* out) {
590
+ StackTraceFrameIterator it(this);
591
+ while (!it.done()) {
592
+ HandleScope scope;
593
+ // Find code position if recorded in relocation info.
594
+ JavaScriptFrame* frame = it.frame();
595
+ int pos = frame->LookupCode()->SourcePosition(frame->pc());
596
+ Handle<Object> pos_obj(Smi::FromInt(pos));
597
+ // Fetch function and receiver.
598
+ Handle<JSFunction> fun(JSFunction::cast(frame->function()));
599
+ Handle<Object> recv(frame->receiver());
600
+ // Advance to the next JavaScript frame and determine if the
601
+ // current frame is the top-level frame.
602
+ it.Advance();
603
+ Handle<Object> is_top_level = it.done()
604
+ ? factory()->true_value()
605
+ : factory()->false_value();
606
+ // Generate and print stack trace line.
607
+ Handle<String> line =
608
+ Execution::GetStackTraceLine(recv, fun, pos_obj, is_top_level);
609
+ if (line->length() > 0) {
610
+ line->PrintOn(out);
611
+ fprintf(out, "\n");
612
+ }
613
+ }
614
+ }
615
+
616
+
617
+ void Isolate::ComputeLocation(MessageLocation* target) {
618
+ *target = MessageLocation(Handle<Script>(heap_.empty_script()), -1, -1);
619
+ StackTraceFrameIterator it(this);
620
+ if (!it.done()) {
621
+ JavaScriptFrame* frame = it.frame();
622
+ JSFunction* fun = JSFunction::cast(frame->function());
623
+ Object* script = fun->shared()->script();
624
+ if (script->IsScript() &&
625
+ !(Script::cast(script)->source()->IsUndefined())) {
626
+ int pos = frame->LookupCode()->SourcePosition(frame->pc());
627
+ // Compute the location from the function and the reloc info.
628
+ Handle<Script> casted_script(Script::cast(script));
629
+ *target = MessageLocation(casted_script, pos, pos + 1);
630
+ }
631
+ }
632
+ }
633
+
634
+
635
+ bool Isolate::ShouldReportException(bool* can_be_caught_externally,
636
+ bool catchable_by_javascript) {
637
+ // Find the top-most try-catch handler.
638
+ StackHandler* handler =
639
+ StackHandler::FromAddress(Isolate::handler(thread_local_top()));
640
+ while (handler != NULL && !handler->is_try_catch()) {
641
+ handler = handler->next();
642
+ }
643
+
644
+ // Get the address of the external handler so we can compare the address to
645
+ // determine which one is closer to the top of the stack.
646
+ Address external_handler_address =
647
+ thread_local_top()->try_catch_handler_address();
648
+
649
+ // The exception has been externally caught if and only if there is
650
+ // an external handler which is on top of the top-most try-catch
651
+ // handler.
652
+ *can_be_caught_externally = external_handler_address != NULL &&
653
+ (handler == NULL || handler->address() > external_handler_address ||
654
+ !catchable_by_javascript);
655
+
656
+ if (*can_be_caught_externally) {
657
+ // Only report the exception if the external handler is verbose.
658
+ return try_catch_handler()->is_verbose_;
659
+ } else {
660
+ // Report the exception if it isn't caught by JavaScript code.
661
+ return handler == NULL;
662
+ }
663
+ }
664
+
665
+
666
+ void Isolate::DoThrow(MaybeObject* exception,
667
+ MessageLocation* location,
668
+ const char* message) {
669
+ ASSERT(!has_pending_exception());
670
+
671
+ HandleScope scope;
672
+ Object* exception_object = Smi::FromInt(0);
673
+ bool is_object = exception->ToObject(&exception_object);
674
+ Handle<Object> exception_handle(exception_object);
675
+
676
+ // Determine reporting and whether the exception is caught externally.
677
+ bool catchable_by_javascript = is_catchable_by_javascript(exception);
678
+ // Only real objects can be caught by JS.
679
+ ASSERT(!catchable_by_javascript || is_object);
680
+ bool can_be_caught_externally = false;
681
+ bool should_report_exception =
682
+ ShouldReportException(&can_be_caught_externally, catchable_by_javascript);
683
+ bool report_exception = catchable_by_javascript && should_report_exception;
684
+
685
+ #ifdef ENABLE_DEBUGGER_SUPPORT
686
+ // Notify debugger of exception.
687
+ if (catchable_by_javascript) {
688
+ debugger_->OnException(exception_handle, report_exception);
689
+ }
690
+ #endif
691
+
692
+ // Generate the message.
693
+ Handle<Object> message_obj;
694
+ MessageLocation potential_computed_location;
695
+ bool try_catch_needs_message =
696
+ can_be_caught_externally &&
697
+ try_catch_handler()->capture_message_;
698
+ if (report_exception || try_catch_needs_message) {
699
+ if (location == NULL) {
700
+ // If no location was specified we use a computed one instead
701
+ ComputeLocation(&potential_computed_location);
702
+ location = &potential_computed_location;
703
+ }
704
+ if (!bootstrapper()->IsActive()) {
705
+ // It's not safe to try to make message objects or collect stack
706
+ // traces while the bootstrapper is active since the infrastructure
707
+ // may not have been properly initialized.
708
+ Handle<String> stack_trace;
709
+ if (FLAG_trace_exception) stack_trace = StackTraceString();
710
+ Handle<JSArray> stack_trace_object;
711
+ if (report_exception && capture_stack_trace_for_uncaught_exceptions_) {
712
+ stack_trace_object = CaptureCurrentStackTrace(
713
+ stack_trace_for_uncaught_exceptions_frame_limit_,
714
+ stack_trace_for_uncaught_exceptions_options_);
715
+ }
716
+ ASSERT(is_object); // Can't use the handle unless there's a real object.
717
+ message_obj = MessageHandler::MakeMessageObject("uncaught_exception",
718
+ location, HandleVector<Object>(&exception_handle, 1), stack_trace,
719
+ stack_trace_object);
720
+ }
721
+ }
722
+
723
+ // Save the message for reporting if the the exception remains uncaught.
724
+ thread_local_top()->has_pending_message_ = report_exception;
725
+ thread_local_top()->pending_message_ = message;
726
+ if (!message_obj.is_null()) {
727
+ thread_local_top()->pending_message_obj_ = *message_obj;
728
+ if (location != NULL) {
729
+ thread_local_top()->pending_message_script_ = *location->script();
730
+ thread_local_top()->pending_message_start_pos_ = location->start_pos();
731
+ thread_local_top()->pending_message_end_pos_ = location->end_pos();
732
+ }
733
+ }
734
+
735
+ // Do not forget to clean catcher_ if currently thrown exception cannot
736
+ // be caught. If necessary, ReThrow will update the catcher.
737
+ thread_local_top()->catcher_ = can_be_caught_externally ?
738
+ try_catch_handler() : NULL;
739
+
740
+ // NOTE: Notifying the debugger or generating the message
741
+ // may have caused new exceptions. For now, we just ignore
742
+ // that and set the pending exception to the original one.
743
+ if (is_object) {
744
+ set_pending_exception(*exception_handle);
745
+ } else {
746
+ // Failures are not on the heap so they neither need nor work with handles.
747
+ ASSERT(exception_handle->IsFailure());
748
+ set_pending_exception(exception);
749
+ }
750
+ }
751
+
752
+
753
+ bool Isolate::IsExternallyCaught() {
754
+ ASSERT(has_pending_exception());
755
+
756
+ if ((thread_local_top()->catcher_ == NULL) ||
757
+ (try_catch_handler() != thread_local_top()->catcher_)) {
758
+ // When throwing the exception, we found no v8::TryCatch
759
+ // which should care about this exception.
760
+ return false;
761
+ }
762
+
763
+ if (!is_catchable_by_javascript(pending_exception())) {
764
+ return true;
765
+ }
766
+
767
+ // Get the address of the external handler so we can compare the address to
768
+ // determine which one is closer to the top of the stack.
769
+ Address external_handler_address =
770
+ thread_local_top()->try_catch_handler_address();
771
+ ASSERT(external_handler_address != NULL);
772
+
773
+ // The exception has been externally caught if and only if there is
774
+ // an external handler which is on top of the top-most try-finally
775
+ // handler.
776
+ // There should be no try-catch blocks as they would prohibit us from
777
+ // finding external catcher in the first place (see catcher_ check above).
778
+ //
779
+ // Note, that finally clause would rethrow an exception unless it's
780
+ // aborted by jumps in control flow like return, break, etc. and we'll
781
+ // have another chances to set proper v8::TryCatch.
782
+ StackHandler* handler =
783
+ StackHandler::FromAddress(Isolate::handler(thread_local_top()));
784
+ while (handler != NULL && handler->address() < external_handler_address) {
785
+ ASSERT(!handler->is_try_catch());
786
+ if (handler->is_try_finally()) return false;
787
+
788
+ handler = handler->next();
789
+ }
790
+
791
+ return true;
792
+ }
793
+
794
+
795
+ void Isolate::ReportPendingMessages() {
796
+ ASSERT(has_pending_exception());
797
+ // If the pending exception is OutOfMemoryException set out_of_memory in
798
+ // the global context. Note: We have to mark the global context here
799
+ // since the GenerateThrowOutOfMemory stub cannot make a RuntimeCall to
800
+ // set it.
801
+ bool external_caught = IsExternallyCaught();
802
+ thread_local_top()->external_caught_exception_ = external_caught;
803
+ HandleScope scope(this);
804
+ if (thread_local_top()->pending_exception_ ==
805
+ Failure::OutOfMemoryException()) {
806
+ context()->mark_out_of_memory();
807
+ } else if (thread_local_top()->pending_exception_ ==
808
+ heap_.termination_exception()) {
809
+ if (external_caught) {
810
+ try_catch_handler()->can_continue_ = false;
811
+ try_catch_handler()->exception_ = heap_.null_value();
812
+ }
813
+ } else {
814
+ // At this point all non-object (failure) exceptions have
815
+ // been dealt with so this shouldn't fail.
816
+ Object* pending_exception_object = pending_exception()->ToObjectUnchecked();
817
+ Handle<Object> exception(pending_exception_object);
818
+ thread_local_top()->external_caught_exception_ = false;
819
+ if (external_caught) {
820
+ try_catch_handler()->can_continue_ = true;
821
+ try_catch_handler()->exception_ = thread_local_top()->pending_exception_;
822
+ if (!thread_local_top()->pending_message_obj_->IsTheHole()) {
823
+ try_catch_handler()->message_ =
824
+ thread_local_top()->pending_message_obj_;
825
+ }
826
+ }
827
+ if (thread_local_top()->has_pending_message_) {
828
+ thread_local_top()->has_pending_message_ = false;
829
+ if (thread_local_top()->pending_message_ != NULL) {
830
+ MessageHandler::ReportMessage(thread_local_top()->pending_message_);
831
+ } else if (!thread_local_top()->pending_message_obj_->IsTheHole()) {
832
+ Handle<Object> message_obj(thread_local_top()->pending_message_obj_);
833
+ if (thread_local_top()->pending_message_script_ != NULL) {
834
+ Handle<Script> script(thread_local_top()->pending_message_script_);
835
+ int start_pos = thread_local_top()->pending_message_start_pos_;
836
+ int end_pos = thread_local_top()->pending_message_end_pos_;
837
+ MessageLocation location(script, start_pos, end_pos);
838
+ MessageHandler::ReportMessage(&location, message_obj);
839
+ } else {
840
+ MessageHandler::ReportMessage(NULL, message_obj);
841
+ }
842
+ }
843
+ }
844
+ thread_local_top()->external_caught_exception_ = external_caught;
845
+ set_pending_exception(*exception);
846
+ }
847
+ clear_pending_message();
848
+ }
849
+
850
+
851
+ void Isolate::TraceException(bool flag) {
852
+ FLAG_trace_exception = flag; // TODO(isolates): This is an unfortunate use.
853
+ }
854
+
855
+
856
+ bool Isolate::OptionalRescheduleException(bool is_bottom_call) {
857
+ // Allways reschedule out of memory exceptions.
858
+ if (!is_out_of_memory()) {
859
+ bool is_termination_exception =
860
+ pending_exception() == heap_.termination_exception();
861
+
862
+ // Do not reschedule the exception if this is the bottom call.
863
+ bool clear_exception = is_bottom_call;
864
+
865
+ if (is_termination_exception) {
866
+ if (is_bottom_call) {
867
+ thread_local_top()->external_caught_exception_ = false;
868
+ clear_pending_exception();
869
+ return false;
870
+ }
871
+ } else if (thread_local_top()->external_caught_exception_) {
872
+ // If the exception is externally caught, clear it if there are no
873
+ // JavaScript frames on the way to the C++ frame that has the
874
+ // external handler.
875
+ ASSERT(thread_local_top()->try_catch_handler_address() != NULL);
876
+ Address external_handler_address =
877
+ thread_local_top()->try_catch_handler_address();
878
+ JavaScriptFrameIterator it;
879
+ if (it.done() || (it.frame()->sp() > external_handler_address)) {
880
+ clear_exception = true;
881
+ }
882
+ }
883
+
884
+ // Clear the exception if needed.
885
+ if (clear_exception) {
886
+ thread_local_top()->external_caught_exception_ = false;
887
+ clear_pending_exception();
888
+ return false;
889
+ }
890
+ }
891
+
892
+ // Reschedule the exception.
893
+ thread_local_top()->scheduled_exception_ = pending_exception();
894
+ clear_pending_exception();
895
+ return true;
896
+ }
897
+
898
+
899
+ void Isolate::SetCaptureStackTraceForUncaughtExceptions(
900
+ bool capture,
901
+ int frame_limit,
902
+ StackTrace::StackTraceOptions options) {
903
+ capture_stack_trace_for_uncaught_exceptions_ = capture;
904
+ stack_trace_for_uncaught_exceptions_frame_limit_ = frame_limit;
905
+ stack_trace_for_uncaught_exceptions_options_ = options;
906
+ }
907
+
908
+
909
+ bool Isolate::is_out_of_memory() {
910
+ if (has_pending_exception()) {
911
+ MaybeObject* e = pending_exception();
912
+ if (e->IsFailure() && Failure::cast(e)->IsOutOfMemoryException()) {
913
+ return true;
914
+ }
915
+ }
916
+ if (has_scheduled_exception()) {
917
+ MaybeObject* e = scheduled_exception();
918
+ if (e->IsFailure() && Failure::cast(e)->IsOutOfMemoryException()) {
919
+ return true;
920
+ }
921
+ }
922
+ return false;
923
+ }
924
+
925
+
926
+ Handle<Context> Isolate::global_context() {
927
+ GlobalObject* global = thread_local_top()->context_->global();
928
+ return Handle<Context>(global->global_context());
929
+ }
930
+
931
+
932
+ Handle<Context> Isolate::GetCallingGlobalContext() {
933
+ JavaScriptFrameIterator it;
934
+ #ifdef ENABLE_DEBUGGER_SUPPORT
935
+ if (debug_->InDebugger()) {
936
+ while (!it.done()) {
937
+ JavaScriptFrame* frame = it.frame();
938
+ Context* context = Context::cast(frame->context());
939
+ if (context->global_context() == *debug_->debug_context()) {
940
+ it.Advance();
941
+ } else {
942
+ break;
943
+ }
944
+ }
945
+ }
946
+ #endif // ENABLE_DEBUGGER_SUPPORT
947
+ if (it.done()) return Handle<Context>::null();
948
+ JavaScriptFrame* frame = it.frame();
949
+ Context* context = Context::cast(frame->context());
950
+ return Handle<Context>(context->global_context());
951
+ }
952
+
953
+
954
+ char* Isolate::ArchiveThread(char* to) {
955
+ if (RuntimeProfiler::IsEnabled() && current_vm_state() == JS) {
956
+ RuntimeProfiler::IsolateExitedJS(this);
957
+ }
958
+ memcpy(to, reinterpret_cast<char*>(thread_local_top()),
959
+ sizeof(ThreadLocalTop));
960
+ InitializeThreadLocal();
961
+ return to + sizeof(ThreadLocalTop);
962
+ }
963
+
964
+
965
+ char* Isolate::RestoreThread(char* from) {
966
+ memcpy(reinterpret_cast<char*>(thread_local_top()), from,
967
+ sizeof(ThreadLocalTop));
968
+ // This might be just paranoia, but it seems to be needed in case a
969
+ // thread_local_ is restored on a separate OS thread.
970
+ #ifdef USE_SIMULATOR
971
+ #ifdef V8_TARGET_ARCH_ARM
972
+ thread_local_top()->simulator_ = Simulator::current(this);
973
+ #elif V8_TARGET_ARCH_MIPS
974
+ thread_local_top()->simulator_ = Simulator::current(this);
975
+ #endif
976
+ #endif
977
+ if (RuntimeProfiler::IsEnabled() && current_vm_state() == JS) {
978
+ RuntimeProfiler::IsolateEnteredJS(this);
979
+ }
980
+ return from + sizeof(ThreadLocalTop);
981
+ }
982
+
983
+ } } // namespace v8::internal