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

#include <object.h>

Inheritance diagram for dart::SuspendState:
dart::Instance dart::Object

Public Member Functions

uword pc () const
 
intptr_t frame_size () const
 
InstancePtr function_data () const
 
ClosurePtr then_callback () const
 
ClosurePtr error_callback () const
 
CodePtr GetCodeObject () const
 
- Public Member Functions inherited from dart::Instance
virtual bool OperatorEquals (const Instance &other) const
 
bool IsIdenticalTo (const Instance &other) const
 
virtual bool CanonicalizeEquals (const Instance &other) const
 
virtual uint32_t CanonicalizeHash () const
 
intptr_t SizeFromClass () const
 
InstancePtr Canonicalize (Thread *thread) const
 
virtual InstancePtr CanonicalizeLocked (Thread *thread) const
 
virtual void CanonicalizeFieldsLocked (Thread *thread) const
 
InstancePtr CopyShallowToOldSpace (Thread *thread) const
 
ObjectPtr GetField (const Field &field) const
 
void SetField (const Field &field, const Object &value) const
 
AbstractTypePtr GetType (Heap::Space space) const
 
virtual TypeArgumentsPtr GetTypeArguments () const
 
virtual void SetTypeArguments (const TypeArguments &value) const
 
bool IsInstanceOf (const AbstractType &other, const TypeArguments &other_instantiator_type_arguments, const TypeArguments &other_function_type_arguments) const
 
bool IsAssignableTo (const AbstractType &other, const TypeArguments &other_instantiator_type_arguments, const TypeArguments &other_function_type_arguments) const
 
bool IsValidNativeIndex (int index) const
 
intptr_t * NativeFieldsDataAddr () const
 
intptr_t GetNativeField (int index) const
 
void GetNativeFields (uint16_t num_fields, intptr_t *field_values) const
 
void SetNativeFields (uint16_t num_fields, const intptr_t *field_values) const
 
uint16_t NumNativeFields () const
 
void SetNativeField (int index, intptr_t value) const
 
bool IsCallable (Function *function) const
 
ObjectPtr Invoke (const String &selector, const Array &arguments, const Array &argument_names, bool respect_reflectable=true, bool check_is_entrypoint=false) const
 
ObjectPtr InvokeGetter (const String &selector, bool respect_reflectable=true, bool check_is_entrypoint=false) const
 
ObjectPtr InvokeSetter (const String &selector, const Instance &argument, bool respect_reflectable=true, bool check_is_entrypoint=false) const
 
ObjectPtr EvaluateCompiledExpression (const Class &klass, const ExternalTypedData &kernel_buffer, const Array &type_definitions, const Array &arguments, const TypeArguments &type_arguments) const
 
virtual ObjectPtr HashCode () const
 
IntegerPtr IdentityHashCode (Thread *thread) const
 
virtual bool IsPointer () const
 
- Public Member Functions inherited from dart::Object
virtual ~Object ()
 
ObjectPtr ptr () const
 
void operator= (ObjectPtr value)
 
bool IsCanonical () const
 
void SetCanonical () const
 
void ClearCanonical () const
 
bool IsImmutable () const
 
void SetImmutable () const
 
void ClearImmutable () const
 
intptr_t GetClassId () const
 
ClassPtr clazz () const
 
 CLASS_LIST_FOR_HANDLES (DEFINE_CLASS_TESTER)
 
bool IsNull () const
 
virtual const char * ToCString () const
 
void PrintJSON (JSONStream *stream, bool ref=true) const
 
virtual void PrintJSONImpl (JSONStream *stream, bool ref) const
 
void PrintImplementationFields (JSONStream *stream) const
 
virtual void PrintImplementationFieldsImpl (const JSONArray &jsarr_fields) const
 
virtual const char * JSONType () const
 
virtual StringPtr DictionaryName () const
 
bool IsNew () const
 
bool IsOld () const
 
bool InVMIsolateHeap () const
 
void Print () const
 

Static Public Member Functions

static intptr_t HeaderSize ()
 
static intptr_t UnroundedSize (SuspendStatePtr ptr)
 
