summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-03-05 23:03:24 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2019-03-09 00:27:29 +0100
commit2699f8c860084565a8b3748b3fdf1ebba204f3f7 (patch)
tree35b317504f40d0e3b3a25e5b4205596c41a6b76c
parentc957b0517766729f931a1ef7ab134f75d6a01864 (diff)
downloadandroid-node-v8-2699f8c860084565a8b3748b3fdf1ebba204f3f7.tar.gz
android-node-v8-2699f8c860084565a8b3748b3fdf1ebba204f3f7.tar.bz2
android-node-v8-2699f8c860084565a8b3748b3fdf1ebba204f3f7.zip
src: merge debug-only `SealHandleScope`s
Instead of repeating the same `#ifdef DEBUG` + `SealHandleScope` pattern over and over, create an utility that does this for us. PR-URL: https://github.com/nodejs/node/pull/26459 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
-rw-r--r--src/api/environment.cc5
-rw-r--r--src/api/hooks.cc7
-rw-r--r--src/env.cc4
-rw-r--r--src/node_internals.h14
-rw-r--r--src/node_platform.cc5
-rw-r--r--src/stream_base-inl.h20
6 files changed, 24 insertions, 31 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc
index cd3e3aefc2..b7a629340d 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -23,7 +23,6 @@ using v8::MaybeLocal;
using v8::Message;
using v8::MicrotasksPolicy;
using v8::ObjectTemplate;
-using v8::SealHandleScope;
using v8::String;
using v8::Value;
@@ -35,9 +34,7 @@ static bool AllowWasmCodeGenerationCallback(Local<Context> context,
}
static bool ShouldAbortOnUncaughtException(Isolate* isolate) {
-#ifdef DEBUG
- SealHandleScope scope(isolate);
-#endif
+ DebugSealHandleScope scope(isolate);
Environment* env = Environment::GetCurrent(isolate);
return env != nullptr &&
(env->is_main_thread() || !env->is_stopping_worker()) &&
diff --git a/src/api/hooks.cc b/src/api/hooks.cc
index aa647778d5..4663df43a6 100644
--- a/src/api/hooks.cc
+++ b/src/api/hooks.cc
@@ -1,5 +1,5 @@
#include "env-inl.h"
-#include "node.h"
+#include "node_internals.h"
#include "node_process.h"
#include "async_wrap.h"
@@ -11,7 +11,6 @@ using v8::Integer;
using v8::Isolate;
using v8::Local;
using v8::Object;
-using v8::SealHandleScope;
using v8::String;
using v8::Value;
using v8::NewStringType;
@@ -116,9 +115,7 @@ async_context EmitAsyncInit(Isolate* isolate,
Local<Object> resource,
Local<String> name,
async_id trigger_async_id) {
-#ifdef DEBUG
- SealHandleScope handle_scope(isolate);
-#endif
+ DebugSealHandleScope handle_scope(isolate);
Environment* env = Environment::GetCurrent(isolate);
CHECK_NOT_NULL(env);
diff --git a/src/env.cc b/src/env.cc
index bd44480184..ba3e63ad8d 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -644,9 +644,7 @@ void Environment::RunAndClearNativeImmediates() {
auto drain_list = [&]() {
TryCatchScope try_catch(this);
for (auto it = list.begin(); it != list.end(); ++it) {
-#ifdef DEBUG
- v8::SealHandleScope seal_handle_scope(isolate());
-#endif
+ DebugSealHandleScope seal_handle_scope(isolate());
it->cb_(this, it->data_);
if (it->refed_)
ref_count++;
diff --git a/src/node_internals.h b/src/node_internals.h
index 166cfd9ea2..212da7af28 100644
--- a/src/node_internals.h
+++ b/src/node_internals.h
@@ -217,6 +217,20 @@ class InternalCallbackScope {
bool closed_ = false;
};
+class DebugSealHandleScope {
+ public:
+ explicit inline DebugSealHandleScope(v8::Isolate* isolate)
+#ifdef DEBUG
+ : actual_scope_(isolate)
+#endif
+ {}
+
+ private:
+#ifdef DEBUG
+ v8::SealHandleScope actual_scope_;
+#endif
+};
+
class ThreadPoolWork {
public:
explicit inline ThreadPoolWork(Environment* env) : env_(env) {
diff --git a/src/node_platform.cc b/src/node_platform.cc
index 115b59e356..b96d5d3a1a 100644
--- a/src/node_platform.cc
+++ b/src/node_platform.cc
@@ -12,7 +12,6 @@ using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::Platform;
-using v8::SealHandleScope;
using v8::Task;
using node::tracing::TracingController;
@@ -332,9 +331,7 @@ int NodePlatform::NumberOfWorkerThreads() {
void PerIsolatePlatformData::RunForegroundTask(std::unique_ptr<Task> task) {
Isolate* isolate = Isolate::GetCurrent();
-#ifdef DEBUG
- SealHandleScope scope(isolate);
-#endif
+ DebugSealHandleScope scope(isolate);
Environment* env = Environment::GetCurrent(isolate);
if (env != nullptr) {
InternalCallbackScope cb_scope(env, Local<Object>(), { 0, 0 },
diff --git a/src/stream_base-inl.h b/src/stream_base-inl.h
index f9a67872f9..368dcafe1c 100644
--- a/src/stream_base-inl.h
+++ b/src/stream_base-inl.h
@@ -113,39 +113,29 @@ inline void StreamResource::RemoveStreamListener(StreamListener* listener) {
}
inline uv_buf_t StreamResource::EmitAlloc(size_t suggested_size) {
-#ifdef DEBUG
- v8::SealHandleScope handle_scope(v8::Isolate::GetCurrent());
-#endif
+ DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
return listener_->OnStreamAlloc(suggested_size);
}
inline void StreamResource::EmitRead(ssize_t nread, const uv_buf_t& buf) {
-#ifdef DEBUG
- v8::SealHandleScope handle_scope(v8::Isolate::GetCurrent());
-#endif
+ DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
if (nread > 0)
bytes_read_ += static_cast<uint64_t>(nread);
listener_->OnStreamRead(nread, buf);
}
inline void StreamResource::EmitAfterWrite(WriteWrap* w, int status) {
-#ifdef DEBUG
- v8::SealHandleScope handle_scope(v8::Isolate::GetCurrent());
-#endif
+ DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
listener_->OnStreamAfterWrite(w, status);
}
inline void StreamResource::EmitAfterShutdown(ShutdownWrap* w, int status) {
-#ifdef DEBUG
- v8::SealHandleScope handle_scope(v8::Isolate::GetCurrent());
-#endif
+ DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
listener_->OnStreamAfterShutdown(w, status);
}
inline void StreamResource::EmitWantsWrite(size_t suggested_size) {
-#ifdef DEBUG
- v8::SealHandleScope handle_scope(v8::Isolate::GetCurrent());
-#endif
+ DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
listener_->OnStreamWantsWrite(suggested_size);
}