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

#include <il.h>

Inheritance diagram for dart::InstanceCallBaseInstr:
dart::TemplateDartCall< 0 > dart::VariadicDefinition dart::Definition dart::Instruction dart::ZoneAllocated dart::InstanceCallInstr dart::PolymorphicInstanceCallInstr

Public Member Functions

 InstanceCallBaseInstr (const InstructionSource &source, const String &function_name, Token::Kind token_kind, InputsArray &&arguments, intptr_t type_args_len, const Array &argument_names, const ICData *ic_data, intptr_t deopt_id, const Function &interface_target, const Function &tearoff_interface_target)
 
const ICDataic_data () const
 
bool HasICData () const
 
void set_ic_data (const ICData *value)
 
const Stringfunction_name () const
 
Token::Kind token_kind () const
 
const Functioninterface_target () const
 
const Functiontearoff_interface_target () const
 
bool has_unique_selector () const
 
void set_has_unique_selector (bool b)
 
virtual CompileType ComputeType () const
 
virtual bool CanBecomeDeoptimizationTarget () const
 
virtual bool HasUnknownSideEffects () const
 
void SetResultType (Zone *zone, CompileType new_type)
 
CompileTyperesult_type () const
 
intptr_t result_cid () const
 
FunctionPtr ResolveForReceiverClass (const Class &cls, bool allow_add=true)
 
Code::EntryKind entry_kind () const
 
void set_entry_kind (Code::EntryKind value)
 
void mark_as_call_on_this ()
 
bool is_call_on_this () const
 
 DECLARE_ABSTRACT_INSTRUCTION (InstanceCallBase)
 
bool receiver_is_not_smi () const
 
void set_receiver_is_not_smi (bool value)
 
void UpdateReceiverSminess (Zone *zone)
 
bool CanReceiverBeSmiBasedOnInterfaceTarget (Zone *zone) const
 
virtual SpeculativeMode SpeculativeModeOfInput (intptr_t idx) const
 
virtual intptr_t ArgumentsSize () const
 
virtual Representation RequiredInputRepresentation (intptr_t idx) const
 
virtual intptr_t DeoptimizationTarget () const
 
virtual Representation representation () const
 
DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS(InstanceCallBaseInstr, TemplateDartCall, FIELD_LIST) protected void set_ic_data (ICData *value)
 
void set_result_type (CompileType *result_type)
 
- Public Member Functions inherited from dart::TemplateDartCall< 0 >
 TemplateDartCall (intptr_t deopt_id, intptr_t type_args_len, const Array &argument_names, InputsArray &&inputs, const InstructionSource &source)
 
StringPtr Selector ()
 
virtual bool MayThrow () const
 
virtual bool CanCallDart () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool ComputeCanDeoptimizeAfterCall () const
 
virtual intptr_t NumberOfInputsConsumedBeforeCall () const
 
intptr_t FirstArgIndex () const
 
ValueReceiver () const
 
intptr_t ArgumentCountWithoutTypeArgs () const
 
intptr_t ArgumentsSizeWithoutTypeArgs () const
 
intptr_t ArgumentCount () const
 
virtual void SetMoveArguments (MoveArgumentsArray *move_arguments)
 
virtual MoveArgumentsArrayGetMoveArguments () const
 
virtual void ReplaceInputsWithMoveArguments (MoveArgumentsArray *move_arguments)
 
intptr_t type_args_len () const
 
const Arrayargument_names () const
 
virtual TokenPosition token_pos () const
 
ArrayPtr GetArgumentsDescriptor () const
 
- Public Member Functions inherited from dart::VariadicDefinition
 VariadicDefinition (InputsArray &&inputs, intptr_t deopt_id=DeoptId::kNone)
 
 VariadicDefinition (InputsArray &&inputs, const InstructionSource &source, intptr_t deopt_id=DeoptId::kNone)
 
 VariadicDefinition (const intptr_t num_inputs, intptr_t deopt_id=DeoptId::kNone)
 
intptr_t InputCount () const
 
ValueInputAt (intptr_t i) const
 