static intptr_t UnroundedSize (intptr_t frame_capacity)
 
static intptr_t InstanceSize ()
 
static intptr_t InstanceSize (intptr_t frame_capacity)
 
static intptr_t FrameSizeGrowthGap ()
 
static intptr_t frame_capacity_offset ()
 
static intptr_t frame_size_offset ()
 
static intptr_t pc_offset ()
 
static intptr_t function_data_offset ()
 
static intptr_t then_callback_offset ()
 
static intptr_t error_callback_offset ()
 
static intptr_t payload_offset ()
 
static SuspendStatePtr New (intptr_t frame_size, const Instance &function_data, Heap::Space space=Heap::kNew)
 
static SuspendStatePtr Clone (Thread *thread, const SuspendState &src, Heap::Space space=Heap::kNew)
 
- Static Public Member Functions inherited from dart::Instance
static bool NullIsAssignableTo (const AbstractType &other)
 
static bool NullIsAssignableTo (const AbstractType &other, const TypeArguments &other_instantiator_type_arguments, const TypeArguments &other_function_type_arguments)
 
static ObjectPtr EvaluateCompiledExpression (Thread *thread, const Object &receiver, const Library &library, const Class &klass, const ExternalTypedData &kernel_buffer, const Array &type_definitions, const Array &param_values, const TypeArguments &type_param_values)
 
static intptr_t UnroundedSize ()
 
static intptr_t InstanceSize ()
 
static InstancePtr New (const Class &cls, Heap::Space space=Heap::kNew)
 
static InstancePtr NewAlreadyFinalized (const Class &cls, Heap::Space space=Heap::kNew)
 
static intptr_t DataOffsetFor (intptr_t cid)
 
static intptr_t ElementSizeFor (intptr_t cid)
 
static intptr_t NextFieldOffset ()
 
static intptr_t NativeFieldsOffset ()
 
- Static Public Member Functions inherited from dart::Object
static ObjectPtr RawCast (ObjectPtr obj)
 
static constexpr bool ContainsCompressedPointers ()
 
static intptr_t tags_offset ()
 
static ObjectHandle ()
 
static ObjectHandle (Zone *zone)
 
static ObjectHandle (ObjectPtr ptr)
 
static ObjectHandle (Zone *zone, ObjectPtr ptr)
 
static ObjectZoneHandle ()
 
static ObjectZoneHandle (Zone *zone)
 
static ObjectZoneHandle (ObjectPtr ptr)
 
static ObjectZoneHandle (Zone *zone, ObjectPtr ptr)
 
static ObjectReadOnlyHandle ()
 
static ObjectPtr null ()
 
static void set_vm_isolate_snapshot_object_table (const Array &table)
 
static ClassPtr class_class ()
 
static ClassPtr dynamic_class ()
 
static ClassPtr void_class ()
 
static ClassPtr type_parameters_class ()
 
static ClassPtr type_arguments_class ()
 
static ClassPtr patch_class_class ()
 
static ClassPtr function_class ()
 
static ClassPtr closure_data_class ()
 
static ClassPtr ffi_trampoline_data_class ()
 
static ClassPtr field_class ()
 
static ClassPtr script_class ()
 
static ClassPtr library_class ()
 
static ClassPtr namespace_class ()
 
static ClassPtr kernel_program_info_class ()
 
static ClassPtr code_class ()
 
static ClassPtr instructions_class ()
 
static ClassPtr instructions_section_class ()
 
static ClassPtr instructions_table_class ()
 
static ClassPtr object_pool_class ()
 
static ClassPtr pc_descriptors_class ()
 
static ClassPtr code_source_map_class ()
 
static ClassPtr compressed_stackmaps_class ()
 
static ClassPtr var_descriptors_class ()
 
static ClassPtr exception_handlers_class ()
 
static ClassPtr context_class ()
 
static ClassPtr context_scope_class ()
 
static ClassPtr sentinel_class ()
 
static ClassPtr api_error_class ()
 
static ClassPtr language_error_class ()
 
static ClassPtr unhandled_exception_class ()
 
static ClassPtr unwind_error_class ()
 
