Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Functions | Variables
intrinsifier.cc File Reference
#include "vm/compiler/intrinsifier.h"
#include "vm/compiler/assembler/assembler.h"
#include "vm/compiler/backend/flow_graph.h"
#include "vm/compiler/backend/flow_graph_compiler.h"
#include "vm/compiler/backend/il_printer.h"
#include "vm/compiler/backend/linearscan.h"
#include "vm/compiler/frontend/flow_graph_builder.h"
#include "vm/compiler/jit/compiler.h"
#include "vm/cpu.h"
#include "vm/flags.h"
#include "vm/object.h"
#include "vm/parser.h"
#include "vm/symbols.h"

Go to the source code of this file.

Classes

struct  dart::compiler::IntrinsicDesc
 
struct  dart::compiler::LibraryIntrinsicsDesc
 

Namespaces

namespace  dart
 
namespace  dart::compiler
 

Macros

#define DEFINE_INTRINSIC(class_name, function_name, destination, fp)    {#class_name, #function_name},
 
#define EMIT_BREAKPOINT()   compiler->assembler()->Breakpoint()
 
#define EMIT_CASE(class_name, function_name, enum_name, fp)
 

Functions

 dart::DEFINE_FLAG (bool, intrinsify, true, "Instrinsify when possible")
 
 dart::DEFINE_FLAG (bool, trace_intrinsifier, false, "Trace intrinsifier")
 

Variables

static const IntrinsicDesc dart::compiler::core_intrinsics []
 
static const IntrinsicDesc dart::compiler::typed_data_intrinsics []
 
static const IntrinsicDesc dart::compiler::developer_intrinsics []
 
static const IntrinsicDesc dart::compiler::internal_intrinsics []
 

Macro Definition Documentation

◆ DEFINE_INTRINSIC

#define DEFINE_INTRINSIC (   class_name,
  function_name,
  destination,
  fp 
)     {#class_name, #function_name},

Definition at line 88 of file intrinsifier.cc.

◆ EMIT_BREAKPOINT

#define EMIT_BREAKPOINT ( )    compiler->assembler()->Breakpoint()

◆ EMIT_CASE

#define EMIT_CASE (   class_name,
  function_name,
  enum_name,
  fp 
)
Value:
case MethodRecognizer::k##enum_name: { \
compiler->assembler()->Comment("Intrinsic"); \
Label normal_ir_body; \
const auto size_before = compiler->assembler()->CodeSize(); \
AsmIntrinsifier::enum_name(compiler->assembler(), &normal_ir_body); \
const auto size_after = compiler->assembler()->CodeSize(); \
if (size_before == size_after) return false; \
if (function.HasUnboxedParameters()) { \
FATAL("Unsupported unboxed parameters in asm intrinsic %s", \
function.ToFullyQualifiedCString()); \
} \
if (function.HasUnboxedReturnValue()) { \
FATAL("Unsupported unboxed return value in asm intrinsic %s", \
function.ToFullyQualifiedCString()); \
} \
if (!normal_ir_body.IsBound()) { \
EMIT_BREAKPOINT(); \
return true; \
} \
return false; \
}
Dart_NativeFunction function
Definition: fuchsia.cc:51
const char *const enum_name