Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deps: V8: cherry-pick 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: v8/v8@d2ccc59

PR-URL: #28016
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Refael Ackermann (רפאל פלחי) <refack@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
  • Loading branch information
targos committed Aug 9, 2019
commit 826cc18e8fbeb410872e939404592f8456f286a3
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