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

#include <il.h>

Inheritance diagram for dart::MoveArgumentInstr:
dart::TemplateDefinition< 1, NoThrow >

Public Member Functions

 MoveArgumentInstr (Value *value, Representation representation, Location location)
 
bool is_register_move () const
 
intptr_t sp_relative_index () const
 
Location location () const
 
Locationlocation_slot ()
 
Valuevalue () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool HasUnknownSideEffects () const
 
virtual TokenPosition token_pos () const
 
virtual Representation representation () const
 
virtual Representation RequiredInputRepresentation (intptr_t index) const
 
 DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS (MoveArgumentInstr, TemplateDefinition, FIELD_LIST) DECLARE_EXTRA_SERIALIZATION private
 
 DISALLOW_COPY_AND_ASSIGN (MoveArgumentInstr)
 
- Public Member Functions inherited from dart::TemplateDefinition< 1, NoThrow >
 TemplateDefinition (intptr_t deopt_id=DeoptId::kNone)
 
 TemplateDefinition (const InstructionSource &source, intptr_t deopt_id=DeoptId::kNone)
 
virtual intptr_t InputCount () const
 
virtual ValueInputAt (intptr_t i) const
 
virtual bool MayThrow () const
 

Static Public Member Functions

static bool IsRegisterMove (Location loc)
 

Public Attributes

Location location_
 

Additional Inherited Members

- Public Types inherited from dart::TemplateDefinition< 1, NoThrow >
using BaseClass = typename NoCSE< Definition, PureDefinition >::Base
 
- Protected Attributes inherited from dart::TemplateDefinition< 1, NoThrow >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 3329 of file il.h.

Constructor & Destructor Documentation

◆ MoveArgumentInstr()

dart::MoveArgumentInstr::MoveArgumentInstr ( Value value,
Representation  representation,
Location  location 
)
inlineexplicit

Definition at line 3331 of file il.h.

3334 : representation_(representation),
3335 is_register_move_(IsRegisterMove(location)),
3337 ASSERT(IsSupportedLocation(location));
3338 SetInputAt(0, value);
3339 }
static bool IsRegisterMove(Location loc)
Definition il.h:3406
virtual Representation representation() const
Definition il.h:3369
Value * value() const
Definition il.h:3359
Location location() const
Definition il.h:3356
Location location_
Definition il.h:3412
#define ASSERT(E)

Member Function Documentation

◆ ComputeCanDeoptimize()

virtual bool dart::MoveArgumentInstr::ComputeCanDeoptimize ( ) const
inlinevirtual

Definition at line 3361 of file il.h.

3361{ return false; }

◆ DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS()

dart::MoveArgumentInstr::DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS ( MoveArgumentInstr  ,
TemplateDefinition  ,
FIELD_LIST   
)
inline

Definition at line 3382 of file il.h.

3389 :
3390 static bool IsSupportedLocation(Location loc, bool can_be_fpu_value = true) {
3391#if defined(TARGET_ARCH_IS_32_BIT)
3392 if (loc.IsPairLocation()) {
3393 auto pair_loc = loc.AsPairLocation();
3394 return IsSupportedLocation(pair_loc->At(0), /*can_be_fpu_value=*/false) &&
3395 IsSupportedLocation(pair_loc->At(1), /*can_be_fpu_value=*/false);
3396 }
3397#endif
3398 if (loc.IsStackSlot() || (can_be_fpu_value && loc.IsDoubleStackSlot())) {
3399 return loc.base_reg() == SPREG;
3400 } else if (loc.IsRegister() || (can_be_fpu_value && loc.IsFpuRegister())) {
3401 return true;
3402 }
3403 return false;
3404 }
const Register SPREG

◆ DISALLOW_COPY_AND_ASSIGN()

dart::MoveArgumentInstr::DISALLOW_COPY_AND_ASSIGN ( MoveArgumentInstr  )

◆ HasUnknownSideEffects()

virtual bool dart::MoveArgumentInstr::HasUnknownSideEffects ( ) const
inlinevirtual

Definition at line 3363 of file il.h.

3363{ return false; }

◆ is_register_move()

bool dart::MoveArgumentInstr::is_register_move ( ) const
inline

Definition at line 3343 of file il.h.

3343{ return is_register_move_; }

◆ IsRegisterMove()

static bool dart::MoveArgumentInstr::IsRegisterMove ( Location  loc)
inlinestatic

Definition at line 3406 of file il.h.

3406 {
3407 return loc.IsMachineRegister() ||
3408 (loc.IsPairLocation() &&
3409 loc.AsPairLocation()->At(0).IsMachineRegister());
3410 }

◆ location()

Location dart::MoveArgumentInstr::location ( ) const
inline

Definition at line 3356 of file il.h.

3356{ return location_; }

◆ location_slot()

Location * dart::MoveArgumentInstr::location_slot ( )
inline

Definition at line 3357 of file il.h.

3357{ return &location_; }

◆ representation()

virtual Representation dart::MoveArgumentInstr::representation ( ) const
inlinevirtual

Definition at line 3369 of file il.h.

3369{ return representation_; }

◆ RequiredInputRepresentation()

virtual Representation dart::MoveArgumentInstr::RequiredInputRepresentation ( intptr_t  index) const
inlinevirtual

Definition at line 3371 of file il.h.

3371 {
3372 ASSERT(index == 0);
3373 return representation();
3374 }

◆ sp_relative_index()

intptr_t dart::MoveArgumentInstr::sp_relative_index ( ) const
inline

Definition at line 3347 of file il.h.

3347 {
3349 Location loc = location();
3350 if (loc.IsPairLocation()) {
3351 loc = loc.AsPairLocation()->At(0);
3352 }
3353 return loc.stack_index();
3354 }
bool is_register_move() const
Definition il.h:3343

◆ token_pos()

virtual TokenPosition dart::MoveArgumentInstr::token_pos ( ) const
inlinevirtual

Definition at line 3365 of file il.h.

3365 {
3366 return TokenPosition::kMoveArgument;
3367 }

◆ value()

Value * dart::MoveArgumentInstr::value ( ) const
inline

Definition at line 3359 of file il.h.

3359{ return InputAt(0); }
virtual Value * InputAt(intptr_t i) const
Definition il.h:2738

Member Data Documentation

◆ location_

Location dart::MoveArgumentInstr::location_

Definition at line 3412 of file il.h.


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