libv8 3.11.8.17 → 3.16.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -2
  3. data/Gemfile +1 -1
  4. data/Rakefile +6 -7
  5. data/lib/libv8/version.rb +1 -1
  6. data/vendor/v8/.gitignore +24 -3
  7. data/vendor/v8/AUTHORS +7 -0
  8. data/vendor/v8/ChangeLog +839 -0
  9. data/vendor/v8/DEPS +1 -1
  10. data/vendor/v8/Makefile.android +92 -0
  11. data/vendor/v8/OWNERS +11 -0
  12. data/vendor/v8/PRESUBMIT.py +71 -0
  13. data/vendor/v8/SConstruct +34 -39
  14. data/vendor/v8/build/android.gypi +56 -37
  15. data/vendor/v8/build/common.gypi +112 -30
  16. data/vendor/v8/build/gyp_v8 +1 -1
  17. data/vendor/v8/build/standalone.gypi +15 -11
  18. data/vendor/v8/include/v8-debug.h +9 -1
  19. data/vendor/v8/include/v8-preparser.h +4 -3
  20. data/vendor/v8/include/v8-profiler.h +25 -25
  21. data/vendor/v8/include/v8-testing.h +4 -3
  22. data/vendor/v8/include/v8.h +994 -540
  23. data/vendor/v8/preparser/preparser-process.cc +3 -3
  24. data/vendor/v8/samples/lineprocessor.cc +20 -27
  25. data/vendor/v8/samples/process.cc +18 -14
  26. data/vendor/v8/samples/shell.cc +16 -15
  27. data/vendor/v8/src/SConscript +15 -14
  28. data/vendor/v8/src/accessors.cc +169 -77
  29. data/vendor/v8/src/accessors.h +4 -0
  30. data/vendor/v8/src/allocation-inl.h +2 -2
  31. data/vendor/v8/src/allocation.h +7 -7
  32. data/vendor/v8/src/api.cc +810 -497
  33. data/vendor/v8/src/api.h +85 -60
  34. data/vendor/v8/src/arm/assembler-arm-inl.h +179 -22
  35. data/vendor/v8/src/arm/assembler-arm.cc +633 -264
  36. data/vendor/v8/src/arm/assembler-arm.h +264 -197
  37. data/vendor/v8/src/arm/builtins-arm.cc +117 -27
  38. data/vendor/v8/src/arm/code-stubs-arm.cc +1241 -700
  39. data/vendor/v8/src/arm/code-stubs-arm.h +35 -138
  40. data/vendor/v8/src/arm/codegen-arm.cc +285 -16
  41. data/vendor/v8/src/arm/codegen-arm.h +22 -0
  42. data/vendor/v8/src/arm/constants-arm.cc +5 -3
  43. data/vendor/v8/src/arm/constants-arm.h +24 -11
  44. data/vendor/v8/src/arm/debug-arm.cc +3 -3
  45. data/vendor/v8/src/arm/deoptimizer-arm.cc +382 -92
  46. data/vendor/v8/src/arm/disasm-arm.cc +61 -12
  47. data/vendor/v8/src/arm/frames-arm.h +0 -14
  48. data/vendor/v8/src/arm/full-codegen-arm.cc +332 -304
  49. data/vendor/v8/src/arm/ic-arm.cc +180 -259
  50. data/vendor/v8/src/arm/lithium-arm.cc +364 -316
  51. data/vendor/v8/src/arm/lithium-arm.h +512 -275
  52. data/vendor/v8/src/arm/lithium-codegen-arm.cc +1768 -809
  53. data/vendor/v8/src/arm/lithium-codegen-arm.h +97 -35
  54. data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +12 -5
  55. data/vendor/v8/src/arm/macro-assembler-arm.cc +439 -228
  56. data/vendor/v8/src/arm/macro-assembler-arm.h +116 -70
  57. data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +54 -44
  58. data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +3 -10
  59. data/vendor/v8/src/arm/simulator-arm.cc +272 -238
  60. data/vendor/v8/src/arm/simulator-arm.h +38 -8
  61. data/vendor/v8/src/arm/stub-cache-arm.cc +522 -895
  62. data/vendor/v8/src/array.js +101 -70
  63. data/vendor/v8/src/assembler.cc +270 -19
  64. data/vendor/v8/src/assembler.h +110 -15
  65. data/vendor/v8/src/ast.cc +79 -69
  66. data/vendor/v8/src/ast.h +255 -301
  67. data/vendor/v8/src/atomicops.h +7 -1
  68. data/vendor/v8/src/atomicops_internals_tsan.h +335 -0
  69. data/vendor/v8/src/bootstrapper.cc +481 -418
  70. data/vendor/v8/src/bootstrapper.h +4 -4
  71. data/vendor/v8/src/builtins.cc +498 -311
  72. data/vendor/v8/src/builtins.h +75 -47
  73. data/vendor/v8/src/checks.cc +2 -1
  74. data/vendor/v8/src/checks.h +8 -0
  75. data/vendor/v8/src/code-stubs-hydrogen.cc +253 -0
  76. data/vendor/v8/src/code-stubs.cc +249 -84
  77. data/vendor/v8/src/code-stubs.h +501 -169
  78. data/vendor/v8/src/codegen.cc +36 -18
  79. data/vendor/v8/src/codegen.h +25 -3
  80. data/vendor/v8/src/collection.js +54 -17
  81. data/vendor/v8/src/compilation-cache.cc +24 -16
  82. data/vendor/v8/src/compilation-cache.h +15 -6
  83. data/vendor/v8/src/compiler.cc +497 -195
  84. data/vendor/v8/src/compiler.h +246 -38
  85. data/vendor/v8/src/contexts.cc +64 -24
  86. data/vendor/v8/src/contexts.h +60 -29
  87. data/vendor/v8/src/conversions-inl.h +24 -14
  88. data/vendor/v8/src/conversions.h +7 -4
  89. data/vendor/v8/src/counters.cc +21 -12
  90. data/vendor/v8/src/counters.h +44 -16
  91. data/vendor/v8/src/cpu-profiler.h +1 -1
  92. data/vendor/v8/src/d8-debug.cc +2 -2
  93. data/vendor/v8/src/d8-readline.cc +13 -2
  94. data/vendor/v8/src/d8.cc +681 -273
  95. data/vendor/v8/src/d8.gyp +4 -4
  96. data/vendor/v8/src/d8.h +38 -18
  97. data/vendor/v8/src/d8.js +0 -617
  98. data/vendor/v8/src/data-flow.h +55 -0
  99. data/vendor/v8/src/date.js +1 -42
  100. data/vendor/v8/src/dateparser-inl.h +5 -1
  101. data/vendor/v8/src/debug-agent.cc +10 -15
  102. data/vendor/v8/src/debug-debugger.js +147 -149
  103. data/vendor/v8/src/debug.cc +323 -164
  104. data/vendor/v8/src/debug.h +26 -14
  105. data/vendor/v8/src/deoptimizer.cc +765 -290
  106. data/vendor/v8/src/deoptimizer.h +130 -28
  107. data/vendor/v8/src/disassembler.cc +10 -4
  108. data/vendor/v8/src/elements-kind.cc +7 -2
  109. data/vendor/v8/src/elements-kind.h +19 -0
  110. data/vendor/v8/src/elements.cc +607 -285
  111. data/vendor/v8/src/elements.h +36 -13
  112. data/vendor/v8/src/execution.cc +52 -31
  113. data/vendor/v8/src/execution.h +4 -4
  114. data/vendor/v8/src/extensions/externalize-string-extension.cc +5 -4
  115. data/vendor/v8/src/extensions/gc-extension.cc +5 -1
  116. data/vendor/v8/src/extensions/statistics-extension.cc +153 -0
  117. data/vendor/v8/src/{inspector.h → extensions/statistics-extension.h} +12 -23
  118. data/vendor/v8/src/factory.cc +101 -134
  119. data/vendor/v8/src/factory.h +36 -31
  120. data/vendor/v8/src/flag-definitions.h +102 -25
  121. data/vendor/v8/src/flags.cc +9 -5
  122. data/vendor/v8/src/frames-inl.h +10 -0
  123. data/vendor/v8/src/frames.cc +116 -26
  124. data/vendor/v8/src/frames.h +96 -12
  125. data/vendor/v8/src/full-codegen.cc +219 -74
  126. data/vendor/v8/src/full-codegen.h +63 -21
  127. data/vendor/v8/src/func-name-inferrer.cc +8 -7
  128. data/vendor/v8/src/func-name-inferrer.h +5 -3
  129. data/vendor/v8/src/gdb-jit.cc +71 -57
  130. data/vendor/v8/src/global-handles.cc +230 -101
  131. data/vendor/v8/src/global-handles.h +26 -27
  132. data/vendor/v8/src/globals.h +17 -19
  133. data/vendor/v8/src/handles-inl.h +59 -12
  134. data/vendor/v8/src/handles.cc +180 -200
  135. data/vendor/v8/src/handles.h +80 -11
  136. data/vendor/v8/src/hashmap.h +60 -40
  137. data/vendor/v8/src/heap-inl.h +107 -45
  138. data/vendor/v8/src/heap-profiler.cc +38 -19
  139. data/vendor/v8/src/heap-profiler.h +24 -14
  140. data/vendor/v8/src/heap.cc +1123 -738
  141. data/vendor/v8/src/heap.h +385 -146
  142. data/vendor/v8/src/hydrogen-instructions.cc +700 -217
  143. data/vendor/v8/src/hydrogen-instructions.h +1158 -472
  144. data/vendor/v8/src/hydrogen.cc +3319 -1662
  145. data/vendor/v8/src/hydrogen.h +411 -170
  146. data/vendor/v8/src/ia32/assembler-ia32-inl.h +46 -16
  147. data/vendor/v8/src/ia32/assembler-ia32.cc +131 -61
  148. data/vendor/v8/src/ia32/assembler-ia32.h +115 -57
  149. data/vendor/v8/src/ia32/builtins-ia32.cc +99 -5
  150. data/vendor/v8/src/ia32/code-stubs-ia32.cc +787 -495
  151. data/vendor/v8/src/ia32/code-stubs-ia32.h +10 -100
  152. data/vendor/v8/src/ia32/codegen-ia32.cc +227 -23
  153. data/vendor/v8/src/ia32/codegen-ia32.h +14 -0
  154. data/vendor/v8/src/ia32/deoptimizer-ia32.cc +428 -87
  155. data/vendor/v8/src/ia32/disasm-ia32.cc +28 -1
  156. data/vendor/v8/src/ia32/frames-ia32.h +6 -16
  157. data/vendor/v8/src/ia32/full-codegen-ia32.cc +280 -272
  158. data/vendor/v8/src/ia32/ic-ia32.cc +150 -250
  159. data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +1600 -517
  160. data/vendor/v8/src/ia32/lithium-codegen-ia32.h +90 -24
  161. data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +10 -6
  162. data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.h +2 -2
  163. data/vendor/v8/src/ia32/lithium-ia32.cc +405 -302
  164. data/vendor/v8/src/ia32/lithium-ia32.h +526 -271
  165. data/vendor/v8/src/ia32/macro-assembler-ia32.cc +378 -119
  166. data/vendor/v8/src/ia32/macro-assembler-ia32.h +62 -28
  167. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +43 -30
  168. data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +2 -10
  169. data/vendor/v8/src/ia32/stub-cache-ia32.cc +492 -678
  170. data/vendor/v8/src/ic-inl.h +9 -4
  171. data/vendor/v8/src/ic.cc +836 -923
  172. data/vendor/v8/src/ic.h +228 -247
  173. data/vendor/v8/src/incremental-marking-inl.h +26 -30
  174. data/vendor/v8/src/incremental-marking.cc +276 -248
  175. data/vendor/v8/src/incremental-marking.h +29 -37
  176. data/vendor/v8/src/interface.cc +34 -25
  177. data/vendor/v8/src/interface.h +69 -25
  178. data/vendor/v8/src/interpreter-irregexp.cc +2 -2
  179. data/vendor/v8/src/isolate.cc +382 -76
  180. data/vendor/v8/src/isolate.h +109 -56
  181. data/vendor/v8/src/json-parser.h +217 -104
  182. data/vendor/v8/src/json-stringifier.h +745 -0
  183. data/vendor/v8/src/json.js +10 -132
  184. data/vendor/v8/src/jsregexp-inl.h +106 -0
  185. data/vendor/v8/src/jsregexp.cc +517 -285
  186. data/vendor/v8/src/jsregexp.h +145 -117
  187. data/vendor/v8/src/list-inl.h +35 -22
  188. data/vendor/v8/src/list.h +46 -19
  189. data/vendor/v8/src/lithium-allocator-inl.h +22 -2
  190. data/vendor/v8/src/lithium-allocator.cc +85 -70
  191. data/vendor/v8/src/lithium-allocator.h +21 -39
  192. data/vendor/v8/src/lithium.cc +259 -5
  193. data/vendor/v8/src/lithium.h +131 -32
  194. data/vendor/v8/src/liveedit-debugger.js +52 -3
  195. data/vendor/v8/src/liveedit.cc +393 -113
  196. data/vendor/v8/src/liveedit.h +7 -3
  197. data/vendor/v8/src/log-utils.cc +4 -2
  198. data/vendor/v8/src/log.cc +170 -140
  199. data/vendor/v8/src/log.h +62 -11
  200. data/vendor/v8/src/macro-assembler.h +17 -0
  201. data/vendor/v8/src/macros.py +2 -0
  202. data/vendor/v8/src/mark-compact-inl.h +3 -23
  203. data/vendor/v8/src/mark-compact.cc +801 -830
  204. data/vendor/v8/src/mark-compact.h +154 -47
  205. data/vendor/v8/src/marking-thread.cc +85 -0
  206. data/vendor/v8/src/{inspector.cc → marking-thread.h} +32 -24
  207. data/vendor/v8/src/math.js +12 -18
  208. data/vendor/v8/src/messages.cc +18 -8
  209. data/vendor/v8/src/messages.js +314 -261
  210. data/vendor/v8/src/mips/assembler-mips-inl.h +58 -6
  211. data/vendor/v8/src/mips/assembler-mips.cc +92 -75
  212. data/vendor/v8/src/mips/assembler-mips.h +54 -60
  213. data/vendor/v8/src/mips/builtins-mips.cc +116 -17
  214. data/vendor/v8/src/mips/code-stubs-mips.cc +919 -556
  215. data/vendor/v8/src/mips/code-stubs-mips.h +22 -131
  216. data/vendor/v8/src/mips/codegen-mips.cc +281 -6
  217. data/vendor/v8/src/mips/codegen-mips.h +22 -0
  218. data/vendor/v8/src/mips/constants-mips.cc +2 -0
  219. data/vendor/v8/src/mips/constants-mips.h +12 -2
  220. data/vendor/v8/src/mips/deoptimizer-mips.cc +286 -50
  221. data/vendor/v8/src/mips/disasm-mips.cc +13 -0
  222. data/vendor/v8/src/mips/full-codegen-mips.cc +297 -284
  223. data/vendor/v8/src/mips/ic-mips.cc +182 -263
  224. data/vendor/v8/src/mips/lithium-codegen-mips.cc +1208 -556
  225. data/vendor/v8/src/mips/lithium-codegen-mips.h +72 -19
  226. data/vendor/v8/src/mips/lithium-gap-resolver-mips.cc +9 -2
  227. data/vendor/v8/src/mips/lithium-mips.cc +290 -302
  228. data/vendor/v8/src/mips/lithium-mips.h +463 -266
  229. data/vendor/v8/src/mips/macro-assembler-mips.cc +208 -115
  230. data/vendor/v8/src/mips/macro-assembler-mips.h +67 -24
  231. data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +40 -25
  232. data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +3 -9
  233. data/vendor/v8/src/mips/simulator-mips.cc +112 -40
  234. data/vendor/v8/src/mips/simulator-mips.h +5 -0
  235. data/vendor/v8/src/mips/stub-cache-mips.cc +502 -884
  236. data/vendor/v8/src/mirror-debugger.js +157 -30
  237. data/vendor/v8/src/mksnapshot.cc +88 -14
  238. data/vendor/v8/src/object-observe.js +235 -0
  239. data/vendor/v8/src/objects-debug.cc +178 -176
  240. data/vendor/v8/src/objects-inl.h +1333 -486
  241. data/vendor/v8/src/objects-printer.cc +125 -43
  242. data/vendor/v8/src/objects-visiting-inl.h +578 -6
  243. data/vendor/v8/src/objects-visiting.cc +2 -2
  244. data/vendor/v8/src/objects-visiting.h +172 -79
  245. data/vendor/v8/src/objects.cc +3533 -2885
  246. data/vendor/v8/src/objects.h +1352 -1131
  247. data/vendor/v8/src/optimizing-compiler-thread.cc +152 -0
  248. data/vendor/v8/src/optimizing-compiler-thread.h +111 -0
  249. data/vendor/v8/src/parser.cc +390 -500
  250. data/vendor/v8/src/parser.h +45 -33
  251. data/vendor/v8/src/platform-cygwin.cc +10 -21
  252. data/vendor/v8/src/platform-freebsd.cc +36 -41
  253. data/vendor/v8/src/platform-linux.cc +160 -124
  254. data/vendor/v8/src/platform-macos.cc +30 -27
  255. data/vendor/v8/src/platform-nullos.cc +17 -1
  256. data/vendor/v8/src/platform-openbsd.cc +19 -50
  257. data/vendor/v8/src/platform-posix.cc +14 -0
  258. data/vendor/v8/src/platform-solaris.cc +20 -53
  259. data/vendor/v8/src/platform-win32.cc +49 -26
  260. data/vendor/v8/src/platform.h +40 -1
  261. data/vendor/v8/src/preparser.cc +8 -5
  262. data/vendor/v8/src/preparser.h +2 -2
  263. data/vendor/v8/src/prettyprinter.cc +16 -0
  264. data/vendor/v8/src/prettyprinter.h +2 -0
  265. data/vendor/v8/src/profile-generator-inl.h +1 -0
  266. data/vendor/v8/src/profile-generator.cc +209 -147
  267. data/vendor/v8/src/profile-generator.h +15 -12
  268. data/vendor/v8/src/property-details.h +46 -31
  269. data/vendor/v8/src/property.cc +27 -46
  270. data/vendor/v8/src/property.h +163 -83
  271. data/vendor/v8/src/proxy.js +7 -2
  272. data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +4 -13
  273. data/vendor/v8/src/regexp-macro-assembler-irregexp.h +1 -2
  274. data/vendor/v8/src/regexp-macro-assembler-tracer.cc +1 -11
  275. data/vendor/v8/src/regexp-macro-assembler-tracer.h +0 -1
  276. data/vendor/v8/src/regexp-macro-assembler.cc +31 -14
  277. data/vendor/v8/src/regexp-macro-assembler.h +14 -11
  278. data/vendor/v8/src/regexp-stack.cc +1 -0
  279. data/vendor/v8/src/regexp.js +9 -8
  280. data/vendor/v8/src/rewriter.cc +18 -7
  281. data/vendor/v8/src/runtime-profiler.cc +52 -43
  282. data/vendor/v8/src/runtime-profiler.h +0 -25
  283. data/vendor/v8/src/runtime.cc +2006 -2023
  284. data/vendor/v8/src/runtime.h +56 -49
  285. data/vendor/v8/src/safepoint-table.cc +12 -18
  286. data/vendor/v8/src/safepoint-table.h +11 -8
  287. data/vendor/v8/src/scanner.cc +1 -0
  288. data/vendor/v8/src/scanner.h +4 -10
  289. data/vendor/v8/src/scopeinfo.cc +35 -9
  290. data/vendor/v8/src/scopeinfo.h +64 -3
  291. data/vendor/v8/src/scopes.cc +251 -156
  292. data/vendor/v8/src/scopes.h +61 -27
  293. data/vendor/v8/src/serialize.cc +348 -396
  294. data/vendor/v8/src/serialize.h +125 -114
  295. data/vendor/v8/src/small-pointer-list.h +11 -11
  296. data/vendor/v8/src/{smart-array-pointer.h → smart-pointers.h} +64 -15
  297. data/vendor/v8/src/snapshot-common.cc +64 -15
  298. data/vendor/v8/src/snapshot-empty.cc +7 -1
  299. data/vendor/v8/src/snapshot.h +9 -2
  300. data/vendor/v8/src/spaces-inl.h +17 -0
  301. data/vendor/v8/src/spaces.cc +477 -183
  302. data/vendor/v8/src/spaces.h +238 -58
  303. data/vendor/v8/src/splay-tree-inl.h +8 -7
  304. data/vendor/v8/src/splay-tree.h +24 -10
  305. data/vendor/v8/src/store-buffer.cc +12 -5
  306. data/vendor/v8/src/store-buffer.h +2 -4
  307. data/vendor/v8/src/string-search.h +22 -6
  308. data/vendor/v8/src/string-stream.cc +11 -8
  309. data/vendor/v8/src/string.js +47 -15
  310. data/vendor/v8/src/stub-cache.cc +461 -224
  311. data/vendor/v8/src/stub-cache.h +164 -102
  312. data/vendor/v8/src/sweeper-thread.cc +105 -0
  313. data/vendor/v8/src/sweeper-thread.h +81 -0
  314. data/vendor/v8/src/token.h +1 -0
  315. data/vendor/v8/src/transitions-inl.h +220 -0
  316. data/vendor/v8/src/transitions.cc +160 -0
  317. data/vendor/v8/src/transitions.h +207 -0
  318. data/vendor/v8/src/type-info.cc +182 -181
  319. data/vendor/v8/src/type-info.h +31 -19
  320. data/vendor/v8/src/unicode-inl.h +62 -106
  321. data/vendor/v8/src/unicode.cc +57 -67
  322. data/vendor/v8/src/unicode.h +45 -91
  323. data/vendor/v8/src/uri.js +57 -29
  324. data/vendor/v8/src/utils.h +105 -5
  325. data/vendor/v8/src/v8-counters.cc +54 -11
  326. data/vendor/v8/src/v8-counters.h +134 -19
  327. data/vendor/v8/src/v8.cc +29 -29
  328. data/vendor/v8/src/v8.h +1 -0
  329. data/vendor/v8/src/v8conversions.cc +26 -22
  330. data/vendor/v8/src/v8globals.h +56 -43
  331. data/vendor/v8/src/v8natives.js +83 -30
  332. data/vendor/v8/src/v8threads.cc +42 -21
  333. data/vendor/v8/src/v8threads.h +4 -1
  334. data/vendor/v8/src/v8utils.cc +9 -93
  335. data/vendor/v8/src/v8utils.h +37 -33
  336. data/vendor/v8/src/variables.cc +6 -3
  337. data/vendor/v8/src/variables.h +6 -13
  338. data/vendor/v8/src/version.cc +2 -2
  339. data/vendor/v8/src/vm-state-inl.h +11 -0
  340. data/vendor/v8/src/x64/assembler-x64-inl.h +39 -8
  341. data/vendor/v8/src/x64/assembler-x64.cc +78 -64
  342. data/vendor/v8/src/x64/assembler-x64.h +38 -33
  343. data/vendor/v8/src/x64/builtins-x64.cc +105 -7
  344. data/vendor/v8/src/x64/code-stubs-x64.cc +790 -413
  345. data/vendor/v8/src/x64/code-stubs-x64.h +10 -106
  346. data/vendor/v8/src/x64/codegen-x64.cc +210 -8
  347. data/vendor/v8/src/x64/codegen-x64.h +20 -1
  348. data/vendor/v8/src/x64/deoptimizer-x64.cc +336 -75
  349. data/vendor/v8/src/x64/disasm-x64.cc +15 -0
  350. data/vendor/v8/src/x64/frames-x64.h +0 -14
  351. data/vendor/v8/src/x64/full-codegen-x64.cc +293 -270
  352. data/vendor/v8/src/x64/ic-x64.cc +153 -251
  353. data/vendor/v8/src/x64/lithium-codegen-x64.cc +1379 -531
  354. data/vendor/v8/src/x64/lithium-codegen-x64.h +67 -23
  355. data/vendor/v8/src/x64/lithium-gap-resolver-x64.cc +2 -2
  356. data/vendor/v8/src/x64/lithium-x64.cc +349 -289
  357. data/vendor/v8/src/x64/lithium-x64.h +460 -250
  358. data/vendor/v8/src/x64/macro-assembler-x64.cc +350 -177
  359. data/vendor/v8/src/x64/macro-assembler-x64.h +67 -49
  360. data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +46 -33
  361. data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +2 -3
  362. data/vendor/v8/src/x64/stub-cache-x64.cc +484 -653
  363. data/vendor/v8/src/zone-inl.h +9 -27
  364. data/vendor/v8/src/zone.cc +5 -5
  365. data/vendor/v8/src/zone.h +53 -27
  366. data/vendor/v8/test/benchmarks/testcfg.py +5 -0
  367. data/vendor/v8/test/cctest/cctest.cc +4 -0
  368. data/vendor/v8/test/cctest/cctest.gyp +3 -1
  369. data/vendor/v8/test/cctest/cctest.h +57 -9
  370. data/vendor/v8/test/cctest/cctest.status +15 -15
  371. data/vendor/v8/test/cctest/test-accessors.cc +26 -0
  372. data/vendor/v8/test/cctest/test-alloc.cc +22 -30
  373. data/vendor/v8/test/cctest/test-api.cc +1943 -314
  374. data/vendor/v8/test/cctest/test-assembler-arm.cc +133 -13
  375. data/vendor/v8/test/cctest/test-assembler-ia32.cc +1 -1
  376. data/vendor/v8/test/cctest/test-assembler-mips.cc +12 -0
  377. data/vendor/v8/test/cctest/test-ast.cc +4 -2
  378. data/vendor/v8/test/cctest/test-compiler.cc +61 -29
  379. data/vendor/v8/test/cctest/test-dataflow.cc +2 -2
  380. data/vendor/v8/test/cctest/test-debug.cc +212 -33
  381. data/vendor/v8/test/cctest/test-decls.cc +257 -11
  382. data/vendor/v8/test/cctest/test-dictionary.cc +24 -10
  383. data/vendor/v8/test/cctest/test-disasm-arm.cc +118 -1
  384. data/vendor/v8/test/cctest/test-disasm-ia32.cc +3 -2
  385. data/vendor/v8/test/cctest/test-flags.cc +14 -1
  386. data/vendor/v8/test/cctest/test-func-name-inference.cc +7 -4
  387. data/vendor/v8/test/cctest/test-global-object.cc +51 -0
  388. data/vendor/v8/test/cctest/test-hashing.cc +32 -23
  389. data/vendor/v8/test/cctest/test-heap-profiler.cc +131 -77
  390. data/vendor/v8/test/cctest/test-heap.cc +1084 -143
  391. data/vendor/v8/test/cctest/test-list.cc +1 -1
  392. data/vendor/v8/test/cctest/test-liveedit.cc +3 -2
  393. data/vendor/v8/test/cctest/test-lockers.cc +12 -13
  394. data/vendor/v8/test/cctest/test-log.cc +10 -8
  395. data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +2 -2
  396. data/vendor/v8/test/cctest/test-mark-compact.cc +44 -22
  397. data/vendor/v8/test/cctest/test-object-observe.cc +434 -0
  398. data/vendor/v8/test/cctest/test-parsing.cc +86 -39
  399. data/vendor/v8/test/cctest/test-platform-linux.cc +6 -0
  400. data/vendor/v8/test/cctest/test-platform-win32.cc +7 -0
  401. data/vendor/v8/test/cctest/test-random.cc +5 -4
  402. data/vendor/v8/test/cctest/test-regexp.cc +137 -101
  403. data/vendor/v8/test/cctest/test-serialize.cc +150 -230
  404. data/vendor/v8/test/cctest/test-sockets.cc +1 -1
  405. data/vendor/v8/test/cctest/test-spaces.cc +139 -0
  406. data/vendor/v8/test/cctest/test-strings.cc +736 -74
  407. data/vendor/v8/test/cctest/test-thread-termination.cc +10 -11
  408. data/vendor/v8/test/cctest/test-threads.cc +4 -4
  409. data/vendor/v8/test/cctest/test-utils.cc +16 -0
  410. data/vendor/v8/test/cctest/test-weakmaps.cc +7 -3
  411. data/vendor/v8/test/cctest/testcfg.py +64 -5
  412. data/vendor/v8/test/es5conform/testcfg.py +5 -0
  413. data/vendor/v8/test/message/message.status +1 -1
  414. data/vendor/v8/test/message/overwritten-builtins.out +3 -0
  415. data/vendor/v8/test/message/testcfg.py +89 -8
  416. data/vendor/v8/test/message/try-catch-finally-no-message.out +26 -26
  417. data/vendor/v8/test/mjsunit/accessor-map-sharing.js +18 -2
  418. data/vendor/v8/test/mjsunit/allocation-site-info.js +126 -0
  419. data/vendor/v8/test/mjsunit/array-bounds-check-removal.js +62 -1
  420. data/vendor/v8/test/mjsunit/array-iteration.js +1 -1
  421. data/vendor/v8/test/mjsunit/array-literal-transitions.js +2 -0
  422. data/vendor/v8/test/mjsunit/array-natives-elements.js +317 -0
  423. data/vendor/v8/test/mjsunit/array-reduce.js +8 -8
  424. data/vendor/v8/test/mjsunit/array-slice.js +12 -0
  425. data/vendor/v8/test/mjsunit/array-store-and-grow.js +4 -1
  426. data/vendor/v8/test/mjsunit/assert-opt-and-deopt.js +1 -1
  427. data/vendor/v8/test/mjsunit/bugs/bug-2337.js +53 -0
  428. data/vendor/v8/test/mjsunit/compare-known-objects-slow.js +69 -0
  429. data/vendor/v8/test/mjsunit/compiler/alloc-object-huge.js +3 -1
  430. data/vendor/v8/test/mjsunit/compiler/inline-accessors.js +368 -0
  431. data/vendor/v8/test/mjsunit/compiler/inline-arguments.js +87 -1
  432. data/vendor/v8/test/mjsunit/compiler/inline-closures.js +49 -0
  433. data/vendor/v8/test/mjsunit/compiler/inline-construct.js +55 -43
  434. data/vendor/v8/test/mjsunit/compiler/inline-literals.js +39 -0
  435. data/vendor/v8/test/mjsunit/compiler/multiply-add.js +69 -0
  436. data/vendor/v8/test/mjsunit/compiler/optimized-closures.js +57 -0
  437. data/vendor/v8/test/mjsunit/compiler/parallel-proto-change.js +44 -0
  438. data/vendor/v8/test/mjsunit/compiler/property-static.js +69 -0
  439. data/vendor/v8/test/mjsunit/compiler/proto-chain-constant.js +55 -0
  440. data/vendor/v8/test/mjsunit/compiler/proto-chain-load.js +44 -0
  441. data/vendor/v8/test/mjsunit/compiler/regress-gvn.js +3 -2
  442. data/vendor/v8/test/mjsunit/compiler/regress-or.js +6 -2
  443. data/vendor/v8/test/mjsunit/compiler/rotate.js +224 -0
  444. data/vendor/v8/test/mjsunit/compiler/uint32.js +173 -0
  445. data/vendor/v8/test/mjsunit/count-based-osr.js +2 -1
  446. data/vendor/v8/test/mjsunit/d8-os.js +3 -3
  447. data/vendor/v8/test/mjsunit/date-parse.js +3 -0
  448. data/vendor/v8/test/mjsunit/date.js +22 -0
  449. data/vendor/v8/test/mjsunit/debug-break-inline.js +1 -0
  450. data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized-double.js +22 -12
  451. data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized.js +21 -10
  452. data/vendor/v8/test/mjsunit/debug-liveedit-compile-error.js +60 -0
  453. data/vendor/v8/test/mjsunit/debug-liveedit-double-call.js +142 -0
  454. data/vendor/v8/test/mjsunit/debug-liveedit-literals.js +94 -0
  455. data/vendor/v8/test/mjsunit/debug-liveedit-restart-frame.js +153 -0
  456. data/vendor/v8/test/mjsunit/debug-multiple-breakpoints.js +1 -1
  457. data/vendor/v8/test/mjsunit/debug-script-breakpoints-closure.js +67 -0
  458. data/vendor/v8/test/mjsunit/debug-script-breakpoints-nested.js +82 -0
  459. data/vendor/v8/test/mjsunit/debug-script.js +4 -2
  460. data/vendor/v8/test/mjsunit/debug-set-variable-value.js +308 -0
  461. data/vendor/v8/test/mjsunit/debug-stepout-scope-part1.js +190 -0
  462. data/vendor/v8/test/mjsunit/debug-stepout-scope-part2.js +83 -0
  463. data/vendor/v8/test/mjsunit/debug-stepout-scope-part3.js +80 -0
  464. data/vendor/v8/test/mjsunit/debug-stepout-scope-part4.js +80 -0
  465. data/vendor/v8/test/mjsunit/debug-stepout-scope-part5.js +77 -0
  466. data/vendor/v8/test/mjsunit/debug-stepout-scope-part6.js +79 -0
  467. data/vendor/v8/test/mjsunit/debug-stepout-scope-part7.js +79 -0
  468. data/vendor/v8/test/mjsunit/{debug-stepout-scope.js → debug-stepout-scope-part8.js} +0 -189
  469. data/vendor/v8/test/mjsunit/delete-non-configurable.js +74 -0
  470. data/vendor/v8/test/mjsunit/deopt-minus-zero.js +56 -0
  471. data/vendor/v8/test/mjsunit/elements-kind.js +6 -4
  472. data/vendor/v8/test/mjsunit/elements-length-no-holey.js +33 -0
  473. data/vendor/v8/test/mjsunit/elements-transition-hoisting.js +46 -19
  474. data/vendor/v8/test/mjsunit/error-accessors.js +54 -0
  475. data/vendor/v8/test/mjsunit/error-constructors.js +1 -14
  476. data/vendor/v8/test/mjsunit/error-tostring.js +8 -0
  477. data/vendor/v8/test/mjsunit/eval-stack-trace.js +204 -0
  478. data/vendor/v8/test/mjsunit/external-array.js +364 -1
  479. data/vendor/v8/test/mjsunit/fast-array-length.js +37 -0
  480. data/vendor/v8/test/mjsunit/fast-non-keyed.js +113 -0
  481. data/vendor/v8/test/mjsunit/fast-prototype.js +117 -0
  482. data/vendor/v8/test/mjsunit/function-call.js +14 -18
  483. data/vendor/v8/test/mjsunit/fuzz-natives-part1.js +230 -0
  484. data/vendor/v8/test/mjsunit/fuzz-natives-part2.js +229 -0
  485. data/vendor/v8/test/mjsunit/fuzz-natives-part3.js +229 -0
  486. data/vendor/v8/test/mjsunit/{fuzz-natives.js → fuzz-natives-part4.js} +12 -2
  487. data/vendor/v8/test/mjsunit/generated-transition-stub.js +218 -0
  488. data/vendor/v8/test/mjsunit/greedy.js +1 -1
  489. data/vendor/v8/test/mjsunit/harmony/block-conflicts.js +2 -1
  490. data/vendor/v8/test/mjsunit/harmony/block-let-crankshaft.js +1 -1
  491. data/vendor/v8/test/mjsunit/harmony/collections.js +69 -11
  492. data/vendor/v8/test/mjsunit/harmony/debug-blockscopes.js +2 -2
  493. data/vendor/v8/test/mjsunit/harmony/module-linking.js +180 -3
  494. data/vendor/v8/test/mjsunit/harmony/module-parsing.js +31 -0
  495. data/vendor/v8/test/mjsunit/harmony/module-recompile.js +87 -0
  496. data/vendor/v8/test/mjsunit/harmony/module-resolution.js +15 -2
  497. data/vendor/v8/test/mjsunit/harmony/object-observe.js +1056 -0
  498. data/vendor/v8/test/mjsunit/harmony/proxies-json.js +178 -0
  499. data/vendor/v8/test/mjsunit/harmony/proxies.js +25 -10
  500. data/vendor/v8/test/mjsunit/json-parser-recursive.js +33 -0
  501. data/vendor/v8/test/mjsunit/json-stringify-recursive.js +52 -0
  502. data/vendor/v8/test/mjsunit/json.js +38 -2
  503. data/vendor/v8/test/mjsunit/json2.js +153 -0
  504. data/vendor/v8/test/mjsunit/limit-locals.js +5 -4
  505. data/vendor/v8/test/mjsunit/manual-parallel-recompile.js +79 -0
  506. data/vendor/v8/test/mjsunit/math-exp-precision.js +64 -0
  507. data/vendor/v8/test/mjsunit/math-floor-negative.js +59 -0
  508. data/vendor/v8/test/mjsunit/math-floor-of-div-minus-zero.js +41 -0
  509. data/vendor/v8/test/mjsunit/math-floor-of-div-nosudiv.js +288 -0
  510. data/vendor/v8/test/mjsunit/math-floor-of-div.js +81 -9
  511. data/vendor/v8/test/mjsunit/{math-floor.js → math-floor-part1.js} +1 -72
  512. data/vendor/v8/test/mjsunit/math-floor-part2.js +76 -0
  513. data/vendor/v8/test/mjsunit/math-floor-part3.js +78 -0
  514. data/vendor/v8/test/mjsunit/math-floor-part4.js +76 -0
  515. data/vendor/v8/test/mjsunit/mirror-object.js +43 -9
  516. data/vendor/v8/test/mjsunit/mjsunit.js +1 -1
  517. data/vendor/v8/test/mjsunit/mjsunit.status +52 -27
  518. data/vendor/v8/test/mjsunit/mul-exhaustive-part1.js +491 -0
  519. data/vendor/v8/test/mjsunit/mul-exhaustive-part10.js +470 -0
  520. data/vendor/v8/test/mjsunit/mul-exhaustive-part2.js +525 -0
  521. data/vendor/v8/test/mjsunit/mul-exhaustive-part3.js +532 -0
  522. data/vendor/v8/test/mjsunit/mul-exhaustive-part4.js +509 -0
  523. data/vendor/v8/test/mjsunit/mul-exhaustive-part5.js +505 -0
  524. data/vendor/v8/test/mjsunit/mul-exhaustive-part6.js +554 -0
  525. data/vendor/v8/test/mjsunit/mul-exhaustive-part7.js +497 -0
  526. data/vendor/v8/test/mjsunit/mul-exhaustive-part8.js +526 -0
  527. data/vendor/v8/test/mjsunit/mul-exhaustive-part9.js +533 -0
  528. data/vendor/v8/test/mjsunit/new-function.js +34 -0
  529. data/vendor/v8/test/mjsunit/numops-fuzz-part1.js +1172 -0
  530. data/vendor/v8/test/mjsunit/numops-fuzz-part2.js +1178 -0
  531. data/vendor/v8/test/mjsunit/numops-fuzz-part3.js +1178 -0
  532. data/vendor/v8/test/mjsunit/numops-fuzz-part4.js +1177 -0
  533. data/vendor/v8/test/mjsunit/object-define-property.js +107 -2
  534. data/vendor/v8/test/mjsunit/override-read-only-property.js +6 -4
  535. data/vendor/v8/test/mjsunit/packed-elements.js +2 -2
  536. data/vendor/v8/test/mjsunit/parse-int-float.js +4 -4
  537. data/vendor/v8/test/mjsunit/pixel-array-rounding.js +1 -1
  538. data/vendor/v8/test/mjsunit/readonly.js +228 -0
  539. data/vendor/v8/test/mjsunit/regexp-capture-3.js +16 -18
  540. data/vendor/v8/test/mjsunit/regexp-capture.js +2 -0
  541. data/vendor/v8/test/mjsunit/regexp-global.js +122 -0
  542. data/vendor/v8/test/mjsunit/regexp-results-cache.js +78 -0
  543. data/vendor/v8/test/mjsunit/regress/regress-1117.js +12 -3
  544. data/vendor/v8/test/mjsunit/regress/regress-1118.js +1 -1
  545. data/vendor/v8/test/mjsunit/regress/regress-115100.js +36 -0
  546. data/vendor/v8/test/mjsunit/regress/regress-1199637.js +1 -3
  547. data/vendor/v8/test/mjsunit/regress/regress-121407.js +1 -1
  548. data/vendor/v8/test/mjsunit/regress/regress-131923.js +30 -0
  549. data/vendor/v8/test/mjsunit/regress/regress-131994.js +70 -0
  550. data/vendor/v8/test/mjsunit/regress/regress-133211.js +35 -0
  551. data/vendor/v8/test/mjsunit/regress/regress-133211b.js +39 -0
  552. data/vendor/v8/test/mjsunit/regress/regress-136048.js +34 -0
  553. data/vendor/v8/test/mjsunit/regress/regress-137768.js +73 -0
  554. data/vendor/v8/test/mjsunit/regress/regress-143967.js +34 -0
  555. data/vendor/v8/test/mjsunit/regress/regress-145201.js +107 -0
  556. data/vendor/v8/test/mjsunit/regress/regress-147497.js +45 -0
  557. data/vendor/v8/test/mjsunit/regress/regress-148378.js +38 -0
  558. data/vendor/v8/test/mjsunit/regress/regress-1563.js +1 -1
  559. data/vendor/v8/test/mjsunit/regress/regress-1591.js +48 -0
  560. data/vendor/v8/test/mjsunit/regress/regress-164442.js +45 -0
  561. data/vendor/v8/test/mjsunit/regress/regress-165637.js +61 -0
  562. data/vendor/v8/test/mjsunit/regress/regress-166379.js +39 -0
  563. data/vendor/v8/test/mjsunit/regress/regress-166553.js +33 -0
  564. data/vendor/v8/test/mjsunit/regress/regress-1692.js +1 -1
  565. data/vendor/v8/test/mjsunit/regress/regress-171641.js +40 -0
  566. data/vendor/v8/test/mjsunit/regress/regress-1980.js +1 -1
  567. data/vendor/v8/test/mjsunit/regress/regress-2073.js +99 -0
  568. data/vendor/v8/test/mjsunit/regress/regress-2119.js +36 -0
  569. data/vendor/v8/test/mjsunit/regress/regress-2156.js +39 -0
  570. data/vendor/v8/test/mjsunit/regress/regress-2163.js +70 -0
  571. data/vendor/v8/test/mjsunit/regress/regress-2170.js +58 -0
  572. data/vendor/v8/test/mjsunit/regress/regress-2172.js +35 -0
  573. data/vendor/v8/test/mjsunit/regress/regress-2185-2.js +145 -0
  574. data/vendor/v8/test/mjsunit/regress/regress-2185.js +38 -0
  575. data/vendor/v8/test/mjsunit/regress/regress-2186.js +49 -0
  576. data/vendor/v8/test/mjsunit/regress/regress-2193.js +58 -0
  577. data/vendor/v8/test/mjsunit/regress/regress-2219.js +32 -0
  578. data/vendor/v8/test/mjsunit/regress/regress-2225.js +65 -0
  579. data/vendor/v8/test/mjsunit/regress/regress-2226.js +36 -0
  580. data/vendor/v8/test/mjsunit/regress/regress-2234.js +41 -0
  581. data/vendor/v8/test/mjsunit/regress/regress-2243.js +31 -0
  582. data/vendor/v8/test/mjsunit/regress/regress-2249.js +33 -0
  583. data/vendor/v8/test/mjsunit/regress/regress-2250.js +68 -0
  584. data/vendor/v8/test/mjsunit/regress/regress-2261.js +113 -0
  585. data/vendor/v8/test/mjsunit/regress/regress-2263.js +30 -0
  586. data/vendor/v8/test/mjsunit/regress/regress-2284.js +32 -0
  587. data/vendor/v8/test/mjsunit/regress/regress-2285.js +32 -0
  588. data/vendor/v8/test/mjsunit/regress/regress-2286.js +32 -0
  589. data/vendor/v8/test/mjsunit/regress/regress-2289.js +34 -0
  590. data/vendor/v8/test/mjsunit/regress/regress-2291.js +36 -0
  591. data/vendor/v8/test/mjsunit/regress/regress-2294.js +70 -0
  592. data/vendor/v8/test/mjsunit/regress/regress-2296.js +40 -0
  593. data/vendor/v8/test/mjsunit/regress/regress-2315.js +40 -0
  594. data/vendor/v8/test/mjsunit/regress/regress-2318.js +66 -0
  595. data/vendor/v8/test/mjsunit/regress/regress-2322.js +36 -0
  596. data/vendor/v8/test/mjsunit/regress/regress-2326.js +54 -0
  597. data/vendor/v8/test/mjsunit/regress/regress-2336.js +53 -0
  598. data/vendor/v8/test/mjsunit/regress/regress-2339.js +59 -0
  599. data/vendor/v8/test/mjsunit/regress/regress-2346.js +123 -0
  600. data/vendor/v8/test/mjsunit/regress/regress-2373.js +29 -0
  601. data/vendor/v8/test/mjsunit/regress/regress-2374.js +33 -0
  602. data/vendor/v8/test/mjsunit/regress/regress-2398.js +41 -0
  603. data/vendor/v8/test/mjsunit/regress/regress-2410.js +36 -0
  604. data/vendor/v8/test/mjsunit/regress/regress-2416.js +75 -0
  605. data/vendor/v8/test/mjsunit/regress/regress-2419.js +37 -0
  606. data/vendor/v8/test/mjsunit/regress/regress-2433.js +36 -0
  607. data/vendor/v8/test/mjsunit/regress/regress-2437.js +156 -0
  608. data/vendor/v8/test/mjsunit/regress/regress-2438.js +52 -0
  609. data/vendor/v8/test/mjsunit/regress/regress-2443.js +129 -0
  610. data/vendor/v8/test/mjsunit/regress/regress-2444.js +120 -0
  611. data/vendor/v8/test/mjsunit/regress/regress-2489.js +50 -0
  612. data/vendor/v8/test/mjsunit/regress/regress-2499.js +40 -0
  613. data/vendor/v8/test/mjsunit/regress/regress-334.js +1 -1
  614. data/vendor/v8/test/mjsunit/regress/regress-492.js +39 -1
  615. data/vendor/v8/test/mjsunit/regress/regress-builtin-array-op.js +38 -0
  616. data/vendor/v8/test/mjsunit/regress/regress-cnlt-elements.js +43 -0
  617. data/vendor/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js +45 -0
  618. data/vendor/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js +46 -0
  619. data/vendor/v8/test/mjsunit/regress/regress-convert-enum.js +60 -0
  620. data/vendor/v8/test/mjsunit/regress/regress-convert-enum2.js +46 -0
  621. data/vendor/v8/test/mjsunit/regress/regress-convert-transition.js +40 -0
  622. data/vendor/v8/test/mjsunit/regress/regress-crbug-119926.js +3 -1
  623. data/vendor/v8/test/mjsunit/regress/regress-crbug-125148.js +90 -0
  624. data/vendor/v8/test/mjsunit/regress/regress-crbug-134055.js +63 -0
  625. data/vendor/v8/test/mjsunit/regress/regress-crbug-134609.js +59 -0
  626. data/vendor/v8/test/mjsunit/regress/regress-crbug-135008.js +45 -0
  627. data/vendor/v8/test/mjsunit/regress/regress-crbug-135066.js +55 -0
  628. data/vendor/v8/test/mjsunit/regress/regress-crbug-137689.js +47 -0
  629. data/vendor/v8/test/mjsunit/regress/regress-crbug-138887.js +48 -0
  630. data/vendor/v8/test/mjsunit/regress/regress-crbug-140083.js +44 -0
  631. data/vendor/v8/test/mjsunit/regress/regress-crbug-142087.js +38 -0
  632. data/vendor/v8/test/mjsunit/regress/regress-crbug-142218.js +44 -0
  633. data/vendor/v8/test/mjsunit/regress/regress-crbug-145961.js +39 -0
  634. data/vendor/v8/test/mjsunit/regress/regress-crbug-146910.js +33 -0
  635. data/vendor/v8/test/mjsunit/regress/regress-crbug-147475.js +48 -0
  636. data/vendor/v8/test/mjsunit/regress/regress-crbug-148376.js +35 -0
  637. data/vendor/v8/test/mjsunit/regress/regress-crbug-150545.js +53 -0
  638. data/vendor/v8/test/mjsunit/regress/regress-crbug-150729.js +39 -0
  639. data/vendor/v8/test/mjsunit/regress/regress-crbug-157019.js +54 -0
  640. data/vendor/v8/test/mjsunit/regress/regress-crbug-157520.js +38 -0
  641. data/vendor/v8/test/mjsunit/regress/regress-crbug-158185.js +39 -0
  642. data/vendor/v8/test/mjsunit/regress/regress-crbug-160010.js +35 -0
  643. data/vendor/v8/test/mjsunit/regress/regress-crbug-162085.js +71 -0
  644. data/vendor/v8/test/mjsunit/regress/regress-crbug-168545.js +34 -0
  645. data/vendor/v8/test/mjsunit/regress/regress-crbug-170856.js +33 -0
  646. data/vendor/v8/test/mjsunit/regress/regress-crbug-172345.js +34 -0
  647. data/vendor/v8/test/mjsunit/regress/regress-crbug-173974.js +36 -0
  648. data/vendor/v8/test/mjsunit/regress/regress-crbug-18639.js +9 -5
  649. data/vendor/v8/test/mjsunit/regress/regress-debug-code-recompilation.js +2 -1
  650. data/vendor/v8/test/mjsunit/regress/regress-deep-proto.js +45 -0
  651. data/vendor/v8/test/mjsunit/regress/regress-delete-empty-double.js +40 -0
  652. data/vendor/v8/test/mjsunit/regress/regress-iteration-order.js +42 -0
  653. data/vendor/v8/test/mjsunit/regress/regress-json-stringify-gc.js +41 -0
  654. data/vendor/v8/test/mjsunit/regress/regress-latin-1.js +78 -0
  655. data/vendor/v8/test/mjsunit/regress/regress-load-elements.js +49 -0
  656. data/vendor/v8/test/mjsunit/regress/regress-observe-empty-double-array.js +38 -0
  657. data/vendor/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js +37 -0
  658. data/vendor/v8/test/mjsunit/shift-for-integer-div.js +59 -0
  659. data/vendor/v8/test/mjsunit/stack-traces-gc.js +119 -0
  660. data/vendor/v8/test/mjsunit/stack-traces-overflow.js +122 -0
  661. data/vendor/v8/test/mjsunit/stack-traces.js +39 -1
  662. data/vendor/v8/test/mjsunit/str-to-num.js +7 -2
  663. data/vendor/v8/test/mjsunit/strict-mode.js +36 -11
  664. data/vendor/v8/test/mjsunit/string-charcodeat.js +3 -0
  665. data/vendor/v8/test/mjsunit/string-natives.js +72 -0
  666. data/vendor/v8/test/mjsunit/string-split.js +17 -0
  667. data/vendor/v8/test/mjsunit/testcfg.py +76 -6
  668. data/vendor/v8/test/mjsunit/tools/tickprocessor.js +4 -1
  669. data/vendor/v8/test/mjsunit/try-finally-continue.js +72 -0
  670. data/vendor/v8/test/mjsunit/typed-array-slice.js +61 -0
  671. data/vendor/v8/test/mjsunit/unbox-double-arrays.js +2 -0
  672. data/vendor/v8/test/mjsunit/uri.js +12 -0
  673. data/vendor/v8/test/mjsunit/with-readonly.js +4 -2
  674. data/vendor/v8/test/mozilla/mozilla.status +19 -113
  675. data/vendor/v8/test/mozilla/testcfg.py +122 -3
  676. data/vendor/v8/test/preparser/preparser.status +5 -0
  677. data/vendor/v8/test/preparser/strict-identifiers.pyt +1 -1
  678. data/vendor/v8/test/preparser/testcfg.py +101 -5
  679. data/vendor/v8/test/sputnik/sputnik.status +1 -1
  680. data/vendor/v8/test/sputnik/testcfg.py +5 -0
  681. data/vendor/v8/test/test262/README +2 -2
  682. data/vendor/v8/test/test262/test262.status +13 -36
  683. data/vendor/v8/test/test262/testcfg.py +102 -8
  684. data/vendor/v8/tools/android-build.sh +0 -0
  685. data/vendor/v8/tools/android-ll-prof.sh +69 -0
  686. data/vendor/v8/tools/android-run.py +109 -0
  687. data/vendor/v8/tools/android-sync.sh +105 -0
  688. data/vendor/v8/tools/bash-completion.sh +0 -0
  689. data/vendor/v8/tools/check-static-initializers.sh +0 -0
  690. data/vendor/v8/tools/common-includes.sh +15 -22
  691. data/vendor/v8/tools/disasm.py +4 -4
  692. data/vendor/v8/tools/fuzz-harness.sh +0 -0
  693. data/vendor/v8/tools/gen-postmortem-metadata.py +6 -8
  694. data/vendor/v8/tools/grokdump.py +404 -129
  695. data/vendor/v8/tools/gyp/v8.gyp +105 -43
  696. data/vendor/v8/tools/linux-tick-processor +5 -5
  697. data/vendor/v8/tools/ll_prof.py +75 -15
  698. data/vendor/v8/tools/merge-to-branch.sh +2 -2
  699. data/vendor/v8/tools/plot-timer-events +70 -0
  700. data/vendor/v8/tools/plot-timer-events.js +510 -0
  701. data/vendor/v8/tools/presubmit.py +1 -0
  702. data/vendor/v8/tools/push-to-trunk.sh +14 -4
  703. data/vendor/v8/tools/run-llprof.sh +69 -0
  704. data/vendor/v8/tools/run-tests.py +372 -0
  705. data/vendor/v8/tools/run-valgrind.py +1 -1
  706. data/vendor/v8/tools/status-file-converter.py +39 -0
  707. data/vendor/v8/tools/test-server.py +224 -0
  708. data/vendor/v8/tools/test-wrapper-gypbuild.py +13 -16
  709. data/vendor/v8/tools/test.py +10 -19
  710. data/vendor/v8/tools/testrunner/README +174 -0
  711. data/vendor/v8/tools/testrunner/__init__.py +26 -0
  712. data/vendor/v8/tools/testrunner/local/__init__.py +26 -0
  713. data/vendor/v8/tools/testrunner/local/commands.py +153 -0
  714. data/vendor/v8/tools/testrunner/local/execution.py +182 -0
  715. data/vendor/v8/tools/testrunner/local/old_statusfile.py +460 -0
  716. data/vendor/v8/tools/testrunner/local/progress.py +238 -0
  717. data/vendor/v8/tools/testrunner/local/statusfile.py +145 -0
  718. data/vendor/v8/tools/testrunner/local/testsuite.py +187 -0
  719. data/vendor/v8/tools/testrunner/local/utils.py +108 -0
  720. data/vendor/v8/tools/testrunner/local/verbose.py +99 -0
  721. data/vendor/v8/tools/testrunner/network/__init__.py +26 -0
  722. data/vendor/v8/tools/testrunner/network/distro.py +90 -0
  723. data/vendor/v8/tools/testrunner/network/endpoint.py +124 -0
  724. data/vendor/v8/tools/testrunner/network/network_execution.py +253 -0
  725. data/vendor/v8/tools/testrunner/network/perfdata.py +120 -0
  726. data/vendor/v8/tools/testrunner/objects/__init__.py +26 -0
  727. data/vendor/v8/tools/testrunner/objects/context.py +50 -0
  728. data/vendor/v8/tools/testrunner/objects/output.py +60 -0
  729. data/vendor/v8/tools/testrunner/objects/peer.py +80 -0
  730. data/vendor/v8/tools/testrunner/objects/testcase.py +83 -0
  731. data/vendor/v8/tools/testrunner/objects/workpacket.py +90 -0
  732. data/vendor/v8/tools/testrunner/server/__init__.py +26 -0
  733. data/vendor/v8/tools/testrunner/server/compression.py +111 -0
  734. data/vendor/v8/tools/testrunner/server/constants.py +51 -0
  735. data/vendor/v8/tools/testrunner/server/daemon.py +147 -0
  736. data/vendor/v8/tools/testrunner/server/local_handler.py +119 -0
  737. data/vendor/v8/tools/testrunner/server/main.py +245 -0
  738. data/vendor/v8/tools/testrunner/server/presence_handler.py +120 -0
  739. data/vendor/v8/tools/testrunner/server/signatures.py +63 -0
  740. data/vendor/v8/tools/testrunner/server/status_handler.py +112 -0
  741. data/vendor/v8/tools/testrunner/server/work_handler.py +150 -0
  742. data/vendor/v8/tools/tick-processor.html +168 -0
  743. data/vendor/v8/tools/tickprocessor-driver.js +5 -3
  744. data/vendor/v8/tools/tickprocessor.js +58 -15
  745. metadata +534 -30
  746. data/patches/add-freebsd9-and-freebsd10-to-gyp-GetFlavor.patch +0 -11
  747. data/patches/do-not-imply-vfp3-and-armv7.patch +0 -44
  748. data/patches/fPIC-on-x64.patch +0 -14
  749. data/vendor/v8/src/liveobjectlist-inl.h +0 -126
  750. data/vendor/v8/src/liveobjectlist.cc +0 -2631
  751. data/vendor/v8/src/liveobjectlist.h +0 -319
  752. data/vendor/v8/test/mjsunit/mul-exhaustive.js +0 -4629
  753. data/vendor/v8/test/mjsunit/numops-fuzz.js +0 -4609
  754. data/vendor/v8/test/mjsunit/regress/regress-1969.js +0 -5045
