Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-04-19 07:40:27 +0300
committerJoyee Cheung <joyeec9h3@gmail.com>2019-04-26 14:03:14 +0300
commit744cdecbf42e9ba9bdff2d5006cb625f25b87917 (patch)
tree346a4870cb6c071c4d873cb5669ec27e9cbfd484 /src/node_errors.cc
parente029b927c2a291b78bb27202a14bff09628b75a6 (diff)
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/node_errors.cc')
-rw-r--r--src/node_errors.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/node_errors.cc b/src/node_errors.cc
index 560409d96b6..e2cd65b4efc 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,