static ClassPtr singletargetcache_class ()
 
static ClassPtr unlinkedcall_class ()
 
static ClassPtr monomorphicsmiablecall_class ()
 
static ClassPtr icdata_class ()
 
static ClassPtr megamorphic_cache_class ()
 
static ClassPtr subtypetestcache_class ()
 
static ClassPtr loadingunit_class ()
 
static ClassPtr weak_serialization_reference_class ()
 
static ClassPtr weak_array_class ()
 
static void InitNullAndBool (IsolateGroup *isolate_group)
 
static void Init (IsolateGroup *isolate_group)
 
static void InitVtables ()
 
static void FinishInit (IsolateGroup *isolate_group)
 
static void FinalizeVMIsolate (IsolateGroup *isolate_group)
 
static void FinalizeReadOnlyObject (ObjectPtr object)
 
static void Cleanup ()
 
static ErrorPtr Init (IsolateGroup *isolate_group, const uint8_t *kernel_buffer, intptr_t kernel_buffer_size)
 
static void MakeUnusedSpaceTraversable (const Object &obj, intptr_t original_size, intptr_t used_size)
 
static intptr_t InstanceSize ()
 
template<class FakeObject >
static void VerifyBuiltinVtable (intptr_t cid)
 
static void VerifyBuiltinVtables ()
 
static bool ShouldHaveImmutabilityBitSet (classid_t class_id)
 

Static Public Attributes

static constexpr intptr_t kSuspendStateVarIndex = 0
 
- Static Public Attributes inherited from dart::Object
static constexpr intptr_t kHashBits = 30
 
static const ClassId kClassId = kObjectCid
 

Friends

class Class
 

Additional Inherited Members

- Public Types inherited from dart::Object
enum  NameVisibility { kInternalName = 0 , kScrubbedName , kUserVisibleName }
 
enum class  NameDisambiguation { kYes , kNo }
 
using UntaggedObjectType = UntaggedObject
 
using ObjectPtrType = ObjectPtr
 
- Protected Member Functions inherited from dart::Instance
virtual void PrintSharedInstanceJSON (JSONObject *jsobj, bool ref, bool include_id=true) const
 
- Protected Member Functions inherited from dart::Object
 Object ()
 
uword raw_value () const
 
void setPtr (ObjectPtr value, intptr_t default_cid)
 
void CheckHandle () const
 
cpp_vtable vtable () const
 
void set_vtable (cpp_vtable value)
 
bool Contains (uword addr) const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
type LoadPointer (type const *addr) const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
void StorePointer (type const *addr, type value) const
 
template<typename type , typename compressed_type , std::memory_order order = std::memory_order_relaxed>
void StoreCompressedPointer (compressed_type const *addr, type value) const
 
template<typename type >
void StorePointerUnaligned (type const *addr, type value, Thread *thread) const
 
void StoreSmi (SmiPtr const *addr, SmiPtr value) const
 
template<typename FieldType >
void StoreSimd128 (const FieldType *addr, simd128_value_t value) const
 
template<typename FieldType >
FieldType LoadNonPointer (const FieldType *addr) const
 
template<typename FieldType , std::memory_order order>
FieldType LoadNonPointer (const FieldType *addr) const
 
template<typename FieldType , typename ValueType >
void StoreNonPointer (const FieldType *addr, ValueType value) const
 
template<typename FieldType , typename ValueType , std::memory_order order>
void StoreNonPointer (const FieldType *addr, ValueType value) const
 
template<typename FieldType >
FieldType * UnsafeMutableNonPointer (const FieldType *addr) const
 
 CLASS_LIST (STORE_NON_POINTER_ILLEGAL_TYPE)
 
void UnimplementedMethod () const
 
void AddCommonObjectProperties (JSONObject *jsobj, const char *protocol_type, bool ref) const
 
- Static Protected Member Functions inherited from dart::Object
static DART_NOINLINE ObjectHandleImpl (Zone *zone, ObjectPtr ptr, intptr_t default_cid)
 
static DART_NOINLINE ObjectZoneHandleImpl (Zone *zone, ObjectPtr ptr, intptr_t default_cid)
 
