Add TryGetCurrent() method to v8::Isolate

This commit adds a TryGetCurrent() method to the v8::Isolate class.

The motivation for adding this method this is that in Node.js we've run
into situations where we need to check if there is a current
Isolate and we are using GetCurrent() for this. The issue is that for a
debug build of Node.js, the debug check in GetCurrent() will cause a
failure.

The suggestion in this changeset is to allow getting the current
Isolate, or null if one does not exist, without any checks.

Change-Id: I01676e4bcdbe86da0496f5df1982d14eb1c9ebf8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2910630
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75004}
This commit is contained in:
Daniel Bevenius 2021-05-25 11:39:45 +02:00 committed by V8 LUCI CQ
parent 693e86143b
commit ca05c5a2e5
2 changed files with 13 additions and 0 deletions

View File

@ -8645,6 +8645,14 @@ class V8_EXPORT Isolate {
*/
static Isolate* GetCurrent();
/**
* Returns the entered isolate for the current thread or NULL in
* case there is no current isolate.
*
* No checks are performed by this method.
*/
static Isolate* TryGetCurrent();
/**
* Clears the set of objects held strongly by the heap. This set of
* objects are originally built when a WeakRef is created or

View File

@ -8248,6 +8248,11 @@ Isolate* Isolate::GetCurrent() {
return reinterpret_cast<Isolate*>(isolate);
}
Isolate* Isolate::TryGetCurrent() {
i::Isolate* isolate = i::Isolate::TryGetCurrent();
return reinterpret_cast<Isolate*>(isolate);
}
// static
Isolate* Isolate::Allocate() {
return reinterpret_cast<Isolate*>(i::Isolate::New());