Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
dart::DoubleToIntegerSlowPath Class Reference

#include <flow_graph_compiler.h>

Inheritance diagram for dart::DoubleToIntegerSlowPath:
dart::TemplateSlowPathCode< DoubleToIntegerInstr > dart::SlowPathCode dart::ZoneAllocated

Public Member Functions

 DoubleToIntegerSlowPath (DoubleToIntegerInstr *instruction, FpuRegister value_reg)
 
virtual void EmitNativeCode (FlowGraphCompiler *compiler)
 
- Public Member Functions inherited from dart::TemplateSlowPathCode< DoubleToIntegerInstr >
 TemplateSlowPathCode (DoubleToIntegerInstr *instruction)
 
DoubleToIntegerInstrinstruction () const
 
- Public Member Functions inherited from dart::SlowPathCode
 SlowPathCode (Instruction *instruction)
 
virtual ~SlowPathCode ()
 
Instructioninstruction () const
 
compiler::Labelentry_label ()
 
compiler::Labelexit_label ()
 
void GenerateCode (FlowGraphCompiler *compiler)
 
- Public Member Functions inherited from dart::ZoneAllocated
 ZoneAllocated ()
 
void * operator new (size_t size)
 
void * operator new (size_t size, Zone *zone)
 
void operator delete (void *pointer)
 

Detailed Description

Definition at line 201 of file flow_graph_compiler.h.

Constructor & Destructor Documentation

◆ DoubleToIntegerSlowPath()

dart::DoubleToIntegerSlowPath::DoubleToIntegerSlowPath ( DoubleToIntegerInstr instruction,
FpuRegister  value_reg 
)
inline

Definition at line 204 of file flow_graph_compiler.h.

206 : TemplateSlowPathCode(instruction), value_reg_(value_reg) {}
TemplateSlowPathCode(DoubleToIntegerInstr *instruction)

Member Function Documentation

◆ EmitNativeCode()

void dart::DoubleToIntegerSlowPath::EmitNativeCode ( FlowGraphCompiler compiler)
virtual

Implements dart::SlowPathCode.

Definition at line 6332 of file il.cc.

6332 {
6333 __ Comment("DoubleToIntegerSlowPath");
6334 __ Bind(entry_label());
6335
6336 LocationSummary* locs = instruction()->locs();
6337 locs->live_registers()->Remove(locs->out(0));
6338
6339 compiler->SaveLiveRegisters(locs);
6340
6341 auto slow_path_env =
6342 compiler->SlowPathEnvironmentFor(instruction(), /*num_slow_path_args=*/0);
6343
6344 __ MoveUnboxedDouble(DoubleToIntegerStubABI::kInputReg, value_reg_);
6345 __ LoadImmediate(
6347 compiler::target::ToRawSmi(instruction()->recognized_kind()));
6348 compiler->GenerateStubCall(instruction()->source(),
6350 UntaggedPcDescriptors::kOther, locs,
6351 instruction()->deopt_id(), slow_path_env);
6352 __ MoveRegister(instruction()->locs()->out(0).reg(),
6354 compiler->RestoreLiveRegisters(instruction()->locs());
6355 __ Jump(exit_label());
6356}
LocationSummary * locs()
Definition: il.h:1192
RegisterSet * live_registers()
Definition: locations.h:941
void Remove(Location loc)
Definition: locations.h:766
compiler::Label * entry_label()
compiler::Label * exit_label()
SkBitmap source
Definition: examples.cpp:28
#define __
Definition: il.cc:4271
word ToRawSmi(const dart::Object &a)
Definition: runtime_api.cc:960
IntegerPtr DoubleToInteger(Zone *zone, double val)
static bool Bind(PassBindingsCacheMTL &pass, ShaderStage stage, size_t bind_index, const BufferView &view)
static constexpr Register kResultReg
static constexpr Register kRecognizedKindReg
static constexpr FpuRegister kInputReg

The documentation for this class was generated from the following files: