Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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 6340 of file il.cc.

6340 {
6341 __ Comment("DoubleToIntegerSlowPath");
6342 __ Bind(entry_label());
6343
6344 LocationSummary* locs = instruction()->locs();
6345 locs->live_registers()->Remove(locs->out(0));
6346
6347 compiler->SaveLiveRegisters(locs);
6348
6349 auto slow_path_env =
6350 compiler->SlowPathEnvironmentFor(instruction(), /*num_slow_path_args=*/0);
6351
6352 __ MoveUnboxedDouble(DoubleToIntegerStubABI::kInputReg, value_reg_);
6353 __ LoadImmediate(
6355 compiler::target::ToRawSmi(instruction()->recognized_kind()));
6356 compiler->GenerateStubCall(instruction()->source(),
6357 StubCode::DoubleToInteger(),
6358 UntaggedPcDescriptors::kOther, locs,
6359 instruction()->deopt_id(), slow_path_env);
6360 __ MoveRegister(instruction()->locs()->out(0).reg(),
6362 compiler->RestoreLiveRegisters(instruction()->locs());
6363 __ Jump(exit_label());
6364}
#define __
compiler::Label * entry_label()
compiler::Label * exit_label()
SkBitmap source
Definition examples.cpp:28
word ToRawSmi(const dart::Object &a)
static constexpr Register kResultReg
static constexpr Register kRecognizedKindReg
static constexpr FpuRegister kInputReg

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