- Public Member Functions inherited from dart::Definition
 Definition (intptr_t deopt_id=DeoptId::kNone)
 
 Definition (const InstructionSource &source, intptr_t deopt_id=DeoptId::kNone)
 
virtual intptr_t CallCount () const
 
intptr_t temp_index () const
 
void set_temp_index (intptr_t index)
 
void ClearTempIndex ()
 
bool HasTemp () const
 
intptr_t ssa_temp_index () const
 
void set_ssa_temp_index (intptr_t index)
 
bool HasSSATemp () const
 
void ClearSSATempIndex ()
 
intptr_t vreg (intptr_t index) const
 
intptr_t location_count () const
 
bool HasPairRepresentation () const
 
CompileTypeType ()
 
bool HasType () const
 
bool IsInt64Definition ()
 
bool IsInt32Definition ()
 
virtual bool RecomputeType ()
 
PRINT_OPERANDS_TO_SUPPORT PRINT_TO_SUPPORT bool UpdateType (CompileType new_type)
 
bool HasUses () const
 
bool HasOnlyUse (Value *use) const
 
bool HasOnlyInputUse (Value *use) const
 
Valueinput_use_list () const
 
void set_input_use_list (Value *head)
 
Valueenv_use_list () const
 
void set_env_use_list (Value *head)
 
ValueListIterable input_uses () const
 
void AddInputUse (Value *value)
 
void AddEnvUse (Value *value)
 
virtual bool MayCreateUnsafeUntaggedPointer () const
 
virtual bool CanReplaceWithConstant () const
 
virtual bool CanEliminate (const BlockEntryInstr *block) const
 
void ReplaceUsesWith (Definition *other)
 
void ReplaceWithResult (Instruction *replacement, Definition *replacement_for_uses, ForwardInstructionIterator *iterator)
 
void ReplaceWith (Definition *other, ForwardInstructionIterator *iterator)
 
Objectconstant_value ()
 
virtual void InferRange (RangeAnalysis *analysis, Range *range)
 
Rangerange () const
 
void set_range (const Range &)
 
virtual DefinitionCanonicalize (FlowGraph *flow_graph)
 
DefinitionReplacement ()
 
void SetReplacement (Definition *other)
 
virtual AliasIdentity Identity () const
 
virtual void SetIdentity (AliasIdentity identity)
 
DefinitionOriginalDefinition ()
 
virtual ValueRedefinedValue () const
 
DefinitionOriginalDefinitionIgnoreBoxingAndConstraints ()
 
virtual DefinitionAsDefinition ()
 
virtual const DefinitionAsDefinition () const
 
- Public Member Functions inherited from dart::Instruction
 Instruction (const InstructionSource &source, intptr_t deopt_id=DeoptId::kNone)
 
 Instruction (intptr_t deopt_id=DeoptId::kNone)
 
virtual ~Instruction ()
 
virtual Tag tag () const =0
 
virtual intptr_t statistics_tag () const
 
intptr_t deopt_id () const
 
InstructionSource source () const
 
void SetInputAt (intptr_t i, Value *value)
 
InputsIterable inputs ()
 
void UnuseAllInputs ()
 
ValueArgumentValueAt (intptr_t index) const
 
DefinitionArgumentAt (intptr_t index) const
 
bool HasMoveArguments () const
 
void RepairArgumentUsesInEnvironment () const
 
bool CanDeoptimize () const
 
virtual void Accept (InstructionVisitor *visitor)=0
 
Instructionprevious () const
 
void set_previous (Instruction *instr)
 
Instructionnext () const
 
void set_next (Instruction *instr)
 
void LinkTo (Instruction *next)
 
InstructionRemoveFromGraph (bool return_previous=true)
 
virtual intptr_t SuccessorCount () const
 
virtual BlockEntryInstrSuccessorAt (intptr_t index) const
 
SuccessorsIterable successors () const
 
void Goto (JoinEntryInstr *entry)
 
virtual const char * DebugName () const =0
 
void CheckField (const Field &field) const
 
const char * ToCString () const
 
 DECLARE_INSTRUCTION_TYPE_CHECK (BlockEntryWithInitialDefs, BlockEntryWithInitialDefs) template< typename T > T *Cast()
 