static DART_NOINLINE ObjectReadOnlyHandleImpl (intptr_t cid)
 
static ObjectPtr Allocate (intptr_t cls_id, intptr_t size, Heap::Space space, bool compressed, uword ptr_field_start_offset, uword ptr_field_end_offset)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType Allocate (Heap::Space space)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType Allocate (Heap::Space space, intptr_t elements)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType AllocateVariant (intptr_t class_id, Heap::Space space)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType AllocateVariant (intptr_t class_id, Heap::Space space, intptr_t elements)
 
static constexpr intptr_t RoundedAllocationSize (intptr_t size)
 
static ObjectPtr Clone (const Object &orig, Heap::Space space, bool load_with_relaxed_atomics=false)
 
template<typename T >
static DART_FORCE_INLINE uword from_offset ()
 
template<typename T >
static DART_FORCE_INLINE uword to_offset (intptr_t length=0)
 
- Protected Attributes inherited from dart::Object
ObjectPtr ptr_
 

Detailed Description

Definition at line 12588 of file object.h.

Member Function Documentation

◆ Clone()

SuspendStatePtr dart::SuspendState::Clone ( Thread thread,
const SuspendState src,
Heap::Space  space = Heap::kNew 
)
static

Definition at line 26611 of file object.cc.

26613 {
26614 ASSERT(src.pc() != 0);
26615 Zone* zone = thread->zone();
26616 const intptr_t frame_size = src.frame_size();
26617 const SuspendState& dst = SuspendState::Handle(
26618 zone,
26619 SuspendState::New(frame_size, Instance::Handle(zone, src.function_data()),
26620 space));
26621 dst.set_then_callback(Closure::Handle(zone, src.then_callback()));
26622 dst.set_error_callback(Closure::Handle(zone, src.error_callback()));
26623 {
26624 NoSafepointScope no_safepoint;
26625 memmove(dst.payload(), src.payload(), frame_size);
26626 // Update value of :suspend_state variable in the copied frame.
26627 const uword fp = reinterpret_cast<uword>(dst.payload() + frame_size);
26628 *reinterpret_cast<ObjectPtr*>(
26630 kSuspendStateVarIndex))) = dst.ptr();
26631 dst.set_pc(src.pc());
26632 // Trigger write barrier if needed.
26633 if (dst.ptr()->IsOldObject()) {
26634 dst.untag()->EnsureInRememberedSet(thread);
26635 }
26636 if (thread->is_marking()) {
26637 thread->DeferredMarkingStackAddObject(dst.ptr());
26638 }
26639 }
26640 return dst.ptr();
26641}
static Object & Handle()
Definition object.h:407
static constexpr intptr_t kSuspendStateVarIndex
Definition object.h:12591
static SuspendStatePtr New(intptr_t frame_size, const Instance &function_data, Heap::Space space=Heap::kNew)
Definition object.cc:26587
intptr_t frame_size() const
Definition object.h:12649
#define ASSERT(E)
uintptr_t uword
Definition globals.h:501
const uint32_t fp
FrameLayout runtime_frame_layout
static DART_FORCE_INLINE uword LocalVarAddress(uword fp, intptr_t index)
dst
Definition cp.py:12
intptr_t FrameSlotForVariableIndex(intptr_t index) const

◆ error_callback()

ClosurePtr dart::SuspendState::error_callback ( ) const
inline

Definition at line 12655 of file object.h.

12655{ return untag()->error_callback(); }
raw_obj untag() -> num_entries()) VARIABLE_COMPRESSED_VISITOR(Array, Smi::Value(raw_obj->untag() ->length())) VARIABLE_COMPRESSED_VISITOR(TypedData, TypedData::ElementSizeInBytes(raw_obj->GetClassId()) *Smi::Value(raw_obj->untag() ->length())) VARIABLE_COMPRESSED_VISITOR(Record, RecordShape(raw_obj->untag() ->shape()).num_fields()) VARIABLE_NULL_VISITOR(CompressedStackMaps, CompressedStackMaps::PayloadSizeOf(raw_obj)) VARIABLE_NULL_VISITOR(OneByteString, Smi::Value(raw_obj->untag() ->length())) VARIABLE_NULL_VISITOR(TwoByteString, Smi::Value(raw_obj->untag() ->length())) intptr_t UntaggedField::VisitFieldPointers(FieldPtr raw_obj, ObjectPointerVisitor *visitor)