@@ -97,8 +97,8 @@ static v8::Handle<v8::Context> GetDebugEventContext(Isolate* isolate) {
97
97
  // Isolate::context() may have been NULL when "script collected" event
98
98
  // occured.
99
99
  if (context.is_null()) return v8::Local<v8::Context>();
100
- Handle<Context> global_context(context->global_context());
101
- return v8::Utils::ToLocal(global_context);
100
+ Handle<Context> native_context(context->native_context());
101
+ return v8::Utils::ToLocal(native_context);
102
102
  }
103
103
 
104
104
 
@@ -261,8 +261,12 @@ void BreakLocationIterator::Reset() {
261
261
  // Create relocation iterators for the two code objects.
262
262
  if (reloc_iterator_ != NULL) delete reloc_iterator_;
263
263
  if (reloc_iterator_original_ != NULL) delete reloc_iterator_original_;
264
- reloc_iterator_ = new RelocIterator(debug_info_->code());
265
- reloc_iterator_original_ = new RelocIterator(debug_info_->original_code());
264
+ reloc_iterator_ = new RelocIterator(
265
+ debug_info_->code(),
266
+ ~RelocInfo::ModeMask(RelocInfo::CODE_AGE_SEQUENCE));
267
+ reloc_iterator_original_ = new RelocIterator(
268
+ debug_info_->original_code(),
269
+ ~RelocInfo::ModeMask(RelocInfo::CODE_AGE_SEQUENCE));
266
270
 
267
271
  // Position at the first break point.
268
272
  break_point_ = -1;
@@ -613,10 +617,10 @@ void ScriptCache::Add(Handle<Script> script) {
613
617
  Handle<Script> script_ =
614
618
  Handle<Script>::cast(
615
619
  (global_handles->Create(*script)));
616
- global_handles->MakeWeak(
617
- reinterpret_cast<Object**>(script_.location()),
618
- this,
619
- ScriptCache::HandleWeakScript);
620
+ global_handles->MakeWeak(reinterpret_cast<Object**>(script_.location()),
621
+ this,
622
+ NULL,
623
+ ScriptCache::HandleWeakScript);
620
624
  entry->value = script_.location();
621
625
  }
622
626
 
@@ -659,7 +663,9 @@ void ScriptCache::Clear() {
659
663
  }
660
664
 
661
665
 
662
- void ScriptCache::HandleWeakScript(v8::Persistent<v8::Value> obj, void* data) {
666
+ void ScriptCache::HandleWeakScript(v8::Isolate* isolate,
667
+ v8::Persistent<v8::Value> obj,
668
+ void* data) {
663
669
  ScriptCache* script_cache = reinterpret_cast<ScriptCache*>(data);
664
670
  // Find the location of the global handle.
665
671
  Script** location =
@@ -672,7 +678,7 @@ void ScriptCache::HandleWeakScript(v8::Persistent<v8::Value> obj, void* data) {
672
678
  script_cache->collected_scripts_.Add(id);
673
679
 
674
680
  // Clear the weak handle.
675
- obj.Dispose();
681
+ obj.Dispose(isolate);
676
682
  obj.Clear();
677
683
  }
678
684
 
@@ -692,13 +698,15 @@ void Debug::SetUp(bool create_heap_objects) {
692
698
  }
693
699
 
694
700
 
695
- void Debug::HandleWeakDebugInfo(v8::Persistent<v8::Value> obj, void* data) {
696
- Debug* debug = Isolate::Current()->debug();
701
+ void Debug::HandleWeakDebugInfo(v8::Isolate* isolate,
702
+ v8::Persistent<v8::Value> obj,
703
+ void* data) {
704
+ Debug* debug = reinterpret_cast<Isolate*>(isolate)->debug();
697
705
  DebugInfoListNode* node = reinterpret_cast<DebugInfoListNode*>(data);
698
706
  // We need to clear all breakpoints associated with the function to restore
699
707
  // original code and avoid patching the code twice later because
700
708
  // the function will live in the heap until next gc, and can be found by
701
- // Runtime::FindSharedFunctionInfoInScript.
709
+ // Debug::FindSharedFunctionInfoInScript.
702
710
  BreakLocationIterator it(node->debug_info(), ALL_BREAK_LOCATIONS);
703
711
  it.ClearAllDebugBreak();
704
712
  debug->RemoveDebugInfo(node->debug_info());
@@ -717,10 +725,10 @@ DebugInfoListNode::DebugInfoListNode(DebugInfo* debug_info): next_(NULL) {
717
725
  // Globalize the request debug info object and make it weak.
718
726
  debug_info_ = Handle<DebugInfo>::cast(
719
727
  (global_handles->Create(debug_info)));
720
- global_handles->MakeWeak(
721
- reinterpret_cast<Object**>(debug_info_.location()),
722
- this,
723
- Debug::HandleWeakDebugInfo);
728
+ global_handles->MakeWeak(reinterpret_cast<Object**>(debug_info_.location()),
729
+ this,
730
+ NULL,
731
+ Debug::HandleWeakDebugInfo);
724
732
  }
725
733
 
726
734
 
@@ -745,12 +753,15 @@ bool Debug::CompileDebuggerScript(int index) {
745
753
  isolate->bootstrapper()->NativesSourceLookup(index);
746
754
  Vector<const char> name = Natives::GetScriptName(index);
747
755
  Handle<String> script_name = factory->NewStringFromAscii(name);
756
+ Handle<Context> context = isolate->native_context();
748
757
 
749
758
  // Compile the script.
750
759
  Handle<SharedFunctionInfo> function_info;
751
760
  function_info = Compiler::Compile(source_code,
752
761
  script_name,
753
- 0, 0, NULL, NULL,
762
+ 0, 0,
763
+ context,
764
+ NULL, NULL,
754
765
  Handle<String>::null(),
755
766
  NATIVES_CODE);
756
767
 
@@ -762,13 +773,12 @@ bool Debug::CompileDebuggerScript(int index) {
762
773
  }
763
774
 
764
775
  // Execute the shared function in the debugger context.
765
- Handle<Context> context = isolate->global_context();
766
776
  bool caught_exception;
767
777
  Handle<JSFunction> function =
768
778
  factory->NewFunctionFromSharedFunctionInfo(function_info, context);
769
779
 
770
780
  Handle<Object> exception =
771
- Execution::TryCall(function, Handle<Object>(context->global()),
781
+ Execution::TryCall(function, Handle<Object>(context->global_object()),
772
782
  0, NULL, &caught_exception);
773
783
 
774
784
  // Check for caught exceptions.
@@ -780,9 +790,11 @@ bool Debug::CompileDebuggerScript(int index) {
780
790
  "error_loading_debugger", &computed_location,
781
791
  Vector<Handle<Object> >::empty(), Handle<String>(), Handle<JSArray>());
782
792
  ASSERT(!isolate->has_pending_exception());
783
- isolate->set_pending_exception(*exception);
784
- MessageHandler::ReportMessage(Isolate::Current(), NULL, message);
785
- isolate->clear_pending_exception();
793
+ if (!exception.is_null()) {
794
+ isolate->set_pending_exception(*exception);
795
+ MessageHandler::ReportMessage(Isolate::Current(), NULL, message);
796
+ isolate->clear_pending_exception();
797
+ }
786
798
  return false;
787
799
  }
788
800
 
@@ -828,8 +840,9 @@ bool Debug::Load() {
828
840
  isolate_->set_context(*context);
829
841
 
830
842
  // Expose the builtins object in the debugger context.
831
- Handle<String> key = isolate_->factory()->LookupAsciiSymbol("builtins");
832
- Handle<GlobalObject> global = Handle<GlobalObject>(context->global());
843
+ Handle<String> key = isolate_->factory()->LookupOneByteSymbol(
844
+ STATIC_ASCII_VECTOR("builtins"));
845
+ Handle<GlobalObject> global = Handle<GlobalObject>(context->global_object());
833
846
  RETURN_IF_EMPTY_HANDLE_VALUE(
834
847
  isolate_,
835
848
  JSReceiver::SetProperty(global, key, Handle<Object>(global->builtins()),
@@ -892,16 +905,6 @@ void Debug::Iterate(ObjectVisitor* v) {
892
905
  }
893
906
 
894
907
 
895
- void Debug::PutValuesOnStackAndDie(int start,
896
- Address c_entry_fp,
897
- Address last_fp,
898
- Address larger_fp,
899
- int count,
900
- int end) {
901
- OS::Abort();
902
- }
903
-
904
-
905
908
  Object* Debug::Break(Arguments args) {
906
909
  Heap* heap = isolate_->heap();
907
910
  HandleScope scope(isolate_);
@@ -999,41 +1002,16 @@ Object* Debug::Break(Arguments args) {
999
1002
  it.Advance();
1000
1003
  }
1001
1004
 
1002
- // Catch the cases that would lead to crashes and capture
1003
- // - C entry FP at which to start stack crawl.
1004
- // - FP of the frame at which we plan to stop stepping out (last FP).
1005
- // - current FP that's larger than last FP.
1006
- // - Counter for the number of steps to step out.
1007
- if (it.done()) {
1008
- // We crawled the entire stack, never reaching last_fp_.
1009
- PutValuesOnStackAndDie(0xBEEEEEEE,
1010
- frame->fp(),
1011
- thread_local_.last_fp_,
1012
- NULL,
1013
- count,
1014
- 0xFEEEEEEE);
1015
- } else if (it.frame()->fp() != thread_local_.last_fp_) {
1016
- // We crawled over last_fp_, without getting a match.
1017
- PutValuesOnStackAndDie(0xBEEEEEEE,
1018
- frame->fp(),
1019
- thread_local_.last_fp_,
1020
- it.frame()->fp(),
1021
- count,
1022
- 0xFEEEEEEE);
1005
+ // Check that we indeed found the frame we are looking for.
1006
+ CHECK(!it.done() && (it.frame()->fp() == thread_local_.last_fp_));
1007
+ if (step_count > 1) {
1008
+ // Save old count and action to continue stepping after StepOut.
1009
+ thread_local_.queued_step_count_ = step_count - 1;
1023
1010
  }
1024
1011
 
1025
- // If we found original frame
1026
- if (it.frame()->fp() == thread_local_.last_fp_) {
1027
- if (step_count > 1) {
1028
- // Save old count and action to continue stepping after
1029
- // StepOut
1030
- thread_local_.queued_step_count_ = step_count - 1;
1031
- }
1032
-
1033
- // Set up for StepOut to reach target frame
1034
- step_action = StepOut;
1035
- step_count = count;
1036
- }
1012
+ // Set up for StepOut to reach target frame.
1013
+ step_action = StepOut;
1014
+ step_count = count;
1037
1015
  }
1038
1016
 
1039
1017
  // Clear all current stepping setup.
@@ -1127,10 +1105,11 @@ bool Debug::CheckBreakPoint(Handle<Object> break_point_object) {
1127
1105
 
1128
1106
  // Get the function IsBreakPointTriggered (defined in debug-debugger.js).
1129
1107
  Handle<String> is_break_point_triggered_symbol =
1130
- factory->LookupAsciiSymbol("IsBreakPointTriggered");
1108
+ factory->LookupOneByteSymbol(
1109
+ STATIC_ASCII_VECTOR("IsBreakPointTriggered"));
1131
1110
  Handle<JSFunction> check_break_point =
1132
1111
  Handle<JSFunction>(JSFunction::cast(
1133
- debug_context()->global()->GetPropertyNoExceptionThrown(
1112
+ debug_context()->global_object()->GetPropertyNoExceptionThrown(
1134
1113
  *is_break_point_triggered_symbol)));
1135
1114
 
1136
1115
  // Get the break id as an object.
@@ -1170,14 +1149,16 @@ Handle<DebugInfo> Debug::GetDebugInfo(Handle<SharedFunctionInfo> shared) {
1170
1149
  }
1171
1150
 
1172
1151
 
1173
- void Debug::SetBreakPoint(Handle<SharedFunctionInfo> shared,
1152
+ void Debug::SetBreakPoint(Handle<JSFunction> function,
1174
1153
  Handle<Object> break_point_object,
1175
1154
  int* source_position) {
1176
1155
  HandleScope scope(isolate_);
1177
1156
 
1178
1157
  PrepareForBreakPoints();
1179
1158
 
1180
- if (!EnsureDebugInfo(shared)) {
1159
+ // Make sure the function is compiled and has set up the debug info.
1160
+ Handle<SharedFunctionInfo> shared(function->shared());
1161
+ if (!EnsureDebugInfo(shared, function)) {
1181
1162
  // Return if retrieving debug info failed.
1182
1163
  return;
1183
1164
  }
@@ -1198,6 +1179,50 @@ void Debug::SetBreakPoint(Handle<SharedFunctionInfo> shared,
1198
1179
  }
1199
1180
 
1200
1181
 
1182
+ bool Debug::SetBreakPointForScript(Handle<Script> script,
1183
+ Handle<Object> break_point_object,
1184
+ int* source_position) {
1185
+ HandleScope scope(isolate_);
1186
+
1187
+ PrepareForBreakPoints();
1188
+
1189
+ // Obtain shared function info for the function.
1190
+ Object* result = FindSharedFunctionInfoInScript(script, *source_position);
1191
+ if (result->IsUndefined()) return false;
1192
+
1193
+ // Make sure the function has set up the debug info.
1194
+ Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(result));
1195
+ if (!EnsureDebugInfo(shared, Handle<JSFunction>::null())) {
1196
+ // Return if retrieving debug info failed.
1197
+ return false;
1198
+ }
1199
+
1200
+ // Find position within function. The script position might be before the
1201
+ // source position of the first function.
1202
+ int position;
1203
+ if (shared->start_position() > *source_position) {
1204
+ position = 0;
1205
+ } else {
1206
+ position = *source_position - shared->start_position();
1207
+ }
1208
+
1209
+ Handle<DebugInfo> debug_info = GetDebugInfo(shared);
1210
+ // Source positions starts with zero.
1211
+ ASSERT(position >= 0);
1212
+
1213
+ // Find the break point and change it.
1214
+ BreakLocationIterator it(debug_info, SOURCE_BREAK_LOCATIONS);
1215
+ it.FindBreakLocationFromPosition(position);
1216
+ it.SetBreakPoint(break_point_object);
1217
+
1218
+ *source_position = it.position() + shared->start_position();
1219
+
1220
+ // At least one active break point now.
1221
+ ASSERT(debug_info->GetBreakPointCount() > 0);
1222
+ return true;
1223
+ }
1224
+
1225
+
1201
1226
  void Debug::ClearBreakPoint(Handle<Object> break_point_object) {
1202
1227
  HandleScope scope(isolate_);
1203
1228
 
@@ -1249,10 +1274,12 @@ void Debug::ClearAllBreakPoints() {
1249
1274
  }
1250
1275
 
1251
1276
 
1252
- void Debug::FloodWithOneShot(Handle<SharedFunctionInfo> shared) {
1277
+ void Debug::FloodWithOneShot(Handle<JSFunction> function) {
1253
1278
  PrepareForBreakPoints();
1254
- // Make sure the function has set up the debug info.
1255
- if (!EnsureDebugInfo(shared)) {
1279
+
1280
+ // Make sure the function is compiled and has set up the debug info.
1281
+ Handle<SharedFunctionInfo> shared(function->shared());
1282
+ if (!EnsureDebugInfo(shared, function)) {
1256
1283
  // Return if we failed to retrieve the debug info.
1257
1284
  return;
1258
1285
  }
@@ -1272,8 +1299,8 @@ void Debug::FloodBoundFunctionWithOneShot(Handle<JSFunction> function) {
1272
1299
 
1273
1300
  if (!bindee.is_null() && bindee->IsJSFunction() &&
1274
1301
  !JSFunction::cast(*bindee)->IsBuiltin()) {
1275
- Handle<SharedFunctionInfo> shared_info(JSFunction::cast(*bindee)->shared());
1276
- Debug::FloodWithOneShot(shared_info);
1302
+ Handle<JSFunction> bindee_function(JSFunction::cast(*bindee));
1303
+ Debug::FloodWithOneShot(bindee_function);
1277
1304
  }
1278
1305
  }
1279
1306
 
@@ -1288,11 +1315,9 @@ void Debug::FloodHandlerWithOneShot() {
1288
1315
  for (JavaScriptFrameIterator it(isolate_, id); !it.done(); it.Advance()) {
1289
1316
  JavaScriptFrame* frame = it.frame();
1290
1317
  if (frame->HasHandler()) {
1291
- Handle<SharedFunctionInfo> shared =
1292
- Handle<SharedFunctionInfo>(
1293
- JSFunction::cast(frame->function())->shared());
1294
1318
  // Flood the function with the catch block with break points
1295
- FloodWithOneShot(shared);
1319
+ JSFunction* function = JSFunction::cast(frame->function());
1320
+ FloodWithOneShot(Handle<JSFunction>(function));
1296
1321
  return;
1297
1322
  }
1298
1323
  }
@@ -1359,14 +1384,14 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1359
1384
  frames_it.Advance();
1360
1385
  // Fill the function to return to with one-shot break points.
1361
1386
  JSFunction* function = JSFunction::cast(frames_it.frame()->function());
1362
- FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1387
+ FloodWithOneShot(Handle<JSFunction>(function));
1363
1388
  return;
1364
1389
  }
1365
1390
 
1366
1391
  // Get the debug info (create it if it does not exist).
1367
- Handle<SharedFunctionInfo> shared =
1368
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
1369
- if (!EnsureDebugInfo(shared)) {
1392
+ Handle<JSFunction> function(JSFunction::cast(frame->function()));
1393
+ Handle<SharedFunctionInfo> shared(function->shared());
1394
+ if (!EnsureDebugInfo(shared, function)) {
1370
1395
  // Return if ensuring debug info failed.
1371
1396
  return;
1372
1397
  }
@@ -1436,7 +1461,7 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1436
1461
  if (!frames_it.done()) {
1437
1462
  // Fill the function to return to with one-shot break points.
1438
1463
  JSFunction* function = JSFunction::cast(frames_it.frame()->function());
1439
- FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1464
+ FloodWithOneShot(Handle<JSFunction>(function));
1440
1465
  // Set target frame pointer.
1441
1466
  ActivateStepOut(frames_it.frame());
1442
1467
  }
@@ -1446,21 +1471,19 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1446
1471
  // Step next or step min.
1447
1472
 
1448
1473
  // Fill the current function with one-shot break points.
1449
- FloodWithOneShot(shared);
1474
+ FloodWithOneShot(function);
1450
1475
 
1451
1476
  // Remember source position and frame to handle step next.
1452
1477
  thread_local_.last_statement_position_ =
1453
1478
  debug_info->code()->SourceStatementPosition(frame->pc());
1454
- thread_local_.last_fp_ = frame->fp();
1479
+ thread_local_.last_fp_ = frame->UnpaddedFP();
1455
1480
  } else {
1456
1481
  // If there's restarter frame on top of the stack, just get the pointer
1457
1482
  // to function which is going to be restarted.
1458
1483
  if (is_at_restarted_function) {
1459
1484
  Handle<JSFunction> restarted_function(
1460
1485
  JSFunction::cast(*thread_local_.restarter_frame_function_pointer_));
1461
- Handle<SharedFunctionInfo> restarted_shared(
1462
- restarted_function->shared());
1463
- FloodWithOneShot(restarted_shared);
1486
+ FloodWithOneShot(restarted_function);
1464
1487
  } else if (!call_function_stub.is_null()) {
1465
1488
  // If it's CallFunction stub ensure target function is compiled and flood
1466
1489
  // it with one shot breakpoints.
@@ -1502,7 +1525,7 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1502
1525
  } else if (!js_function->IsBuiltin()) {
1503
1526
  // Don't step into builtins.
1504
1527
  // It will also compile target function if it's not compiled yet.
1505
- FloodWithOneShot(Handle<SharedFunctionInfo>(js_function->shared()));
1528
+ FloodWithOneShot(js_function);
1506
1529
  }
1507
1530
  }
1508
1531
  }
@@ -1511,7 +1534,7 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1511
1534
  // a call target as the function called might be a native function for
1512
1535
  // which step in will not stop. It also prepares for stepping in
1513
1536
  // getters/setters.
1514
- FloodWithOneShot(shared);
1537
+ FloodWithOneShot(function);
1515
1538
 
1516
1539
  if (is_load_or_store) {
1517
1540
  // Remember source position and frame to handle step in getter/setter. If
@@ -1520,7 +1543,7 @@ void Debug::PrepareStep(StepAction step_action, int step_count) {
1520
1543
  // propagated on the next Debug::Break.
1521
1544
  thread_local_.last_statement_position_ =
1522
1545
  debug_info->code()->SourceStatementPosition(frame->pc());
1523
- thread_local_.last_fp_ = frame->fp();
1546
+ thread_local_.last_fp_ = frame->UnpaddedFP();
1524
1547
  }
1525
1548
 
1526
1549
  // Step in or Step in min
@@ -1555,7 +1578,7 @@ bool Debug::StepNextContinue(BreakLocationIterator* break_location_iterator,
1555
1578
  // Continue if we are still on the same frame and in the same statement.
1556
1579
  int current_statement_position =
1557
1580
  break_location_iterator->code()->SourceStatementPosition(frame->pc());
1558
- return thread_local_.last_fp_ == frame->fp() &&
1581
+ return thread_local_.last_fp_ == frame->UnpaddedFP() &&
1559
1582
  thread_local_.last_statement_position_ == current_statement_position;
1560
1583
  }
1561
1584
 
@@ -1568,7 +1591,7 @@ bool Debug::StepNextContinue(BreakLocationIterator* break_location_iterator,
1568
1591
  // object.
1569
1592
  bool Debug::IsDebugBreak(Address addr) {
1570
1593
  Code* code = Code::GetCodeFromTargetAddress(addr);
1571
- return code->ic_state() == DEBUG_BREAK;
1594
+ return code->is_debug_break();
1572
1595
  }
1573
1596
 
1574
1597
 
@@ -1711,12 +1734,11 @@ void Debug::HandleStepIn(Handle<JSFunction> function,
1711
1734
  // function.
1712
1735
  if (!holder.is_null() && holder->IsJSFunction() &&
1713
1736
  !JSFunction::cast(*holder)->IsBuiltin()) {
1714
- Handle<SharedFunctionInfo> shared_info(
1715
- JSFunction::cast(*holder)->shared());
1716
- Debug::FloodWithOneShot(shared_info);
1737
+ Handle<JSFunction> js_function = Handle<JSFunction>::cast(holder);
1738
+ Debug::FloodWithOneShot(js_function);
1717
1739
  }
1718
1740
  } else {
1719
- Debug::FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared()));
1741
+ Debug::FloodWithOneShot(function);
1720
1742
  }
1721
1743
  }
1722
1744
  }
@@ -1756,7 +1778,7 @@ void Debug::ClearOneShot() {
1756
1778
 
1757
1779
  void Debug::ActivateStepIn(StackFrame* frame) {
1758
1780
  ASSERT(!StepOutActive());
1759
- thread_local_.step_into_fp_ = frame->fp();
1781
+ thread_local_.step_into_fp_ = frame->UnpaddedFP();
1760
1782
  }
1761
1783
 
1762
1784
 
@@ -1767,7 +1789,7 @@ void Debug::ClearStepIn() {
1767
1789
 
1768
1790
  void Debug::ActivateStepOut(StackFrame* frame) {
1769
1791
  ASSERT(!StepInActive());
1770
- thread_local_.step_out_fp_ = frame->fp();
1792
+ thread_local_.step_out_fp_ = frame->UnpaddedFP();
1771
1793
  }
1772
1794
 
1773
1795
 
@@ -1784,20 +1806,19 @@ void Debug::ClearStepNext() {
1784
1806
 
1785
1807
 
1786
1808
  // Helper function to compile full code for debugging. This code will
1787
- // have debug break slots and deoptimization
1788
- // information. Deoptimization information is required in case that an
1789
- // optimized version of this function is still activated on the
1790
- // stack. It will also make sure that the full code is compiled with
1791
- // the same flags as the previous version - that is flags which can
1792
- // change the code generated. The current method of mapping from
1793
- // already compiled full code without debug break slots to full code
1794
- // with debug break slots depends on the generated code is otherwise
1795
- // exactly the same.
1796
- static bool CompileFullCodeForDebugging(Handle<SharedFunctionInfo> shared,
1809
+ // have debug break slots and deoptimization information. Deoptimization
1810
+ // information is required in case that an optimized version of this
1811
+ // function is still activated on the stack. It will also make sure that
1812
+ // the full code is compiled with the same flags as the previous version,
1813
+ // that is flags which can change the code generated. The current method
1814
+ // of mapping from already compiled full code without debug break slots
1815
+ // to full code with debug break slots depends on the generated code is
1816
+ // otherwise exactly the same.
1817
+ static bool CompileFullCodeForDebugging(Handle<JSFunction> function,
1797
1818
  Handle<Code> current_code) {
1798
1819
  ASSERT(!current_code->has_debug_break_slots());
1799
1820
 
1800
- CompilationInfo info(shared);
1821
+ CompilationInfoWithZone info(function);
1801
1822
  info.MarkCompilingForDebugging(current_code);
1802
1823
  ASSERT(!info.shared_info()->is_compiled());
1803
1824
  ASSERT(!info.isolate()->has_pending_exception());
@@ -1809,7 +1830,7 @@ static bool CompileFullCodeForDebugging(Handle<SharedFunctionInfo> shared,
1809
1830
  info.isolate()->clear_pending_exception();
1810
1831
  #if DEBUG
1811
1832
  if (result) {
1812
- Handle<Code> new_code(shared->code());
1833
+ Handle<Code> new_code(function->shared()->code());
1813
1834
  ASSERT(new_code->has_debug_break_slots());
1814
1835
  ASSERT(current_code->is_compiled_optimizable() ==
1815
1836
  new_code->is_compiled_optimizable());
@@ -1869,29 +1890,48 @@ static void RedirectActivationsToRecompiledCodeOnThread(
1869
1890
  continue;
1870
1891
  }
1871
1892
 
1872
- intptr_t delta = frame->pc() - frame_code->instruction_start();
1873
- int debug_break_slot_count = 0;
1874
- int mask = RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT);
1893
+ // Iterate over the RelocInfo in the original code to compute the sum of the
1894
+ // constant pools sizes. (See Assembler::CheckConstPool())
1895
+ // Note that this is only useful for architectures using constant pools.
1896
+ int constpool_mask = RelocInfo::ModeMask(RelocInfo::CONST_POOL);
1897
+ int frame_const_pool_size = 0;
1898
+ for (RelocIterator it(*frame_code, constpool_mask); !it.done(); it.next()) {
1899
+ RelocInfo* info = it.rinfo();
1900
+ if (info->pc() >= frame->pc()) break;
1901
+ frame_const_pool_size += static_cast<int>(info->data());
1902
+ }
1903
+ intptr_t frame_offset =
1904
+ frame->pc() - frame_code->instruction_start() - frame_const_pool_size;
1905
+
1906
+ // Iterate over the RelocInfo for new code to find the number of bytes
1907
+ // generated for debug slots and constant pools.
1908
+ int debug_break_slot_bytes = 0;
1909
+ int new_code_const_pool_size = 0;
1910
+ int mask = RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT) |
1911
+ RelocInfo::ModeMask(RelocInfo::CONST_POOL);
1875
1912
  for (RelocIterator it(*new_code, mask); !it.done(); it.next()) {
1876
1913
  // Check if the pc in the new code with debug break
1877
1914
  // slots is before this slot.
1878
1915
  RelocInfo* info = it.rinfo();
1879
- int debug_break_slot_bytes =
1880
- debug_break_slot_count * Assembler::kDebugBreakSlotLength;
1881
- intptr_t new_delta =
1882
- info->pc() -
1883
- new_code->instruction_start() -
1884
- debug_break_slot_bytes;
1885
- if (new_delta > delta) {
1916
+ intptr_t new_offset = info->pc() - new_code->instruction_start() -
1917
+ new_code_const_pool_size - debug_break_slot_bytes;
1918
+ if (new_offset >= frame_offset) {
1886
1919
  break;
1887
1920
  }
1888
1921
 
1889
- // Passed a debug break slot in the full code with debug
1890
- // break slots.
1891
- debug_break_slot_count++;
1922
+ if (RelocInfo::IsDebugBreakSlot(info->rmode())) {
1923
+ debug_break_slot_bytes += Assembler::kDebugBreakSlotLength;
1924
+ } else {
1925
+ ASSERT(RelocInfo::IsConstPool(info->rmode()));
1926
+ // The size of the constant pool is encoded in the data.
1927
+ new_code_const_pool_size += static_cast<int>(info->data());
1928
+ }
1892
1929
  }
1893
- int debug_break_slot_bytes =
1894
- debug_break_slot_count * Assembler::kDebugBreakSlotLength;
1930
+
1931
+ // Compute the equivalent pc in the new code.
1932
+ byte* new_pc = new_code->instruction_start() + frame_offset +
1933
+ debug_break_slot_bytes + new_code_const_pool_size;
1934
+
1895
1935
  if (FLAG_trace_deopt) {
1896
1936
  PrintF("Replacing code %08" V8PRIxPTR " - %08" V8PRIxPTR " (%d) "
1897
1937
  "with %08" V8PRIxPTR " - %08" V8PRIxPTR " (%d) "
@@ -1908,14 +1948,12 @@ static void RedirectActivationsToRecompiledCodeOnThread(
1908
1948
  new_code->instruction_size(),
1909
1949
  new_code->instruction_size(),
1910
1950
  reinterpret_cast<intptr_t>(frame->pc()),
1911
- reinterpret_cast<intptr_t>(new_code->instruction_start()) +
1912
- delta + debug_break_slot_bytes);
1951
+ reinterpret_cast<intptr_t>(new_pc));
1913
1952
  }
1914
1953
 
1915
1954
  // Patch the return address to return into the code with
1916
1955
  // debug break slots.
1917
- frame->set_pc(
1918
- new_code->instruction_start() + delta + debug_break_slot_bytes);
1956
+ frame->set_pc(new_pc);
1919
1957
  }
1920
1958
  }
1921
1959
 
@@ -1957,6 +1995,9 @@ void Debug::PrepareForBreakPoints() {
1957
1995
  Handle<Code> lazy_compile =
1958
1996
  Handle<Code>(isolate_->builtins()->builtin(Builtins::kLazyCompile));
1959
1997
 
1998
+ // There will be at least one break point when we are done.
1999
+ has_break_points_ = true;
2000
+
1960
2001
  // Keep the list of activated functions in a handlified list as it
1961
2002
  // is used both in GC and non-GC code.
1962
2003
  List<Handle<JSFunction> > active_functions(100);
@@ -2013,6 +2054,7 @@ void Debug::PrepareForBreakPoints() {
2013
2054
  // patch the return address to run in the new compiled code.
2014
2055
  for (int i = 0; i < active_functions.length(); i++) {
2015
2056
  Handle<JSFunction> function = active_functions[i];
2057
+ Handle<SharedFunctionInfo> shared(function->shared());
2016
2058
 
2017
2059
  if (function->code()->kind() == Code::FUNCTION &&
2018
2060
  function->code()->has_debug_break_slots()) {
@@ -2020,7 +2062,6 @@ void Debug::PrepareForBreakPoints() {
2020
2062
  continue;
2021
2063
  }
2022
2064
 
2023
- Handle<SharedFunctionInfo> shared(function->shared());
2024
2065
  // If recompilation is not possible just skip it.
2025
2066
  if (shared->is_toplevel() ||
2026
2067
  !shared->allows_lazy_compilation() ||
@@ -2034,13 +2075,12 @@ void Debug::PrepareForBreakPoints() {
2034
2075
  // Try to compile the full code with debug break slots. If it
2035
2076
  // fails just keep the current code.
2036
2077
  Handle<Code> current_code(function->shared()->code());
2037
- ZoneScope zone_scope(isolate_, DELETE_ON_EXIT);
2038
2078
  shared->set_code(*lazy_compile);
2039
2079
  bool prev_force_debugger_active =
2040
2080
  isolate_->debugger()->force_debugger_active();
2041
2081
  isolate_->debugger()->set_force_debugger_active(true);
2042
2082
  ASSERT(current_code->kind() == Code::FUNCTION);
2043
- CompileFullCodeForDebugging(shared, current_code);
2083
+ CompileFullCodeForDebugging(function, current_code);
2044
2084
  isolate_->debugger()->set_force_debugger_active(
2045
2085
  prev_force_debugger_active);
2046
2086
  if (!shared->is_compiled()) {
@@ -2063,16 +2103,130 @@ void Debug::PrepareForBreakPoints() {
2063
2103
  }
2064
2104
 
2065
2105
 
2106
+ Object* Debug::FindSharedFunctionInfoInScript(Handle<Script> script,
2107
+ int position) {
2108
+ // Iterate the heap looking for SharedFunctionInfo generated from the
2109
+ // script. The inner most SharedFunctionInfo containing the source position
2110
+ // for the requested break point is found.
2111
+ // NOTE: This might require several heap iterations. If the SharedFunctionInfo
2112
+ // which is found is not compiled it is compiled and the heap is iterated
2113
+ // again as the compilation might create inner functions from the newly
2114
+ // compiled function and the actual requested break point might be in one of
2115
+ // these functions.
2116
+ // NOTE: The below fix-point iteration depends on all functions that cannot be
2117
+ // compiled lazily without a context to not be compiled at all. Compilation
2118
+ // will be triggered at points where we do not need a context.
2119
+ bool done = false;
2120
+ // The current candidate for the source position:
2121
+ int target_start_position = RelocInfo::kNoPosition;
2122
+ Handle<JSFunction> target_function;
2123
+ Handle<SharedFunctionInfo> target;
2124
+ while (!done) {
2125
+ { // Extra scope for iterator and no-allocation.
2126
+ isolate_->heap()->EnsureHeapIsIterable();
2127
+ AssertNoAllocation no_alloc_during_heap_iteration;
2128
+ HeapIterator iterator;
2129
+ for (HeapObject* obj = iterator.next();
2130
+ obj != NULL; obj = iterator.next()) {
2131
+ bool found_next_candidate = false;
2132
+ Handle<JSFunction> function;
2133
+ Handle<SharedFunctionInfo> shared;
2134
+ if (obj->IsJSFunction()) {
2135
+ function = Handle<JSFunction>(JSFunction::cast(obj));
2136
+ shared = Handle<SharedFunctionInfo>(function->shared());
2137
+ ASSERT(shared->allows_lazy_compilation() || shared->is_compiled());
2138
+ found_next_candidate = true;
2139
+ } else if (obj->IsSharedFunctionInfo()) {
2140
+ shared = Handle<SharedFunctionInfo>(SharedFunctionInfo::cast(obj));
2141
+ // Skip functions that we cannot compile lazily without a context,
2142
+ // which is not available here, because there is no closure.
2143
+ found_next_candidate = shared->is_compiled() ||
2144
+ shared->allows_lazy_compilation_without_context();
2145
+ }
2146
+ if (!found_next_candidate) continue;
2147
+ if (shared->script() == *script) {
2148
+ // If the SharedFunctionInfo found has the requested script data and
2149
+ // contains the source position it is a candidate.
2150
+ int start_position = shared->function_token_position();
2151
+ if (start_position == RelocInfo::kNoPosition) {
2152
+ start_position = shared->start_position();
2153
+ }
2154
+ if (start_position <= position &&
2155
+ position <= shared->end_position()) {
2156
+ // If there is no candidate or this function is within the current
2157
+ // candidate this is the new candidate.
2158
+ if (target.is_null()) {
2159
+ target_start_position = start_position;
2160
+ target_function = function;
2161
+ target = shared;
2162
+ } else {
2163
+ if (target_start_position == start_position &&
2164
+ shared->end_position() == target->end_position()) {
2165
+ // If a top-level function contains only one function
2166
+ // declaration the source for the top-level and the function
2167
+ // is the same. In that case prefer the non top-level function.
2168
+ if (!shared->is_toplevel()) {
2169
+ target_start_position = start_position;
2170
+ target_function = function;
2171
+ target = shared;
2172
+ }
2173
+ } else if (target_start_position <= start_position &&
2174
+ shared->end_position() <= target->end_position()) {
2175
+ // This containment check includes equality as a function
2176
+ // inside a top-level function can share either start or end
2177
+ // position with the top-level function.
2178
+ target_start_position = start_position;
2179
+ target_function = function;
2180
+ target = shared;
2181
+ }
2182
+ }
2183
+ }
2184
+ }
2185
+ } // End for loop.
2186
+ } // End no-allocation scope.
2187
+
2188
+ if (target.is_null()) {
2189
+ return isolate_->heap()->undefined_value();
2190
+ }
2191
+
2192
+ // There will be at least one break point when we are done.
2193
+ has_break_points_ = true;
2194
+
2195
+ // If the candidate found is compiled we are done.
2196
+ done = target->is_compiled();
2197
+ if (!done) {
2198
+ // If the candidate is not compiled, compile it to reveal any inner
2199
+ // functions which might contain the requested source position. This
2200
+ // will compile all inner functions that cannot be compiled without a
2201
+ // context, because Compiler::BuildFunctionInfo checks whether the
2202
+ // debugger is active.
2203
+ if (target_function.is_null()) {
2204
+ SharedFunctionInfo::CompileLazy(target, KEEP_EXCEPTION);
2205
+ } else {
2206
+ JSFunction::CompileLazy(target_function, KEEP_EXCEPTION);
2207
+ }
2208
+ }
2209
+ } // End while loop.
2210
+
2211
+ return *target;
2212
+ }
2213
+
2214
+
2066
2215
  // Ensures the debug information is present for shared.
2067
- bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared) {
2216
+ bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared,
2217
+ Handle<JSFunction> function) {
2068
2218
  // Return if we already have the debug info for shared.
2069
2219
  if (HasDebugInfo(shared)) {
2070
2220
  ASSERT(shared->is_compiled());
2071
2221
  return true;
2072
2222
  }
2073
2223
 
2074
- // Ensure shared in compiled. Return false if this failed.
2075
- if (!SharedFunctionInfo::EnsureCompiled(shared, CLEAR_EXCEPTION)) {
2224
+ // There will be at least one break point when we are done.
2225
+ has_break_points_ = true;
2226
+
2227
+ // Ensure function is compiled. Return false if this failed.
2228
+ if (!function.is_null() &&
2229
+ !JSFunction::EnsureCompiled(function, CLEAR_EXCEPTION)) {
2076
2230
  return false;
2077
2231
  }
2078
2232
 
@@ -2084,9 +2238,6 @@ bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared) {
2084
2238
  node->set_next(debug_info_list_);
2085
2239
  debug_info_list_ = node;
2086
2240
 
2087
- // Now there is at least one break point.
2088
- has_break_points_ = true;
2089
-
2090
2241
  return true;
2091
2242
  }
2092
2243
 
@@ -2128,9 +2279,9 @@ void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
2128
2279
  PrepareForBreakPoints();
2129
2280
 
2130
2281
  // Get the executing function in which the debug break occurred.
2131
- Handle<SharedFunctionInfo> shared =
2132
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
2133
- if (!EnsureDebugInfo(shared)) {
2282
+ Handle<JSFunction> function(JSFunction::cast(frame->function()));
2283
+ Handle<SharedFunctionInfo> shared(function->shared());
2284
+ if (!EnsureDebugInfo(shared, function)) {
2134
2285
  // Return if we failed to retrieve the debug info.
2135
2286
  return;
2136
2287
  }
@@ -2146,7 +2297,7 @@ void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
2146
2297
  // Find the call address in the running code. This address holds the call to
2147
2298
  // either a DebugBreakXXX or to the debug break return entry code if the
2148
2299
  // break point is still active after processing the break point.
2149
- Address addr = frame->pc() - Assembler::kCallTargetAddressOffset;
2300
+ Address addr = frame->pc() - Assembler::kPatchDebugBreakSlotReturnOffset;
2150
2301
 
2151
2302
  // Check if the location is at JS exit or debug break slot.
2152
2303
  bool at_js_return = false;
@@ -2220,9 +2371,9 @@ bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
2220
2371
  PrepareForBreakPoints();
2221
2372
 
2222
2373
  // Get the executing function in which the debug break occurred.
2223
- Handle<SharedFunctionInfo> shared =
2224
- Handle<SharedFunctionInfo>(JSFunction::cast(frame->function())->shared());
2225
- if (!EnsureDebugInfo(shared)) {
2374
+ Handle<JSFunction> function(JSFunction::cast(frame->function()));
2375
+ Handle<SharedFunctionInfo> shared(function->shared());
2376
+ if (!EnsureDebugInfo(shared, function)) {
2226
2377
  // Return if we failed to retrieve the debug info.
2227
2378
  return false;
2228
2379
  }
@@ -2235,7 +2386,7 @@ bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
2235
2386
  #endif
2236
2387
 
2237
2388
  // Find the call address in the running code.
2238
- Address addr = frame->pc() - Assembler::kCallTargetAddressOffset;
2389
+ Address addr = frame->pc() - Assembler::kPatchDebugBreakSlotReturnOffset;
2239
2390
 
2240
2391
  // Check if the location is at JS return.
2241
2392
  RelocIterator it(debug_info->code());
@@ -2253,7 +2404,9 @@ bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
2253
2404
  void Debug::FramesHaveBeenDropped(StackFrame::Id new_break_frame_id,
2254
2405
  FrameDropMode mode,
2255
2406
  Object** restarter_frame_function_pointer) {
2256
- thread_local_.frame_drop_mode_ = mode;
2407
+ if (mode != CURRENTLY_SET_MODE) {
2408
+ thread_local_.frame_drop_mode_ = mode;
2409
+ }
2257
2410
  thread_local_.break_frame_id_ = new_break_frame_id;
2258
2411
  thread_local_.restarter_frame_function_pointer_ =
2259
2412
  restarter_frame_function_pointer;
@@ -2268,7 +2421,7 @@ const int Debug::FramePaddingLayout::kPaddingValue = kInitialSize + 1;
2268
2421
 
2269
2422
 
2270
2423
  bool Debug::IsDebugGlobal(GlobalObject* global) {
2271
- return IsLoaded() && global == debug_context()->global();
2424
+ return IsLoaded() && global == debug_context()->global_object();
2272
2425
  }
2273
2426
 
2274
2427
 
@@ -2278,14 +2431,15 @@ void Debug::ClearMirrorCache() {
2278
2431
  ASSERT(isolate_->context() == *Debug::debug_context());
2279
2432
 
2280
2433
  // Clear the mirror cache.
2281
- Handle<String> function_name =
2282
- isolate_->factory()->LookupSymbol(CStrVector("ClearMirrorCache"));
2283
- Handle<Object> fun(Isolate::Current()->global()->GetPropertyNoExceptionThrown(
2434
+ Handle<String> function_name = isolate_->factory()->LookupOneByteSymbol(
2435
+ STATIC_ASCII_VECTOR("ClearMirrorCache"));
2436
+ Handle<Object> fun(
2437
+ Isolate::Current()->global_object()->GetPropertyNoExceptionThrown(
2284
2438
  *function_name));
2285
2439
  ASSERT(fun->IsJSFunction());
2286
2440
  bool caught_exception;
2287
2441
  Execution::TryCall(Handle<JSFunction>::cast(fun),
2288
- Handle<JSObject>(Debug::debug_context()->global()),
2442
+ Handle<JSObject>(Debug::debug_context()->global_object()),
2289
2443
  0, NULL, &caught_exception);
2290
2444
  }
2291
2445
 
@@ -2372,6 +2526,7 @@ Debugger::Debugger(Isolate* isolate)
2372
2526
  event_listener_data_(Handle<Object>()),
2373
2527
  compiling_natives_(false),
2374
2528
  is_loading_debugger_(false),
2529
+ live_edit_enabled_(true),
2375
2530
  never_unload_debugger_(false),
2376
2531
  force_debugger_active_(false),
2377
2532
  message_handler_(NULL),
@@ -2405,9 +2560,10 @@ Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
2405
2560
 
2406
2561
  // Create the execution state object.
2407
2562
  Handle<String> constructor_str =
2408
- isolate_->factory()->LookupSymbol(constructor_name);
2563
+ isolate_->factory()->LookupUtf8Symbol(constructor_name);
2409
2564
  Handle<Object> constructor(
2410
- isolate_->global()->GetPropertyNoExceptionThrown(*constructor_str));
2565
+ isolate_->global_object()->GetPropertyNoExceptionThrown(
2566
+ *constructor_str));
2411
2567
  ASSERT(constructor->IsJSFunction());
2412
2568
  if (!constructor->IsJSFunction()) {
2413
2569
  *caught_exception = true;
@@ -2415,7 +2571,7 @@ Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
2415
2571
  }
2416
2572
  Handle<Object> js_object = Execution::TryCall(
2417
2573
  Handle<JSFunction>::cast(constructor),
2418
- Handle<JSObject>(isolate_->debug()->debug_context()->global()),
2574
+ Handle<JSObject>(isolate_->debug()->debug_context()->global_object()),
2419
2575
  argc,
2420
2576
  argv,
2421
2577
  caught_exception);
@@ -2635,9 +2791,10 @@ void Debugger::OnAfterCompile(Handle<Script> script,
2635
2791
 
2636
2792
  // Get the function UpdateScriptBreakPoints (defined in debug-debugger.js).
2637
2793
  Handle<String> update_script_break_points_symbol =
2638
- isolate_->factory()->LookupAsciiSymbol("UpdateScriptBreakPoints");
2794
+ isolate_->factory()->LookupOneByteSymbol(
2795
+ STATIC_ASCII_VECTOR("UpdateScriptBreakPoints"));
2639
2796
  Handle<Object> update_script_break_points =
2640
- Handle<Object>(debug->debug_context()->global()->
2797
+ Handle<Object>(debug->debug_context()->global_object()->
2641
2798
  GetPropertyNoExceptionThrown(*update_script_break_points_symbol));
2642
2799
  if (!update_script_break_points->IsJSFunction()) {
2643
2800
  return;
@@ -2682,6 +2839,7 @@ void Debugger::OnScriptCollected(int id) {
2682
2839
  HandleScope scope(isolate_);
2683
2840
 
2684
2841
  // No more to do if not debugging.
2842
+ if (isolate_->debug()->InDebugger()) return;
2685
2843
  if (!IsDebuggerActive()) return;
2686
2844
  if (!Debugger::EventActive(v8::ScriptCollected)) return;
2687
2845
 
@@ -2793,7 +2951,7 @@ void Debugger::CallJSEventCallback(v8::DebugEvent event,
2793
2951
  event_listener_data_ };
2794
2952
  bool caught_exception;
2795
2953
  Execution::TryCall(fun,
2796
- isolate_->global(),
2954
+ isolate_->global_object(),
2797
2955
  ARRAY_SIZE(argv),
2798
2956
  argv,
2799
2957
  &caught_exception);
@@ -3613,6 +3771,7 @@ void MessageDispatchHelperThread::Schedule() {
3613
3771
 
3614
3772
 
3615
3773
  void MessageDispatchHelperThread::Run() {
3774
+ Isolate* isolate = Isolate::Current();
3616
3775
  while (true) {
3617
3776
  sem_->Wait();
3618
3777
  {
@@ -3620,8 +3779,8 @@ void MessageDispatchHelperThread::Run() {
3620
3779
  already_signalled_ = false;
3621
3780
  }
3622
3781
  {
3623
- Locker locker;
3624
- Isolate::Current()->debugger()->CallMessageDispatchHandler();
3782
+ Locker locker(reinterpret_cast<v8::Isolate*>(isolate));
3783
+ isolate->debugger()->CallMessageDispatchHandler();
3625
3784
  }
3626
3785
  }
3627
3786
  }