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

#include <il.h>

Inheritance diagram for dart::InstantiateTypeArgumentsInstr:
dart::TemplateDefinition< 3, Throws >

Public Member Functions

 InstantiateTypeArgumentsInstr (const InstructionSource &source, Value *instantiator_type_arguments, Value *function_type_arguments, Value *type_arguments, const Class &instantiator_class, const Function &function, intptr_t deopt_id)
 
Valueinstantiator_type_arguments () const
 
Valuefunction_type_arguments () const
 
Valuetype_arguments () const
 
const Classinstantiator_class () const
 
const Functionfunction () const
 
virtual TokenPosition token_pos () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool ComputeCanDeoptimizeAfterCall () const
 
virtual intptr_t NumberOfInputsConsumedBeforeCall () const
 
virtual bool HasUnknownSideEffects () const
 
virtual DefinitionCanonicalize (FlowGraph *flow_graph)
 
bool CanShareInstantiatorTypeArguments (bool *with_runtime_check=nullptr) const
 
bool CanShareFunctionTypeArguments (bool *with_runtime_check=nullptr) const
 
const CodeGetStub () const
 
- Public Member Functions inherited from dart::TemplateDefinition< 3, Throws >
 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
 

Additional Inherited Members

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

Detailed Description

Definition at line 8236 of file il.h.

Constructor & Destructor Documentation

◆ InstantiateTypeArgumentsInstr()

dart::InstantiateTypeArgumentsInstr::InstantiateTypeArgumentsInstr ( const InstructionSource source,
Value instantiator_type_arguments,
Value function_type_arguments,
Value type_arguments,
const Class instantiator_class,
const Function function,
intptr_t  deopt_id 
)
inline

Definition at line 8238 of file il.h.

8245 : TemplateDefinition(source, deopt_id),
8246 token_pos_(source.token_pos),
8247 instantiator_class_(instantiator_class),
8248 function_(function) {
8249 DEBUG_ASSERT(instantiator_class.IsNotTemporaryScopedHandle());
8250 DEBUG_ASSERT(function.IsNotTemporaryScopedHandle());
8251 SetInputAt(0, instantiator_type_arguments);
8252 SetInputAt(1, function_type_arguments);
8253 SetInputAt(2, type_arguments);
8254 }
#define DEBUG_ASSERT(cond)
Definition assert.h:321
Value * type_arguments() const
Definition il.h:8260
Value * instantiator_type_arguments() const
Definition il.h:8258
Value * function_type_arguments() const
Definition il.h:8259
const Class & instantiator_class() const
Definition il.h:8261
const Function & function() const
Definition il.h:8262
TemplateDefinition(intptr_t deopt_id=DeoptId::kNone)
Definition il.h:2731
SkBitmap source
Definition examples.cpp:28

Member Function Documentation

◆ Canonicalize()

Definition * dart::InstantiateTypeArgumentsInstr::Canonicalize ( FlowGraph flow_graph)
virtual

Definition at line 3164 of file il.cc.

3164 {
3165 return HasUses() ? this : nullptr;
3166}

◆ CanShareFunctionTypeArguments()

bool dart::InstantiateTypeArgumentsInstr::CanShareFunctionTypeArguments ( bool *  with_runtime_check = nullptr) const
inline

Definition at line 8289 of file il.h.

8289 {
8290 if (function().IsNull() || !type_arguments()->BindsToConstant() ||
8291 !type_arguments()->BoundConstant().IsTypeArguments()) {
8292 return false;
8293 }
8294 const auto& type_args =
8295 TypeArguments::Cast(type_arguments()->BoundConstant());
8296 return type_args.CanShareFunctionTypeArguments(function(),
8297 with_runtime_check);
8298 }
DART_EXPORT bool IsNull(Dart_Handle object)

◆ CanShareInstantiatorTypeArguments()

bool dart::InstantiateTypeArgumentsInstr::CanShareInstantiatorTypeArguments ( bool *  with_runtime_check = nullptr) const
inline

Definition at line 8277 of file il.h.

8278 {
8279 if (instantiator_class().IsNull() || !type_arguments()->BindsToConstant() ||
8280 !type_arguments()->BoundConstant().IsTypeArguments()) {
8281 return false;
8282 }
8283 const auto& type_args =
8284 TypeArguments::Cast(type_arguments()->BoundConstant());
8285 return type_args.CanShareInstantiatorTypeArguments(instantiator_class(),
8286 with_runtime_check);
8287 }

◆ ComputeCanDeoptimize()

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

Definition at line 8265 of file il.h.

8265{ return false; }

◆ ComputeCanDeoptimizeAfterCall()

virtual bool dart::InstantiateTypeArgumentsInstr::ComputeCanDeoptimizeAfterCall ( ) const
inlinevirtual

Definition at line 8266 of file il.h.

8266 {
8267 return !CompilerState::Current().is_aot();
8268 }
static CompilerState & Current()

◆ function()

const Function & dart::InstantiateTypeArgumentsInstr::function ( ) const
inline

Definition at line 8262 of file il.h.

8262{ return function_; }

◆ function_type_arguments()

Value * dart::InstantiateTypeArgumentsInstr::function_type_arguments ( ) const
inline

Definition at line 8259 of file il.h.

8259{ return inputs_[1]; }
EmbeddedArray< Value *, N > inputs_
Definition il.h:2744

◆ GetStub()

const Code & dart::InstantiateTypeArgumentsInstr::GetStub ( ) const
inline

Definition at line 8300 of file il.h.

8300 {
8301 bool with_runtime_check;
8302 if (CanShareInstantiatorTypeArguments(&with_runtime_check)) {
8303 ASSERT(with_runtime_check);
8304 return StubCode::InstantiateTypeArgumentsMayShareInstantiatorTA();
8305 } else if (CanShareFunctionTypeArguments(&with_runtime_check)) {
8306 ASSERT(with_runtime_check);
8307 return StubCode::InstantiateTypeArgumentsMayShareFunctionTA();
8308 }
8309 return StubCode::InstantiateTypeArguments();
8310 }
bool CanShareFunctionTypeArguments(bool *with_runtime_check=nullptr) const
Definition il.h:8289
bool CanShareInstantiatorTypeArguments(bool *with_runtime_check=nullptr) const
Definition il.h:8277
#define ASSERT(E)

◆ HasUnknownSideEffects()

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

Definition at line 8273 of file il.h.

8273{ return false; }

◆ instantiator_class()

const Class & dart::InstantiateTypeArgumentsInstr::instantiator_class ( ) const
inline

Definition at line 8261 of file il.h.

8261{ return instantiator_class_; }

◆ instantiator_type_arguments()

Value * dart::InstantiateTypeArgumentsInstr::instantiator_type_arguments ( ) const
inline

Definition at line 8258 of file il.h.

8258{ return inputs_[0]; }

◆ NumberOfInputsConsumedBeforeCall()

virtual intptr_t dart::InstantiateTypeArgumentsInstr::NumberOfInputsConsumedBeforeCall ( ) const
inlinevirtual

Definition at line 8269 of file il.h.

8269 {
8270 return InputCount();
8271 }
virtual intptr_t InputCount() const
Definition il.h:2737

◆ token_pos()

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

Definition at line 8263 of file il.h.

8263{ return token_pos_; }

◆ type_arguments()

Value * dart::InstantiateTypeArgumentsInstr::type_arguments ( ) const
inline

Definition at line 8260 of file il.h.

8260{ return inputs_[2]; }

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