template<typename T >
const TCast () const
 
LocationSummarylocs ()
 
bool HasLocs () const
 
virtual LocationSummaryMakeLocationSummary (Zone *zone, bool is_optimizing) const =0
 
void InitializeLocationSummary (Zone *zone, bool optimizing)
 
virtual void EmitNativeCode (FlowGraphCompiler *compiler)
 
Environmentenv () const
 
void SetEnvironment (Environment *deopt_env)
 
void RemoveEnvironment ()
 
void ReplaceInEnvironment (Definition *current, Definition *replacement)
 
intptr_t GetPassSpecificId (CompilerPass::Id pass) const
 
void SetPassSpecificId (CompilerPass::Id pass, intptr_t id)
 
bool HasPassSpecificId (CompilerPass::Id pass) const
 
bool HasUnmatchedInputRepresentations () const
 
SpeculativeMode SpeculativeModeOfInputs () const
 
bool WasEliminated () const
 
void InsertBefore (Instruction *next)
 
void InsertAfter (Instruction *prev)
 
InstructionAppendInstruction (Instruction *tail)
 
virtual bool AllowsCSE () const
 
virtual bool CanTriggerGC () const
 
virtual BlockEntryInstrGetBlock ()
 
virtual intptr_t inlining_id () const
 
virtual void set_inlining_id (intptr_t value)
 
virtual bool has_inlining_id () const
 
virtual uword Hash () const
 
bool Equals (const Instruction &other) const
 
virtual bool AttributesEqual (const Instruction &other) const
 
void InheritDeoptTarget (Zone *zone, Instruction *other)
 
bool NeedsEnvironment () const
 
void InheritDeoptTargetAfter (FlowGraph *flow_graph, Definition *call, Definition *result)
 
virtual bool MayHaveVisibleEffect () const
 
bool CanEliminate ()
 
bool IsDominatedBy (Instruction *dom)
 
void ClearEnv ()
 
void Unsupported (FlowGraphCompiler *compiler)
 
virtual bool UseSharedSlowPathStub (bool is_optimizing) const
 
Location::Kind RegisterKindForResult () const
 
- Public Member Functions inherited from dart::ZoneAllocated
 ZoneAllocated ()
 
void * operator new (size_t size)
 
void * operator new (size_t size, Zone *zone)
 
void operator delete (void *pointer)
 

Additional Inherited Members

- Public Types inherited from dart::Instruction
enum  Tag { FOR_EACH_INSTRUCTION =(DECLARE_TAG) kNumInstructions }
 
enum  SpeculativeMode { kGuardInputs , kNotSpeculative }
 
using InputsIterable = InstructionIndexedPropertyIterable< InputsTrait >
 
using SuccessorsIterable = InstructionIndexedPropertyIterable< SuccessorsTrait >
 
- Static Public Member Functions inherited from dart::Definition
static bool IsArrayLength (Definition *def)
 
- Static Public Member Functions inherited from dart::Instruction
static const ICDataGetICData (const ZoneGrowableArray< const ICData * > &ic_data_array, intptr_t deopt_id, bool is_static_call)
 
static LocationSummaryMakeCallSummary (Zone *zone, const Instruction *instr, LocationSummary *locs=nullptr)
 
static bool SlowPathSharingSupported (bool is_optimizing)
 
- Static Public Attributes inherited from dart::Definition
static constexpr intptr_t kReplacementMarker = -2
 
- Static Public Attributes inherited from dart::Instruction
static const intptr_t kInstructionAttrs [kNumInstructions]
 
- Protected Member Functions inherited from dart::Definition
void set_type (CompileType *type)
 
- Protected Member Functions inherited from dart::Instruction
intptr_t GetDeoptId () const
 
virtual void CopyDeoptIdFrom (const Instruction &instr)
 
void WriteExtraWithoutInputs (FlowGraphSerializer *s)
 
void ReadExtraWithoutInputs (FlowGraphDeserializer *d)
 
- Protected Attributes inherited from dart::VariadicDefinition
InputsArray inputs_
 
- Protected Attributes inherited from dart::Definition
Rangerange_ = nullptr
 

