Flutter Engine
The Flutter Engine
Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
dart::Smi Class Reference

#include <object.h>

Inheritance diagram for dart::Smi:
dart::Integer dart::Number dart::Instance dart::Object

Public Member Functions

intptr_t Value () const
 
virtual bool Equals (const Instance &other) const
 
virtual bool IsZero () const
 
virtual bool IsNegative () const
 
virtual double AsDoubleValue () const
 
virtual int64_t AsInt64Value () const
 
virtual uint32_t AsTruncatedUint32Value () const
 
virtual bool FitsIntoSmi () const
 
virtual int CompareWith (const Integer &other) const
 
void operator= (SmiPtr value)
 
void operator^= (ObjectPtr value)
 
- Public Member Functions inherited from dart::Integer
virtual bool OperatorEquals (const Instance &other) const
 
virtual bool CanonicalizeEquals (const Instance &other) const
 
virtual uint32_t CanonicalizeHash () const
 
virtual bool Equals (const Instance &other) const
 
virtual ObjectPtr HashCode () const
 
virtual bool IsZero () const
 
virtual bool IsNegative () const
 
virtual double AsDoubleValue () const
 
virtual int64_t AsInt64Value () const
 
virtual int64_t AsTruncatedInt64Value () const
 
virtual uint32_t AsTruncatedUint32Value () const
 
virtual bool FitsIntoSmi () const
 
virtual int CompareWith (const Integer &other) const
 
const char * ToHexCString (Zone *zone) const
 
IntegerPtr AsValidInteger () const
 
IntegerPtr ArithmeticOp (Token::Kind operation, const Integer &other, Heap::Space space=Heap::kNew) const
 
IntegerPtr BitOp (Token::Kind operation, const Integer &other, Heap::Space space=Heap::kNew) const
 
IntegerPtr ShiftOp (Token::Kind operation, const Integer &other, Heap::Space space=Heap::kNew) const
 
- Public Member Functions inherited from dart::Number
StringPtr ToString (Heap::Space space) 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 InstanceSize ()
 
static SmiPtr New (intptr_t value)
 
static ClassPtr Class ()
 
static intptr_t Value (const SmiPtr raw_smi)
 
static intptr_t RawValue (intptr_t value)
 
static bool IsValid (int64_t value)
 
- Static Public Member Functions inherited from dart::Integer
static IntegerPtr New (const String &str, Heap::Space space=Heap::kNew)
 
static IntegerPtr NewFromUint64 (uint64_t value, Heap::Space space=Heap::kNew)
 
static IntegerPtr NewCanonical (const String &str)
 
static IntegerPtr NewCanonical (int64_t value)
 
static IntegerPtr New (int64_t value, Heap::Space space=Heap::kNew)
 
static bool IsValueInRange (uint64_t value)
 
static int64_t GetInt64Value (const IntegerPtr obj)
 
- 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 kBits = kSmiBits
 
static constexpr intptr_t kMaxValue = kSmiMax
 
static constexpr intptr_t kMinValue = kSmiMin
 
- Static Public Attributes inherited from dart::Object
static constexpr intptr_t kHashBits = 30
 
static const ClassId kClassId = kObjectCid
 

Friends

class Api
 
class Class
 
class Object
 
class ReusableSmiHandleScope
 
class Thread
 

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 9984 of file object.h.

Member Function Documentation

◆ AsDoubleValue()

double dart::Smi::AsDoubleValue ( ) const
virtual

Reimplemented from dart::Integer.

Definition at line 23258 of file object.cc.

23258 {
23259 return static_cast<double>(this->Value());
23260}
intptr_t Value() const
Definition: object.h:9990

◆ AsInt64Value()

int64_t dart::Smi::AsInt64Value ( ) const
virtual

Reimplemented from dart::Integer.

Definition at line 23262 of file object.cc.

23262 {
23263 return this->Value();
23264}

◆ AsTruncatedUint32Value()

uint32_t dart::Smi::AsTruncatedUint32Value ( ) const
virtual

Reimplemented from dart::Integer.

Definition at line 23266 of file object.cc.

23266 {
23267 return this->Value() & 0xFFFFFFFF;
23268}

◆ Class()

static ClassPtr dart::Smi::Class ( )
static

◆ CompareWith()

int dart::Smi::CompareWith ( const Integer other) const
virtual

Reimplemented from dart::Integer.

Definition at line 23270 of file object.cc.

