Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Typedefs | Enumerations
thread.h File Reference
#include <setjmp.h>
#include "include/dart_api.h"
#include "platform/assert.h"
#include "platform/atomic.h"
#include "platform/safe_stack.h"
#include "vm/bitfield.h"
#include "vm/compiler/runtime_api.h"
#include "vm/constants.h"
#include "vm/globals.h"
#include "vm/handles.h"
#include "vm/heap/pointer_block.h"
#include "vm/heap/sampler.h"
#include "vm/os_thread.h"
#include "vm/pending_deopts.h"
#include "vm/random.h"
#include "vm/runtime_entry_list.h"
#include "vm/tags.h"
#include "vm/thread_stack_resource.h"
#include "vm/thread_state.h"

Go to the source code of this file.

Classes

struct  dart::TsanUtils
 
class  dart::Thread
 
class  dart::RuntimeCallDeoptScope
 
class  dart::DisableThreadInterruptsScope
 
class  dart::NoSafepointScope
 
class  dart::NoReloadScope
 
class  dart::RawReloadParticipationScope
 
class  dart::StoppedMutatorsScope
 
class  dart::EnterCompilerScope
 
class  dart::LeaveCompilerScope
 

Namespaces

namespace  dart
 
namespace  dart::compiler
 
namespace  dart::compiler::target
 

Macros

#define REUSABLE_HANDLE_LIST(V)
 
#define CACHED_VM_STUBS_LIST(V)
 
#define CACHED_NON_VM_STUB_LIST(V)
 
#define CACHED_VM_OBJECTS_LIST(V)
 
#define CACHED_FUNCTION_ENTRY_POINTS_LIST(V)
 
#define ASSERT_BOOL_FALSE_FOLLOWS_BOOL_TRUE()
 
#define CACHED_VM_STUBS_ADDRESSES_LIST(V)
 
#define CACHED_ADDRESSES_LIST(V)
 
#define CACHED_CONSTANTS_LIST(V)
 
#define DEFINE_OFFSET_METHOD(type_name, member_name, expr, default_init_value)
 
#define DEFINE_OFFSET_METHOD(name)
 
#define DEFINE_OFFSET_METHOD(returntype, name, ...)
 
#define DEFINE_OFFSET_METHOD(name)
 
#define REUSABLE_HANDLE(object)    object& object##Handle() const { return *object##_handle_; }
 
#define DECLARE_MEMBERS(type_name, member_name, expr, default_init_value)    type_name member_name;
 
#define DECLARE_MEMBERS(name)   uword name##_entry_point_;
 
#define DECLARE_MEMBERS(returntype, name, ...)   uword name##_entry_point_;
 
#define DECLARE_MEMBERS(name)   uword name##_entry_point_ = 0;
 
#define REUSABLE_HANDLE_FIELDS(object)   object* object##_handle_;
 
#define REUSABLE_FRIEND_DECLARATION(name)    friend class Reusable##name##HandleScope;
 

Typedefs

using dart::ReloadParticipationScope = AsThreadStackResource< RawReloadParticipationScope >
 

Enumerations

enum class  dart::ValidationPolicy { dart::kValidateFrames = 0 , dart::kDontValidateFrames = 1 }
 
enum class  dart::RuntimeCallDeoptAbility { dart::kCanLazyDeopt , dart::kCannotLazyDeopt }
 
enum  dart::SafepointLevel {
  dart::kGC , dart::kGCAndDeopt , dart::kGCAndDeoptAndReload , dart::kNumLevels ,
  dart::kNoSafepoint
}
 

Macro Definition Documentation

◆ ASSERT_BOOL_FALSE_FOLLOWS_BOOL_TRUE

#define ASSERT_BOOL_FALSE_FOLLOWS_BOOL_TRUE ( )
Value:
ASSERT((Thread::bool_true_offset() + kWordSize) == \
Thread::bool_false_offset());
#define ASSERT(E)
constexpr intptr_t kWordSize
Definition: globals.h:509