◆ error_callback_offset()

static intptr_t dart::SuspendState::error_callback_offset ( )
inlinestatic

Definition at line 12630 of file object.h.

12630 {
12631 return OFFSET_OF(UntaggedSuspendState, error_callback_);
12632 }
#define OFFSET_OF(type, field)
Definition globals.h:138

◆ frame_capacity_offset()

static intptr_t dart::SuspendState::frame_capacity_offset ( )
inlinestatic

Definition at line 12616 of file object.h.

12616 {
12617 return OFFSET_OF(UntaggedSuspendState, frame_capacity_);
12618 }

◆ frame_size()

intptr_t dart::SuspendState::frame_size ( ) const
inline

Definition at line 12649 of file object.h.

12649{ return untag()->frame_size_; }

◆ frame_size_offset()

static intptr_t dart::SuspendState::frame_size_offset ( )
inlinestatic

Definition at line 12620 of file object.h.

12620 {
12621 return OFFSET_OF(UntaggedSuspendState, frame_size_);
12622 }

◆ FrameSizeGrowthGap()

static intptr_t dart::SuspendState::FrameSizeGrowthGap ( )
inlinestatic

Definition at line 12611 of file object.h.

12611 {
12613 }
#define NOT_IN_PRECOMPILED(code)
Definition globals.h:100
#define ONLY_IN_PRECOMPILED(code)
Definition globals.h:101

◆ function_data()

InstancePtr dart::SuspendState::function_data ( ) const
inline

Definition at line 12651 of file object.h.

12651{ return untag()->function_data(); }

◆ function_data_offset()

static intptr_t dart::SuspendState::function_data_offset ( )
inlinestatic

Definition at line 12624 of file object.h.

12624 {
12625 return OFFSET_OF(UntaggedSuspendState, function_data_);
12626 }

◆ GetCodeObject()

CodePtr dart::SuspendState::GetCodeObject ( ) const

Definition at line 26675 of file object.cc.