23270 {
23271 if (other.IsSmi()) {
23272 const Smi& other_smi = Smi::Cast(other);
23273 if (this->Value() < other_smi.Value()) {
23274 return -1;
23275 } else if (this->Value() > other_smi.Value()) {
23276 return 1;
23277 } else {
23278 return 0;
23279 }
23280 }
23281 ASSERT(!other.FitsIntoSmi());
23282 if (other.IsMint()) {
23283 if (this->IsNegative() == other.IsNegative()) {
23284 return this->IsNegative() ? 1 : -1;
23285 }
23286 return this->IsNegative() ? -1 : 1;
23287 }
23288 UNREACHABLE();
23289 return 0;
23290}
#define UNREACHABLE()
Definition: assert.h:248
virtual bool IsNegative() const
Definition: object.h:9994
#define ASSERT(E)

◆ Equals()

bool dart::Smi::Equals ( const Instance other) const
virtual

Reimplemented from dart::Integer.

Definition at line 23251 of file object.cc.

23251 {
23252 if (other.IsNull() || !other.IsSmi()) {
23253 return false;
23254 }
23255 return (this->Value() == Smi::Cast(other).Value());
23256}

◆ FitsIntoSmi()

virtual bool dart::Smi::FitsIntoSmi ( ) const
inlinevirtual

Reimplemented from dart::Integer.

Definition at line 10000 of file object.h.

10000{ return true; }

◆ InstanceSize()

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

Definition at line 10004 of file object.h.

10004{ return 0; }

◆ IsNegative()

virtual bool dart::Smi::IsNegative ( ) const
inlinevirtual

Reimplemented from dart::Integer.

Definition at line 9994 of file object.h.

9994{ return Value() < 0; }

◆ IsValid()

static bool dart::Smi::IsValid ( int64_t  value)
inlinestatic

Definition at line 10026 of file object.h.

10026{ return compiler::target::IsSmi(value); }
uint8_t value
bool IsSmi(int64_t v)
Definition: runtime_api.cc:31

◆ IsZero()

virtual bool dart::Smi::IsZero ( ) const
inlinevirtual

Reimplemented from dart::Integer.

Definition at line 9993 of file object.h.

9993{ return Value() == 0; }

◆ New()

static SmiPtr dart::Smi::New ( intptr_t  value)
inlinestatic

Definition at line 10006 of file object.h.

10006 {
10007 SmiPtr raw_smi = static_cast<SmiPtr>(
10008 (static_cast<uintptr_t>(value) << kSmiTagShift) | kSmiTag);
10009 ASSERT(RawSmiValue(raw_smi) == value);
10010 return raw_smi;
10011 }
intptr_t RawSmiValue(const SmiPtr raw_value)
@ kSmiTagShift

◆ operator=()

void dart::Smi::operator= ( SmiPtr  value)
inline

Definition at line 10028 of file object.h.

10028 {
10029 ptr_ = value;
10030 CHECK_HANDLE();
10031 }
ObjectPtr ptr_
Definition: object.h:870
#define CHECK_HANDLE()
Definition: object.h:84

◆ operator^=()

void dart::Smi::operator^= ( ObjectPtr  value)
inline

Definition at line 10032 of file object.h.

10032 {
10033 ptr_ = value;
10034 CHECK_HANDLE();
10035 }

◆ RawValue()

static intptr_t dart::Smi::RawValue ( intptr_t  value)
inlinestatic

Definition at line 10022 of file object.h.

10022 {
10023 return static_cast<intptr_t>(New(value));
10024 }
static SmiPtr New(intptr_t value)
Definition: object.h:10006

◆ Value() [1/2]

intptr_t dart::Smi::Value ( ) const
inline

Definition at line 9990 of file object.h.

9990{ return RawSmiValue(ptr()); }
ObjectPtr ptr() const
Definition: object.h:332

◆ Value() [2/2]

static intptr_t dart::Smi::Value ( const SmiPtr  raw_smi)
inlinestatic

Definition at line 10015 of file object.h.

10015{ return RawSmiValue(raw_smi); }

Friends And Related Function Documentation

◆ Api

friend class Api
friend

Definition at line 10046 of file object.h.

◆ Class

ClassPtr dart::Smi::Class
friend

Definition at line 10047 of file object.h.

◆ Object

friend class Object
friend

Definition at line 10048 of file object.h.

◆ ReusableSmiHandleScope

friend class ReusableSmiHandleScope
friend

Definition at line 10049 of file object.h.

◆ Thread

friend class Thread
friend

Definition at line 10050 of file object.h.

Member Data Documentation

◆ kBits

constexpr intptr_t dart::Smi::kBits = kSmiBits
staticconstexpr

Definition at line 9986 of file object.h.

◆ kMaxValue

constexpr intptr_t dart::Smi::kMaxValue = kSmiMax
staticconstexpr

Definition at line 9987 of file object.h.

◆ kMinValue

constexpr intptr_t dart::Smi::kMinValue = kSmiMin
staticconstexpr

Definition at line 9988 of file object.h.


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