Definition at line 204 of file thread.h.

◆ CACHED_ADDRESSES_LIST

#define CACHED_ADDRESSES_LIST (   V)
Value:
V(uword, bootstrap_native_wrapper_entry_point_, \
NativeEntry::BootstrapNativeCallWrapperEntry(), 0) \
V(uword, no_scope_native_wrapper_entry_point_, \
NativeEntry::NoScopeNativeCallWrapperEntry(), 0) \
V(uword, auto_scope_native_wrapper_entry_point_, \
NativeEntry::AutoScopeNativeCallWrapperEntry(), 0) \
V(StringPtr*, predefined_symbols_address_, Symbols::PredefinedAddress(), \
nullptr) \
V(uword, double_nan_address_, reinterpret_cast<uword>(&double_nan_constant), \
0) \
V(uword, double_negate_address_, \
reinterpret_cast<uword>(&double_negate_constant), 0) \
V(uword, double_abs_address_, reinterpret_cast<uword>(&double_abs_constant), \
0) \
V(uword, float_not_address_, reinterpret_cast<uword>(&float_not_constant), \
0) \
V(uword, float_negate_address_, \
reinterpret_cast<uword>(&float_negate_constant), 0) \
V(uword, float_absolute_address_, \
reinterpret_cast<uword>(&float_absolute_constant), 0) \
V(uword, float_zerow_address_, \
reinterpret_cast<uword>(&float_zerow_constant), 0)
T __attribute__((ext_vector_type(N))) V
static const struct dart::ALIGN16 float_negate_constant
static const struct dart::ALIGN16 float_not_constant
static const struct dart::ALIGN16 float_absolute_constant
static const struct dart::ALIGN16 double_negate_constant
static const struct dart::ALIGN16 float_zerow_constant
uintptr_t uword
Definition: globals.h:501
static const double double_nan_constant
Definition: thread.cc:143
static const struct dart::ALIGN16 double_abs_constant
#define CACHED_VM_STUBS_ADDRESSES_LIST(V)
Definition: thread.h:208

Definition at line 242 of file thread.h.

◆ CACHED_CONSTANTS_LIST

#define CACHED_CONSTANTS_LIST (   V)
Value:
CACHED_ADDRESSES_LIST(V)
#define CACHED_VM_OBJECTS_LIST(V)
Definition: thread.h:185

Definition at line 267 of file thread.h.

◆ CACHED_FUNCTION_ENTRY_POINTS_LIST

#define CACHED_FUNCTION_ENTRY_POINTS_LIST (   V)
Value:
V(suspend_state_init_async) \
V(suspend_state_await) \
V(suspend_state_await_with_type_check) \
V(suspend_state_return_async) \
V(suspend_state_return_async_not_future) \
V(suspend_state_init_async_star) \
V(suspend_state_yield_async_star) \
V(suspend_state_return_async_star) \
V(suspend_state_init_sync_star) \
V(suspend_state_suspend_sync_star_at_start) \
V(suspend_state_handle_exception)
#define V(name)
Definition: raw_object.h:125

Definition at line 189 of file thread.h.

◆ CACHED_NON_VM_STUB_LIST

#define CACHED_NON_VM_STUB_LIST (   V)
Value:
V(ObjectPtr, object_null_, Object::null(), nullptr) \
V(BoolPtr, bool_true_, Object::bool_true().ptr(), nullptr) \
V(BoolPtr, bool_false_, Object::bool_false().ptr(), nullptr) \
V(ArrayPtr, empty_array_, Object::empty_array().ptr(), nullptr) \
V(TypeArgumentsPtr, empty_type_arguments_, \
Object::empty_type_arguments().ptr(), nullptr) \
V(TypePtr, dynamic_type_, Type::dynamic_type().ptr(), nullptr)

Definition at line 174 of file thread.h.

◆ CACHED_VM_OBJECTS_LIST

