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

#include <object_pool_builder.h>

Public Types

typedef ObjectPoolBuilderEntry Key
 
typedef intptr_t Value
 
typedef ObjIndexPair Pair
 

Public Member Functions

 ObjIndexPair ()
 
 ObjIndexPair (Key key, Value value)
 

Static Public Member Functions

static Key KeyOf (Pair kv)
 
static Value ValueOf (Pair kv)
 
static uword Hash (Key key)
 
static bool IsKeyEqual (Pair kv, Key key)
 

Static Public Attributes

static constexpr intptr_t kNoIndex = -1
 

Detailed Description

Definition at line 131 of file object_pool_builder.h.

Member Typedef Documentation

◆ Key

Definition at line 134 of file object_pool_builder.h.

◆ Pair

Definition at line 136 of file object_pool_builder.h.

◆ Value

Definition at line 135 of file object_pool_builder.h.

Constructor & Destructor Documentation

◆ ObjIndexPair() [1/2]

dart::compiler::ObjIndexPair::ObjIndexPair ( )
inline

◆ ObjIndexPair() [2/2]

dart::compiler::ObjIndexPair::ObjIndexPair ( Key  key,
Value  value 
)
inline

Definition at line 146 of file object_pool_builder.h.

146 : value_(value) {
147 key_.entry_bits_ = key.entry_bits_;
149 key_.obj_ = key.obj_;
150 key_.equivalence_ = key.equivalence_;
151 } else if (key.type() == ObjectPoolBuilderEntry::kImmediate128) {
152 key_.imm128_ = key.imm128_;
153#if defined(TARGET_ARCH_IS_32_BIT)
154 } else if (key.type() == ObjectPoolBuilderEntry::kImmediate64) {
155 key_.imm64_ = key.imm64_;
156#endif
157 } else {
158 key_.imm_ = key.imm_;
159 }
160 }

Member Function Documentation

◆ Hash()

uword dart::compiler::ObjIndexPair::Hash ( Key  key)
static

Definition at line 625 of file assembler_base.cc.

625 {
626 switch (key.type()) {
628 return key.imm128_.int_storage[0] ^ key.imm128_.int_storage[1] ^
629 key.imm128_.int_storage[2] ^ key.imm128_.int_storage[3];
630
631#if defined(TARGET_ARCH_IS_32_BIT)
632 case ObjectPoolBuilderEntry::kImmediate64:
633 return key.imm64_;
634#endif
637 return key.imm_;
639 return ObjectHash(*key.obj_);
640 }
641
642 UNREACHABLE();
643}
#define UNREACHABLE()
Definition assert.h:248
intptr_t ObjectHash(const Object &obj)

◆ IsKeyEqual()

static bool dart::compiler::ObjIndexPair::IsKeyEqual ( Pair  kv,
Key  key 
)
inlinestatic

Definition at line 168 of file object_pool_builder.h.

168 {
169 if (kv.key_.entry_bits_ != key.entry_bits_) return false;
170 if (kv.key_.type() == ObjectPoolBuilderEntry::kTaggedObject) {
171 return IsSameObject(*kv.key_.obj_, *key.obj_) &&
172 IsSameObject(*kv.key_.equivalence_, *key.equivalence_);
173 }
174 if (kv.key_.type() == ObjectPoolBuilderEntry::kImmediate128) {
175 return (kv.key_.imm128_.int_storage[0] == key.imm128_.int_storage[0]) &&
176 (kv.key_.imm128_.int_storage[1] == key.imm128_.int_storage[1]) &&
177 (kv.key_.imm128_.int_storage[2] == key.imm128_.int_storage[2]) &&
178 (kv.key_.imm128_.int_storage[3] == key.imm128_.int_storage[3]);
179 }
180#if defined(TARGET_ARCH_IS_32_BIT)
181 if (kv.key_.type() == ObjectPoolBuilderEntry::kImmediate64) {
182 return kv.key_.imm64_ == key.imm64_;
183 }
184#endif
185 return kv.key_.imm_ == key.imm_;
186 }
bool IsSameObject(const Object &a, const Object &b)

◆ KeyOf()

static Key dart::compiler::ObjIndexPair::KeyOf ( Pair  kv)
inlinestatic

Definition at line 162 of file object_pool_builder.h.

162{ return kv.key_; }

◆ ValueOf()

static Value dart::compiler::ObjIndexPair::ValueOf ( Pair  kv)
inlinestatic

Definition at line 164 of file object_pool_builder.h.

164{ return kv.value_; }

Member Data Documentation

◆ kNoIndex

constexpr intptr_t dart::compiler::ObjIndexPair::kNoIndex = -1
staticconstexpr

Definition at line 138 of file object_pool_builder.h.


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