summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-04-19 12:40:27 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2019-04-26 19:03:14 +0800
commit744cdecbf42e9ba9bdff2d5006cb625f25b87917 (patch)
tree346a4870cb6c071c4d873cb5669ec27e9cbfd484 /src
parente029b927c2a291b78bb27202a14bff09628b75a6 (diff)
downloadnode-new-744cdecbf42e9ba9bdff2d5006cb625f25b87917.tar.gz
src: move OnMessage to node_errors.cc
Rename the per-isolate message listener to `PerIsolateMessageListener` and move it to `node_errors.cc` since it's part of the error handling process. It also creates an external reference so it needs to be exposed in `node_errors.h` for a snapshot builder to know. PR-URL: https://github.com/nodejs/node/pull/27304 Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src')
-rw-r--r--src/api/environment.cc29
-rw-r--r--src/node_errors.cc27
-rw-r--r--src/node_errors.h2
3 files changed, 30 insertions, 28 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc
index 9a29ad1e5e..548b685dfe 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -5,7 +5,6 @@
#include "node_internals.h"
#include "node_native_module_env.h"
#include "node_platform.h"
-#include "node_process.h"
#include "node_v8_platform-inl.h"
#include "uv.h"
@@ -46,32 +45,6 @@ static bool ShouldAbortOnUncaughtException(Isolate* isolate) {
!env->inside_should_not_abort_on_uncaught_scope();
}
-static void OnMessage(Local<Message> message, Local<Value> error) {
- Isolate* isolate = message->GetIsolate();
- switch (message->ErrorLevel()) {
- case Isolate::MessageErrorLevel::kMessageWarning: {
- Environment* env = Environment::GetCurrent(isolate);
- if (!env) {
- break;
- }
- Utf8Value filename(isolate, message->GetScriptOrigin().ResourceName());
- // (filename):(line) (message)
- std::stringstream warning;
- warning << *filename;
- warning << ":";
- warning << message->GetLineNumber(env->context()).FromMaybe(-1);
- warning << " ";
- v8::String::Utf8Value msg(isolate, message->Get());
- warning << *msg;
- USE(ProcessEmitWarningGeneric(env, warning.str().c_str(), "V8"));
- break;
- }
- case Isolate::MessageErrorLevel::kMessageError:
- FatalException(isolate, error, message);
- break;
- }
-}
-
void* NodeArrayBufferAllocator::Allocate(size_t size) {
if (zero_fill_field_ || per_process::cli_options->zero_fill_all_buffers)
return UncheckedCalloc(size);
@@ -187,7 +160,7 @@ void SetIsolateUpForNode(v8::Isolate* isolate, IsolateSettingCategories cat) {
switch (cat) {
case IsolateSettingCategories::kErrorHandlers:
isolate->AddMessageListenerWithErrorLevel(
- OnMessage,
+ errors::PerIsolateMessageListener,
Isolate::MessageErrorLevel::kMessageError |
Isolate::MessageErrorLevel::kMessageWarning);
isolate->SetAbortOnUncaughtExceptionCallback(
diff --git a/src/node_errors.cc b/src/node_errors.cc
index 560409d96b..e2cd65b4ef 100644
--- a/src/node_errors.cc
+++ b/src/node_errors.cc
@@ -6,6 +6,7 @@
#ifdef NODE_REPORT
#include "node_report.h"
#endif
+#include "node_process.h"
#include "node_v8_platform-inl.h"
namespace node {
@@ -739,6 +740,32 @@ const char* errno_string(int errorno) {
}
}
+void PerIsolateMessageListener(Local<Message> message, Local<Value> error) {
+ Isolate* isolate = message->GetIsolate();
+ switch (message->ErrorLevel()) {
+ case Isolate::MessageErrorLevel::kMessageWarning: {
+ Environment* env = Environment::GetCurrent(isolate);
+ if (!env) {
+ break;
+ }
+ Utf8Value filename(isolate, message->GetScriptOrigin().ResourceName());
+ // (filename):(line) (message)
+ std::stringstream warning;
+ warning << *filename;
+ warning << ":";
+ warning << message->GetLineNumber(env->context()).FromMaybe(-1);
+ warning << " ";
+ v8::String::Utf8Value msg(isolate, message->Get());
+ warning << *msg;
+ USE(ProcessEmitWarningGeneric(env, warning.str().c_str(), "V8"));
+ break;
+ }
+ case Isolate::MessageErrorLevel::kMessageError:
+ FatalException(isolate, error, message);
+ break;
+ }
+}
+
} // namespace errors
void DecorateErrorStack(Environment* env,
diff --git a/src/node_errors.h b/src/node_errors.h
index c27f4b36fa..49575f0bd1 100644
--- a/src/node_errors.h
+++ b/src/node_errors.h
@@ -191,6 +191,8 @@ class TryCatchScope : public v8::TryCatch {
};
const char* errno_string(int errorno);
+void PerIsolateMessageListener(v8::Local<v8::Message> message,
+ v8::Local<v8::Value> error);
} // namespace errors