Detailed Description

Definition at line 4657 of file il.h.

Constructor & Destructor Documentation

◆ InstanceCallBaseInstr()

dart::InstanceCallBaseInstr::InstanceCallBaseInstr ( const InstructionSource source,
const String function_name,
Token::Kind  token_kind,
InputsArray &&  arguments,
intptr_t  type_args_len,
const Array argument_names,
const ICData ic_data,
intptr_t  deopt_id,
const Function interface_target,
const Function tearoff_interface_target 
)
inline

Definition at line 4659 of file il.h.

4672 std::move(arguments),
4673 source),
4674 ic_data_(ic_data),
4675 function_name_(function_name),
4676 token_kind_(token_kind),
4677 interface_target_(interface_target),
4678 tearoff_interface_target_(tearoff_interface_target),
4679 result_type_(nullptr),
4680 has_unique_selector_(false),
4681 entry_kind_(Code::EntryKind::kNormal),
4682 receiver_is_not_smi_(false),
4683 is_call_on_this_(false) {
4684 DEBUG_ASSERT(function_name.IsNotTemporaryScopedHandle());
4685 DEBUG_ASSERT(interface_target.IsNotTemporaryScopedHandle());
4686 DEBUG_ASSERT(tearoff_interface_target.IsNotTemporaryScopedHandle());
4687 ASSERT(InputCount() > 0);
4694 Token::IsTypeCastOperator(token_kind) || token_kind == Token::kGET ||
4695 token_kind == Token::kSET || token_kind == Token::kILLEGAL);
4696 }
#define DEBUG_ASSERT(cond)
Definition assert.h:321
const ICData * ic_data() const
Definition il.h:4698
const Function & tearoff_interface_target() const
Definition il.h:4709
const Function & interface_target() const
Definition il.h:4708
Token::Kind token_kind() const
Definition il.h:4707
const String & function_name() const
Definition il.h:4706
intptr_t deopt_id() const
Definition il.h:987
intptr_t type_args_len() const
Definition il.h:4596
const Array & argument_names() const
Definition il.h:4597
TemplateDartCall(intptr_t deopt_id, intptr_t type_args_len, const Array &argument_names, InputsArray &&inputs, const InstructionSource &source)
Definition il.h:4532
static bool IsTypeTestOperator(Kind tok)
Definition token.h:244
static bool IsTypeCastOperator(Kind tok)
Definition token.h:248
static bool IsIndexOperator(Kind tok)
Definition token.h:250
static bool IsRelationalOperator(Kind tok)
Definition token.h:232
static bool IsBinaryOperator(Token::Kind token)
Definition token.cc:31
static bool IsEqualityOperator(Kind tok)
Definition token.h:236
static bool IsUnaryOperator(Token::Kind token)
Definition token.cc:41
intptr_t InputCount() const
Definition il.h:2776
#define ASSERT(E)
SkBitmap source
Definition examples.cpp:28

Member Function Documentation

◆ ArgumentsSize()

intptr_t dart::InstanceCallBaseInstr::ArgumentsSize ( ) const
virtual

Reimplemented from dart::TemplateDartCall< 0 >.

Definition at line 5203 of file il.cc.

5203 {
5204 if (interface_target().IsNull()) {
5205 return ArgumentCountWithoutTypeArgs() + ((type_args_len() > 0) ? 1 : 0);
5206 }
5207
5210 ((type_args_len() > 0) ? 1 : 0);
5211}
static intptr_t ComputeArgumentsSizeInWords(const Function &function, intptr_t arguments_count)
intptr_t ArgumentCountWithoutTypeArgs() const
Definition il.h:4560
DART_EXPORT bool IsNull(Dart_Handle object)

◆ CanBecomeDeoptimizationTarget()

virtual bool dart::InstanceCallBaseInstr::CanBecomeDeoptimizationTarget ( ) const
inlinevirtual

Reimplemented from dart::Instruction.

Definition at line 4718 of file il.h.

4718 {
4719 // Instance calls that are specialized by the optimizer need a
4720 // deoptimization descriptor before the call.
4721 return true;
4722 }