26675 {
26676 ASSERT(pc() != 0);
26677#if defined(DART_PRECOMPILED_RUNTIME)
26678 NoSafepointScope no_safepoint;
26680 /*is_return_address=*/true);
26681 ASSERT(code != Code::null());
26682 return code;
26683#else
26684 ObjectPtr code = *(reinterpret_cast<ObjectPtr*>(
26685 untag()->payload() + untag()->frame_size_ +
26687 return Code::RawCast(code);
26688#endif // defined(DART_PRECOMPILED_RUNTIME)
26689}
static IsolateGroup * Current()
Definition isolate.h:534
static ObjectPtr null()
Definition object.h:433
static ObjectPtr RawCast(ObjectPtr obj)
Definition object.h:325
static CodePtr Lookup(IsolateGroup *group, uword pc, bool is_return_address)
uword pc() const
Definition object.h:12647
constexpr intptr_t kWordSize
Definition globals.h:509
intptr_t code_from_fp

◆ HeaderSize()

static intptr_t dart::SuspendState::HeaderSize ( )
inlinestatic

Definition at line 12593 of file object.h.

12593{ return sizeof(UntaggedSuspendState); }

◆ InstanceSize() [1/2]

static intptr_t dart::SuspendState::InstanceSize ( )
inlinestatic

Definition at line 12600 of file object.h.

12600 {
12601 ASSERT_EQUAL(sizeof(UntaggedSuspendState),
12602 OFFSET_OF_RETURNED_VALUE(UntaggedSuspendState, payload));
12603 return 0;
12604 }
#define ASSERT_EQUAL(expected, actual)
Definition assert.h:309
#define OFFSET_OF_RETURNED_VALUE(type, accessor)
Definition globals.h:143

◆ InstanceSize() [2/2]

static intptr_t dart::SuspendState::InstanceSize ( intptr_t  frame_capacity)
inlinestatic

Definition at line 12605 of file object.h.

12605 {
12606 return RoundedAllocationSize(UnroundedSize(frame_capacity));
12607 }
static intptr_t UnroundedSize()
Definition object.h:8307
static constexpr intptr_t RoundedAllocationSize(intptr_t size)
Definition object.h:758

◆ New()

SuspendStatePtr dart::SuspendState::New ( intptr_t  frame_size,
const Instance function_data,
Heap::Space  space = Heap::kNew 
)
static

Definition at line 26587 of file object.cc.

26589 {
26590 ASSERT(frame_size >= 0);
26591 const intptr_t num_elements = frame_size + SuspendState::FrameSizeGrowthGap();
26592#if !defined(DART_PRECOMPILED_RUNTIME)
26593 // Include heap object alignment overhead into the frame capacity.
26594 const intptr_t instance_size = SuspendState::InstanceSize(num_elements);
26595 const intptr_t frame_capacity =
26596 instance_size - SuspendState::payload_offset();
26597 ASSERT(SuspendState::InstanceSize(frame_capacity) == instance_size);
26598 ASSERT(frame_size <= frame_capacity);
26599#endif
26600 auto raw = Object::Allocate<SuspendState>(space, num_elements);
26601 NoSafepointScope no_safepoint;
26602 ASSERT_EQUAL(raw->untag()->pc_, 0);
26603#if !defined(DART_PRECOMPILED_RUNTIME)
26604 raw->untag()->frame_capacity_ = frame_capacity;
26605#endif
26606 raw->untag()->frame_size_ = frame_size;
26607 raw->untag()->set_function_data(function_data.ptr());
26608 return raw;
26609}
static intptr_t FrameSizeGrowthGap()
Definition object.h:12611
static intptr_t payload_offset()
Definition object.h:12633
static intptr_t InstanceSize()
Definition object.h:12600
InstancePtr function_data() const
Definition object.h:12651

◆ payload_offset()

static intptr_t dart::SuspendState::payload_offset ( )
inlinestatic

Definition at line 12633 of file object.h.

12633 {
12635 }
static intptr_t payload_offset()

◆ pc()

uword dart::SuspendState::pc ( ) const
inline

Definition at line 12647 of file object.h.

12647{ return untag()->pc_; }

◆ pc_offset()

static intptr_t dart::SuspendState::pc_offset ( )
inlinestatic

Definition at line 12623 of file object.h.

12623{ return OFFSET_OF(UntaggedSuspendState, pc_); }

◆ then_callback()

ClosurePtr dart::SuspendState::then_callback ( ) const
inline

Definition at line 12653 of file object.h.

12653{ return untag()->then_callback(); }

◆ then_callback_offset()

static intptr_t dart::SuspendState::then_callback_offset ( )
inlinestatic

Definition at line 12627 of file object.h.

12627 {
12628 return OFFSET_OF(UntaggedSuspendState, then_callback_);
12629 }

◆ UnroundedSize() [1/2]

static intptr_t dart::SuspendState::UnroundedSize ( intptr_t  frame_capacity)
inlinestatic

Definition at line 12597 of file object.h.

12597 {
12598 return HeaderSize() + frame_capacity;
12599 }
static intptr_t HeaderSize()
Definition object.h:12593

◆ UnroundedSize() [2/2]

static intptr_t dart::SuspendState::UnroundedSize ( SuspendStatePtr  ptr)
inlinestatic

Definition at line 12594 of file object.h.

12594 {
12595 return UnroundedSize(ptr->untag()->frame_capacity());
12596 }
UntaggedObject * untag() const
ObjectPtr ptr() const
Definition object.h:332

Friends And Related Symbol Documentation

◆ Class

friend class Class
friend

Definition at line 12673 of file object.h.

Member Data Documentation

◆ kSuspendStateVarIndex

constexpr intptr_t dart::SuspendState::kSuspendStateVarIndex = 0
staticconstexpr

Definition at line 12591 of file object.h.


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