mustang 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. data/.rspec +1 -0
  2. data/Isolate +9 -0
  3. data/README.md +6 -12
  4. data/Rakefile +30 -4
  5. data/TODO.md +9 -0
  6. data/ext/v8/extconf.rb +56 -0
  7. data/ext/v8/v8.cpp +37 -0
  8. data/ext/v8/v8_array.cpp +161 -0
  9. data/ext/v8/v8_array.h +17 -0
  10. data/ext/v8/v8_base.cpp +147 -0
  11. data/ext/v8/v8_base.h +23 -0
  12. data/ext/v8/v8_cast.cpp +151 -0
  13. data/ext/v8/v8_cast.h +64 -0
  14. data/ext/v8/v8_context.cpp +174 -0
  15. data/ext/v8/v8_context.h +12 -0
  16. data/ext/v8/v8_date.cpp +61 -0
  17. data/ext/v8/v8_date.h +16 -0
  18. data/ext/v8/v8_errors.cpp +147 -0
  19. data/ext/v8/v8_errors.h +19 -0
  20. data/ext/v8/v8_external.cpp +66 -0
  21. data/ext/v8/v8_external.h +16 -0
  22. data/ext/v8/v8_function.cpp +182 -0
  23. data/ext/v8/v8_function.h +14 -0
  24. data/ext/v8/v8_integer.cpp +70 -0
  25. data/ext/v8/v8_integer.h +16 -0
  26. data/ext/v8/v8_macros.h +30 -0
  27. data/ext/v8/v8_main.cpp +53 -0
  28. data/ext/v8/v8_main.h +13 -0
  29. data/ext/v8/v8_number.cpp +62 -0
  30. data/ext/v8/v8_number.h +16 -0
  31. data/ext/v8/v8_object.cpp +172 -0
  32. data/ext/v8/v8_object.h +17 -0
  33. data/ext/v8/v8_ref.cpp +72 -0
  34. data/ext/v8/v8_ref.h +43 -0
  35. data/ext/v8/v8_regexp.cpp +148 -0
  36. data/ext/v8/v8_regexp.h +16 -0
  37. data/ext/v8/v8_string.cpp +78 -0
  38. data/ext/v8/v8_string.h +16 -0
  39. data/ext/v8/v8_value.cpp +370 -0
  40. data/ext/v8/v8_value.h +19 -0
  41. data/gemspec.yml +2 -1
  42. data/lib/core_ext/class.rb +14 -0
  43. data/lib/core_ext/object.rb +12 -0
  44. data/lib/core_ext/symbol.rb +23 -0
  45. data/lib/mustang.rb +44 -0
  46. data/lib/mustang/context.rb +69 -0
  47. data/lib/mustang/errors.rb +36 -0
  48. data/lib/support/delegated.rb +25 -0
  49. data/lib/v8/array.rb +21 -0
  50. data/lib/v8/context.rb +13 -0
  51. data/lib/v8/date.rb +20 -0
  52. data/lib/v8/error.rb +15 -0
  53. data/lib/v8/external.rb +16 -0
  54. data/lib/v8/function.rb +11 -0
  55. data/lib/v8/integer.rb +16 -0
  56. data/lib/v8/number.rb +16 -0
  57. data/lib/v8/object.rb +66 -0
  58. data/lib/v8/regexp.rb +23 -0
  59. data/lib/v8/string.rb +27 -0
  60. data/mustang.gemspec +3 -0
  61. data/spec/core_ext/class_spec.rb +19 -0
  62. data/spec/core_ext/object_spec.rb +19 -0
  63. data/spec/core_ext/symbol_spec.rb +27 -0
  64. data/spec/fixtures/test1.js +2 -0
  65. data/spec/fixtures/test2.js +2 -0
  66. data/spec/spec_helper.rb +20 -0
  67. data/spec/v8/array_spec.rb +88 -0
  68. data/spec/v8/cast_spec.rb +151 -0
  69. data/spec/v8/context_spec.rb +78 -0
  70. data/spec/v8/data_spec.rb +39 -0
  71. data/spec/v8/date_spec.rb +45 -0
  72. data/spec/v8/empty_spec.rb +27 -0
  73. data/spec/v8/errors_spec.rb +142 -0
  74. data/spec/v8/external_spec.rb +44 -0
  75. data/spec/v8/function_spec.rb +170 -0
  76. data/spec/v8/integer_spec.rb +41 -0
  77. data/spec/v8/main_spec.rb +18 -0
  78. data/spec/v8/null_spec.rb +27 -0
  79. data/spec/v8/number_spec.rb +40 -0
  80. data/spec/v8/object_spec.rb +79 -0
  81. data/spec/v8/primitive_spec.rb +9 -0
  82. data/spec/v8/regexp_spec.rb +65 -0
  83. data/spec/v8/string_spec.rb +48 -0
  84. data/spec/v8/undefined_spec.rb +27 -0
  85. data/spec/v8/value_spec.rb +215 -0
  86. data/vendor/v8/.gitignore +2 -0
  87. data/vendor/v8/AUTHORS +3 -1
  88. data/vendor/v8/ChangeLog +117 -0
  89. data/vendor/v8/SConstruct +334 -53
  90. data/vendor/v8/include/v8-debug.h +21 -11
  91. data/vendor/v8/include/v8-preparser.h +1 -1
  92. data/vendor/v8/include/v8-profiler.h +122 -43
  93. data/vendor/v8/include/v8-testing.h +5 -0
  94. data/vendor/v8/include/v8.h +171 -17
  95. data/vendor/v8/preparser/SConscript +38 -0
  96. data/vendor/v8/preparser/preparser-process.cc +77 -114
  97. data/vendor/v8/samples/shell.cc +232 -46
  98. data/vendor/v8/src/SConscript +29 -5
  99. data/vendor/v8/src/accessors.cc +70 -211
  100. data/vendor/v8/{test/cctest/test-mips.cc → src/allocation-inl.h} +15 -18
  101. data/vendor/v8/src/allocation.cc +0 -82
  102. data/vendor/v8/src/allocation.h +9 -42
  103. data/vendor/v8/src/api.cc +1645 -1156
  104. data/vendor/v8/src/api.h +76 -12
  105. data/vendor/v8/src/apiutils.h +0 -7
  106. data/vendor/v8/src/arguments.h +15 -4
  107. data/vendor/v8/src/arm/assembler-arm-inl.h +10 -9
  108. data/vendor/v8/src/arm/assembler-arm.cc +62 -23
  109. data/vendor/v8/src/arm/assembler-arm.h +76 -11
  110. data/vendor/v8/src/arm/builtins-arm.cc +39 -33
  111. data/vendor/v8/src/arm/code-stubs-arm.cc +1182 -402
  112. data/vendor/v8/src/arm/code-stubs-arm.h +20 -54
  113. data/vendor/v8/src/arm/codegen-arm.cc +159 -106
  114. data/vendor/v8/src/arm/codegen-arm.h +6 -6
  115. data/vendor/v8/src/arm/constants-arm.h +16 -1
  116. data/vendor/v8/src/arm/cpu-arm.cc +7 -5
  117. data/vendor/v8/src/arm/debug-arm.cc +6 -4
  118. data/vendor/v8/src/arm/deoptimizer-arm.cc +51 -14
  119. data/vendor/v8/src/arm/disasm-arm.cc +47 -15
  120. data/vendor/v8/src/arm/frames-arm.h +1 -1
  121. data/vendor/v8/src/arm/full-codegen-arm.cc +724 -408
  122. data/vendor/v8/src/arm/ic-arm.cc +90 -85
  123. data/vendor/v8/src/arm/lithium-arm.cc +140 -69
  124. data/vendor/v8/src/arm/lithium-arm.h +161 -46
  125. data/vendor/v8/src/arm/lithium-codegen-arm.cc +567 -297
  126. data/vendor/v8/src/arm/lithium-codegen-arm.h +21 -9
  127. data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +2 -0
  128. data/vendor/v8/src/arm/macro-assembler-arm.cc +457 -96
  129. data/vendor/v8/src/arm/macro-assembler-arm.h +115 -18
  130. data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +20 -13
  131. data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +1 -0
  132. data/vendor/v8/src/arm/simulator-arm.cc +184 -101
  133. data/vendor/v8/src/arm/simulator-arm.h +26 -21
  134. data/vendor/v8/src/arm/stub-cache-arm.cc +450 -467
  135. data/vendor/v8/src/arm/virtual-frame-arm.cc +14 -12
  136. data/vendor/v8/src/arm/virtual-frame-arm.h +11 -8
  137. data/vendor/v8/src/array.js +35 -18
  138. data/vendor/v8/src/assembler.cc +186 -92
  139. data/vendor/v8/src/assembler.h +106 -69
  140. data/vendor/v8/src/ast-inl.h +5 -0
  141. data/vendor/v8/src/ast.cc +46 -35
  142. data/vendor/v8/src/ast.h +107 -50
  143. data/vendor/v8/src/atomicops.h +2 -0
  144. data/vendor/v8/src/atomicops_internals_mips_gcc.h +169 -0
  145. data/vendor/v8/src/bootstrapper.cc +649 -399
  146. data/vendor/v8/src/bootstrapper.h +94 -27
  147. data/vendor/v8/src/builtins.cc +359 -227
  148. data/vendor/v8/src/builtins.h +157 -123
  149. data/vendor/v8/src/checks.cc +2 -2
  150. data/vendor/v8/src/checks.h +4 -0
  151. data/vendor/v8/src/code-stubs.cc +27 -17
  152. data/vendor/v8/src/code-stubs.h +38 -17
  153. data/vendor/v8/src/codegen-inl.h +5 -1
  154. data/vendor/v8/src/codegen.cc +27 -17
  155. data/vendor/v8/src/codegen.h +9 -9
  156. data/vendor/v8/src/compilation-cache.cc +92 -206
  157. data/vendor/v8/src/compilation-cache.h +205 -30
  158. data/vendor/v8/src/compiler.cc +107 -120
  159. data/vendor/v8/src/compiler.h +17 -2
  160. data/vendor/v8/src/contexts.cc +22 -15
  161. data/vendor/v8/src/contexts.h +14 -8
  162. data/vendor/v8/src/conversions.cc +86 -30
  163. data/vendor/v8/src/counters.cc +19 -4
  164. data/vendor/v8/src/counters.h +28 -16
  165. data/vendor/v8/src/cpu-profiler-inl.h +4 -3
  166. data/vendor/v8/src/cpu-profiler.cc +123 -72
  167. data/vendor/v8/src/cpu-profiler.h +33 -19
  168. data/vendor/v8/src/cpu.h +2 -0
  169. data/vendor/v8/src/d8-debug.cc +3 -3
  170. data/vendor/v8/src/d8-debug.h +7 -6
  171. data/vendor/v8/src/d8-posix.cc +2 -0
  172. data/vendor/v8/src/d8.cc +22 -12
  173. data/vendor/v8/src/d8.gyp +3 -0
  174. data/vendor/v8/src/d8.js +618 -0
  175. data/vendor/v8/src/data-flow.h +3 -3
  176. data/vendor/v8/src/dateparser.h +4 -2
  177. data/vendor/v8/src/debug-agent.cc +10 -9
  178. data/vendor/v8/src/debug-agent.h +9 -11
  179. data/vendor/v8/src/debug-debugger.js +121 -0
  180. data/vendor/v8/src/debug.cc +331 -227
  181. data/vendor/v8/src/debug.h +248 -219
  182. data/vendor/v8/src/deoptimizer.cc +173 -62
  183. data/vendor/v8/src/deoptimizer.h +119 -19
  184. data/vendor/v8/src/disasm.h +3 -0
  185. data/vendor/v8/src/disassembler.cc +10 -9
  186. data/vendor/v8/src/execution.cc +185 -129
  187. data/vendor/v8/src/execution.h +47 -78
  188. data/vendor/v8/src/extensions/experimental/break-iterator.cc +250 -0
  189. data/vendor/v8/src/extensions/experimental/break-iterator.h +89 -0
  190. data/vendor/v8/src/extensions/experimental/experimental.gyp +2 -0
  191. data/vendor/v8/src/extensions/experimental/i18n-extension.cc +22 -2
  192. data/vendor/v8/src/extensions/externalize-string-extension.cc +2 -2
  193. data/vendor/v8/src/extensions/gc-extension.cc +1 -1
  194. data/vendor/v8/src/factory.cc +261 -154
  195. data/vendor/v8/src/factory.h +162 -158
  196. data/vendor/v8/src/flag-definitions.h +17 -11
  197. data/vendor/v8/src/frame-element.cc +0 -5
  198. data/vendor/v8/src/frame-element.h +9 -13
  199. data/vendor/v8/src/frames-inl.h +7 -0
  200. data/vendor/v8/src/frames.cc +56 -46
  201. data/vendor/v8/src/frames.h +36 -25
  202. data/vendor/v8/src/full-codegen.cc +15 -24
  203. data/vendor/v8/src/full-codegen.h +13 -41
  204. data/vendor/v8/src/func-name-inferrer.cc +7 -6
  205. data/vendor/v8/src/func-name-inferrer.h +1 -1
  206. data/vendor/v8/src/gdb-jit.cc +1 -0
  207. data/vendor/v8/src/global-handles.cc +118 -56
  208. data/vendor/v8/src/global-handles.h +98 -40
  209. data/vendor/v8/src/globals.h +2 -2
  210. data/vendor/v8/src/handles-inl.h +106 -9
  211. data/vendor/v8/src/handles.cc +220 -157
  212. data/vendor/v8/src/handles.h +38 -59
  213. data/vendor/v8/src/hashmap.h +3 -3
  214. data/vendor/v8/src/heap-inl.h +141 -25
  215. data/vendor/v8/src/heap-profiler.cc +117 -63
  216. data/vendor/v8/src/heap-profiler.h +38 -21
  217. data/vendor/v8/src/heap.cc +805 -564
  218. data/vendor/v8/src/heap.h +640 -594
  219. data/vendor/v8/src/hydrogen-instructions.cc +216 -73
  220. data/vendor/v8/src/hydrogen-instructions.h +259 -124
  221. data/vendor/v8/src/hydrogen.cc +996 -1171
  222. data/vendor/v8/src/hydrogen.h +163 -144
  223. data/vendor/v8/src/ia32/assembler-ia32-inl.h +12 -11
  224. data/vendor/v8/src/ia32/assembler-ia32.cc +85 -39
  225. data/vendor/v8/src/ia32/assembler-ia32.h +82 -16
  226. data/vendor/v8/src/ia32/builtins-ia32.cc +64 -58
  227. data/vendor/v8/src/ia32/code-stubs-ia32.cc +248 -324
  228. data/vendor/v8/src/ia32/code-stubs-ia32.h +3 -44
  229. data/vendor/v8/src/ia32/codegen-ia32.cc +217 -165
  230. data/vendor/v8/src/ia32/codegen-ia32.h +3 -0
  231. data/vendor/v8/src/ia32/cpu-ia32.cc +6 -5
  232. data/vendor/v8/src/ia32/debug-ia32.cc +8 -5
  233. data/vendor/v8/src/ia32/deoptimizer-ia32.cc +124 -14
  234. data/vendor/v8/src/ia32/disasm-ia32.cc +85 -62
  235. data/vendor/v8/src/ia32/frames-ia32.h +1 -1
  236. data/vendor/v8/src/ia32/full-codegen-ia32.cc +348 -435
  237. data/vendor/v8/src/ia32/ic-ia32.cc +91 -91
  238. data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +500 -255
  239. data/vendor/v8/src/ia32/lithium-codegen-ia32.h +13 -4
  240. data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +6 -0
  241. data/vendor/v8/src/ia32/lithium-ia32.cc +122 -45
  242. data/vendor/v8/src/ia32/lithium-ia32.h +128 -41
  243. data/vendor/v8/src/ia32/macro-assembler-ia32.cc +109 -84
  244. data/vendor/v8/src/ia32/macro-assembler-ia32.h +18 -9
  245. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +26 -15
  246. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +1 -0
  247. data/vendor/v8/src/ia32/register-allocator-ia32.cc +30 -30
  248. data/vendor/v8/src/ia32/simulator-ia32.h +4 -4
  249. data/vendor/v8/src/ia32/stub-cache-ia32.cc +383 -400
  250. data/vendor/v8/src/ia32/virtual-frame-ia32.cc +36 -13
  251. data/vendor/v8/src/ia32/virtual-frame-ia32.h +11 -5
  252. data/vendor/v8/src/ic-inl.h +12 -2
  253. data/vendor/v8/src/ic.cc +304 -221
  254. data/vendor/v8/src/ic.h +115 -58
  255. data/vendor/v8/src/interpreter-irregexp.cc +25 -21
  256. data/vendor/v8/src/interpreter-irregexp.h +2 -1
  257. data/vendor/v8/src/isolate.cc +883 -0
  258. data/vendor/v8/src/isolate.h +1304 -0
  259. data/vendor/v8/src/json.js +10 -10
  260. data/vendor/v8/src/jsregexp.cc +111 -80
  261. data/vendor/v8/src/jsregexp.h +6 -7
  262. data/vendor/v8/src/jump-target-heavy.cc +5 -8
  263. data/vendor/v8/src/jump-target-heavy.h +0 -6
  264. data/vendor/v8/src/jump-target-inl.h +1 -1
  265. data/vendor/v8/src/jump-target-light.cc +3 -3
  266. data/vendor/v8/src/lithium-allocator-inl.h +2 -0
  267. data/vendor/v8/src/lithium-allocator.cc +42 -30
  268. data/vendor/v8/src/lithium-allocator.h +8 -22
  269. data/vendor/v8/src/lithium.cc +1 -0
  270. data/vendor/v8/src/liveedit.cc +141 -99
  271. data/vendor/v8/src/liveedit.h +7 -2
  272. data/vendor/v8/src/liveobjectlist-inl.h +90 -0
  273. data/vendor/v8/src/liveobjectlist.cc +2537 -1
  274. data/vendor/v8/src/liveobjectlist.h +245 -35
  275. data/vendor/v8/src/log-utils.cc +122 -35
  276. data/vendor/v8/src/log-utils.h +33 -36
  277. data/vendor/v8/src/log.cc +299 -241
  278. data/vendor/v8/src/log.h +177 -110
  279. data/vendor/v8/src/mark-compact.cc +612 -470
  280. data/vendor/v8/src/mark-compact.h +153 -80
  281. data/vendor/v8/src/messages.cc +16 -14
  282. data/vendor/v8/src/messages.js +30 -7
  283. data/vendor/v8/src/mips/assembler-mips-inl.h +155 -35
  284. data/vendor/v8/src/mips/assembler-mips.cc +1093 -219
  285. data/vendor/v8/src/mips/assembler-mips.h +552 -153
  286. data/vendor/v8/src/mips/builtins-mips.cc +43 -100
  287. data/vendor/v8/src/mips/code-stubs-mips.cc +752 -0
  288. data/vendor/v8/src/mips/code-stubs-mips.h +511 -0
  289. data/vendor/v8/src/mips/codegen-mips-inl.h +8 -14
  290. data/vendor/v8/src/mips/codegen-mips.cc +672 -896
  291. data/vendor/v8/src/mips/codegen-mips.h +271 -69
  292. data/vendor/v8/src/mips/constants-mips.cc +44 -20
  293. data/vendor/v8/src/mips/constants-mips.h +238 -40
  294. data/vendor/v8/src/mips/cpu-mips.cc +20 -3
  295. data/vendor/v8/src/mips/debug-mips.cc +35 -7
  296. data/vendor/v8/src/mips/deoptimizer-mips.cc +91 -0
  297. data/vendor/v8/src/mips/disasm-mips.cc +329 -93
  298. data/vendor/v8/src/mips/frames-mips.cc +2 -50
  299. data/vendor/v8/src/mips/frames-mips.h +24 -9
  300. data/vendor/v8/src/mips/full-codegen-mips.cc +473 -23
  301. data/vendor/v8/src/mips/ic-mips.cc +81 -45
  302. data/vendor/v8/src/mips/jump-target-mips.cc +11 -106
  303. data/vendor/v8/src/mips/lithium-codegen-mips.h +65 -0
  304. data/vendor/v8/src/mips/lithium-mips.h +304 -0
  305. data/vendor/v8/src/mips/macro-assembler-mips.cc +2391 -390
  306. data/vendor/v8/src/mips/macro-assembler-mips.h +718 -121
  307. data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +478 -0
  308. data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +250 -0
  309. data/vendor/v8/src/mips/register-allocator-mips-inl.h +0 -3
  310. data/vendor/v8/src/mips/register-allocator-mips.h +3 -2
  311. data/vendor/v8/src/mips/simulator-mips.cc +1009 -221
  312. data/vendor/v8/src/mips/simulator-mips.h +119 -36
  313. data/vendor/v8/src/mips/stub-cache-mips.cc +331 -148
  314. data/vendor/v8/src/mips/{fast-codegen-mips.cc → virtual-frame-mips-inl.h} +11 -30
  315. data/vendor/v8/src/mips/virtual-frame-mips.cc +137 -149
  316. data/vendor/v8/src/mips/virtual-frame-mips.h +294 -312
  317. data/vendor/v8/src/mirror-debugger.js +9 -8
  318. data/vendor/v8/src/mksnapshot.cc +2 -2
  319. data/vendor/v8/src/objects-debug.cc +16 -16
  320. data/vendor/v8/src/objects-inl.h +421 -195
  321. data/vendor/v8/src/objects-printer.cc +7 -7
  322. data/vendor/v8/src/objects-visiting.cc +1 -1
  323. data/vendor/v8/src/objects-visiting.h +33 -12
  324. data/vendor/v8/src/objects.cc +935 -658
  325. data/vendor/v8/src/objects.h +234 -139
  326. data/vendor/v8/src/parser.cc +484 -439
  327. data/vendor/v8/src/parser.h +35 -14
  328. data/vendor/v8/src/platform-cygwin.cc +173 -107
  329. data/vendor/v8/src/platform-freebsd.cc +224 -72
  330. data/vendor/v8/src/platform-linux.cc +234 -95
  331. data/vendor/v8/src/platform-macos.cc +215 -82
  332. data/vendor/v8/src/platform-nullos.cc +9 -3
  333. data/vendor/v8/src/platform-openbsd.cc +22 -7
  334. data/vendor/v8/src/platform-posix.cc +30 -5
  335. data/vendor/v8/src/platform-solaris.cc +120 -38
  336. data/vendor/v8/src/platform-tls-mac.h +62 -0
  337. data/vendor/v8/src/platform-tls-win32.h +62 -0
  338. data/vendor/v8/src/platform-tls.h +50 -0
  339. data/vendor/v8/src/platform-win32.cc +195 -97
  340. data/vendor/v8/src/platform.h +72 -15
  341. data/vendor/v8/src/preparse-data.cc +2 -0
  342. data/vendor/v8/src/preparser-api.cc +8 -2
  343. data/vendor/v8/src/preparser.cc +1 -1
  344. data/vendor/v8/src/prettyprinter.cc +43 -52
  345. data/vendor/v8/src/prettyprinter.h +1 -1
  346. data/vendor/v8/src/profile-generator-inl.h +0 -28
  347. data/vendor/v8/src/profile-generator.cc +942 -685
  348. data/vendor/v8/src/profile-generator.h +210 -176
  349. data/vendor/v8/src/property.cc +6 -0
  350. data/vendor/v8/src/property.h +14 -3
  351. data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +1 -1
  352. data/vendor/v8/src/regexp-macro-assembler.cc +28 -19
  353. data/vendor/v8/src/regexp-macro-assembler.h +11 -6
  354. data/vendor/v8/src/regexp-stack.cc +18 -10
  355. data/vendor/v8/src/regexp-stack.h +45 -21
  356. data/vendor/v8/src/regexp.js +3 -3
  357. data/vendor/v8/src/register-allocator-inl.h +3 -3
  358. data/vendor/v8/src/register-allocator.cc +1 -7
  359. data/vendor/v8/src/register-allocator.h +5 -15
  360. data/vendor/v8/src/rewriter.cc +2 -1
  361. data/vendor/v8/src/runtime-profiler.cc +158 -128
  362. data/vendor/v8/src/runtime-profiler.h +131 -15
  363. data/vendor/v8/src/runtime.cc +2409 -1692
  364. data/vendor/v8/src/runtime.h +93 -17
  365. data/vendor/v8/src/safepoint-table.cc +3 -0
  366. data/vendor/v8/src/safepoint-table.h +9 -3
  367. data/vendor/v8/src/scanner-base.cc +21 -28
  368. data/vendor/v8/src/scanner-base.h +22 -11
  369. data/vendor/v8/src/scanner.cc +3 -5
  370. data/vendor/v8/src/scanner.h +4 -2
  371. data/vendor/v8/src/scopeinfo.cc +11 -16
  372. data/vendor/v8/src/scopeinfo.h +26 -15
  373. data/vendor/v8/src/scopes.cc +67 -37
  374. data/vendor/v8/src/scopes.h +26 -12
  375. data/vendor/v8/src/serialize.cc +193 -154
  376. data/vendor/v8/src/serialize.h +41 -36
  377. data/vendor/v8/src/small-pointer-list.h +163 -0
  378. data/vendor/v8/src/snapshot-common.cc +1 -1
  379. data/vendor/v8/src/snapshot.h +3 -1
  380. data/vendor/v8/src/spaces-inl.h +30 -25
  381. data/vendor/v8/src/spaces.cc +263 -370
  382. data/vendor/v8/src/spaces.h +178 -166
  383. data/vendor/v8/src/string-search.cc +4 -3
  384. data/vendor/v8/src/string-search.h +21 -20
  385. data/vendor/v8/src/string-stream.cc +32 -24
  386. data/vendor/v8/src/string.js +7 -7
  387. data/vendor/v8/src/stub-cache.cc +324 -248
  388. data/vendor/v8/src/stub-cache.h +181 -155
  389. data/vendor/v8/src/token.cc +3 -3
  390. data/vendor/v8/src/token.h +3 -3
  391. data/vendor/v8/src/top.cc +218 -390
  392. data/vendor/v8/src/type-info.cc +98 -32
  393. data/vendor/v8/src/type-info.h +10 -3
  394. data/vendor/v8/src/unicode.cc +1 -1
  395. data/vendor/v8/src/unicode.h +1 -1
  396. data/vendor/v8/src/utils.h +3 -0
  397. data/vendor/v8/src/v8-counters.cc +18 -11
  398. data/vendor/v8/src/v8-counters.h +34 -13
  399. data/vendor/v8/src/v8.cc +66 -121
  400. data/vendor/v8/src/v8.h +7 -4
  401. data/vendor/v8/src/v8globals.h +18 -12
  402. data/vendor/v8/src/{memory.h → v8memory.h} +0 -0
  403. data/vendor/v8/src/v8natives.js +59 -18
  404. data/vendor/v8/src/v8threads.cc +127 -114
  405. data/vendor/v8/src/v8threads.h +42 -35
  406. data/vendor/v8/src/v8utils.h +2 -39
  407. data/vendor/v8/src/variables.h +1 -1
  408. data/vendor/v8/src/version.cc +26 -5
  409. data/vendor/v8/src/version.h +4 -0
  410. data/vendor/v8/src/virtual-frame-heavy-inl.h +2 -4
  411. data/vendor/v8/src/virtual-frame-light-inl.h +5 -4
  412. data/vendor/v8/src/vm-state-inl.h +21 -17
  413. data/vendor/v8/src/vm-state.h +7 -5
  414. data/vendor/v8/src/win32-headers.h +1 -0
  415. data/vendor/v8/src/x64/assembler-x64-inl.h +12 -11
  416. data/vendor/v8/src/x64/assembler-x64.cc +80 -40
  417. data/vendor/v8/src/x64/assembler-x64.h +67 -17
  418. data/vendor/v8/src/x64/builtins-x64.cc +34 -33
  419. data/vendor/v8/src/x64/code-stubs-x64.cc +636 -377
  420. data/vendor/v8/src/x64/code-stubs-x64.h +14 -48
  421. data/vendor/v8/src/x64/codegen-x64-inl.h +1 -1
  422. data/vendor/v8/src/x64/codegen-x64.cc +158 -136
  423. data/vendor/v8/src/x64/codegen-x64.h +4 -1
  424. data/vendor/v8/src/x64/cpu-x64.cc +7 -5
  425. data/vendor/v8/src/x64/debug-x64.cc +8 -6
  426. data/vendor/v8/src/x64/deoptimizer-x64.cc +195 -20
  427. data/vendor/v8/src/x64/disasm-x64.cc +42 -23
  428. data/vendor/v8/src/x64/frames-x64.cc +1 -1
  429. data/vendor/v8/src/x64/frames-x64.h +2 -2
  430. data/vendor/v8/src/x64/full-codegen-x64.cc +780 -218
  431. data/vendor/v8/src/x64/ic-x64.cc +77 -79
  432. data/vendor/v8/src/x64/jump-target-x64.cc +1 -1
  433. data/vendor/v8/src/x64/lithium-codegen-x64.cc +698 -181
  434. data/vendor/v8/src/x64/lithium-codegen-x64.h +31 -6
  435. data/vendor/v8/src/x64/lithium-x64.cc +136 -54
  436. data/vendor/v8/src/x64/lithium-x64.h +142 -51
  437. data/vendor/v8/src/x64/macro-assembler-x64.cc +456 -187
  438. data/vendor/v8/src/x64/macro-assembler-x64.h +166 -34
  439. data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +44 -28
  440. data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +8 -4
  441. data/vendor/v8/src/x64/register-allocator-x64-inl.h +3 -3
  442. data/vendor/v8/src/x64/register-allocator-x64.cc +12 -8
  443. data/vendor/v8/src/x64/simulator-x64.h +5 -5
  444. data/vendor/v8/src/x64/stub-cache-x64.cc +299 -344
  445. data/vendor/v8/src/x64/virtual-frame-x64.cc +37 -13
  446. data/vendor/v8/src/x64/virtual-frame-x64.h +13 -7
  447. data/vendor/v8/src/zone-inl.h +49 -3
  448. data/vendor/v8/src/zone.cc +42 -41
  449. data/vendor/v8/src/zone.h +37 -34
  450. data/vendor/v8/test/benchmarks/testcfg.py +100 -0
  451. data/vendor/v8/test/cctest/SConscript +5 -4
  452. data/vendor/v8/test/cctest/cctest.h +3 -2
  453. data/vendor/v8/test/cctest/cctest.status +6 -11
  454. data/vendor/v8/test/cctest/test-accessors.cc +3 -3
  455. data/vendor/v8/test/cctest/test-alloc.cc +39 -33
  456. data/vendor/v8/test/cctest/test-api.cc +1092 -205
  457. data/vendor/v8/test/cctest/test-assembler-arm.cc +39 -25
  458. data/vendor/v8/test/cctest/test-assembler-ia32.cc +36 -37
  459. data/vendor/v8/test/cctest/test-assembler-mips.cc +1098 -40
  460. data/vendor/v8/test/cctest/test-assembler-x64.cc +32 -25
  461. data/vendor/v8/test/cctest/test-ast.cc +1 -0
  462. data/vendor/v8/test/cctest/test-circular-queue.cc +8 -5
  463. data/vendor/v8/test/cctest/test-compiler.cc +24 -24
  464. data/vendor/v8/test/cctest/test-cpu-profiler.cc +140 -5
  465. data/vendor/v8/test/cctest/test-dataflow.cc +1 -0
  466. data/vendor/v8/test/cctest/test-debug.cc +136 -77
  467. data/vendor/v8/test/cctest/test-decls.cc +1 -1
  468. data/vendor/v8/test/cctest/test-deoptimization.cc +25 -24
  469. data/vendor/v8/test/cctest/test-disasm-arm.cc +9 -4
  470. data/vendor/v8/test/cctest/test-disasm-ia32.cc +10 -8
  471. data/vendor/v8/test/cctest/test-func-name-inference.cc +10 -4
  472. data/vendor/v8/test/cctest/test-heap-profiler.cc +226 -164
  473. data/vendor/v8/test/cctest/test-heap.cc +240 -217
  474. data/vendor/v8/test/cctest/test-liveedit.cc +1 -0
  475. data/vendor/v8/test/cctest/test-log-stack-tracer.cc +18 -20
  476. data/vendor/v8/test/cctest/test-log.cc +114 -108
  477. data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +247 -177
  478. data/vendor/v8/test/cctest/test-mark-compact.cc +129 -90
  479. data/vendor/v8/test/cctest/test-parsing.cc +15 -14
  480. data/vendor/v8/test/cctest/test-platform-linux.cc +1 -0
  481. data/vendor/v8/test/cctest/test-platform-tls.cc +66 -0
  482. data/vendor/v8/test/cctest/test-platform-win32.cc +1 -0
  483. data/vendor/v8/test/cctest/test-profile-generator.cc +1 -1
  484. data/vendor/v8/test/cctest/test-regexp.cc +53 -41
  485. data/vendor/v8/test/cctest/test-reloc-info.cc +18 -11
  486. data/vendor/v8/test/cctest/test-serialize.cc +44 -43
  487. data/vendor/v8/test/cctest/test-sockets.cc +8 -3
  488. data/vendor/v8/test/cctest/test-spaces.cc +47 -29
  489. data/vendor/v8/test/cctest/test-strings.cc +20 -20
  490. data/vendor/v8/test/cctest/test-thread-termination.cc +8 -3
  491. data/vendor/v8/test/cctest/test-threads.cc +5 -3
  492. data/vendor/v8/test/cctest/test-utils.cc +5 -4
  493. data/vendor/v8/test/cctest/testcfg.py +7 -3
  494. data/vendor/v8/test/es5conform/es5conform.status +2 -77
  495. data/vendor/v8/test/es5conform/testcfg.py +1 -1
  496. data/vendor/v8/test/message/testcfg.py +1 -1
  497. data/vendor/v8/test/mjsunit/accessors-on-global-object.js +3 -3
  498. data/vendor/v8/test/mjsunit/array-concat.js +43 -1
  499. data/vendor/v8/test/mjsunit/array-join.js +25 -0
  500. data/vendor/v8/test/mjsunit/bitops-info.js +7 -1
  501. data/vendor/v8/test/mjsunit/compiler/array-length.js +2 -2
  502. data/vendor/v8/test/mjsunit/compiler/global-accessors.js +47 -0
  503. data/vendor/v8/test/mjsunit/compiler/pic.js +1 -1
  504. data/vendor/v8/test/mjsunit/compiler/regress-loadfield.js +65 -0
  505. data/vendor/v8/test/mjsunit/math-sqrt.js +5 -1
  506. data/vendor/v8/test/mjsunit/mjsunit.js +59 -8
  507. data/vendor/v8/test/mjsunit/mjsunit.status +0 -12
  508. data/vendor/v8/test/mjsunit/mul-exhaustive.js +129 -11
  509. data/vendor/v8/test/mjsunit/negate-zero.js +1 -1
  510. data/vendor/v8/test/mjsunit/object-freeze.js +5 -13
  511. data/vendor/v8/test/mjsunit/object-prevent-extensions.js +9 -50
  512. data/vendor/v8/test/mjsunit/object-seal.js +4 -13
  513. data/vendor/v8/test/mjsunit/override-eval-with-non-function.js +36 -0
  514. data/vendor/v8/test/mjsunit/regress/regress-1145.js +54 -0
  515. data/vendor/v8/test/mjsunit/regress/regress-1172-bis.js +37 -0
  516. data/vendor/v8/test/mjsunit/regress/regress-1181.js +54 -0
  517. data/vendor/v8/test/mjsunit/regress/regress-1207.js +35 -0
  518. data/vendor/v8/test/mjsunit/regress/regress-1209.js +34 -0
  519. data/vendor/v8/test/mjsunit/regress/regress-1210.js +48 -0
  520. data/vendor/v8/test/mjsunit/regress/regress-1213.js +43 -0
  521. data/vendor/v8/test/mjsunit/regress/regress-1218.js +29 -0
  522. data/vendor/v8/test/mjsunit/regress/regress-1229.js +79 -0
  523. data/vendor/v8/test/mjsunit/regress/regress-1233.js +47 -0
  524. data/vendor/v8/test/mjsunit/regress/regress-1236.js +34 -0
  525. data/vendor/v8/test/mjsunit/regress/regress-1237.js +36 -0
  526. data/vendor/v8/test/mjsunit/regress/regress-1240.js +39 -0
  527. data/vendor/v8/test/mjsunit/regress/regress-1257.js +58 -0
  528. data/vendor/v8/test/mjsunit/regress/regress-1278.js +69 -0
  529. data/vendor/v8/test/mjsunit/regress/regress-create-exception.js +1 -0
  530. data/vendor/v8/test/mjsunit/regress/regress-lazy-deopt-reloc.js +52 -0
  531. data/vendor/v8/test/mjsunit/sin-cos.js +15 -10
  532. data/vendor/v8/test/mjsunit/smi-negative-zero.js +2 -2
  533. data/vendor/v8/test/mjsunit/str-to-num.js +1 -1
  534. data/vendor/v8/test/mjsunit/strict-mode.js +435 -0
  535. data/vendor/v8/test/mjsunit/testcfg.py +23 -6
  536. data/vendor/v8/test/mozilla/mozilla.status +0 -2
  537. data/vendor/v8/test/mozilla/testcfg.py +1 -1
  538. data/vendor/v8/test/preparser/empty.js +28 -0
  539. data/vendor/v8/test/preparser/functions-only.js +38 -0
  540. data/vendor/v8/test/preparser/non-alphanum.js +34 -0
  541. data/vendor/v8/test/preparser/symbols-only.js +49 -0
  542. data/vendor/v8/test/preparser/testcfg.py +90 -0
  543. data/vendor/v8/test/sputnik/testcfg.py +1 -1
  544. data/vendor/v8/test/test262/README +16 -0
  545. data/vendor/v8/test/test262/harness-adapt.js +80 -0
  546. data/vendor/v8/test/test262/test262.status +1506 -0
  547. data/vendor/v8/test/test262/testcfg.py +123 -0
  548. data/vendor/v8/tools/freebsd-tick-processor +10 -0
  549. data/vendor/v8/tools/gyp/v8.gyp +8 -33
  550. data/vendor/v8/tools/linux-tick-processor +5 -3
  551. data/vendor/v8/tools/test.py +37 -14
  552. data/vendor/v8/tools/tickprocessor.js +22 -8
  553. data/vendor/v8/tools/visual_studio/v8_base.vcproj +13 -1
  554. data/vendor/v8/tools/visual_studio/v8_base_arm.vcproj +5 -1
  555. data/vendor/v8/tools/visual_studio/v8_base_x64.vcproj +5 -1
  556. data/vendor/v8/tools/visual_studio/x64.vsprops +1 -0
  557. metadata +1495 -1341
  558. data/ext/extconf.rb +0 -22
  559. data/ext/mustang.cpp +0 -58
  560. data/vendor/v8/src/top.h +0 -608