◆ CanReceiverBeSmiBasedOnInterfaceTarget()

bool dart::InstanceCallBaseInstr::CanReceiverBeSmiBasedOnInterfaceTarget ( Zone zone) const

Definition at line 5174 of file il.cc.

5175 {
5176 if (!interface_target().IsNull()) {
5177 // Note: target_type is fully instantiated rare type (all type parameters
5178 // are replaced with dynamic) so checking if Smi is assignable to
5179 // it would compute correctly whether or not receiver can be a smi.
5180 const AbstractType& target_type = AbstractType::Handle(
5181 zone, Class::Handle(zone, interface_target().Owner()).RareType());
5182 if (!CompileType::Smi().IsAssignableTo(target_type)) {
5183 return false;
5184 }
5185 }
5186 // In all other cases conservatively assume that the receiver can be a smi.
5187 return true;
5188}
static CompileType Smi()
static Object & Handle()
Definition object.h:407

◆ ComputeType()

CompileType dart::InstanceCallBaseInstr::ComputeType ( ) const
virtual

Reimplemented from dart::Definition.

Reimplemented in dart::PolymorphicInstanceCallInstr.

Definition at line 1450 of file type_propagator.cc.

1450 {
1451 // TODO(alexmarkov): calculate type of InstanceCallInstr eagerly
1452 // (in optimized mode) and avoid keeping separate result_type.
1453 CompileType* inferred_type = result_type();
1454 intptr_t inferred_cid = kDynamicCid;
1455 bool is_nullable = CompileType::kCanBeNull;
1456 if (inferred_type != nullptr) {
1457 if (inferred_type->IsNullableInt()) {
1458 TraceStrongModeType(this, inferred_type);
1459 return *inferred_type;
1460 }
1461 inferred_cid = inferred_type->ToNullableCid();
1462 is_nullable = inferred_type->is_nullable();
1463 }
1464
1465 // Include special cases of type inference for int operations.
1466 // This helps if both type feedback and results of TFA
1467 // are not available (e.g. in AOT unit tests).
1468 switch (token_kind()) {
1469 case Token::kADD:
1470 case Token::kSUB:
1471 case Token::kMUL:
1472 case Token::kMOD:
1473 if ((ArgumentCount() == 2) &&
1474 ArgumentValueAt(0)->Type()->IsNullableInt() &&
1475 ArgumentValueAt(1)->Type()->IsNullableInt()) {
1476 return CompileType::Int();
1477 }
1478 break;
1479 case Token::kNEGATE:
1480 if ((ArgumentCount() == 1) &&
1481 ArgumentValueAt(0)->Type()->IsNullableInt()) {
1482 return CompileType::Int();
1483 }
1484 break;
1485 default:
1486 break;
1487 }
1488
1489 const Function& target = interface_target();
1490 if (!target.IsNull()) {
1491 const AbstractType& result_type =
1492 AbstractType::ZoneHandle(target.result_type());
1493 // Currently VM doesn't have enough information to instantiate generic
1494 // result types of interface targets:
1495 // 1. receiver type inferred by the front-end is not passed to VM.
1496 // 2. VM collects type arguments through the chain of superclasses but
1497 // not through implemented interfaces.
1498 // TODO(dartbug.com/30480): instantiate generic result_type
1499 CompileType result(is_nullable && !result_type.IsStrictlyNonNullable(),
1501 inferred_cid == kDynamicCid ? kIllegalCid : inferred_cid,
1502 &result_type);
1504 return result;
1505 }
1506
1507 if (inferred_type != nullptr) {
1508 TraceStrongModeType(this, inferred_type);
1509 return *inferred_type;
1510 }
1511
1512 return CompileType::Dynamic();
1513}
static constexpr bool kCannotBeSentinel
static CompileType Int()
static constexpr bool kCanBeNull
static CompileType Dynamic()
CompileType * result_type() const
Definition il.h:4730
Value * ArgumentValueAt(intptr_t index) const
Definition il.h:3417
static Object & ZoneHandle()
Definition object.h:419
intptr_t ArgumentCount() const
Definition il.h:4568
GAsyncResult * result
uint32_t * target
@ kIllegalCid
Definition class_id.h:214
@ kDynamicCid
Definition class_id.h:253
static void TraceStrongModeType(const Instruction *instr, const AbstractType &type)

