Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Functions | Variables
il.cc File Reference
#include "vm/compiler/backend/il.h"
#include "platform/assert.h"
#include "platform/globals.h"
#include "vm/bit_vector.h"
#include "vm/bootstrap.h"
#include "vm/code_entry_kind.h"
#include "vm/compiler/aot/dispatch_table_generator.h"
#include "vm/compiler/assembler/object_pool_builder.h"
#include "vm/compiler/backend/code_statistics.h"
#include "vm/compiler/backend/constant_propagator.h"
#include "vm/compiler/backend/evaluator.h"
#include "vm/compiler/backend/flow_graph_compiler.h"
#include "vm/compiler/backend/linearscan.h"
#include "vm/compiler/backend/locations.h"
#include "vm/compiler/backend/locations_helpers.h"
#include "vm/compiler/backend/loops.h"
#include "vm/compiler/backend/parallel_move_resolver.h"
#include "vm/compiler/backend/range_analysis.h"
#include "vm/compiler/ffi/frame_rebase.h"
#include "vm/compiler/ffi/marshaller.h"
#include "vm/compiler/ffi/native_calling_convention.h"
#include "vm/compiler/ffi/native_location.h"
#include "vm/compiler/ffi/native_type.h"
#include "vm/compiler/frontend/flow_graph_builder.h"
#include "vm/compiler/frontend/kernel_translation_helper.h"
#include "vm/compiler/jit/compiler.h"
#include "vm/compiler/method_recognizer.h"
#include "vm/compiler/runtime_api.h"
#include "vm/constants.h"
#include "vm/cpu.h"
#include "vm/dart_entry.h"
#include "vm/object.h"
#include "vm/object_store.h"
#include "vm/os.h"
#include "vm/regexp_assembler_ir.h"
#include "vm/resolver.h"
#include "vm/runtime_entry.h"
#include "vm/scopes.h"
#include "vm/stack_frame.h"
#include "vm/stub_code.h"
#include "vm/symbols.h"
#include "vm/type_testing_stubs.h"
#include "vm/compiler/backend/il_printer.h"

Go to the source code of this file.

Classes

class  dart::SubtypeFinder
 
class  dart::CidCheckerForRanges
 
struct  dart::SimdOpInfo
 

Namespaces

namespace  dart
 

Macros

#define FOR_EACH_NON_INT_BOXED_REPRESENTATION(M)
 
#define BOXING_IN_SET_CASE(unboxed, boxed)
 
#define BOXING_VALUE_OFFSET_CASE(unboxed, boxed)
 
#define BOXING_CID_CASE(unboxed, boxed)
 
#define KIND_CASE(name)
 
#define KIND_CASE(name)
 
#define DEFINE_ACCEPT(ShortName, Attrs)
 
#define INSTR_ATTRS(type, attrs)   InstrAttrs::attrs,
 
#define __   compiler->assembler()->
 
#define Z   zone_
 
#define R(r)   (1 << r)
 
#define CASE_METHOD(Arity, Mask, Name, ...)
 
#define CASE_BINARY_OP(Arity, Mask, Name, Args, Result)
 
#define REP(T)   (SimdRepresentation(kUnboxed##T))
 
#define ENCODE_INPUTS_0()
 
#define ENCODE_INPUTS_1(In0)   REP(In0)
 
#define ENCODE_INPUTS_2(In0, In1)   REP(In0), REP(In1)
 
#define ENCODE_INPUTS_3(In0, In1, In2)   REP(In0), REP(In1), REP(In2)
 
#define ENCODE_INPUTS_4(In0, In1, In2, In3)    REP(In0), REP(In1), REP(In2), REP(In3)
 
#define HAS_MASK   true
 
#define HAS__   false
 
#define CASE(Arity, Mask, Name, Args, Result)    {Arity, HAS_##Mask, REP(Result), {PP_APPLY(ENCODE_INPUTS_##Arity, Args)}},
 

Functions

 dart::DEFINE_FLAG (bool, propagate_ic_data, true, "Propagate IC data from unoptimized to optimized IC calls.")
 
 dart::DEFINE_FLAG (bool, two_args_smi_icd, true, "Generate special IC stubs for two args Smi operations")
 
 dart::DECLARE_FLAG (bool, inline_alloc)
 
 dart::DECLARE_FLAG (bool, use_slow_path)
 
static int dart::OrderById (CidRange *const *a, CidRange *const *b)
 
static int dart::OrderByFrequencyThenId (CidRange *const *a, CidRange *const *b)
 
static intptr_t dart::Usage (Thread *thread, const Function &function)
 
static bool dart::IsMarked (BlockEntryInstr *block, GrowableArray< BlockEntryInstr * > *preorder)
 
static intptr_t dart::RepresentationBits (Representation r)
 
static int64_t dart::RepresentationMask (Representation r)
 
static Definition * dart::CanonicalizeCommutativeDoubleArithmetic (Token::Kind op, Value *left, Value *right)
 
static bool dart::IsCommutative (Token::Kind op)
 
static bool dart::IsFpCompare (ComparisonInstr *comp)
 
static bool dart::MayBeBoxableNumber (intptr_t cid)
 
static bool dart::MayBeNumber (CompileType *type)
 
static Definition * dart::CanonicalizeStrictCompare (StrictCompareInstr *compare, bool *negated, bool is_branch)
 
