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
@@ -0,0 +1,379 @@
1
+ // Copyright 2010 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #ifndef V8_DATAFLOW_H_
29
+ #define V8_DATAFLOW_H_
30
+
31
+ #include "v8.h"
32
+
33
+ #include "ast.h"
34
+ #include "compiler.h"
35
+ #include "zone-inl.h"
36
+
37
+ namespace v8 {
38
+ namespace internal {
39
+
40
+ // Forward declarations.
41
+ class Node;
42
+
43
+ class BitVector: public ZoneObject {
44
+ public:
45
+ // Iterator for the elements of this BitVector.
46
+ class Iterator BASE_EMBEDDED {
47
+ public:
48
+ explicit Iterator(BitVector* target)
49
+ : target_(target),
50
+ current_index_(0),
51
+ current_value_(target->data_[0]),
52
+ current_(-1) {
53
+ ASSERT(target->data_length_ > 0);
54
+ Advance();
55
+ }
56
+ ~Iterator() { }
57
+
58
+ bool Done() const { return current_index_ >= target_->data_length_; }
59
+ void Advance();
60
+
61
+ int Current() const {
62
+ ASSERT(!Done());
63
+ return current_;
64
+ }
65
+
66
+ private:
67
+ uint32_t SkipZeroBytes(uint32_t val) {
68
+ while ((val & 0xFF) == 0) {
69
+ val >>= 8;
70
+ current_ += 8;
71
+ }
72
+ return val;
73
+ }
74
+ uint32_t SkipZeroBits(uint32_t val) {
75
+ while ((val & 0x1) == 0) {
76
+ val >>= 1;
77
+ current_++;
78
+ }
79
+ return val;
80
+ }
81
+
82
+ BitVector* target_;
83
+ int current_index_;
84
+ uint32_t current_value_;
85
+ int current_;
86
+
87
+ friend class BitVector;
88
+ };
89
+
90
+ explicit BitVector(int length)
91
+ : length_(length),
92
+ data_length_(SizeFor(length)),
93
+ data_(Zone::NewArray<uint32_t>(data_length_)) {
94
+ ASSERT(length > 0);
95
+ Clear();
96
+ }
97
+
98
+ BitVector(const BitVector& other)
99
+ : length_(other.length()),
100
+ data_length_(SizeFor(length_)),
101
+ data_(Zone::NewArray<uint32_t>(data_length_)) {
102
+ CopyFrom(other);
103
+ }
104
+
105
+ static int SizeFor(int length) {
106
+ return 1 + ((length - 1) / 32);
107
+ }
108
+
109
+ BitVector& operator=(const BitVector& rhs) {
110
+ if (this != &rhs) CopyFrom(rhs);
111
+ return *this;
112
+ }
113
+
114
+ void CopyFrom(const BitVector& other) {
115
+ ASSERT(other.length() <= length());
116
+ for (int i = 0; i < other.data_length_; i++) {
117
+ data_[i] = other.data_[i];
118
+ }
119
+ for (int i = other.data_length_; i < data_length_; i++) {
120
+ data_[i] = 0;
121
+ }
122
+ }
123
+
124
+ bool Contains(int i) const {
125
+ ASSERT(i >= 0 && i < length());
126
+ uint32_t block = data_[i / 32];
127
+ return (block & (1U << (i % 32))) != 0;
128
+ }
129
+
130
+ void Add(int i) {
131
+ ASSERT(i >= 0 && i < length());
132
+ data_[i / 32] |= (1U << (i % 32));
133
+ }
134
+
135
+ void Remove(int i) {
136
+ ASSERT(i >= 0 && i < length());
137
+ data_[i / 32] &= ~(1U << (i % 32));
138
+ }
139
+
140
+ void Union(const BitVector& other) {
141
+ ASSERT(other.length() == length());
142
+ for (int i = 0; i < data_length_; i++) {
143
+ data_[i] |= other.data_[i];
144
+ }
145
+ }
146
+
147
+ bool UnionIsChanged(const BitVector& other) {
148
+ ASSERT(other.length() == length());
149
+ bool changed = false;
150
+ for (int i = 0; i < data_length_; i++) {
151
+ uint32_t old_data = data_[i];
152
+ data_[i] |= other.data_[i];
153
+ if (data_[i] != old_data) changed = true;
154
+ }
155
+ return changed;
156
+ }
157
+
158
+ void Intersect(const BitVector& other) {
159
+ ASSERT(other.length() == length());
160
+ for (int i = 0; i < data_length_; i++) {
161
+ data_[i] &= other.data_[i];
162
+ }
163
+ }
164
+
165
+ void Subtract(const BitVector& other) {
166
+ ASSERT(other.length() == length());
167
+ for (int i = 0; i < data_length_; i++) {
168
+ data_[i] &= ~other.data_[i];
169
+ }
170
+ }
171
+
172
+ void Clear() {
173
+ for (int i = 0; i < data_length_; i++) {
174
+ data_[i] = 0;
175
+ }
176
+ }
177
+
178
+ bool IsEmpty() const {
179
+ for (int i = 0; i < data_length_; i++) {
180
+ if (data_[i] != 0) return false;
181
+ }
182
+ return true;
183
+ }
184
+
185
+ bool Equals(const BitVector& other) {
186
+ for (int i = 0; i < data_length_; i++) {
187
+ if (data_[i] != other.data_[i]) return false;
188
+ }
189
+ return true;
190
+ }
191
+
192
+ int length() const { return length_; }
193
+
194
+ #ifdef DEBUG
195
+ void Print();
196
+ #endif
197
+
198
+ private:
199
+ int length_;
200
+ int data_length_;
201
+ uint32_t* data_;
202
+ };
203
+
204
+
205
+ // An implementation of a sparse set whose elements are drawn from integers
206
+ // in the range [0..universe_size[. It supports constant-time Contains,
207
+ // destructive Add, and destructuve Remove operations and linear-time (in
208
+ // the number of elements) destructive Union.
209
+ class SparseSet: public ZoneObject {
210
+ public:
211
+ // Iterator for sparse set elements. Elements should not be added or
212
+ // removed during iteration.
213
+ class Iterator BASE_EMBEDDED {
214
+ public:
215
+ explicit Iterator(SparseSet* target) : target_(target), current_(0) {
216
+ ASSERT(++target->iterator_count_ > 0);
217
+ }
218
+ ~Iterator() {
219
+ ASSERT(target_->iterator_count_-- > 0);
220
+ }
221
+ bool Done() const { return current_ >= target_->dense_.length(); }
222
+ void Advance() {
223
+ ASSERT(!Done());
224
+ ++current_;
225
+ }
226
+ int Current() {
227
+ ASSERT(!Done());
228
+ return target_->dense_[current_];
229
+ }
230
+
231
+ private:
232
+ SparseSet* target_;
233
+ int current_;
234
+
235
+ friend class SparseSet;
236
+ };
237
+
238
+ explicit SparseSet(int universe_size)
239
+ : dense_(4),
240
+ sparse_(Zone::NewArray<int>(universe_size)) {
241
+ #ifdef DEBUG
242
+ size_ = universe_size;
243
+ iterator_count_ = 0;
244
+ #endif
245
+ }
246
+
247
+ bool Contains(int n) const {
248
+ ASSERT(0 <= n && n < size_);
249
+ int dense_index = sparse_[n];
250
+ return (0 <= dense_index) &&
251
+ (dense_index < dense_.length()) &&
252
+ (dense_[dense_index] == n);
253
+ }
254
+
255
+ void Add(int n) {
256
+ ASSERT(0 <= n && n < size_);
257
+ ASSERT(iterator_count_ == 0);
258
+ if (!Contains(n)) {
259
+ sparse_[n] = dense_.length();
260
+ dense_.Add(n);
261
+ }
262
+ }
263
+
264
+ void Remove(int n) {
265
+ ASSERT(0 <= n && n < size_);
266
+ ASSERT(iterator_count_ == 0);
267
+ if (Contains(n)) {
268
+ int dense_index = sparse_[n];
269
+ int last = dense_.RemoveLast();
270
+ if (dense_index < dense_.length()) {
271
+ dense_[dense_index] = last;
272
+ sparse_[last] = dense_index;
273
+ }
274
+ }
275
+ }
276
+
277
+ void Union(const SparseSet& other) {
278
+ for (int i = 0; i < other.dense_.length(); ++i) {
279
+ Add(other.dense_[i]);
280
+ }
281
+ }
282
+
283
+ private:
284
+ // The set is implemented as a pair of a growable dense list and an
285
+ // uninitialized sparse array.
286
+ ZoneList<int> dense_;
287
+ int* sparse_;
288
+ #ifdef DEBUG
289
+ int size_;
290
+ int iterator_count_;
291
+ #endif
292
+ };
293
+
294
+
295
+ // Simple fixed-capacity list-based worklist (managed as a queue) of
296
+ // pointers to T.
297
+ template<typename T>
298
+ class WorkList BASE_EMBEDDED {
299
+ public:
300
+ // The worklist cannot grow bigger than size. We keep one item empty to
301
+ // distinguish between empty and full.
302
+ explicit WorkList(int size)
303
+ : capacity_(size + 1), head_(0), tail_(0), queue_(capacity_) {
304
+ for (int i = 0; i < capacity_; i++) queue_.Add(NULL);
305
+ }
306
+
307
+ bool is_empty() { return head_ == tail_; }
308
+
309
+ bool is_full() {
310
+ // The worklist is full if head is at 0 and tail is at capacity - 1:
311
+ // head == 0 && tail == capacity-1 ==> tail - head == capacity - 1
312
+ // or if tail is immediately to the left of head:
313
+ // tail+1 == head ==> tail - head == -1
314
+ int diff = tail_ - head_;
315
+ return (diff == -1 || diff == capacity_ - 1);
316
+ }
317
+
318
+ void Insert(T* item) {
319
+ ASSERT(!is_full());
320
+ queue_[tail_++] = item;
321
+ if (tail_ == capacity_) tail_ = 0;
322
+ }
323
+
324
+ T* Remove() {
325
+ ASSERT(!is_empty());
326
+ T* item = queue_[head_++];
327
+ if (head_ == capacity_) head_ = 0;
328
+ return item;
329
+ }
330
+
331
+ private:
332
+ int capacity_; // Including one empty slot.
333
+ int head_; // Where the first item is.
334
+ int tail_; // Where the next inserted item will go.
335
+ List<T*> queue_;
336
+ };
337
+
338
+
339
+ // Computes the set of assigned variables and annotates variables proxies
340
+ // that are trivial sub-expressions and for-loops where the loop variable
341
+ // is guaranteed to be a smi.
342
+ class AssignedVariablesAnalyzer : public AstVisitor {
343
+ public:
344
+ static bool Analyze(CompilationInfo* info);
345
+
346
+ private:
347
+ AssignedVariablesAnalyzer(CompilationInfo* info, int bits);
348
+ bool Analyze();
349
+
350
+ Variable* FindSmiLoopVariable(ForStatement* stmt);
351
+
352
+ int BitIndex(Variable* var);
353
+
354
+ void RecordAssignedVar(Variable* var);
355
+
356
+ void MarkIfTrivial(Expression* expr);
357
+
358
+ // Visits an expression saving the accumulator before, clearing
359
+ // it before visting and restoring it after visiting.
360
+ void ProcessExpression(Expression* expr);
361
+
362
+ // AST node visit functions.
363
+ #define DECLARE_VISIT(type) virtual void Visit##type(type* node);
364
+ AST_NODE_LIST(DECLARE_VISIT)
365
+ #undef DECLARE_VISIT
366
+
367
+ CompilationInfo* info_;
368
+
369
+ // Accumulator for assigned variables set.
370
+ BitVector av_;
371
+
372
+ DISALLOW_COPY_AND_ASSIGN(AssignedVariablesAnalyzer);
373
+ };
374
+
375
+
376
+ } } // namespace v8::internal
377
+
378
+
379
+ #endif // V8_DATAFLOW_H_
@@ -0,0 +1,1103 @@
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
+
29
+ // This file relies on the fact that the following declarations have been made
30
+ // in v8natives.js:
31
+ // const $isFinite = GlobalIsFinite;
32
+
33
+ // -------------------------------------------------------------------
34
+
35
+ // This file contains date support implemented in JavaScript.
36
+
37
+
38
+ // Keep reference to original values of some global properties. This
39
+ // has the added benefit that the code in this file is isolated from
40
+ // changes to these properties.
41
+ const $Date = global.Date;
42
+
43
+ // Helper function to throw error.
44
+ function ThrowDateTypeError() {
45
+ throw new $TypeError('this is not a Date object.');
46
+ }
47
+
48
+ // ECMA 262 - 5.2
49
+ function Modulo(value, remainder) {
50
+ var mod = value % remainder;
51
+ // Guard against returning -0.
52
+ if (mod == 0) return 0;
53
+ return mod >= 0 ? mod : mod + remainder;
54
+ }
55
+
56
+
57
+ function TimeWithinDay(time) {
58
+ return Modulo(time, msPerDay);
59
+ }
60
+
61
+
62
+ // ECMA 262 - 15.9.1.3
63
+ function DaysInYear(year) {
64
+ if (year % 4 != 0) return 365;
65
+ if ((year % 100 == 0) && (year % 400 != 0)) return 365;
66
+ return 366;
67
+ }
68
+
69
+
70
+ function DayFromYear(year) {
71
+ return 365 * (year-1970)
72
+ + FLOOR((year-1969)/4)
73
+ - FLOOR((year-1901)/100)
74
+ + FLOOR((year-1601)/400);
75
+ }
76
+
77
+
78
+ function TimeFromYear(year) {
79
+ return msPerDay * DayFromYear(year);
80
+ }
81
+
82
+
83
+ function InLeapYear(time) {
84
+ return DaysInYear(YearFromTime(time)) - 365; // Returns 1 or 0.
85
+ }
86
+
87
+
88
+ // ECMA 262 - 15.9.1.9
89
+ function EquivalentYear(year) {
90
+ // Returns an equivalent year in the range [2008-2035] matching
91
+ // - leap year.
92
+ // - week day of first day.
93
+ var time = TimeFromYear(year);
94
+ var recent_year = (InLeapYear(time) == 0 ? 1967 : 1956) +
95
+ (WeekDay(time) * 12) % 28;
96
+ // Find the year in the range 2008..2037 that is equivalent mod 28.
97
+ // Add 3*28 to give a positive argument to the modulus operator.
98
+ return 2008 + (recent_year + 3*28 - 2008) % 28;
99
+ }
100
+
101
+
102
+ function EquivalentTime(t) {
103
+ // The issue here is that some library calls don't work right for dates
104
+ // that cannot be represented using a non-negative signed 32 bit integer
105
+ // (measured in whole seconds based on the 1970 epoch).
106
+ // We solve this by mapping the time to a year with same leap-year-ness
107
+ // and same starting day for the year. The ECMAscript specification says
108
+ // we must do this, but for compatibility with other browsers, we use
109
+ // the actual year if it is in the range 1970..2037
110
+ if (t >= 0 && t <= 2.1e12) return t;
111
+
112
+ var day = MakeDay(EquivalentYear(YearFromTime(t)),
113
+ MonthFromTime(t),
114
+ DateFromTime(t));
115
+ return MakeDate(day, TimeWithinDay(t));
116
+ }
117
+
118
+
119
+ // local_time_offset is initialized when the DST_offset_cache is missed.
120
+ // It must not be used until after a call to DaylightSavingsOffset().
121
+ // In this way, only one check, for a DST cache miss, is needed.
122
+ var local_time_offset;
123
+
124
+
125
+ // Because computing the DST offset is an expensive operation,
126
+ // we keep a cache of the last computed DST offset along with a time interval
127
+ // where we know the cache is valid.
128
+ // When the cache is valid, local_time_offset is also valid.
129
+ var DST_offset_cache = {
130
+ // Cached DST offset.
131
+ offset: 0,
132
+ // Time interval where the cached offset is valid.
133
+ start: 0, end: -1,
134
+ // Size of next interval expansion.
135
+ increment: 0,
136
+ initial_increment: 19 * msPerDay
137
+ };
138
+
139
+
140
+ // NOTE: The implementation relies on the fact that no time zones have
141
+ // more than one daylight savings offset change per 19 days.
142
+ //
143
+ // In Egypt in 2010 they decided to suspend DST during Ramadan. This
144
+ // led to a short interval where DST is in effect from September 10 to
145
+ // September 30.
146
+ //
147
+ // If this function is called with NaN it returns NaN.
148
+ function DaylightSavingsOffset(t) {
149
+ // Load the cache object from the builtins object.
150
+ var cache = DST_offset_cache;
151
+
152
+ // Cache the start and the end in local variables for fast access.
153
+ var start = cache.start;
154
+ var end = cache.end;
155
+
156
+ if (start <= t) {
157
+ // If the time fits in the cached interval, return the cached offset.
158
+ if (t <= end) return cache.offset;
159
+
160
+ // If the cache misses, the local_time_offset may not be initialized.
161
+ if (IS_UNDEFINED(local_time_offset)) {
162
+ local_time_offset = %DateLocalTimeOffset();
163
+ }
164
+
165
+ // Compute a possible new interval end.
166
+ var new_end = end + cache.increment;
167
+
168
+ if (t <= new_end) {
169
+ var end_offset = %DateDaylightSavingsOffset(EquivalentTime(new_end));
170
+ if (cache.offset == end_offset) {
171
+ // If the offset at the end of the new interval still matches
172
+ // the offset in the cache, we grow the cached time interval
173
+ // and return the offset.
174
+ cache.end = new_end;
175
+ cache.increment = cache.initial_increment;
176
+ return end_offset;
177
+ } else {
178
+ var offset = %DateDaylightSavingsOffset(EquivalentTime(t));
179
+ if (offset == end_offset) {
180
+ // The offset at the given time is equal to the offset at the
181
+ // new end of the interval, so that means that we've just skipped
182
+ // the point in time where the DST offset change occurred. Updated
183
+ // the interval to reflect this and reset the increment.
184
+ cache.start = t;
185
+ cache.end = new_end;
186
+ cache.increment = cache.initial_increment;
187
+ } else {
188
+ // The interval contains a DST offset change and the given time is
189
+ // before it. Adjust the increment to avoid a linear search for
190
+ // the offset change point and change the end of the interval.
191
+ cache.increment /= 3;
192
+ cache.end = t;
193
+ }
194
+ // Update the offset in the cache and return it.
195
+ cache.offset = offset;
196
+ return offset;
197
+ }
198
+ }
199
+ }
200
+
201
+ // If the cache misses, the local_time_offset may not be initialized.
202
+ if (IS_UNDEFINED(local_time_offset)) {
203
+ local_time_offset = %DateLocalTimeOffset();
204
+ }
205
+ // Compute the DST offset for the time and shrink the cache interval
206
+ // to only contain the time. This allows fast repeated DST offset
207
+ // computations for the same time.
208
+ var offset = %DateDaylightSavingsOffset(EquivalentTime(t));
209
+ cache.offset = offset;
210
+ cache.start = cache.end = t;
211
+ cache.increment = cache.initial_increment;
212
+ return offset;
213
+ }
214
+
215
+
216
+ var timezone_cache_time = $NaN;
217
+ var timezone_cache_timezone;
218
+
219
+ function LocalTimezone(t) {
220
+ if (NUMBER_IS_NAN(t)) return "";
221
+ if (t == timezone_cache_time) {
222
+ return timezone_cache_timezone;
223
+ }
224
+ var timezone = %DateLocalTimezone(EquivalentTime(t));
225
+ timezone_cache_time = t;
226
+ timezone_cache_timezone = timezone;
227
+ return timezone;
228
+ }
229
+
230
+
231
+ function WeekDay(time) {
232
+ return Modulo(DAY(time) + 4, 7);
233
+ }
234
+
235
+
236
+ function LocalTime(time) {
237
+ if (NUMBER_IS_NAN(time)) return time;
238
+ // DaylightSavingsOffset called before local_time_offset used.
239
+ return time + DaylightSavingsOffset(time) + local_time_offset;
240
+ }
241
+
242
+
243
+ var ltcache = {
244
+ key: null,
245
+ val: null
246
+ };
247
+
248
+ function LocalTimeNoCheck(time) {
249
+ var ltc = ltcache;
250
+ if (%_ObjectEquals(time, ltc.key)) return ltc.val;
251
+
252
+ // Inline the DST offset cache checks for speed.
253
+ // The cache is hit, or DaylightSavingsOffset is called,
254
+ // before local_time_offset is used.
255
+ var cache = DST_offset_cache;
256
+ if (cache.start <= time && time <= cache.end) {
257
+ var dst_offset = cache.offset;
258
+ } else {
259
+ var dst_offset = DaylightSavingsOffset(time);
260
+ }
261
+ ltc.key = time;
262
+ return (ltc.val = time + local_time_offset + dst_offset);
263
+ }
264
+
265
+
266
+ function UTC(time) {
267
+ if (NUMBER_IS_NAN(time)) return time;
268
+ // local_time_offset is needed before the call to DaylightSavingsOffset,
269
+ // so it may be uninitialized.
270
+ if (IS_UNDEFINED(local_time_offset)) {
271
+ local_time_offset = %DateLocalTimeOffset();
272
+ }
273
+ var tmp = time - local_time_offset;
274
+ return tmp - DaylightSavingsOffset(tmp);
275
+ }
276
+
277
+
278
+ // ECMA 262 - 15.9.1.11
279
+ function MakeTime(hour, min, sec, ms) {
280
+ if (!$isFinite(hour)) return $NaN;
281
+ if (!$isFinite(min)) return $NaN;
282
+ if (!$isFinite(sec)) return $NaN;
283
+ if (!$isFinite(ms)) return $NaN;
284
+ return TO_INTEGER(hour) * msPerHour
285
+ + TO_INTEGER(min) * msPerMinute
286
+ + TO_INTEGER(sec) * msPerSecond
287
+ + TO_INTEGER(ms);
288
+ }
289
+
290
+
291
+ // ECMA 262 - 15.9.1.12
292
+ function TimeInYear(year) {
293
+ return DaysInYear(year) * msPerDay;
294
+ }
295
+
296
+
297
+ var ymd_from_time_cache = [$NaN, $NaN, $NaN];
298
+ var ymd_from_time_cached_time = $NaN;
299
+
300
+ function YearFromTime(t) {
301
+ if (t !== ymd_from_time_cached_time) {
302
+ if (!$isFinite(t)) {
303
+ return $NaN;
304
+ }
305
+
306
+ %DateYMDFromTime(t, ymd_from_time_cache);
307
+ ymd_from_time_cached_time = t
308
+ }
309
+
310
+ return ymd_from_time_cache[0];
311
+ }
312
+
313
+ function MonthFromTime(t) {
314
+ if (t !== ymd_from_time_cached_time) {
315
+ if (!$isFinite(t)) {
316
+ return $NaN;
317
+ }
318
+ %DateYMDFromTime(t, ymd_from_time_cache);
319
+ ymd_from_time_cached_time = t
320
+ }
321
+
322
+ return ymd_from_time_cache[1];
323
+ }
324
+
325
+ function DateFromTime(t) {
326
+ if (t !== ymd_from_time_cached_time) {
327
+ if (!$isFinite(t)) {
328
+ return $NaN;
329
+ }
330
+
331
+ %DateYMDFromTime(t, ymd_from_time_cache);
332
+ ymd_from_time_cached_time = t
333
+ }
334
+
335
+ return ymd_from_time_cache[2];
336
+ }
337
+
338
+
339
+ // Compute number of days given a year, month, date.
340
+ // Note that month and date can lie outside the normal range.
341
+ // For example:
342
+ // MakeDay(2007, -4, 20) --> MakeDay(2006, 8, 20)
343
+ // MakeDay(2007, -33, 1) --> MakeDay(2004, 3, 1)
344
+ // MakeDay(2007, 14, -50) --> MakeDay(2007, 8, 11)
345
+ function MakeDay(year, month, date) {
346
+ if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) return $NaN;
347
+
348
+ // Convert to integer and map -0 to 0.
349
+ year = TO_INTEGER_MAP_MINUS_ZERO(year);
350
+ month = TO_INTEGER_MAP_MINUS_ZERO(month);
351
+ date = TO_INTEGER_MAP_MINUS_ZERO(date);
352
+
353
+ if (year < kMinYear || year > kMaxYear ||
354
+ month < kMinMonth || month > kMaxMonth ||
355
+ date < kMinDate || date > kMaxDate) {
356
+ return $NaN;
357
+ }
358
+
359
+ // Now we rely on year, month and date being SMIs.
360
+ return %DateMakeDay(year, month, date);
361
+ }
362
+
363
+
364
+ // ECMA 262 - 15.9.1.13
365
+ function MakeDate(day, time) {
366
+ var time = day * msPerDay + time;
367
+ // Some of our runtime funtions for computing UTC(time) rely on
368
+ // times not being significantly larger than MAX_TIME_MS. If there
369
+ // is no way that the time can be within range even after UTC
370
+ // conversion we return NaN immediately instead of relying on
371
+ // TimeClip to do it.
372
+ if ($abs(time) > MAX_TIME_BEFORE_UTC) return $NaN;
373
+ return time;
374
+ }
375
+
376
+
377
+ // ECMA 262 - 15.9.1.14
378
+ function TimeClip(time) {
379
+ if (!$isFinite(time)) return $NaN;
380
+ if ($abs(time) > MAX_TIME_MS) return $NaN;
381
+ return TO_INTEGER(time);
382
+ }
383
+
384
+
385
+ // The Date cache is used to limit the cost of parsing the same Date
386
+ // strings over and over again.
387
+ var Date_cache = {
388
+ // Cached time value.
389
+ time: $NaN,
390
+ // Cached year when interpreting the time as a local time. Only
391
+ // valid when the time matches cached time.
392
+ year: $NaN,
393
+ // String input for which the cached time is valid.
394
+ string: null
395
+ };
396
+
397
+
398
+ %SetCode($Date, function(year, month, date, hours, minutes, seconds, ms) {
399
+ if (!%_IsConstructCall()) {
400
+ // ECMA 262 - 15.9.2
401
+ return (new $Date()).toString();
402
+ }
403
+
404
+ // ECMA 262 - 15.9.3
405
+ var argc = %_ArgumentsLength();
406
+ var value;
407
+ if (argc == 0) {
408
+ value = %DateCurrentTime();
409
+
410
+ } else if (argc == 1) {
411
+ if (IS_NUMBER(year)) {
412
+ value = TimeClip(year);
413
+
414
+ } else if (IS_STRING(year)) {
415
+ // Probe the Date cache. If we already have a time value for the
416
+ // given time, we re-use that instead of parsing the string again.
417
+ var cache = Date_cache;
418
+ if (cache.string === year) {
419
+ value = cache.time;
420
+ } else {
421
+ value = DateParse(year);
422
+ if (!NUMBER_IS_NAN(value)) {
423
+ cache.time = value;
424
+ cache.year = YearFromTime(LocalTimeNoCheck(value));
425
+ cache.string = year;
426
+ }
427
+ }
428
+
429
+ } else {
430
+ // According to ECMA 262, no hint should be given for this
431
+ // conversion. However, ToPrimitive defaults to STRING_HINT for
432
+ // Date objects which will lose precision when the Date
433
+ // constructor is called with another Date object as its
434
+ // argument. We therefore use NUMBER_HINT for the conversion,
435
+ // which is the default for everything else than Date objects.
436
+ // This makes us behave like KJS and SpiderMonkey.
437
+ var time = ToPrimitive(year, NUMBER_HINT);
438
+ value = IS_STRING(time) ? DateParse(time) : TimeClip(ToNumber(time));
439
+ }
440
+
441
+ } else {
442
+ year = ToNumber(year);
443
+ month = ToNumber(month);
444
+ date = argc > 2 ? ToNumber(date) : 1;
445
+ hours = argc > 3 ? ToNumber(hours) : 0;
446
+ minutes = argc > 4 ? ToNumber(minutes) : 0;
447
+ seconds = argc > 5 ? ToNumber(seconds) : 0;
448
+ ms = argc > 6 ? ToNumber(ms) : 0;
449
+ year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
450
+ ? 1900 + TO_INTEGER(year) : year;
451
+ var day = MakeDay(year, month, date);
452
+ var time = MakeTime(hours, minutes, seconds, ms);
453
+ value = TimeClip(UTC(MakeDate(day, time)));
454
+ }
455
+ %_SetValueOf(this, value);
456
+ });
457
+
458
+
459
+ %FunctionSetPrototype($Date, new $Date($NaN));
460
+
461
+
462
+ var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
463
+ var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
464
+
465
+
466
+ function TwoDigitString(value) {
467
+ return value < 10 ? "0" + value : "" + value;
468
+ }
469
+
470
+
471
+ function DateString(time) {
472
+ return WeekDays[WeekDay(time)] + ' '
473
+ + Months[MonthFromTime(time)] + ' '
474
+ + TwoDigitString(DateFromTime(time)) + ' '
475
+ + YearFromTime(time);
476
+ }
477
+
478
+
479
+ var LongWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
480
+ var LongMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
481
+
482
+
483
+ function LongDateString(time) {
484
+ return LongWeekDays[WeekDay(time)] + ', '
485
+ + LongMonths[MonthFromTime(time)] + ' '
486
+ + TwoDigitString(DateFromTime(time)) + ', '
487
+ + YearFromTime(time);
488
+ }
489
+
490
+
491
+ function TimeString(time) {
492
+ return TwoDigitString(HOUR_FROM_TIME(time)) + ':'
493
+ + TwoDigitString(MIN_FROM_TIME(time)) + ':'
494
+ + TwoDigitString(SEC_FROM_TIME(time));
495
+ }
496
+
497
+
498
+ function LocalTimezoneString(time) {
499
+ var old_timezone = timezone_cache_timezone;
500
+ var timezone = LocalTimezone(time);
501
+ if (old_timezone && timezone != old_timezone) {
502
+ // If the timezone string has changed from the one that we cached,
503
+ // the local time offset may now be wrong. So we need to update it
504
+ // and try again.
505
+ local_time_offset = %DateLocalTimeOffset();
506
+ // We also need to invalidate the DST cache as the new timezone may have
507
+ // different DST times.
508
+ var dst_cache = DST_offset_cache;
509
+ dst_cache.start = 0;
510
+ dst_cache.end = -1;
511
+ }
512
+
513
+ var timezoneOffset =
514
+ (DaylightSavingsOffset(time) + local_time_offset) / msPerMinute;
515
+ var sign = (timezoneOffset >= 0) ? 1 : -1;
516
+ var hours = FLOOR((sign * timezoneOffset)/60);
517
+ var min = FLOOR((sign * timezoneOffset)%60);
518
+ var gmt = ' GMT' + ((sign == 1) ? '+' : '-') +
519
+ TwoDigitString(hours) + TwoDigitString(min);
520
+ return gmt + ' (' + timezone + ')';
521
+ }
522
+
523
+
524
+ function DatePrintString(time) {
525
+ return DateString(time) + ' ' + TimeString(time);
526
+ }
527
+
528
+ // -------------------------------------------------------------------
529
+
530
+ // Reused output buffer. Used when parsing date strings.
531
+ var parse_buffer = $Array(8);
532
+
533
+ // ECMA 262 - 15.9.4.2
534
+ function DateParse(string) {
535
+ var arr = %DateParseString(ToString(string), parse_buffer);
536
+ if (IS_NULL(arr)) return $NaN;
537
+
538
+ var day = MakeDay(arr[0], arr[1], arr[2]);
539
+ var time = MakeTime(arr[3], arr[4], arr[5], arr[6]);
540
+ var date = MakeDate(day, time);
541
+
542
+ if (IS_NULL(arr[7])) {
543
+ return TimeClip(UTC(date));
544
+ } else {
545
+ return TimeClip(date - arr[7] * 1000);
546
+ }
547
+ }
548
+
549
+
550
+ // ECMA 262 - 15.9.4.3
551
+ function DateUTC(year, month, date, hours, minutes, seconds, ms) {
552
+ year = ToNumber(year);
553
+ month = ToNumber(month);
554
+ var argc = %_ArgumentsLength();
555
+ date = argc > 2 ? ToNumber(date) : 1;
556
+ hours = argc > 3 ? ToNumber(hours) : 0;
557
+ minutes = argc > 4 ? ToNumber(minutes) : 0;
558
+ seconds = argc > 5 ? ToNumber(seconds) : 0;
559
+ ms = argc > 6 ? ToNumber(ms) : 0;
560
+ year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
561
+ ? 1900 + TO_INTEGER(year) : year;
562
+ var day = MakeDay(year, month, date);
563
+ var time = MakeTime(hours, minutes, seconds, ms);
564
+ return %_SetValueOf(this, TimeClip(MakeDate(day, time)));
565
+ }
566
+
567
+
568
+ // Mozilla-specific extension. Returns the number of milliseconds
569
+ // elapsed since 1 January 1970 00:00:00 UTC.
570
+ function DateNow() {
571
+ return %DateCurrentTime();
572
+ }
573
+
574
+
575
+ // ECMA 262 - 15.9.5.2
576
+ function DateToString() {
577
+ var t = DATE_VALUE(this);
578
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
579
+ var time_zone_string = LocalTimezoneString(t); // May update local offset.
580
+ return DatePrintString(LocalTimeNoCheck(t)) + time_zone_string;
581
+ }
582
+
583
+
584
+ // ECMA 262 - 15.9.5.3
585
+ function DateToDateString() {
586
+ var t = DATE_VALUE(this);
587
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
588
+ return DateString(LocalTimeNoCheck(t));
589
+ }
590
+
591
+
592
+ // ECMA 262 - 15.9.5.4
593
+ function DateToTimeString() {
594
+ var t = DATE_VALUE(this);
595
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
596
+ var time_zone_string = LocalTimezoneString(t); // May update local offset.
597
+ return TimeString(LocalTimeNoCheck(t)) + time_zone_string;
598
+ }
599
+
600
+
601
+ // ECMA 262 - 15.9.5.5
602
+ function DateToLocaleString() {
603
+ return %_CallFunction(this, DateToString);
604
+ }
605
+
606
+
607
+ // ECMA 262 - 15.9.5.6
608
+ function DateToLocaleDateString() {
609
+ var t = DATE_VALUE(this);
610
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
611
+ return LongDateString(LocalTimeNoCheck(t));
612
+ }
613
+
614
+
615
+ // ECMA 262 - 15.9.5.7
616
+ function DateToLocaleTimeString() {
617
+ var t = DATE_VALUE(this);
618
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
619
+ var lt = LocalTimeNoCheck(t);
620
+ return TimeString(lt);
621
+ }
622
+
623
+
624
+ // ECMA 262 - 15.9.5.8
625
+ function DateValueOf() {
626
+ return DATE_VALUE(this);
627
+ }
628
+
629
+
630
+ // ECMA 262 - 15.9.5.9
631
+ function DateGetTime() {
632
+ return DATE_VALUE(this);
633
+ }
634
+
635
+
636
+ // ECMA 262 - 15.9.5.10
637
+ function DateGetFullYear() {
638
+ var t = DATE_VALUE(this);
639
+ if (NUMBER_IS_NAN(t)) return t;
640
+ var cache = Date_cache;
641
+ if (cache.time === t) return cache.year;
642
+ return YearFromTime(LocalTimeNoCheck(t));
643
+ }
644
+
645
+
646
+ // ECMA 262 - 15.9.5.11
647
+ function DateGetUTCFullYear() {
648
+ var t = DATE_VALUE(this);
649
+ if (NUMBER_IS_NAN(t)) return t;
650
+ return YearFromTime(t);
651
+ }
652
+
653
+
654
+ // ECMA 262 - 15.9.5.12
655
+ function DateGetMonth() {
656
+ var t = DATE_VALUE(this);
657
+ if (NUMBER_IS_NAN(t)) return t;
658
+ return MonthFromTime(LocalTimeNoCheck(t));
659
+ }
660
+
661
+
662
+ // ECMA 262 - 15.9.5.13
663
+ function DateGetUTCMonth() {
664
+ var t = DATE_VALUE(this);
665
+ if (NUMBER_IS_NAN(t)) return t;
666
+ return MonthFromTime(t);
667
+ }
668
+
669
+
670
+ // ECMA 262 - 15.9.5.14
671
+ function DateGetDate() {
672
+ var t = DATE_VALUE(this);
673
+ if (NUMBER_IS_NAN(t)) return t;
674
+ return DateFromTime(LocalTimeNoCheck(t));
675
+ }
676
+
677
+
678
+ // ECMA 262 - 15.9.5.15
679
+ function DateGetUTCDate() {
680
+ var t = DATE_VALUE(this);
681
+ return NAN_OR_DATE_FROM_TIME(t);
682
+ }
683
+
684
+
685
+ // ECMA 262 - 15.9.5.16
686
+ function DateGetDay() {
687
+ var t = %_ValueOf(this);
688
+ if (NUMBER_IS_NAN(t)) return t;
689
+ return WeekDay(LocalTimeNoCheck(t));
690
+ }
691
+
692
+
693
+ // ECMA 262 - 15.9.5.17
694
+ function DateGetUTCDay() {
695
+ var t = %_ValueOf(this);
696
+ if (NUMBER_IS_NAN(t)) return t;
697
+ return WeekDay(t);
698
+ }
699
+
700
+
701
+ // ECMA 262 - 15.9.5.18
702
+ function DateGetHours() {
703
+ var t = DATE_VALUE(this);
704
+ if (NUMBER_IS_NAN(t)) return t;
705
+ return HOUR_FROM_TIME(LocalTimeNoCheck(t));
706
+ }
707
+
708
+
709
+ // ECMA 262 - 15.9.5.19
710
+ function DateGetUTCHours() {
711
+ var t = DATE_VALUE(this);
712
+ if (NUMBER_IS_NAN(t)) return t;
713
+ return HOUR_FROM_TIME(t);
714
+ }
715
+
716
+
717
+ // ECMA 262 - 15.9.5.20
718
+ function DateGetMinutes() {
719
+ var t = DATE_VALUE(this);
720
+ if (NUMBER_IS_NAN(t)) return t;
721
+ return MIN_FROM_TIME(LocalTimeNoCheck(t));
722
+ }
723
+
724
+
725
+ // ECMA 262 - 15.9.5.21
726
+ function DateGetUTCMinutes() {
727
+ var t = DATE_VALUE(this);
728
+ return NAN_OR_MIN_FROM_TIME(t);
729
+ }
730
+
731
+
732
+ // ECMA 262 - 15.9.5.22
733
+ function DateGetSeconds() {
734
+ var t = DATE_VALUE(this);
735
+ if (NUMBER_IS_NAN(t)) return t;
736
+ return SEC_FROM_TIME(LocalTimeNoCheck(t));
737
+ }
738
+
739
+
740
+ // ECMA 262 - 15.9.5.23
741
+ function DateGetUTCSeconds() {
742
+ var t = DATE_VALUE(this);
743
+ return NAN_OR_SEC_FROM_TIME(t);
744
+ }
745
+
746
+
747
+ // ECMA 262 - 15.9.5.24
748
+ function DateGetMilliseconds() {
749
+ var t = DATE_VALUE(this);
750
+ if (NUMBER_IS_NAN(t)) return t;
751
+ return MS_FROM_TIME(LocalTimeNoCheck(t));
752
+ }
753
+
754
+
755
+ // ECMA 262 - 15.9.5.25
756
+ function DateGetUTCMilliseconds() {
757
+ var t = DATE_VALUE(this);
758
+ return NAN_OR_MS_FROM_TIME(t);
759
+ }
760
+
761
+
762
+ // ECMA 262 - 15.9.5.26
763
+ function DateGetTimezoneOffset() {
764
+ var t = DATE_VALUE(this);
765
+ if (NUMBER_IS_NAN(t)) return t;
766
+ return (t - LocalTimeNoCheck(t)) / msPerMinute;
767
+ }
768
+
769
+
770
+ // ECMA 262 - 15.9.5.27
771
+ function DateSetTime(ms) {
772
+ if (!IS_DATE(this)) ThrowDateTypeError();
773
+ return %_SetValueOf(this, TimeClip(ToNumber(ms)));
774
+ }
775
+
776
+
777
+ // ECMA 262 - 15.9.5.28
778
+ function DateSetMilliseconds(ms) {
779
+ var t = LocalTime(DATE_VALUE(this));
780
+ ms = ToNumber(ms);
781
+ var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms);
782
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
783
+ }
784
+
785
+
786
+ // ECMA 262 - 15.9.5.29
787
+ function DateSetUTCMilliseconds(ms) {
788
+ var t = DATE_VALUE(this);
789
+ ms = ToNumber(ms);
790
+ var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms);
791
+ return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
792
+ }
793
+
794
+
795
+ // ECMA 262 - 15.9.5.30
796
+ function DateSetSeconds(sec, ms) {
797
+ var t = LocalTime(DATE_VALUE(this));
798
+ sec = ToNumber(sec);
799
+ ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
800
+ var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms);
801
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
802
+ }
803
+
804
+
805
+ // ECMA 262 - 15.9.5.31
806
+ function DateSetUTCSeconds(sec, ms) {
807
+ var t = DATE_VALUE(this);
808
+ sec = ToNumber(sec);
809
+ ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
810
+ var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms);
811
+ return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
812
+ }
813
+
814
+
815
+ // ECMA 262 - 15.9.5.33
816
+ function DateSetMinutes(min, sec, ms) {
817
+ var t = LocalTime(DATE_VALUE(this));
818
+ min = ToNumber(min);
819
+ var argc = %_ArgumentsLength();
820
+ sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
821
+ ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
822
+ var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms);
823
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
824
+ }
825
+
826
+
827
+ // ECMA 262 - 15.9.5.34
828
+ function DateSetUTCMinutes(min, sec, ms) {
829
+ var t = DATE_VALUE(this);
830
+ min = ToNumber(min);
831
+ var argc = %_ArgumentsLength();
832
+ sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
833
+ ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
834
+ var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms);
835
+ return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
836
+ }
837
+
838
+
839
+ // ECMA 262 - 15.9.5.35
840
+ function DateSetHours(hour, min, sec, ms) {
841
+ var t = LocalTime(DATE_VALUE(this));
842
+ hour = ToNumber(hour);
843
+ var argc = %_ArgumentsLength();
844
+ min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min);
845
+ sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
846
+ ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
847
+ var time = MakeTime(hour, min, sec, ms);
848
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
849
+ }
850
+
851
+
852
+ // ECMA 262 - 15.9.5.34
853
+ function DateSetUTCHours(hour, min, sec, ms) {
854
+ var t = DATE_VALUE(this);
855
+ hour = ToNumber(hour);
856
+ var argc = %_ArgumentsLength();
857
+ min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min);
858
+ sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
859
+ ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
860
+ var time = MakeTime(hour, min, sec, ms);
861
+ return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
862
+ }
863
+
864
+
865
+ // ECMA 262 - 15.9.5.36
866
+ function DateSetDate(date) {
867
+ var t = LocalTime(DATE_VALUE(this));
868
+ date = ToNumber(date);
869
+ var day = MakeDay(YearFromTime(t), MonthFromTime(t), date);
870
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t)))));
871
+ }
872
+
873
+
874
+ // ECMA 262 - 15.9.5.37
875
+ function DateSetUTCDate(date) {
876
+ var t = DATE_VALUE(this);
877
+ date = ToNumber(date);
878
+ var day = MakeDay(YearFromTime(t), MonthFromTime(t), date);
879
+ return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t))));
880
+ }
881
+
882
+
883
+ // ECMA 262 - 15.9.5.38
884
+ function DateSetMonth(month, date) {
885
+ var t = LocalTime(DATE_VALUE(this));
886
+ month = ToNumber(month);
887
+ date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date);
888
+ var day = MakeDay(YearFromTime(t), month, date);
889
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t)))));
890
+ }
891
+
892
+
893
+ // ECMA 262 - 15.9.5.39
894
+ function DateSetUTCMonth(month, date) {
895
+ var t = DATE_VALUE(this);
896
+ month = ToNumber(month);
897
+ date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date);
898
+ var day = MakeDay(YearFromTime(t), month, date);
899
+ return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t))));
900
+ }
901
+
902
+
903
+ // ECMA 262 - 15.9.5.40
904
+ function DateSetFullYear(year, month, date) {
905
+ var t = DATE_VALUE(this);
906
+ t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t);
907
+ year = ToNumber(year);
908
+ var argc = %_ArgumentsLength();
909
+ month = argc < 2 ? MonthFromTime(t) : ToNumber(month);
910
+ date = argc < 3 ? DateFromTime(t) : ToNumber(date);
911
+ var day = MakeDay(year, month, date);
912
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t)))));
913
+ }
914
+
915
+
916
+ // ECMA 262 - 15.9.5.41
917
+ function DateSetUTCFullYear(year, month, date) {
918
+ var t = DATE_VALUE(this);
919
+ if (NUMBER_IS_NAN(t)) t = 0;
920
+ var argc = %_ArgumentsLength();
921
+ year = ToNumber(year);
922
+ month = argc < 2 ? MonthFromTime(t) : ToNumber(month);
923
+ date = argc < 3 ? DateFromTime(t) : ToNumber(date);
924
+ var day = MakeDay(year, month, date);
925
+ return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t))));
926
+ }
927
+
928
+
929
+ // ECMA 262 - 15.9.5.42
930
+ function DateToUTCString() {
931
+ var t = DATE_VALUE(this);
932
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
933
+ // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT
934
+ return WeekDays[WeekDay(t)] + ', '
935
+ + TwoDigitString(DateFromTime(t)) + ' '
936
+ + Months[MonthFromTime(t)] + ' '
937
+ + YearFromTime(t) + ' '
938
+ + TimeString(t) + ' GMT';
939
+ }
940
+
941
+
942
+ // ECMA 262 - B.2.4
943
+ function DateGetYear() {
944
+ var t = DATE_VALUE(this);
945
+ if (NUMBER_IS_NAN(t)) return $NaN;
946
+ return YearFromTime(LocalTimeNoCheck(t)) - 1900;
947
+ }
948
+
949
+
950
+ // ECMA 262 - B.2.5
951
+ function DateSetYear(year) {
952
+ var t = LocalTime(DATE_VALUE(this));
953
+ if (NUMBER_IS_NAN(t)) t = 0;
954
+ year = ToNumber(year);
955
+ if (NUMBER_IS_NAN(year)) return %_SetValueOf(this, $NaN);
956
+ year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
957
+ ? 1900 + TO_INTEGER(year) : year;
958
+ var day = MakeDay(year, MonthFromTime(t), DateFromTime(t));
959
+ return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t)))));
960
+ }
961
+
962
+
963
+ // ECMA 262 - B.2.6
964
+ //
965
+ // Notice that this does not follow ECMA 262 completely. ECMA 262
966
+ // says that toGMTString should be the same Function object as
967
+ // toUTCString. JSC does not do this, so for compatibility we do not
968
+ // do that either. Instead, we create a new function whose name
969
+ // property will return toGMTString.
970
+ function DateToGMTString() {
971
+ return %_CallFunction(this, DateToUTCString);
972
+ }
973
+
974
+
975
+ function PadInt(n, digits) {
976
+ if (digits == 1) return n;
977
+ return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n;
978
+ }
979
+
980
+
981
+ function DateToISOString() {
982
+ var t = DATE_VALUE(this);
983
+ if (NUMBER_IS_NAN(t)) return kInvalidDate;
984
+ return this.getUTCFullYear() +
985
+ '-' + PadInt(this.getUTCMonth() + 1, 2) +
986
+ '-' + PadInt(this.getUTCDate(), 2) +
987
+ 'T' + PadInt(this.getUTCHours(), 2) +
988
+ ':' + PadInt(this.getUTCMinutes(), 2) +
989
+ ':' + PadInt(this.getUTCSeconds(), 2) +
990
+ '.' + PadInt(this.getUTCMilliseconds(), 3) +
991
+ 'Z';
992
+ }
993
+
994
+
995
+ function DateToJSON(key) {
996
+ var o = ToObject(this);
997
+ var tv = DefaultNumber(o);
998
+ if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) {
999
+ return null;
1000
+ }
1001
+ return o.toISOString();
1002
+ }
1003
+
1004
+
1005
+ function ResetDateCache() {
1006
+
1007
+ // Reset the local_time_offset:
1008
+ local_time_offset = %DateLocalTimeOffset();
1009
+
1010
+ // Reset the DST offset cache:
1011
+ var cache = DST_offset_cache;
1012
+ cache.offset = 0;
1013
+ cache.start = 0;
1014
+ cache.end = -1;
1015
+ cache.increment = 0;
1016
+ cache.initial_increment = 19 * msPerDay;
1017
+
1018
+ // Reset the timezone cache:
1019
+ timezone_cache_time = $NaN;
1020
+ timezone_cache_timezone = undefined;
1021
+
1022
+ // Reset the ltcache:
1023
+ ltcache.key = null;
1024
+ ltcache.val = null;
1025
+
1026
+ // Reset the ymd_from_time_cache:
1027
+ ymd_from_time_cache = [$NaN, $NaN, $NaN];
1028
+ ymd_from_time_cached_time = $NaN;
1029
+
1030
+ // Reset the date cache:
1031
+ cache = Date_cache;
1032
+ cache.time = $NaN;
1033
+ cache.year = $NaN;
1034
+ cache.string = null;
1035
+ }
1036
+
1037
+
1038
+ // -------------------------------------------------------------------
1039
+
1040
+ function SetupDate() {
1041
+ // Setup non-enumerable properties of the Date object itself.
1042
+ InstallFunctions($Date, DONT_ENUM, $Array(
1043
+ "UTC", DateUTC,
1044
+ "parse", DateParse,
1045
+ "now", DateNow
1046
+ ));
1047
+
1048
+ // Setup non-enumerable constructor property of the Date prototype object.
1049
+ %SetProperty($Date.prototype, "constructor", $Date, DONT_ENUM);
1050
+
1051
+ // Setup non-enumerable functions of the Date prototype object and
1052
+ // set their names.
1053
+ InstallFunctionsOnHiddenPrototype($Date.prototype, DONT_ENUM, $Array(
1054
+ "toString", DateToString,
1055
+ "toDateString", DateToDateString,
1056
+ "toTimeString", DateToTimeString,
1057
+ "toLocaleString", DateToLocaleString,
1058
+ "toLocaleDateString", DateToLocaleDateString,
1059
+ "toLocaleTimeString", DateToLocaleTimeString,
1060
+ "valueOf", DateValueOf,
1061
+ "getTime", DateGetTime,
1062
+ "getFullYear", DateGetFullYear,
1063
+ "getUTCFullYear", DateGetUTCFullYear,
1064
+ "getMonth", DateGetMonth,
1065
+ "getUTCMonth", DateGetUTCMonth,
1066
+ "getDate", DateGetDate,
1067
+ "getUTCDate", DateGetUTCDate,
1068
+ "getDay", DateGetDay,
1069
+ "getUTCDay", DateGetUTCDay,
1070
+ "getHours", DateGetHours,
1071
+ "getUTCHours", DateGetUTCHours,
1072
+ "getMinutes", DateGetMinutes,
1073
+ "getUTCMinutes", DateGetUTCMinutes,
1074
+ "getSeconds", DateGetSeconds,
1075
+ "getUTCSeconds", DateGetUTCSeconds,
1076
+ "getMilliseconds", DateGetMilliseconds,
1077
+ "getUTCMilliseconds", DateGetUTCMilliseconds,
1078
+ "getTimezoneOffset", DateGetTimezoneOffset,
1079
+ "setTime", DateSetTime,
1080
+ "setMilliseconds", DateSetMilliseconds,
1081
+ "setUTCMilliseconds", DateSetUTCMilliseconds,
1082
+ "setSeconds", DateSetSeconds,
1083
+ "setUTCSeconds", DateSetUTCSeconds,
1084
+ "setMinutes", DateSetMinutes,
1085
+ "setUTCMinutes", DateSetUTCMinutes,
1086
+ "setHours", DateSetHours,
1087
+ "setUTCHours", DateSetUTCHours,
1088
+ "setDate", DateSetDate,
1089
+ "setUTCDate", DateSetUTCDate,
1090
+ "setMonth", DateSetMonth,
1091
+ "setUTCMonth", DateSetUTCMonth,
1092
+ "setFullYear", DateSetFullYear,
1093
+ "setUTCFullYear", DateSetUTCFullYear,
1094
+ "toGMTString", DateToGMTString,
1095
+ "toUTCString", DateToUTCString,
1096
+ "getYear", DateGetYear,
1097
+ "setYear", DateSetYear,
1098
+ "toISOString", DateToISOString,
1099
+ "toJSON", DateToJSON
1100
+ ));
1101
+ }
1102
+
1103
+ SetupDate();