Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Typedefs | Functions
range_analysis.cc File Reference
#include "vm/compiler/backend/range_analysis.h"
#include "vm/bit_vector.h"
#include "vm/compiler/backend/il_printer.h"
#include "vm/compiler/backend/loops.h"

Go to the source code of this file.

Classes

class  dart::Scheduler
 
class  dart::BoundsCheckGeneralizer
 

Namespaces

namespace  dart
 

Macros

#define Z   (zone())
 
#define ASSERT_VALID_RANGE_FOR_REPRESENTATION(instr, range, representation)
 
#define NATIVE_SLOT_CASE(ClassName, __, FieldName, ___, ____)    case Slot::Kind::k##ClassName##_##FieldName:
 
#define UNBOXED_NATIVE_SLOT_CASE(Class, __, Field, ___, ____)    case Slot::Kind::k##Class##_##Field:
 

Typedefs

typedef bool(* dart::BoundaryOp) (RangeBoundary *)
 

Functions

 dart::DEFINE_FLAG (bool, array_bounds_check_elimination, true, "Eliminate redundant bounds checks.")
 
 dart::DEFINE_FLAG (bool, trace_range_analysis, false, "Trace range analysis progress")
 
 dart::DEFINE_FLAG (bool, trace_integer_ir_selection, false, "Print integer IR selection optimization pass.")
 
 dart::DECLARE_FLAG (bool, trace_constant_propagation)
 
static Definition * dart::UnwrapConstraint (Definition *defn)
 
static bool dart::AreEqualDefinitions (Definition *a, Definition *b)
 
static bool dart::DependOnSameSymbol (const RangeBoundary &a, const RangeBoundary &b)
 
static RangeBoundary dart::WidenMin (const Range *range, const Range *new_range, RangeBoundary::RangeSize size)
 
static RangeBoundary dart::WidenMax (const Range *range, const Range *new_range, RangeBoundary::RangeSize size)
 
static RangeBoundary dart::NarrowMin (const Range *range, const Range *new_range, RangeBoundary::RangeSize size)
 
static RangeBoundary dart::NarrowMax (const Range *range, const Range *new_range, RangeBoundary::RangeSize size)
 
static RangeBoundary::RangeSize dart::RangeSizeForPhi (Definition *phi)
 
static void dart::NarrowBinaryInt64Op (BinaryInt64OpInstr *int64_op)
 
static void dart::NarrowShiftInt64Op (ShiftIntegerOpInstr *int64_op)
 
static RangeBoundary dart::CanonicalizeBoundary (const RangeBoundary &a, const RangeBoundary &overflow)
 
static bool dart::CanonicalizeMaxBoundary (RangeBoundary *a)
 
static bool dart::CanonicalizeMinBoundary (RangeBoundary *a)
 
static bool dart::CanonicalizeForComparison (RangeBoundary *a, RangeBoundary *b, BoundaryOp op, const RangeBoundary &overflow)
 
static RangeBoundary::RangeSize dart::RepresentationToRangeSize (Representation r)
 
static void dart::ConvertRangeToUnsigned (int64_t a, int64_t b, uint64_t *ua, uint64_t *ub)
 
static void dart::ConvertRangeToSigned (uint64_t a, uint64_t b, int64_t *sa, int64_t *sb)
 
static int dart::BitSize (const Range *range)
 
static bool dart::DependsOnSymbol (const RangeBoundary &a, Definition *symbol)
 
static void dart::Join (Range *range, Definition *defn, const Range *defn_range, RangeBoundary::RangeSize size)
 
static bool dart::DominatesPhi (BlockEntryInstr *a, BlockEntryInstr *phi_block)
 
static RangeBoundary dart::EnsureAcyclicSymbol (BlockEntryInstr *phi_block, const RangeBoundary &a, const RangeBoundary &limit)
 
static const Range * dart::GetInputRange (RangeAnalysis *analysis, RangeBoundary::RangeSize size, Value *input)
 
static void dart::CacheRange (Range **slot, const Range *range, RangeBoundary::RangeSize size)
 
static bool dart::IsRedundantBasedOnRangeInformation (Value *index, Value *length)
 

Macro Definition Documentation

◆ ASSERT_VALID_RANGE_FOR_REPRESENTATION

#define ASSERT_VALID_RANGE_FOR_REPRESENTATION (   instr,
  range,
  representation 
)
Value:
do { \
USE(instr); \
USE(range); \
USE(representation); \
} while (false)

Definition at line 48 of file range_analysis.cc.

◆ NATIVE_SLOT_CASE

#define NATIVE_SLOT_CASE (   ClassName,
  __,
  FieldName,
  ___,
  ____ 
)     case Slot::Kind::k##ClassName##_##FieldName:

◆ UNBOXED_NATIVE_SLOT_CASE

#define UNBOXED_NATIVE_SLOT_CASE (   Class,
  __,
  Field,
  ___,
  ____ 
)     case Slot::Kind::k##Class##_##Field:

◆ Z

#define Z   (zone())

Definition at line 25 of file range_analysis.cc.