summaryrefslogtreecommitdiff
path: root/src/node_messaging.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-06-10 16:40:13 +0200
committerAnna Henningsen <anna@addaleax.net>2018-07-13 19:53:15 +0200
commit57e301539bff2599974b7269a56377330c9b730e (patch)
tree6f5c866728f22bbacb8dadb89a2c8a12e5b66508 /src/node_messaging.cc
parent36cc5f5caf52af895079d153a9131fe2b0c6b8f9 (diff)
downloadandroid-node-v8-57e301539bff2599974b7269a56377330c9b730e.tar.gz
android-node-v8-57e301539bff2599974b7269a56377330c9b730e.tar.bz2
android-node-v8-57e301539bff2599974b7269a56377330c9b730e.zip
src: enable more detailed memory tracking
This will enable more detailed heap snapshots based on a newer V8 API. This commit itself is not tied to that API and could be backported. PR-URL: https://github.com/nodejs/node/pull/21742 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/node_messaging.cc')
-rw-r--r--src/node_messaging.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index 24a99c8bc6..20e0c7673b 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -325,6 +325,14 @@ Maybe<bool> Message::Serialize(Environment* env,
return Just(true);
}
+void Message::MemoryInfo(MemoryTracker* tracker) const {
+ tracker->TrackThis(this);
+ tracker->TrackField("array_buffer_contents", array_buffer_contents_);
+ tracker->TrackFieldWithSize("shared_array_buffers",
+ shared_array_buffers_.size() * sizeof(shared_array_buffers_[0]));
+ tracker->TrackField("message_ports", message_ports_);
+}
+
MessagePortData::MessagePortData(MessagePort* owner) : owner_(owner) { }
MessagePortData::~MessagePortData() {
@@ -332,6 +340,12 @@ MessagePortData::~MessagePortData() {
Disentangle();
}
+void MessagePortData::MemoryInfo(MemoryTracker* tracker) const {
+ Mutex::ScopedLock lock(mutex_);
+ tracker->TrackThis(this);
+ tracker->TrackField("incoming_messages", incoming_messages_);
+}
+
void MessagePortData::AddToIncomingQueue(Message&& message) {
// This function will be called by other threads.
Mutex::ScopedLock lock(mutex_);
@@ -688,14 +702,6 @@ void MessagePort::Drain(const FunctionCallbackInfo<Value>& args) {
port->OnMessage();
}
-size_t MessagePort::self_size() const {
- Mutex::ScopedLock lock(data_->mutex_);
- size_t sz = sizeof(*this) + sizeof(*data_);
- for (const Message& msg : data_->incoming_messages_)
- sz += sizeof(msg) + msg.main_message_buf_.size;
- return sz;
-}
-
void MessagePort::Entangle(MessagePort* a, MessagePort* b) {
Entangle(a, b->data_.get());
}