v8/test/cctest
Ben Newman a8f6869177 [debug] Fully implement Debug::ArchiveDebug and Debug::RestoreDebug.
I have a project that embeds V8 and uses a single `Isolate` from multiple
threads. The program runs just fine, but sometimes the inspector doesn't
stop on the correct line after stepping over a statement that switches
threads behind the scenes, even though the original thread is restored by
the time the next statement is executed.

After some digging, I discovered that the `Debug::ArchiveDebug` and
`Debug::RestoreDebug` methods, which should be responsible for
saving/restoring this `ThreadLocal` information when switching threads,
currently don't do anything.

This commit implements those methods using MemCopy, in the style of other
Archive/Restore methods in the V8 codebase.

Related: https://groups.google.com/forum/#!topic/v8-users/_Qf2rwljRk8

Note: I believe my employer, Meteor Development Group, has previously
signed the CLA using the group email address google-contrib@meteor.com.

R=yangguo@chromium.org,jgruber@chromium.org
CC=info@bnoordhuis.nl

Bug: v8:7230
Change-Id: Id517c873eb81cd53f7216c7efd441b956cf7f943
Reviewed-on: https://chromium-review.googlesource.com/833260
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54902}
2018-08-03 20:45:09 +00:00
..
compiler [cctest] Improve test coverage for calls to embedded builtins 2018-08-02 12:38:46 +00:00
heap [in-place weak refs] Make WeakArrayList::RemoveOne more efficient 2018-08-02 15:15:38 +00:00
interpreter [Intl] Clean up error handling 2018-07-25 07:45:04 +00:00
libplatform [tracing] Custom tag for the traceEvents array 2018-05-07 16:54:59 +00:00
libsampler Include only stuff you need, part 6: Fix cctest.h. 2016-09-01 12:02:16 +00:00
parsing [scanner] Decode utf8 as chunks come in to utf16, allowing unbuffered streaming 2018-08-02 19:00:09 +00:00
torque [torque] Make 'test' and 'action' expression optional in for loop 2018-07-27 11:19:00 +00:00
wasm Revert "[wasm] Implement the new API for WebAssembly.instantiateStreaming" 2018-08-02 13:29:47 +00:00
assembler-helper-arm.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
assembler-helper-arm.h Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
BUILD.gn Add I64Atomic binary operations for ia32 2018-07-30 22:02:49 +00:00
cctest.cc [wasm] Add new API for enabling trap handler 2018-03-20 18:06:38 +00:00
cctest.h Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
cctest.status ManualGCScope: Disable ineffective GC detection 2018-07-12 15:32:58 +00:00
DEPS [torque]: Add the ability to test Torque functionality with cctest 2018-05-13 10:58:56 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-fixed.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-precision.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-precision.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-shortest.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-shortest.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
log-eq-of-logging-and-traversal.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
OWNERS Update MIPS file ownership to @wavecomp.com e-mail addresses 2018-07-26 16:28:10 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h [iwyu] More iwyu fixes (date, execution etc.) 2018-02-26 08:59:59 +00:00
profiler-extension.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
profiler-extension.h Introduce v8::CpuProfiler::New and v8::CpuProfiler::Dispose API. 2016-07-08 15:01:10 +00:00
scope-test-helper.h Fix a Jumbo breakage 2018-05-29 14:36:48 +00:00
setup-isolate-for-tests.cc [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
setup-isolate-for-tests.h [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
test-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc [in-place weak refs] Replace WeakCells in StubCache. 2018-05-23 14:53:26 +00:00
test-accessors.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-allocation.cc Fix [Memory] Add OnCriticalMemoryPressure overload to v8::Platform. 2017-12-26 10:55:07 +00:00
test-api-accessors.cc [debug] expose SideEffectType when setting template accessors 2018-04-24 22:52:48 +00:00
test-api-interceptors.cc [test-api] Remove deprecated uses of String::Concat 2018-07-24 14:44:58 +00:00
test-api.cc Revert "[wasm] Implement the new API for WebAssembly.instantiateStreaming" 2018-08-02 13:29:47 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [explicit isolates] Remove GetIsolate from objects.cc 2018-07-13 12:42:14 +00:00
test-assembler-arm64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-assembler-arm.cc [arm] Eliminate old form of core-scalar vmov instructions. 2018-07-24 17:39:24 +00:00
test-assembler-ia32.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-ppc.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-s390.cc s390: Corrections to brxh / brxhg cctests in test-assembler-s390.cc 2018-07-30 20:40:21 +00:00
test-assembler-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-atomicops.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bignum-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-bignum.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bit-vector.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-circular-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-layout.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-code-stub-assembler.cc [cctest] Improve test coverage for calls to embedded builtins 2018-08-02 12:38:46 +00:00
test-code-stubs-arm64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-arm.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-ia32.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-code-stubs-mips64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-mips.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-code-stubs.cc [ubsan] Fix many static_cast<int32_t> with undefined behavior 2018-04-17 02:02:18 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc [cleanup] Remove uses of deprecated StackTrace::GetFrame 2018-07-25 06:36:25 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-cpu-profiler.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-date.cc Reland "Implement a new spec for timezone offset calculation" 2018-04-04 22:42:30 +00:00
test-debug.cc [debug] Fully implement Debug::ArchiveDebug and Debug::RestoreDebug. 2018-08-03 20:45:09 +00:00
test-decls.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-deoptimization.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-dictionary.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-disasm-arm64.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-arm.cc [arm,ppc] Consolidate kPCReadOffset to kPcLoadDelta 2018-08-03 13:06:56 +00:00
test-disasm-ia32.cc [ia32] Add cmpxchg8b instruction 2018-07-23 19:21:40 +00:00
test-disasm-mips64.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-mips.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-ppc.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-s390.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-x64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-diy-fp.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-double.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-elements-kind.cc Reland: [iwyu] Remove sfi-inl.h -> wasm include 2018-07-25 14:54:37 +00:00
test-experimental-extra.js Add experimental, non-snapshotted V8 extras 2015-08-20 00:01:14 +00:00
test-extra.js [turbofan] Properly optimize calls to promise extras. 2018-02-16 19:46:30 +00:00
test-fast-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-feedback-vector.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-feedback-vector.h [objects] Merge SFI outer_scope_info and feedback_metadata 2018-04-06 15:06:04 +00:00
test-field-type-tracking.cc [turbofan] Prepare broker for serialization. 2018-07-23 17:20:49 +00:00
test-fixed-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-flags.cc [GetIsolate] Remove GetIsolate use in Map 2018-06-25 11:38:37 +00:00
test-func-name-inference.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-fuzz-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-global-handles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-global-object.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashcode.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashmap.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-heap-profiler.cc [heap-profiler] Names for JSGeneratorObject-fields 2018-07-24 14:49:03 +00:00
test-identity-map.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-inobject-slack-tracking.cc Remove unnecessary 'size' argument from TYPED_ARRAYS macro. 2018-07-31 12:29:13 +00:00
test-inspector.cc [inspector] postpone API interrupts during creation of injected script 2018-06-05 18:04:44 +00:00
test-intl.cc [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
test-isolate-independent-builtins.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-javascript-arm64.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-js-arm64-variables.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-liveedit.cc [cleanup] Replace calls to deprecated String::Concat and ToInt32 from tests. 2018-07-24 17:30:14 +00:00
test-lockers.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-log-stack-tracer.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-log.cc [utils] Change ReadFile interface 2018-07-31 08:59:00 +00:00
test-macro-assembler-arm.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-macro-assembler-mips64.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-macro-assembler-mips.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-macro-assembler-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-managed.cc Add size estimate to Managed<T> 2018-05-30 10:26:21 +00:00
test-mementos.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-modules.cc [api,modules] Allow GetModuleNamespace on unevaluated modules. 2018-01-08 09:01:25 +00:00
test-object.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-orderedhashtable.cc [GetIsolate] Remove (most) GetIsolate from src/objects-debug.cc 2018-06-21 16:34:27 +00:00
test-parsing.cc [scanner] Prepare CharacterStreams for specializing scanner and parser by character type 2018-08-01 15:11:50 +00:00
test-platform.cc [Memory] Create memory management API in v8::internal. 2017-12-15 18:49:47 +00:00
test-profile-generator.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-random-number-generator.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-regexp.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-representation.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-roots.cc Revert (partially) "Reland [in-place weak refs] Use WeakArrayList in Heap::noscript_list." 2018-08-03 10:07:19 +00:00
test-sampler-api.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-serialize.cc Reland^2 "Added External Strings to external memory accounting". 2018-07-26 09:25:41 +00:00
test-strings.cc Add v8::String::StringEquals to API 2018-07-31 11:22:57 +00:00
test-strtod.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-symbols.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-sync-primitives-arm64.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-sync-primitives-arm.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-thread-termination.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-threads.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-trace-event.cc [cleanup] Fix uses of V8_DEPRECATE_SOON methods in v8 2018-07-19 10:04:07 +00:00
test-traced-value.cc Avoid octal escape sequences 2017-12-01 15:08:14 +00:00
test-transitions.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-transitions.h [explicit isolates] Eliminate GetIsolate from transitions.cc 2018-06-05 11:00:43 +00:00
test-typedarrays.cc Remove unnecessary 'size' argument from TYPED_ARRAYS macro. 2018-07-31 12:29:13 +00:00
test-types.cc [turbofan] Put some tests under a canonical handle scope. 2018-07-31 18:20:53 +00:00
test-unbound-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unboxed-doubles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-unscopables-hidden-prototype.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-usecounters.cc [parser] Remove incorrect UseCounter code for LabeledExpressionStatement 2018-01-06 00:17:43 +00:00
test-utils-arm64.cc [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils-arm64.h [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-version.cc [build] Introduce an embedder version string 2017-10-05 07:17:45 +00:00
test-weakmaps.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
test-weaksets.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
testcfg.py [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00
trace-extension.cc [ptr-compr] Support 31-bit Smis in lower half-word on 64-bit architectures. 2018-06-05 11:37:35 +00:00
trace-extension.h [iwyu] More iwyu fixes (date, execution etc.) 2018-02-26 08:59:59 +00:00
types-fuzz.h [turbofan] Prepare broker for serialization. 2018-07-23 17:20:49 +00:00
unicode-helpers.h Implement DFA Unicode Decoder 2017-12-11 21:36:13 +00:00