Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Functions
call_specializer.cc File Reference
#include "vm/compiler/call_specializer.h"
#include "vm/compiler/backend/flow_graph_compiler.h"
#include "vm/compiler/backend/inliner.h"
#include "vm/compiler/cha.h"
#include "vm/compiler/compiler_state.h"
#include "vm/compiler/compiler_timings.h"
#include "vm/cpu.h"

Go to the source code of this file.

Classes

class  dart::SimdLowering
 

Namespaces

namespace  dart
 

Macros

#define IG   (isolate_group())
 
#define Z   (zone())
 
#define INIT_HANDLE(iface, type, cid)
 
#define Z   (flow_graph->zone())
 

Functions

 dart::DECLARE_FLAG (bool, enable_simd_inline)
 
static void dart::RefineUseTypes (Definition *instr)
 
static bool dart::ShouldInlineSimd ()
 
static bool dart::CanConvertInt64ToDouble ()
 
static bool dart::IsNumberCid (intptr_t cid)
 
static bool dart::ShouldSpecializeForDouble (const BinaryFeedback &binary_feedback)
 
static bool dart::IsLengthOneString (Definition *d)
 
static bool dart::SmiFitsInDouble ()
 
static bool dart::CidTestResultsContains (const ZoneGrowableArray< intptr_t > &results, intptr_t test_cid)
 
static void dart::TryAddTest (ZoneGrowableArray< intptr_t > *results, intptr_t test_cid, bool result)
 
static void dart::PurgeNegativeTestCidsEntries (ZoneGrowableArray< intptr_t > *results)
 
static bool dart::IsSmiValue (Value *val, intptr_t *int_val)
 
static CompileType * dart::ResultType (Definition *call)
 
static bool dart::InlineTypedDataIndexCheck (FlowGraph *flow_graph, Instruction *call, Definition *receiver, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result, const String &symbol)
 
static intptr_t dart::PrepareInlineIndexedOp (FlowGraph *flow_graph, Instruction *call, intptr_t array_cid, Definition **array, Definition **index, Instruction **cursor)
 
static bool dart::InlineGetIndexed (FlowGraph *flow_graph, bool can_speculate, bool is_dynamic_call, MethodRecognizer::Kind kind, Definition *call, Definition *receiver, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineSetIndexed (FlowGraph *flow_graph, MethodRecognizer::Kind kind, const Function &target, Instruction *call, Definition *receiver, const InstructionSource &source, CallSpecializer::ExactnessInfo *exactness, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineDoubleOp (FlowGraph *flow_graph, Token::Kind op_kind, Instruction *call, Definition *receiver, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineDoubleTestOp (FlowGraph *flow_graph, Instruction *call, Definition *receiver, MethodRecognizer::Kind kind, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineGrowableArraySetter (FlowGraph *flow_graph, const Slot &field, StoreBarrierType store_barrier_type, Instruction *call, Definition *receiver, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineLoadClassId (FlowGraph *flow_graph, Instruction *call, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static Definition * dart::PrepareInlineStringIndexOp (FlowGraph *flow_graph, Instruction *call, intptr_t cid, Definition *str, Definition *index, Instruction *cursor)
 
static bool dart::InlineStringBaseCharAt (FlowGraph *flow_graph, Instruction *call, Definition *receiver, intptr_t cid, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::InlineStringBaseCodeUnitAt (FlowGraph *flow_graph, Instruction *call, Definition *receiver, intptr_t cid, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static bool dart::CheckMask (Definition *definition, intptr_t *mask_ptr)
 
static bool dart::InlineSimdOp (FlowGraph *flow_graph, bool is_dynamic_call, Instruction *call, Definition *receiver, MethodRecognizer::Kind kind, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 
static Instruction * dart::InlineMul (FlowGraph *flow_graph, Instruction *cursor, Definition *x, Definition *y)
 
static bool dart::InlineMathIntPow (FlowGraph *flow_graph, Instruction *call, GraphEntryInstr *graph_entry, FunctionEntryInstr **entry, Instruction **last, Definition **result)
 

Macro Definition Documentation

◆ IG

#define IG   (isolate_group())

Definition at line 19 of file call_specializer.cc.

◆ INIT_HANDLE

#define INIT_HANDLE (   iface,
  type,
  cid 
)
Value:
td_class = typed_data.LookupClass(Symbols::iface()); \
ASSERT(!td_class.IsNull()); \
direct_implementors = td_class.direct_implementors(); \
typed_data_variants_[k##iface##Index].array_type = td_class.RareType(); \
typed_data_variants_[k##iface##Index].array_cid = cid; \
typed_data_variants_[k##iface##Index].element_type = type.ptr();
GLenum type
const intptr_t cid

◆ Z [1/2]

#define Z   (zone())

Definition at line 1707 of file call_specializer.cc.

◆ Z [2/2]

#define Z   (flow_graph->zone())

Definition at line 1707 of file call_specializer.cc.