Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | List of all members
dart::StressTask Class Reference
Inheritance diagram for dart::StressTask:
dart::StateMachineTask dart::ThreadPool::Task dart::IntrusiveDListEntry< Task >

Public Types

enum  State { kStart = StateMachineTask::kNext }
 
- Public Types inherited from dart::StateMachineTask
enum  State {
  kInitialized = 0 , kEntered , kPleaseExit , kExited ,
  kNext
}
 

Public Member Functions

 StressTask (std::shared_ptr< Data > data)
 
- Public Member Functions inherited from dart::StateMachineTask
 StateMachineTask (std::shared_ptr< Data > data)
 
virtual void Run ()
 
- Public Member Functions inherited from dart::ThreadPool::Task
virtual ~Task ()
 
- Public Member Functions inherited from dart::IntrusiveDListEntry< Task >
 IntrusiveDListEntry ()
 
 ~IntrusiveDListEntry ()
 

Protected Member Functions

Datadata ()
 
virtual void RunInternal ()
 
- Protected Member Functions inherited from dart::ThreadPool::Task
 Task ()
 

Additional Inherited Members

- Protected Attributes inherited from dart::StateMachineTask
std::shared_ptr< Datadata_
 
Threadthread_ = nullptr
 

Detailed Description

Definition at line 511 of file safepoint_test.cc.

Member Enumeration Documentation

◆ State

Enumerator
kStart 

Definition at line 513 of file safepoint_test.cc.

Constructor & Destructor Documentation

◆ StressTask()

dart::StressTask::StressTask ( std::shared_ptr< Data data)
inlineexplicit

Definition at line 517 of file safepoint_test.cc.

StateMachineTask(std::shared_ptr< Data > data)

Member Function Documentation

◆ data()

Data * dart::StressTask::data ( )
inlineprotected

Definition at line 520 of file safepoint_test.cc.

520{ return reinterpret_cast<Data*>(data_.get()); }
std::shared_ptr< Data > data_
struct PathData * Data(SkPath *path)
Definition path_ops.cc:52

◆ RunInternal()

virtual void dart::StressTask::RunInternal ( )
inlineprotectedvirtual

Implements dart::StateMachineTask.

Definition at line 522 of file safepoint_test.cc.

522 {
523 data_->WaitUntil(kStart);
524
525 Random random(thread_->isolate_group()->random()->NextUInt64());
526 while (!data()->IsIn(kPleaseExit)) {
527 const auto us = random.NextUInt32() % 3;
528 switch (random.NextUInt32() % 5) {
529 case 0: {
530 DeoptSafepointOperationScope safepoint_op(thread_);
531 OS::SleepMicros(us);
532 break;
533 }
534 case 1: {
535 GcSafepointOperationScope safepoint_op(thread_);
536 OS::SleepMicros(us);
537 break;
538 }
539 case 2: {
540 const bool kBypassSafepoint = false;
541 Thread::ExitIsolateGroupAsHelper(kBypassSafepoint);
542 OS::SleepMicros(us);
544 data_->isolate_group_, Thread::kUnknownTask, kBypassSafepoint);
546 break;
547 }
548 case 3: {
550 OS::SleepMicros(us);
552 break;
553 }
554 case 4: {
557 }
558 break;
559 }
560 }
561 }
562 }
Random * random()
Definition isolate.h:410
static void SleepMicros(int64_t micros)
uint64_t NextUInt64()
Definition random.h:26
static Thread * Current()
Definition thread.h:361
bool IsSafepointRequested() const
Definition thread.h:924
void ExitSafepoint()
Definition thread.h:1081
static void ExitIsolateGroupAsHelper(bool bypass_safepoint)
Definition thread.cc:494
void EnterSafepoint()
Definition thread.h:1063
IsolateGroup * isolate_group() const
Definition thread.h:540
void BlockForSafepoint()
Definition thread.cc:1282
static bool EnterIsolateGroupAsHelper(IsolateGroup *isolate_group, TaskKind kind, bool bypass_safepoint)
Definition thread.cc:476

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