Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Functions
stub_code_compiler.cc File Reference
#include "vm/compiler/runtime_api.h"
#include "vm/flags.h"
#include "vm/globals.h"
#include "vm/compiler/backend/il.h"
#include "vm/compiler/stub_code_compiler.h"
#include "vm/code_descriptors.h"
#include "vm/compiler/api/type_check_mode.h"
#include "vm/compiler/assembler/assembler.h"
#include "vm/compiler/backend/locations.h"
#include "vm/stack_frame.h"

Go to the source code of this file.

Classes

class  dart::compiler::StackRegisterScope
 

Namespaces

namespace  dart
 
namespace  dart::compiler
 

Macros

#define SHOULD_NOT_INCLUDE_RUNTIME
 
#define __   assembler->
 
#define TYPED_DATA_ALLOCATION_STUB(clazz)
 
#define EMIT_BOX_ALLOCATION(Name)
 

Functions

static void dart::compiler::BuildInstantiateTypeRuntimeCall (Assembler *assembler)
 
static void dart::compiler::BuildInstantiateTypeParameterStub (Assembler *assembler, Nullability nullability, bool is_function_parameter)
 
static void dart::compiler::EnsureIsTypeOrFunctionTypeOrTypeParameter (Assembler *assembler, Register type_reg, Register scratch_reg)
 
static void dart::compiler::BuildTypeParameterTypeTestStub (Assembler *assembler, bool allow_null)
 
static void dart::compiler::InvokeTypeCheckFromTypeTestStub (Assembler *assembler, TypeCheckMode mode)
 
static void dart::compiler::GenerateBoxFpuValueStub (Assembler *assembler, const dart::Class &cls, const RuntimeEntry &runtime_entry, void(Assembler::*store_value)(FpuRegister, Register, int32_t))
 
static intptr_t dart::compiler::SuspendStateFpOffset ()
 
static void dart::compiler::CallDartCoreLibraryFunction (Assembler *assembler, intptr_t entry_point_offset_in_thread, intptr_t function_offset_in_object_store, bool uses_args_desc=false)
 
static void dart::compiler::GenerateAllocateSuspendState (Assembler *assembler, Label *slow_case, Register result_reg, Register frame_size_reg, Register temp_reg)
 
static void dart::compiler::GenerateSubtypeTestCacheLoopBody (Assembler *assembler, int n, Register null_reg, Register cache_entry_reg, Register instance_cid_or_sig_reg, Register instance_type_args_reg, Register parent_fun_type_args_reg, Register delayed_type_args_reg, Label *found, Label *not_found, Label *next_iteration)
 
static void dart::compiler::GenerateSubtypeTestCacheHashSearch (Assembler *assembler, int n, Register null_reg, Register cache_entry_reg, Register instance_cid_or_sig_reg, Register instance_type_args_reg, Register parent_fun_type_args_reg, Register delayed_type_args_reg, Register cache_entry_end_reg, Register cache_contents_size_reg, Register probe_distance_reg, const StubCodeCompiler::STCSearchExitGenerator &gen_found, const StubCodeCompiler::STCSearchExitGenerator &gen_not_found)
 
static void dart::compiler::GenerateSubtypeTestCacheLinearSearch (Assembler *assembler, int n, Register null_reg, Register cache_entry_reg, Register instance_cid_or_sig_reg, Register instance_type_args_reg, Register parent_fun_type_args_reg, Register delayed_type_args_reg, const StubCodeCompiler::STCSearchExitGenerator &gen_found, const StubCodeCompiler::STCSearchExitGenerator &gen_not_found)
 

Macro Definition Documentation

◆ __

#define __   assembler->

Definition at line 22 of file stub_code_compiler.cc.

◆ EMIT_BOX_ALLOCATION

#define EMIT_BOX_ALLOCATION (   Name)
Value:
void StubCodeCompiler::GenerateAllocate##Name##Stub() { \
Label call_runtime; \
if (!FLAG_use_slow_path && FLAG_inline_alloc) { \
__ TryAllocate(compiler::Name##Class(), &call_runtime, \
Assembler::kNearJump, AllocateBoxABI::kResultReg, \
AllocateBoxABI::kTempReg); \
__ Ret(); \
} \
__ Bind(&call_runtime); \
__ EnterStubFrame(); \
__ PushObject(NullObject()); /* Make room for result. */ \
__ CallRuntime(kAllocate##Name##RuntimeEntry, 0); \
__ PopRegister(AllocateBoxABI::kResultReg); \
__ LeaveStubFrame(); \
__ Ret(); \
}
#define __

Definition at line 1682 of file stub_code_compiler.cc.

1683 { \
1684 Label call_runtime; \
1685 if (!FLAG_use_slow_path && FLAG_inline_alloc) { \
1686 __ TryAllocate(compiler::Name##Class(), &call_runtime, \
1687 Assembler::kNearJump, AllocateBoxABI::kResultReg, \
1688 AllocateBoxABI::kTempReg); \
1689 __ Ret(); \
1690 } \
1691 __ Bind(&call_runtime); \
1692 __ EnterStubFrame(); \
1693 __ PushObject(NullObject()); /* Make room for result. */ \
1694 __ CallRuntime(kAllocate##Name##RuntimeEntry, 0); \
1695 __ PopRegister(AllocateBoxABI::kResultReg); \
1696 __ LeaveStubFrame(); \
1697 __ Ret(); \
1698 }
const Object & NullObject()

◆ SHOULD_NOT_INCLUDE_RUNTIME

#define SHOULD_NOT_INCLUDE_RUNTIME

Definition at line 12 of file stub_code_compiler.cc.

◆ TYPED_DATA_ALLOCATION_STUB

#define TYPED_DATA_ALLOCATION_STUB (   clazz)
Value:
void StubCodeCompiler::GenerateAllocate##clazz##Stub() { \
GenerateAllocateTypedDataArrayStub(kTypedData##clazz##Cid); \
}

Definition at line 1558 of file stub_code_compiler.cc.

1559 { \
1560 GenerateAllocateTypedDataArrayStub(kTypedData##clazz##Cid); \
1561 }