5#ifndef RUNTIME_VM_MESSAGE_H_
6#define RUNTIME_VM_MESSAGE_H_
23class PersistentHandle;
71 template <
typename... Args>
72 static std::unique_ptr<Message>
New(Args&&...
args) {
73 return std::unique_ptr<Message>(
new Message(std::forward<Args>(
args)...));
80 return payload_.snapshot_;
87 intptr_t size = snapshot_length_;
88 if (finalizable_data_ !=
nullptr) {
96 return payload_.raw_obj_;
100 return payload_.persistent_handle_;
112 bool IsRaw()
const {
return snapshot_length_ == 0; }
116 return snapshot_length_ == kPersistentHandleSnapshotLen;
120 return snapshot_length_ == kFinalizerSnapshotLen;
124 if (finalizable_data_ !=
nullptr) {
134 static intptr_t
const kPersistentHandleSnapshotLen = -1;
135 static intptr_t
const kFinalizerSnapshotLen = -2;
149 PersistentHandle* persistent_handle_;
151 intptr_t snapshot_length_ = 0;
152 MessageFinalizableData* finalizable_data_ =
nullptr;
164 void Enqueue(std::unique_ptr<Message> msg,
bool before_events);
168 std::unique_ptr<Message>
Dequeue();
intptr_t external_size() const
void Reset(const MessageQueue *queue)
Message * FindMessageById(intptr_t id)
void Enqueue(std::unique_ptr< Message > msg, bool before_events)
void PrintJSON(JSONStream *stream)
std::unique_ptr< Message > Dequeue()
PersistentHandle * persistent_handle() const
bool IsPersistentHandle() const
Priority priority() const
static std::unique_ptr< Message > New(Args &&... args)
MessageFinalizableData * finalizable_data()
ObjectPtr raw_obj() const
@ kDelayedIsolateLibOOBMsg
intptr_t snapshot_length() const
Dart_Port dest_port() const
static const Dart_Port kIllegalPort
uint8_t * snapshot() const
static const char * PriorityAsString(Priority priority)
bool IsFinalizerInvocationRequest() const
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args