@@ -34,8 +34,6 @@ namespace internal {
34
34
 
35
35
  class ThreadState {
36
36
  public:
37
- // Iterate over in-use states.
38
- static ThreadState* FirstInUse();
39
37
  // Returns NULL after the last one.
40
38
  ThreadState* Next();
41
39
 
@@ -44,8 +42,6 @@ class ThreadState {
44
42
  void LinkInto(List list);
45
43
  void Unlink();
46
44
 
47
- static ThreadState* GetFree();
48
-
49
45
  // Id of thread.
50
46
  void set_id(int id) { id_ = id; }
51
47
  int id() { return id_; }
@@ -59,7 +55,7 @@ class ThreadState {
59
55
  // Get data area for archiving a thread.
60
56
  char* data() { return data_; }
61
57
  private:
62
- ThreadState();
58
+ explicit ThreadState(ThreadManager* thread_manager);
63
59
 
64
60
  void AllocateSpace();
65
61
 
@@ -69,13 +65,9 @@ class ThreadState {
69
65
  ThreadState* next_;
70
66
  ThreadState* previous_;
71
67
 
72
- // In the following two lists there is always at least one object on the list.
73
- // The first object is a flying anchor that is only there to simplify linking
74
- // and unlinking.
75
- // Head of linked list of free states.
76
- static ThreadState* free_anchor_;
77
- // Head of linked list of states in use.
78
- static ThreadState* in_use_anchor_;
68
+ ThreadManager* thread_manager_;
69
+
70
+ friend class ThreadManager;
79
71
  };
80
72
 
81
73
 
@@ -93,35 +85,52 @@ class ThreadVisitor {
93
85
  };
94
86
 
95
87
 
96
- class ThreadManager : public AllStatic {
88
+ class ThreadManager {
97
89
  public:
98
- static void Lock();
99
- static void Unlock();
90
+ void Lock();
91
+ void Unlock();
100
92
 
101
- static void ArchiveThread();
102
- static bool RestoreThread();
103
- static void FreeThreadResources();
104
- static bool IsArchived();
93
+ void ArchiveThread();
94
+ bool RestoreThread();
95
+ void FreeThreadResources();
96
+ bool IsArchived();
105
97
 
106
- static void Iterate(ObjectVisitor* v);
107
- static void IterateArchivedThreads(ThreadVisitor* v);
108
- static bool IsLockedByCurrentThread() { return mutex_owner_.IsSelf(); }
98
+ void Iterate(ObjectVisitor* v);
99
+ void IterateArchivedThreads(ThreadVisitor* v);
100
+ bool IsLockedByCurrentThread() { return mutex_owner_.IsSelf(); }
109
101
 
110
- static int CurrentId();
111
- static void AssignId();
112
- static bool HasId();
102
+ int CurrentId();
113
103
 
114
- static void TerminateExecution(int thread_id);
104
+ void TerminateExecution(int thread_id);
105
+
106
+ // Iterate over in-use states.
107
+ ThreadState* FirstThreadStateInUse();
108
+ ThreadState* GetFreeThreadState();
115
109
 
116
110
  static const int kInvalidId = -1;
117
111
  private:
118
- static void EagerlyArchiveThread();
112
+ ThreadManager();
113
+ ~ThreadManager();
119
114
 
120
- static int last_id_; // V8 threads are identified through an integer.
121
- static Mutex* mutex_;
122
- static ThreadHandle mutex_owner_;
123
- static ThreadHandle lazily_archived_thread_;
124
- static ThreadState* lazily_archived_thread_state_;
115
+ void EagerlyArchiveThread();
116
+
117
+ Mutex* mutex_;
118
+ ThreadHandle mutex_owner_;
119
+ ThreadHandle lazily_archived_thread_;
120
+ ThreadState* lazily_archived_thread_state_;
121
+
122
+ // In the following two lists there is always at least one object on the list.
123
+ // The first object is a flying anchor that is only there to simplify linking
124
+ // and unlinking.
125
+ // Head of linked list of free states.
126
+ ThreadState* free_anchor_;
127
+ // Head of linked list of states in use.
128
+ ThreadState* in_use_anchor_;
129
+
130
+ Isolate* isolate_;
131
+
132
+ friend class Isolate;
133
+ friend class ThreadState;
125
134
  };
126
135
 
127
136
 
@@ -142,14 +151,12 @@ class ContextSwitcher: public Thread {
142
151
  static void PreemptionReceived();
143
152
 
144
153
  private:
145
- explicit ContextSwitcher(int every_n_ms);
154
+ explicit ContextSwitcher(Isolate* isolate, int every_n_ms);
146
155
 
147
156
  void Run();
148
157
 
149
158
  bool keep_going_;
150
159
  int sleep_ms_;
151
-
152
- static ContextSwitcher* singleton_;
153
160
  };
154
161
 
155
162
  } } // namespace v8::internal
@@ -254,51 +254,14 @@ class StringBuilder {
254
254
  };
255
255
 
256
256
 
257
- // Custom memcpy implementation for platforms where the standard version
258
- // may not be good enough.
259
- #if defined(V8_TARGET_ARCH_IA32)
260
-
261
- // The default memcpy on ia32 architectures is generally not as efficient
262
- // as possible. (If any further ia32 platforms are introduced where the
263
- // memcpy function is efficient, exclude them from this branch).
264
-
265
- typedef void (*MemCopyFunction)(void* dest, const void* src, size_t size);
266
-
267
- // Implemented in codegen-<arch>.cc.
268
- MemCopyFunction CreateMemCopyFunction();
269
-
270
- // Copy memory area to disjoint memory area.
271
- static inline void MemCopy(void* dest, const void* src, size_t size) {
272
- static MemCopyFunction memcopy = CreateMemCopyFunction();
273
- (*memcopy)(dest, src, size);
274
- #ifdef DEBUG
275
- CHECK_EQ(0, memcmp(dest, src, size));
276
- #endif
277
- }
278
-
279
- // Limit below which the extra overhead of the MemCopy function is likely
280
- // to outweigh the benefits of faster copying.
281
- static const int kMinComplexMemCopy = 64;
282
-
283
- #else // V8_TARGET_ARCH_IA32
284
-
285
- static inline void MemCopy(void* dest, const void* src, size_t size) {
286
- memcpy(dest, src, size);
287
- }
288
-
289
- static const int kMinComplexMemCopy = 256;
290
-
291
- #endif // V8_TARGET_ARCH_IA32
292
-
293
-
294
257
  // Copy from ASCII/16bit chars to ASCII/16bit chars.
295
258
  template <typename sourcechar, typename sinkchar>
296
259
  static inline void CopyChars(sinkchar* dest, const sourcechar* src, int chars) {
297
260
  sinkchar* limit = dest + chars;
298
261
  #ifdef V8_HOST_CAN_READ_UNALIGNED
299
262
  if (sizeof(*dest) == sizeof(*src)) {
300
- if (chars >= static_cast<int>(kMinComplexMemCopy / sizeof(*dest))) {
301
- MemCopy(dest, src, chars * sizeof(*dest));
263
+ if (chars >= static_cast<int>(OS::kMinComplexMemCopy / sizeof(*dest))) {
264
+ OS::MemCopy(dest, src, chars * sizeof(*dest));
302
265
  return;
303
266
  }
304
267
  // Number of characters in a uintptr_t.
@@ -165,7 +165,7 @@ class Variable: public ZoneObject {
165
165
 
166
166
  // True if the variable is named eval and not known to be shadowed.
167
167
  bool is_possibly_eval() const {
168
- return IsVariable(Factory::eval_symbol()) &&
168
+ return IsVariable(FACTORY->eval_symbol()) &&
169
169
  (mode_ == DYNAMIC || mode_ == DYNAMIC_GLOBAL);
170
170
  }
171
171
 
@@ -33,16 +33,37 @@
33
33
  // NOTE these macros are used by the SCons build script so their names
34
34
  // cannot be changed without changing the SCons build script.
35
35
  #define MAJOR_VERSION 3
36
- #define MINOR_VERSION 1
37
- #define BUILD_NUMBER 6
36
+ #define MINOR_VERSION 2
37
+ #define BUILD_NUMBER 7
38
38
  #define PATCH_LEVEL 0
39
- #define CANDIDATE_VERSION false
39
+ // Use 1 for candidates and 0 otherwise.
40
+ // (Boolean macro values are not supported by all preprocessors.)
41
+ #define IS_CANDIDATE_VERSION 0
40
42
 
41
43
  // Define SONAME to have the SCons build the put a specific SONAME into the
42
44
  // shared library instead the generic SONAME generated from the V8 version
43
45
  // number. This define is mainly used by the SCons build script.
44
46
  #define SONAME ""
45
47
 
48
+ #if IS_CANDIDATE_VERSION
49
+ #define CANDIDATE_STRING " (candidate)"
50
+ #else
51
+ #define CANDIDATE_STRING ""
52
+ #endif
53
+
54
+ #define SX(x) #x
55
+ #define S(x) SX(x)
56
+
57
+ #if PATCH_LEVEL > 0
58
+ #define VERSION_STRING \
59
+ S(MAJOR_VERSION) "." S(MINOR_VERSION) "." S(BUILD_NUMBER) "." \
60
+ S(PATCH_LEVEL) CANDIDATE_STRING
61
+ #else
62
+ #define VERSION_STRING \
63
+ S(MAJOR_VERSION) "." S(MINOR_VERSION) "." S(BUILD_NUMBER) \
64
+ CANDIDATE_STRING
65
+ #endif
66
+
46
67
  namespace v8 {
47
68
  namespace internal {
48
69
 
@@ -50,9 +71,9 @@ int Version::major_ = MAJOR_VERSION;
50
71
  int Version::minor_ = MINOR_VERSION;
51
72
  int Version::build_ = BUILD_NUMBER;
52
73
  int Version::patch_ = PATCH_LEVEL;
53
- bool Version::candidate_ = CANDIDATE_VERSION;
74
+ bool Version::candidate_ = (IS_CANDIDATE_VERSION != 0);
54
75
  const char* Version::soname_ = SONAME;
55
-
76
+ const char* Version::version_string_ = VERSION_STRING;
56
77
 
57
78
  // Calculate the V8 version string.
58
79
  void Version::GetString(Vector<char> str) {
@@ -46,13 +46,17 @@ class Version {
46
46
  // Calculate the SONAME for the V8 shared library.
47
47
  static void GetSONAME(Vector<char> str);
48
48
 
49
+ static const char* GetVersion() { return version_string_; }
50
+
49
51
  private:
52
+ // NOTE: can't make these really const because of test-version.cc.
50
53
  static int major_;
51
54
  static int minor_;
52
55
  static int build_;
53
56
  static int patch_;
54
57
  static bool candidate_;
55
58
  static const char* soname_;
59
+ static const char* version_string_;
56
60
 
57
61
  // In test-version.cc.
58
62
  friend void SetVersion(int major, int minor, int build, int patch,
@@ -82,10 +82,8 @@ void VirtualFrame::Push(Register reg, TypeInfo info) {
82
82
  }
83
83
 
84
84
 
85
- void VirtualFrame::Push(Handle<Object> value) {
86
- FrameElement element =
87
- FrameElement::ConstantElement(value, FrameElement::NOT_SYNCED);
88
- elements_.Add(element);
85
+ bool VirtualFrame::ConstantPoolOverflowed() {
86
+ return FrameElement::ConstantPoolOverflowed();
89
87
  }
90
88
 
91
89
 
@@ -83,8 +83,9 @@ void VirtualFrame::PrepareForReturn() {
83
83
  VirtualFrame::RegisterAllocationScope::RegisterAllocationScope(
84
84
  CodeGenerator* cgen)
85
85
  : cgen_(cgen),
86
- old_is_spilled_(SpilledScope::is_spilled_) {
87
- SpilledScope::is_spilled_ = false;
86
+ old_is_spilled_(
87
+ Isolate::Current()->is_virtual_frame_in_spilled_scope()) {
88
+ Isolate::Current()->set_is_virtual_frame_in_spilled_scope(false);
88
89
  if (old_is_spilled_) {
89
90
  VirtualFrame* frame = cgen->frame();
90
91
  if (frame != NULL) {
@@ -95,7 +96,7 @@ VirtualFrame::RegisterAllocationScope::RegisterAllocationScope(
95
96
 
96
97
 
97
98
  VirtualFrame::RegisterAllocationScope::~RegisterAllocationScope() {
98
- SpilledScope::is_spilled_ = old_is_spilled_;
99
+ Isolate::Current()->set_is_virtual_frame_in_spilled_scope(old_is_spilled_);
99
100
  if (old_is_spilled_) {
100
101
  VirtualFrame* frame = cgen_->frame();
101
102
  if (frame != NULL) {
@@ -106,7 +107,7 @@ VirtualFrame::RegisterAllocationScope::~RegisterAllocationScope() {
106
107
 
107
108
 
108
109
  CodeGenerator* VirtualFrame::cgen() const {
109
- return CodeGeneratorScope::Current();
110
+ return CodeGeneratorScope::Current(Isolate::Current());
110
111
  }
111
112
 
112
113
 
@@ -58,25 +58,27 @@ inline const char* StateToString(StateTag state) {
58
58
  }
59
59
  }
60
60
 
61
- VMState::VMState(StateTag tag) : previous_tag_(Top::current_vm_state()) {
61
+
62
+ VMState::VMState(Isolate* isolate, StateTag tag)
63
+ : isolate_(isolate), previous_tag_(isolate->current_vm_state()) {
62
64
  #ifdef ENABLE_LOGGING_AND_PROFILING
63
65
  if (FLAG_log_state_changes) {
64
- LOG(UncheckedStringEvent("Entering", StateToString(tag)));
65
- LOG(UncheckedStringEvent("From", StateToString(previous_tag_)));
66
+ LOG(isolate, UncheckedStringEvent("Entering", StateToString(tag)));
67
+ LOG(isolate, UncheckedStringEvent("From", StateToString(previous_tag_)));
66
68
  }
67
69
  #endif
68
70
 
69
- Top::SetCurrentVMState(tag);
71
+ isolate_->SetCurrentVMState(tag);
70
72
 
71
73
  #ifdef ENABLE_HEAP_PROTECTION
72
74
  if (FLAG_protect_heap) {
73
75
  if (tag == EXTERNAL) {
74
76
  // We are leaving V8.
75
77
  ASSERT(previous_tag_ != EXTERNAL);
76
- Heap::Protect();
78
+ isolate_->heap()->Protect();
77
79
  } else if (previous_tag_ = EXTERNAL) {
78
80
  // We are entering V8.
79
- Heap::Unprotect();
81
+ isolate_->heap()->Unprotect();
80
82
  }
81
83
  }
82
84
  #endif
@@ -86,27 +88,29 @@ VMState::VMState(StateTag tag) : previous_tag_(Top::current_vm_state()) {
86
88
  VMState::~VMState() {
87
89
  #ifdef ENABLE_LOGGING_AND_PROFILING
88
90
  if (FLAG_log_state_changes) {
89
- LOG(UncheckedStringEvent("Leaving",
90
- StateToString(Top::current_vm_state())));
91
- LOG(UncheckedStringEvent("To", StateToString(previous_tag_)));
91
+ LOG(isolate_,
92
+ UncheckedStringEvent("Leaving",
93
+ StateToString(isolate_->current_vm_state())));
94
+ LOG(isolate_,
95
+ UncheckedStringEvent("To", StateToString(previous_tag_)));
92
96
  }
93
97
  #endif // ENABLE_LOGGING_AND_PROFILING
94
98
 
95
99
  #ifdef ENABLE_HEAP_PROTECTION
96
- StateTag tag = Top::current_vm_state();
100
+ StateTag tag = isolate_->current_vm_state();
97
101
  #endif
98
102
 
99
- Top::SetCurrentVMState(previous_tag_);
103
+ isolate_->SetCurrentVMState(previous_tag_);
100
104
 
101
105
  #ifdef ENABLE_HEAP_PROTECTION
102
106
  if (FLAG_protect_heap) {
103
107
  if (tag == EXTERNAL) {
104
108
  // We are reentering V8.
105
109
  ASSERT(previous_tag_ != EXTERNAL);
106
- Heap::Unprotect();
110
+ isolate_->heap()->Unprotect();
107
111
  } else if (previous_tag_ == EXTERNAL) {
108
112
  // We are leaving V8.
109
- Heap::Protect();
113
+ isolate_->heap()->Protect();
110
114
  }
111
115
  }
112
116
  #endif // ENABLE_HEAP_PROTECTION
@@ -117,13 +121,13 @@ VMState::~VMState() {
117
121
 
118
122
  #ifdef ENABLE_LOGGING_AND_PROFILING
119
123
 
120
- ExternalCallbackScope::ExternalCallbackScope(Address callback)
121
- : previous_callback_(Top::external_callback()) {
122
- Top::set_external_callback(callback);
124
+ ExternalCallbackScope::ExternalCallbackScope(Isolate* isolate, Address callback)
125
+ : isolate_(isolate), previous_callback_(isolate->external_callback()) {
126
+ isolate_->set_external_callback(callback);
123
127
  }
124
128
 
125
129
  ExternalCallbackScope::~ExternalCallbackScope() {
126
- Top::set_external_callback(previous_callback_);
130
+ isolate_->set_external_callback(previous_callback_);
127
131
  }
128
132
 
129
133
  #endif // ENABLE_LOGGING_AND_PROFILING
@@ -28,7 +28,7 @@
28
28
  #ifndef V8_VM_STATE_H_
29
29
  #define V8_VM_STATE_H_
30
30
 
31
- #include "top.h"
31
+ #include "isolate.h"
32
32
 
33
33
  namespace v8 {
34
34
  namespace internal {
@@ -36,15 +36,16 @@ namespace internal {
36
36
  class VMState BASE_EMBEDDED {
37
37
  #ifdef ENABLE_VMSTATE_TRACKING
38
38
  public:
39
- inline explicit VMState(StateTag tag);
39
+ inline VMState(Isolate* isolate, StateTag tag);
40
40
  inline ~VMState();
41
41
 
42
42
  private:
43
+ Isolate* isolate_;
43
44
  StateTag previous_tag_;
44
45
 
45
46
  #else
46
47
  public:
47
- explicit VMState(StateTag state) {}
48
+ VMState(Isolate* isolate, StateTag state) {}
48
49
  #endif
49
50
  };
50
51
 
@@ -52,13 +53,14 @@ class VMState BASE_EMBEDDED {
52
53
  class ExternalCallbackScope BASE_EMBEDDED {
53
54
  #ifdef ENABLE_LOGGING_AND_PROFILING
54
55
  public:
55
- inline explicit ExternalCallbackScope(Address callback);
56
+ inline ExternalCallbackScope(Isolate* isolate, Address callback);
56
57
  inline ~ExternalCallbackScope();
57
58
  private:
59
+ Isolate* isolate_;
58
60
  Address previous_callback_;
59
61
  #else
60
62
  public:
61
- explicit ExternalCallbackScope(Address callback) {}
63
+ ExternalCallbackScope(Isolate* isolate, Address callback) {}
62
64
  #endif
63
65
  };
64
66
 
@@ -66,6 +66,7 @@
66
66
  #endif // __MINGW32__
67
67
  #ifndef __MINGW32__
68
68
  #include <dbghelp.h> // For SymLoadModule64 and al.
69
+ #include <errno.h> // For STRUNCATE
69
70
  #endif // __MINGW32__
70
71
  #include <limits.h> // For INT_MAX and al.
71
72
  #include <tlhelp32.h> // For Module32First and al.