◆ DECLARE_ABSTRACT_INSTRUCTION()

dart::InstanceCallBaseInstr::DECLARE_ABSTRACT_INSTRUCTION ( InstanceCallBase  )

◆ DeoptimizationTarget()

virtual intptr_t dart::InstanceCallBaseInstr::DeoptimizationTarget ( ) const
inlinevirtual

Reimplemented from dart::Instruction.

Definition at line 4774 of file il.h.

4774{ return DeoptId::kNone; }
static constexpr intptr_t kNone
Definition deopt_id.h:27

◆ entry_kind()

Code::EntryKind dart::InstanceCallBaseInstr::entry_kind ( ) const
inline

Definition at line 4741 of file il.h.

4741{ return entry_kind_; }

◆ function_name()

const String & dart::InstanceCallBaseInstr::function_name ( ) const
inline

Definition at line 4706 of file il.h.

4706{ return function_name_; }

◆ has_unique_selector()

bool dart::InstanceCallBaseInstr::has_unique_selector ( ) const
inline

Definition at line 4713 of file il.h.

4713{ return has_unique_selector_; }

◆ HasICData()

bool dart::InstanceCallBaseInstr::HasICData ( ) const
inline

Definition at line 4699 of file il.h.

4699 {
4700 return (ic_data() != nullptr) && !ic_data()->IsNull();
4701 }
bool IsNull() const
Definition object.h:363

◆ HasUnknownSideEffects()

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

Implements dart::Instruction.

Definition at line 4724 of file il.h.

4724{ return true; }

◆ ic_data()

const ICData * dart::InstanceCallBaseInstr::ic_data ( ) const
inline

Definition at line 4698 of file il.h.

4698{ return ic_data_; }

◆ interface_target()

const Function & dart::InstanceCallBaseInstr::interface_target ( ) const
inline

Definition at line 4708 of file il.h.

4708{ return interface_target_; }

◆ is_call_on_this()

bool dart::InstanceCallBaseInstr::is_call_on_this ( ) const
inline

Definition at line 4745 of file il.h.

4745{ return is_call_on_this_; }

◆ mark_as_call_on_this()

void dart::InstanceCallBaseInstr::mark_as_call_on_this ( )
inline

Definition at line 4744 of file il.h.

4744{ is_call_on_this_ = true; }

◆ receiver_is_not_smi()

bool dart::InstanceCallBaseInstr::receiver_is_not_smi ( ) const
inline

Definition at line 4749 of file il.h.

4749{ return receiver_is_not_smi_; }

◆ representation()

Representation dart::InstanceCallBaseInstr::representation ( ) const
virtual

Reimplemented from dart::Instruction.

Definition at line 5213 of file il.cc.

5213 {
5215}
static Representation ReturnRepresentationOf(const Function &function)

◆ RequiredInputRepresentation()

Representation dart::InstanceCallBaseInstr::RequiredInputRepresentation ( intptr_t  idx) const
virtual

Reimplemented from dart::Instruction.

Definition at line 5190 of file il.cc.

5191 {
5192 // The first input is the array of types
5193 // for generic functions
5194 if (type_args_len() > 0) {
5195 if (idx == 0) {
5196 return kTagged;
5197 }
5198 idx--;
5199 }
5201}
static Representation ParameterRepresentationAt(const Function &function, intptr_t index)

◆ ResolveForReceiverClass()

FunctionPtr dart::InstanceCallBaseInstr::ResolveForReceiverClass ( const Class cls,
bool  allow_add = true 
)

Definition at line 5338 of file il.cc.

5340 {
5341 const Array& args_desc_array = Array::Handle(GetArgumentsDescriptor());
5342 ArgumentsDescriptor args_desc(args_desc_array);
5344 args_desc, allow_add);
5345}
static FunctionPtr ResolveDynamicForReceiverClass(const Class &receiver_class, const String &function_name, const ArgumentsDescriptor &args_desc, bool allow_add=true)
Definition resolver.cc:160
ArrayPtr GetArgumentsDescriptor() const
Definition il.h:4599

