Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dart::IsolateSpawnState Class Reference

Public Member Functions

 IsolateSpawnState (Dart_Port parent_port, Dart_Port origin_id, const char *script_url, PersistentHandle *closure_tuple_handle, SerializedObjectBuffer *message_buffer, const char *package_config, bool paused, bool errorsAreFatal, Dart_Port onExit, Dart_Port onError, const char *debug_name, IsolateGroup *group)
 
 IsolateSpawnState (Dart_Port parent_port, const char *script_url, const char *package_config, SerializedObjectBuffer *args_buffer, SerializedObjectBuffer *message_buffer, bool paused, bool errorsAreFatal, Dart_Port onExit, Dart_Port onError, const char *debug_name, IsolateGroup *group)
 
 ~IsolateSpawnState ()
 
Isolateisolate () const
 
void set_isolate (Isolate *value)
 
Dart_Port parent_port () const
 
Dart_Port origin_id () const
 
Dart_Port on_exit_port () const
 
Dart_Port on_error_port () const
 
const char * script_url () const
 
const char * package_config () const
 
const char * debug_name () const
 
bool is_spawn_uri () const
 
bool paused () const
 
bool errors_are_fatal () const
 
Dart_IsolateFlagsisolate_flags ()
 
PersistentHandleclosure_tuple_handle () const
 
ObjectPtr ResolveFunction ()
 
ObjectPtr BuildArgs (Thread *thread)
 
ObjectPtr BuildMessage (Thread *thread)
 
IsolateGroupisolate_group () const
 

Detailed Description

Definition at line 349 of file isolate.cc.

Constructor & Destructor Documentation

◆ IsolateSpawnState() [1/2]

dart::IsolateSpawnState::IsolateSpawnState ( Dart_Port  parent_port,
Dart_Port  origin_id,
const char *  script_url,
PersistentHandle closure_tuple_handle,
SerializedObjectBuffer message_buffer,
const char *  package_config,
bool  paused,
bool  errorsAreFatal,
Dart_Port  onExit,
Dart_Port  onError,
const char *  debug_name,
IsolateGroup group 
)

Definition at line 428 of file isolate.cc.

440 : parent_port_(parent_port),
441 origin_id_(origin_id),
442 on_exit_port_(on_exit_port),
443 on_error_port_(on_error_port),
444 script_url_(script_url),
445 package_config_(package_config),
446 debug_name_(debug_name),
447 closure_tuple_handle_(closure_tuple_handle),
448 isolate_group_(isolate_group),
449 serialized_args_(nullptr),
450 serialized_message_(message_buffer->StealMessage()),
451 paused_(paused),
452 errors_are_fatal_(errors_are_fatal) {
453 ASSERT(closure_tuple_handle_ != nullptr);
454
455 auto thread = Thread::Current();
456 auto isolate = thread->isolate();
457
458 // Inherit flags from spawning isolate.
460}
const char * script_url() const
Definition isolate.cc:383
bool paused() const
Definition isolate.cc:389
Dart_Port parent_port() const
Definition isolate.cc:379
const char * debug_name() const
Definition isolate.cc:385
PersistentHandle * closure_tuple_handle() const
Definition isolate.cc:392
Dart_Port on_error_port() const
Definition isolate.cc:382
const char * package_config() const
Definition isolate.cc:384
IsolateGroup * isolate_group() const
Definition isolate.cc:400
Dart_IsolateFlags * isolate_flags()
Definition isolate.cc:391
Dart_Port origin_id() const
Definition isolate.cc:380
bool errors_are_fatal() const
Definition isolate.cc:390
Isolate * isolate() const
Definition isolate.cc:376
Dart_Port on_exit_port() const
Definition isolate.cc:381
void FlagsCopyTo(Dart_IsolateFlags *api_flags) const
Definition isolate.cc:1625
static Thread * Current()
Definition thread.h:361
#define ASSERT(E)

◆ IsolateSpawnState() [2/2]

dart::IsolateSpawnState::IsolateSpawnState ( Dart_Port  parent_port,
const char *  script_url,
const char *  package_config,
SerializedObjectBuffer args_buffer,
SerializedObjectBuffer message_buffer,
bool  paused,
bool  errorsAreFatal,
Dart_Port  onExit,
Dart_Port  onError,
const char *  debug_name,
IsolateGroup group 
)

Definition at line 462 of file isolate.cc.

473 : parent_port_(parent_port),
474 on_exit_port_(on_exit_port),
475 on_error_port_(on_error_port),
476 script_url_(script_url),
477 package_config_(package_config),
478 debug_name_(debug_name),
479 isolate_group_(isolate_group),
480 serialized_args_(args_buffer->StealMessage()),
481 serialized_message_(message_buffer->StealMessage()),
482 isolate_flags_(),
483 paused_(paused),
484 errors_are_fatal_(errors_are_fatal) {
485 if (debug_name_ == nullptr) {
486 debug_name_ = NewConstChar("main");
487 }
488
489 // By default inherit flags from spawning isolate. These can be overridden
490 // from the calling code.
492}
static Isolate * Current()
Definition isolate.h:939
static const char * NewConstChar(const char *chars)
Definition isolate.cc:421

◆ ~IsolateSpawnState()

dart::IsolateSpawnState::~IsolateSpawnState ( )

