Skip to content

Commit 312f949

Browse files
joyeecheungtargos
authored andcommitted
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 <[email protected]> Commit-Queue: Yang Guo <[email protected]> Cr-Commit-Position: refs/heads/master@{#62095} Refs: v8/v8@d2ccc59 PR-URL: #28648 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 3a4a236 commit 312f949

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

common.gypi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
# Reset this number to 0 on major V8 upgrades.
4040
# Increment by one for each non-official patch applied to deps/v8.
41-
'v8_embedder_string': '-node.14',
41+
'v8_embedder_string': '-node.15',
4242

4343
##### V8 defaults for Node.js #####
4444

deps/v8/src/snapshot/serializer.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,12 @@ void Serializer::SerializeRootObject(Object object) {
116116
}
117117

118118
#ifdef DEBUG
119-
void Serializer::PrintStack() {
119+
void Serializer::PrintStack() { PrintStack(std::cout); }
120+
121+
void Serializer::PrintStack(std::ostream& out) {
120122
for (const auto o : stack_) {
121-
o->Print();
122-
PrintF("\n");
123+
o.Print(out);
124+
out << "\n";
123125
}
124126
}
125127
#endif // DEBUG

deps/v8/src/snapshot/serializer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ class Serializer : public SerializerDeserializer {
250250
void PushStack(HeapObject o) { stack_.push_back(o); }
251251
void PopStack() { stack_.pop_back(); }
252252
void PrintStack();
253+
void PrintStack(std::ostream&);
253254
#endif // DEBUG
254255

255256
SerializerReferenceMap* reference_map() { return &reference_map_; }

deps/v8/src/snapshot/startup-serializer.cc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,16 @@ bool IsUnexpectedCodeObject(Isolate* isolate, HeapObject obj) {
7272
#endif // DEBUG
7373

7474
void StartupSerializer::SerializeObject(HeapObject obj) {
75-
DCHECK(!obj->IsJSFunction());
75+
#ifdef DEBUG
76+
if (obj.IsJSFunction()) {
77+
v8::base::OS::PrintError("Reference stack:\n");
78+
PrintStack(std::cerr);
79+
obj.Print(std::cerr);
80+
FATAL(
81+
"JSFunction should be added through the context snapshot instead of "
82+
"the isolate snapshot");
83+
}
84+
#endif // DEBUG
7685
DCHECK(!IsUnexpectedCodeObject(isolate(), obj));
7786

7887
if (SerializeHotObject(obj)) return;

0 commit comments

Comments
 (0)