static bool dart::BindsToGivenConstant (Value *v, intptr_t expected)
 
static bool dart::RecognizeTestPattern (Value *left, Value *right, bool *negate)
 
static bool dart::IsSingleUseUnboxOrConstant (Value *use)
 
static CodePtr dart::TwoArgsSmiOpInlineCacheEntry (Token::Kind kind)
 
static FunctionPtr dart::FindBinarySmiOp (Zone *zone, const String &name)
 
static const String & dart::EvaluateToString (Zone *zone, Definition *defn)
 
static Definition * dart::CanonicalizeStringInterpolate (StaticCallInstr *call, FlowGraph *flow_graph)
 
static Definition * dart::CanonicalizeStringInterpolateSingle (StaticCallInstr *call, FlowGraph *flow_graph)
 
static bool dart::AllInputsAreRedefinitions (PhiInstr *phi)
 
static AlignmentType dart::StrengthenAlignment (intptr_t cid, AlignmentType alignment)
 
 dart::DEFINE_BACKEND (LoadThread,(Register out))
 
static constexpr Representation dart::SimdRepresentation (Representation rep)
 

Variables

static const intptr_t dart::kMaxElementSizeForEfficientCopy
 
static const Representation dart::kUnboxedBool = kTagged
 
static const SimdOpInfo dart::simd_op_information []
 

Macro Definition Documentation

◆ __

#define __   compiler->assembler()->

Definition at line 4271 of file il.cc.

◆ BOXING_CID_CASE

#define BOXING_CID_CASE (   unboxed,
  boxed 
)
Value:
case kUnboxed##unboxed: \
return k##boxed##Cid;

Definition at line 455 of file il.cc.

◆ BOXING_IN_SET_CASE

#define BOXING_IN_SET_CASE (   unboxed,
  boxed 
)
Value:
case kUnboxed##unboxed: \
return true;

Definition at line 449 of file il.cc.

◆ BOXING_VALUE_OFFSET_CASE

#define BOXING_VALUE_OFFSET_CASE (   unboxed,
  boxed 
)
Value:
case kUnboxed##unboxed: \
return compiler::target::boxed::value_offset();

Definition at line 452 of file il.cc.

◆ CASE

#define CASE (   Arity,
  Mask,
  Name,
  Args,
  Result 
)     {Arity, HAS_##Mask, REP(Result), {PP_APPLY(ENCODE_INPUTS_##Arity, Args)}},

◆ CASE_BINARY_OP

#define CASE_BINARY_OP (   Arity,
  Mask,
  Name,
  Args,
  Result 
)

◆ CASE_METHOD

#define CASE_METHOD (   Arity,
  Mask,
  Name,
  ... 
)
Value:
case MethodRecognizer::k##Name: \
return k##Name;
ImplicitString Name
Definition: DMSrcSink.h:38

◆ DEFINE_ACCEPT

#define DEFINE_ACCEPT (   ShortName,
  Attrs 
)
Value:
void ShortName##Instr::Accept(InstructionVisitor* visitor) { \
visitor->Visit##ShortName(this); \
}

Definition at line 1263 of file il.cc.

◆ ENCODE_INPUTS_0

#define ENCODE_INPUTS_0 ( )

Definition at line 8418 of file il.cc.

◆ ENCODE_INPUTS_1

#define ENCODE_INPUTS_1 (   In0)    REP(In0)

Definition at line 8419 of file il.cc.

◆ ENCODE_INPUTS_2

#define ENCODE_INPUTS_2 (   In0,
  In1 
)    REP(In0), REP(In1)

Definition at line 8420 of file il.cc.

◆ ENCODE_INPUTS_3

#define ENCODE_INPUTS_3 (   In0,
  In1,
  In2 
)    REP(In0), REP(In1), REP(In2)

Definition at line 8421 of file il.cc.

◆ ENCODE_INPUTS_4

#define ENCODE_INPUTS_4 (   In0,
  In1,
  In2,
  In3 
)     REP(In0), REP(In1), REP(In2), REP(In3)

Definition at line 8422 of file il.cc.

◆ FOR_EACH_NON_INT_BOXED_REPRESENTATION

#define FOR_EACH_NON_INT_BOXED_REPRESENTATION (   M)
Value:
M(Double, Double) \
M(Float, Double) \
M(Float32x4, Float32x4) \
M(Float64x2, Float64x2) \
M(Int32x4, Int32x4)
#define M(PROC, DITHER)

Definition at line 442 of file il.cc.

◆ HAS__

#define HAS__   false

Definition at line 8427 of file il.cc.

◆ HAS_MASK

#define HAS_MASK   true

Definition at line 8426 of file il.cc.

◆ INSTR_ATTRS

#define INSTR_ATTRS (   type,
  attrs 
)    InstrAttrs::attrs,

◆ KIND_CASE [1/2]

#define KIND_CASE (   name)
Value:
case k##name: \
return #name;
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32

◆ KIND_CASE [2/2]

#define KIND_CASE (   name)
Value:
if (strcmp(str, #name) == 0) { \
*out = Kind::k##name; \
return true; \
}

◆ R

#define R (   r)    (1 << r)

◆ REP

#define REP (   T)    (SimdRepresentation(kUnboxed##T))

Definition at line 8415 of file il.cc.

◆ Z

#define Z   zone_

Definition at line 7430 of file il.cc.