Skip to content

Commit

Permalink
deps: V8: cherry-pick d2ccc59
Browse files Browse the repository at this point in the history
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

Backport-PR-URL: #28955
PR-URL: #28016
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Refael Ackermann (רפאל פלחי) <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
  • Loading branch information
targos committed Aug 16, 2019
1 parent 945955f commit 492b7cb
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.12',
'v8_embedder_string': '-node.13',

##### V8 defaults for Node.js #####

Expand Down
8 changes: 5 additions & 3 deletions deps/v8/src/snapshot/serializer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,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
Expand Down
1 change: 1 addition & 0 deletions deps/v8/src/snapshot/serializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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_; }
Expand Down
11 changes: 10 additions & 1 deletion deps/v8/src/snapshot/startup-serializer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,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;
Expand Down

0 comments on commit 492b7cb

Please sign in to comment.