Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Functions
graph_intrinsifier.cc File Reference
#include "vm/compiler/graph_intrinsifier.h"
#include "vm/compiler/backend/block_builder.h"
#include "vm/compiler/backend/flow_graph.h"
#include "vm/compiler/backend/flow_graph_compiler.h"
#include "vm/compiler/backend/il.h"
#include "vm/compiler/backend/il_printer.h"
#include "vm/compiler/backend/inliner.h"
#include "vm/compiler/backend/linearscan.h"
#include "vm/compiler/backend/range_analysis.h"
#include "vm/compiler/compiler_pass.h"
#include "vm/compiler/intrinsifier.h"
#include "vm/compiler/jit/compiler.h"
#include "vm/cpu.h"
#include "vm/flag_list.h"

Go to the source code of this file.

Classes

class  dart::GraphIntrinsicCodeGenScope
 

Namespaces

namespace  dart
 
namespace  dart::compiler
 

Macros

#define EMIT_CASE(class_name, function_name, enum_name, fp)
 
#define DEFINE_ARRAY_SETTER_INTRINSIC(enum_name)
 
#define DEFINE_FLOAT_ARRAY_SETTER_INTRINSIC(enum_name)
 
#define DEFINE_SIMD_ARRAY_SETTER_INTRINSIC(enum_name)
 

Functions

 dart::DECLARE_FLAG (bool, print_flow_graph)
 
 dart::DECLARE_FLAG (bool, print_flow_graph_optimized)
 
static void dart::compiler::EmitCodeFor (FlowGraphCompiler *compiler, FlowGraph *graph)
 
static Representation dart::compiler::RepresentationForCid (intptr_t cid)
 
static Definition * dart::compiler::PrepareIndexedOp (FlowGraph *flow_graph, BlockBuilder *builder, Definition *array, Definition *index, const Slot &length_field)
 
static void dart::compiler::VerifyParameterIsBoxed (BlockBuilder *builder, intptr_t arg_index)
 
static Definition * dart::compiler::CreateBoxedParameterIfNeeded (BlockBuilder *builder, Definition *value, Representation representation, intptr_t arg_index)
 
static Definition * dart::compiler::CreateBoxedResultIfNeeded (BlockBuilder *builder, Definition *value, Representation representation)
 
static Definition * dart::compiler::CreateUnboxedResultIfNeeded (BlockBuilder *builder, Definition *value)
 
static bool dart::compiler::IntrinsifyArraySetIndexed (FlowGraph *flow_graph, intptr_t array_cid)
 
static bool dart::compiler::BuildSimdOp (FlowGraph *flow_graph, intptr_t cid, Token::Kind kind)
 
static bool dart::compiler::BuildFloat32x4Get (FlowGraph *flow_graph, MethodRecognizer::Kind kind)
 
static bool dart::compiler::BuildLoadField (FlowGraph *flow_graph, const Slot &field)
 
static bool dart::compiler::BuildUnarySmiOp (FlowGraph *flow_graph, Token::Kind op_kind)
 
static bool dart::compiler::BuildBinarySmiOp (FlowGraph *flow_graph, Token::Kind op_kind)
 
static Definition * dart::compiler::ConvertOrUnboxDoubleParameter (BlockBuilder *builder, Definition *value, intptr_t index, bool is_checked)
 

Macro Definition Documentation

◆ DEFINE_ARRAY_SETTER_INTRINSIC

#define DEFINE_ARRAY_SETTER_INTRINSIC (   enum_name)
Value:
bool GraphIntrinsifier::Build_##enum_name##SetIndexed( \
FlowGraph* flow_graph) { \
flow_graph, MethodRecognizer::MethodKindToReceiverCid( \
MethodRecognizer::k##enum_name##SetIndexed)); \
}
static bool IntrinsifyArraySetIndexed(FlowGraph *flow_graph, intptr_t array_cid)
const char *const enum_name

Definition at line 280 of file graph_intrinsifier.cc.

◆ DEFINE_FLOAT_ARRAY_SETTER_INTRINSIC

#define DEFINE_FLOAT_ARRAY_SETTER_INTRINSIC (   enum_name)
Value:
bool GraphIntrinsifier::Build_##enum_name##SetIndexed( \
FlowGraph* flow_graph) { \
flow_graph, MethodRecognizer::MethodKindToReceiverCid( \
MethodRecognizer::k##enum_name##SetIndexed)); \
}

Definition at line 302 of file graph_intrinsifier.cc.

◆ DEFINE_SIMD_ARRAY_SETTER_INTRINSIC

#define DEFINE_SIMD_ARRAY_SETTER_INTRINSIC (   enum_name)
Value:
bool GraphIntrinsifier::Build_##enum_name##SetIndexed( \
FlowGraph* flow_graph) { \
if (!FlowGraphCompiler::SupportsUnboxedSimd128()) { \
return false; \
} \
flow_graph, MethodRecognizer::MethodKindToReceiverCid( \
MethodRecognizer::k##enum_name##SetIndexed)); \
}

Definition at line 315 of file graph_intrinsifier.cc.

◆ EMIT_CASE

#define EMIT_CASE (   class_name,
  function_name,
  enum_name,
  fp 
)
Value:
case MethodRecognizer::k##enum_name: \
if (!Build_##enum_name(graph)) return false; \
break;