therubyracer 0.8.1.pre2 → 0.8.1

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

Potentially problematic release.


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

Files changed (877) hide show
  1. data/Changelog.md +2 -1
  2. data/README.md +6 -3
  3. data/ext/v8/upstream/3.1.8/.gitignore +31 -0
  4. data/ext/v8/upstream/3.1.8/AUTHORS +40 -0
  5. data/ext/v8/upstream/3.1.8/ChangeLog +2566 -0
  6. data/ext/v8/upstream/3.1.8/LICENSE +52 -0
  7. data/ext/v8/upstream/3.1.8/LICENSE.strongtalk +29 -0
  8. data/ext/v8/upstream/3.1.8/LICENSE.v8 +26 -0
  9. data/ext/v8/upstream/3.1.8/LICENSE.valgrind +45 -0
  10. data/ext/v8/upstream/3.1.8/SConstruct +1192 -0
  11. data/ext/v8/upstream/3.1.8/build/README.txt +25 -0
  12. data/ext/v8/upstream/3.1.8/build/all.gyp +18 -0
  13. data/ext/v8/upstream/3.1.8/build/armu.gypi +32 -0
  14. data/ext/v8/upstream/3.1.8/build/common.gypi +82 -0
  15. data/ext/v8/upstream/3.1.8/build/gyp_v8 +145 -0
  16. data/ext/v8/upstream/3.1.8/include/v8-debug.h +384 -0
  17. data/ext/v8/upstream/3.1.8/include/v8-preparser.h +116 -0
  18. data/ext/v8/upstream/3.1.8/include/v8-profiler.h +426 -0
  19. data/ext/v8/upstream/3.1.8/include/v8-testing.h +99 -0
  20. data/ext/v8/upstream/3.1.8/include/v8.h +3846 -0
  21. data/ext/v8/upstream/3.1.8/include/v8stdint.h +53 -0
  22. data/ext/v8/upstream/3.1.8/preparser/preparser-process.cc +206 -0
  23. data/ext/v8/upstream/3.1.8/src/SConscript +356 -0
  24. data/ext/v8/upstream/3.1.8/src/accessors.cc +907 -0
  25. data/ext/v8/upstream/3.1.8/src/accessors.h +121 -0
  26. data/ext/v8/upstream/3.1.8/src/allocation.cc +204 -0
  27. data/ext/v8/upstream/3.1.8/src/allocation.h +176 -0
  28. data/ext/v8/upstream/3.1.8/src/api.cc +5191 -0
  29. data/ext/v8/upstream/3.1.8/src/api.h +508 -0
  30. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/apinatives.js +0 -0
  31. data/ext/v8/upstream/3.1.8/src/apiutils.h +80 -0
  32. data/ext/v8/upstream/3.1.8/src/arguments.h +105 -0
  33. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm-inl.h +352 -0
  34. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.cc +2756 -0
  35. data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.h +1294 -0
  36. data/ext/v8/upstream/3.1.8/src/arm/builtins-arm.cc +1628 -0
  37. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.cc +6783 -0
  38. data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.h +657 -0
  39. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm-inl.h +48 -0
  40. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.cc +7403 -0
  41. data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.h +595 -0
  42. data/ext/v8/upstream/3.1.8/src/arm/constants-arm.cc +152 -0
  43. data/ext/v8/upstream/3.1.8/src/arm/constants-arm.h +769 -0
  44. data/ext/v8/upstream/3.1.8/src/arm/cpu-arm.cc +147 -0
  45. data/ext/v8/upstream/3.1.8/src/arm/debug-arm.cc +315 -0
  46. data/ext/v8/upstream/3.1.8/src/arm/deoptimizer-arm.cc +700 -0
  47. data/ext/v8/upstream/3.1.8/src/arm/disasm-arm.cc +1439 -0
  48. data/ext/v8/upstream/3.1.8/src/arm/frames-arm.cc +45 -0
  49. data/ext/v8/upstream/3.1.8/src/arm/frames-arm.h +168 -0
  50. data/ext/v8/upstream/3.1.8/src/arm/full-codegen-arm.cc +4230 -0
  51. data/ext/v8/upstream/3.1.8/src/arm/ic-arm.cc +1799 -0
  52. data/ext/v8/upstream/3.1.8/src/arm/jump-target-arm.cc +174 -0
  53. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.cc +2041 -0
  54. data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.h +2046 -0
  55. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.cc +3822 -0
  56. data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.h +312 -0
  57. data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.cc +303 -0
  58. data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.h +84 -0
  59. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.cc +2701 -0
  60. data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.h +1015 -0
  61. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.cc +1280 -0
  62. data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.h +252 -0
  63. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm-inl.h +0 -0
  64. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.cc +0 -0
  65. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.h +0 -0
  66. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.cc +3165 -0
  67. data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.h +402 -0
  68. data/ext/v8/upstream/3.1.8/src/arm/stub-cache-arm.cc +4077 -0
  69. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/virtual-frame-arm-inl.h +0 -0
  70. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.cc +843 -0
  71. data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.h +520 -0
  72. data/ext/v8/upstream/3.1.8/src/array.js +1231 -0
  73. data/ext/v8/upstream/3.1.8/src/assembler.cc +973 -0
  74. data/ext/v8/upstream/3.1.8/src/assembler.h +787 -0
  75. data/ext/v8/upstream/3.1.8/src/ast-inl.h +107 -0
  76. data/ext/v8/upstream/3.1.8/src/ast.cc +1067 -0
  77. data/ext/v8/upstream/3.1.8/src/ast.h +2177 -0
  78. data/ext/v8/upstream/3.1.8/src/atomicops.h +165 -0
  79. data/ext/v8/upstream/3.1.8/src/atomicops_internals_arm_gcc.h +145 -0
  80. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.cc +126 -0
  81. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.h +287 -0
  82. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_macosx.h +301 -0
  83. data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_msvc.h +203 -0
  84. data/ext/v8/upstream/3.1.8/src/bignum-dtoa.cc +655 -0
  85. data/ext/v8/upstream/3.1.8/src/bignum-dtoa.h +81 -0
  86. data/ext/v8/upstream/3.1.8/src/bignum.cc +768 -0
  87. data/ext/v8/upstream/3.1.8/src/bignum.h +140 -0
  88. data/ext/v8/upstream/3.1.8/src/bootstrapper.cc +1888 -0
  89. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/bootstrapper.h +0 -0
  90. data/ext/v8/upstream/3.1.8/src/builtins.cc +1586 -0
  91. data/ext/v8/upstream/3.1.8/src/builtins.h +339 -0
  92. data/ext/v8/upstream/3.1.8/src/bytecodes-irregexp.h +105 -0
  93. data/ext/v8/upstream/3.1.8/src/cached-powers.cc +177 -0
  94. data/ext/v8/upstream/3.1.8/src/cached-powers.h +65 -0
  95. data/ext/v8/upstream/3.1.8/src/char-predicates-inl.h +94 -0
  96. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/char-predicates.h +0 -0
  97. data/ext/v8/upstream/3.1.8/src/checks.cc +110 -0
  98. data/ext/v8/upstream/3.1.8/src/checks.h +292 -0
  99. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue-inl.h +0 -0
  100. data/ext/v8/upstream/3.1.8/src/circular-queue.cc +122 -0
  101. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue.h +0 -0
  102. data/ext/v8/upstream/3.1.8/src/code-stubs.cc +230 -0
  103. data/ext/v8/upstream/3.1.8/src/code-stubs.h +950 -0
  104. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/code.h +0 -0
  105. data/ext/v8/upstream/3.1.8/src/codegen-inl.h +64 -0
  106. data/ext/v8/upstream/3.1.8/src/codegen.cc +495 -0
  107. data/ext/v8/upstream/3.1.8/src/codegen.h +245 -0
  108. data/ext/v8/upstream/3.1.8/src/compilation-cache.cc +654 -0
  109. data/ext/v8/upstream/3.1.8/src/compilation-cache.h +112 -0
  110. data/ext/v8/upstream/3.1.8/src/compiler.cc +806 -0
  111. data/ext/v8/upstream/3.1.8/src/compiler.h +290 -0
  112. data/ext/v8/upstream/3.1.8/src/contexts.cc +320 -0
  113. data/ext/v8/upstream/3.1.8/src/contexts.h +376 -0
  114. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/conversions-inl.h +0 -0
  115. data/ext/v8/upstream/3.1.8/src/conversions.cc +1069 -0
  116. data/ext/v8/upstream/3.1.8/src/conversions.h +122 -0
  117. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/counters.cc +0 -0
  118. data/ext/v8/upstream/3.1.8/src/counters.h +242 -0
  119. data/ext/v8/upstream/3.1.8/src/cpu-profiler-inl.h +100 -0
  120. data/ext/v8/upstream/3.1.8/src/cpu-profiler.cc +554 -0
  121. data/ext/v8/upstream/3.1.8/src/cpu-profiler.h +291 -0
  122. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/cpu.h +0 -0
  123. data/ext/v8/upstream/3.1.8/src/d8-debug.cc +367 -0
  124. data/ext/v8/upstream/3.1.8/src/d8-debug.h +157 -0
  125. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-posix.cc +0 -0
  126. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-readline.cc +0 -0
  127. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-windows.cc +0 -0
  128. data/ext/v8/upstream/3.1.8/src/d8.cc +792 -0
  129. data/ext/v8/upstream/3.1.8/src/d8.gyp +85 -0
  130. data/ext/v8/upstream/3.1.8/src/d8.h +231 -0
  131. data/ext/v8/upstream/3.1.8/src/d8.js +2798 -0
  132. data/ext/v8/upstream/3.1.8/src/data-flow.cc +545 -0
  133. data/ext/v8/upstream/3.1.8/src/data-flow.h +379 -0
  134. data/ext/v8/upstream/3.1.8/src/date.js +1103 -0
  135. data/ext/v8/upstream/3.1.8/src/dateparser-inl.h +125 -0
  136. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/dateparser.cc +0 -0
  137. data/ext/v8/upstream/3.1.8/src/dateparser.h +263 -0
  138. data/ext/v8/upstream/3.1.8/src/debug-agent.cc +446 -0
  139. data/ext/v8/upstream/3.1.8/src/debug-agent.h +131 -0
  140. data/ext/v8/upstream/3.1.8/src/debug-debugger.js +2569 -0
  141. data/ext/v8/upstream/3.1.8/src/debug.cc +3085 -0
  142. data/ext/v8/upstream/3.1.8/src/debug.h +1025 -0
  143. data/ext/v8/upstream/3.1.8/src/deoptimizer.cc +1185 -0
  144. data/ext/v8/upstream/3.1.8/src/deoptimizer.h +529 -0
  145. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disasm.h +0 -0
  146. data/ext/v8/upstream/3.1.8/src/disassembler.cc +338 -0
  147. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disassembler.h +0 -0
  148. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.cc +0 -0
  149. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.h +0 -0
  150. data/ext/v8/upstream/3.1.8/src/double.h +238 -0
  151. data/ext/v8/upstream/3.1.8/src/dtoa.cc +103 -0
  152. data/ext/v8/upstream/3.1.8/src/dtoa.h +85 -0
  153. data/ext/v8/upstream/3.1.8/src/execution.cc +735 -0
  154. data/ext/v8/upstream/3.1.8/src/execution.h +322 -0
  155. data/ext/v8/upstream/3.1.8/src/extensions/experimental/experimental.gyp +53 -0
  156. data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.cc +264 -0
  157. data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.h +64 -0
  158. data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.cc +141 -0
  159. data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.h +50 -0
  160. data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.cc +58 -0
  161. data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.h +49 -0
  162. data/ext/v8/upstream/3.1.8/src/factory.cc +1087 -0
  163. data/ext/v8/upstream/3.1.8/src/factory.h +432 -0
  164. data/ext/v8/upstream/3.1.8/src/fast-dtoa.cc +736 -0
  165. data/ext/v8/upstream/3.1.8/src/fast-dtoa.h +83 -0
  166. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.cc +0 -0
  167. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.h +0 -0
  168. data/ext/v8/upstream/3.1.8/src/flag-definitions.h +552 -0
  169. data/ext/v8/upstream/3.1.8/src/flags.cc +551 -0
  170. data/ext/v8/upstream/3.1.8/src/flags.h +79 -0
  171. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/frame-element.cc +0 -0
  172. data/ext/v8/upstream/3.1.8/src/frame-element.h +277 -0
  173. data/ext/v8/upstream/3.1.8/src/frames-inl.h +210 -0
  174. data/ext/v8/upstream/3.1.8/src/frames.cc +1232 -0
  175. data/ext/v8/upstream/3.1.8/src/frames.h +826 -0
  176. data/ext/v8/upstream/3.1.8/src/full-codegen.cc +1382 -0
  177. data/ext/v8/upstream/3.1.8/src/full-codegen.h +751 -0
  178. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.cc +90 -0
  179. data/ext/v8/upstream/3.1.8/src/func-name-inferrer.h +111 -0
  180. data/ext/v8/upstream/3.1.8/src/gdb-jit.cc +1547 -0
  181. data/ext/v8/upstream/3.1.8/src/gdb-jit.h +138 -0
  182. data/ext/v8/upstream/3.1.8/src/global-handles.cc +534 -0
  183. data/ext/v8/upstream/3.1.8/src/global-handles.h +181 -0
  184. data/ext/v8/upstream/3.1.8/src/globals.h +325 -0
  185. data/ext/v8/upstream/3.1.8/src/handles-inl.h +80 -0
  186. data/ext/v8/upstream/3.1.8/src/handles.cc +910 -0
  187. data/ext/v8/upstream/3.1.8/src/handles.h +424 -0
  188. data/ext/v8/upstream/3.1.8/src/hashmap.cc +230 -0
  189. data/ext/v8/upstream/3.1.8/src/hashmap.h +121 -0
  190. data/ext/v8/upstream/3.1.8/src/heap-inl.h +587 -0
  191. data/ext/v8/upstream/3.1.8/src/heap-profiler.cc +1128 -0
  192. data/ext/v8/upstream/3.1.8/src/heap-profiler.h +381 -0
  193. data/ext/v8/upstream/3.1.8/src/heap.cc +5610 -0
  194. data/ext/v8/upstream/3.1.8/src/heap.h +2218 -0
  195. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.cc +1490 -0
  196. data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.h +3493 -0
  197. data/ext/v8/upstream/3.1.8/src/hydrogen.cc +6056 -0
  198. data/ext/v8/upstream/3.1.8/src/hydrogen.h +1091 -0
  199. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32-inl.h +429 -0
  200. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.cc +2800 -0
  201. data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.h +1093 -0
  202. data/ext/v8/upstream/3.1.8/src/ia32/builtins-ia32.cc +1590 -0
  203. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.cc +6624 -0
  204. data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.h +536 -0
  205. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/codegen-ia32-inl.h +0 -0
  206. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.cc +10354 -0
  207. data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.h +798 -0
  208. data/ext/v8/upstream/3.1.8/src/ia32/cpu-ia32.cc +87 -0
  209. data/ext/v8/upstream/3.1.8/src/ia32/debug-ia32.cc +309 -0
  210. data/ext/v8/upstream/3.1.8/src/ia32/deoptimizer-ia32.cc +664 -0
  211. data/ext/v8/upstream/3.1.8/src/ia32/disasm-ia32.cc +1597 -0
  212. data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.cc +45 -0
  213. data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.h +140 -0
  214. data/ext/v8/upstream/3.1.8/src/ia32/full-codegen-ia32.cc +4278 -0
  215. data/ext/v8/upstream/3.1.8/src/ia32/ic-ia32.cc +1786 -0
  216. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/jump-target-ia32.cc +0 -0
  217. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.cc +3880 -0
  218. data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.h +309 -0
  219. data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.cc +460 -0
  220. data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.h +110 -0
  221. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.cc +2095 -0
  222. data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.h +2127 -0
  223. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.cc +2031 -0
  224. data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.h +798 -0
  225. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.cc +1253 -0
  226. data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.h +215 -0
  227. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32-inl.h +0 -0
  228. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.cc +0 -0
  229. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.h +0 -0
  230. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/simulator-ia32.cc +0 -0
  231. data/ext/v8/upstream/3.1.8/src/ia32/simulator-ia32.h +72 -0
  232. data/ext/v8/upstream/3.1.8/src/ia32/stub-cache-ia32.cc +3732 -0
  233. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.cc +1360 -0
  234. data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.h +646 -0
  235. data/ext/v8/upstream/3.1.8/src/ic-inl.h +129 -0
  236. data/ext/v8/upstream/3.1.8/src/ic.cc +2333 -0
  237. data/ext/v8/upstream/3.1.8/src/ic.h +639 -0
  238. data/ext/v8/upstream/3.1.8/src/inspector.cc +63 -0
  239. data/ext/v8/upstream/3.1.8/src/inspector.h +62 -0
  240. data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.cc +655 -0
  241. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/interpreter-irregexp.h +0 -0
  242. data/ext/v8/upstream/3.1.8/src/json.js +342 -0
  243. data/ext/v8/upstream/3.1.8/src/jsregexp.cc +5340 -0
  244. data/ext/v8/upstream/3.1.8/src/jsregexp.h +1484 -0
  245. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-heavy-inl.h +0 -0
  246. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.cc +430 -0
  247. data/ext/v8/upstream/3.1.8/src/jump-target-heavy.h +244 -0
  248. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-inl.h +0 -0
  249. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-light-inl.h +0 -0
  250. data/ext/v8/upstream/3.1.8/src/jump-target-light.cc +111 -0
  251. data/ext/v8/upstream/3.1.8/src/jump-target-light.h +193 -0
  252. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.cc +0 -0
  253. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.h +0 -0
  254. data/ext/v8/upstream/3.1.8/src/list-inl.h +206 -0
  255. data/ext/v8/upstream/3.1.8/src/list.h +164 -0
  256. data/ext/v8/upstream/3.1.8/src/lithium-allocator-inl.h +140 -0
  257. data/ext/v8/upstream/3.1.8/src/lithium-allocator.cc +2093 -0
  258. data/ext/v8/upstream/3.1.8/src/lithium-allocator.h +644 -0
  259. data/ext/v8/upstream/3.1.8/src/lithium.cc +168 -0
  260. data/ext/v8/upstream/3.1.8/src/lithium.h +592 -0
  261. data/ext/v8/upstream/3.1.8/src/liveedit-debugger.js +1082 -0
  262. data/ext/v8/upstream/3.1.8/src/liveedit.cc +1650 -0
  263. data/ext/v8/upstream/3.1.8/src/liveedit.h +174 -0
  264. data/ext/v8/upstream/3.1.8/src/liveobjectlist-inl.h +126 -0
  265. data/ext/v8/upstream/3.1.8/src/liveobjectlist.cc +2527 -0
  266. data/ext/v8/upstream/3.1.8/src/liveobjectlist.h +322 -0
  267. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/log-inl.h +0 -0
  268. data/ext/v8/upstream/3.1.8/src/log-utils.cc +336 -0
  269. data/ext/v8/upstream/3.1.8/src/log-utils.h +232 -0
  270. data/ext/v8/upstream/3.1.8/src/log.cc +1608 -0
  271. data/ext/v8/upstream/3.1.8/src/log.h +379 -0
  272. data/ext/v8/upstream/3.1.8/src/macro-assembler.h +120 -0
  273. data/ext/v8/upstream/3.1.8/src/macros.py +178 -0
  274. data/ext/v8/upstream/3.1.8/src/mark-compact.cc +2957 -0
  275. data/ext/v8/upstream/3.1.8/src/mark-compact.h +433 -0
  276. data/ext/v8/upstream/3.1.8/src/math.js +264 -0
  277. data/ext/v8/upstream/3.1.8/src/memory.h +82 -0
  278. data/ext/v8/upstream/3.1.8/src/messages.cc +164 -0
  279. data/ext/v8/upstream/3.1.8/src/messages.h +114 -0
  280. data/ext/v8/upstream/3.1.8/src/messages.js +1071 -0
  281. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips-inl.h +0 -0
  282. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips.cc +0 -0
  283. data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.h +667 -0
  284. data/ext/v8/upstream/3.1.8/src/mips/builtins-mips.cc +205 -0
  285. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips-inl.h +0 -0
  286. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips.cc +0 -0
  287. data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.h +431 -0
  288. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.cc +0 -0
  289. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.h +0 -0
  290. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/cpu-mips.cc +0 -0
  291. data/ext/v8/upstream/3.1.8/src/mips/debug-mips.cc +127 -0
  292. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/disasm-mips.cc +0 -0
  293. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/fast-codegen-mips.cc +0 -0
  294. data/ext/v8/upstream/3.1.8/src/mips/frames-mips.cc +96 -0
  295. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/frames-mips.h +0 -0
  296. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/full-codegen-mips.cc +0 -0
  297. data/ext/v8/upstream/3.1.8/src/mips/ic-mips.cc +208 -0
  298. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/jump-target-mips.cc +0 -0
  299. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.cc +0 -0
  300. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.h +0 -0
  301. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips-inl.h +0 -0
  302. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.cc +0 -0
  303. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.h +0 -0
  304. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.cc +1650 -0
  305. data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.h +311 -0
  306. data/ext/v8/upstream/3.1.8/src/mips/stub-cache-mips.cc +418 -0
  307. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.cc +0 -0
  308. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.h +0 -0
  309. data/ext/v8/upstream/3.1.8/src/mirror-debugger.js +2380 -0
  310. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mksnapshot.cc +0 -0
  311. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/natives.h +0 -0
  312. data/ext/v8/upstream/3.1.8/src/objects-debug.cc +722 -0
  313. data/ext/v8/upstream/3.1.8/src/objects-inl.h +3946 -0
  314. data/ext/v8/upstream/3.1.8/src/objects-printer.cc +801 -0
  315. data/ext/v8/upstream/3.1.8/src/objects-visiting.cc +142 -0
  316. data/ext/v8/upstream/3.1.8/src/objects-visiting.h +401 -0
  317. data/ext/v8/upstream/3.1.8/src/objects.cc +10044 -0
  318. data/ext/v8/upstream/3.1.8/src/objects.h +6571 -0
  319. data/ext/v8/upstream/3.1.8/src/parser.cc +5165 -0
  320. data/ext/v8/upstream/3.1.8/src/parser.h +802 -0
  321. data/ext/v8/upstream/3.1.8/src/platform-cygwin.cc +745 -0
  322. data/ext/v8/upstream/3.1.8/src/platform-freebsd.cc +702 -0
  323. data/ext/v8/upstream/3.1.8/src/platform-linux.cc +981 -0
  324. data/ext/v8/upstream/3.1.8/src/platform-macos.cc +732 -0
  325. data/ext/v8/upstream/3.1.8/src/platform-nullos.cc +498 -0
  326. data/ext/v8/upstream/3.1.8/src/platform-openbsd.cc +657 -0
  327. data/ext/v8/upstream/3.1.8/src/platform-posix.cc +399 -0
  328. data/ext/v8/upstream/3.1.8/src/platform-solaris.cc +714 -0
  329. data/ext/v8/upstream/3.1.8/src/platform-win32.cc +1974 -0
  330. data/ext/v8/upstream/3.1.8/src/platform.h +636 -0
  331. data/ext/v8/upstream/3.1.8/src/preparse-data.cc +183 -0
  332. data/ext/v8/upstream/3.1.8/src/preparse-data.h +249 -0
  333. data/ext/v8/upstream/3.1.8/src/preparser-api.cc +213 -0
  334. data/ext/v8/upstream/3.1.8/src/preparser.cc +1205 -0
  335. data/ext/v8/upstream/3.1.8/src/preparser.h +278 -0
  336. data/ext/v8/upstream/3.1.8/src/prettyprinter.cc +1539 -0
  337. data/ext/v8/upstream/3.1.8/src/prettyprinter.h +223 -0
  338. data/ext/v8/upstream/3.1.8/src/profile-generator-inl.h +128 -0
  339. data/ext/v8/upstream/3.1.8/src/profile-generator.cc +2899 -0
  340. data/ext/v8/upstream/3.1.8/src/profile-generator.h +1151 -0
  341. data/ext/v8/upstream/3.1.8/src/property.cc +96 -0
  342. data/ext/v8/upstream/3.1.8/src/property.h +337 -0
  343. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  344. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.cc +470 -0
  345. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.h +142 -0
  346. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.cc +373 -0
  347. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.h +104 -0
  348. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.cc +257 -0
  349. data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.h +231 -0
  350. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.cc +0 -0
  351. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.h +0 -0
  352. data/ext/v8/upstream/3.1.8/src/regexp.js +483 -0
  353. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator-inl.h +0 -0
  354. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.cc +0 -0
  355. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.h +0 -0
  356. data/ext/v8/upstream/3.1.8/src/rewriter.cc +1023 -0
  357. data/ext/v8/upstream/3.1.8/src/rewriter.h +59 -0
  358. data/ext/v8/upstream/3.1.8/src/runtime-profiler.cc +443 -0
  359. data/ext/v8/upstream/3.1.8/src/runtime-profiler.h +77 -0
  360. data/ext/v8/upstream/3.1.8/src/runtime.cc +11592 -0
  361. data/ext/v8/upstream/3.1.8/src/runtime.h +582 -0
  362. data/ext/v8/upstream/3.1.8/src/runtime.js +643 -0
  363. data/ext/v8/upstream/3.1.8/src/safepoint-table.cc +253 -0
  364. data/ext/v8/upstream/3.1.8/src/safepoint-table.h +263 -0
  365. data/ext/v8/upstream/3.1.8/src/scanner-base.cc +971 -0
  366. data/ext/v8/upstream/3.1.8/src/scanner-base.h +653 -0
  367. data/ext/v8/upstream/3.1.8/src/scanner.cc +586 -0
  368. data/ext/v8/upstream/3.1.8/src/scanner.h +194 -0
  369. data/ext/v8/upstream/3.1.8/src/scopeinfo.cc +636 -0
  370. data/ext/v8/upstream/3.1.8/src/scopeinfo.h +238 -0
  371. data/ext/v8/upstream/3.1.8/src/scopes.cc +1063 -0
  372. data/ext/v8/upstream/3.1.8/src/scopes.h +494 -0
  373. data/ext/v8/upstream/3.1.8/src/serialize.cc +1535 -0
  374. data/ext/v8/upstream/3.1.8/src/serialize.h +584 -0
  375. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/shell.h +0 -0
  376. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/simulator.h +0 -0
  377. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/smart-pointer.h +0 -0
  378. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-common.cc +0 -0
  379. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-empty.cc +0 -0
  380. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot.h +0 -0
  381. data/ext/v8/upstream/3.1.8/src/spaces-inl.h +524 -0
  382. data/ext/v8/upstream/3.1.8/src/spaces.cc +3254 -0
  383. data/ext/v8/upstream/3.1.8/src/spaces.h +2362 -0
  384. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree-inl.h +0 -0
  385. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree.h +0 -0
  386. data/ext/v8/upstream/3.1.8/src/string-search.cc +40 -0
  387. data/ext/v8/upstream/3.1.8/src/string-search.h +567 -0
  388. data/ext/v8/upstream/3.1.8/src/string-stream.cc +584 -0
  389. data/ext/v8/upstream/3.1.8/src/string-stream.h +191 -0
  390. data/ext/v8/upstream/3.1.8/src/string.js +915 -0
  391. data/ext/v8/upstream/3.1.8/src/strtod.cc +440 -0
  392. data/ext/v8/upstream/3.1.8/src/strtod.h +40 -0
  393. data/ext/v8/upstream/3.1.8/src/stub-cache.cc +1878 -0
  394. data/ext/v8/upstream/3.1.8/src/stub-cache.h +849 -0
  395. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/third_party/valgrind/valgrind.h +0 -0
  396. data/ext/v8/upstream/3.1.8/src/token.cc +63 -0
  397. data/ext/v8/upstream/3.1.8/src/token.h +288 -0
  398. data/ext/v8/upstream/3.1.8/src/top.cc +1152 -0
  399. data/ext/v8/upstream/3.1.8/src/top.h +608 -0
  400. data/ext/v8/upstream/3.1.8/src/type-info.cc +406 -0
  401. data/ext/v8/upstream/3.1.8/src/type-info.h +283 -0
  402. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue-inl.h +0 -0
  403. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue.h +0 -0
  404. data/ext/v8/upstream/3.1.8/src/unicode-inl.h +238 -0
  405. data/ext/v8/upstream/3.1.8/src/unicode.cc +1624 -0
  406. data/ext/v8/upstream/3.1.8/src/unicode.h +280 -0
  407. data/ext/v8/upstream/3.1.8/src/uri.js +402 -0
  408. data/ext/v8/upstream/3.1.8/src/utils.cc +371 -0
  409. data/ext/v8/upstream/3.1.8/src/utils.h +793 -0
  410. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8-counters.cc +0 -0
  411. data/ext/v8/upstream/3.1.8/src/v8-counters.h +290 -0
  412. data/ext/v8/upstream/3.1.8/src/v8.cc +270 -0
  413. data/ext/v8/upstream/3.1.8/src/v8.h +127 -0
  414. data/ext/v8/upstream/3.1.8/src/v8checks.h +64 -0
  415. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8dll-main.cc +0 -0
  416. data/ext/v8/upstream/3.1.8/src/v8globals.h +480 -0
  417. data/ext/v8/upstream/3.1.8/src/v8natives.js +1252 -0
  418. data/ext/v8/upstream/3.1.8/src/v8preparserdll-main.cc +39 -0
  419. data/ext/v8/upstream/3.1.8/src/v8threads.cc +440 -0
  420. data/ext/v8/upstream/3.1.8/src/v8threads.h +157 -0
  421. data/ext/v8/upstream/3.1.8/src/v8utils.h +354 -0
  422. data/ext/v8/upstream/3.1.8/src/variables.cc +132 -0
  423. data/ext/v8/upstream/3.1.8/src/variables.h +212 -0
  424. data/ext/v8/upstream/3.1.8/src/version.cc +95 -0
  425. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/version.h +0 -0
  426. data/ext/v8/upstream/3.1.8/src/virtual-frame-heavy-inl.h +190 -0
  427. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-heavy.cc +0 -0
  428. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-inl.h +0 -0
  429. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light-inl.h +0 -0
  430. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light.cc +0 -0
  431. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame.cc +0 -0
  432. data/ext/v8/upstream/3.1.8/src/virtual-frame.h +59 -0
  433. data/ext/v8/upstream/3.1.8/src/vm-state-inl.h +134 -0
  434. data/ext/v8/upstream/3.1.8/src/vm-state.h +68 -0
  435. data/ext/v8/upstream/3.1.8/src/win32-headers.h +95 -0
  436. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64-inl.h +455 -0
  437. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.cc +3162 -0
  438. data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.h +1584 -0
  439. data/ext/v8/upstream/3.1.8/src/x64/builtins-x64.cc +1492 -0
  440. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.cc +5150 -0
  441. data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.h +519 -0
  442. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64-inl.h +46 -0
  443. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.cc +8835 -0
  444. data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.h +750 -0
  445. data/ext/v8/upstream/3.1.8/src/x64/cpu-x64.cc +86 -0
  446. data/ext/v8/upstream/3.1.8/src/x64/debug-x64.cc +316 -0
  447. data/ext/v8/upstream/3.1.8/src/x64/deoptimizer-x64.cc +781 -0
  448. data/ext/v8/upstream/3.1.8/src/x64/disasm-x64.cc +1737 -0
  449. data/ext/v8/upstream/3.1.8/src/x64/frames-x64.cc +45 -0
  450. data/ext/v8/upstream/3.1.8/src/x64/frames-x64.h +130 -0
  451. data/ext/v8/upstream/3.1.8/src/x64/full-codegen-x64.cc +3984 -0
  452. data/ext/v8/upstream/3.1.8/src/x64/ic-x64.cc +1761 -0
  453. data/ext/v8/upstream/3.1.8/src/x64/jump-target-x64.cc +437 -0
  454. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.cc +3639 -0
  455. data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.h +305 -0
  456. data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.cc +320 -0
  457. data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.h +74 -0
  458. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.cc +2044 -0
  459. data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.h +2052 -0
  460. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.cc +2660 -0
  461. data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.h +1852 -0
  462. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.cc +1382 -0
  463. data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.h +278 -0
  464. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64-inl.h +0 -0
  465. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.cc +0 -0
  466. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.h +0 -0
  467. data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/simulator-x64.cc +0 -0
  468. data/ext/v8/upstream/3.1.8/src/x64/simulator-x64.h +71 -0
  469. data/ext/v8/upstream/3.1.8/src/x64/stub-cache-x64.cc +3509 -0
  470. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.cc +1292 -0
  471. data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.h +593 -0
  472. data/ext/v8/upstream/3.1.8/src/zone-inl.h +83 -0
  473. data/ext/v8/upstream/3.1.8/src/zone.cc +195 -0
  474. data/ext/v8/upstream/3.1.8/src/zone.h +233 -0
  475. data/ext/v8/upstream/3.1.8/tools/codemap.js +265 -0
  476. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/consarray.js +0 -0
  477. data/ext/v8/upstream/3.1.8/tools/csvparser.js +78 -0
  478. data/ext/v8/upstream/3.1.8/tools/disasm.py +92 -0
  479. data/ext/v8/upstream/3.1.8/tools/gc-nvp-trace-processor.py +328 -0
  480. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/generate-ten-powers.scm +0 -0
  481. data/ext/v8/upstream/3.1.8/tools/grokdump.py +840 -0
  482. data/ext/v8/upstream/3.1.8/tools/gyp/v8.gyp +869 -0
  483. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/js2c.py +0 -0
  484. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/jsmin.py +0 -0
  485. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/linux-tick-processor +0 -0
  486. data/ext/v8/upstream/3.1.8/tools/ll_prof.py +919 -0
  487. data/ext/v8/upstream/3.1.8/tools/logreader.js +185 -0
  488. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-nm +0 -0
  489. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-tick-processor +0 -0
  490. data/ext/v8/upstream/3.1.8/tools/oom_dump/README +31 -0
  491. data/ext/v8/upstream/3.1.8/tools/oom_dump/SConstruct +42 -0
  492. data/ext/v8/upstream/3.1.8/tools/oom_dump/oom_dump.cc +288 -0
  493. data/ext/v8/upstream/3.1.8/tools/presubmit.py +305 -0
  494. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/process-heap-prof.py +0 -0
  495. data/ext/v8/upstream/3.1.8/tools/profile.js +751 -0
  496. data/ext/v8/upstream/3.1.8/tools/profile_view.js +219 -0
  497. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/run-valgrind.py +0 -0
  498. data/ext/v8/upstream/3.1.8/tools/splaytree.js +316 -0
  499. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/stats-viewer.py +0 -0
  500. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/tickprocessor-driver.js +0 -0
  501. data/ext/v8/upstream/3.1.8/tools/tickprocessor.js +863 -0
  502. data/ext/v8/upstream/3.1.8/tools/utils.py +96 -0
  503. data/ext/v8/upstream/3.1.8/tools/visual_studio/README.txt +70 -0
  504. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/arm.vsprops +0 -0
  505. data/ext/v8/upstream/3.1.8/tools/visual_studio/common.vsprops +34 -0
  506. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8.vcproj +0 -0
  507. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_arm.vcproj +0 -0
  508. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_x64.vcproj +0 -0
  509. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8js2c.cmd +0 -0
  510. data/ext/v8/upstream/3.1.8/tools/visual_studio/debug.vsprops +17 -0
  511. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/ia32.vsprops +0 -0
  512. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/js2c.cmd +0 -0
  513. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/release.vsprops +0 -0
  514. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.sln +0 -0
  515. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.vcproj +0 -0
  516. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.sln +0 -0
  517. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.vcproj +0 -0
  518. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base.vcproj +1296 -0
  519. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_arm.vcproj +1234 -0
  520. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_x64.vcproj +1296 -0
  521. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest.vcproj +0 -0
  522. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  523. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  524. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  525. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  526. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  527. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  528. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  529. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample.vcproj +147 -0
  530. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_arm.vcproj +147 -0
  531. data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_x64.vcproj +163 -0
  532. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  533. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  534. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  535. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  536. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.sln +0 -0
  537. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.vcproj +0 -0
  538. data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/x64.vsprops +0 -0
  539. data/ext/v8/upstream/3.1.8/tools/windows-tick-processor.bat +30 -0
  540. data/ext/v8/upstream/Makefile +2 -1
  541. data/ext/v8/v8_template.cpp +2 -2
  542. data/lib/v8/version.rb +1 -1
  543. data/spec/redjs/jsapi_spec.rb +2 -2
  544. metadata +552 -490
  545. data/ext/v8/upstream/2.3.3/.gitignore +0 -26
  546. data/ext/v8/upstream/2.3.3/AUTHORS +0 -31
  547. data/ext/v8/upstream/2.3.3/ChangeLog +0 -1916
  548. data/ext/v8/upstream/2.3.3/LICENSE +0 -55
  549. data/ext/v8/upstream/2.3.3/SConstruct +0 -1154
  550. data/ext/v8/upstream/2.3.3/include/v8-debug.h +0 -381
  551. data/ext/v8/upstream/2.3.3/include/v8-profiler.h +0 -353
  552. data/ext/v8/upstream/2.3.3/include/v8.h +0 -3616
  553. data/ext/v8/upstream/2.3.3/src/SConscript +0 -330
  554. data/ext/v8/upstream/2.3.3/src/accessors.cc +0 -661
  555. data/ext/v8/upstream/2.3.3/src/accessors.h +0 -114
  556. data/ext/v8/upstream/2.3.3/src/allocation.cc +0 -198
  557. data/ext/v8/upstream/2.3.3/src/allocation.h +0 -169
  558. data/ext/v8/upstream/2.3.3/src/api.cc +0 -4795
  559. data/ext/v8/upstream/2.3.3/src/api.h +0 -485
  560. data/ext/v8/upstream/2.3.3/src/apiutils.h +0 -69
  561. data/ext/v8/upstream/2.3.3/src/arguments.h +0 -96
  562. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm-inl.h +0 -305
  563. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.cc +0 -2580
  564. data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.h +0 -1275
  565. data/ext/v8/upstream/2.3.3/src/arm/builtins-arm.cc +0 -1320
  566. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +0 -48
  567. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.cc +0 -11398
  568. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.h +0 -1102
  569. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.cc +0 -154
  570. data/ext/v8/upstream/2.3.3/src/arm/constants-arm.h +0 -388
  571. data/ext/v8/upstream/2.3.3/src/arm/cpu-arm.cc +0 -142
  572. data/ext/v8/upstream/2.3.3/src/arm/debug-arm.cc +0 -309
  573. data/ext/v8/upstream/2.3.3/src/arm/disasm-arm.cc +0 -1459
  574. data/ext/v8/upstream/2.3.3/src/arm/fast-codegen-arm.cc +0 -241
  575. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.cc +0 -123
  576. data/ext/v8/upstream/2.3.3/src/arm/frames-arm.h +0 -162
  577. data/ext/v8/upstream/2.3.3/src/arm/full-codegen-arm.cc +0 -3178
  578. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +0 -2258
  579. data/ext/v8/upstream/2.3.3/src/arm/jump-target-arm.cc +0 -164
  580. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.cc +0 -1892
  581. data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.h +0 -727
  582. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.cc +0 -1261
  583. data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.h +0 -266
  584. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.cc +0 -2822
  585. data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.h +0 -361
  586. data/ext/v8/upstream/2.3.3/src/arm/stub-cache-arm.cc +0 -2387
  587. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.cc +0 -834
  588. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.h +0 -519
  589. data/ext/v8/upstream/2.3.3/src/array.js +0 -1127
  590. data/ext/v8/upstream/2.3.3/src/assembler.cc +0 -801
  591. data/ext/v8/upstream/2.3.3/src/assembler.h +0 -573
  592. data/ext/v8/upstream/2.3.3/src/ast-inl.h +0 -81
  593. data/ext/v8/upstream/2.3.3/src/ast.cc +0 -1152
  594. data/ext/v8/upstream/2.3.3/src/ast.h +0 -2106
  595. data/ext/v8/upstream/2.3.3/src/bootstrapper.cc +0 -1819
  596. data/ext/v8/upstream/2.3.3/src/builtins.cc +0 -1529
  597. data/ext/v8/upstream/2.3.3/src/builtins.h +0 -263
  598. data/ext/v8/upstream/2.3.3/src/bytecodes-irregexp.h +0 -104
  599. data/ext/v8/upstream/2.3.3/src/cached-powers.h +0 -119
  600. data/ext/v8/upstream/2.3.3/src/char-predicates-inl.h +0 -86
  601. data/ext/v8/upstream/2.3.3/src/checks.cc +0 -100
  602. data/ext/v8/upstream/2.3.3/src/checks.h +0 -310
  603. data/ext/v8/upstream/2.3.3/src/circular-queue.cc +0 -121
  604. data/ext/v8/upstream/2.3.3/src/code-stubs.cc +0 -177
  605. data/ext/v8/upstream/2.3.3/src/code-stubs.h +0 -177
  606. data/ext/v8/upstream/2.3.3/src/codegen-inl.h +0 -60
  607. data/ext/v8/upstream/2.3.3/src/codegen.cc +0 -516
  608. data/ext/v8/upstream/2.3.3/src/codegen.h +0 -897
  609. data/ext/v8/upstream/2.3.3/src/compilation-cache.cc +0 -562
  610. data/ext/v8/upstream/2.3.3/src/compilation-cache.h +0 -102
  611. data/ext/v8/upstream/2.3.3/src/compiler.cc +0 -654
  612. data/ext/v8/upstream/2.3.3/src/compiler.h +0 -299
  613. data/ext/v8/upstream/2.3.3/src/contexts.cc +0 -256
  614. data/ext/v8/upstream/2.3.3/src/contexts.h +0 -342
  615. data/ext/v8/upstream/2.3.3/src/conversions.cc +0 -1119
  616. data/ext/v8/upstream/2.3.3/src/conversions.h +0 -123
  617. data/ext/v8/upstream/2.3.3/src/counters.h +0 -239
  618. data/ext/v8/upstream/2.3.3/src/cpu-profiler-inl.h +0 -100
  619. data/ext/v8/upstream/2.3.3/src/cpu-profiler.cc +0 -538
  620. data/ext/v8/upstream/2.3.3/src/cpu-profiler.h +0 -285
  621. data/ext/v8/upstream/2.3.3/src/d8-debug.cc +0 -356
  622. data/ext/v8/upstream/2.3.3/src/d8-debug.h +0 -155
  623. data/ext/v8/upstream/2.3.3/src/d8.cc +0 -783
  624. data/ext/v8/upstream/2.3.3/src/d8.h +0 -227
  625. data/ext/v8/upstream/2.3.3/src/d8.js +0 -1683
  626. data/ext/v8/upstream/2.3.3/src/data-flow.cc +0 -758
  627. data/ext/v8/upstream/2.3.3/src/data-flow.h +0 -278
  628. data/ext/v8/upstream/2.3.3/src/date.js +0 -1059
  629. data/ext/v8/upstream/2.3.3/src/dateparser-inl.h +0 -123
  630. data/ext/v8/upstream/2.3.3/src/dateparser.h +0 -244
  631. data/ext/v8/upstream/2.3.3/src/debug-agent.cc +0 -427
  632. data/ext/v8/upstream/2.3.3/src/debug-agent.h +0 -129
  633. data/ext/v8/upstream/2.3.3/src/debug-debugger.js +0 -2227
  634. data/ext/v8/upstream/2.3.3/src/debug.cc +0 -3005
  635. data/ext/v8/upstream/2.3.3/src/debug.h +0 -993
  636. data/ext/v8/upstream/2.3.3/src/disassembler.cc +0 -312
  637. data/ext/v8/upstream/2.3.3/src/double.h +0 -169
  638. data/ext/v8/upstream/2.3.3/src/dtoa-config.c +0 -92
  639. data/ext/v8/upstream/2.3.3/src/dtoa.cc +0 -77
  640. data/ext/v8/upstream/2.3.3/src/dtoa.h +0 -81
  641. data/ext/v8/upstream/2.3.3/src/execution.cc +0 -809
  642. data/ext/v8/upstream/2.3.3/src/execution.h +0 -336
  643. data/ext/v8/upstream/2.3.3/src/factory.cc +0 -1003
  644. data/ext/v8/upstream/2.3.3/src/factory.h +0 -410
  645. data/ext/v8/upstream/2.3.3/src/fast-codegen.cc +0 -746
  646. data/ext/v8/upstream/2.3.3/src/fast-codegen.h +0 -161
  647. data/ext/v8/upstream/2.3.3/src/fast-dtoa.cc +0 -505
  648. data/ext/v8/upstream/2.3.3/src/fast-dtoa.h +0 -58
  649. data/ext/v8/upstream/2.3.3/src/flag-definitions.h +0 -455
  650. data/ext/v8/upstream/2.3.3/src/flags.cc +0 -551
  651. data/ext/v8/upstream/2.3.3/src/flags.h +0 -81
  652. data/ext/v8/upstream/2.3.3/src/flow-graph.cc +0 -763
  653. data/ext/v8/upstream/2.3.3/src/flow-graph.h +0 -180
  654. data/ext/v8/upstream/2.3.3/src/frame-element.h +0 -273
  655. data/ext/v8/upstream/2.3.3/src/frames-inl.h +0 -217
  656. data/ext/v8/upstream/2.3.3/src/frames.cc +0 -826
  657. data/ext/v8/upstream/2.3.3/src/frames.h +0 -682
  658. data/ext/v8/upstream/2.3.3/src/full-codegen.cc +0 -1443
  659. data/ext/v8/upstream/2.3.3/src/full-codegen.h +0 -548
  660. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.cc +0 -76
  661. data/ext/v8/upstream/2.3.3/src/func-name-inferrer.h +0 -135
  662. data/ext/v8/upstream/2.3.3/src/global-handles.cc +0 -520
  663. data/ext/v8/upstream/2.3.3/src/global-handles.h +0 -180
  664. data/ext/v8/upstream/2.3.3/src/globals.h +0 -669
  665. data/ext/v8/upstream/2.3.3/src/handles-inl.h +0 -76
  666. data/ext/v8/upstream/2.3.3/src/handles.cc +0 -825
  667. data/ext/v8/upstream/2.3.3/src/handles.h +0 -393
  668. data/ext/v8/upstream/2.3.3/src/hashmap.cc +0 -226
  669. data/ext/v8/upstream/2.3.3/src/hashmap.h +0 -120
  670. data/ext/v8/upstream/2.3.3/src/heap-inl.h +0 -493
  671. data/ext/v8/upstream/2.3.3/src/heap-profiler.cc +0 -779
  672. data/ext/v8/upstream/2.3.3/src/heap-profiler.h +0 -323
  673. data/ext/v8/upstream/2.3.3/src/heap.cc +0 -4994
  674. data/ext/v8/upstream/2.3.3/src/heap.h +0 -1984
  675. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32-inl.h +0 -360
  676. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.cc +0 -2600
  677. data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.h +0 -969
  678. data/ext/v8/upstream/2.3.3/src/ia32/builtins-ia32.cc +0 -1261
  679. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.cc +0 -13968
  680. data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.h +0 -1097
  681. data/ext/v8/upstream/2.3.3/src/ia32/cpu-ia32.cc +0 -83
  682. data/ext/v8/upstream/2.3.3/src/ia32/debug-ia32.cc +0 -309
  683. data/ext/v8/upstream/2.3.3/src/ia32/disasm-ia32.cc +0 -1471
  684. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.cc +0 -954
  685. data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.h +0 -155
  686. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.cc +0 -115
  687. data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.h +0 -135
  688. data/ext/v8/upstream/2.3.3/src/ia32/full-codegen-ia32.cc +0 -3281
  689. data/ext/v8/upstream/2.3.3/src/ia32/ic-ia32.cc +0 -1966
  690. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.cc +0 -1610
  691. data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.h +0 -610
  692. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.cc +0 -1247
  693. data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.h +0 -214
  694. data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.h +0 -62
  695. data/ext/v8/upstream/2.3.3/src/ia32/stub-cache-ia32.cc +0 -2750
  696. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.cc +0 -1334
  697. data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.h +0 -627
  698. data/ext/v8/upstream/2.3.3/src/ic-inl.h +0 -120
  699. data/ext/v8/upstream/2.3.3/src/ic.cc +0 -1827
  700. data/ext/v8/upstream/2.3.3/src/ic.h +0 -515
  701. data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.cc +0 -646
  702. data/ext/v8/upstream/2.3.3/src/json.js +0 -268
  703. data/ext/v8/upstream/2.3.3/src/jsregexp.cc +0 -5283
  704. data/ext/v8/upstream/2.3.3/src/jsregexp.h +0 -1463
  705. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.cc +0 -429
  706. data/ext/v8/upstream/2.3.3/src/jump-target-heavy.h +0 -244
  707. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +0 -110
  708. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +0 -192
  709. data/ext/v8/upstream/2.3.3/src/list-inl.h +0 -166
  710. data/ext/v8/upstream/2.3.3/src/list.h +0 -159
  711. data/ext/v8/upstream/2.3.3/src/liveedit-debugger.js +0 -1057
  712. data/ext/v8/upstream/2.3.3/src/liveedit.cc +0 -1480
  713. data/ext/v8/upstream/2.3.3/src/liveedit.h +0 -170
  714. data/ext/v8/upstream/2.3.3/src/log-utils.cc +0 -497
  715. data/ext/v8/upstream/2.3.3/src/log-utils.h +0 -289
  716. data/ext/v8/upstream/2.3.3/src/log.cc +0 -1561
  717. data/ext/v8/upstream/2.3.3/src/log.h +0 -384
  718. data/ext/v8/upstream/2.3.3/src/macro-assembler.h +0 -86
  719. data/ext/v8/upstream/2.3.3/src/macros.py +0 -177
  720. data/ext/v8/upstream/2.3.3/src/mark-compact.cc +0 -2330
  721. data/ext/v8/upstream/2.3.3/src/mark-compact.h +0 -451
  722. data/ext/v8/upstream/2.3.3/src/math.js +0 -264
  723. data/ext/v8/upstream/2.3.3/src/memory.h +0 -74
  724. data/ext/v8/upstream/2.3.3/src/messages.cc +0 -183
  725. data/ext/v8/upstream/2.3.3/src/messages.h +0 -113
  726. data/ext/v8/upstream/2.3.3/src/messages.js +0 -982
  727. data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.h +0 -668
  728. data/ext/v8/upstream/2.3.3/src/mips/builtins-mips.cc +0 -205
  729. data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.h +0 -434
  730. data/ext/v8/upstream/2.3.3/src/mips/debug-mips.cc +0 -131
  731. data/ext/v8/upstream/2.3.3/src/mips/frames-mips.cc +0 -102
  732. data/ext/v8/upstream/2.3.3/src/mips/ic-mips.cc +0 -220
  733. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.cc +0 -1651
  734. data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.h +0 -311
  735. data/ext/v8/upstream/2.3.3/src/mips/stub-cache-mips.cc +0 -403
  736. data/ext/v8/upstream/2.3.3/src/mirror-debugger.js +0 -2380
  737. data/ext/v8/upstream/2.3.3/src/objects-debug.cc +0 -1366
  738. data/ext/v8/upstream/2.3.3/src/objects-inl.h +0 -3333
  739. data/ext/v8/upstream/2.3.3/src/objects.cc +0 -8820
  740. data/ext/v8/upstream/2.3.3/src/objects.h +0 -5373
  741. data/ext/v8/upstream/2.3.3/src/oprofile-agent.cc +0 -108
  742. data/ext/v8/upstream/2.3.3/src/oprofile-agent.h +0 -77
  743. data/ext/v8/upstream/2.3.3/src/parser.cc +0 -5207
  744. data/ext/v8/upstream/2.3.3/src/parser.h +0 -197
  745. data/ext/v8/upstream/2.3.3/src/platform-freebsd.cc +0 -667
  746. data/ext/v8/upstream/2.3.3/src/platform-linux.cc +0 -862
  747. data/ext/v8/upstream/2.3.3/src/platform-macos.cc +0 -665
  748. data/ext/v8/upstream/2.3.3/src/platform-nullos.cc +0 -454
  749. data/ext/v8/upstream/2.3.3/src/platform-openbsd.cc +0 -622
  750. data/ext/v8/upstream/2.3.3/src/platform-posix.cc +0 -362
  751. data/ext/v8/upstream/2.3.3/src/platform-solaris.cc +0 -653
  752. data/ext/v8/upstream/2.3.3/src/platform-win32.cc +0 -1911
  753. data/ext/v8/upstream/2.3.3/src/platform.h +0 -577
  754. data/ext/v8/upstream/2.3.3/src/powers-ten.h +0 -2461
  755. data/ext/v8/upstream/2.3.3/src/prettyprinter.cc +0 -1531
  756. data/ext/v8/upstream/2.3.3/src/prettyprinter.h +0 -221
  757. data/ext/v8/upstream/2.3.3/src/profile-generator-inl.h +0 -148
  758. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +0 -1830
  759. data/ext/v8/upstream/2.3.3/src/profile-generator.h +0 -853
  760. data/ext/v8/upstream/2.3.3/src/property.cc +0 -96
  761. data/ext/v8/upstream/2.3.3/src/property.h +0 -315
  762. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.cc +0 -464
  763. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.h +0 -141
  764. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.cc +0 -356
  765. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.h +0 -103
  766. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.cc +0 -261
  767. data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.h +0 -228
  768. data/ext/v8/upstream/2.3.3/src/regexp.js +0 -549
  769. data/ext/v8/upstream/2.3.3/src/rewriter.cc +0 -1038
  770. data/ext/v8/upstream/2.3.3/src/rewriter.h +0 -54
  771. data/ext/v8/upstream/2.3.3/src/runtime.cc +0 -10599
  772. data/ext/v8/upstream/2.3.3/src/runtime.h +0 -459
  773. data/ext/v8/upstream/2.3.3/src/runtime.js +0 -629
  774. data/ext/v8/upstream/2.3.3/src/scanner.cc +0 -1346
  775. data/ext/v8/upstream/2.3.3/src/scanner.h +0 -503
  776. data/ext/v8/upstream/2.3.3/src/scopeinfo.cc +0 -637
  777. data/ext/v8/upstream/2.3.3/src/scopeinfo.h +0 -233
  778. data/ext/v8/upstream/2.3.3/src/scopes.cc +0 -962
  779. data/ext/v8/upstream/2.3.3/src/scopes.h +0 -400
  780. data/ext/v8/upstream/2.3.3/src/serialize.cc +0 -1461
  781. data/ext/v8/upstream/2.3.3/src/serialize.h +0 -581
  782. data/ext/v8/upstream/2.3.3/src/spaces-inl.h +0 -483
  783. data/ext/v8/upstream/2.3.3/src/spaces.cc +0 -2901
  784. data/ext/v8/upstream/2.3.3/src/spaces.h +0 -2197
  785. data/ext/v8/upstream/2.3.3/src/string-stream.cc +0 -584
  786. data/ext/v8/upstream/2.3.3/src/string-stream.h +0 -189
  787. data/ext/v8/upstream/2.3.3/src/string.js +0 -1006
  788. data/ext/v8/upstream/2.3.3/src/stub-cache.cc +0 -1379
  789. data/ext/v8/upstream/2.3.3/src/stub-cache.h +0 -756
  790. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/COPYING +0 -15
  791. data/ext/v8/upstream/2.3.3/src/third_party/dtoa/dtoa.c +0 -3334
  792. data/ext/v8/upstream/2.3.3/src/token.cc +0 -56
  793. data/ext/v8/upstream/2.3.3/src/token.h +0 -270
  794. data/ext/v8/upstream/2.3.3/src/top.cc +0 -1067
  795. data/ext/v8/upstream/2.3.3/src/top.h +0 -463
  796. data/ext/v8/upstream/2.3.3/src/type-info.cc +0 -53
  797. data/ext/v8/upstream/2.3.3/src/type-info.h +0 -244
  798. data/ext/v8/upstream/2.3.3/src/unicode-inl.h +0 -238
  799. data/ext/v8/upstream/2.3.3/src/unicode.cc +0 -749
  800. data/ext/v8/upstream/2.3.3/src/unicode.h +0 -279
  801. data/ext/v8/upstream/2.3.3/src/uri.js +0 -415
  802. data/ext/v8/upstream/2.3.3/src/utils.cc +0 -285
  803. data/ext/v8/upstream/2.3.3/src/utils.h +0 -745
  804. data/ext/v8/upstream/2.3.3/src/v8-counters.h +0 -250
  805. data/ext/v8/upstream/2.3.3/src/v8.cc +0 -228
  806. data/ext/v8/upstream/2.3.3/src/v8.h +0 -121
  807. data/ext/v8/upstream/2.3.3/src/v8natives.js +0 -1188
  808. data/ext/v8/upstream/2.3.3/src/v8threads.cc +0 -461
  809. data/ext/v8/upstream/2.3.3/src/v8threads.h +0 -159
  810. data/ext/v8/upstream/2.3.3/src/variables.cc +0 -119
  811. data/ext/v8/upstream/2.3.3/src/variables.h +0 -205
  812. data/ext/v8/upstream/2.3.3/src/version.cc +0 -88
  813. data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy-inl.h +0 -192
  814. data/ext/v8/upstream/2.3.3/src/virtual-frame.h +0 -46
  815. data/ext/v8/upstream/2.3.3/src/vm-state-inl.h +0 -137
  816. data/ext/v8/upstream/2.3.3/src/vm-state.cc +0 -39
  817. data/ext/v8/upstream/2.3.3/src/vm-state.h +0 -77
  818. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64-inl.h +0 -400
  819. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.cc +0 -2963
  820. data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.h +0 -1438
  821. data/ext/v8/upstream/2.3.3/src/x64/builtins-x64.cc +0 -1296
  822. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64-inl.h +0 -46
  823. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.cc +0 -12491
  824. data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.h +0 -1090
  825. data/ext/v8/upstream/2.3.3/src/x64/cpu-x64.cc +0 -83
  826. data/ext/v8/upstream/2.3.3/src/x64/debug-x64.cc +0 -267
  827. data/ext/v8/upstream/2.3.3/src/x64/disasm-x64.cc +0 -1696
  828. data/ext/v8/upstream/2.3.3/src/x64/fast-codegen-x64.cc +0 -250
  829. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.cc +0 -113
  830. data/ext/v8/upstream/2.3.3/src/x64/frames-x64.h +0 -125
  831. data/ext/v8/upstream/2.3.3/src/x64/full-codegen-x64.cc +0 -3270
  832. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +0 -1907
  833. data/ext/v8/upstream/2.3.3/src/x64/jump-target-x64.cc +0 -437
  834. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.cc +0 -2793
  835. data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.h +0 -916
  836. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.cc +0 -1374
  837. data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.h +0 -277
  838. data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.h +0 -63
  839. data/ext/v8/upstream/2.3.3/src/x64/stub-cache-x64.cc +0 -2560
  840. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.cc +0 -1264
  841. data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.h +0 -590
  842. data/ext/v8/upstream/2.3.3/src/zone-inl.h +0 -82
  843. data/ext/v8/upstream/2.3.3/src/zone.cc +0 -194
  844. data/ext/v8/upstream/2.3.3/src/zone.h +0 -221
  845. data/ext/v8/upstream/2.3.3/tools/codemap.js +0 -270
  846. data/ext/v8/upstream/2.3.3/tools/csvparser.js +0 -83
  847. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +0 -317
  848. data/ext/v8/upstream/2.3.3/tools/gyp/v8.gyp +0 -749
  849. data/ext/v8/upstream/2.3.3/tools/linux-tick-processor.py +0 -78
  850. data/ext/v8/upstream/2.3.3/tools/logreader.js +0 -338
  851. data/ext/v8/upstream/2.3.3/tools/oprofile/annotate +0 -7
  852. data/ext/v8/upstream/2.3.3/tools/oprofile/common +0 -19
  853. data/ext/v8/upstream/2.3.3/tools/oprofile/dump +0 -7
  854. data/ext/v8/upstream/2.3.3/tools/oprofile/report +0 -7
  855. data/ext/v8/upstream/2.3.3/tools/oprofile/reset +0 -7
  856. data/ext/v8/upstream/2.3.3/tools/oprofile/run +0 -14
  857. data/ext/v8/upstream/2.3.3/tools/oprofile/shutdown +0 -7
  858. data/ext/v8/upstream/2.3.3/tools/oprofile/start +0 -7
  859. data/ext/v8/upstream/2.3.3/tools/presubmit.py +0 -299
  860. data/ext/v8/upstream/2.3.3/tools/profile.js +0 -691
  861. data/ext/v8/upstream/2.3.3/tools/profile_view.js +0 -224
  862. data/ext/v8/upstream/2.3.3/tools/splaytree.js +0 -322
  863. data/ext/v8/upstream/2.3.3/tools/splaytree.py +0 -226
  864. data/ext/v8/upstream/2.3.3/tools/tickprocessor.js +0 -862
  865. data/ext/v8/upstream/2.3.3/tools/tickprocessor.py +0 -571
  866. data/ext/v8/upstream/2.3.3/tools/utils.py +0 -88
  867. data/ext/v8/upstream/2.3.3/tools/visual_studio/README.txt +0 -71
  868. data/ext/v8/upstream/2.3.3/tools/visual_studio/common.vsprops +0 -34
  869. data/ext/v8/upstream/2.3.3/tools/visual_studio/debug.vsprops +0 -17
  870. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base.vcproj +0 -1143
  871. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_arm.vcproj +0 -1115
  872. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_x64.vcproj +0 -1096
  873. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample.vcproj +0 -145
  874. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -145
  875. data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -161
  876. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.bat +0 -29
  877. data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.py +0 -137
