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
@@ -1,4 +1,4 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -37,57 +37,9 @@ namespace v8 {
37
37
  namespace internal {
38
38
 
39
39
 
40
- StackFrame::Type StackFrame::ComputeType(State* state) {
41
- ASSERT(state->fp != NULL);
42
- if (StandardFrame::IsArgumentsAdaptorFrame(state->fp)) {
43
- return ARGUMENTS_ADAPTOR;
44
- }
45
- // The marker and function offsets overlap. If the marker isn't a
46
- // smi then the frame is a JavaScript frame -- and the marker is
47
- // really the function.
48
- const int offset = StandardFrameConstants::kMarkerOffset;
49
- Object* marker = Memory::Object_at(state->fp + offset);
50
- if (!marker->IsSmi()) return JAVA_SCRIPT;
51
- return static_cast<StackFrame::Type>(Smi::cast(marker)->value());
52
- }
53
-
54
-
55
40
  Address ExitFrame::ComputeStackPointer(Address fp) {
56
- Address sp = fp + ExitFrameConstants::kSPDisplacement;
57
- const int offset = ExitFrameConstants::kCodeOffset;
58
- Object* code = Memory::Object_at(fp + offset);
59
- bool is_debug_exit = code->IsSmi();
60
- if (is_debug_exit) {
61
- sp -= kNumJSCallerSaved * kPointerSize;
62
- }
63
- return sp;
64
- }
65
-
66
-
67
- void ExitFrame::Iterate(ObjectVisitor* v) const {
68
- // Do nothing
69
- }
70
-
71
-
72
- int JavaScriptFrame::GetProvidedParametersCount() const {
73
- return ComputeParametersCount();
74
- }
75
-
76
-
77
- Address JavaScriptFrame::GetCallerStackPointer() const {
78
41
  UNIMPLEMENTED_MIPS();
79
- return static_cast<Address>(NULL); // UNIMPLEMENTED RETURN
80
- }
81
-
82
-
83
- Address ArgumentsAdaptorFrame::GetCallerStackPointer() const {
84
- UNIMPLEMENTED_MIPS();
85
- return static_cast<Address>(NULL); // UNIMPLEMENTED RETURN
86
- }
87
-
88
-
89
- Address InternalFrame::GetCallerStackPointer() const {
90
- return fp() + StandardFrameConstants::kCallerSPOffset;
42
+ return fp;
91
43
  }
92
44
 
93
45
 
@@ -1,4 +1,4 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -40,16 +40,17 @@ namespace internal {
40
40
  static const int kNumRegs = 32;
41
41
 
42
42
  static const RegList kJSCallerSaved =
43
+ 1 << 2 | // v0
43
44
  1 << 4 | // a0
44
45
  1 << 5 | // a1
45
46
  1 << 6 | // a2
46
47
  1 << 7; // a3
47
48
 
48
- static const int kNumJSCallerSaved = 4;
49
+ static const int kNumJSCallerSaved = 5;
49
50
 
50
51
 
51
52
  // Return the code of the n-th caller-saved register available to JavaScript
52
- // e.g. JSCallerSavedReg(0) returns r0.code() == 0.
53
+ // e.g. JSCallerSavedReg(0) returns a0.code() == 4.
53
54
  int JSCallerSavedCode(int n);
54
55
 
55
56
 
@@ -64,6 +65,18 @@ static const RegList kCalleeSaved =
64
65
  static const int kNumCalleeSaved = 11;
65
66
 
66
67
 
68
+ // Number of registers for which space is reserved in safepoints. Must be a
69
+ // multiple of 8.
70
+ // TODO(mips): Only 8 registers may actually be sufficient. Revisit.
71
+ static const int kNumSafepointRegisters = 16;
72
+
73
+ // Define the list of registers actually saved at safepoints.
74
+ // Note that the number of saved registers may be smaller than the reserved
75
+ // space, i.e. kNumSafepointSavedRegisters <= kNumSafepointRegisters.
76
+ static const RegList kSafepointSavedRegisters = kJSCallerSaved | kCalleeSaved;
77
+ static const int kNumSafepointSavedRegisters =
78
+ kNumJSCallerSaved + kNumCalleeSaved;
79
+
67
80
  typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved];
68
81
 
69
82
 
@@ -88,15 +101,14 @@ class EntryFrameConstants : public AllStatic {
88
101
 
89
102
  class ExitFrameConstants : public AllStatic {
90
103
  public:
91
- // Exit frames have a debug marker on the stack.
92
- static const int kSPDisplacement = -1 * kPointerSize;
93
-
94
- // The debug marker is just above the frame pointer.
95
104
  static const int kDebugMarkOffset = -1 * kPointerSize;
96
105
  // Must be the same as kDebugMarkOffset. Alias introduced when upgrading.
97
106
  static const int kCodeOffset = -1 * kPointerSize;
107
+ static const int kSPOffset = -1 * kPointerSize;
98
108
 
99
- static const int kSavedRegistersOffset = 0 * kPointerSize;
109
+ // TODO(mips): Use a patched sp value on the stack instead.
110
+ // A marker of 0 indicates that double registers are saved.
111
+ static const int kMarkerOffset = -2 * kPointerSize;
100
112
 
101
113
  // The caller fields are below the frame pointer on the stack.
102
114
  static const int kCallerFPOffset = +0 * kPointerSize;
@@ -126,6 +138,8 @@ class StandardFrameConstants : public AllStatic {
126
138
  static const int kCArgsSlotsSize = 4 * kPointerSize;
127
139
  // JS argument slots size.
128
140
  static const int kJSArgsSlotsSize = 0 * kPointerSize;
141
+ // Assembly builtins argument slots size.
142
+ static const int kBArgsSlotsSize = 0 * kPointerSize;
129
143
  };
130
144
 
131
145
 
@@ -133,7 +147,7 @@ class JavaScriptFrameConstants : public AllStatic {
133
147
  public:
134
148
  // FP-relative.
135
149
  static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset;
136
- static const int kSavedRegistersOffset = +2 * kPointerSize;
150
+ static const int kLastParameterOffset = +2 * kPointerSize;
137
151
  static const int kFunctionOffset = StandardFrameConstants::kMarkerOffset;
138
152
 
139
153
  // Caller SP-relative.
@@ -159,6 +173,7 @@ inline Object* JavaScriptFrame::function_slot_object() const {
159
173
  return Memory::Object_at(fp() + offset);
160
174
  }
161
175
 
176
+
162
177
  } } // namespace v8::internal
163
178
 
164
179
  #endif
@@ -1,4 +1,4 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
1
+ // Copyright 2011 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -29,18 +29,55 @@
29
29
 
30
30
  #if defined(V8_TARGET_ARCH_MIPS)
31
31
 
32
+ // Note on Mips implementation:
33
+ //
34
+ // The result_register() for mips is the 'v0' register, which is defined
35
+ // by the ABI to contain function return values. However, the first
36
+ // parameter to a function is defined to be 'a0'. So there are many
37
+ // places where we have to move a previous result in v0 to a0 for the
38
+ // next call: mov(a0, v0). This is not needed on the other architectures.
39
+
40
+ #include "code-stubs.h"
32
41
  #include "codegen-inl.h"
33
42
  #include "compiler.h"
34
43
  #include "debug.h"
35
44
  #include "full-codegen.h"
36
45
  #include "parser.h"
46
+ #include "scopes.h"
47
+ #include "stub-cache.h"
48
+
49
+ #include "mips/code-stubs-mips.h"
37
50
 
38
51
  namespace v8 {
39
52
  namespace internal {
40
53
 
41
54
  #define __ ACCESS_MASM(masm_)
42
55
 
43
- void FullCodeGenerator::Generate(CompilationInfo* info, Mode mode) {
56
+ // Generate code for a JS function. On entry to the function the receiver
57
+ // and arguments have been pushed on the stack left to right. The actual
58
+ // argument count matches the formal parameter count expected by the
59
+ // function.
60
+ //
61
+ // The live registers are:
62
+ // o a1: the JS function object being called (ie, ourselves)
63
+ // o cp: our context
64
+ // o fp: our caller's frame pointer
65
+ // o sp: stack pointer
66
+ // o ra: return address
67
+ //
68
+ // The function builds a JS frame. Please see JavaScriptFrameConstants in
69
+ // frames-mips.h for its layout.
70
+ void FullCodeGenerator::Generate(CompilationInfo* info) {
71
+ UNIMPLEMENTED_MIPS();
72
+ }
73
+
74
+
75
+ void FullCodeGenerator::ClearAccumulator() {
76
+ UNIMPLEMENTED_MIPS();
77
+ }
78
+
79
+
80
+ void FullCodeGenerator::EmitStackCheck(IterationStatement* stmt) {
44
81
  UNIMPLEMENTED_MIPS();
45
82
  }
46
83
 
@@ -50,47 +87,165 @@ void FullCodeGenerator::EmitReturnSequence() {
50
87
  }
51
88
 
52
89
 
53
- void FullCodeGenerator::Apply(Expression::Context context, Register reg) {
90
+ void FullCodeGenerator::EffectContext::Plug(Slot* slot) const {
91
+ UNIMPLEMENTED_MIPS();
92
+ }
93
+
94
+
95
+ void FullCodeGenerator::AccumulatorValueContext::Plug(Slot* slot) const {
96
+ UNIMPLEMENTED_MIPS();
97
+ }
98
+
99
+
100
+ void FullCodeGenerator::StackValueContext::Plug(Slot* slot) const {
101
+ UNIMPLEMENTED_MIPS();
102
+ }
103
+
104
+
105
+ void FullCodeGenerator::TestContext::Plug(Slot* slot) const {
106
+ UNIMPLEMENTED_MIPS();
107
+ }
108
+
109
+
110
+ void FullCodeGenerator::EffectContext::Plug(Heap::RootListIndex index) const {
111
+ UNIMPLEMENTED_MIPS();
112
+ }
113
+
114
+
115
+ void FullCodeGenerator::AccumulatorValueContext::Plug(
116
+ Heap::RootListIndex index) const {
117
+ UNIMPLEMENTED_MIPS();
118
+ }
119
+
120
+
121
+ void FullCodeGenerator::StackValueContext::Plug(
122
+ Heap::RootListIndex index) const {
123
+ UNIMPLEMENTED_MIPS();
124
+ }
125
+
126
+
127
+ void FullCodeGenerator::TestContext::Plug(Heap::RootListIndex index) const {
128
+ UNIMPLEMENTED_MIPS();
129
+ }
130
+
131
+
132
+ void FullCodeGenerator::EffectContext::Plug(Handle<Object> lit) const {
133
+ UNIMPLEMENTED_MIPS();
134
+ }
135
+
136
+
137
+ void FullCodeGenerator::AccumulatorValueContext::Plug(
138
+ Handle<Object> lit) const {
139
+ UNIMPLEMENTED_MIPS();
140
+ }
141
+
142
+
143
+ void FullCodeGenerator::StackValueContext::Plug(Handle<Object> lit) const {
144
+ UNIMPLEMENTED_MIPS();
145
+ }
146
+
147
+
148
+ void FullCodeGenerator::TestContext::Plug(Handle<Object> lit) const {
149
+ UNIMPLEMENTED_MIPS();
150
+ }
151
+
152
+
153
+ void FullCodeGenerator::EffectContext::DropAndPlug(int count,
154
+ Register reg) const {
155
+ UNIMPLEMENTED_MIPS();
156
+ }
157
+
158
+
159
+ void FullCodeGenerator::AccumulatorValueContext::DropAndPlug(
160
+ int count,
161
+ Register reg) const {
162
+ UNIMPLEMENTED_MIPS();
163
+ }
164
+
165
+
166
+ void FullCodeGenerator::StackValueContext::DropAndPlug(int count,
167
+ Register reg) const {
168
+ UNIMPLEMENTED_MIPS();
169
+ }
170
+
171
+
172
+ void FullCodeGenerator::TestContext::DropAndPlug(int count,
173
+ Register reg) const {
174
+ UNIMPLEMENTED_MIPS();
175
+ }
176
+
177
+
178
+ void FullCodeGenerator::EffectContext::Plug(Label* materialize_true,
179
+ Label* materialize_false) const {
180
+ UNIMPLEMENTED_MIPS();
181
+ }
182
+
183
+
184
+ void FullCodeGenerator::AccumulatorValueContext::Plug(
185
+ Label* materialize_true,
186
+ Label* materialize_false) const {
54
187
  UNIMPLEMENTED_MIPS();
55
188
  }
56
189
 
57
190
 
58
- void FullCodeGenerator::Apply(Expression::Context context, Slot* slot) {
191
+ void FullCodeGenerator::StackValueContext::Plug(
192
+ Label* materialize_true,
193
+ Label* materialize_false) const {
59
194
  UNIMPLEMENTED_MIPS();
60
195
  }
61
196
 
62
- void FullCodeGenerator::Apply(Expression::Context context, Literal* lit) {
197
+
198
+ void FullCodeGenerator::TestContext::Plug(Label* materialize_true,
199
+ Label* materialize_false) const {
200
+ UNIMPLEMENTED_MIPS();
201
+ }
202
+
203
+
204
+ void FullCodeGenerator::EffectContext::Plug(bool flag) const {
63
205
  UNIMPLEMENTED_MIPS();
64
206
  }
65
207
 
66
208
 
67
- void FullCodeGenerator::ApplyTOS(Expression::Context context) {
209
+ void FullCodeGenerator::AccumulatorValueContext::Plug(bool flag) const {
68
210
  UNIMPLEMENTED_MIPS();
69
211
  }
70
212
 
71
213
 
72
- void FullCodeGenerator::DropAndApply(int count,
73
- Expression::Context context,
74
- Register reg) {
214
+ void FullCodeGenerator::StackValueContext::Plug(bool flag) const {
75
215
  UNIMPLEMENTED_MIPS();
76
216
  }
77
217
 
78
218
 
79
- void FullCodeGenerator::Apply(Expression::Context context,
80
- Label* materialize_true,
81
- Label* materialize_false) {
219
+ void FullCodeGenerator::TestContext::Plug(bool flag) const {
82
220
  UNIMPLEMENTED_MIPS();
83
221
  }
84
222
 
85
223
 
86
- void FullCodeGenerator::DoTest(Expression::Context context) {
224
+ void FullCodeGenerator::DoTest(Label* if_true,
225
+ Label* if_false,
226
+ Label* fall_through) {
227
+ UNIMPLEMENTED_MIPS();
228
+ }
229
+
230
+
231
+ // Original prototype for mips, needs arch-indep change. Leave out for now.
232
+ // void FullCodeGenerator::Split(Condition cc,
233
+ // Register lhs,
234
+ // const Operand& rhs,
235
+ // Label* if_true,
236
+ // Label* if_false,
237
+ // Label* fall_through) {
238
+ void FullCodeGenerator::Split(Condition cc,
239
+ Label* if_true,
240
+ Label* if_false,
241
+ Label* fall_through) {
87
242
  UNIMPLEMENTED_MIPS();
88
243
  }
89
244
 
90
245
 
91
246
  MemOperand FullCodeGenerator::EmitSlotSearch(Slot* slot, Register scratch) {
92
247
  UNIMPLEMENTED_MIPS();
93
- return MemOperand(zero_reg, 0); // UNIMPLEMENTED RETURN
248
+ return MemOperand(zero_reg, 0);
94
249
  }
95
250
 
96
251
 
@@ -99,6 +254,14 @@ void FullCodeGenerator::Move(Register destination, Slot* source) {
99
254
  }
100
255
 
101
256
 
257
+ void FullCodeGenerator::PrepareForBailoutBeforeSplit(State state,
258
+ bool should_normalize,
259
+ Label* if_true,
260
+ Label* if_false) {
261
+ UNIMPLEMENTED_MIPS();
262
+ }
263
+
264
+
102
265
  void FullCodeGenerator::Move(Slot* dst,
103
266
  Register src,
104
267
  Register scratch1,
@@ -107,6 +270,13 @@ void FullCodeGenerator::Move(Slot* dst,
107
270
  }
108
271
 
109
272
 
273
+ void FullCodeGenerator::EmitDeclaration(Variable* variable,
274
+ Variable::Mode mode,
275
+ FunctionLiteral* function) {
276
+ UNIMPLEMENTED_MIPS();
277
+ }
278
+
279
+
110
280
  void FullCodeGenerator::VisitDeclaration(Declaration* decl) {
111
281
  UNIMPLEMENTED_MIPS();
112
282
  }
@@ -117,7 +287,18 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
117
287
  }
118
288
 
119
289
 
120
- void FullCodeGenerator::VisitFunctionLiteral(FunctionLiteral* expr) {
290
+ void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) {
291
+ UNIMPLEMENTED_MIPS();
292
+ }
293
+
294
+
295
+ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
296
+ UNIMPLEMENTED_MIPS();
297
+ }
298
+
299
+
300
+ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
301
+ bool pretenure) {
121
302
  UNIMPLEMENTED_MIPS();
122
303
  }
123
304
 
@@ -127,8 +308,32 @@ void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) {
127
308
  }
128
309
 
129
310
 
130
- void FullCodeGenerator::EmitVariableLoad(Variable* var,
131
- Expression::Context context) {
311
+ MemOperand FullCodeGenerator::ContextSlotOperandCheckExtensions(
312
+ Slot* slot,
313
+ Label* slow) {
314
+ UNIMPLEMENTED_MIPS();
315
+ return MemOperand(zero_reg, 0);
316
+ }
317
+
318
+
319
+ void FullCodeGenerator::EmitDynamicLoadFromSlotFastCase(
320
+ Slot* slot,
321
+ TypeofState typeof_state,
322
+ Label* slow,
323
+ Label* done) {
324
+ UNIMPLEMENTED_MIPS();
325
+ }
326
+
327
+
328
+ void FullCodeGenerator::EmitLoadGlobalSlotCheckExtensions(
329
+ Slot* slot,
330
+ TypeofState typeof_state,
331
+ Label* slow) {
332
+ UNIMPLEMENTED_MIPS();
333
+ }
334
+
335
+
336
+ void FullCodeGenerator::EmitVariableLoad(Variable* var) {
132
337
  UNIMPLEMENTED_MIPS();
133
338
  }
134
339
 
@@ -163,14 +368,28 @@ void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) {
163
368
  }
164
369
 
165
370
 
371
+ void FullCodeGenerator::EmitInlineSmiBinaryOp(Expression* expr,
372
+ Token::Value op,
373
+ OverwriteMode mode,
374
+ Expression* left,
375
+ Expression* right) {
376
+ UNIMPLEMENTED_MIPS();
377
+ }
378
+
379
+
166
380
  void FullCodeGenerator::EmitBinaryOp(Token::Value op,
167
- Expression::Context context) {
381
+ OverwriteMode mode) {
382
+ UNIMPLEMENTED_MIPS();
383
+ }
384
+
385
+
386
+ void FullCodeGenerator::EmitAssignment(Expression* expr, int bailout_ast_id) {
168
387
  UNIMPLEMENTED_MIPS();
169
388
  }
170
389
 
171
390
 
172
391
  void FullCodeGenerator::EmitVariableAssignment(Variable* var,
173
- Expression::Context context) {
392
+ Token::Value op) {
174
393
  UNIMPLEMENTED_MIPS();
175
394
  }
176
395
 
@@ -189,13 +408,21 @@ void FullCodeGenerator::VisitProperty(Property* expr) {
189
408
  UNIMPLEMENTED_MIPS();
190
409
  }
191
410
 
411
+
192
412
  void FullCodeGenerator::EmitCallWithIC(Call* expr,
193
- Handle<Object> ignored,
413
+ Handle<Object> name,
194
414
  RelocInfo::Mode mode) {
195
415
  UNIMPLEMENTED_MIPS();
196
416
  }
197
417
 
198
418
 
419
+ void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr,
420
+ Expression* key,
421
+ RelocInfo::Mode mode) {
422
+ UNIMPLEMENTED_MIPS();
423
+ }
424
+
425
+
199
426
  void FullCodeGenerator::EmitCallWithStub(Call* expr) {
200
427
  UNIMPLEMENTED_MIPS();
201
428
  }
@@ -211,6 +438,202 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) {
211
438
  }
212
439
 
213
440
 
441
+ void FullCodeGenerator::EmitIsSmi(ZoneList<Expression*>* args) {
442
+ UNIMPLEMENTED_MIPS();
443
+ }
444
+
445
+
446
+ void FullCodeGenerator::EmitIsNonNegativeSmi(ZoneList<Expression*>* args) {
447
+ UNIMPLEMENTED_MIPS();
448
+ }
449
+
450
+
451
+ void FullCodeGenerator::EmitIsObject(ZoneList<Expression*>* args) {
452
+ UNIMPLEMENTED_MIPS();
453
+ }
454
+
455
+
456
+ void FullCodeGenerator::EmitIsSpecObject(ZoneList<Expression*>* args) {
457
+ UNIMPLEMENTED_MIPS();
458
+ }
459
+
460
+
461
+ void FullCodeGenerator::EmitIsUndetectableObject(ZoneList<Expression*>* args) {
462
+ UNIMPLEMENTED_MIPS();
463
+ }
464
+
465
+
466
+ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
467
+ ZoneList<Expression*>* args) {
468
+ UNIMPLEMENTED_MIPS();
469
+ }
470
+
471
+
472
+ void FullCodeGenerator::EmitIsFunction(ZoneList<Expression*>* args) {
473
+ UNIMPLEMENTED_MIPS();
474
+ }
475
+
476
+
477
+ void FullCodeGenerator::EmitIsArray(ZoneList<Expression*>* args) {
478
+ UNIMPLEMENTED_MIPS();
479
+ }
480
+
481
+
482
+ void FullCodeGenerator::EmitIsRegExp(ZoneList<Expression*>* args) {
483
+ UNIMPLEMENTED_MIPS();
484
+ }
485
+
486
+
487
+ void FullCodeGenerator::EmitIsConstructCall(ZoneList<Expression*>* args) {
488
+ UNIMPLEMENTED_MIPS();
489
+ }
490
+
491
+
492
+ void FullCodeGenerator::EmitObjectEquals(ZoneList<Expression*>* args) {
493
+ UNIMPLEMENTED_MIPS();
494
+ }
495
+
496
+
497
+ void FullCodeGenerator::EmitArguments(ZoneList<Expression*>* args) {
498
+ UNIMPLEMENTED_MIPS();
499
+ }
500
+
501
+
502
+ void FullCodeGenerator::EmitArgumentsLength(ZoneList<Expression*>* args) {
503
+ UNIMPLEMENTED_MIPS();
504
+ }
505
+
506
+
507
+ void FullCodeGenerator::EmitClassOf(ZoneList<Expression*>* args) {
508
+ UNIMPLEMENTED_MIPS();
509
+ }
510
+
511
+
512
+ void FullCodeGenerator::EmitLog(ZoneList<Expression*>* args) {
513
+ UNIMPLEMENTED_MIPS();
514
+ }
515
+
516
+
517
+ void FullCodeGenerator::EmitRandomHeapNumber(ZoneList<Expression*>* args) {
518
+ UNIMPLEMENTED_MIPS();
519
+ }
520
+
521
+
522
+ void FullCodeGenerator::EmitSubString(ZoneList<Expression*>* args) {
523
+ UNIMPLEMENTED_MIPS();
524
+ }
525
+
526
+
527
+ void FullCodeGenerator::EmitRegExpExec(ZoneList<Expression*>* args) {
528
+ UNIMPLEMENTED_MIPS();
529
+ }
530
+
531
+
532
+ void FullCodeGenerator::EmitValueOf(ZoneList<Expression*>* args) {
533
+ UNIMPLEMENTED_MIPS();
534
+ }
535
+
536
+
537
+ void FullCodeGenerator::EmitMathPow(ZoneList<Expression*>* args) {
538
+ UNIMPLEMENTED_MIPS();
539
+ }
540
+
541
+
542
+ void FullCodeGenerator::EmitSetValueOf(ZoneList<Expression*>* args) {
543
+ UNIMPLEMENTED_MIPS();
544
+ }
545
+
546
+
547
+ void FullCodeGenerator::EmitNumberToString(ZoneList<Expression*>* args) {
548
+ UNIMPLEMENTED_MIPS();
549
+ }
550
+
551
+
552
+ void FullCodeGenerator::EmitStringCharFromCode(ZoneList<Expression*>* args) {
553
+ UNIMPLEMENTED_MIPS();
554
+ }
555
+
556
+
557
+ void FullCodeGenerator::EmitStringCharCodeAt(ZoneList<Expression*>* args) {
558
+ UNIMPLEMENTED_MIPS();
559
+ }
560
+
561
+
562
+ void FullCodeGenerator::EmitStringCharAt(ZoneList<Expression*>* args) {
563
+ UNIMPLEMENTED_MIPS();
564
+ }
565
+
566
+
567
+ void FullCodeGenerator::EmitStringAdd(ZoneList<Expression*>* args) {
568
+ UNIMPLEMENTED_MIPS();
569
+ }
570
+
571
+
572
+ void FullCodeGenerator::EmitStringCompare(ZoneList<Expression*>* args) {
573
+ UNIMPLEMENTED_MIPS();
574
+ }
575
+
576
+
577
+ void FullCodeGenerator::EmitMathSin(ZoneList<Expression*>* args) {
578
+ UNIMPLEMENTED_MIPS();
579
+ }
580
+
581
+
582
+ void FullCodeGenerator::EmitMathCos(ZoneList<Expression*>* args) {
583
+ UNIMPLEMENTED_MIPS();
584
+ }
585
+
586
+
587
+ void FullCodeGenerator::EmitMathSqrt(ZoneList<Expression*>* args) {
588
+ UNIMPLEMENTED_MIPS();
589
+ }
590
+
591
+
592
+ void FullCodeGenerator::EmitMathLog(ZoneList<Expression*>* args) {
593
+ UNIMPLEMENTED_MIPS();
594
+ }
595
+
596
+
597
+ void FullCodeGenerator::EmitCallFunction(ZoneList<Expression*>* args) {
598
+ UNIMPLEMENTED_MIPS();
599
+ }
600
+
601
+
602
+ void FullCodeGenerator::EmitRegExpConstructResult(ZoneList<Expression*>* args) {
603
+ UNIMPLEMENTED_MIPS();
604
+ }
605
+
606
+
607
+ void FullCodeGenerator::EmitSwapElements(ZoneList<Expression*>* args) {
608
+ UNIMPLEMENTED_MIPS();
609
+ }
610
+
611
+
612
+ void FullCodeGenerator::EmitGetFromCache(ZoneList<Expression*>* args) {
613
+ UNIMPLEMENTED_MIPS();
614
+ }
615
+
616
+
617
+ void FullCodeGenerator::EmitIsRegExpEquivalent(ZoneList<Expression*>* args) {
618
+ UNIMPLEMENTED_MIPS();
619
+ }
620
+
621
+
622
+ void FullCodeGenerator::EmitHasCachedArrayIndex(ZoneList<Expression*>* args) {
623
+ UNIMPLEMENTED_MIPS();
624
+ }
625
+
626
+
627
+ void FullCodeGenerator::EmitGetCachedArrayIndex(ZoneList<Expression*>* args) {
628
+ UNIMPLEMENTED_MIPS();
629
+ }
630
+
631
+
632
+ void FullCodeGenerator::EmitFastAsciiArrayJoin(ZoneList<Expression*>* args) {
633
+ UNIMPLEMENTED_MIPS();
634
+ }
635
+
636
+
214
637
  void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) {
215
638
  UNIMPLEMENTED_MIPS();
216
639
  }
@@ -226,25 +649,52 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
226
649
  }
227
650
 
228
651
 
229
- void FullCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
652
+ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
230
653
  UNIMPLEMENTED_MIPS();
231
654
  }
232
655
 
233
656
 
657
+ bool FullCodeGenerator::TryLiteralCompare(Token::Value op,
658
+ Expression* left,
659
+ Expression* right,
660
+ Label* if_true,
661
+ Label* if_false,
662
+ Label* fall_through) {
663
+ UNIMPLEMENTED_MIPS();
664
+ return false;
665
+ }
666
+
667
+
234
668
  void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
235
669
  UNIMPLEMENTED_MIPS();
236
670
  }
237
671
 
238
672
 
673
+ void FullCodeGenerator::VisitCompareToNull(CompareToNull* expr) {
674
+ UNIMPLEMENTED_MIPS();
675
+ }
676
+
677
+
239
678
  void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) {
240
679
  UNIMPLEMENTED_MIPS();
241
680
  }
242
681
 
243
682
 
244
- Register FullCodeGenerator::result_register() { return v0; }
683
+ Register FullCodeGenerator::result_register() {
684
+ UNIMPLEMENTED_MIPS();
685
+ return v0;
686
+ }
245
687
 
246
688
 
247
- Register FullCodeGenerator::context_register() { return cp; }
689
+ Register FullCodeGenerator::context_register() {
690
+ UNIMPLEMENTED_MIPS();
691
+ return cp;
692
+ }
693
+
694
+
695
+ void FullCodeGenerator::EmitCallIC(Handle<Code> ic, RelocInfo::Mode mode) {
696
+ UNIMPLEMENTED_MIPS();
697
+ }
248
698
 
249
699
 
250
700
  void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) {