Definition at line 494 of file isolate.cc.

494 {
495 delete[] script_url_;
496 delete[] package_config_;
497 delete[] debug_name_;
498}

Member Function Documentation

◆ BuildArgs()

ObjectPtr dart::IsolateSpawnState::BuildArgs ( Thread thread)

Definition at line 539 of file isolate.cc.

539 {
540 const Object& result =
541 Object::Handle(DeserializeMessage(thread, serialized_args_.get()));
542 serialized_args_.reset();
543 return result.ptr();
544}
static Object & Handle()
Definition object.h:407
GAsyncResult * result
static ObjectPtr DeserializeMessage(Thread *thread, Message *message)
Definition isolate.cc:528

◆ BuildMessage()

ObjectPtr dart::IsolateSpawnState::BuildMessage ( Thread thread)

Definition at line 546 of file isolate.cc.

546 {
547 const Object& result =
548 Object::Handle(DeserializeMessage(thread, serialized_message_.get()));
549 serialized_message_.reset();
550 return result.ptr();
551}

◆ closure_tuple_handle()

PersistentHandle * dart::IsolateSpawnState::closure_tuple_handle ( ) const
inline

Definition at line 392 of file isolate.cc.

392 {
393 return closure_tuple_handle_;
394 }

◆ debug_name()

const char * dart::IsolateSpawnState::debug_name ( ) const
inline

Definition at line 385 of file isolate.cc.

385{ return debug_name_; }

◆ errors_are_fatal()

bool dart::IsolateSpawnState::errors_are_fatal ( ) const
inline

Definition at line 390 of file isolate.cc.

390{ return errors_are_fatal_; }

◆ is_spawn_uri()

bool dart::IsolateSpawnState::is_spawn_uri ( ) const
inline

Definition at line 386 of file isolate.cc.

386 {
387 return closure_tuple_handle_ == nullptr; // No closure entrypoint.
388 }

◆ isolate()

Isolate * dart::IsolateSpawnState::isolate ( ) const
inline

Definition at line 376 of file isolate.cc.

376{ return isolate_; }

◆ isolate_flags()

Dart_IsolateFlags * dart::IsolateSpawnState::isolate_flags ( )
inline

Definition at line 391 of file isolate.cc.

391{ return &isolate_flags_; }

◆ isolate_group()

IsolateGroup * dart::IsolateSpawnState::isolate_group ( ) const
inline

Definition at line 400 of file isolate.cc.

400{ return isolate_group_; }

◆ on_error_port()

Dart_Port dart::IsolateSpawnState::on_error_port ( ) const
inline

Definition at line 382 of file isolate.cc.

382{ return on_error_port_; }

◆ on_exit_port()

Dart_Port dart::IsolateSpawnState::on_exit_port ( ) const
inline

Definition at line 381 of file isolate.cc.

381{ return on_exit_port_; }

◆ origin_id()

Dart_Port dart::IsolateSpawnState::origin_id ( ) const
inline

Definition at line 380 of file isolate.cc.

380{ return origin_id_; }

◆ package_config()

const char * dart::IsolateSpawnState::package_config ( ) const
inline

Definition at line 384 of file isolate.cc.

384{ return package_config_; }

◆ parent_port()

Dart_Port dart::IsolateSpawnState::parent_port ( ) const
inline

Definition at line 379 of file isolate.cc.

379{ return parent_port_; }

◆ paused()

bool dart::IsolateSpawnState::paused ( ) const
inline

Definition at line 389 of file isolate.cc.

389{ return paused_; }

◆ ResolveFunction()

ObjectPtr dart::IsolateSpawnState::ResolveFunction ( )

Definition at line 500 of file isolate.cc.

500 {
501 Thread* thread = Thread::Current();
502 auto IG = thread->isolate_group();
503 Zone* zone = thread->zone();
504
505 // Handle spawnUri lookup rules.
506 // Check whether the root library defines a main function.
507 const Library& lib =
508 Library::Handle(zone, IG->object_store()->root_library());
509 const String& main = String::Handle(zone, String::New("main"));
510 Function& func = Function::Handle(zone, lib.LookupFunctionAllowPrivate(main));
511 if (func.IsNull()) {
512 // Check whether main is reexported from the root library.
513 const Object& obj = Object::Handle(zone, lib.LookupReExport(main));
514 if (obj.IsFunction()) {
515 func ^= obj.ptr();
516 }
517 }
518 if (func.IsNull()) {
519 const String& msg = String::Handle(
520 zone,
522 "Unable to resolve function 'main' in script '%s'.", script_url()));
523 return LanguageError::New(msg);
524 }
525 return func.ptr();
526}
#define IG
static StringPtr NewFormatted(const char *format,...) PRINTF_ATTRIBUTE(1
Definition object.cc:24083
static StringPtr New(const char *cstr, Heap::Space space=Heap::kNew)
Definition object.cc:23777
Definition main.py:1

◆ script_url()

const char * dart::IsolateSpawnState::script_url ( ) const
inline

Definition at line 383 of file isolate.cc.

383{ return script_url_; }

◆ set_isolate()

void dart::IsolateSpawnState::set_isolate ( Isolate value)
inline

Definition at line 377 of file isolate.cc.

377{ isolate_ = value; }
uint8_t value

The documentation for this class was generated from the following file: