Skip to content

v8: backport bb357524 to v8.x-staging (a8f68691 from upstream v8)

The upstream V8 commit https://github.com/v8/v8/commit/a8f6869177685cfb9c199c454a86f4698c260515 was originally cherry-picked onto master as commit bb357524, then backported to v10.x-staging and released in Node.js v10.10.0 as 5e9ed6d9. This commit cherry-picks that commit back to the v8.x-staging branch.

Refs: https://github.com/v8/v8/commit/a8f6869177685cfb9c199c454a86f4698c260515 Refs: https://github.com/nodejs/node/pull/22122 Refs: https://github.com/nodejs/node/commit/bb3575242cc87f59882bbcefa253353313f5606b Refs: https://github.com/nodejs/node/commit/5e9ed6d924db97462fb208e7ad8f32acce2a9bf3

Original commit message:

[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

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}

PR-URL: https://github.com/nodejs/node/pull/22714

Merge request reports

Loading