◆ result_cid()

intptr_t dart::InstanceCallBaseInstr::result_cid ( ) const
inline

Definition at line 4732 of file il.h.

4732 {
4733 if (result_type_ == nullptr) {
4734 return kDynamicCid;
4735 }
4736 return result_type_->ToCid();
4737 }

◆ result_type()

CompileType * dart::InstanceCallBaseInstr::result_type ( ) const
inline

Definition at line 4730 of file il.h.

4730{ return result_type_; }

◆ set_entry_kind()

void dart::InstanceCallBaseInstr::set_entry_kind ( Code::EntryKind  value)
inline

Definition at line 4742 of file il.h.

4742{ entry_kind_ = value; }
uint8_t value

◆ set_has_unique_selector()

void dart::InstanceCallBaseInstr::set_has_unique_selector ( bool  b)
inline

Definition at line 4714 of file il.h.

4714{ has_unique_selector_ = b; }
static bool b

◆ set_ic_data() [1/2]

void dart::InstanceCallBaseInstr::set_ic_data ( const ICData value)
inline

Definition at line 4704 of file il.h.

4704{ ic_data_ = value; }

◆ set_ic_data() [2/2]

DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS(InstanceCallBaseInstr, TemplateDartCall, FIELD_LIST) protected void dart::InstanceCallBaseInstr::set_ic_data ( ICData value)
inline

Definition at line 4799 of file il.h.

4799{ ic_data_ = value; }

◆ set_receiver_is_not_smi()

void dart::InstanceCallBaseInstr::set_receiver_is_not_smi ( bool  value)
inline

Definition at line 4750 of file il.h.

4750{ receiver_is_not_smi_ = value; }

◆ set_result_type()

void dart::InstanceCallBaseInstr::set_result_type ( CompileType result_type)
inline

Definition at line 4800 of file il.h.

4800{ result_type_ = result_type; }

◆ SetResultType()

void dart::InstanceCallBaseInstr::SetResultType ( Zone zone,
CompileType  new_type 
)
inline

Definition at line 4726 of file il.h.

4726 {
4727 result_type_ = new (zone) CompileType(new_type);
4728 }

◆ SpeculativeModeOfInput()

virtual SpeculativeMode dart::InstanceCallBaseInstr::SpeculativeModeOfInput ( intptr_t  idx) const
inlinevirtual

Reimplemented from dart::Instruction.

Definition at line 4758 of file il.h.

4758 {
4759 if (type_args_len() > 0) {
4760 if (idx == 0) {
4761 return kGuardInputs;
4762 }
4763 idx--;
4764 }
4765 if (interface_target_.IsNull()) return kGuardInputs;
4766 return interface_target_.is_unboxed_parameter_at(idx) ? kNotSpeculative
4767 : kGuardInputs;
4768 }
@ kNotSpeculative
Definition il.h:969

◆ tearoff_interface_target()

const Function & dart::InstanceCallBaseInstr::tearoff_interface_target ( ) const
inline

Definition at line 4709 of file il.h.

4709 {
4710 return tearoff_interface_target_;
4711 }

◆ token_kind()

Token::Kind dart::InstanceCallBaseInstr::token_kind ( ) const
inline

Definition at line 4707 of file il.h.

4707{ return token_kind_; }

◆ UpdateReceiverSminess()

void dart::InstanceCallBaseInstr::UpdateReceiverSminess ( Zone zone)

Definition at line 5217 of file il.cc.

5217 {
5218 if (CompilerState::Current().is_aot() && !receiver_is_not_smi()) {
5219 if (!Receiver()->Type()->CanBeSmi() ||
5222 }
5223 }
5224}
static CompilerState & Current()
bool CanReceiverBeSmiBasedOnInterfaceTarget(Zone *zone) const
Definition il.cc:5174
void set_receiver_is_not_smi(bool value)
Definition il.h:4750
bool receiver_is_not_smi() const
Definition il.h:4749
Value * Receiver() const
Definition il.h:4559

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