#define CACHED_VM_OBJECTS_LIST (   V)
Value:
CACHED_VM_STUBS_LIST(V)
#define CACHED_NON_VM_STUB_LIST(V)
Definition: thread.h:174

Definition at line 185 of file thread.h.

◆ CACHED_VM_STUBS_ADDRESSES_LIST

#define CACHED_VM_STUBS_ADDRESSES_LIST (   V)

Definition at line 208 of file thread.h.

◆ CACHED_VM_STUBS_LIST

#define CACHED_VM_STUBS_LIST (   V)

Definition at line 100 of file thread.h.

◆ DECLARE_MEMBERS [1/4]

#define DECLARE_MEMBERS (   name)    uword name##_entry_point_;

Definition at line 1212 of file thread.h.

◆ DECLARE_MEMBERS [2/4]

#define DECLARE_MEMBERS (   name)    uword name##_entry_point_ = 0;

Definition at line 1212 of file thread.h.

◆ DECLARE_MEMBERS [3/4]

#define DECLARE_MEMBERS (   returntype,
  name,
  ... 
)    uword name##_entry_point_;

Definition at line 1212 of file thread.h.

◆ DECLARE_MEMBERS [4/4]

#define DECLARE_MEMBERS (   type_name,
  member_name,
  expr,
  default_init_value 
)     type_name member_name;

Definition at line 1212 of file thread.h.

◆ DEFINE_OFFSET_METHOD [1/4]

#define DEFINE_OFFSET_METHOD (   name)
Value:
static intptr_t name##_entry_point_offset() { \
return OFFSET_OF(Thread, name##_entry_point_); \
}
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32
#define OFFSET_OF(type, field)
Definition: globals.h:138

Definition at line 807 of file thread.h.

◆ DEFINE_OFFSET_METHOD [2/4]

#define DEFINE_OFFSET_METHOD (   name)
Value:
static intptr_t name##_entry_point_offset() { \
return OFFSET_OF(Thread, name##_entry_point_); \
}

Definition at line 807 of file thread.h.

◆ DEFINE_OFFSET_METHOD [3/4]

#define DEFINE_OFFSET_METHOD (   returntype,
  name,
  ... 
)
Value:
static intptr_t name##_entry_point_offset() { \
return OFFSET_OF(Thread, name##_entry_point_); \
}

Definition at line 807 of file thread.h.

◆ DEFINE_OFFSET_METHOD [4/4]

#define DEFINE_OFFSET_METHOD (   type_name,
  member_name,
  expr,
  default_init_value 
)
Value:
static intptr_t member_name##offset() { \
return OFFSET_OF(Thread, member_name); \
}
SeparatedVector2 offset

Definition at line 807 of file thread.h.

◆ REUSABLE_FRIEND_DECLARATION

#define REUSABLE_FRIEND_DECLARATION (   name)     friend class Reusable##name##HandleScope;

Definition at line 1468 of file thread.h.

◆ REUSABLE_HANDLE

#define REUSABLE_HANDLE (   object)     object& object##Handle() const { return *object##_handle_; }

Definition at line 906 of file thread.h.

◆ REUSABLE_HANDLE_FIELDS

#define REUSABLE_HANDLE_FIELDS (   object)    object* object##_handle_;

Definition at line 1339 of file thread.h.

◆ REUSABLE_HANDLE_LIST

#define REUSABLE_HANDLE_LIST (   V)
Value:
V(AbstractType) \
V(Array) \
V(Class) \
V(Code) \
V(Error) \
V(ExceptionHandlers) \
V(Field) \
V(Function) \
V(GrowableObjectArray) \
V(Instance) \
V(Library) \
V(LoadingUnit) \
V(Object) \
V(PcDescriptors) \
V(Smi) \
V(String) \
V(TypeParameters) \
V(TypeArguments) \
V(TypeParameter) \
V(WeakArray)

Definition at line 78 of file thread.h.