therubyracer 0.4.9-x86-linux

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 (637) hide show
  1. data/.gitignore +11 -0
  2. data/.gitmodules +3 -0
  3. data/Doxyfile +1514 -0
  4. data/History.txt +43 -0
  5. data/README.rdoc +157 -0
  6. data/Rakefile +51 -0
  7. data/docs/data_conversion.txt +18 -0
  8. data/ext/v8/callbacks.cpp +160 -0
  9. data/ext/v8/callbacks.h +14 -0
  10. data/ext/v8/convert_ruby.cpp +8 -0
  11. data/ext/v8/convert_ruby.h +99 -0
  12. data/ext/v8/convert_string.cpp +10 -0
  13. data/ext/v8/convert_string.h +73 -0
  14. data/ext/v8/convert_v8.cpp +9 -0
  15. data/ext/v8/convert_v8.h +121 -0
  16. data/ext/v8/converters.cpp +83 -0
  17. data/ext/v8/converters.h +23 -0
  18. data/ext/v8/extconf.rb +36 -0
  19. data/ext/v8/upstream/2.0.6/.gitignore +26 -0
  20. data/ext/v8/upstream/2.0.6/AUTHORS +23 -0
  21. data/ext/v8/upstream/2.0.6/ChangeLog +1479 -0
  22. data/ext/v8/upstream/2.0.6/LICENSE +55 -0
  23. data/ext/v8/upstream/2.0.6/SConstruct +1028 -0
  24. data/ext/v8/upstream/2.0.6/include/v8-debug.h +275 -0
  25. data/ext/v8/upstream/2.0.6/include/v8.h +3236 -0
  26. data/ext/v8/upstream/2.0.6/src/SConscript +283 -0
  27. data/ext/v8/upstream/2.0.6/src/accessors.cc +695 -0
  28. data/ext/v8/upstream/2.0.6/src/accessors.h +114 -0
  29. data/ext/v8/upstream/2.0.6/src/allocation.cc +198 -0
  30. data/ext/v8/upstream/2.0.6/src/allocation.h +169 -0
  31. data/ext/v8/upstream/2.0.6/src/api.cc +3831 -0
  32. data/ext/v8/upstream/2.0.6/src/api.h +479 -0
  33. data/ext/v8/upstream/2.0.6/src/apinatives.js +110 -0
  34. data/ext/v8/upstream/2.0.6/src/apiutils.h +69 -0
  35. data/ext/v8/upstream/2.0.6/src/arguments.h +97 -0
  36. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm-inl.h +277 -0
  37. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.cc +1821 -0
  38. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.h +1027 -0
  39. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2-inl.h +267 -0
  40. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.cc +1821 -0
  41. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.h +1027 -0
  42. data/ext/v8/upstream/2.0.6/src/arm/builtins-arm.cc +1271 -0
  43. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm-inl.h +74 -0
  44. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.cc +6682 -0
  45. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.h +535 -0
  46. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.cc +112 -0
  47. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.h +347 -0
  48. data/ext/v8/upstream/2.0.6/src/arm/cpu-arm.cc +132 -0
  49. data/ext/v8/upstream/2.0.6/src/arm/debug-arm.cc +213 -0
  50. data/ext/v8/upstream/2.0.6/src/arm/disasm-arm.cc +1166 -0
  51. data/ext/v8/upstream/2.0.6/src/arm/fast-codegen-arm.cc +1698 -0
  52. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.cc +123 -0
  53. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.h +162 -0
  54. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +849 -0
  55. data/ext/v8/upstream/2.0.6/src/arm/jump-target-arm.cc +238 -0
  56. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.cc +1259 -0
  57. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.h +423 -0
  58. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.cc +1266 -0
  59. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.h +282 -0
  60. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm-inl.h +103 -0
  61. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.cc +59 -0
  62. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.h +43 -0
  63. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.cc +2264 -0
  64. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.h +306 -0
  65. data/ext/v8/upstream/2.0.6/src/arm/stub-cache-arm.cc +1516 -0
  66. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +412 -0
  67. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.h +532 -0
  68. data/ext/v8/upstream/2.0.6/src/array.js +1154 -0
  69. data/ext/v8/upstream/2.0.6/src/assembler.cc +772 -0
  70. data/ext/v8/upstream/2.0.6/src/assembler.h +525 -0
  71. data/ext/v8/upstream/2.0.6/src/ast.cc +512 -0
  72. data/ext/v8/upstream/2.0.6/src/ast.h +1820 -0
  73. data/ext/v8/upstream/2.0.6/src/bootstrapper.cc +1680 -0
  74. data/ext/v8/upstream/2.0.6/src/bootstrapper.h +103 -0
  75. data/ext/v8/upstream/2.0.6/src/builtins.cc +851 -0
  76. data/ext/v8/upstream/2.0.6/src/builtins.h +245 -0
  77. data/ext/v8/upstream/2.0.6/src/bytecodes-irregexp.h +104 -0
  78. data/ext/v8/upstream/2.0.6/src/char-predicates-inl.h +86 -0
  79. data/ext/v8/upstream/2.0.6/src/char-predicates.h +65 -0
  80. data/ext/v8/upstream/2.0.6/src/checks.cc +100 -0
  81. data/ext/v8/upstream/2.0.6/src/checks.h +284 -0
  82. data/ext/v8/upstream/2.0.6/src/code-stubs.cc +164 -0
  83. data/ext/v8/upstream/2.0.6/src/code-stubs.h +164 -0
  84. data/ext/v8/upstream/2.0.6/src/code.h +68 -0
  85. data/ext/v8/upstream/2.0.6/src/codegen-inl.h +88 -0
  86. data/ext/v8/upstream/2.0.6/src/codegen.cc +504 -0
  87. data/ext/v8/upstream/2.0.6/src/codegen.h +522 -0
  88. data/ext/v8/upstream/2.0.6/src/compilation-cache.cc +490 -0
  89. data/ext/v8/upstream/2.0.6/src/compilation-cache.h +98 -0
  90. data/ext/v8/upstream/2.0.6/src/compiler.cc +1132 -0
  91. data/ext/v8/upstream/2.0.6/src/compiler.h +107 -0
  92. data/ext/v8/upstream/2.0.6/src/contexts.cc +256 -0
  93. data/ext/v8/upstream/2.0.6/src/contexts.h +345 -0
  94. data/ext/v8/upstream/2.0.6/src/conversions-inl.h +95 -0
  95. data/ext/v8/upstream/2.0.6/src/conversions.cc +709 -0
  96. data/ext/v8/upstream/2.0.6/src/conversions.h +118 -0
  97. data/ext/v8/upstream/2.0.6/src/counters.cc +78 -0
  98. data/ext/v8/upstream/2.0.6/src/counters.h +239 -0
  99. data/ext/v8/upstream/2.0.6/src/cpu.h +65 -0
  100. data/ext/v8/upstream/2.0.6/src/d8-debug.cc +345 -0
  101. data/ext/v8/upstream/2.0.6/src/d8-debug.h +155 -0
  102. data/ext/v8/upstream/2.0.6/src/d8-posix.cc +675 -0
  103. data/ext/v8/upstream/2.0.6/src/d8-readline.cc +128 -0
  104. data/ext/v8/upstream/2.0.6/src/d8-windows.cc +42 -0
  105. data/ext/v8/upstream/2.0.6/src/d8.cc +776 -0
  106. data/ext/v8/upstream/2.0.6/src/d8.h +225 -0
  107. data/ext/v8/upstream/2.0.6/src/d8.js +1625 -0
  108. data/ext/v8/upstream/2.0.6/src/date-delay.js +1138 -0
  109. data/ext/v8/upstream/2.0.6/src/dateparser-inl.h +114 -0
  110. data/ext/v8/upstream/2.0.6/src/dateparser.cc +186 -0
  111. data/ext/v8/upstream/2.0.6/src/dateparser.h +240 -0
  112. data/ext/v8/upstream/2.0.6/src/debug-agent.cc +425 -0
  113. data/ext/v8/upstream/2.0.6/src/debug-agent.h +129 -0
  114. data/ext/v8/upstream/2.0.6/src/debug-delay.js +2073 -0
  115. data/ext/v8/upstream/2.0.6/src/debug.cc +2751 -0
  116. data/ext/v8/upstream/2.0.6/src/debug.h +866 -0
  117. data/ext/v8/upstream/2.0.6/src/disasm.h +77 -0
  118. data/ext/v8/upstream/2.0.6/src/disassembler.cc +318 -0
  119. data/ext/v8/upstream/2.0.6/src/disassembler.h +56 -0
  120. data/ext/v8/upstream/2.0.6/src/dtoa-config.c +91 -0
  121. data/ext/v8/upstream/2.0.6/src/execution.cc +701 -0
  122. data/ext/v8/upstream/2.0.6/src/execution.h +312 -0
  123. data/ext/v8/upstream/2.0.6/src/factory.cc +957 -0
  124. data/ext/v8/upstream/2.0.6/src/factory.h +393 -0
  125. data/ext/v8/upstream/2.0.6/src/fast-codegen.cc +725 -0
  126. data/ext/v8/upstream/2.0.6/src/fast-codegen.h +371 -0
  127. data/ext/v8/upstream/2.0.6/src/flag-definitions.h +426 -0
  128. data/ext/v8/upstream/2.0.6/src/flags.cc +555 -0
  129. data/ext/v8/upstream/2.0.6/src/flags.h +81 -0
  130. data/ext/v8/upstream/2.0.6/src/frame-element.cc +45 -0
  131. data/ext/v8/upstream/2.0.6/src/frame-element.h +235 -0
  132. data/ext/v8/upstream/2.0.6/src/frames-inl.h +215 -0
  133. data/ext/v8/upstream/2.0.6/src/frames.cc +749 -0
  134. data/ext/v8/upstream/2.0.6/src/frames.h +659 -0
  135. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.cc +76 -0
  136. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.h +135 -0
  137. data/ext/v8/upstream/2.0.6/src/global-handles.cc +516 -0
  138. data/ext/v8/upstream/2.0.6/src/global-handles.h +180 -0
  139. data/ext/v8/upstream/2.0.6/src/globals.h +608 -0
  140. data/ext/v8/upstream/2.0.6/src/handles-inl.h +76 -0
  141. data/ext/v8/upstream/2.0.6/src/handles.cc +811 -0
  142. data/ext/v8/upstream/2.0.6/src/handles.h +367 -0
  143. data/ext/v8/upstream/2.0.6/src/hashmap.cc +226 -0
  144. data/ext/v8/upstream/2.0.6/src/hashmap.h +120 -0
  145. data/ext/v8/upstream/2.0.6/src/heap-inl.h +407 -0
  146. data/ext/v8/upstream/2.0.6/src/heap-profiler.cc +695 -0
  147. data/ext/v8/upstream/2.0.6/src/heap-profiler.h +277 -0
  148. data/ext/v8/upstream/2.0.6/src/heap.cc +4204 -0
  149. data/ext/v8/upstream/2.0.6/src/heap.h +1704 -0
  150. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32-inl.h +325 -0
  151. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.cc +2375 -0
  152. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.h +914 -0
  153. data/ext/v8/upstream/2.0.6/src/ia32/builtins-ia32.cc +1222 -0
  154. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32-inl.h +46 -0
  155. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.cc +9770 -0
  156. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.h +834 -0
  157. data/ext/v8/upstream/2.0.6/src/ia32/cpu-ia32.cc +79 -0
  158. data/ext/v8/upstream/2.0.6/src/ia32/debug-ia32.cc +208 -0
  159. data/ext/v8/upstream/2.0.6/src/ia32/disasm-ia32.cc +1357 -0
  160. data/ext/v8/upstream/2.0.6/src/ia32/fast-codegen-ia32.cc +1813 -0
  161. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.cc +111 -0
  162. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.h +135 -0
  163. data/ext/v8/upstream/2.0.6/src/ia32/ic-ia32.cc +1490 -0
  164. data/ext/v8/upstream/2.0.6/src/ia32/jump-target-ia32.cc +432 -0
  165. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.cc +1517 -0
  166. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.h +528 -0
  167. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.cc +1219 -0
  168. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.h +230 -0
  169. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32-inl.h +82 -0
  170. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.cc +99 -0
  171. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.h +43 -0
  172. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.cc +30 -0
  173. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.h +62 -0
  174. data/ext/v8/upstream/2.0.6/src/ia32/stub-cache-ia32.cc +1961 -0
  175. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.cc +1105 -0
  176. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.h +580 -0
  177. data/ext/v8/upstream/2.0.6/src/ic-inl.h +93 -0
  178. data/ext/v8/upstream/2.0.6/src/ic.cc +1426 -0
  179. data/ext/v8/upstream/2.0.6/src/ic.h +443 -0
  180. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.cc +646 -0
  181. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.h +48 -0
  182. data/ext/v8/upstream/2.0.6/src/json-delay.js +254 -0
  183. data/ext/v8/upstream/2.0.6/src/jsregexp.cc +5234 -0
  184. data/ext/v8/upstream/2.0.6/src/jsregexp.h +1439 -0
  185. data/ext/v8/upstream/2.0.6/src/jump-target-inl.h +49 -0
  186. data/ext/v8/upstream/2.0.6/src/jump-target.cc +383 -0
  187. data/ext/v8/upstream/2.0.6/src/jump-target.h +280 -0
  188. data/ext/v8/upstream/2.0.6/src/list-inl.h +166 -0
  189. data/ext/v8/upstream/2.0.6/src/list.h +158 -0
  190. data/ext/v8/upstream/2.0.6/src/log-inl.h +126 -0
  191. data/ext/v8/upstream/2.0.6/src/log-utils.cc +503 -0
  192. data/ext/v8/upstream/2.0.6/src/log-utils.h +292 -0
  193. data/ext/v8/upstream/2.0.6/src/log.cc +1457 -0
  194. data/ext/v8/upstream/2.0.6/src/log.h +371 -0
  195. data/ext/v8/upstream/2.0.6/src/macro-assembler.h +93 -0
  196. data/ext/v8/upstream/2.0.6/src/macros.py +137 -0
  197. data/ext/v8/upstream/2.0.6/src/mark-compact.cc +2007 -0
  198. data/ext/v8/upstream/2.0.6/src/mark-compact.h +442 -0
  199. data/ext/v8/upstream/2.0.6/src/math.js +263 -0
  200. data/ext/v8/upstream/2.0.6/src/memory.h +74 -0
  201. data/ext/v8/upstream/2.0.6/src/messages.cc +177 -0
  202. data/ext/v8/upstream/2.0.6/src/messages.h +112 -0
  203. data/ext/v8/upstream/2.0.6/src/messages.js +937 -0
  204. data/ext/v8/upstream/2.0.6/src/mirror-delay.js +2332 -0
  205. data/ext/v8/upstream/2.0.6/src/mksnapshot.cc +169 -0
  206. data/ext/v8/upstream/2.0.6/src/natives.h +63 -0
  207. data/ext/v8/upstream/2.0.6/src/objects-debug.cc +1317 -0
  208. data/ext/v8/upstream/2.0.6/src/objects-inl.h +3044 -0
  209. data/ext/v8/upstream/2.0.6/src/objects.cc +8306 -0
  210. data/ext/v8/upstream/2.0.6/src/objects.h +4960 -0
  211. data/ext/v8/upstream/2.0.6/src/oprofile-agent.cc +116 -0
  212. data/ext/v8/upstream/2.0.6/src/oprofile-agent.h +69 -0
  213. data/ext/v8/upstream/2.0.6/src/parser.cc +4810 -0
  214. data/ext/v8/upstream/2.0.6/src/parser.h +195 -0
  215. data/ext/v8/upstream/2.0.6/src/platform-freebsd.cc +645 -0
  216. data/ext/v8/upstream/2.0.6/src/platform-linux.cc +808 -0
  217. data/ext/v8/upstream/2.0.6/src/platform-macos.cc +643 -0
  218. data/ext/v8/upstream/2.0.6/src/platform-nullos.cc +454 -0
  219. data/ext/v8/upstream/2.0.6/src/platform-openbsd.cc +597 -0
  220. data/ext/v8/upstream/2.0.6/src/platform-posix.cc +380 -0
  221. data/ext/v8/upstream/2.0.6/src/platform-win32.cc +1908 -0
  222. data/ext/v8/upstream/2.0.6/src/platform.h +556 -0
  223. data/ext/v8/upstream/2.0.6/src/prettyprinter.cc +1511 -0
  224. data/ext/v8/upstream/2.0.6/src/prettyprinter.h +219 -0
  225. data/ext/v8/upstream/2.0.6/src/property.cc +96 -0
  226. data/ext/v8/upstream/2.0.6/src/property.h +327 -0
  227. data/ext/v8/upstream/2.0.6/src/regexp-delay.js +406 -0
  228. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  229. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.cc +464 -0
  230. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.h +141 -0
  231. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.cc +356 -0
  232. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.h +103 -0
  233. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.cc +240 -0
  234. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.h +220 -0
  235. data/ext/v8/upstream/2.0.6/src/regexp-stack.cc +103 -0
  236. data/ext/v8/upstream/2.0.6/src/regexp-stack.h +123 -0
  237. data/ext/v8/upstream/2.0.6/src/register-allocator-inl.h +74 -0
  238. data/ext/v8/upstream/2.0.6/src/register-allocator.cc +100 -0
  239. data/ext/v8/upstream/2.0.6/src/register-allocator.h +295 -0
  240. data/ext/v8/upstream/2.0.6/src/rewriter.cc +855 -0
  241. data/ext/v8/upstream/2.0.6/src/rewriter.h +54 -0
  242. data/ext/v8/upstream/2.0.6/src/runtime.cc +8163 -0
  243. data/ext/v8/upstream/2.0.6/src/runtime.h +432 -0
  244. data/ext/v8/upstream/2.0.6/src/runtime.js +626 -0
  245. data/ext/v8/upstream/2.0.6/src/scanner.cc +1098 -0
  246. data/ext/v8/upstream/2.0.6/src/scanner.h +425 -0
  247. data/ext/v8/upstream/2.0.6/src/scopeinfo.cc +649 -0
  248. data/ext/v8/upstream/2.0.6/src/scopeinfo.h +236 -0
  249. data/ext/v8/upstream/2.0.6/src/scopes.cc +963 -0
  250. data/ext/v8/upstream/2.0.6/src/scopes.h +401 -0
  251. data/ext/v8/upstream/2.0.6/src/serialize.cc +1260 -0
  252. data/ext/v8/upstream/2.0.6/src/serialize.h +404 -0
  253. data/ext/v8/upstream/2.0.6/src/shell.h +55 -0
  254. data/ext/v8/upstream/2.0.6/src/simulator.h +41 -0
  255. data/ext/v8/upstream/2.0.6/src/smart-pointer.h +109 -0
  256. data/ext/v8/upstream/2.0.6/src/snapshot-common.cc +97 -0
  257. data/ext/v8/upstream/2.0.6/src/snapshot-empty.cc +40 -0
  258. data/ext/v8/upstream/2.0.6/src/snapshot.h +59 -0
  259. data/ext/v8/upstream/2.0.6/src/spaces-inl.h +372 -0
  260. data/ext/v8/upstream/2.0.6/src/spaces.cc +2864 -0
  261. data/ext/v8/upstream/2.0.6/src/spaces.h +2072 -0
  262. data/ext/v8/upstream/2.0.6/src/string-stream.cc +584 -0
  263. data/ext/v8/upstream/2.0.6/src/string-stream.h +189 -0
  264. data/ext/v8/upstream/2.0.6/src/string.js +901 -0
  265. data/ext/v8/upstream/2.0.6/src/stub-cache.cc +1108 -0
  266. data/ext/v8/upstream/2.0.6/src/stub-cache.h +578 -0
  267. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/COPYING +15 -0
  268. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/dtoa.c +3330 -0
  269. data/ext/v8/upstream/2.0.6/src/third_party/valgrind/valgrind.h +3925 -0
  270. data/ext/v8/upstream/2.0.6/src/token.cc +56 -0
  271. data/ext/v8/upstream/2.0.6/src/token.h +270 -0
  272. data/ext/v8/upstream/2.0.6/src/top.cc +991 -0
  273. data/ext/v8/upstream/2.0.6/src/top.h +459 -0
  274. data/ext/v8/upstream/2.0.6/src/unicode-inl.h +238 -0
  275. data/ext/v8/upstream/2.0.6/src/unicode.cc +749 -0
  276. data/ext/v8/upstream/2.0.6/src/unicode.h +279 -0
  277. data/ext/v8/upstream/2.0.6/src/uri.js +415 -0
  278. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +426 -0
  279. data/ext/v8/upstream/2.0.6/src/usage-analyzer.h +40 -0
  280. data/ext/v8/upstream/2.0.6/src/utils.cc +322 -0
  281. data/ext/v8/upstream/2.0.6/src/utils.h +592 -0
  282. data/ext/v8/upstream/2.0.6/src/v8-counters.cc +55 -0
  283. data/ext/v8/upstream/2.0.6/src/v8-counters.h +198 -0
  284. data/ext/v8/upstream/2.0.6/src/v8.cc +193 -0
  285. data/ext/v8/upstream/2.0.6/src/v8.h +119 -0
  286. data/ext/v8/upstream/2.0.6/src/v8natives.js +846 -0
  287. data/ext/v8/upstream/2.0.6/src/v8threads.cc +450 -0
  288. data/ext/v8/upstream/2.0.6/src/v8threads.h +144 -0
  289. data/ext/v8/upstream/2.0.6/src/variables.cc +163 -0
  290. data/ext/v8/upstream/2.0.6/src/variables.h +235 -0
  291. data/ext/v8/upstream/2.0.6/src/version.cc +88 -0
  292. data/ext/v8/upstream/2.0.6/src/version.h +64 -0
  293. data/ext/v8/upstream/2.0.6/src/virtual-frame.cc +381 -0
  294. data/ext/v8/upstream/2.0.6/src/virtual-frame.h +44 -0
  295. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64-inl.h +352 -0
  296. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.cc +2539 -0
  297. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.h +1399 -0
  298. data/ext/v8/upstream/2.0.6/src/x64/builtins-x64.cc +1255 -0
  299. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64-inl.h +46 -0
  300. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.cc +8223 -0
  301. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.h +785 -0
  302. data/ext/v8/upstream/2.0.6/src/x64/cpu-x64.cc +79 -0
  303. data/ext/v8/upstream/2.0.6/src/x64/debug-x64.cc +202 -0
  304. data/ext/v8/upstream/2.0.6/src/x64/disasm-x64.cc +1596 -0
  305. data/ext/v8/upstream/2.0.6/src/x64/fast-codegen-x64.cc +1820 -0
  306. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.cc +109 -0
  307. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.h +121 -0
  308. data/ext/v8/upstream/2.0.6/src/x64/ic-x64.cc +1392 -0
  309. data/ext/v8/upstream/2.0.6/src/x64/jump-target-x64.cc +432 -0
  310. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.cc +2409 -0
  311. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.h +765 -0
  312. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.cc +1337 -0
  313. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.h +295 -0
  314. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64-inl.h +86 -0
  315. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.cc +84 -0
  316. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.h +43 -0
  317. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.cc +27 -0
  318. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.h +63 -0
  319. data/ext/v8/upstream/2.0.6/src/x64/stub-cache-x64.cc +1884 -0
  320. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.cc +1089 -0
  321. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.h +560 -0
  322. data/ext/v8/upstream/2.0.6/src/zone-inl.h +297 -0
  323. data/ext/v8/upstream/2.0.6/src/zone.cc +193 -0
  324. data/ext/v8/upstream/2.0.6/src/zone.h +305 -0
  325. data/ext/v8/upstream/2.0.6/tools/codemap.js +258 -0
  326. data/ext/v8/upstream/2.0.6/tools/consarray.js +93 -0
  327. data/ext/v8/upstream/2.0.6/tools/csvparser.js +98 -0
  328. data/ext/v8/upstream/2.0.6/tools/gyp/v8.gyp +620 -0
  329. data/ext/v8/upstream/2.0.6/tools/js2c.py +376 -0
  330. data/ext/v8/upstream/2.0.6/tools/jsmin.py +280 -0
  331. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor +24 -0
  332. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor.py +78 -0
  333. data/ext/v8/upstream/2.0.6/tools/logreader.js +320 -0
  334. data/ext/v8/upstream/2.0.6/tools/mac-nm +18 -0
  335. data/ext/v8/upstream/2.0.6/tools/mac-tick-processor +6 -0
  336. data/ext/v8/upstream/2.0.6/tools/oprofile/annotate +7 -0
  337. data/ext/v8/upstream/2.0.6/tools/oprofile/common +19 -0
  338. data/ext/v8/upstream/2.0.6/tools/oprofile/dump +7 -0
  339. data/ext/v8/upstream/2.0.6/tools/oprofile/report +7 -0
  340. data/ext/v8/upstream/2.0.6/tools/oprofile/reset +7 -0
  341. data/ext/v8/upstream/2.0.6/tools/oprofile/run +14 -0
  342. data/ext/v8/upstream/2.0.6/tools/oprofile/shutdown +7 -0
  343. data/ext/v8/upstream/2.0.6/tools/oprofile/start +7 -0
  344. data/ext/v8/upstream/2.0.6/tools/presubmit.py +299 -0
  345. data/ext/v8/upstream/2.0.6/tools/process-heap-prof.py +120 -0
  346. data/ext/v8/upstream/2.0.6/tools/profile.js +621 -0
  347. data/ext/v8/upstream/2.0.6/tools/profile_view.js +224 -0
  348. data/ext/v8/upstream/2.0.6/tools/run-valgrind.py +77 -0
  349. data/ext/v8/upstream/2.0.6/tools/splaytree.js +322 -0
  350. data/ext/v8/upstream/2.0.6/tools/splaytree.py +226 -0
  351. data/ext/v8/upstream/2.0.6/tools/stats-viewer.py +456 -0
  352. data/ext/v8/upstream/2.0.6/tools/test.py +1370 -0
  353. data/ext/v8/upstream/2.0.6/tools/tickprocessor-driver.js +53 -0
  354. data/ext/v8/upstream/2.0.6/tools/tickprocessor.js +731 -0
  355. data/ext/v8/upstream/2.0.6/tools/tickprocessor.py +535 -0
  356. data/ext/v8/upstream/2.0.6/tools/utils.py +82 -0
  357. data/ext/v8/upstream/2.0.6/tools/visual_studio/README.txt +71 -0
  358. data/ext/v8/upstream/2.0.6/tools/visual_studio/arm.vsprops +14 -0
  359. data/ext/v8/upstream/2.0.6/tools/visual_studio/common.vsprops +35 -0
  360. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8.vcproj +199 -0
  361. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_arm.vcproj +199 -0
  362. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_x64.vcproj +201 -0
  363. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8js2c.cmd +6 -0
  364. data/ext/v8/upstream/2.0.6/tools/visual_studio/debug.vsprops +17 -0
  365. data/ext/v8/upstream/2.0.6/tools/visual_studio/ia32.vsprops +13 -0
  366. data/ext/v8/upstream/2.0.6/tools/visual_studio/js2c.cmd +6 -0
  367. data/ext/v8/upstream/2.0.6/tools/visual_studio/release.vsprops +24 -0
  368. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.sln +101 -0
  369. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.vcproj +223 -0
  370. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.sln +74 -0
  371. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.vcproj +223 -0
  372. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base.vcproj +971 -0
  373. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_arm.vcproj +983 -0
  374. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_x64.vcproj +959 -0
  375. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest.vcproj +255 -0
  376. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_arm.vcproj +243 -0
  377. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
  378. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot.vcproj +151 -0
  379. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot_x64.vcproj +151 -0
  380. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample.vcproj +151 -0
  381. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_arm.vcproj +151 -0
  382. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_x64.vcproj +151 -0
  383. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample.vcproj +151 -0
  384. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_arm.vcproj +151 -0
  385. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_x64.vcproj +153 -0
  386. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot.vcproj +142 -0
  387. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
  388. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
  389. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
  390. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.sln +101 -0
  391. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.vcproj +223 -0
  392. data/ext/v8/upstream/2.0.6/tools/visual_studio/x64.vsprops +13 -0
  393. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +5 -0
  394. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.py +137 -0
  395. data/ext/v8/upstream/Makefile +31 -0
  396. data/ext/v8/upstream/no-strict-aliasing.patch +13 -0
  397. data/ext/v8/upstream/scons/CHANGES.txt +5183 -0
  398. data/ext/v8/upstream/scons/LICENSE.txt +20 -0
  399. data/ext/v8/upstream/scons/MANIFEST +202 -0
  400. data/ext/v8/upstream/scons/PKG-INFO +13 -0
  401. data/ext/v8/upstream/scons/README.txt +273 -0
  402. data/ext/v8/upstream/scons/RELEASE.txt +1040 -0
  403. data/ext/v8/upstream/scons/engine/SCons/Action.py +1256 -0
  404. data/ext/v8/upstream/scons/engine/SCons/Builder.py +868 -0
  405. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +217 -0
  406. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +794 -0
  407. data/ext/v8/upstream/scons/engine/SCons/Debug.py +237 -0
  408. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +485 -0
  409. data/ext/v8/upstream/scons/engine/SCons/Environment.py +2327 -0
  410. data/ext/v8/upstream/scons/engine/SCons/Errors.py +207 -0
  411. data/ext/v8/upstream/scons/engine/SCons/Executor.py +636 -0
  412. data/ext/v8/upstream/scons/engine/SCons/Job.py +435 -0
  413. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +292 -0
  414. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +153 -0
  415. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +3220 -0
  416. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +128 -0
  417. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +1341 -0
  418. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +50 -0
  419. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +50 -0
  420. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +50 -0
  421. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +50 -0
  422. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +76 -0
  423. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +74 -0
  424. data/ext/v8/upstream/scons/engine/SCons/PathList.py +232 -0
  425. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +236 -0
  426. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +70 -0
  427. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +55 -0
  428. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +46 -0
  429. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +46 -0
  430. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +44 -0
  431. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +58 -0
  432. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +264 -0
  433. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +50 -0
  434. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +386 -0
  435. data/ext/v8/upstream/scons/engine/SCons/SConf.py +1038 -0
  436. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +381 -0
  437. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +132 -0
  438. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +74 -0
  439. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +111 -0
  440. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +320 -0
  441. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +48 -0
  442. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +378 -0
  443. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +103 -0
  444. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +55 -0
  445. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +415 -0
  446. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +386 -0
  447. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +1360 -0
  448. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +944 -0
  449. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +642 -0
  450. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +414 -0
  451. data/ext/v8/upstream/scons/engine/SCons/Sig.py +63 -0
  452. data/ext/v8/upstream/scons/engine/SCons/Subst.py +911 -0
  453. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +1030 -0
  454. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +61 -0
  455. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +65 -0
  456. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +73 -0
  457. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +247 -0
  458. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +324 -0
  459. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  460. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  461. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
  462. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
  463. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
  464. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
  465. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
  466. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +104 -0
  467. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
  468. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +64 -0
  469. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +64 -0
  470. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +71 -0
  471. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +675 -0
  472. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +82 -0
  473. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +74 -0
  474. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +80 -0
  475. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +76 -0
  476. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +71 -0
  477. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +63 -0
  478. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +78 -0
  479. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +82 -0
  480. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +99 -0
  481. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +114 -0
  482. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +58 -0
  483. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +50 -0
  484. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +224 -0
  485. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +64 -0
  486. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +125 -0
  487. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +94 -0
  488. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +62 -0
  489. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +62 -0
  490. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +63 -0
  491. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +98 -0
  492. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +63 -0
  493. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +90 -0
  494. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +73 -0
  495. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +53 -0
  496. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +80 -0
  497. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +64 -0
  498. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +63 -0
  499. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +81 -0
  500. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +85 -0
  501. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +53 -0
  502. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +77 -0
  503. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +59 -0
  504. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +52 -0
  505. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +72 -0
  506. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +90 -0
  507. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +59 -0
  508. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +60 -0
  509. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +229 -0
  510. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +490 -0
  511. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +71 -0
  512. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +110 -0
  513. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +234 -0
  514. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +138 -0
  515. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +79 -0
  516. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +99 -0
  517. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +121 -0
  518. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +112 -0
  519. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +63 -0
  520. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +77 -0
  521. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +90 -0
  522. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +159 -0
  523. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +64 -0
  524. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +266 -0
  525. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +50 -0
  526. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +269 -0
  527. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +1439 -0
  528. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +208 -0
  529. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +107 -0
  530. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +72 -0
  531. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
  532. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  533. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +526 -0
  534. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
  535. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  536. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  537. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  538. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  539. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  540. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  541. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +78 -0
  542. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +83 -0
  543. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +108 -0
  544. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +336 -0
  545. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +121 -0
  546. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +70 -0
  547. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +132 -0
  548. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +68 -0
  549. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +58 -0
  550. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +53 -0
  551. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +63 -0
  552. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +67 -0
  553. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +142 -0
  554. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +58 -0
  555. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +63 -0
  556. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +64 -0
  557. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +64 -0
  558. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +77 -0
  559. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +186 -0
  560. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +73 -0
  561. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +805 -0
  562. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +175 -0
  563. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +53 -0
  564. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +100 -0
  565. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +131 -0
  566. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +100 -0
  567. data/ext/v8/upstream/scons/engine/SCons/Util.py +1645 -0
  568. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +91 -0
  569. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +107 -0
  570. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +139 -0
  571. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +109 -0
  572. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +147 -0
  573. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +317 -0
  574. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +228 -0
  575. data/ext/v8/upstream/scons/engine/SCons/__init__.py +49 -0
  576. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +302 -0
  577. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +98 -0
  578. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
  579. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +124 -0
  580. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
  581. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +583 -0
  582. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +176 -0
  583. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +325 -0
  584. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
  585. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
  586. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +187 -0
  587. data/ext/v8/upstream/scons/engine/SCons/cpp.py +598 -0
  588. data/ext/v8/upstream/scons/engine/SCons/dblite.py +248 -0
  589. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +77 -0
  590. data/ext/v8/upstream/scons/os_spawnv_fix.diff +83 -0
  591. data/ext/v8/upstream/scons/scons-time.1 +1017 -0
  592. data/ext/v8/upstream/scons/scons.1 +15179 -0
  593. data/ext/v8/upstream/scons/sconsign.1 +208 -0
  594. data/ext/v8/upstream/scons/script/scons +184 -0
  595. data/ext/v8/upstream/scons/script/scons-time +1529 -0
  596. data/ext/v8/upstream/scons/script/scons.bat +31 -0
  597. data/ext/v8/upstream/scons/script/sconsign +508 -0
  598. data/ext/v8/upstream/scons/setup.cfg +6 -0
  599. data/ext/v8/upstream/scons/setup.py +427 -0
  600. data/ext/v8/v8.cpp +89 -0
  601. data/ext/v8/v8_cxt.cpp +92 -0
  602. data/ext/v8/v8_cxt.h +20 -0
  603. data/ext/v8/v8_func.cpp +10 -0
  604. data/ext/v8/v8_func.h +11 -0
  605. data/ext/v8/v8_msg.cpp +54 -0
  606. data/ext/v8/v8_msg.h +18 -0
  607. data/ext/v8/v8_obj.cpp +52 -0
  608. data/ext/v8/v8_obj.h +13 -0
  609. data/ext/v8/v8_ref.cpp +26 -0
  610. data/ext/v8/v8_ref.h +31 -0
  611. data/ext/v8/v8_script.cpp +20 -0
  612. data/ext/v8/v8_script.h +8 -0
  613. data/ext/v8/v8_standalone.cpp +69 -0
  614. data/ext/v8/v8_standalone.h +31 -0
  615. data/ext/v8/v8_str.cpp +17 -0
  616. data/ext/v8/v8_str.h +9 -0
  617. data/ext/v8/v8_template.cpp +53 -0
  618. data/ext/v8/v8_template.h +13 -0
  619. data/lib/v8.rb +10 -0
  620. data/lib/v8/context.rb +101 -0
  621. data/lib/v8/object.rb +38 -0
  622. data/lib/v8/to.rb +33 -0
  623. data/lib/v8/v8.so +0 -0
  624. data/script/console +10 -0
  625. data/script/destroy +14 -0
  626. data/script/generate +14 -0
  627. data/spec/ext/cxt_spec.rb +25 -0
  628. data/spec/ext/obj_spec.rb +13 -0
  629. data/spec/redjs/jsapi_spec.rb +405 -0
  630. data/spec/redjs/tap.rb +8 -0
  631. data/spec/redjs_helper.rb +3 -0
  632. data/spec/spec.opts +1 -0
  633. data/spec/spec_helper.rb +14 -0
  634. data/spec/v8/to_spec.rb +15 -0
  635. data/tasks/rspec.rake +21 -0
  636. data/therubyracer.gemspec +680 -0
  637. metadata +697 -0
