495 {
496
499 response_obj =
message->raw_obj();
500 }
else if (
message->IsPersistentHandle()) {
501 PersistentHandle* handle =
message->persistent_handle();
502
505 response_obj = handle->ptr();
507 } else {
510 }
511 if (response_obj.IsString()) {
513 response ^= response_obj.ptr();
515 } else {
516 ASSERT(response_obj.IsArray());
518 response_array ^= response_obj.ptr();
519 ASSERT(response_array.Length() == 1);
521 response ^= response_array.At(0);
522 msg_.reset(
Utils::StrDup(
reinterpret_cast<char*
>(response.DataAddr(0))));
523 }
524
526 }
void FreePersistentHandle(PersistentHandle *ref)
ApiState * api_state() const
IsolateGroup * group() const
virtual Isolate * isolate() const
static Thread * Current()
static uword ToAddr(const UntaggedObject *raw_obj)
static char * StrDup(const char *s)
bool Contains(const Container &container, const Value &value)
ObjectPtr ReadMessage(Thread *thread, Message *message)