mustang 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Isolate +9 -0
- data/README.md +6 -12
- data/Rakefile +30 -4
- data/TODO.md +9 -0
- data/ext/v8/extconf.rb +56 -0
- data/ext/v8/v8.cpp +37 -0
- data/ext/v8/v8_array.cpp +161 -0
- data/ext/v8/v8_array.h +17 -0
- data/ext/v8/v8_base.cpp +147 -0
- data/ext/v8/v8_base.h +23 -0
- data/ext/v8/v8_cast.cpp +151 -0
- data/ext/v8/v8_cast.h +64 -0
- data/ext/v8/v8_context.cpp +174 -0
- data/ext/v8/v8_context.h +12 -0
- data/ext/v8/v8_date.cpp +61 -0
- data/ext/v8/v8_date.h +16 -0
- data/ext/v8/v8_errors.cpp +147 -0
- data/ext/v8/v8_errors.h +19 -0
- data/ext/v8/v8_external.cpp +66 -0
- data/ext/v8/v8_external.h +16 -0
- data/ext/v8/v8_function.cpp +182 -0
- data/ext/v8/v8_function.h +14 -0
- data/ext/v8/v8_integer.cpp +70 -0
- data/ext/v8/v8_integer.h +16 -0
- data/ext/v8/v8_macros.h +30 -0
- data/ext/v8/v8_main.cpp +53 -0
- data/ext/v8/v8_main.h +13 -0
- data/ext/v8/v8_number.cpp +62 -0
- data/ext/v8/v8_number.h +16 -0
- data/ext/v8/v8_object.cpp +172 -0
- data/ext/v8/v8_object.h +17 -0
- data/ext/v8/v8_ref.cpp +72 -0
- data/ext/v8/v8_ref.h +43 -0
- data/ext/v8/v8_regexp.cpp +148 -0
- data/ext/v8/v8_regexp.h +16 -0
- data/ext/v8/v8_string.cpp +78 -0
- data/ext/v8/v8_string.h +16 -0
- data/ext/v8/v8_value.cpp +370 -0
- data/ext/v8/v8_value.h +19 -0
- data/gemspec.yml +2 -1
- data/lib/core_ext/class.rb +14 -0
- data/lib/core_ext/object.rb +12 -0
- data/lib/core_ext/symbol.rb +23 -0
- data/lib/mustang.rb +44 -0
- data/lib/mustang/context.rb +69 -0
- data/lib/mustang/errors.rb +36 -0
- data/lib/support/delegated.rb +25 -0
- data/lib/v8/array.rb +21 -0
- data/lib/v8/context.rb +13 -0
- data/lib/v8/date.rb +20 -0
- data/lib/v8/error.rb +15 -0
- data/lib/v8/external.rb +16 -0
- data/lib/v8/function.rb +11 -0
- data/lib/v8/integer.rb +16 -0
- data/lib/v8/number.rb +16 -0
- data/lib/v8/object.rb +66 -0
- data/lib/v8/regexp.rb +23 -0
- data/lib/v8/string.rb +27 -0
- data/mustang.gemspec +3 -0
- data/spec/core_ext/class_spec.rb +19 -0
- data/spec/core_ext/object_spec.rb +19 -0
- data/spec/core_ext/symbol_spec.rb +27 -0
- data/spec/fixtures/test1.js +2 -0
- data/spec/fixtures/test2.js +2 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/v8/array_spec.rb +88 -0
- data/spec/v8/cast_spec.rb +151 -0
- data/spec/v8/context_spec.rb +78 -0
- data/spec/v8/data_spec.rb +39 -0
- data/spec/v8/date_spec.rb +45 -0
- data/spec/v8/empty_spec.rb +27 -0
- data/spec/v8/errors_spec.rb +142 -0
- data/spec/v8/external_spec.rb +44 -0
- data/spec/v8/function_spec.rb +170 -0
- data/spec/v8/integer_spec.rb +41 -0
- data/spec/v8/main_spec.rb +18 -0
- data/spec/v8/null_spec.rb +27 -0
- data/spec/v8/number_spec.rb +40 -0
- data/spec/v8/object_spec.rb +79 -0
- data/spec/v8/primitive_spec.rb +9 -0
- data/spec/v8/regexp_spec.rb +65 -0
- data/spec/v8/string_spec.rb +48 -0
- data/spec/v8/undefined_spec.rb +27 -0
- data/spec/v8/value_spec.rb +215 -0
- data/vendor/v8/.gitignore +2 -0
- data/vendor/v8/AUTHORS +3 -1
- data/vendor/v8/ChangeLog +117 -0
- data/vendor/v8/SConstruct +334 -53
- data/vendor/v8/include/v8-debug.h +21 -11
- data/vendor/v8/include/v8-preparser.h +1 -1
- data/vendor/v8/include/v8-profiler.h +122 -43
- data/vendor/v8/include/v8-testing.h +5 -0
- data/vendor/v8/include/v8.h +171 -17
- data/vendor/v8/preparser/SConscript +38 -0
- data/vendor/v8/preparser/preparser-process.cc +77 -114
- data/vendor/v8/samples/shell.cc +232 -46
- data/vendor/v8/src/SConscript +29 -5
- data/vendor/v8/src/accessors.cc +70 -211
- data/vendor/v8/{test/cctest/test-mips.cc → src/allocation-inl.h} +15 -18
- data/vendor/v8/src/allocation.cc +0 -82
- data/vendor/v8/src/allocation.h +9 -42
- data/vendor/v8/src/api.cc +1645 -1156
- data/vendor/v8/src/api.h +76 -12
- data/vendor/v8/src/apiutils.h +0 -7
- data/vendor/v8/src/arguments.h +15 -4
- data/vendor/v8/src/arm/assembler-arm-inl.h +10 -9
- data/vendor/v8/src/arm/assembler-arm.cc +62 -23
- data/vendor/v8/src/arm/assembler-arm.h +76 -11
- data/vendor/v8/src/arm/builtins-arm.cc +39 -33
- data/vendor/v8/src/arm/code-stubs-arm.cc +1182 -402
- data/vendor/v8/src/arm/code-stubs-arm.h +20 -54
- data/vendor/v8/src/arm/codegen-arm.cc +159 -106
- data/vendor/v8/src/arm/codegen-arm.h +6 -6
- data/vendor/v8/src/arm/constants-arm.h +16 -1
- data/vendor/v8/src/arm/cpu-arm.cc +7 -5
- data/vendor/v8/src/arm/debug-arm.cc +6 -4
- data/vendor/v8/src/arm/deoptimizer-arm.cc +51 -14
- data/vendor/v8/src/arm/disasm-arm.cc +47 -15
- data/vendor/v8/src/arm/frames-arm.h +1 -1
- data/vendor/v8/src/arm/full-codegen-arm.cc +724 -408
- data/vendor/v8/src/arm/ic-arm.cc +90 -85
- data/vendor/v8/src/arm/lithium-arm.cc +140 -69
- data/vendor/v8/src/arm/lithium-arm.h +161 -46
- data/vendor/v8/src/arm/lithium-codegen-arm.cc +567 -297
- data/vendor/v8/src/arm/lithium-codegen-arm.h +21 -9
- data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +2 -0
- data/vendor/v8/src/arm/macro-assembler-arm.cc +457 -96
- data/vendor/v8/src/arm/macro-assembler-arm.h +115 -18
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +20 -13
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +1 -0
- data/vendor/v8/src/arm/simulator-arm.cc +184 -101
- data/vendor/v8/src/arm/simulator-arm.h +26 -21
- data/vendor/v8/src/arm/stub-cache-arm.cc +450 -467
- data/vendor/v8/src/arm/virtual-frame-arm.cc +14 -12
- data/vendor/v8/src/arm/virtual-frame-arm.h +11 -8
- data/vendor/v8/src/array.js +35 -18
- data/vendor/v8/src/assembler.cc +186 -92
- data/vendor/v8/src/assembler.h +106 -69
- data/vendor/v8/src/ast-inl.h +5 -0
- data/vendor/v8/src/ast.cc +46 -35
- data/vendor/v8/src/ast.h +107 -50
- data/vendor/v8/src/atomicops.h +2 -0
- data/vendor/v8/src/atomicops_internals_mips_gcc.h +169 -0
- data/vendor/v8/src/bootstrapper.cc +649 -399
- data/vendor/v8/src/bootstrapper.h +94 -27
- data/vendor/v8/src/builtins.cc +359 -227
- data/vendor/v8/src/builtins.h +157 -123
- data/vendor/v8/src/checks.cc +2 -2
- data/vendor/v8/src/checks.h +4 -0
- data/vendor/v8/src/code-stubs.cc +27 -17
- data/vendor/v8/src/code-stubs.h +38 -17
- data/vendor/v8/src/codegen-inl.h +5 -1
- data/vendor/v8/src/codegen.cc +27 -17
- data/vendor/v8/src/codegen.h +9 -9
- data/vendor/v8/src/compilation-cache.cc +92 -206
- data/vendor/v8/src/compilation-cache.h +205 -30
- data/vendor/v8/src/compiler.cc +107 -120
- data/vendor/v8/src/compiler.h +17 -2
- data/vendor/v8/src/contexts.cc +22 -15
- data/vendor/v8/src/contexts.h +14 -8
- data/vendor/v8/src/conversions.cc +86 -30
- data/vendor/v8/src/counters.cc +19 -4
- data/vendor/v8/src/counters.h +28 -16
- data/vendor/v8/src/cpu-profiler-inl.h +4 -3
- data/vendor/v8/src/cpu-profiler.cc +123 -72
- data/vendor/v8/src/cpu-profiler.h +33 -19
- data/vendor/v8/src/cpu.h +2 -0
- data/vendor/v8/src/d8-debug.cc +3 -3
- data/vendor/v8/src/d8-debug.h +7 -6
- data/vendor/v8/src/d8-posix.cc +2 -0
- data/vendor/v8/src/d8.cc +22 -12
- data/vendor/v8/src/d8.gyp +3 -0
- data/vendor/v8/src/d8.js +618 -0
- data/vendor/v8/src/data-flow.h +3 -3
- data/vendor/v8/src/dateparser.h +4 -2
- data/vendor/v8/src/debug-agent.cc +10 -9
- data/vendor/v8/src/debug-agent.h +9 -11
- data/vendor/v8/src/debug-debugger.js +121 -0
- data/vendor/v8/src/debug.cc +331 -227
- data/vendor/v8/src/debug.h +248 -219
- data/vendor/v8/src/deoptimizer.cc +173 -62
- data/vendor/v8/src/deoptimizer.h +119 -19
- data/vendor/v8/src/disasm.h +3 -0
- data/vendor/v8/src/disassembler.cc +10 -9
- data/vendor/v8/src/execution.cc +185 -129
- data/vendor/v8/src/execution.h +47 -78
- data/vendor/v8/src/extensions/experimental/break-iterator.cc +250 -0
- data/vendor/v8/src/extensions/experimental/break-iterator.h +89 -0
- data/vendor/v8/src/extensions/experimental/experimental.gyp +2 -0
- data/vendor/v8/src/extensions/experimental/i18n-extension.cc +22 -2
- data/vendor/v8/src/extensions/externalize-string-extension.cc +2 -2
- data/vendor/v8/src/extensions/gc-extension.cc +1 -1
- data/vendor/v8/src/factory.cc +261 -154
- data/vendor/v8/src/factory.h +162 -158
- data/vendor/v8/src/flag-definitions.h +17 -11
- data/vendor/v8/src/frame-element.cc +0 -5
- data/vendor/v8/src/frame-element.h +9 -13
- data/vendor/v8/src/frames-inl.h +7 -0
- data/vendor/v8/src/frames.cc +56 -46
- data/vendor/v8/src/frames.h +36 -25
- data/vendor/v8/src/full-codegen.cc +15 -24
- data/vendor/v8/src/full-codegen.h +13 -41
- data/vendor/v8/src/func-name-inferrer.cc +7 -6
- data/vendor/v8/src/func-name-inferrer.h +1 -1
- data/vendor/v8/src/gdb-jit.cc +1 -0
- data/vendor/v8/src/global-handles.cc +118 -56
- data/vendor/v8/src/global-handles.h +98 -40
- data/vendor/v8/src/globals.h +2 -2
- data/vendor/v8/src/handles-inl.h +106 -9
- data/vendor/v8/src/handles.cc +220 -157
- data/vendor/v8/src/handles.h +38 -59
- data/vendor/v8/src/hashmap.h +3 -3
- data/vendor/v8/src/heap-inl.h +141 -25
- data/vendor/v8/src/heap-profiler.cc +117 -63
- data/vendor/v8/src/heap-profiler.h +38 -21
- data/vendor/v8/src/heap.cc +805 -564
- data/vendor/v8/src/heap.h +640 -594
- data/vendor/v8/src/hydrogen-instructions.cc +216 -73
- data/vendor/v8/src/hydrogen-instructions.h +259 -124
- data/vendor/v8/src/hydrogen.cc +996 -1171
- data/vendor/v8/src/hydrogen.h +163 -144
- data/vendor/v8/src/ia32/assembler-ia32-inl.h +12 -11
- data/vendor/v8/src/ia32/assembler-ia32.cc +85 -39
- data/vendor/v8/src/ia32/assembler-ia32.h +82 -16
- data/vendor/v8/src/ia32/builtins-ia32.cc +64 -58
- data/vendor/v8/src/ia32/code-stubs-ia32.cc +248 -324
- data/vendor/v8/src/ia32/code-stubs-ia32.h +3 -44
- data/vendor/v8/src/ia32/codegen-ia32.cc +217 -165
- data/vendor/v8/src/ia32/codegen-ia32.h +3 -0
- data/vendor/v8/src/ia32/cpu-ia32.cc +6 -5
- data/vendor/v8/src/ia32/debug-ia32.cc +8 -5
- data/vendor/v8/src/ia32/deoptimizer-ia32.cc +124 -14
- data/vendor/v8/src/ia32/disasm-ia32.cc +85 -62
- data/vendor/v8/src/ia32/frames-ia32.h +1 -1
- data/vendor/v8/src/ia32/full-codegen-ia32.cc +348 -435
- data/vendor/v8/src/ia32/ic-ia32.cc +91 -91
- data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +500 -255
- data/vendor/v8/src/ia32/lithium-codegen-ia32.h +13 -4
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +6 -0
- data/vendor/v8/src/ia32/lithium-ia32.cc +122 -45
- data/vendor/v8/src/ia32/lithium-ia32.h +128 -41
- data/vendor/v8/src/ia32/macro-assembler-ia32.cc +109 -84
- data/vendor/v8/src/ia32/macro-assembler-ia32.h +18 -9
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +26 -15
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +1 -0
- data/vendor/v8/src/ia32/register-allocator-ia32.cc +30 -30
- data/vendor/v8/src/ia32/simulator-ia32.h +4 -4
- data/vendor/v8/src/ia32/stub-cache-ia32.cc +383 -400
- data/vendor/v8/src/ia32/virtual-frame-ia32.cc +36 -13
- data/vendor/v8/src/ia32/virtual-frame-ia32.h +11 -5
- data/vendor/v8/src/ic-inl.h +12 -2
- data/vendor/v8/src/ic.cc +304 -221
- data/vendor/v8/src/ic.h +115 -58
- data/vendor/v8/src/interpreter-irregexp.cc +25 -21
- data/vendor/v8/src/interpreter-irregexp.h +2 -1
- data/vendor/v8/src/isolate.cc +883 -0
- data/vendor/v8/src/isolate.h +1304 -0
- data/vendor/v8/src/json.js +10 -10
- data/vendor/v8/src/jsregexp.cc +111 -80
- data/vendor/v8/src/jsregexp.h +6 -7
- data/vendor/v8/src/jump-target-heavy.cc +5 -8
- data/vendor/v8/src/jump-target-heavy.h +0 -6
- data/vendor/v8/src/jump-target-inl.h +1 -1
- data/vendor/v8/src/jump-target-light.cc +3 -3
- data/vendor/v8/src/lithium-allocator-inl.h +2 -0
- data/vendor/v8/src/lithium-allocator.cc +42 -30
- data/vendor/v8/src/lithium-allocator.h +8 -22
- data/vendor/v8/src/lithium.cc +1 -0
- data/vendor/v8/src/liveedit.cc +141 -99
- data/vendor/v8/src/liveedit.h +7 -2
- data/vendor/v8/src/liveobjectlist-inl.h +90 -0
- data/vendor/v8/src/liveobjectlist.cc +2537 -1
- data/vendor/v8/src/liveobjectlist.h +245 -35
- data/vendor/v8/src/log-utils.cc +122 -35
- data/vendor/v8/src/log-utils.h +33 -36
- data/vendor/v8/src/log.cc +299 -241
- data/vendor/v8/src/log.h +177 -110
- data/vendor/v8/src/mark-compact.cc +612 -470
- data/vendor/v8/src/mark-compact.h +153 -80
- data/vendor/v8/src/messages.cc +16 -14
- data/vendor/v8/src/messages.js +30 -7
- data/vendor/v8/src/mips/assembler-mips-inl.h +155 -35
- data/vendor/v8/src/mips/assembler-mips.cc +1093 -219
- data/vendor/v8/src/mips/assembler-mips.h +552 -153
- data/vendor/v8/src/mips/builtins-mips.cc +43 -100
- data/vendor/v8/src/mips/code-stubs-mips.cc +752 -0
- data/vendor/v8/src/mips/code-stubs-mips.h +511 -0
- data/vendor/v8/src/mips/codegen-mips-inl.h +8 -14
- data/vendor/v8/src/mips/codegen-mips.cc +672 -896
- data/vendor/v8/src/mips/codegen-mips.h +271 -69
- data/vendor/v8/src/mips/constants-mips.cc +44 -20
- data/vendor/v8/src/mips/constants-mips.h +238 -40
- data/vendor/v8/src/mips/cpu-mips.cc +20 -3
- data/vendor/v8/src/mips/debug-mips.cc +35 -7
- data/vendor/v8/src/mips/deoptimizer-mips.cc +91 -0
- data/vendor/v8/src/mips/disasm-mips.cc +329 -93
- data/vendor/v8/src/mips/frames-mips.cc +2 -50
- data/vendor/v8/src/mips/frames-mips.h +24 -9
- data/vendor/v8/src/mips/full-codegen-mips.cc +473 -23
- data/vendor/v8/src/mips/ic-mips.cc +81 -45
- data/vendor/v8/src/mips/jump-target-mips.cc +11 -106
- data/vendor/v8/src/mips/lithium-codegen-mips.h +65 -0
- data/vendor/v8/src/mips/lithium-mips.h +304 -0
- data/vendor/v8/src/mips/macro-assembler-mips.cc +2391 -390
- data/vendor/v8/src/mips/macro-assembler-mips.h +718 -121
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +478 -0
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +250 -0
- data/vendor/v8/src/mips/register-allocator-mips-inl.h +0 -3
- data/vendor/v8/src/mips/register-allocator-mips.h +3 -2
- data/vendor/v8/src/mips/simulator-mips.cc +1009 -221
- data/vendor/v8/src/mips/simulator-mips.h +119 -36
- data/vendor/v8/src/mips/stub-cache-mips.cc +331 -148
- data/vendor/v8/src/mips/{fast-codegen-mips.cc → virtual-frame-mips-inl.h} +11 -30
- data/vendor/v8/src/mips/virtual-frame-mips.cc +137 -149
- data/vendor/v8/src/mips/virtual-frame-mips.h +294 -312
- data/vendor/v8/src/mirror-debugger.js +9 -8
- data/vendor/v8/src/mksnapshot.cc +2 -2
- data/vendor/v8/src/objects-debug.cc +16 -16
- data/vendor/v8/src/objects-inl.h +421 -195
- data/vendor/v8/src/objects-printer.cc +7 -7
- data/vendor/v8/src/objects-visiting.cc +1 -1
- data/vendor/v8/src/objects-visiting.h +33 -12
- data/vendor/v8/src/objects.cc +935 -658
- data/vendor/v8/src/objects.h +234 -139
- data/vendor/v8/src/parser.cc +484 -439
- data/vendor/v8/src/parser.h +35 -14
- data/vendor/v8/src/platform-cygwin.cc +173 -107
- data/vendor/v8/src/platform-freebsd.cc +224 -72
- data/vendor/v8/src/platform-linux.cc +234 -95
- data/vendor/v8/src/platform-macos.cc +215 -82
- data/vendor/v8/src/platform-nullos.cc +9 -3
- data/vendor/v8/src/platform-openbsd.cc +22 -7
- data/vendor/v8/src/platform-posix.cc +30 -5
- data/vendor/v8/src/platform-solaris.cc +120 -38
- data/vendor/v8/src/platform-tls-mac.h +62 -0
- data/vendor/v8/src/platform-tls-win32.h +62 -0
- data/vendor/v8/src/platform-tls.h +50 -0
- data/vendor/v8/src/platform-win32.cc +195 -97
- data/vendor/v8/src/platform.h +72 -15
- data/vendor/v8/src/preparse-data.cc +2 -0
- data/vendor/v8/src/preparser-api.cc +8 -2
- data/vendor/v8/src/preparser.cc +1 -1
- data/vendor/v8/src/prettyprinter.cc +43 -52
- data/vendor/v8/src/prettyprinter.h +1 -1
- data/vendor/v8/src/profile-generator-inl.h +0 -28
- data/vendor/v8/src/profile-generator.cc +942 -685
- data/vendor/v8/src/profile-generator.h +210 -176
- data/vendor/v8/src/property.cc +6 -0
- data/vendor/v8/src/property.h +14 -3
- data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +1 -1
- data/vendor/v8/src/regexp-macro-assembler.cc +28 -19
- data/vendor/v8/src/regexp-macro-assembler.h +11 -6
- data/vendor/v8/src/regexp-stack.cc +18 -10
- data/vendor/v8/src/regexp-stack.h +45 -21
- data/vendor/v8/src/regexp.js +3 -3
- data/vendor/v8/src/register-allocator-inl.h +3 -3
- data/vendor/v8/src/register-allocator.cc +1 -7
- data/vendor/v8/src/register-allocator.h +5 -15
- data/vendor/v8/src/rewriter.cc +2 -1
- data/vendor/v8/src/runtime-profiler.cc +158 -128
- data/vendor/v8/src/runtime-profiler.h +131 -15
- data/vendor/v8/src/runtime.cc +2409 -1692
- data/vendor/v8/src/runtime.h +93 -17
- data/vendor/v8/src/safepoint-table.cc +3 -0
- data/vendor/v8/src/safepoint-table.h +9 -3
- data/vendor/v8/src/scanner-base.cc +21 -28
- data/vendor/v8/src/scanner-base.h +22 -11
- data/vendor/v8/src/scanner.cc +3 -5
- data/vendor/v8/src/scanner.h +4 -2
- data/vendor/v8/src/scopeinfo.cc +11 -16
- data/vendor/v8/src/scopeinfo.h +26 -15
- data/vendor/v8/src/scopes.cc +67 -37
- data/vendor/v8/src/scopes.h +26 -12
- data/vendor/v8/src/serialize.cc +193 -154
- data/vendor/v8/src/serialize.h +41 -36
- data/vendor/v8/src/small-pointer-list.h +163 -0
- data/vendor/v8/src/snapshot-common.cc +1 -1
- data/vendor/v8/src/snapshot.h +3 -1
- data/vendor/v8/src/spaces-inl.h +30 -25
- data/vendor/v8/src/spaces.cc +263 -370
- data/vendor/v8/src/spaces.h +178 -166
- data/vendor/v8/src/string-search.cc +4 -3
- data/vendor/v8/src/string-search.h +21 -20
- data/vendor/v8/src/string-stream.cc +32 -24
- data/vendor/v8/src/string.js +7 -7
- data/vendor/v8/src/stub-cache.cc +324 -248
- data/vendor/v8/src/stub-cache.h +181 -155
- data/vendor/v8/src/token.cc +3 -3
- data/vendor/v8/src/token.h +3 -3
- data/vendor/v8/src/top.cc +218 -390
- data/vendor/v8/src/type-info.cc +98 -32
- data/vendor/v8/src/type-info.h +10 -3
- data/vendor/v8/src/unicode.cc +1 -1
- data/vendor/v8/src/unicode.h +1 -1
- data/vendor/v8/src/utils.h +3 -0
- data/vendor/v8/src/v8-counters.cc +18 -11
- data/vendor/v8/src/v8-counters.h +34 -13
- data/vendor/v8/src/v8.cc +66 -121
- data/vendor/v8/src/v8.h +7 -4
- data/vendor/v8/src/v8globals.h +18 -12
- data/vendor/v8/src/{memory.h → v8memory.h} +0 -0
- data/vendor/v8/src/v8natives.js +59 -18
- data/vendor/v8/src/v8threads.cc +127 -114
- data/vendor/v8/src/v8threads.h +42 -35
- data/vendor/v8/src/v8utils.h +2 -39
- data/vendor/v8/src/variables.h +1 -1
- data/vendor/v8/src/version.cc +26 -5
- data/vendor/v8/src/version.h +4 -0
- data/vendor/v8/src/virtual-frame-heavy-inl.h +2 -4
- data/vendor/v8/src/virtual-frame-light-inl.h +5 -4
- data/vendor/v8/src/vm-state-inl.h +21 -17
- data/vendor/v8/src/vm-state.h +7 -5
- data/vendor/v8/src/win32-headers.h +1 -0
- data/vendor/v8/src/x64/assembler-x64-inl.h +12 -11
- data/vendor/v8/src/x64/assembler-x64.cc +80 -40
- data/vendor/v8/src/x64/assembler-x64.h +67 -17
- data/vendor/v8/src/x64/builtins-x64.cc +34 -33
- data/vendor/v8/src/x64/code-stubs-x64.cc +636 -377
- data/vendor/v8/src/x64/code-stubs-x64.h +14 -48
- data/vendor/v8/src/x64/codegen-x64-inl.h +1 -1
- data/vendor/v8/src/x64/codegen-x64.cc +158 -136
- data/vendor/v8/src/x64/codegen-x64.h +4 -1
- data/vendor/v8/src/x64/cpu-x64.cc +7 -5
- data/vendor/v8/src/x64/debug-x64.cc +8 -6
- data/vendor/v8/src/x64/deoptimizer-x64.cc +195 -20
- data/vendor/v8/src/x64/disasm-x64.cc +42 -23
- data/vendor/v8/src/x64/frames-x64.cc +1 -1
- data/vendor/v8/src/x64/frames-x64.h +2 -2
- data/vendor/v8/src/x64/full-codegen-x64.cc +780 -218
- data/vendor/v8/src/x64/ic-x64.cc +77 -79
- data/vendor/v8/src/x64/jump-target-x64.cc +1 -1
- data/vendor/v8/src/x64/lithium-codegen-x64.cc +698 -181
- data/vendor/v8/src/x64/lithium-codegen-x64.h +31 -6
- data/vendor/v8/src/x64/lithium-x64.cc +136 -54
- data/vendor/v8/src/x64/lithium-x64.h +142 -51
- data/vendor/v8/src/x64/macro-assembler-x64.cc +456 -187
- data/vendor/v8/src/x64/macro-assembler-x64.h +166 -34
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +44 -28
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +8 -4
- data/vendor/v8/src/x64/register-allocator-x64-inl.h +3 -3
- data/vendor/v8/src/x64/register-allocator-x64.cc +12 -8
- data/vendor/v8/src/x64/simulator-x64.h +5 -5
- data/vendor/v8/src/x64/stub-cache-x64.cc +299 -344
- data/vendor/v8/src/x64/virtual-frame-x64.cc +37 -13
- data/vendor/v8/src/x64/virtual-frame-x64.h +13 -7
- data/vendor/v8/src/zone-inl.h +49 -3
- data/vendor/v8/src/zone.cc +42 -41
- data/vendor/v8/src/zone.h +37 -34
- data/vendor/v8/test/benchmarks/testcfg.py +100 -0
- data/vendor/v8/test/cctest/SConscript +5 -4
- data/vendor/v8/test/cctest/cctest.h +3 -2
- data/vendor/v8/test/cctest/cctest.status +6 -11
- data/vendor/v8/test/cctest/test-accessors.cc +3 -3
- data/vendor/v8/test/cctest/test-alloc.cc +39 -33
- data/vendor/v8/test/cctest/test-api.cc +1092 -205
- data/vendor/v8/test/cctest/test-assembler-arm.cc +39 -25
- data/vendor/v8/test/cctest/test-assembler-ia32.cc +36 -37
- data/vendor/v8/test/cctest/test-assembler-mips.cc +1098 -40
- data/vendor/v8/test/cctest/test-assembler-x64.cc +32 -25
- data/vendor/v8/test/cctest/test-ast.cc +1 -0
- data/vendor/v8/test/cctest/test-circular-queue.cc +8 -5
- data/vendor/v8/test/cctest/test-compiler.cc +24 -24
- data/vendor/v8/test/cctest/test-cpu-profiler.cc +140 -5
- data/vendor/v8/test/cctest/test-dataflow.cc +1 -0
- data/vendor/v8/test/cctest/test-debug.cc +136 -77
- data/vendor/v8/test/cctest/test-decls.cc +1 -1
- data/vendor/v8/test/cctest/test-deoptimization.cc +25 -24
- data/vendor/v8/test/cctest/test-disasm-arm.cc +9 -4
- data/vendor/v8/test/cctest/test-disasm-ia32.cc +10 -8
- data/vendor/v8/test/cctest/test-func-name-inference.cc +10 -4
- data/vendor/v8/test/cctest/test-heap-profiler.cc +226 -164
- data/vendor/v8/test/cctest/test-heap.cc +240 -217
- data/vendor/v8/test/cctest/test-liveedit.cc +1 -0
- data/vendor/v8/test/cctest/test-log-stack-tracer.cc +18 -20
- data/vendor/v8/test/cctest/test-log.cc +114 -108
- data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +247 -177
- data/vendor/v8/test/cctest/test-mark-compact.cc +129 -90
- data/vendor/v8/test/cctest/test-parsing.cc +15 -14
- data/vendor/v8/test/cctest/test-platform-linux.cc +1 -0
- data/vendor/v8/test/cctest/test-platform-tls.cc +66 -0
- data/vendor/v8/test/cctest/test-platform-win32.cc +1 -0
- data/vendor/v8/test/cctest/test-profile-generator.cc +1 -1
- data/vendor/v8/test/cctest/test-regexp.cc +53 -41
- data/vendor/v8/test/cctest/test-reloc-info.cc +18 -11
- data/vendor/v8/test/cctest/test-serialize.cc +44 -43
- data/vendor/v8/test/cctest/test-sockets.cc +8 -3
- data/vendor/v8/test/cctest/test-spaces.cc +47 -29
- data/vendor/v8/test/cctest/test-strings.cc +20 -20
- data/vendor/v8/test/cctest/test-thread-termination.cc +8 -3
- data/vendor/v8/test/cctest/test-threads.cc +5 -3
- data/vendor/v8/test/cctest/test-utils.cc +5 -4
- data/vendor/v8/test/cctest/testcfg.py +7 -3
- data/vendor/v8/test/es5conform/es5conform.status +2 -77
- data/vendor/v8/test/es5conform/testcfg.py +1 -1
- data/vendor/v8/test/message/testcfg.py +1 -1
- data/vendor/v8/test/mjsunit/accessors-on-global-object.js +3 -3
- data/vendor/v8/test/mjsunit/array-concat.js +43 -1
- data/vendor/v8/test/mjsunit/array-join.js +25 -0
- data/vendor/v8/test/mjsunit/bitops-info.js +7 -1
- data/vendor/v8/test/mjsunit/compiler/array-length.js +2 -2
- data/vendor/v8/test/mjsunit/compiler/global-accessors.js +47 -0
- data/vendor/v8/test/mjsunit/compiler/pic.js +1 -1
- data/vendor/v8/test/mjsunit/compiler/regress-loadfield.js +65 -0
- data/vendor/v8/test/mjsunit/math-sqrt.js +5 -1
- data/vendor/v8/test/mjsunit/mjsunit.js +59 -8
- data/vendor/v8/test/mjsunit/mjsunit.status +0 -12
- data/vendor/v8/test/mjsunit/mul-exhaustive.js +129 -11
- data/vendor/v8/test/mjsunit/negate-zero.js +1 -1
- data/vendor/v8/test/mjsunit/object-freeze.js +5 -13
- data/vendor/v8/test/mjsunit/object-prevent-extensions.js +9 -50
- data/vendor/v8/test/mjsunit/object-seal.js +4 -13
- data/vendor/v8/test/mjsunit/override-eval-with-non-function.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1145.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-1172-bis.js +37 -0
- data/vendor/v8/test/mjsunit/regress/regress-1181.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-1207.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-1209.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-1210.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-1213.js +43 -0
- data/vendor/v8/test/mjsunit/regress/regress-1218.js +29 -0
- data/vendor/v8/test/mjsunit/regress/regress-1229.js +79 -0
- data/vendor/v8/test/mjsunit/regress/regress-1233.js +47 -0
- data/vendor/v8/test/mjsunit/regress/regress-1236.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-1237.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1240.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-1257.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-1278.js +69 -0
- data/vendor/v8/test/mjsunit/regress/regress-create-exception.js +1 -0
- data/vendor/v8/test/mjsunit/regress/regress-lazy-deopt-reloc.js +52 -0
- data/vendor/v8/test/mjsunit/sin-cos.js +15 -10
- data/vendor/v8/test/mjsunit/smi-negative-zero.js +2 -2
- data/vendor/v8/test/mjsunit/str-to-num.js +1 -1
- data/vendor/v8/test/mjsunit/strict-mode.js +435 -0
- data/vendor/v8/test/mjsunit/testcfg.py +23 -6
- data/vendor/v8/test/mozilla/mozilla.status +0 -2
- data/vendor/v8/test/mozilla/testcfg.py +1 -1
- data/vendor/v8/test/preparser/empty.js +28 -0
- data/vendor/v8/test/preparser/functions-only.js +38 -0
- data/vendor/v8/test/preparser/non-alphanum.js +34 -0
- data/vendor/v8/test/preparser/symbols-only.js +49 -0
- data/vendor/v8/test/preparser/testcfg.py +90 -0
- data/vendor/v8/test/sputnik/testcfg.py +1 -1
- data/vendor/v8/test/test262/README +16 -0
- data/vendor/v8/test/test262/harness-adapt.js +80 -0
- data/vendor/v8/test/test262/test262.status +1506 -0
- data/vendor/v8/test/test262/testcfg.py +123 -0
- data/vendor/v8/tools/freebsd-tick-processor +10 -0
- data/vendor/v8/tools/gyp/v8.gyp +8 -33
- data/vendor/v8/tools/linux-tick-processor +5 -3
- data/vendor/v8/tools/test.py +37 -14
- data/vendor/v8/tools/tickprocessor.js +22 -8
- data/vendor/v8/tools/visual_studio/v8_base.vcproj +13 -1
- data/vendor/v8/tools/visual_studio/v8_base_arm.vcproj +5 -1
- data/vendor/v8/tools/visual_studio/v8_base_x64.vcproj +5 -1
- data/vendor/v8/tools/visual_studio/x64.vsprops +1 -0
- metadata +1495 -1341
- data/ext/extconf.rb +0 -22
- data/ext/mustang.cpp +0 -58
- data/vendor/v8/src/top.h +0 -608
@@ -143,17 +143,19 @@ class DebugLocalContext {
|
|
143
143
|
inline v8::Context* operator*() { return *context_; }
|
144
144
|
inline bool IsReady() { return !context_.IsEmpty(); }
|
145
145
|
void ExposeDebug() {
|
146
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
146
147
|
// Expose the debug context global object in the global object for testing.
|
147
|
-
|
148
|
-
|
148
|
+
debug->Load();
|
149
|
+
debug->debug_context()->set_security_token(
|
149
150
|
v8::Utils::OpenHandle(*context_)->security_token());
|
150
151
|
|
151
152
|
Handle<JSGlobalProxy> global(Handle<JSGlobalProxy>::cast(
|
152
153
|
v8::Utils::OpenHandle(*context_->Global())));
|
153
154
|
Handle<v8::internal::String> debug_string =
|
154
|
-
|
155
|
+
FACTORY->LookupAsciiSymbol("debug");
|
155
156
|
SetProperty(global, debug_string,
|
156
|
-
Handle<Object>(
|
157
|
+
Handle<Object>(debug->debug_context()->global_proxy()), DONT_ENUM,
|
158
|
+
::v8::internal::kNonStrictMode);
|
157
159
|
}
|
158
160
|
private:
|
159
161
|
v8::Persistent<v8::Context> context_;
|
@@ -195,7 +197,8 @@ static bool HasDebugInfo(v8::Handle<v8::Function> fun) {
|
|
195
197
|
static int SetBreakPoint(Handle<v8::internal::JSFunction> fun, int position) {
|
196
198
|
static int break_point = 0;
|
197
199
|
Handle<v8::internal::SharedFunctionInfo> shared(fun->shared());
|
198
|
-
Debug::
|
200
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
201
|
+
debug->SetBreakPoint(
|
199
202
|
shared,
|
200
203
|
Handle<Object>(v8::internal::Smi::FromInt(++break_point)),
|
201
204
|
&position);
|
@@ -278,7 +281,8 @@ static int SetScriptBreakPointByNameFromJS(const char* script_name,
|
|
278
281
|
|
279
282
|
// Clear a break point.
|
280
283
|
static void ClearBreakPoint(int break_point) {
|
281
|
-
Debug::
|
284
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
285
|
+
debug->ClearBreakPoint(
|
282
286
|
Handle<Object>(v8::internal::Smi::FromInt(break_point)));
|
283
287
|
}
|
284
288
|
|
@@ -338,8 +342,9 @@ static void ChangeScriptBreakPointIgnoreCountFromJS(int break_point_number,
|
|
338
342
|
|
339
343
|
// Change break on exception.
|
340
344
|
static void ChangeBreakOnException(bool caught, bool uncaught) {
|
341
|
-
Debug
|
342
|
-
|
345
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
346
|
+
debug->ChangeBreakOnException(v8::internal::BreakException, caught);
|
347
|
+
debug->ChangeBreakOnException(v8::internal::BreakUncaughtException, uncaught);
|
343
348
|
}
|
344
349
|
|
345
350
|
|
@@ -364,7 +369,8 @@ static void ChangeBreakOnExceptionFromJS(bool caught, bool uncaught) {
|
|
364
369
|
|
365
370
|
// Prepare to step to next break location.
|
366
371
|
static void PrepareStep(StepAction step_action) {
|
367
|
-
Debug::
|
372
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
373
|
+
debug->PrepareStep(step_action, 1);
|
368
374
|
}
|
369
375
|
|
370
376
|
|
@@ -375,7 +381,9 @@ namespace internal {
|
|
375
381
|
|
376
382
|
// Collect the currently debugged functions.
|
377
383
|
Handle<FixedArray> GetDebuggedFunctions() {
|
378
|
-
|
384
|
+
Debug* debug = Isolate::Current()->debug();
|
385
|
+
|
386
|
+
v8::internal::DebugInfoListNode* node = debug->debug_info_list_;
|
379
387
|
|
380
388
|
// Find the number of debugged functions.
|
381
389
|
int count = 0;
|
@@ -386,7 +394,7 @@ Handle<FixedArray> GetDebuggedFunctions() {
|
|
386
394
|
|
387
395
|
// Allocate array for the debugged functions
|
388
396
|
Handle<FixedArray> debugged_functions =
|
389
|
-
|
397
|
+
FACTORY->NewFixedArray(count);
|
390
398
|
|
391
399
|
// Run through the debug info objects and collect all functions.
|
392
400
|
count = 0;
|
@@ -401,7 +409,9 @@ Handle<FixedArray> GetDebuggedFunctions() {
|
|
401
409
|
|
402
410
|
static Handle<Code> ComputeCallDebugBreak(int argc) {
|
403
411
|
CALL_HEAP_FUNCTION(
|
404
|
-
v8::internal::
|
412
|
+
v8::internal::Isolate::Current(),
|
413
|
+
v8::internal::Isolate::Current()->stub_cache()->ComputeCallDebugBreak(
|
414
|
+
argc, Code::CALL_IC),
|
405
415
|
Code);
|
406
416
|
}
|
407
417
|
|
@@ -410,12 +420,12 @@ static Handle<Code> ComputeCallDebugBreak(int argc) {
|
|
410
420
|
void CheckDebuggerUnloaded(bool check_functions) {
|
411
421
|
// Check that the debugger context is cleared and that there is no debug
|
412
422
|
// information stored for the debugger.
|
413
|
-
CHECK(
|
414
|
-
CHECK_EQ(NULL,
|
423
|
+
CHECK(Isolate::Current()->debug()->debug_context().is_null());
|
424
|
+
CHECK_EQ(NULL, Isolate::Current()->debug()->debug_info_list_);
|
415
425
|
|
416
426
|
// Collect garbage to ensure weak handles are cleared.
|
417
|
-
|
418
|
-
|
427
|
+
HEAP->CollectAllGarbage(false);
|
428
|
+
HEAP->CollectAllGarbage(false);
|
419
429
|
|
420
430
|
// Iterate the head and check that there are no debugger related objects left.
|
421
431
|
HeapIterator iterator;
|
@@ -443,8 +453,8 @@ void CheckDebuggerUnloaded(bool check_functions) {
|
|
443
453
|
|
444
454
|
|
445
455
|
void ForceUnloadDebugger() {
|
446
|
-
|
447
|
-
|
456
|
+
Isolate::Current()->debugger()->never_unload_debugger_ = false;
|
457
|
+
Isolate::Current()->debugger()->UnloadDebugger();
|
448
458
|
}
|
449
459
|
|
450
460
|
|
@@ -479,6 +489,8 @@ void CheckDebugBreakFunction(DebugLocalContext* env,
|
|
479
489
|
const char* source, const char* name,
|
480
490
|
int position, v8::internal::RelocInfo::Mode mode,
|
481
491
|
Code* debug_break) {
|
492
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
493
|
+
|
482
494
|
// Create function and set the break point.
|
483
495
|
Handle<v8::internal::JSFunction> fun = v8::Utils::OpenHandle(
|
484
496
|
*CompileFunction(env, source, name));
|
@@ -500,8 +512,8 @@ void CheckDebugBreakFunction(DebugLocalContext* env,
|
|
500
512
|
// Clear the break point and check that the debug break function is no longer
|
501
513
|
// there
|
502
514
|
ClearBreakPoint(bp);
|
503
|
-
CHECK(!
|
504
|
-
CHECK(
|
515
|
+
CHECK(!debug->HasDebugInfo(shared));
|
516
|
+
CHECK(debug->EnsureDebugInfo(shared));
|
505
517
|
TestBreakLocationIterator it2(Debug::GetDebugInfo(shared));
|
506
518
|
it2.FindBreakLocationFromPosition(position);
|
507
519
|
CHECK_EQ(mode, it2.it()->rinfo()->rmode());
|
@@ -633,8 +645,9 @@ static void DebugEventBreakPointHitCount(v8::DebugEvent event,
|
|
633
645
|
v8::Handle<v8::Object> exec_state,
|
634
646
|
v8::Handle<v8::Object> event_data,
|
635
647
|
v8::Handle<v8::Value> data) {
|
648
|
+
Debug* debug = v8::internal::Isolate::Current()->debug();
|
636
649
|
// When hitting a debug event listener there must be a break set.
|
637
|
-
CHECK_NE(
|
650
|
+
CHECK_NE(debug->break_id(), 0);
|
638
651
|
|
639
652
|
// Count the number of breaks.
|
640
653
|
if (event == v8::Break) {
|
@@ -737,8 +750,10 @@ static void DebugEventCounter(v8::DebugEvent event,
|
|
737
750
|
v8::Handle<v8::Object> exec_state,
|
738
751
|
v8::Handle<v8::Object> event_data,
|
739
752
|
v8::Handle<v8::Value> data) {
|
753
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
754
|
+
|
740
755
|
// When hitting a debug event listener there must be a break set.
|
741
|
-
CHECK_NE(
|
756
|
+
CHECK_NE(debug->break_id(), 0);
|
742
757
|
|
743
758
|
// Count the number of breaks.
|
744
759
|
if (event == v8::Break) {
|
@@ -795,8 +810,9 @@ static void DebugEventEvaluate(v8::DebugEvent event,
|
|
795
810
|
v8::Handle<v8::Object> exec_state,
|
796
811
|
v8::Handle<v8::Object> event_data,
|
797
812
|
v8::Handle<v8::Value> data) {
|
813
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
798
814
|
// When hitting a debug event listener there must be a break set.
|
799
|
-
CHECK_NE(
|
815
|
+
CHECK_NE(debug->break_id(), 0);
|
800
816
|
|
801
817
|
if (event == v8::Break) {
|
802
818
|
for (int i = 0; checks[i].expr != NULL; i++) {
|
@@ -821,8 +837,9 @@ static void DebugEventRemoveBreakPoint(v8::DebugEvent event,
|
|
821
837
|
v8::Handle<v8::Object> exec_state,
|
822
838
|
v8::Handle<v8::Object> event_data,
|
823
839
|
v8::Handle<v8::Value> data) {
|
840
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
824
841
|
// When hitting a debug event listener there must be a break set.
|
825
|
-
CHECK_NE(
|
842
|
+
CHECK_NE(debug->break_id(), 0);
|
826
843
|
|
827
844
|
if (event == v8::Break) {
|
828
845
|
break_point_hit_count++;
|
@@ -839,8 +856,9 @@ static void DebugEventStep(v8::DebugEvent event,
|
|
839
856
|
v8::Handle<v8::Object> exec_state,
|
840
857
|
v8::Handle<v8::Object> event_data,
|
841
858
|
v8::Handle<v8::Value> data) {
|
859
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
842
860
|
// When hitting a debug event listener there must be a break set.
|
843
|
-
CHECK_NE(
|
861
|
+
CHECK_NE(debug->break_id(), 0);
|
844
862
|
|
845
863
|
if (event == v8::Break) {
|
846
864
|
break_point_hit_count++;
|
@@ -865,8 +883,9 @@ static void DebugEventStepSequence(v8::DebugEvent event,
|
|
865
883
|
v8::Handle<v8::Object> exec_state,
|
866
884
|
v8::Handle<v8::Object> event_data,
|
867
885
|
v8::Handle<v8::Value> data) {
|
886
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
868
887
|
// When hitting a debug event listener there must be a break set.
|
869
|
-
CHECK_NE(
|
888
|
+
CHECK_NE(debug->break_id(), 0);
|
870
889
|
|
871
890
|
if (event == v8::Break || event == v8::Exception) {
|
872
891
|
// Check that the current function is the expected.
|
@@ -895,8 +914,9 @@ static void DebugEventBreakPointCollectGarbage(
|
|
895
914
|
v8::Handle<v8::Object> exec_state,
|
896
915
|
v8::Handle<v8::Object> event_data,
|
897
916
|
v8::Handle<v8::Value> data) {
|
917
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
898
918
|
// When hitting a debug event listener there must be a break set.
|
899
|
-
CHECK_NE(
|
919
|
+
CHECK_NE(debug->break_id(), 0);
|
900
920
|
|
901
921
|
// Perform a garbage collection when break point is hit and continue. Based
|
902
922
|
// on the number of break points hit either scavenge or mark compact
|
@@ -905,10 +925,10 @@ static void DebugEventBreakPointCollectGarbage(
|
|
905
925
|
break_point_hit_count++;
|
906
926
|
if (break_point_hit_count % 2 == 0) {
|
907
927
|
// Scavenge.
|
908
|
-
|
928
|
+
HEAP->CollectGarbage(v8::internal::NEW_SPACE);
|
909
929
|
} else {
|
910
930
|
// Mark sweep compact.
|
911
|
-
|
931
|
+
HEAP->CollectAllGarbage(true);
|
912
932
|
}
|
913
933
|
}
|
914
934
|
}
|
@@ -920,8 +940,9 @@ static void DebugEventBreak(v8::DebugEvent event,
|
|
920
940
|
v8::Handle<v8::Object> exec_state,
|
921
941
|
v8::Handle<v8::Object> event_data,
|
922
942
|
v8::Handle<v8::Value> data) {
|
943
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
923
944
|
// When hitting a debug event listener there must be a break set.
|
924
|
-
CHECK_NE(
|
945
|
+
CHECK_NE(debug->break_id(), 0);
|
925
946
|
|
926
947
|
if (event == v8::Break) {
|
927
948
|
// Count the number of breaks.
|
@@ -929,7 +950,7 @@ static void DebugEventBreak(v8::DebugEvent event,
|
|
929
950
|
|
930
951
|
// Run the garbage collector to enforce heap verification if option
|
931
952
|
// --verify-heap is set.
|
932
|
-
|
953
|
+
HEAP->CollectGarbage(v8::internal::NEW_SPACE);
|
933
954
|
|
934
955
|
// Set the break flag again to come back here as soon as possible.
|
935
956
|
v8::Debug::DebugBreak();
|
@@ -945,8 +966,9 @@ static void DebugEventBreakMax(v8::DebugEvent event,
|
|
945
966
|
v8::Handle<v8::Object> exec_state,
|
946
967
|
v8::Handle<v8::Object> event_data,
|
947
968
|
v8::Handle<v8::Value> data) {
|
969
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
948
970
|
// When hitting a debug event listener there must be a break set.
|
949
|
-
CHECK_NE(
|
971
|
+
CHECK_NE(debug->break_id(), 0);
|
950
972
|
|
951
973
|
if (event == v8::Break) {
|
952
974
|
if (break_point_hit_count < max_break_point_hit_count) {
|
@@ -986,6 +1008,7 @@ static void MessageCallbackCount(v8::Handle<v8::Message> message,
|
|
986
1008
|
// of break locations.
|
987
1009
|
TEST(DebugStub) {
|
988
1010
|
using ::v8::internal::Builtins;
|
1011
|
+
using ::v8::internal::Isolate;
|
989
1012
|
v8::HandleScope scope;
|
990
1013
|
DebugLocalContext env;
|
991
1014
|
|
@@ -998,12 +1021,14 @@ TEST(DebugStub) {
|
|
998
1021
|
"function f2(){x=1;}", "f2",
|
999
1022
|
0,
|
1000
1023
|
v8::internal::RelocInfo::CODE_TARGET_CONTEXT,
|
1001
|
-
|
1024
|
+
Isolate::Current()->builtins()->builtin(
|
1025
|
+
Builtins::kStoreIC_DebugBreak));
|
1002
1026
|
CheckDebugBreakFunction(&env,
|
1003
1027
|
"function f3(){var a=x;}", "f3",
|
1004
1028
|
0,
|
1005
1029
|
v8::internal::RelocInfo::CODE_TARGET_CONTEXT,
|
1006
|
-
|
1030
|
+
Isolate::Current()->builtins()->builtin(
|
1031
|
+
Builtins::kLoadIC_DebugBreak));
|
1007
1032
|
|
1008
1033
|
// TODO(1240753): Make the test architecture independent or split
|
1009
1034
|
// parts of the debugger into architecture dependent files. This
|
@@ -1016,14 +1041,16 @@ TEST(DebugStub) {
|
|
1016
1041
|
"f4",
|
1017
1042
|
0,
|
1018
1043
|
v8::internal::RelocInfo::CODE_TARGET,
|
1019
|
-
|
1044
|
+
Isolate::Current()->builtins()->builtin(
|
1045
|
+
Builtins::kKeyedStoreIC_DebugBreak));
|
1020
1046
|
CheckDebugBreakFunction(
|
1021
1047
|
&env,
|
1022
1048
|
"function f5(){var index='propertyName'; var a={}; return a[index];}",
|
1023
1049
|
"f5",
|
1024
1050
|
0,
|
1025
1051
|
v8::internal::RelocInfo::CODE_TARGET,
|
1026
|
-
|
1052
|
+
Isolate::Current()->builtins()->builtin(
|
1053
|
+
Builtins::kKeyedLoadIC_DebugBreak));
|
1027
1054
|
#endif
|
1028
1055
|
|
1029
1056
|
// Check the debug break code stubs for call ICs with different number of
|
@@ -1138,7 +1165,7 @@ TEST(BreakPointICLoad) {
|
|
1138
1165
|
foo->Call(env->Global(), 0, NULL);
|
1139
1166
|
CHECK_EQ(0, break_point_hit_count);
|
1140
1167
|
|
1141
|
-
// Run with breakpoint
|
1168
|
+
// Run with breakpoint.
|
1142
1169
|
int bp = SetBreakPoint(foo, 0);
|
1143
1170
|
foo->Call(env->Global(), 0, NULL);
|
1144
1171
|
CHECK_EQ(1, break_point_hit_count);
|
@@ -1171,7 +1198,7 @@ TEST(BreakPointICCall) {
|
|
1171
1198
|
foo->Call(env->Global(), 0, NULL);
|
1172
1199
|
CHECK_EQ(0, break_point_hit_count);
|
1173
1200
|
|
1174
|
-
// Run with breakpoint
|
1201
|
+
// Run with breakpoint
|
1175
1202
|
int bp = SetBreakPoint(foo, 0);
|
1176
1203
|
foo->Call(env->Global(), 0, NULL);
|
1177
1204
|
CHECK_EQ(1, break_point_hit_count);
|
@@ -1366,12 +1393,12 @@ static void CallAndGC(v8::Local<v8::Object> recv,
|
|
1366
1393
|
CHECK_EQ(1 + i * 3, break_point_hit_count);
|
1367
1394
|
|
1368
1395
|
// Scavenge and call function.
|
1369
|
-
|
1396
|
+
HEAP->CollectGarbage(v8::internal::NEW_SPACE);
|
1370
1397
|
f->Call(recv, 0, NULL);
|
1371
1398
|
CHECK_EQ(2 + i * 3, break_point_hit_count);
|
1372
1399
|
|
1373
1400
|
// Mark sweep (and perhaps compact) and call function.
|
1374
|
-
|
1401
|
+
HEAP->CollectAllGarbage(force_compaction);
|
1375
1402
|
f->Call(recv, 0, NULL);
|
1376
1403
|
CHECK_EQ(3 + i * 3, break_point_hit_count);
|
1377
1404
|
}
|
@@ -2198,7 +2225,7 @@ TEST(ScriptBreakPointLineTopLevel) {
|
|
2198
2225
|
}
|
2199
2226
|
f = v8::Local<v8::Function>::Cast(env->Global()->Get(v8::String::New("f")));
|
2200
2227
|
|
2201
|
-
|
2228
|
+
HEAP->CollectAllGarbage(false);
|
2202
2229
|
|
2203
2230
|
SetScriptBreakPointByNameFromJS("test.html", 3, -1);
|
2204
2231
|
|
@@ -3697,7 +3724,7 @@ TEST(BreakOnException) {
|
|
3697
3724
|
DebugLocalContext env;
|
3698
3725
|
env.ExposeDebug();
|
3699
3726
|
|
3700
|
-
v8::internal::
|
3727
|
+
v8::internal::Isolate::Current()->TraceException(false);
|
3701
3728
|
|
3702
3729
|
// Create functions for testing break on exception.
|
3703
3730
|
v8::Local<v8::Function> throws =
|
@@ -3844,7 +3871,7 @@ TEST(BreakOnCompileException) {
|
|
3844
3871
|
// For this test, we want to break on uncaught exceptions:
|
3845
3872
|
ChangeBreakOnException(false, true);
|
3846
3873
|
|
3847
|
-
v8::internal::
|
3874
|
+
v8::internal::Isolate::Current()->TraceException(false);
|
3848
3875
|
|
3849
3876
|
// Create a function for checking the function when hitting a break point.
|
3850
3877
|
frame_count = CompileFunction(&env, frame_count_source, "frame_count");
|
@@ -4693,6 +4720,8 @@ Barriers message_queue_barriers;
|
|
4693
4720
|
// placing JSON debugger commands in the queue.
|
4694
4721
|
class MessageQueueDebuggerThread : public v8::internal::Thread {
|
4695
4722
|
public:
|
4723
|
+
explicit MessageQueueDebuggerThread(v8::internal::Isolate* isolate)
|
4724
|
+
: Thread(isolate, "MessageQueueDebuggerThread") { }
|
4696
4725
|
void Run();
|
4697
4726
|
};
|
4698
4727
|
|
@@ -4792,10 +4821,12 @@ void MessageQueueDebuggerThread::Run() {
|
|
4792
4821
|
// Main thread continues running source_3 to end, waits for this thread.
|
4793
4822
|
}
|
4794
4823
|
|
4795
|
-
MessageQueueDebuggerThread message_queue_debugger_thread;
|
4796
4824
|
|
4797
4825
|
// This thread runs the v8 engine.
|
4798
4826
|
TEST(MessageQueues) {
|
4827
|
+
MessageQueueDebuggerThread message_queue_debugger_thread(
|
4828
|
+
i::Isolate::Current());
|
4829
|
+
|
4799
4830
|
// Create a V8 environment
|
4800
4831
|
v8::HandleScope scope;
|
4801
4832
|
DebugLocalContext env;
|
@@ -4941,11 +4972,15 @@ Barriers threaded_debugging_barriers;
|
|
4941
4972
|
|
4942
4973
|
class V8Thread : public v8::internal::Thread {
|
4943
4974
|
public:
|
4975
|
+
explicit V8Thread(v8::internal::Isolate* isolate)
|
4976
|
+
: Thread(isolate, "V8Thread") { }
|
4944
4977
|
void Run();
|
4945
4978
|
};
|
4946
4979
|
|
4947
4980
|
class DebuggerThread : public v8::internal::Thread {
|
4948
4981
|
public:
|
4982
|
+
explicit DebuggerThread(v8::internal::Isolate* isolate)
|
4983
|
+
: Thread(isolate, "DebuggerThread") { }
|
4949
4984
|
void Run();
|
4950
4985
|
};
|
4951
4986
|
|
@@ -5020,10 +5055,11 @@ void DebuggerThread::Run() {
|
|
5020
5055
|
v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer));
|
5021
5056
|
}
|
5022
5057
|
|
5023
|
-
DebuggerThread debugger_thread;
|
5024
|
-
V8Thread v8_thread;
|
5025
5058
|
|
5026
5059
|
TEST(ThreadedDebugging) {
|
5060
|
+
DebuggerThread debugger_thread(i::Isolate::Current());
|
5061
|
+
V8Thread v8_thread(i::Isolate::Current());
|
5062
|
+
|
5027
5063
|
// Create a V8 environment
|
5028
5064
|
threaded_debugging_barriers.Initialize();
|
5029
5065
|
|
@@ -5043,13 +5079,17 @@ TEST(ThreadedDebugging) {
|
|
5043
5079
|
|
5044
5080
|
class BreakpointsV8Thread : public v8::internal::Thread {
|
5045
5081
|
public:
|
5082
|
+
explicit BreakpointsV8Thread(v8::internal::Isolate* isolate)
|
5083
|
+
: Thread(isolate, "BreakpointsV8Thread") { }
|
5046
5084
|
void Run();
|
5047
5085
|
};
|
5048
5086
|
|
5049
5087
|
class BreakpointsDebuggerThread : public v8::internal::Thread {
|
5050
5088
|
public:
|
5051
|
-
explicit BreakpointsDebuggerThread(
|
5052
|
-
|
5089
|
+
explicit BreakpointsDebuggerThread(v8::internal::Isolate* isolate,
|
5090
|
+
bool global_evaluate)
|
5091
|
+
: Thread(isolate, "BreakpointsDebuggerThread"),
|
5092
|
+
global_evaluate_(global_evaluate) {}
|
5053
5093
|
void Run();
|
5054
5094
|
|
5055
5095
|
private:
|
@@ -5225,8 +5265,9 @@ void BreakpointsDebuggerThread::Run() {
|
|
5225
5265
|
void TestRecursiveBreakpointsGeneric(bool global_evaluate) {
|
5226
5266
|
i::FLAG_debugger_auto_break = true;
|
5227
5267
|
|
5228
|
-
BreakpointsDebuggerThread breakpoints_debugger_thread(
|
5229
|
-
|
5268
|
+
BreakpointsDebuggerThread breakpoints_debugger_thread(i::Isolate::Current(),
|
5269
|
+
global_evaluate);
|
5270
|
+
BreakpointsV8Thread breakpoints_v8_thread(i::Isolate::Current());
|
5230
5271
|
|
5231
5272
|
// Create a V8 environment
|
5232
5273
|
Barriers stack_allocated_breakpoints_barriers;
|
@@ -5608,11 +5649,15 @@ TEST(DebuggerClearMessageHandlerWhileActive) {
|
|
5608
5649
|
|
5609
5650
|
class HostDispatchV8Thread : public v8::internal::Thread {
|
5610
5651
|
public:
|
5652
|
+
explicit HostDispatchV8Thread(v8::internal::Isolate* isolate)
|
5653
|
+
: Thread(isolate, "HostDispatchV8Thread") { }
|
5611
5654
|
void Run();
|
5612
5655
|
};
|
5613
5656
|
|
5614
5657
|
class HostDispatchDebuggerThread : public v8::internal::Thread {
|
5615
5658
|
public:
|
5659
|
+
explicit HostDispatchDebuggerThread(v8::internal::Isolate* isolate)
|
5660
|
+
: Thread(isolate, "HostDispatchDebuggerThread") { }
|
5616
5661
|
void Run();
|
5617
5662
|
};
|
5618
5663
|
|
@@ -5682,11 +5727,11 @@ void HostDispatchDebuggerThread::Run() {
|
|
5682
5727
|
v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer));
|
5683
5728
|
}
|
5684
5729
|
|
5685
|
-
HostDispatchDebuggerThread host_dispatch_debugger_thread;
|
5686
|
-
HostDispatchV8Thread host_dispatch_v8_thread;
|
5687
|
-
|
5688
5730
|
|
5689
5731
|
TEST(DebuggerHostDispatch) {
|
5732
|
+
HostDispatchDebuggerThread host_dispatch_debugger_thread(
|
5733
|
+
i::Isolate::Current());
|
5734
|
+
HostDispatchV8Thread host_dispatch_v8_thread(i::Isolate::Current());
|
5690
5735
|
i::FLAG_debugger_auto_break = true;
|
5691
5736
|
|
5692
5737
|
// Create a V8 environment
|
@@ -5710,11 +5755,15 @@ TEST(DebuggerHostDispatch) {
|
|
5710
5755
|
|
5711
5756
|
class DebugMessageDispatchV8Thread : public v8::internal::Thread {
|
5712
5757
|
public:
|
5758
|
+
explicit DebugMessageDispatchV8Thread(v8::internal::Isolate* isolate)
|
5759
|
+
: Thread(isolate, "DebugMessageDispatchV8Thread") { }
|
5713
5760
|
void Run();
|
5714
5761
|
};
|
5715
5762
|
|
5716
5763
|
class DebugMessageDispatchDebuggerThread : public v8::internal::Thread {
|
5717
5764
|
public:
|
5765
|
+
explicit DebugMessageDispatchDebuggerThread(v8::internal::Isolate* isolate)
|
5766
|
+
: Thread(isolate, "DebugMessageDispatchDebuggerThread") { }
|
5718
5767
|
void Run();
|
5719
5768
|
};
|
5720
5769
|
|
@@ -5746,11 +5795,13 @@ void DebugMessageDispatchDebuggerThread::Run() {
|
|
5746
5795
|
debug_message_dispatch_barriers->barrier_2.Wait();
|
5747
5796
|
}
|
5748
5797
|
|
5749
|
-
DebugMessageDispatchDebuggerThread debug_message_dispatch_debugger_thread;
|
5750
|
-
DebugMessageDispatchV8Thread debug_message_dispatch_v8_thread;
|
5751
|
-
|
5752
5798
|
|
5753
5799
|
TEST(DebuggerDebugMessageDispatch) {
|
5800
|
+
DebugMessageDispatchDebuggerThread debug_message_dispatch_debugger_thread(
|
5801
|
+
i::Isolate::Current());
|
5802
|
+
DebugMessageDispatchV8Thread debug_message_dispatch_v8_thread(
|
5803
|
+
i::Isolate::Current());
|
5804
|
+
|
5754
5805
|
i::FLAG_debugger_auto_break = true;
|
5755
5806
|
|
5756
5807
|
// Create a V8 environment
|
@@ -5768,6 +5819,7 @@ TEST(DebuggerDebugMessageDispatch) {
|
|
5768
5819
|
|
5769
5820
|
|
5770
5821
|
TEST(DebuggerAgent) {
|
5822
|
+
i::Debugger* debugger = i::Isolate::Current()->debugger();
|
5771
5823
|
// Make sure these ports is not used by other tests to allow tests to run in
|
5772
5824
|
// parallel.
|
5773
5825
|
const int kPort1 = 5858;
|
@@ -5785,18 +5837,18 @@ TEST(DebuggerAgent) {
|
|
5785
5837
|
i::Socket::Setup();
|
5786
5838
|
|
5787
5839
|
// Test starting and stopping the agent without any client connection.
|
5788
|
-
|
5789
|
-
|
5840
|
+
debugger->StartAgent("test", kPort1);
|
5841
|
+
debugger->StopAgent();
|
5790
5842
|
|
5791
5843
|
// Test starting the agent, connecting a client and shutting down the agent
|
5792
5844
|
// with the client connected.
|
5793
|
-
ok =
|
5845
|
+
ok = debugger->StartAgent("test", kPort2);
|
5794
5846
|
CHECK(ok);
|
5795
|
-
|
5847
|
+
debugger->WaitForAgent();
|
5796
5848
|
i::Socket* client = i::OS::CreateSocket();
|
5797
5849
|
ok = client->Connect("localhost", port2_str);
|
5798
5850
|
CHECK(ok);
|
5799
|
-
|
5851
|
+
debugger->StopAgent();
|
5800
5852
|
delete client;
|
5801
5853
|
|
5802
5854
|
// Test starting and stopping the agent with the required port already
|
@@ -5804,8 +5856,8 @@ TEST(DebuggerAgent) {
|
|
5804
5856
|
i::Socket* server = i::OS::CreateSocket();
|
5805
5857
|
server->Bind(kPort3);
|
5806
5858
|
|
5807
|
-
|
5808
|
-
|
5859
|
+
debugger->StartAgent("test", kPort3);
|
5860
|
+
debugger->StopAgent();
|
5809
5861
|
|
5810
5862
|
delete server;
|
5811
5863
|
}
|
@@ -5813,8 +5865,11 @@ TEST(DebuggerAgent) {
|
|
5813
5865
|
|
5814
5866
|
class DebuggerAgentProtocolServerThread : public i::Thread {
|
5815
5867
|
public:
|
5816
|
-
explicit DebuggerAgentProtocolServerThread(int port)
|
5817
|
-
:
|
5868
|
+
explicit DebuggerAgentProtocolServerThread(i::Isolate* isolate, int port)
|
5869
|
+
: Thread(isolate, "DebuggerAgentProtocolServerThread"),
|
5870
|
+
port_(port),
|
5871
|
+
server_(NULL),
|
5872
|
+
client_(NULL),
|
5818
5873
|
listening_(OS::CreateSemaphore(0)) {
|
5819
5874
|
}
|
5820
5875
|
~DebuggerAgentProtocolServerThread() {
|
@@ -5876,7 +5931,7 @@ TEST(DebuggerAgentProtocolOverflowHeader) {
|
|
5876
5931
|
|
5877
5932
|
// Create a socket server to receive a debugger agent message.
|
5878
5933
|
DebuggerAgentProtocolServerThread* server =
|
5879
|
-
new DebuggerAgentProtocolServerThread(kPort);
|
5934
|
+
new DebuggerAgentProtocolServerThread(i::Isolate::Current(), kPort);
|
5880
5935
|
server->Start();
|
5881
5936
|
server->WaitForListening();
|
5882
5937
|
|
@@ -6375,17 +6430,18 @@ static void DebugEventScriptCollectedEvent(v8::DebugEvent event,
|
|
6375
6430
|
|
6376
6431
|
// Test that scripts collected are reported through the debug event listener.
|
6377
6432
|
TEST(ScriptCollectedEvent) {
|
6433
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
6378
6434
|
break_point_hit_count = 0;
|
6379
6435
|
script_collected_count = 0;
|
6380
6436
|
v8::HandleScope scope;
|
6381
6437
|
DebugLocalContext env;
|
6382
6438
|
|
6383
6439
|
// Request the loaded scripts to initialize the debugger script cache.
|
6384
|
-
|
6440
|
+
debug->GetLoadedScripts();
|
6385
6441
|
|
6386
6442
|
// Do garbage collection to ensure that only the script in this test will be
|
6387
6443
|
// collected afterwards.
|
6388
|
-
|
6444
|
+
HEAP->CollectAllGarbage(false);
|
6389
6445
|
|
6390
6446
|
script_collected_count = 0;
|
6391
6447
|
v8::Debug::SetDebugEventListener(DebugEventScriptCollectedEvent,
|
@@ -6397,7 +6453,7 @@ TEST(ScriptCollectedEvent) {
|
|
6397
6453
|
|
6398
6454
|
// Do garbage collection to collect the script above which is no longer
|
6399
6455
|
// referenced.
|
6400
|
-
|
6456
|
+
HEAP->CollectAllGarbage(false);
|
6401
6457
|
|
6402
6458
|
CHECK_EQ(2, script_collected_count);
|
6403
6459
|
|
@@ -6421,6 +6477,7 @@ static void ScriptCollectedMessageHandler(const v8::Debug::Message& message) {
|
|
6421
6477
|
// Test that GetEventContext doesn't fail and return empty handle for
|
6422
6478
|
// ScriptCollected events.
|
6423
6479
|
TEST(ScriptCollectedEventContext) {
|
6480
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
6424
6481
|
script_collected_message_count = 0;
|
6425
6482
|
v8::HandleScope scope;
|
6426
6483
|
|
@@ -6428,11 +6485,11 @@ TEST(ScriptCollectedEventContext) {
|
|
6428
6485
|
DebugLocalContext env;
|
6429
6486
|
|
6430
6487
|
// Request the loaded scripts to initialize the debugger script cache.
|
6431
|
-
|
6488
|
+
debug->GetLoadedScripts();
|
6432
6489
|
|
6433
6490
|
// Do garbage collection to ensure that only the script in this test will be
|
6434
6491
|
// collected afterwards.
|
6435
|
-
|
6492
|
+
HEAP->CollectAllGarbage(false);
|
6436
6493
|
|
6437
6494
|
v8::Debug::SetMessageHandler2(ScriptCollectedMessageHandler);
|
6438
6495
|
{
|
@@ -6443,7 +6500,7 @@ TEST(ScriptCollectedEventContext) {
|
|
6443
6500
|
|
6444
6501
|
// Do garbage collection to collect the script above which is no longer
|
6445
6502
|
// referenced.
|
6446
|
-
|
6503
|
+
HEAP->CollectAllGarbage(false);
|
6447
6504
|
|
6448
6505
|
CHECK_EQ(2, script_collected_message_count);
|
6449
6506
|
|
@@ -6591,6 +6648,7 @@ TEST(ProvisionalBreakpointOnLineOutOfRange) {
|
|
6591
6648
|
|
6592
6649
|
|
6593
6650
|
static void BreakMessageHandler(const v8::Debug::Message& message) {
|
6651
|
+
i::Isolate* isolate = i::Isolate::Current();
|
6594
6652
|
if (message.IsEvent() && message.GetEvent() == v8::Break) {
|
6595
6653
|
// Count the number of breaks.
|
6596
6654
|
break_point_hit_count++;
|
@@ -6602,18 +6660,18 @@ static void BreakMessageHandler(const v8::Debug::Message& message) {
|
|
6602
6660
|
} else if (message.IsEvent() && message.GetEvent() == v8::AfterCompile) {
|
6603
6661
|
v8::HandleScope scope;
|
6604
6662
|
|
6605
|
-
bool is_debug_break =
|
6663
|
+
bool is_debug_break = isolate->stack_guard()->IsDebugBreak();
|
6606
6664
|
// Force DebugBreak flag while serializer is working.
|
6607
|
-
|
6665
|
+
isolate->stack_guard()->DebugBreak();
|
6608
6666
|
|
6609
6667
|
// Force serialization to trigger some internal JS execution.
|
6610
6668
|
v8::Handle<v8::String> json = message.GetJSON();
|
6611
6669
|
|
6612
6670
|
// Restore previous state.
|
6613
6671
|
if (is_debug_break) {
|
6614
|
-
|
6672
|
+
isolate->stack_guard()->DebugBreak();
|
6615
6673
|
} else {
|
6616
|
-
|
6674
|
+
isolate->stack_guard()->Continue(i::DEBUGBREAK);
|
6617
6675
|
}
|
6618
6676
|
}
|
6619
6677
|
}
|
@@ -6842,6 +6900,7 @@ static void DebugEventGetAtgumentPropertyValue(
|
|
6842
6900
|
|
6843
6901
|
|
6844
6902
|
TEST(CallingContextIsNotDebugContext) {
|
6903
|
+
v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
|
6845
6904
|
// Create and enter a debugee context.
|
6846
6905
|
v8::HandleScope scope;
|
6847
6906
|
DebugLocalContext env;
|
@@ -6850,7 +6909,7 @@ TEST(CallingContextIsNotDebugContext) {
|
|
6850
6909
|
// Save handles to the debugger and debugee contexts to be used in
|
6851
6910
|
// NamedGetterWithCallingContextCheck.
|
6852
6911
|
debugee_context = v8::Local<v8::Context>(*env);
|
6853
|
-
debugger_context = v8::Utils::ToLocal(
|
6912
|
+
debugger_context = v8::Utils::ToLocal(debug->debug_context());
|
6854
6913
|
|
6855
6914
|
// Create object with 'a' property accessor.
|
6856
6915
|
v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New();
|