summaryrefslogtreecommitdiff
path: root/deps/v8/src
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-07-12 12:10:28 +0800
committerRich Trott <rtrott@gmail.com>2019-07-15 19:26:15 -0700
commit2a1503774469f941a5df90ee5bfa97130492a445 (patch)
treeb7d7f9de128ef8d3c1fd4f90b99c25e63c975092 /deps/v8/src
parent87d0d8c7d48e7261157fde1cb130ca460dba406c (diff)
downloadandroid-node-v8-2a1503774469f941a5df90ee5bfa97130492a445.tar.gz
android-node-v8-2a1503774469f941a5df90ee5bfa97130492a445.tar.bz2
android-node-v8-2a1503774469f941a5df90ee5bfa97130492a445.zip
deps: V8: backport d2ccc59
Original commit message: [snapshot] print reference stack for JSFunctions in the isolate snapshot This helps debugging incorrect usage of the SnapshotCreator API in debug mode. Change-Id: Ibd9db76a5f460cdf7ea6d14e865592ebaf69aeef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1648240 Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#62095} Refs: https://github.com/v8/v8/commit/d2ccc599c7a31838752350ae927e41bc386df414 PR-URL: https://github.com/nodejs/node/pull/28648 Reviewed-By: Michaƫl Zasso <targos@protonmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps/v8/src')
-rw-r--r--deps/v8/src/snapshot/serializer.cc8
-rw-r--r--deps/v8/src/snapshot/serializer.h1
-rw-r--r--deps/v8/src/snapshot/startup-serializer.cc11
3 files changed, 16 insertions, 4 deletions
diff --git a/deps/v8/src/snapshot/serializer.cc b/deps/v8/src/snapshot/serializer.cc
index 0096b2c4fb..447a69aea8 100644
--- a/deps/v8/src/snapshot/serializer.cc
+++ b/deps/v8/src/snapshot/serializer.cc
@@ -116,10 +116,12 @@ void Serializer::SerializeRootObject(Object object) {
}
#ifdef DEBUG
-void Serializer::PrintStack() {
+void Serializer::PrintStack() { PrintStack(std::cout); }
+
+void Serializer::PrintStack(std::ostream& out) {
for (const auto o : stack_) {
- o->Print();
- PrintF("\n");
+ o.Print(out);
+ out << "\n";
}
}
#endif // DEBUG
diff --git a/deps/v8/src/snapshot/serializer.h b/deps/v8/src/snapshot/serializer.h
index 9f7c0ac90c..49ffddbefb 100644
--- a/deps/v8/src/snapshot/serializer.h
+++ b/deps/v8/src/snapshot/serializer.h
@@ -250,6 +250,7 @@ class Serializer : public SerializerDeserializer {
void PushStack(HeapObject o) { stack_.push_back(o); }
void PopStack() { stack_.pop_back(); }
void PrintStack();
+ void PrintStack(std::ostream&);
#endif // DEBUG
SerializerReferenceMap* reference_map() { return &reference_map_; }
diff --git a/deps/v8/src/snapshot/startup-serializer.cc b/deps/v8/src/snapshot/startup-serializer.cc
index 907b338742..47b3f0f41b 100644
--- a/deps/v8/src/snapshot/startup-serializer.cc
+++ b/deps/v8/src/snapshot/startup-serializer.cc
@@ -72,7 +72,16 @@ bool IsUnexpectedCodeObject(Isolate* isolate, HeapObject obj) {
#endif // DEBUG
void StartupSerializer::SerializeObject(HeapObject obj) {
- DCHECK(!obj->IsJSFunction());
+#ifdef DEBUG
+ if (obj.IsJSFunction()) {
+ v8::base::OS::PrintError("Reference stack:\n");
+ PrintStack(std::cerr);
+ obj.Print(std::cerr);
+ FATAL(
+ "JSFunction should be added through the context snapshot instead of "
+ "the isolate snapshot");
+ }
+#endif // DEBUG
DCHECK(!IsUnexpectedCodeObject(isolate(), obj));
if (SerializeHotObject(obj)) return;