@@ -1,1984 +0,0 @@
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_HEAP_H_
29
- #define V8_HEAP_H_
30
-
31
- #include <math.h>
32
-
33
- #include "splay-tree-inl.h"
34
- #include "v8-counters.h"
35
-
36
- namespace v8 {
37
- namespace internal {
38
-
39
-
40
- // Defines all the roots in Heap.
41
- #define UNCONDITIONAL_STRONG_ROOT_LIST(V) \
42
- /* Put the byte array map early. We need it to be in place by the time */ \
43
- /* the deserializer hits the next page, since it wants to put a byte */ \
44
- /* array in the unused space at the end of the page. */ \
45
- V(Map, byte_array_map, ByteArrayMap) \
46
- V(Map, one_pointer_filler_map, OnePointerFillerMap) \
47
- V(Map, two_pointer_filler_map, TwoPointerFillerMap) \
48
- /* Cluster the most popular ones in a few cache lines here at the top. */ \
49
- V(Smi, stack_limit, StackLimit) \
50
- V(Object, undefined_value, UndefinedValue) \
51
- V(Object, the_hole_value, TheHoleValue) \
52
- V(Object, null_value, NullValue) \
53
- V(Object, true_value, TrueValue) \
54
- V(Object, false_value, FalseValue) \
55
- V(Map, heap_number_map, HeapNumberMap) \
56
- V(Map, global_context_map, GlobalContextMap) \
57
- V(Map, fixed_array_map, FixedArrayMap) \
58
- V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \
59
- V(Map, meta_map, MetaMap) \
60
- V(Object, termination_exception, TerminationException) \
61
- V(Map, hash_table_map, HashTableMap) \
62
- V(FixedArray, empty_fixed_array, EmptyFixedArray) \
63
- V(Map, string_map, StringMap) \
64
- V(Map, ascii_string_map, AsciiStringMap) \
65
- V(Map, symbol_map, SymbolMap) \
66
- V(Map, ascii_symbol_map, AsciiSymbolMap) \
67
- V(Map, cons_symbol_map, ConsSymbolMap) \
68
- V(Map, cons_ascii_symbol_map, ConsAsciiSymbolMap) \
69
- V(Map, external_symbol_map, ExternalSymbolMap) \
70
- V(Map, external_symbol_with_ascii_data_map, ExternalSymbolWithAsciiDataMap) \
71
- V(Map, external_ascii_symbol_map, ExternalAsciiSymbolMap) \
72
- V(Map, cons_string_map, ConsStringMap) \
73
- V(Map, cons_ascii_string_map, ConsAsciiStringMap) \
74
- V(Map, external_string_map, ExternalStringMap) \
75
- V(Map, external_string_with_ascii_data_map, ExternalStringWithAsciiDataMap) \
76
- V(Map, external_ascii_string_map, ExternalAsciiStringMap) \
77
- V(Map, undetectable_string_map, UndetectableStringMap) \
78
- V(Map, undetectable_ascii_string_map, UndetectableAsciiStringMap) \
79
- V(Map, pixel_array_map, PixelArrayMap) \
80
- V(Map, external_byte_array_map, ExternalByteArrayMap) \
81
- V(Map, external_unsigned_byte_array_map, ExternalUnsignedByteArrayMap) \
82
- V(Map, external_short_array_map, ExternalShortArrayMap) \
83
- V(Map, external_unsigned_short_array_map, ExternalUnsignedShortArrayMap) \
84
- V(Map, external_int_array_map, ExternalIntArrayMap) \
85
- V(Map, external_unsigned_int_array_map, ExternalUnsignedIntArrayMap) \
86
- V(Map, external_float_array_map, ExternalFloatArrayMap) \
87
- V(Map, context_map, ContextMap) \
88
- V(Map, catch_context_map, CatchContextMap) \
89
- V(Map, code_map, CodeMap) \
90
- V(Map, oddball_map, OddballMap) \
91
- V(Map, global_property_cell_map, GlobalPropertyCellMap) \
92
- V(Map, shared_function_info_map, SharedFunctionInfoMap) \
93
- V(Map, proxy_map, ProxyMap) \
94
- V(Object, nan_value, NanValue) \
95
- V(Object, minus_zero_value, MinusZeroValue) \
96
- V(Object, instanceof_cache_function, InstanceofCacheFunction) \
97
- V(Object, instanceof_cache_map, InstanceofCacheMap) \
98
- V(Object, instanceof_cache_answer, InstanceofCacheAnswer) \
99
- V(String, empty_string, EmptyString) \
100
- V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \
101
- V(Map, neander_map, NeanderMap) \
102
- V(JSObject, message_listeners, MessageListeners) \
103
- V(Proxy, prototype_accessors, PrototypeAccessors) \
104
- V(NumberDictionary, code_stubs, CodeStubs) \
105
- V(NumberDictionary, non_monomorphic_cache, NonMonomorphicCache) \
106
- V(Code, js_entry_code, JsEntryCode) \
107
- V(Code, js_construct_entry_code, JsConstructEntryCode) \
108
- V(Code, c_entry_code, CEntryCode) \
109
- V(FixedArray, number_string_cache, NumberStringCache) \
110
- V(FixedArray, single_character_string_cache, SingleCharacterStringCache) \
111
- V(FixedArray, natives_source_cache, NativesSourceCache) \
112
- V(Object, last_script_id, LastScriptId) \
113
- V(Script, empty_script, EmptyScript) \
114
- V(Smi, real_stack_limit, RealStackLimit) \
115
-
116
- #if V8_TARGET_ARCH_ARM && !V8_INTERPRETED_REGEXP
117
- #define STRONG_ROOT_LIST(V) \
118
- UNCONDITIONAL_STRONG_ROOT_LIST(V) \
119
- V(Code, re_c_entry_code, RegExpCEntryCode)
120
- #else
121
- #define STRONG_ROOT_LIST(V) UNCONDITIONAL_STRONG_ROOT_LIST(V)
122
- #endif
123
-
124
- #define ROOT_LIST(V) \
125
- STRONG_ROOT_LIST(V) \
126
- V(SymbolTable, symbol_table, SymbolTable)
127
-
128
- #define SYMBOL_LIST(V) \
129
- V(Array_symbol, "Array") \
130
- V(Object_symbol, "Object") \
131
- V(Proto_symbol, "__proto__") \
132
- V(StringImpl_symbol, "StringImpl") \
133
- V(arguments_symbol, "arguments") \
134
- V(Arguments_symbol, "Arguments") \
135
- V(arguments_shadow_symbol, ".arguments") \
136
- V(call_symbol, "call") \
137
- V(apply_symbol, "apply") \
138
- V(caller_symbol, "caller") \
139
- V(boolean_symbol, "boolean") \
140
- V(Boolean_symbol, "Boolean") \
141
- V(callee_symbol, "callee") \
142
- V(constructor_symbol, "constructor") \
143
- V(code_symbol, ".code") \
144
- V(result_symbol, ".result") \
145
- V(catch_var_symbol, ".catch-var") \
146
- V(empty_symbol, "") \
147
- V(eval_symbol, "eval") \
148
- V(function_symbol, "function") \
149
- V(length_symbol, "length") \
150
- V(name_symbol, "name") \
151
- V(number_symbol, "number") \
152
- V(Number_symbol, "Number") \
153
- V(RegExp_symbol, "RegExp") \
154
- V(source_symbol, "source") \
155
- V(global_symbol, "global") \
156
- V(ignore_case_symbol, "ignoreCase") \
157
- V(multiline_symbol, "multiline") \
158
- V(input_symbol, "input") \
159
- V(index_symbol, "index") \
160
- V(last_index_symbol, "lastIndex") \
161
- V(object_symbol, "object") \
162
- V(prototype_symbol, "prototype") \
163
- V(string_symbol, "string") \
164
- V(String_symbol, "String") \
165
- V(Date_symbol, "Date") \
166
- V(this_symbol, "this") \
167
- V(to_string_symbol, "toString") \
168
- V(char_at_symbol, "CharAt") \
169
- V(undefined_symbol, "undefined") \
170
- V(value_of_symbol, "valueOf") \
171
- V(InitializeVarGlobal_symbol, "InitializeVarGlobal") \
172
- V(InitializeConstGlobal_symbol, "InitializeConstGlobal") \
173
- V(stack_overflow_symbol, "kStackOverflowBoilerplate") \
174
- V(illegal_access_symbol, "illegal access") \
175
- V(out_of_memory_symbol, "out-of-memory") \
176
- V(illegal_execution_state_symbol, "illegal execution state") \
177
- V(get_symbol, "get") \
178
- V(set_symbol, "set") \
179
- V(function_class_symbol, "Function") \
180
- V(illegal_argument_symbol, "illegal argument") \
181
- V(MakeReferenceError_symbol, "MakeReferenceError") \
182
- V(MakeSyntaxError_symbol, "MakeSyntaxError") \
183
- V(MakeTypeError_symbol, "MakeTypeError") \
184
- V(invalid_lhs_in_assignment_symbol, "invalid_lhs_in_assignment") \
185
- V(invalid_lhs_in_for_in_symbol, "invalid_lhs_in_for_in") \
186
- V(invalid_lhs_in_postfix_op_symbol, "invalid_lhs_in_postfix_op") \
187
- V(invalid_lhs_in_prefix_op_symbol, "invalid_lhs_in_prefix_op") \
188
- V(illegal_return_symbol, "illegal_return") \
189
- V(illegal_break_symbol, "illegal_break") \
190
- V(illegal_continue_symbol, "illegal_continue") \
191
- V(unknown_label_symbol, "unknown_label") \
192
- V(redeclaration_symbol, "redeclaration") \
193
- V(failure_symbol, "<failure>") \
194
- V(space_symbol, " ") \
195
- V(exec_symbol, "exec") \
196
- V(zero_symbol, "0") \
197
- V(global_eval_symbol, "GlobalEval") \
198
- V(identity_hash_symbol, "v8::IdentityHash") \
199
- V(closure_symbol, "(closure)")
200
-
201
-
202
- // Forward declaration of the GCTracer class.
203
- class GCTracer;
204
- class HeapStats;
205
-
206
-
207
- typedef String* (*ExternalStringTableUpdaterCallback)(Object** pointer);
208
-
209
- typedef bool (*DirtyRegionCallback)(Address start,
210
- Address end,
211
- ObjectSlotCallback copy_object_func);
212
-
213
-
214
- // The all static Heap captures the interface to the global object heap.
215
- // All JavaScript contexts by this process share the same object heap.
216
-
217
- class Heap : public AllStatic {
218
- public:
219
- // Configure heap size before setup. Return false if the heap has been
220
- // setup already.
221
- static bool ConfigureHeap(int max_semispace_size, int max_old_gen_size);
222
- static bool ConfigureHeapDefault();
223
-
224
- // Initializes the global object heap. If create_heap_objects is true,
225
- // also creates the basic non-mutable objects.
226
- // Returns whether it succeeded.
227
- static bool Setup(bool create_heap_objects);
228
-
229
- // Destroys all memory allocated by the heap.
230
- static void TearDown();
231
-
232
- // Set the stack limit in the roots_ array. Some architectures generate
233
- // code that looks here, because it is faster than loading from the static
234
- // jslimit_/real_jslimit_ variable in the StackGuard.
235
- static void SetStackLimits();
236
-
237
- // Returns whether Setup has been called.
238
- static bool HasBeenSetup();
239
-
240
- // Returns the maximum amount of memory reserved for the heap. For
241
- // the young generation, we reserve 4 times the amount needed for a
242
- // semi space. The young generation consists of two semi spaces and
243
- // we reserve twice the amount needed for those in order to ensure
244
- // that new space can be aligned to its size.
245
- static int MaxReserved() {
246
- return 4 * reserved_semispace_size_ + max_old_generation_size_;
247
- }
248
- static int MaxSemiSpaceSize() { return max_semispace_size_; }
249
- static int ReservedSemiSpaceSize() { return reserved_semispace_size_; }
250
- static int InitialSemiSpaceSize() { return initial_semispace_size_; }
251
- static int MaxOldGenerationSize() { return max_old_generation_size_; }
252
-
253
- // Returns the capacity of the heap in bytes w/o growing. Heap grows when
254
- // more spaces are needed until it reaches the limit.
255
- static int Capacity();
256
-
257
- // Returns the amount of memory currently committed for the heap.
258
- static int CommittedMemory();
259
-
260
- // Returns the available bytes in space w/o growing.
261
- // Heap doesn't guarantee that it can allocate an object that requires
262
- // all available bytes. Check MaxHeapObjectSize() instead.
263
- static int Available();
264
-
265
- // Returns the maximum object size in paged space.
266
- static inline int MaxObjectSizeInPagedSpace();
267
-
268
- // Returns of size of all objects residing in the heap.
269
- static int SizeOfObjects();
270
-
271
- // Return the starting address and a mask for the new space. And-masking an
272
- // address with the mask will result in the start address of the new space
273
- // for all addresses in either semispace.
274
- static Address NewSpaceStart() { return new_space_.start(); }
275
- static uintptr_t NewSpaceMask() { return new_space_.mask(); }
276
- static Address NewSpaceTop() { return new_space_.top(); }
277
-
278
- static NewSpace* new_space() { return &new_space_; }
279
- static OldSpace* old_pointer_space() { return old_pointer_space_; }
280
- static OldSpace* old_data_space() { return old_data_space_; }
281
- static OldSpace* code_space() { return code_space_; }
282
- static MapSpace* map_space() { return map_space_; }
283
- static CellSpace* cell_space() { return cell_space_; }
284
- static LargeObjectSpace* lo_space() { return lo_space_; }
285
-
286
- static bool always_allocate() { return always_allocate_scope_depth_ != 0; }
287
- static Address always_allocate_scope_depth_address() {
288
- return reinterpret_cast<Address>(&always_allocate_scope_depth_);
289
- }
290
- static bool linear_allocation() {
291
- return linear_allocation_scope_depth_ != 0;
292
- }
293
-
294
- static Address* NewSpaceAllocationTopAddress() {
295
- return new_space_.allocation_top_address();
296
- }
297
- static Address* NewSpaceAllocationLimitAddress() {
298
- return new_space_.allocation_limit_address();
299
- }
300
-
301
- // Uncommit unused semi space.
302
- static bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); }
303
-
304
- #ifdef ENABLE_HEAP_PROTECTION
305
- // Protect/unprotect the heap by marking all spaces read-only/writable.
306
- static void Protect();
307
- static void Unprotect();
308
- #endif
309
-
310
- // Allocates and initializes a new JavaScript object based on a
311
- // constructor.
312
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
313
- // failed.
314
- // Please note this does not perform a garbage collection.
315
- static Object* AllocateJSObject(JSFunction* constructor,
316
- PretenureFlag pretenure = NOT_TENURED);
317
-
318
- // Allocates and initializes a new global object based on a constructor.
319
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
320
- // failed.
321
- // Please note this does not perform a garbage collection.
322
- static Object* AllocateGlobalObject(JSFunction* constructor);
323
-
324
- // Returns a deep copy of the JavaScript object.
325
- // Properties and elements are copied too.
326
- // Returns failure if allocation failed.
327
- static Object* CopyJSObject(JSObject* source);
328
-
329
- // Allocates the function prototype.
330
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
331
- // failed.
332
- // Please note this does not perform a garbage collection.
333
- static Object* AllocateFunctionPrototype(JSFunction* function);
334
-
335
- // Reinitialize an JSGlobalProxy based on a constructor. The object
336
- // must have the same size as objects allocated using the
337
- // constructor. The object is reinitialized and behaves as an
338
- // object that has been freshly allocated using the constructor.
339
- static Object* ReinitializeJSGlobalProxy(JSFunction* constructor,
340
- JSGlobalProxy* global);
341
-
342
- // Allocates and initializes a new JavaScript object based on a map.
343
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
344
- // failed.
345
- // Please note this does not perform a garbage collection.
346
- static Object* AllocateJSObjectFromMap(Map* map,
347
- PretenureFlag pretenure = NOT_TENURED);
348
-
349
- // Allocates a heap object based on the map.
350
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
351
- // failed.
352
- // Please note this function does not perform a garbage collection.
353
- static Object* Allocate(Map* map, AllocationSpace space);
354
-
355
- // Allocates a JS Map in the heap.
356
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
357
- // failed.
358
- // Please note this function does not perform a garbage collection.
359
- static Object* AllocateMap(InstanceType instance_type, int instance_size);
360
-
361
- // Allocates a partial map for bootstrapping.
362
- static Object* AllocatePartialMap(InstanceType instance_type,
363
- int instance_size);
364
-
365
- // Allocate a map for the specified function
366
- static Object* AllocateInitialMap(JSFunction* fun);
367
-
368
- // Allocates an empty code cache.
369
- static Object* AllocateCodeCache();
370
-
371
- // Clear the Instanceof cache (used when a prototype changes).
372
- static void ClearInstanceofCache() {
373
- set_instanceof_cache_function(the_hole_value());
374
- }
375
-
376
- // Allocates and fully initializes a String. There are two String
377
- // encodings: ASCII and two byte. One should choose between the three string
378
- // allocation functions based on the encoding of the string buffer used to
379
- // initialized the string.
380
- // - ...FromAscii initializes the string from a buffer that is ASCII
381
- // encoded (it does not check that the buffer is ASCII encoded) and the
382
- // result will be ASCII encoded.
383
- // - ...FromUTF8 initializes the string from a buffer that is UTF-8
384
- // encoded. If the characters are all single-byte characters, the
385
- // result will be ASCII encoded, otherwise it will converted to two
386
- // byte.
387
- // - ...FromTwoByte initializes the string from a buffer that is two-byte
388
- // encoded. If the characters are all single-byte characters, the
389
- // result will be converted to ASCII, otherwise it will be left as
390
- // two-byte.
391
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
392
- // failed.
393
- // Please note this does not perform a garbage collection.
394
- static Object* AllocateStringFromAscii(
395
- Vector<const char> str,
396
- PretenureFlag pretenure = NOT_TENURED);
397
- static Object* AllocateStringFromUtf8(
398
- Vector<const char> str,
399
- PretenureFlag pretenure = NOT_TENURED);
400
- static Object* AllocateStringFromTwoByte(
401
- Vector<const uc16> str,
402
- PretenureFlag pretenure = NOT_TENURED);
403
-
404
- // Allocates a symbol in old space based on the character stream.
405
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
406
- // failed.
407
- // Please note this function does not perform a garbage collection.
408
- static inline Object* AllocateSymbol(Vector<const char> str,
409
- int chars,
410
- uint32_t hash_field);
411
-
412
- static Object* AllocateInternalSymbol(unibrow::CharacterStream* buffer,
413
- int chars,
414
- uint32_t hash_field);
415
-
416
- static Object* AllocateExternalSymbol(Vector<const char> str,
417
- int chars);
418
-
419
-
420
- // Allocates and partially initializes a String. There are two String
421
- // encodings: ASCII and two byte. These functions allocate a string of the
422
- // given length and set its map and length fields. The characters of the
423
- // string are uninitialized.
424
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
425
- // failed.
426
- // Please note this does not perform a garbage collection.
427
- static Object* AllocateRawAsciiString(
428
- int length,
429
- PretenureFlag pretenure = NOT_TENURED);
430
- static Object* AllocateRawTwoByteString(
431
- int length,
432
- PretenureFlag pretenure = NOT_TENURED);
433
-
434
- // Computes a single character string where the character has code.
435
- // A cache is used for ascii codes.
436
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
437
- // failed. Please note this does not perform a garbage collection.
438
- static Object* LookupSingleCharacterStringFromCode(uint16_t code);
439
-
440
- // Allocate a byte array of the specified length
441
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
442
- // failed.
443
- // Please note this does not perform a garbage collection.
444
- static Object* AllocateByteArray(int length, PretenureFlag pretenure);
445
-
446
- // Allocate a non-tenured byte array of the specified length
447
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
448
- // failed.
449
- // Please note this does not perform a garbage collection.
450
- static Object* AllocateByteArray(int length);
451
-
452
- // Allocate a pixel array of the specified length
453
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
454
- // failed.
455
- // Please note this does not perform a garbage collection.
456
- static Object* AllocatePixelArray(int length,
457
- uint8_t* external_pointer,
458
- PretenureFlag pretenure);
459
-
460
- // Allocates an external array of the specified length and type.
461
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
462
- // failed.
463
- // Please note this does not perform a garbage collection.
464
- static Object* AllocateExternalArray(int length,
465
- ExternalArrayType array_type,
466
- void* external_pointer,
467
- PretenureFlag pretenure);
468
-
469
- // Allocate a tenured JS global property cell.
470
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
471
- // failed.
472
- // Please note this does not perform a garbage collection.
473
- static Object* AllocateJSGlobalPropertyCell(Object* value);
474
-
475
- // Allocates a fixed array initialized with undefined values
476
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
477
- // failed.
478
- // Please note this does not perform a garbage collection.
479
- static Object* AllocateFixedArray(int length, PretenureFlag pretenure);
480
- // Allocates a fixed array initialized with undefined values
481
- static Object* AllocateFixedArray(int length);
482
-
483
- // Allocates an uninitialized fixed array. It must be filled by the caller.
484
- //
485
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
486
- // failed.
487
- // Please note this does not perform a garbage collection.
488
- static Object* AllocateUninitializedFixedArray(int length);
489
-
490
- // Make a copy of src and return it. Returns
491
- // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
492
- static Object* CopyFixedArray(FixedArray* src);
493
-
494
- // Allocates a fixed array initialized with the hole values.
495
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
496
- // failed.
497
- // Please note this does not perform a garbage collection.
498
- static Object* AllocateFixedArrayWithHoles(
499
- int length,
500
- PretenureFlag pretenure = NOT_TENURED);
501
-
502
- // AllocateHashTable is identical to AllocateFixedArray except
503
- // that the resulting object has hash_table_map as map.
504
- static Object* AllocateHashTable(int length,
505
- PretenureFlag pretenure = NOT_TENURED);
506
-
507
- // Allocate a global (but otherwise uninitialized) context.
508
- static Object* AllocateGlobalContext();
509
-
510
- // Allocate a function context.
511
- static Object* AllocateFunctionContext(int length, JSFunction* closure);
512
-
513
- // Allocate a 'with' context.
514
- static Object* AllocateWithContext(Context* previous,
515
- JSObject* extension,
516
- bool is_catch_context);
517
-
518
- // Allocates a new utility object in the old generation.
519
- static Object* AllocateStruct(InstanceType type);
520
-
521
- // Allocates a function initialized with a shared part.
522
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
523
- // failed.
524
- // Please note this does not perform a garbage collection.
525
- static Object* AllocateFunction(Map* function_map,
526
- SharedFunctionInfo* shared,
527
- Object* prototype,
528
- PretenureFlag pretenure = TENURED);
529
-
530
- // Indicies for direct access into argument objects.
531
- static const int kArgumentsObjectSize =
532
- JSObject::kHeaderSize + 2 * kPointerSize;
533
- static const int arguments_callee_index = 0;
534
- static const int arguments_length_index = 1;
535
-
536
- // Allocates an arguments object - optionally with an elements array.
537
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
538
- // failed.
539
- // Please note this does not perform a garbage collection.
540
- static Object* AllocateArgumentsObject(Object* callee, int length);
541
-
542
- // Same as NewNumberFromDouble, but may return a preallocated/immutable
543
- // number object (e.g., minus_zero_value_, nan_value_)
544
- static Object* NumberFromDouble(double value,
545
- PretenureFlag pretenure = NOT_TENURED);
546
-
547
- // Allocated a HeapNumber from value.
548
- static Object* AllocateHeapNumber(double value, PretenureFlag pretenure);
549
- static Object* AllocateHeapNumber(double value); // pretenure = NOT_TENURED
550
-
551
- // Converts an int into either a Smi or a HeapNumber object.
552
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
553
- // failed.
554
- // Please note this does not perform a garbage collection.
555
- static inline Object* NumberFromInt32(int32_t value);
556
-
557
- // Converts an int into either a Smi or a HeapNumber object.
558
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
559
- // failed.
560
- // Please note this does not perform a garbage collection.
561
- static inline Object* NumberFromUint32(uint32_t value);
562
-
563
- // Allocates a new proxy object.
564
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
565
- // failed.
566
- // Please note this does not perform a garbage collection.
567
- static Object* AllocateProxy(Address proxy,
568
- PretenureFlag pretenure = NOT_TENURED);
569
-
570
- // Allocates a new SharedFunctionInfo object.
571
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
572
- // failed.
573
- // Please note this does not perform a garbage collection.
574
- static Object* AllocateSharedFunctionInfo(Object* name);
575
-
576
- // Allocates a new cons string object.
577
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
578
- // failed.
579
- // Please note this does not perform a garbage collection.
580
- static Object* AllocateConsString(String* first, String* second);
581
-
582
- // Allocates a new sub string object which is a substring of an underlying
583
- // string buffer stretching from the index start (inclusive) to the index
584
- // end (exclusive).
585
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
586
- // failed.
587
- // Please note this does not perform a garbage collection.
588
- static Object* AllocateSubString(String* buffer,
589
- int start,
590
- int end,
591
- PretenureFlag pretenure = NOT_TENURED);
592
-
593
- // Allocate a new external string object, which is backed by a string
594
- // resource that resides outside the V8 heap.
595
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
596
- // failed.
597
- // Please note this does not perform a garbage collection.
598
- static Object* AllocateExternalStringFromAscii(
599
- ExternalAsciiString::Resource* resource);
600
- static Object* AllocateExternalStringFromTwoByte(
601
- ExternalTwoByteString::Resource* resource);
602
-
603
- // Finalizes an external string by deleting the associated external
604
- // data and clearing the resource pointer.
605
- static inline void FinalizeExternalString(String* string);
606
-
607
- // Allocates an uninitialized object. The memory is non-executable if the
608
- // hardware and OS allow.
609
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
610
- // failed.
611
- // Please note this function does not perform a garbage collection.
612
- static inline Object* AllocateRaw(int size_in_bytes,
613
- AllocationSpace space,
614
- AllocationSpace retry_space);
615
-
616
- // Initialize a filler object to keep the ability to iterate over the heap
617
- // when shortening objects.
618
- static void CreateFillerObjectAt(Address addr, int size);
619
-
620
- // Makes a new native code object
621
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
622
- // failed. On success, the pointer to the Code object is stored in the
623
- // self_reference. This allows generated code to reference its own Code
624
- // object by containing this pointer.
625
- // Please note this function does not perform a garbage collection.
626
- static Object* CreateCode(const CodeDesc& desc,
627
- Code::Flags flags,
628
- Handle<Object> self_reference);
629
-
630
- static Object* CopyCode(Code* code);
631
-
632
- // Copy the code and scope info part of the code object, but insert
633
- // the provided data as the relocation information.
634
- static Object* CopyCode(Code* code, Vector<byte> reloc_info);
635
-
636
- // Finds the symbol for string in the symbol table.
637
- // If not found, a new symbol is added to the table and returned.
638
- // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation
639
- // failed.
640
- // Please note this function does not perform a garbage collection.
641
- static Object* LookupSymbol(Vector<const char> str);
642
- static Object* LookupAsciiSymbol(const char* str) {
643
- return LookupSymbol(CStrVector(str));
644
- }
645
- static Object* LookupSymbol(String* str);
646
- static bool LookupSymbolIfExists(String* str, String** symbol);
647
- static bool LookupTwoCharsSymbolIfExists(String* str, String** symbol);
648
-
649
- // Compute the matching symbol map for a string if possible.
650
- // NULL is returned if string is in new space or not flattened.
651
- static Map* SymbolMapForString(String* str);
652
-
653
- // Tries to flatten a string before compare operation.
654
- //
655
- // Returns a failure in case it was decided that flattening was
656
- // necessary and failed. Note, if flattening is not necessary the
657
- // string might stay non-flat even when not a failure is returned.
658
- //
659
- // Please note this function does not perform a garbage collection.
660
- static inline Object* PrepareForCompare(String* str);
661
-
662
- // Converts the given boolean condition to JavaScript boolean value.
663
- static Object* ToBoolean(bool condition) {
664
- return condition ? true_value() : false_value();
665
- }
666
-
667
- // Code that should be run before and after each GC. Includes some
668
- // reporting/verification activities when compiled with DEBUG set.
669
- static void GarbageCollectionPrologue();
670
- static void GarbageCollectionEpilogue();
671
-
672
- // Performs garbage collection operation.
673
- // Returns whether required_space bytes are available after the collection.
674
- static bool CollectGarbage(int required_space, AllocationSpace space);
675
-
676
- // Performs a full garbage collection. Force compaction if the
677
- // parameter is true.
678
- static void CollectAllGarbage(bool force_compaction);
679
-
680
- // Notify the heap that a context has been disposed.
681
- static int NotifyContextDisposed() { return ++contexts_disposed_; }
682
-
683
- // Utility to invoke the scavenger. This is needed in test code to
684
- // ensure correct callback for weak global handles.
685
- static void PerformScavenge();
686
-
687
- #ifdef DEBUG
688
- // Utility used with flag gc-greedy.
689
- static bool GarbageCollectionGreedyCheck();
690
- #endif
691
-
692
- static void AddGCPrologueCallback(
693
- GCEpilogueCallback callback, GCType gc_type_filter);
694
- static void RemoveGCPrologueCallback(GCEpilogueCallback callback);
695
-
696
- static void AddGCEpilogueCallback(
697
- GCEpilogueCallback callback, GCType gc_type_filter);
698
- static void RemoveGCEpilogueCallback(GCEpilogueCallback callback);
699
-
700
- static void SetGlobalGCPrologueCallback(GCCallback callback) {
701
- ASSERT((callback == NULL) ^ (global_gc_prologue_callback_ == NULL));
702
- global_gc_prologue_callback_ = callback;
703
- }
704
- static void SetGlobalGCEpilogueCallback(GCCallback callback) {
705
- ASSERT((callback == NULL) ^ (global_gc_epilogue_callback_ == NULL));
706
- global_gc_epilogue_callback_ = callback;
707
- }
708
-
709
- // Heap root getters. We have versions with and without type::cast() here.
710
- // You can't use type::cast during GC because the assert fails.
711
- #define ROOT_ACCESSOR(type, name, camel_name) \
712
- static inline type* name() { \
713
- return type::cast(roots_[k##camel_name##RootIndex]); \
714
- } \
715
- static inline type* raw_unchecked_##name() { \
716
- return reinterpret_cast<type*>(roots_[k##camel_name##RootIndex]); \
717
- }
718
- ROOT_LIST(ROOT_ACCESSOR)
719
- #undef ROOT_ACCESSOR
720
-
721
- // Utility type maps
722
- #define STRUCT_MAP_ACCESSOR(NAME, Name, name) \
723
- static inline Map* name##_map() { \
724
- return Map::cast(roots_[k##Name##MapRootIndex]); \
725
- }
726
- STRUCT_LIST(STRUCT_MAP_ACCESSOR)
727
- #undef STRUCT_MAP_ACCESSOR
728
-
729
- #define SYMBOL_ACCESSOR(name, str) static inline String* name() { \
730
- return String::cast(roots_[k##name##RootIndex]); \
731
- }
732
- SYMBOL_LIST(SYMBOL_ACCESSOR)
733
- #undef SYMBOL_ACCESSOR
734
-
735
- // The hidden_symbol is special because it is the empty string, but does
736
- // not match the empty string.
737
- static String* hidden_symbol() { return hidden_symbol_; }
738
-
739
- // Iterates over all roots in the heap.
740
- static void IterateRoots(ObjectVisitor* v, VisitMode mode);
741
- // Iterates over all strong roots in the heap.
742
- static void IterateStrongRoots(ObjectVisitor* v, VisitMode mode);
743
- // Iterates over all the other roots in the heap.
744
- static void IterateWeakRoots(ObjectVisitor* v, VisitMode mode);
745
-
746
- enum ExpectedPageWatermarkState {
747
- WATERMARK_SHOULD_BE_VALID,
748
- WATERMARK_CAN_BE_INVALID
749
- };
750
-
751
- // For each dirty region on a page in use from an old space call
752
- // visit_dirty_region callback.
753
- // If either visit_dirty_region or callback can cause an allocation
754
- // in old space and changes in allocation watermark then
755
- // can_preallocate_during_iteration should be set to true.
756
- // All pages will be marked as having invalid watermark upon
757
- // iteration completion.
758
- static void IterateDirtyRegions(
759
- PagedSpace* space,
760
- DirtyRegionCallback visit_dirty_region,
761
- ObjectSlotCallback callback,
762
- ExpectedPageWatermarkState expected_page_watermark_state);
763
-
764
- // Interpret marks as a bitvector of dirty marks for regions of size
765
- // Page::kRegionSize aligned by Page::kRegionAlignmentMask and covering
766
- // memory interval from start to top. For each dirty region call a
767
- // visit_dirty_region callback. Return updated bitvector of dirty marks.
768
- static uint32_t IterateDirtyRegions(uint32_t marks,
769
- Address start,
770
- Address end,
771
- DirtyRegionCallback visit_dirty_region,
772
- ObjectSlotCallback callback);
773
-
774
- // Iterate pointers to from semispace of new space found in memory interval
775
- // from start to end.
776
- // Update dirty marks for page containing start address.
777
- static void IterateAndMarkPointersToFromSpace(Address start,
778
- Address end,
779
- ObjectSlotCallback callback);
780
-
781
- // Iterate pointers to new space found in memory interval from start to end.
782
- // Return true if pointers to new space was found.
783
- static bool IteratePointersInDirtyRegion(Address start,
784
- Address end,
785
- ObjectSlotCallback callback);
786
-
787
-
788
- // Iterate pointers to new space found in memory interval from start to end.
789
- // This interval is considered to belong to the map space.
790
- // Return true if pointers to new space was found.
791
- static bool IteratePointersInDirtyMapsRegion(Address start,
792
- Address end,
793
- ObjectSlotCallback callback);
794
-
795
-
796
- // Returns whether the object resides in new space.
797
- static inline bool InNewSpace(Object* object);
798
- static inline bool InFromSpace(Object* object);
799
- static inline bool InToSpace(Object* object);
800
-
801
- // Checks whether an address/object in the heap (including auxiliary
802
- // area and unused area).
803
- static bool Contains(Address addr);
804
- static bool Contains(HeapObject* value);
805
-
806
- // Checks whether an address/object in a space.
807
- // Currently used by tests, serialization and heap verification only.
808
- static bool InSpace(Address addr, AllocationSpace space);
809
- static bool InSpace(HeapObject* value, AllocationSpace space);
810
-
811
- // Finds out which space an object should get promoted to based on its type.
812
- static inline OldSpace* TargetSpace(HeapObject* object);
813
- static inline AllocationSpace TargetSpaceId(InstanceType type);
814
-
815
- // Sets the stub_cache_ (only used when expanding the dictionary).
816
- static void public_set_code_stubs(NumberDictionary* value) {
817
- roots_[kCodeStubsRootIndex] = value;
818
- }
819
-
820
- // Sets the non_monomorphic_cache_ (only used when expanding the dictionary).
821
- static void public_set_non_monomorphic_cache(NumberDictionary* value) {
822
- roots_[kNonMonomorphicCacheRootIndex] = value;
823
- }
824
-
825
- static void public_set_empty_script(Script* script) {
826
- roots_[kEmptyScriptRootIndex] = script;
827
- }
828
-
829
- // Update the next script id.
830
- static inline void SetLastScriptId(Object* last_script_id);
831
-
832
- // Generated code can embed this address to get access to the roots.
833
- static Object** roots_address() { return roots_; }
834
-
835
- #ifdef DEBUG
836
- static void Print();
837
- static void PrintHandles();
838
-
839
- // Verify the heap is in its normal state before or after a GC.
840
- static void Verify();
841
-
842
- // Report heap statistics.
843
- static void ReportHeapStatistics(const char* title);
844
- static void ReportCodeStatistics(const char* title);
845
-
846
- // Fill in bogus values in from space
847
- static void ZapFromSpace();
848
- #endif
849
-
850
- #if defined(ENABLE_LOGGING_AND_PROFILING)
851
- // Print short heap statistics.
852
- static void PrintShortHeapStatistics();
853
- #endif
854
-
855
- // Makes a new symbol object
856
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
857
- // failed.
858
- // Please note this function does not perform a garbage collection.
859
- static Object* CreateSymbol(const char* str, int length, int hash);
860
- static Object* CreateSymbol(String* str);
861
-
862
- // Write barrier support for address[offset] = o.
863
- static inline void RecordWrite(Address address, int offset);
864
-
865
- // Write barrier support for address[start : start + len[ = o.
866
- static inline void RecordWrites(Address address, int start, int len);
867
-
868
- // Given an address occupied by a live code object, return that object.
869
- static Object* FindCodeObject(Address a);
870
-
871
- // Invoke Shrink on shrinkable spaces.
872
- static void Shrink();
873
-
874
- enum HeapState { NOT_IN_GC, SCAVENGE, MARK_COMPACT };
875
- static inline HeapState gc_state() { return gc_state_; }
876
-
877
- #ifdef DEBUG
878
- static bool IsAllocationAllowed() { return allocation_allowed_; }
879
- static inline bool allow_allocation(bool enable);
880
-
881
- static bool disallow_allocation_failure() {
882
- return disallow_allocation_failure_;
883
- }
884
-
885
- static void TracePathToObject(Object* target);
886
- static void TracePathToGlobal();
887
- #endif
888
-
889
- // Callback function passed to Heap::Iterate etc. Copies an object if
890
- // necessary, the object might be promoted to an old space. The caller must
891
- // ensure the precondition that the object is (a) a heap object and (b) in
892
- // the heap's from space.
893
- static void ScavengePointer(HeapObject** p);
894
- static inline void ScavengeObject(HeapObject** p, HeapObject* object);
895
-
896
- // Commits from space if it is uncommitted.
897
- static void EnsureFromSpaceIsCommitted();
898
-
899
- // Support for partial snapshots. After calling this we can allocate a
900
- // certain number of bytes using only linear allocation (with a
901
- // LinearAllocationScope and an AlwaysAllocateScope) without using freelists
902
- // or causing a GC. It returns true of space was reserved or false if a GC is
903
- // needed. For paged spaces the space requested must include the space wasted
904
- // at the end of each page when allocating linearly.
905
- static void ReserveSpace(
906
- int new_space_size,
907
- int pointer_space_size,
908
- int data_space_size,
909
- int code_space_size,
910
- int map_space_size,
911
- int cell_space_size,
912
- int large_object_size);
913
-
914
- //
915
- // Support for the API.
916
- //
917
-
918
- static bool CreateApiObjects();
919
-
920
- // Attempt to find the number in a small cache. If we finds it, return
921
- // the string representation of the number. Otherwise return undefined.
922
- static Object* GetNumberStringCache(Object* number);
923
-
924
- // Update the cache with a new number-string pair.
925
- static void SetNumberStringCache(Object* number, String* str);
926
-
927
- // Adjusts the amount of registered external memory.
928
- // Returns the adjusted value.
929
- static inline int AdjustAmountOfExternalAllocatedMemory(int change_in_bytes);
930
-
931
- // Allocate uninitialized fixed array.
932
- static Object* AllocateRawFixedArray(int length);
933
- static Object* AllocateRawFixedArray(int length,
934
- PretenureFlag pretenure);
935
-
936
- // True if we have reached the allocation limit in the old generation that
937
- // should force the next GC (caused normally) to be a full one.
938
- static bool OldGenerationPromotionLimitReached() {
939
- return (PromotedSpaceSize() + PromotedExternalMemorySize())
940
- > old_gen_promotion_limit_;
941
- }
942
-
943
- static intptr_t OldGenerationSpaceAvailable() {
944
- return old_gen_allocation_limit_ -
945
- (PromotedSpaceSize() + PromotedExternalMemorySize());
946
- }
947
-
948
- // True if we have reached the allocation limit in the old generation that
949
- // should artificially cause a GC right now.
950
- static bool OldGenerationAllocationLimitReached() {
951
- return OldGenerationSpaceAvailable() < 0;
952
- }
953
-
954
- // Can be called when the embedding application is idle.
955
- static bool IdleNotification();
956
-
957
- // Declare all the root indices.
958
- enum RootListIndex {
959
- #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
960
- STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
961
- #undef ROOT_INDEX_DECLARATION
962
-
963
- // Utility type maps
964
- #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
965
- STRUCT_LIST(DECLARE_STRUCT_MAP)
966
- #undef DECLARE_STRUCT_MAP
967
-
968
- #define SYMBOL_INDEX_DECLARATION(name, str) k##name##RootIndex,
969
- SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
970
- #undef SYMBOL_DECLARATION
971
-
972
- kSymbolTableRootIndex,
973
- kStrongRootListLength = kSymbolTableRootIndex,
974
- kRootListLength
975
- };
976
-
977
- static Object* NumberToString(Object* number,
978
- bool check_number_string_cache = true);
979
-
980
- static Map* MapForExternalArrayType(ExternalArrayType array_type);
981
- static RootListIndex RootIndexForExternalArrayType(
982
- ExternalArrayType array_type);
983
-
984
- static void RecordStats(HeapStats* stats);
985
-
986
- static Scavenger GetScavenger(int instance_type, int instance_size);
987
-
988
- // Copy block of memory from src to dst. Size of block should be aligned
989
- // by pointer size.
990
- static inline void CopyBlock(Address dst, Address src, int byte_size);
991
-
992
- static inline void CopyBlockToOldSpaceAndUpdateRegionMarks(Address dst,
993
- Address src,
994
- int byte_size);
995
-
996
- // Optimized version of memmove for blocks with pointer size aligned sizes and
997
- // pointer size aligned addresses.
998
- static inline void MoveBlock(Address dst, Address src, int byte_size);
999
-
1000
- static inline void MoveBlockToOldSpaceAndUpdateRegionMarks(Address dst,
1001
- Address src,
1002
- int byte_size);
1003
-
1004
- // Check new space expansion criteria and expand semispaces if it was hit.
1005
- static void CheckNewSpaceExpansionCriteria();
1006
-
1007
- static inline void IncrementYoungSurvivorsCounter(int survived) {
1008
- young_survivors_after_last_gc_ = survived;
1009
- survived_since_last_expansion_ += survived;
1010
- }
1011
-
1012
- static void UpdateNewSpaceReferencesInExternalStringTable(
1013
- ExternalStringTableUpdaterCallback updater_func);
1014
-
1015
- // Helper function that governs the promotion policy from new space to
1016
- // old. If the object's old address lies below the new space's age
1017
- // mark or if we've already filled the bottom 1/16th of the to space,
1018
- // we try to promote this object.
1019
- static inline bool ShouldBePromoted(Address old_address, int object_size);
1020
-
1021
- static int MaxObjectSizeInNewSpace() { return kMaxObjectSizeInNewSpace; }
1022
-
1023
- static void ClearJSFunctionResultCaches();
1024
-
1025
- static GCTracer* tracer() { return tracer_; }
1026
-
1027
- private:
1028
- static int reserved_semispace_size_;
1029
- static int max_semispace_size_;
1030
- static int initial_semispace_size_;
1031
- static int max_old_generation_size_;
1032
- static size_t code_range_size_;
1033
-
1034
- // For keeping track of how much data has survived
1035
- // scavenge since last new space expansion.
1036
- static int survived_since_last_expansion_;
1037
-
1038
- static int always_allocate_scope_depth_;
1039
- static int linear_allocation_scope_depth_;
1040
-
1041
- // For keeping track of context disposals.
1042
- static int contexts_disposed_;
1043
-
1044
- #if defined(V8_TARGET_ARCH_X64)
1045
- static const int kMaxObjectSizeInNewSpace = 512*KB;
1046
- #else
1047
- static const int kMaxObjectSizeInNewSpace = 256*KB;
1048
- #endif
1049
-
1050
- static NewSpace new_space_;
1051
- static OldSpace* old_pointer_space_;
1052
- static OldSpace* old_data_space_;
1053
- static OldSpace* code_space_;
1054
- static MapSpace* map_space_;
1055
- static CellSpace* cell_space_;
1056
- static LargeObjectSpace* lo_space_;
1057
- static HeapState gc_state_;
1058
-
1059
- // Returns the size of object residing in non new spaces.
1060
- static int PromotedSpaceSize();
1061
-
1062
- // Returns the amount of external memory registered since last global gc.
1063
- static int PromotedExternalMemorySize();
1064
-
1065
- static int mc_count_; // how many mark-compact collections happened
1066
- static int ms_count_; // how many mark-sweep collections happened
1067
- static int gc_count_; // how many gc happened
1068
-
1069
- // Total length of the strings we failed to flatten since the last GC.
1070
- static int unflattened_strings_length_;
1071
-
1072
- #define ROOT_ACCESSOR(type, name, camel_name) \
1073
- static inline void set_##name(type* value) { \
1074
- roots_[k##camel_name##RootIndex] = value; \
1075
- }
1076
- ROOT_LIST(ROOT_ACCESSOR)
1077
- #undef ROOT_ACCESSOR
1078
-
1079
- #ifdef DEBUG
1080
- static bool allocation_allowed_;
1081
-
1082
- // If the --gc-interval flag is set to a positive value, this
1083
- // variable holds the value indicating the number of allocations
1084
- // remain until the next failure and garbage collection.
1085
- static int allocation_timeout_;
1086
-
1087
- // Do we expect to be able to handle allocation failure at this
1088
- // time?
1089
- static bool disallow_allocation_failure_;
1090
- #endif // DEBUG
1091
-
1092
- // Limit that triggers a global GC on the next (normally caused) GC. This
1093
- // is checked when we have already decided to do a GC to help determine
1094
- // which collector to invoke.
1095
- static int old_gen_promotion_limit_;
1096
-
1097
- // Limit that triggers a global GC as soon as is reasonable. This is
1098
- // checked before expanding a paged space in the old generation and on
1099
- // every allocation in large object space.
1100
- static int old_gen_allocation_limit_;
1101
-
1102
- // Limit on the amount of externally allocated memory allowed
1103
- // between global GCs. If reached a global GC is forced.
1104
- static int external_allocation_limit_;
1105
-
1106
- // The amount of external memory registered through the API kept alive
1107
- // by global handles
1108
- static int amount_of_external_allocated_memory_;
1109
-
1110
- // Caches the amount of external memory registered at the last global gc.
1111
- static int amount_of_external_allocated_memory_at_last_global_gc_;
1112
-
1113
- // Indicates that an allocation has failed in the old generation since the
1114
- // last GC.
1115
- static int old_gen_exhausted_;
1116
-
1117
- static Object* roots_[kRootListLength];
1118
-
1119
- struct StringTypeTable {
1120
- InstanceType type;
1121
- int size;
1122
- RootListIndex index;
1123
- };
1124
-
1125
- struct ConstantSymbolTable {
1126
- const char* contents;
1127
- RootListIndex index;
1128
- };
1129
-
1130
- struct StructTable {
1131
- InstanceType type;
1132
- int size;
1133
- RootListIndex index;
1134
- };
1135
-
1136
- static const StringTypeTable string_type_table[];
1137
- static const ConstantSymbolTable constant_symbol_table[];
1138
- static const StructTable struct_table[];
1139
-
1140
- // The special hidden symbol which is an empty string, but does not match
1141
- // any string when looked up in properties.
1142
- static String* hidden_symbol_;
1143
-
1144
- // GC callback function, called before and after mark-compact GC.
1145
- // Allocations in the callback function are disallowed.
1146
- struct GCPrologueCallbackPair {
1147
- GCPrologueCallbackPair(GCPrologueCallback callback, GCType gc_type)
1148
- : callback(callback), gc_type(gc_type) {
1149
- }
1150
- bool operator==(const GCPrologueCallbackPair& pair) const {
1151
- return pair.callback == callback;
1152
- }
1153
- GCPrologueCallback callback;
1154
- GCType gc_type;
1155
- };
1156
- static List<GCPrologueCallbackPair> gc_prologue_callbacks_;
1157
-
1158
- struct GCEpilogueCallbackPair {
1159
- GCEpilogueCallbackPair(GCEpilogueCallback callback, GCType gc_type)
1160
- : callback(callback), gc_type(gc_type) {
1161
- }
1162
- bool operator==(const GCEpilogueCallbackPair& pair) const {
1163
- return pair.callback == callback;
1164
- }
1165
- GCEpilogueCallback callback;
1166
- GCType gc_type;
1167
- };
1168
- static List<GCEpilogueCallbackPair> gc_epilogue_callbacks_;
1169
-
1170
- static GCCallback global_gc_prologue_callback_;
1171
- static GCCallback global_gc_epilogue_callback_;
1172
-
1173
- // Checks whether a global GC is necessary
1174
- static GarbageCollector SelectGarbageCollector(AllocationSpace space);
1175
-
1176
- // Performs garbage collection
1177
- static void PerformGarbageCollection(AllocationSpace space,
1178
- GarbageCollector collector,
1179
- GCTracer* tracer);
1180
-
1181
- // Allocate an uninitialized object in map space. The behavior is identical
1182
- // to Heap::AllocateRaw(size_in_bytes, MAP_SPACE), except that (a) it doesn't
1183
- // have to test the allocation space argument and (b) can reduce code size
1184
- // (since both AllocateRaw and AllocateRawMap are inlined).
1185
- static inline Object* AllocateRawMap();
1186
-
1187
- // Allocate an uninitialized object in the global property cell space.
1188
- static inline Object* AllocateRawCell();
1189
-
1190
- // Initializes a JSObject based on its map.
1191
- static void InitializeJSObjectFromMap(JSObject* obj,
1192
- FixedArray* properties,
1193
- Map* map);
1194
-
1195
- static bool CreateInitialMaps();
1196
- static bool CreateInitialObjects();
1197
-
1198
- // These four Create*EntryStub functions are here because of a gcc-4.4 bug
1199
- // that assigns wrong vtable entries.
1200
- static void CreateCEntryStub();
1201
- static void CreateJSEntryStub();
1202
- static void CreateJSConstructEntryStub();
1203
- static void CreateRegExpCEntryStub();
1204
-
1205
- static void CreateFixedStubs();
1206
-
1207
- static Object* CreateOddball(const char* to_string, Object* to_number);
1208
-
1209
- // Allocate empty fixed array.
1210
- static Object* AllocateEmptyFixedArray();
1211
-
1212
- // Performs a minor collection in new generation.
1213
- static void Scavenge();
1214
-
1215
- static String* UpdateNewSpaceReferenceInExternalStringTableEntry(
1216
- Object** pointer);
1217
-
1218
- static Address DoScavenge(ObjectVisitor* scavenge_visitor,
1219
- Address new_space_front);
1220
-
1221
- // Performs a major collection in the whole heap.
1222
- static void MarkCompact(GCTracer* tracer);
1223
-
1224
- // Code to be run before and after mark-compact.
1225
- static void MarkCompactPrologue(bool is_compacting);
1226
- static void MarkCompactEpilogue(bool is_compacting);
1227
-
1228
- // Completely clear the Instanceof cache (to stop it keeping objects alive
1229
- // around a GC).
1230
- static void CompletelyClearInstanceofCache() {
1231
- set_instanceof_cache_map(the_hole_value());
1232
- set_instanceof_cache_function(the_hole_value());
1233
- }
1234
-
1235
- #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1236
- // Record statistics before and after garbage collection.
1237
- static void ReportStatisticsBeforeGC();
1238
- static void ReportStatisticsAfterGC();
1239
- #endif
1240
-
1241
- // Slow part of scavenge object.
1242
- static void ScavengeObjectSlow(HeapObject** p, HeapObject* object);
1243
-
1244
- // Initializes a function with a shared part and prototype.
1245
- // Returns the function.
1246
- // Note: this code was factored out of AllocateFunction such that
1247
- // other parts of the VM could use it. Specifically, a function that creates
1248
- // instances of type JS_FUNCTION_TYPE benefit from the use of this function.
1249
- // Please note this does not perform a garbage collection.
1250
- static inline Object* InitializeFunction(JSFunction* function,
1251
- SharedFunctionInfo* shared,
1252
- Object* prototype);
1253
-
1254
- static GCTracer* tracer_;
1255
-
1256
-
1257
- // Initializes the number to string cache based on the max semispace size.
1258
- static Object* InitializeNumberStringCache();
1259
- // Flush the number to string cache.
1260
- static void FlushNumberStringCache();
1261
-
1262
- // Flush code from functions we do not expect to use again. The code will
1263
- // be replaced with a lazy compilable version.
1264
- static void FlushCode();
1265
-
1266
- static void UpdateSurvivalRateTrend(int start_new_space_size);
1267
-
1268
- enum SurvivalRateTrend { INCREASING, STABLE, DECREASING, FLUCTUATING };
1269
-
1270
- static const int kYoungSurvivalRateThreshold = 90;
1271
- static const int kYoungSurvivalRateAllowedDeviation = 15;
1272
-
1273
- static int young_survivors_after_last_gc_;
1274
- static int high_survival_rate_period_length_;
1275
- static double survival_rate_;
1276
- static SurvivalRateTrend previous_survival_rate_trend_;
1277
- static SurvivalRateTrend survival_rate_trend_;
1278
-
1279
- static void set_survival_rate_trend(SurvivalRateTrend survival_rate_trend) {
1280
- ASSERT(survival_rate_trend != FLUCTUATING);
1281
- previous_survival_rate_trend_ = survival_rate_trend_;
1282
- survival_rate_trend_ = survival_rate_trend;
1283
- }
1284
-
1285
- static SurvivalRateTrend survival_rate_trend() {
1286
- if (survival_rate_trend_ == STABLE) {
1287
- return STABLE;
1288
- } else if (previous_survival_rate_trend_ == STABLE) {
1289
- return survival_rate_trend_;
1290
- } else if (survival_rate_trend_ != previous_survival_rate_trend_) {
1291
- return FLUCTUATING;
1292
- } else {
1293
- return survival_rate_trend_;
1294
- }
1295
- }
1296
-
1297
- static bool IsStableOrIncreasingSurvivalTrend() {
1298
- switch (survival_rate_trend()) {
1299
- case STABLE:
1300
- case INCREASING:
1301
- return true;
1302
- default:
1303
- return false;
1304
- }
1305
- }
1306
-
1307
- static bool IsIncreasingSurvivalTrend() {
1308
- return survival_rate_trend() == INCREASING;
1309
- }
1310
-
1311
- static bool IsHighSurvivalRate() {
1312
- return high_survival_rate_period_length_ > 0;
1313
- }
1314
-
1315
- static const int kInitialSymbolTableSize = 2048;
1316
- static const int kInitialEvalCacheSize = 64;
1317
-
1318
- friend class Factory;
1319
- friend class DisallowAllocationFailure;
1320
- friend class AlwaysAllocateScope;
1321
- friend class LinearAllocationScope;
1322
- };
1323
-
1324
-
1325
- class HeapStats {
1326
- public:
1327
- int* start_marker;
1328
- int* new_space_size;
1329
- int* new_space_capacity;
1330
- int* old_pointer_space_size;
1331
- int* old_pointer_space_capacity;
1332
- int* old_data_space_size;
1333
- int* old_data_space_capacity;
1334
- int* code_space_size;
1335
- int* code_space_capacity;
1336
- int* map_space_size;
1337
- int* map_space_capacity;
1338
- int* cell_space_size;
1339
- int* cell_space_capacity;
1340
- int* lo_space_size;
1341
- int* global_handle_count;
1342
- int* weak_global_handle_count;
1343
- int* pending_global_handle_count;
1344
- int* near_death_global_handle_count;
1345
- int* destroyed_global_handle_count;
1346
- int* end_marker;
1347
- };
1348
-
1349
-
1350
- class AlwaysAllocateScope {
1351
- public:
1352
- AlwaysAllocateScope() {
1353
- // We shouldn't hit any nested scopes, because that requires
1354
- // non-handle code to call handle code. The code still works but
1355
- // performance will degrade, so we want to catch this situation
1356
- // in debug mode.
1357
- ASSERT(Heap::always_allocate_scope_depth_ == 0);
1358
- Heap::always_allocate_scope_depth_++;
1359
- }
1360
-
1361
- ~AlwaysAllocateScope() {
1362
- Heap::always_allocate_scope_depth_--;
1363
- ASSERT(Heap::always_allocate_scope_depth_ == 0);
1364
- }
1365
- };
1366
-
1367
-
1368
- class LinearAllocationScope {
1369
- public:
1370
- LinearAllocationScope() {
1371
- Heap::linear_allocation_scope_depth_++;
1372
- }
1373
-
1374
- ~LinearAllocationScope() {
1375
- Heap::linear_allocation_scope_depth_--;
1376
- ASSERT(Heap::linear_allocation_scope_depth_ >= 0);
1377
- }
1378
- };
1379
-
1380
-
1381
- #ifdef DEBUG
1382
- // Visitor class to verify interior pointers in spaces that do not contain
1383
- // or care about intergenerational references. All heap object pointers have to
1384
- // point into the heap to a location that has a map pointer at its first word.
1385
- // Caveat: Heap::Contains is an approximation because it can return true for
1386
- // objects in a heap space but above the allocation pointer.
1387
- class VerifyPointersVisitor: public ObjectVisitor {
1388
- public:
1389
- void VisitPointers(Object** start, Object** end) {
1390
- for (Object** current = start; current < end; current++) {
1391
- if ((*current)->IsHeapObject()) {
1392
- HeapObject* object = HeapObject::cast(*current);
1393
- ASSERT(Heap::Contains(object));
1394
- ASSERT(object->map()->IsMap());
1395
- }
1396
- }
1397
- }
1398
- };
1399
-
1400
-
1401
- // Visitor class to verify interior pointers in spaces that use region marks
1402
- // to keep track of intergenerational references.
1403
- // As VerifyPointersVisitor but also checks that dirty marks are set
1404
- // for regions covering intergenerational references.
1405
- class VerifyPointersAndDirtyRegionsVisitor: public ObjectVisitor {
1406
- public:
1407
- void VisitPointers(Object** start, Object** end) {
1408
- for (Object** current = start; current < end; current++) {
1409
- if ((*current)->IsHeapObject()) {
1410
- HeapObject* object = HeapObject::cast(*current);
1411
- ASSERT(Heap::Contains(object));
1412
- ASSERT(object->map()->IsMap());
1413
- if (Heap::InNewSpace(object)) {
1414
- ASSERT(Heap::InToSpace(object));
1415
- Address addr = reinterpret_cast<Address>(current);
1416
- ASSERT(Page::FromAddress(addr)->IsRegionDirty(addr));
1417
- }
1418
- }
1419
- }
1420
- }
1421
- };
1422
- #endif
1423
-
1424
-
1425
- // Space iterator for iterating over all spaces of the heap.
1426
- // Returns each space in turn, and null when it is done.
1427
- class AllSpaces BASE_EMBEDDED {
1428
- public:
1429
- Space* next();
1430
- AllSpaces() { counter_ = FIRST_SPACE; }
1431
- private:
1432
- int counter_;
1433
- };
1434
-
1435
-
1436
- // Space iterator for iterating over all old spaces of the heap: Old pointer
1437
- // space, old data space and code space.
1438
- // Returns each space in turn, and null when it is done.
1439
- class OldSpaces BASE_EMBEDDED {
1440
- public:
1441
- OldSpace* next();
1442
- OldSpaces() { counter_ = OLD_POINTER_SPACE; }
1443
- private:
1444
- int counter_;
1445
- };
1446
-
1447
-
1448
- // Space iterator for iterating over all the paged spaces of the heap:
1449
- // Map space, old pointer space, old data space, code space and cell space.
1450
- // Returns each space in turn, and null when it is done.
1451
- class PagedSpaces BASE_EMBEDDED {
1452
- public:
1453
- PagedSpace* next();
1454
- PagedSpaces() { counter_ = OLD_POINTER_SPACE; }
1455
- private:
1456
- int counter_;
1457
- };
1458
-
1459
-
1460
- // Space iterator for iterating over all spaces of the heap.
1461
- // For each space an object iterator is provided. The deallocation of the
1462
- // returned object iterators is handled by the space iterator.
1463
- class SpaceIterator : public Malloced {
1464
- public:
1465
- SpaceIterator();
1466
- virtual ~SpaceIterator();
1467
-
1468
- bool has_next();
1469
- ObjectIterator* next();
1470
-
1471
- private:
1472
- ObjectIterator* CreateIterator();
1473
-
1474
- int current_space_; // from enum AllocationSpace.
1475
- ObjectIterator* iterator_; // object iterator for the current space.
1476
- };
1477
-
1478
-
1479
- // A HeapIterator provides iteration over the whole heap It aggregates a the
1480
- // specific iterators for the different spaces as these can only iterate over
1481
- // one space only.
1482
-
1483
- class HeapIterator BASE_EMBEDDED {
1484
- public:
1485
- explicit HeapIterator();
1486
- virtual ~HeapIterator();
1487
-
1488
- HeapObject* next();
1489
- void reset();
1490
-
1491
- private:
1492
- // Perform the initialization.
1493
- void Init();
1494
-
1495
- // Perform all necessary shutdown (destruction) work.
1496
- void Shutdown();
1497
-
1498
- // Space iterator for iterating all the spaces.
1499
- SpaceIterator* space_iterator_;
1500
- // Object iterator for the space currently being iterated.
1501
- ObjectIterator* object_iterator_;
1502
- };
1503
-
1504
-
1505
- // Cache for mapping (map, property name) into field offset.
1506
- // Cleared at startup and prior to mark sweep collection.
1507
- class KeyedLookupCache {
1508
- public:
1509
- // Lookup field offset for (map, name). If absent, -1 is returned.
1510
- static int Lookup(Map* map, String* name);
1511
-
1512
- // Update an element in the cache.
1513
- static void Update(Map* map, String* name, int field_offset);
1514
-
1515
- // Clear the cache.
1516
- static void Clear();
1517
-
1518
- static const int kLength = 64;
1519
- static const int kCapacityMask = kLength - 1;
1520
- static const int kMapHashShift = 2;
1521
-
1522
- private:
1523
- static inline int Hash(Map* map, String* name);
1524
-
1525
- // Get the address of the keys and field_offsets arrays. Used in
1526
- // generated code to perform cache lookups.
1527
- static Address keys_address() {
1528
- return reinterpret_cast<Address>(&keys_);
1529
- }
1530
-
1531
- static Address field_offsets_address() {
1532
- return reinterpret_cast<Address>(&field_offsets_);
1533
- }
1534
-
1535
- struct Key {
1536
- Map* map;
1537
- String* name;
1538
- };
1539
- static Key keys_[kLength];
1540
- static int field_offsets_[kLength];
1541
-
1542
- friend class ExternalReference;
1543
- };
1544
-
1545
-
1546
- // Cache for mapping (array, property name) into descriptor index.
1547
- // The cache contains both positive and negative results.
1548
- // Descriptor index equals kNotFound means the property is absent.
1549
- // Cleared at startup and prior to any gc.
1550
- class DescriptorLookupCache {
1551
- public:
1552
- // Lookup descriptor index for (map, name).
1553
- // If absent, kAbsent is returned.
1554
- static int Lookup(DescriptorArray* array, String* name) {
1555
- if (!StringShape(name).IsSymbol()) return kAbsent;
1556
- int index = Hash(array, name);
1557
- Key& key = keys_[index];
1558
- if ((key.array == array) && (key.name == name)) return results_[index];
1559
- return kAbsent;
1560
- }
1561
-
1562
- // Update an element in the cache.
1563
- static void Update(DescriptorArray* array, String* name, int result) {
1564
- ASSERT(result != kAbsent);
1565
- if (StringShape(name).IsSymbol()) {
1566
- int index = Hash(array, name);
1567
- Key& key = keys_[index];
1568
- key.array = array;
1569
- key.name = name;
1570
- results_[index] = result;
1571
- }
1572
- }
1573
-
1574
- // Clear the cache.
1575
- static void Clear();
1576
-
1577
- static const int kAbsent = -2;
1578
- private:
1579
- static int Hash(DescriptorArray* array, String* name) {
1580
- // Uses only lower 32 bits if pointers are larger.
1581
- uint32_t array_hash =
1582
- static_cast<uint32_t>(reinterpret_cast<uintptr_t>(array)) >> 2;
1583
- uint32_t name_hash =
1584
- static_cast<uint32_t>(reinterpret_cast<uintptr_t>(name)) >> 2;
1585
- return (array_hash ^ name_hash) % kLength;
1586
- }
1587
-
1588
- static const int kLength = 64;
1589
- struct Key {
1590
- DescriptorArray* array;
1591
- String* name;
1592
- };
1593
-
1594
- static Key keys_[kLength];
1595
- static int results_[kLength];
1596
- };
1597
-
1598
-
1599
- // ----------------------------------------------------------------------------
1600
- // Marking stack for tracing live objects.
1601
-
1602
- class MarkingStack {
1603
- public:
1604
- void Initialize(Address low, Address high) {
1605
- top_ = low_ = reinterpret_cast<HeapObject**>(low);
1606
- high_ = reinterpret_cast<HeapObject**>(high);
1607
- overflowed_ = false;
1608
- }
1609
-
1610
- bool is_full() { return top_ >= high_; }
1611
-
1612
- bool is_empty() { return top_ <= low_; }
1613
-
1614
- bool overflowed() { return overflowed_; }
1615
-
1616
- void clear_overflowed() { overflowed_ = false; }
1617
-
1618
- // Push the (marked) object on the marking stack if there is room,
1619
- // otherwise mark the object as overflowed and wait for a rescan of the
1620
- // heap.
1621
- void Push(HeapObject* object) {
1622
- CHECK(object->IsHeapObject());
1623
- if (is_full()) {
1624
- object->SetOverflow();
1625
- overflowed_ = true;
1626
- } else {
1627
- *(top_++) = object;
1628
- }
1629
- }
1630
-
1631
- HeapObject* Pop() {
1632
- ASSERT(!is_empty());
1633
- HeapObject* object = *(--top_);
1634
- CHECK(object->IsHeapObject());
1635
- return object;
1636
- }
1637
-
1638
- private:
1639
- HeapObject** low_;
1640
- HeapObject** top_;
1641
- HeapObject** high_;
1642
- bool overflowed_;
1643
- };
1644
-
1645
-
1646
- // A helper class to document/test C++ scopes where we do not
1647
- // expect a GC. Usage:
1648
- //
1649
- // /* Allocation not allowed: we cannot handle a GC in this scope. */
1650
- // { AssertNoAllocation nogc;
1651
- // ...
1652
- // }
1653
-
1654
- #ifdef DEBUG
1655
-
1656
- class DisallowAllocationFailure {
1657
- public:
1658
- DisallowAllocationFailure() {
1659
- old_state_ = Heap::disallow_allocation_failure_;
1660
- Heap::disallow_allocation_failure_ = true;
1661
- }
1662
- ~DisallowAllocationFailure() {
1663
- Heap::disallow_allocation_failure_ = old_state_;
1664
- }
1665
- private:
1666
- bool old_state_;
1667
- };
1668
-
1669
- class AssertNoAllocation {
1670
- public:
1671
- AssertNoAllocation() {
1672
- old_state_ = Heap::allow_allocation(false);
1673
- }
1674
-
1675
- ~AssertNoAllocation() {
1676
- Heap::allow_allocation(old_state_);
1677
- }
1678
-
1679
- private:
1680
- bool old_state_;
1681
- };
1682
-
1683
- class DisableAssertNoAllocation {
1684
- public:
1685
- DisableAssertNoAllocation() {
1686
- old_state_ = Heap::allow_allocation(true);
1687
- }
1688
-
1689
- ~DisableAssertNoAllocation() {
1690
- Heap::allow_allocation(old_state_);
1691
- }
1692
-
1693
- private:
1694
- bool old_state_;
1695
- };
1696
-
1697
- #else // ndef DEBUG
1698
-
1699
- class AssertNoAllocation {
1700
- public:
1701
- AssertNoAllocation() { }
1702
- ~AssertNoAllocation() { }
1703
- };
1704
-
1705
- class DisableAssertNoAllocation {
1706
- public:
1707
- DisableAssertNoAllocation() { }
1708
- ~DisableAssertNoAllocation() { }
1709
- };
1710
-
1711
- #endif
1712
-
1713
- // GCTracer collects and prints ONE line after each garbage collector
1714
- // invocation IFF --trace_gc is used.
1715
-
1716
- class GCTracer BASE_EMBEDDED {
1717
- public:
1718
- class Scope BASE_EMBEDDED {
1719
- public:
1720
- enum ScopeId {
1721
- EXTERNAL,
1722
- MC_MARK,
1723
- MC_SWEEP,
1724
- MC_COMPACT,
1725
- MC_FLUSH_CODE,
1726
- kNumberOfScopes
1727
- };
1728
-
1729
- Scope(GCTracer* tracer, ScopeId scope)
1730
- : tracer_(tracer),
1731
- scope_(scope) {
1732
- start_time_ = OS::TimeCurrentMillis();
1733
- }
1734
-
1735
- ~Scope() {
1736
- ASSERT((0 <= scope_) && (scope_ < kNumberOfScopes));
1737
- tracer_->scopes_[scope_] += OS::TimeCurrentMillis() - start_time_;
1738
- }
1739
-
1740
- private:
1741
- GCTracer* tracer_;
1742
- ScopeId scope_;
1743
- double start_time_;
1744
- };
1745
-
1746
- GCTracer();
1747
- ~GCTracer();
1748
-
1749
- // Sets the collector.
1750
- void set_collector(GarbageCollector collector) { collector_ = collector; }
1751
-
1752
- // Sets the GC count.
1753
- void set_gc_count(int count) { gc_count_ = count; }
1754
-
1755
- // Sets the full GC count.
1756
- void set_full_gc_count(int count) { full_gc_count_ = count; }
1757
-
1758
- // Sets the flag that this is a compacting full GC.
1759
- void set_is_compacting() { is_compacting_ = true; }
1760
- bool is_compacting() const { return is_compacting_; }
1761
-
1762
- // Increment and decrement the count of marked objects.
1763
- void increment_marked_count() { ++marked_count_; }
1764
- void decrement_marked_count() { --marked_count_; }
1765
-
1766
- int marked_count() { return marked_count_; }
1767
-
1768
- void increment_promoted_objects_size(int object_size) {
1769
- promoted_objects_size_ += object_size;
1770
- }
1771
-
1772
- // Returns maximum GC pause.
1773
- static int get_max_gc_pause() { return max_gc_pause_; }
1774
-
1775
- // Returns maximum size of objects alive after GC.
1776
- static int get_max_alive_after_gc() { return max_alive_after_gc_; }
1777
-
1778
- // Returns minimal interval between two subsequent collections.
1779
- static int get_min_in_mutator() { return min_in_mutator_; }
1780
-
1781
- private:
1782
- // Returns a string matching the collector.
1783
- const char* CollectorString();
1784
-
1785
- // Returns size of object in heap (in MB).
1786
- double SizeOfHeapObjects() {
1787
- return (static_cast<double>(Heap::SizeOfObjects())) / MB;
1788
- }
1789
-
1790
- double start_time_; // Timestamp set in the constructor.
1791
- int start_size_; // Size of objects in heap set in constructor.
1792
- GarbageCollector collector_; // Type of collector.
1793
-
1794
- // A count (including this one, eg, the first collection is 1) of the
1795
- // number of garbage collections.
1796
- int gc_count_;
1797
-
1798
- // A count (including this one) of the number of full garbage collections.
1799
- int full_gc_count_;
1800
-
1801
- // True if the current GC is a compacting full collection, false
1802
- // otherwise.
1803
- bool is_compacting_;
1804
-
1805
- // True if the *previous* full GC cwas a compacting collection (will be
1806
- // false if there has not been a previous full GC).
1807
- bool previous_has_compacted_;
1808
-
1809
- // On a full GC, a count of the number of marked objects. Incremented
1810
- // when an object is marked and decremented when an object's mark bit is
1811
- // cleared. Will be zero on a scavenge collection.
1812
- int marked_count_;
1813
-
1814
- // The count from the end of the previous full GC. Will be zero if there
1815
- // was no previous full GC.
1816
- int previous_marked_count_;
1817
-
1818
- // Amounts of time spent in different scopes during GC.
1819
- double scopes_[Scope::kNumberOfScopes];
1820
-
1821
- // Total amount of space either wasted or contained in one of free lists
1822
- // before the current GC.
1823
- int in_free_list_or_wasted_before_gc_;
1824
-
1825
- // Difference between space used in the heap at the beginning of the current
1826
- // collection and the end of the previous collection.
1827
- int allocated_since_last_gc_;
1828
-
1829
- // Amount of time spent in mutator that is time elapsed between end of the
1830
- // previous collection and the beginning of the current one.
1831
- double spent_in_mutator_;
1832
-
1833
- // Size of objects promoted during the current collection.
1834
- int promoted_objects_size_;
1835
-
1836
- // Maximum GC pause.
1837
- static int max_gc_pause_;
1838
-
1839
- // Maximum size of objects alive after GC.
1840
- static int max_alive_after_gc_;
1841
-
1842
- // Minimal interval between two subsequent collections.
1843
- static int min_in_mutator_;
1844
-
1845
- // Size of objects alive after last GC.
1846
- static int alive_after_last_gc_;
1847
-
1848
- static double last_gc_end_timestamp_;
1849
- };
1850
-
1851
-
1852
- class TranscendentalCache {
1853
- public:
1854
- enum Type {ACOS, ASIN, ATAN, COS, EXP, LOG, SIN, TAN, kNumberOfCaches};
1855
-
1856
- explicit TranscendentalCache(Type t);
1857
-
1858
- // Returns a heap number with f(input), where f is a math function specified
1859
- // by the 'type' argument.
1860
- static inline Object* Get(Type type, double input) {
1861
- TranscendentalCache* cache = caches_[type];
1862
- if (cache == NULL) {
1863
- caches_[type] = cache = new TranscendentalCache(type);
1864
- }
1865
- return cache->Get(input);
1866
- }
1867
-
1868
- // The cache contains raw Object pointers. This method disposes of
1869
- // them before a garbage collection.
1870
- static void Clear();
1871
-
1872
- private:
1873
- inline Object* Get(double input) {
1874
- Converter c;
1875
- c.dbl = input;
1876
- int hash = Hash(c);
1877
- Element e = elements_[hash];
1878
- if (e.in[0] == c.integers[0] &&
1879
- e.in[1] == c.integers[1]) {
1880
- ASSERT(e.output != NULL);
1881
- Counters::transcendental_cache_hit.Increment();
1882
- return e.output;
1883
- }
1884
- double answer = Calculate(input);
1885
- Object* heap_number = Heap::AllocateHeapNumber(answer);
1886
- if (!heap_number->IsFailure()) {
1887
- elements_[hash].in[0] = c.integers[0];
1888
- elements_[hash].in[1] = c.integers[1];
1889
- elements_[hash].output = heap_number;
1890
- }
1891
- Counters::transcendental_cache_miss.Increment();
1892
- return heap_number;
1893
- }
1894
-
1895
- inline double Calculate(double input) {
1896
- switch (type_) {
1897
- case ACOS:
1898
- return acos(input);
1899
- case ASIN:
1900
- return asin(input);
1901
- case ATAN:
1902
- return atan(input);
1903
- case COS:
1904
- return cos(input);
1905
- case EXP:
1906
- return exp(input);
1907
- case LOG:
1908
- return log(input);
1909
- case SIN:
1910
- return sin(input);
1911
- case TAN:
1912
- return tan(input);
1913
- default:
1914
- return 0.0; // Never happens.
1915
- }
1916
- }
1917
- static const int kCacheSize = 512;
1918
- struct Element {
1919
- uint32_t in[2];
1920
- Object* output;
1921
- };
1922
- union Converter {
1923
- double dbl;
1924
- uint32_t integers[2];
1925
- };
1926
- inline static int Hash(const Converter& c) {
1927
- uint32_t hash = (c.integers[0] ^ c.integers[1]);
1928
- hash ^= static_cast<int32_t>(hash) >> 16;
1929
- hash ^= static_cast<int32_t>(hash) >> 8;
1930
- return (hash & (kCacheSize - 1));
1931
- }
1932
-
1933
- static Address cache_array_address() {
1934
- // Used to create an external reference.
1935
- return reinterpret_cast<Address>(caches_);
1936
- }
1937
-
1938
- // Allow access to the caches_ array as an ExternalReference.
1939
- friend class ExternalReference;
1940
- // Inline implementation of the caching.
1941
- friend class TranscendentalCacheStub;
1942
-
1943
- static TranscendentalCache* caches_[kNumberOfCaches];
1944
- Element elements_[kCacheSize];
1945
- Type type_;
1946
- };
1947
-
1948
-
1949
- // External strings table is a place where all external strings are
1950
- // registered. We need to keep track of such strings to properly
1951
- // finalize them.
1952
- class ExternalStringTable : public AllStatic {
1953
- public:
1954
- // Registers an external string.
1955
- inline static void AddString(String* string);
1956
-
1957
- inline static void Iterate(ObjectVisitor* v);
1958
-
1959
- // Restores internal invariant and gets rid of collected strings.
1960
- // Must be called after each Iterate() that modified the strings.
1961
- static void CleanUp();
1962
-
1963
- // Destroys all allocated memory.
1964
- static void TearDown();
1965
-
1966
- private:
1967
- friend class Heap;
1968
-
1969
- inline static void Verify();
1970
-
1971
- inline static void AddOldString(String* string);
1972
-
1973
- // Notifies the table that only a prefix of the new list is valid.
1974
- inline static void ShrinkNewStrings(int position);
1975
-
1976
- // To speed up scavenge collections new space string are kept
1977
- // separate from old space strings.
1978
- static List<Object*> new_space_strings_;
1979
- static List<Object*> old_space_strings_;
1980
- };
1981
-
1982
- } } // namespace v8::internal
1983
-
1984
- #endif // V8_HEAP_H_