@@ -0,0 +1,772 @@
1
+ // Copyright (c) 1994-2006 Sun Microsystems Inc.
2
+ // All Rights Reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // - Redistributions of source code must retain the above copyright notice,
9
+ // this list of conditions and the following disclaimer.
10
+ //
11
+ // - Redistribution in binary form must reproduce the above copyright
12
+ // notice, this list of conditions and the following disclaimer in the
13
+ // documentation and/or other materials provided with the distribution.
14
+ //
15
+ // - Neither the name of Sun Microsystems or the names of contributors may
16
+ // be used to endorse or promote products derived from this software without
17
+ // specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20
+ // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
+ // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
+ // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
+ // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
+ // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
+ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // The original source code covered by the above license above has been
32
+ // modified significantly by Google Inc.
33
+ // Copyright 2006-2009 the V8 project authors. All rights reserved.
34
+
35
+ #include "v8.h"
36
+
37
+ #include "arguments.h"
38
+ #include "execution.h"
39
+ #include "ic-inl.h"
40
+ #include "factory.h"
41
+ #include "runtime.h"
42
+ #include "serialize.h"
43
+ #include "stub-cache.h"
44
+ #include "regexp-stack.h"
45
+ #include "ast.h"
46
+ #include "regexp-macro-assembler.h"
47
+ // Include native regexp-macro-assembler.
48
+ #ifdef V8_NATIVE_REGEXP
49
+ #if V8_TARGET_ARCH_IA32
50
+ #include "ia32/regexp-macro-assembler-ia32.h"
51
+ #elif V8_TARGET_ARCH_X64
52
+ #include "x64/regexp-macro-assembler-x64.h"
53
+ #elif V8_TARGET_ARCH_ARM
54
+ #include "arm/regexp-macro-assembler-arm.h"
55
+ #else // Unknown architecture.
56
+ #error "Unknown architecture."
57
+ #endif // Target architecture.
58
+ #endif // V8_NATIVE_REGEXP
59
+
60
+ namespace v8 {
61
+ namespace internal {
62
+
63
+
64
+ // -----------------------------------------------------------------------------
65
+ // Implementation of Label
66
+
67
+ int Label::pos() const {
68
+ if (pos_ < 0) return -pos_ - 1;
69
+ if (pos_ > 0) return pos_ - 1;
70
+ UNREACHABLE();
71
+ return 0;
72
+ }
73
+
74
+
75
+ // -----------------------------------------------------------------------------
76
+ // Implementation of RelocInfoWriter and RelocIterator
77
+ //
78
+ // Encoding
79
+ //
80
+ // The most common modes are given single-byte encodings. Also, it is
81
+ // easy to identify the type of reloc info and skip unwanted modes in
82
+ // an iteration.
83
+ //
84
+ // The encoding relies on the fact that there are less than 14
85
+ // different relocation modes.
86
+ //
87
+ // embedded_object: [6 bits pc delta] 00
88
+ //
89
+ // code_taget: [6 bits pc delta] 01
90
+ //
91
+ // position: [6 bits pc delta] 10,
92
+ // [7 bits signed data delta] 0
93
+ //
94
+ // statement_position: [6 bits pc delta] 10,
95
+ // [7 bits signed data delta] 1
96
+ //
97
+ // any nondata mode: 00 [4 bits rmode] 11, // rmode: 0..13 only
98
+ // 00 [6 bits pc delta]
99
+ //
100
+ // pc-jump: 00 1111 11,
101
+ // 00 [6 bits pc delta]
102
+ //
103
+ // pc-jump: 01 1111 11,
104
+ // (variable length) 7 - 26 bit pc delta, written in chunks of 7
105
+ // bits, the lowest 7 bits written first.
106
+ //
107
+ // data-jump + pos: 00 1110 11,
108
+ // signed intptr_t, lowest byte written first
109
+ //
110
+ // data-jump + st.pos: 01 1110 11,
111
+ // signed intptr_t, lowest byte written first
112
+ //
113
+ // data-jump + comm.: 10 1110 11,
114
+ // signed intptr_t, lowest byte written first
115
+ //
116
+ const int kMaxRelocModes = 14;
117
+
118
+ const int kTagBits = 2;
119
+ const int kTagMask = (1 << kTagBits) - 1;
120
+ const int kExtraTagBits = 4;
121
+ const int kPositionTypeTagBits = 1;
122
+ const int kSmallDataBits = kBitsPerByte - kPositionTypeTagBits;
123
+
124
+ const int kEmbeddedObjectTag = 0;
125
+ const int kCodeTargetTag = 1;
126
+ const int kPositionTag = 2;
127
+ const int kDefaultTag = 3;
128
+
129
+ const int kPCJumpTag = (1 << kExtraTagBits) - 1;
130
+
131
+ const int kSmallPCDeltaBits = kBitsPerByte - kTagBits;
132
+ const int kSmallPCDeltaMask = (1 << kSmallPCDeltaBits) - 1;
133
+
134
+ const int kVariableLengthPCJumpTopTag = 1;
135
+ const int kChunkBits = 7;
136
+ const int kChunkMask = (1 << kChunkBits) - 1;
137
+ const int kLastChunkTagBits = 1;
138
+ const int kLastChunkTagMask = 1;
139
+ const int kLastChunkTag = 1;
140
+
141
+
142
+ const int kDataJumpTag = kPCJumpTag - 1;
143
+
144
+ const int kNonstatementPositionTag = 0;
145
+ const int kStatementPositionTag = 1;
146
+ const int kCommentTag = 2;
147
+
148
+
149
+ uint32_t RelocInfoWriter::WriteVariableLengthPCJump(uint32_t pc_delta) {
150
+ // Return if the pc_delta can fit in kSmallPCDeltaBits bits.
151
+ // Otherwise write a variable length PC jump for the bits that do
152
+ // not fit in the kSmallPCDeltaBits bits.
153
+ if (is_uintn(pc_delta, kSmallPCDeltaBits)) return pc_delta;
154
+ WriteExtraTag(kPCJumpTag, kVariableLengthPCJumpTopTag);
155
+ uint32_t pc_jump = pc_delta >> kSmallPCDeltaBits;
156
+ ASSERT(pc_jump > 0);
157
+ // Write kChunkBits size chunks of the pc_jump.
158
+ for (; pc_jump > 0; pc_jump = pc_jump >> kChunkBits) {
159
+ byte b = pc_jump & kChunkMask;
160
+ *--pos_ = b << kLastChunkTagBits;
161
+ }
162
+ // Tag the last chunk so it can be identified.
163
+ *pos_ = *pos_ | kLastChunkTag;
164
+ // Return the remaining kSmallPCDeltaBits of the pc_delta.
165
+ return pc_delta & kSmallPCDeltaMask;
166
+ }
167
+
168
+
169
+ void RelocInfoWriter::WriteTaggedPC(uint32_t pc_delta, int tag) {
170
+ // Write a byte of tagged pc-delta, possibly preceded by var. length pc-jump.
171
+ pc_delta = WriteVariableLengthPCJump(pc_delta);
172
+ *--pos_ = pc_delta << kTagBits | tag;
173
+ }
174
+
175
+
176
+ void RelocInfoWriter::WriteTaggedData(intptr_t data_delta, int tag) {
177
+ *--pos_ = static_cast<byte>(data_delta << kPositionTypeTagBits | tag);
178
+ }
179
+
180
+
181
+ void RelocInfoWriter::WriteExtraTag(int extra_tag, int top_tag) {
182
+ *--pos_ = static_cast<int>(top_tag << (kTagBits + kExtraTagBits) |
183
+ extra_tag << kTagBits |
184
+ kDefaultTag);
185
+ }
186
+
187
+
188
+ void RelocInfoWriter::WriteExtraTaggedPC(uint32_t pc_delta, int extra_tag) {
189
+ // Write two-byte tagged pc-delta, possibly preceded by var. length pc-jump.
190
+ pc_delta = WriteVariableLengthPCJump(pc_delta);
191
+ WriteExtraTag(extra_tag, 0);
192
+ *--pos_ = pc_delta;
193
+ }
194
+
195
+
196
+ void RelocInfoWriter::WriteExtraTaggedData(intptr_t data_delta, int top_tag) {
197
+ WriteExtraTag(kDataJumpTag, top_tag);
198
+ for (int i = 0; i < kIntptrSize; i++) {
199
+ *--pos_ = static_cast<byte>(data_delta);
200
+ // Signed right shift is arithmetic shift. Tested in test-utils.cc.
201
+ data_delta = data_delta >> kBitsPerByte;
202
+ }
203
+ }
204
+
205
+
206
+ void RelocInfoWriter::Write(const RelocInfo* rinfo) {
207
+ #ifdef DEBUG
208
+ byte* begin_pos = pos_;
209
+ #endif
210
+ Counters::reloc_info_count.Increment();
211
+ ASSERT(rinfo->pc() - last_pc_ >= 0);
212
+ ASSERT(RelocInfo::NUMBER_OF_MODES < kMaxRelocModes);
213
+ // Use unsigned delta-encoding for pc.
214
+ uint32_t pc_delta = static_cast<uint32_t>(rinfo->pc() - last_pc_);
215
+ RelocInfo::Mode rmode = rinfo->rmode();
216
+
217
+ // The two most common modes are given small tags, and usually fit in a byte.
218
+ if (rmode == RelocInfo::EMBEDDED_OBJECT) {
219
+ WriteTaggedPC(pc_delta, kEmbeddedObjectTag);
220
+ } else if (rmode == RelocInfo::CODE_TARGET) {
221
+ WriteTaggedPC(pc_delta, kCodeTargetTag);
222
+ } else if (RelocInfo::IsPosition(rmode)) {
223
+ // Use signed delta-encoding for data.
224
+ intptr_t data_delta = rinfo->data() - last_data_;
225
+ int pos_type_tag = rmode == RelocInfo::POSITION ? kNonstatementPositionTag
226
+ : kStatementPositionTag;
227
+ // Check if data is small enough to fit in a tagged byte.
228
+ // We cannot use is_intn because data_delta is not an int32_t.
229
+ if (data_delta >= -(1 << (kSmallDataBits-1)) &&
230
+ data_delta < 1 << (kSmallDataBits-1)) {
231
+ WriteTaggedPC(pc_delta, kPositionTag);
232
+ WriteTaggedData(data_delta, pos_type_tag);
233
+ last_data_ = rinfo->data();
234
+ } else {
235
+ // Otherwise, use costly encoding.
236
+ WriteExtraTaggedPC(pc_delta, kPCJumpTag);
237
+ WriteExtraTaggedData(data_delta, pos_type_tag);
238
+ last_data_ = rinfo->data();
239
+ }
240
+ } else if (RelocInfo::IsComment(rmode)) {
241
+ // Comments are normally not generated, so we use the costly encoding.
242
+ WriteExtraTaggedPC(pc_delta, kPCJumpTag);
243
+ WriteExtraTaggedData(rinfo->data() - last_data_, kCommentTag);
244
+ last_data_ = rinfo->data();
245
+ } else {
246
+ // For all other modes we simply use the mode as the extra tag.
247
+ // None of these modes need a data component.
248
+ ASSERT(rmode < kPCJumpTag && rmode < kDataJumpTag);
249
+ WriteExtraTaggedPC(pc_delta, rmode);
250
+ }
251
+ last_pc_ = rinfo->pc();
252
+ #ifdef DEBUG
253
+ ASSERT(begin_pos - pos_ <= kMaxSize);
254
+ #endif
255
+ }
256
+
257
+
258
+ inline int RelocIterator::AdvanceGetTag() {
259
+ return *--pos_ & kTagMask;
260
+ }
261
+
262
+
263
+ inline int RelocIterator::GetExtraTag() {
264
+ return (*pos_ >> kTagBits) & ((1 << kExtraTagBits) - 1);
265
+ }
266
+
267
+
268
+ inline int RelocIterator::GetTopTag() {
269
+ return *pos_ >> (kTagBits + kExtraTagBits);
270
+ }
271
+
272
+
273
+ inline void RelocIterator::ReadTaggedPC() {
274
+ rinfo_.pc_ += *pos_ >> kTagBits;
275
+ }
276
+
277
+
278
+ inline void RelocIterator::AdvanceReadPC() {
279
+ rinfo_.pc_ += *--pos_;
280
+ }
281
+
282
+
283
+ void RelocIterator::AdvanceReadData() {
284
+ intptr_t x = 0;
285
+ for (int i = 0; i < kIntptrSize; i++) {
286
+ x |= static_cast<intptr_t>(*--pos_) << i * kBitsPerByte;
287
+ }
288
+ rinfo_.data_ += x;
289
+ }
290
+
291
+
292
+ void RelocIterator::AdvanceReadVariableLengthPCJump() {
293
+ // Read the 32-kSmallPCDeltaBits most significant bits of the
294
+ // pc jump in kChunkBits bit chunks and shift them into place.
295
+ // Stop when the last chunk is encountered.
296
+ uint32_t pc_jump = 0;
297
+ for (int i = 0; i < kIntSize; i++) {
298
+ byte pc_jump_part = *--pos_;
299
+ pc_jump |= (pc_jump_part >> kLastChunkTagBits) << i * kChunkBits;
300
+ if ((pc_jump_part & kLastChunkTagMask) == 1) break;
301
+ }
302
+ // The least significant kSmallPCDeltaBits bits will be added
303
+ // later.
304
+ rinfo_.pc_ += pc_jump << kSmallPCDeltaBits;
305
+ }
306
+
307
+
308
+ inline int RelocIterator::GetPositionTypeTag() {
309
+ return *pos_ & ((1 << kPositionTypeTagBits) - 1);
310
+ }
311
+
312
+
313
+ inline void RelocIterator::ReadTaggedData() {
314
+ int8_t signed_b = *pos_;
315
+ // Signed right shift is arithmetic shift. Tested in test-utils.cc.
316
+ rinfo_.data_ += signed_b >> kPositionTypeTagBits;
317
+ }
318
+
319
+
320
+ inline RelocInfo::Mode RelocIterator::DebugInfoModeFromTag(int tag) {
321
+ if (tag == kStatementPositionTag) {
322
+ return RelocInfo::STATEMENT_POSITION;
323
+ } else if (tag == kNonstatementPositionTag) {
324
+ return RelocInfo::POSITION;
325
+ } else {
326
+ ASSERT(tag == kCommentTag);
327
+ return RelocInfo::COMMENT;
328
+ }
329
+ }
330
+
331
+
332
+ void RelocIterator::next() {
333
+ ASSERT(!done());
334
+ // Basically, do the opposite of RelocInfoWriter::Write.
335
+ // Reading of data is as far as possible avoided for unwanted modes,
336
+ // but we must always update the pc.
337
+ //
338
+ // We exit this loop by returning when we find a mode we want.
339
+ while (pos_ > end_) {
340
+ int tag = AdvanceGetTag();
341
+ if (tag == kEmbeddedObjectTag) {
342
+ ReadTaggedPC();
343
+ if (SetMode(RelocInfo::EMBEDDED_OBJECT)) return;
344
+ } else if (tag == kCodeTargetTag) {
345
+ ReadTaggedPC();
346
+ if (SetMode(RelocInfo::CODE_TARGET)) return;
347
+ } else if (tag == kPositionTag) {
348
+ ReadTaggedPC();
349
+ Advance();
350
+ // Check if we want source positions.
351
+ if (mode_mask_ & RelocInfo::kPositionMask) {
352
+ // Check if we want this type of source position.
353
+ if (SetMode(DebugInfoModeFromTag(GetPositionTypeTag()))) {
354
+ // Finally read the data before returning.
355
+ ReadTaggedData();
356
+ return;
357
+ }
358
+ }
359
+ } else {
360
+ ASSERT(tag == kDefaultTag);
361
+ int extra_tag = GetExtraTag();
362
+ if (extra_tag == kPCJumpTag) {
363
+ int top_tag = GetTopTag();
364
+ if (top_tag == kVariableLengthPCJumpTopTag) {
365
+ AdvanceReadVariableLengthPCJump();
366
+ } else {
367
+ AdvanceReadPC();
368
+ }
369
+ } else if (extra_tag == kDataJumpTag) {
370
+ // Check if we want debug modes (the only ones with data).
371
+ if (mode_mask_ & RelocInfo::kDebugMask) {
372
+ int top_tag = GetTopTag();
373
+ AdvanceReadData();
374
+ if (SetMode(DebugInfoModeFromTag(top_tag))) return;
375
+ } else {
376
+ // Otherwise, just skip over the data.
377
+ Advance(kIntptrSize);
378
+ }
379
+ } else {
380
+ AdvanceReadPC();
381
+ if (SetMode(static_cast<RelocInfo::Mode>(extra_tag))) return;
382
+ }
383
+ }
384
+ }
385
+ done_ = true;
386
+ }
387
+
388
+
389
+ RelocIterator::RelocIterator(Code* code, int mode_mask) {
390
+ rinfo_.pc_ = code->instruction_start();
391
+ rinfo_.data_ = 0;
392
+ // relocation info is read backwards
393
+ pos_ = code->relocation_start() + code->relocation_size();
394
+ end_ = code->relocation_start();
395
+ done_ = false;
396
+ mode_mask_ = mode_mask;
397
+ if (mode_mask_ == 0) pos_ = end_;
398
+ next();
399
+ }
400
+
401
+
402
+ RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask) {
403
+ rinfo_.pc_ = desc.buffer;
404
+ rinfo_.data_ = 0;
405
+ // relocation info is read backwards
406
+ pos_ = desc.buffer + desc.buffer_size;
407
+ end_ = pos_ - desc.reloc_size;
408
+ done_ = false;
409
+ mode_mask_ = mode_mask;
410
+ if (mode_mask_ == 0) pos_ = end_;
411
+ next();
412
+ }
413
+
414
+
415
+ // -----------------------------------------------------------------------------
416
+ // Implementation of RelocInfo
417
+
418
+
419
+ #ifdef ENABLE_DISASSEMBLER
420
+ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) {
421
+ switch (rmode) {
422
+ case RelocInfo::NONE:
423
+ return "no reloc";
424
+ case RelocInfo::EMBEDDED_OBJECT:
425
+ return "embedded object";
426
+ case RelocInfo::EMBEDDED_STRING:
427
+ return "embedded string";
428
+ case RelocInfo::CONSTRUCT_CALL:
429
+ return "code target (js construct call)";
430
+ case RelocInfo::CODE_TARGET_CONTEXT:
431
+ return "code target (context)";
432
+ case RelocInfo::CODE_TARGET:
433
+ return "code target";
434
+ case RelocInfo::RUNTIME_ENTRY:
435
+ return "runtime entry";
436
+ case RelocInfo::JS_RETURN:
437
+ return "js return";
438
+ case RelocInfo::COMMENT:
439
+ return "comment";
440
+ case RelocInfo::POSITION:
441
+ return "position";
442
+ case RelocInfo::STATEMENT_POSITION:
443
+ return "statement position";
444
+ case RelocInfo::EXTERNAL_REFERENCE:
445
+ return "external reference";
446
+ case RelocInfo::INTERNAL_REFERENCE:
447
+ return "internal reference";
448
+ case RelocInfo::NUMBER_OF_MODES:
449
+ UNREACHABLE();
450
+ return "number_of_modes";
451
+ }
452
+ return "unknown relocation type";
453
+ }
454
+
455
+
456
+ void RelocInfo::Print() {
457
+ PrintF("%p %s", pc_, RelocModeName(rmode_));
458
+ if (IsComment(rmode_)) {
459
+ PrintF(" (%s)", data_);
460
+ } else if (rmode_ == EMBEDDED_OBJECT) {
461
+ PrintF(" (");
462
+ target_object()->ShortPrint();
463
+ PrintF(")");
464
+ } else if (rmode_ == EXTERNAL_REFERENCE) {
465
+ ExternalReferenceEncoder ref_encoder;
466
+ PrintF(" (%s) (%p)",
467
+ ref_encoder.NameOfAddress(*target_reference_address()),
468
+ *target_reference_address());
469
+ } else if (IsCodeTarget(rmode_)) {
470
+ Code* code = Code::GetCodeFromTargetAddress(target_address());
471
+ PrintF(" (%s) (%p)", Code::Kind2String(code->kind()), target_address());
472
+ } else if (IsPosition(rmode_)) {
473
+ PrintF(" (%d)", data());
474
+ }
475
+
476
+ PrintF("\n");
477
+ }
478
+ #endif // ENABLE_DISASSEMBLER
479
+
480
+
481
+ #ifdef DEBUG
482
+ void RelocInfo::Verify() {
483
+ switch (rmode_) {
484
+ case EMBEDDED_OBJECT:
485
+ Object::VerifyPointer(target_object());
486
+ break;
487
+ case CONSTRUCT_CALL:
488
+ case CODE_TARGET_CONTEXT:
489
+ case CODE_TARGET: {
490
+ // convert inline target address to code object
491
+ Address addr = target_address();
492
+ ASSERT(addr != NULL);
493
+ // Check that we can find the right code object.
494
+ Code* code = Code::GetCodeFromTargetAddress(addr);
495
+ Object* found = Heap::FindCodeObject(addr);
496
+ ASSERT(found->IsCode());
497
+ ASSERT(code->address() == HeapObject::cast(found)->address());
498
+ break;
499
+ }
500
+ case RelocInfo::EMBEDDED_STRING:
501
+ case RUNTIME_ENTRY:
502
+ case JS_RETURN:
503
+ case COMMENT:
504
+ case POSITION:
505
+ case STATEMENT_POSITION:
506
+ case EXTERNAL_REFERENCE:
507
+ case INTERNAL_REFERENCE:
508
+ case NONE:
509
+ break;
510
+ case NUMBER_OF_MODES:
511
+ UNREACHABLE();
512
+ break;
513
+ }
514
+ }
515
+ #endif // DEBUG
516
+
517
+
518
+ // -----------------------------------------------------------------------------
519
+ // Implementation of ExternalReference
520
+
521
+ ExternalReference::ExternalReference(Builtins::CFunctionId id)
522
+ : address_(Redirect(Builtins::c_function_address(id))) {}
523
+
524
+
525
+ ExternalReference::ExternalReference(ApiFunction* fun)
526
+ : address_(Redirect(fun->address())) {}
527
+
528
+
529
+ ExternalReference::ExternalReference(Builtins::Name name)
530
+ : address_(Builtins::builtin_address(name)) {}
531
+
532
+
533
+ ExternalReference::ExternalReference(Runtime::FunctionId id)
534
+ : address_(Redirect(Runtime::FunctionForId(id)->entry)) {}
535
+
536
+
537
+ ExternalReference::ExternalReference(Runtime::Function* f)
538
+ : address_(Redirect(f->entry)) {}
539
+
540
+
541
+ ExternalReference::ExternalReference(const IC_Utility& ic_utility)
542
+ : address_(Redirect(ic_utility.address())) {}
543
+
544
+ #ifdef ENABLE_DEBUGGER_SUPPORT
545
+ ExternalReference::ExternalReference(const Debug_Address& debug_address)
546
+ : address_(debug_address.address()) {}
547
+ #endif
548
+
549
+ ExternalReference::ExternalReference(StatsCounter* counter)
550
+ : address_(reinterpret_cast<Address>(counter->GetInternalPointer())) {}
551
+
552
+
553
+ ExternalReference::ExternalReference(Top::AddressId id)
554
+ : address_(Top::get_address_from_id(id)) {}
555
+
556
+
557
+ ExternalReference::ExternalReference(const SCTableReference& table_ref)
558
+ : address_(table_ref.address()) {}
559
+
560
+
561
+ ExternalReference ExternalReference::perform_gc_function() {
562
+ return ExternalReference(Redirect(FUNCTION_ADDR(Runtime::PerformGC)));
563
+ }
564
+
565
+
566
+ ExternalReference ExternalReference::builtin_passed_function() {
567
+ return ExternalReference(&Builtins::builtin_passed_function);
568
+ }
569
+
570
+
571
+ ExternalReference ExternalReference::random_positive_smi_function() {
572
+ return ExternalReference(Redirect(FUNCTION_ADDR(V8::RandomPositiveSmi)));
573
+ }
574
+
575
+
576
+ ExternalReference ExternalReference::keyed_lookup_cache_keys() {
577
+ return ExternalReference(KeyedLookupCache::keys_address());
578
+ }
579
+
580
+
581
+ ExternalReference ExternalReference::keyed_lookup_cache_field_offsets() {
582
+ return ExternalReference(KeyedLookupCache::field_offsets_address());
583
+ }
584
+
585
+
586
+ ExternalReference ExternalReference::the_hole_value_location() {
587
+ return ExternalReference(Factory::the_hole_value().location());
588
+ }
589
+
590
+
591
+ ExternalReference ExternalReference::roots_address() {
592
+ return ExternalReference(Heap::roots_address());
593
+ }
594
+
595
+
596
+ ExternalReference ExternalReference::address_of_stack_limit() {
597
+ return ExternalReference(StackGuard::address_of_jslimit());
598
+ }
599
+
600
+
601
+ ExternalReference ExternalReference::address_of_real_stack_limit() {
602
+ return ExternalReference(StackGuard::address_of_real_jslimit());
603
+ }
604
+
605
+
606
+ ExternalReference ExternalReference::address_of_regexp_stack_limit() {
607
+ return ExternalReference(RegExpStack::limit_address());
608
+ }
609
+
610
+
611
+ ExternalReference ExternalReference::new_space_start() {
612
+ return ExternalReference(Heap::NewSpaceStart());
613
+ }
614
+
615
+
616
+ ExternalReference ExternalReference::new_space_allocation_top_address() {
617
+ return ExternalReference(Heap::NewSpaceAllocationTopAddress());
618
+ }
619
+
620
+
621
+ ExternalReference ExternalReference::heap_always_allocate_scope_depth() {
622
+ return ExternalReference(Heap::always_allocate_scope_depth_address());
623
+ }
624
+
625
+
626
+ ExternalReference ExternalReference::new_space_allocation_limit_address() {
627
+ return ExternalReference(Heap::NewSpaceAllocationLimitAddress());
628
+ }
629
+
630
+
631
+ ExternalReference ExternalReference::handle_scope_extensions_address() {
632
+ return ExternalReference(HandleScope::current_extensions_address());
633
+ }
634
+
635
+
636
+ ExternalReference ExternalReference::handle_scope_next_address() {
637
+ return ExternalReference(HandleScope::current_next_address());
638
+ }
639
+
640
+
641
+ ExternalReference ExternalReference::handle_scope_limit_address() {
642
+ return ExternalReference(HandleScope::current_limit_address());
643
+ }
644
+
645
+
646
+ ExternalReference ExternalReference::scheduled_exception_address() {
647
+ return ExternalReference(Top::scheduled_exception_address());
648
+ }
649
+
650
+
651
+ #ifdef V8_NATIVE_REGEXP
652
+
653
+ ExternalReference ExternalReference::re_check_stack_guard_state() {
654
+ Address function;
655
+ #ifdef V8_TARGET_ARCH_X64
656
+ function = FUNCTION_ADDR(RegExpMacroAssemblerX64::CheckStackGuardState);
657
+ #elif V8_TARGET_ARCH_IA32
658
+ function = FUNCTION_ADDR(RegExpMacroAssemblerIA32::CheckStackGuardState);
659
+ #elif V8_TARGET_ARCH_ARM
660
+ function = FUNCTION_ADDR(RegExpMacroAssemblerARM::CheckStackGuardState);
661
+ #else
662
+ UNREACHABLE("Unexpected architecture");
663
+ #endif
664
+ return ExternalReference(Redirect(function));
665
+ }
666
+
667
+ ExternalReference ExternalReference::re_grow_stack() {
668
+ return ExternalReference(
669
+ Redirect(FUNCTION_ADDR(NativeRegExpMacroAssembler::GrowStack)));
670
+ }
671
+
672
+ ExternalReference ExternalReference::re_case_insensitive_compare_uc16() {
673
+ return ExternalReference(Redirect(
674
+ FUNCTION_ADDR(NativeRegExpMacroAssembler::CaseInsensitiveCompareUC16)));
675
+ }
676
+
677
+
678
+ ExternalReference ExternalReference::address_of_static_offsets_vector() {
679
+ return ExternalReference(OffsetsVector::static_offsets_vector_address());
680
+ }
681
+
682
+ ExternalReference ExternalReference::address_of_regexp_stack_memory_address() {
683
+ return ExternalReference(RegExpStack::memory_address());
684
+ }
685
+
686
+ ExternalReference ExternalReference::address_of_regexp_stack_memory_size() {
687
+ return ExternalReference(RegExpStack::memory_size_address());
688
+ }
689
+
690
+ #endif
691
+
692
+
693
+ static double add_two_doubles(double x, double y) {
694
+ return x + y;
695
+ }
696
+
697
+
698
+ static double sub_two_doubles(double x, double y) {
699
+ return x - y;
700
+ }
701
+
702
+
703
+ static double mul_two_doubles(double x, double y) {
704
+ return x * y;
705
+ }
706
+
707
+
708
+ static double div_two_doubles(double x, double y) {
709
+ return x / y;
710
+ }
711
+
712
+
713
+ static double mod_two_doubles(double x, double y) {
714
+ return fmod(x, y);
715
+ }
716
+
717
+
718
+ static int native_compare_doubles(double x, double y) {
719
+ if (x == y) return 0;
720
+ return x < y ? 1 : -1;
721
+ }
722
+
723
+
724
+ ExternalReference ExternalReference::double_fp_operation(
725
+ Token::Value operation) {
726
+ typedef double BinaryFPOperation(double x, double y);
727
+ BinaryFPOperation* function = NULL;
728
+ switch (operation) {
729
+ case Token::ADD:
730
+ function = &add_two_doubles;
731
+ break;
732
+ case Token::SUB:
733
+ function = &sub_two_doubles;
734
+ break;
735
+ case Token::MUL:
736
+ function = &mul_two_doubles;
737
+ break;
738
+ case Token::DIV:
739
+ function = &div_two_doubles;
740
+ break;
741
+ case Token::MOD:
742
+ function = &mod_two_doubles;
743
+ break;
744
+ default:
745
+ UNREACHABLE();
746
+ }
747
+ // Passing true as 2nd parameter indicates that they return an fp value.
748
+ return ExternalReference(Redirect(FUNCTION_ADDR(function), true));
749
+ }
750
+
751
+
752
+ ExternalReference ExternalReference::compare_doubles() {
753
+ return ExternalReference(Redirect(FUNCTION_ADDR(native_compare_doubles),
754
+ false));
755
+ }
756
+
757
+
758
+ ExternalReferenceRedirector* ExternalReference::redirector_ = NULL;
759
+
760
+
761
+ #ifdef ENABLE_DEBUGGER_SUPPORT
762
+ ExternalReference ExternalReference::debug_break() {
763
+ return ExternalReference(Redirect(FUNCTION_ADDR(Debug::Break)));
764
+ }
765
+
766
+
767
+ ExternalReference ExternalReference::debug_step_in_fp_address() {
768
+ return ExternalReference(Debug::step_in_fp_addr());
769
+ }
770
+ #endif
771
+
772
+ } } // namespace v8::internal