Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions | Variables
dart::kernel Namespace Reference

Classes

class  ActiveClass
 
class  ActiveClassScope
 
class  ActiveEnclosingFunctionScope
 
class  ActiveMemberScope
 
class  ActiveTypeParametersScope
 
class  AlternativeReadingScope
 
class  AlternativeReadingScopeWithNewData
 
class  BaseFlowGraphBuilder
 
class  BreakableBlock
 
class  BuildingTranslationHelper
 
struct  CallSiteAttributesMetadata
 
class  CallSiteAttributesMetadataHelper
 
class  CatchBlock
 
class  ClassHelper
 
class  ClassIndex
 
class  ConstantReader
 
class  ConstructorHelper
 
struct  DirectCallMetadata
 
class  DirectCallMetadataHelper
 
class  FieldHelper
 
class  FlowGraphBuilder
 
class  Fragment
 
class  FunctionNodeHelper
 
struct  FunctionScope
 
struct  InferredTypeMetadata
 
class  InferredTypeMetadataHelper
 
class  KernelFingerprintHelper
 
class  KernelLoader
 
class  KernelReaderHelper
 
class  KernelSourceFingerprintHelper
 
class  KernelTokenPositionCollector
 
class  LibraryDependencyHelper
 
class  LibraryHelper
 
class  LibraryIndex
 
class  LoadingUnitsMetadataHelper
 
class  Mapping
 
class  MetadataHelper
 
class  NameIndex
 
class  ObfuscationProhibitionsMetadataHelper
 
class  PositionScope
 
struct  ProcedureAttributesMetadata
 
class  ProcedureAttributesMetadataHelper
 
class  ProcedureHelper
 
class  ProgramState
 
class  PrologueBuilder
 
class  Reader
 
class  ScopeBuilder
 
class  ScopeBuildingResult
 
class  SimpleExpressionConverter
 
class  StreamingFlowGraphBuilder
 
class  SwitchBlock
 
class  SwitchExpression
 
class  SwitchHelper
 
class  SwitchRange
 
struct  TableSelectorInfo
 
class  TableSelectorMetadata
 
class  TableSelectorMetadataHelper
 
class  TestFragment
 
class  TranslationHelper
 
class  TryCatchBlock
 
class  TryFinallyBlock
 
class  TypeParameterHelper
 
class  TypeTranslator
 
class  UnboxingInfoMetadata
 
class  UnboxingInfoMetadataHelper
 
struct  UriToSourceTableEntry
 
struct  UriToSourceTableTrait
 
class  VariableDeclarationHelper
 

Typedefs

using UriToSourceTable = DirectChainedHashMap< UriToSourceTableTrait >
 

Enumerations

enum class  UncheckedEntryPointStyle { kNone = 0 , kSeparate = 1 , kSharedWithVariable = 2 }
 
enum class  TypeChecksToBuild { kCheckAllTypeParameterBounds , kCheckNonCovariantTypeParameterBounds , kCheckCovariantTypeParameterBounds }
 
enum  SwitchDispatch { kSwitchDispatchAuto = -1 , kSwitchDispatchLinearScan , kSwitchDispatchBinarySearch , kSwitchDispatchJumpTable }
 
enum  Tag
 
enum  ConstantTag {
  kNullConstant = 0 , kBoolConstant = 1 , kIntConstant = 2 , kDoubleConstant = 3 ,
  kStringConstant = 4 , kSymbolConstant = 5 , kMapConstant = 6 , kListConstant = 7 ,
  kSetConstant = 13 , kInstanceConstant = 8 , kInstantiationConstant = 9 , kStaticTearOffConstant = 10 ,
  kTypeLiteralConstant = 11 , kUnevaluatedConstant = 12 , kTypedefTearOffConstant = 14 , kConstructorTearOffConstant = 15 ,
  kRedirectingFactoryTearOffConstant = 16 , kRecordConstant = 17
}
 
enum class  KernelNullability : int8_t { kUndetermined = 0 , kNullable = 1 , kNonNullable = 2 , kLegacy = 3 }
 
enum  Variance {
  kUnrelated = 0 , kCovariant = 1 , kContravariant = 2 , kInvariant = 3 ,
  kLegacyCovariant = 4
}
 
enum  AsExpressionFlags {
  kAsExpressionFlagTypeError = 1 << 0 , kAsExpressionFlagCovarianceCheck = 1 << 1 , kAsExpressionFlagForDynamic = 1 << 2 , kAsExpressionFlagForLegacy = 1 << 3 ,
  kAsExpressionFlagUnchecked = 1 << 4
}
 
enum  IsExpressionFlags { kIsExpressionFlagForLegacy = 1 << 0 }
 
enum  InstanceInvocationFlags { kInstanceInvocationFlagInvariant = 1 << 0 , kInstanceInvocationFlagBoundsSafe = 1 << 1 }
 
enum  DynamicInvocationFlags { kDynamicInvocationFlagImplicitCall = 1 << 0 }
 
enum  ThrowFlags { kThrowForErrorHandling = 1 << 0 }
 
enum  YieldStatementFlags { kYieldStatementFlagYieldStar = 1 << 0 }
 
enum class  NamedTypeFlags : uint8_t { kIsRequired = 1 << 0 }
 
enum class  FunctionAccessKind { kFunction , kFunctionType , kInapplicable , kNullable }
 

Functions

static bool SupportsCoverage ()
 
Fragment operator+ (const Fragment &first, const Fragment &second)
 
Fragment operator<< (const Fragment &fragment, Instruction *next)
 
static FunctionGetNoSuchMethodOrDie (Thread *thread, Zone *zone, const Class &klass)
 
static void ReportIfNotNull (const char *error)
 
static bool CanUnboxElements (classid_t cid)
 
const FunctionTypedListGetNativeFunction (Thread *thread, classid_t cid)
 
static const FunctionTypedListSetNativeFunction (Thread *thread, classid_t cid)
 
static classid_t TypedDataCidUnboxed (Representation unboxed_representation)
 
static intptr_t chunk_size (intptr_t bytes_left)
 
static classid_t typed_data_cid (intptr_t chunk_size)
 
static classid_t external_typed_data_cid (intptr_t chunk_size)
 
static void SetupUnboxingInfoOfParameter (const Function &function, intptr_t param_index, const UnboxingInfoMetadata *metadata)
 
static void SetupUnboxingInfoOfReturnValue (const Function &function, const UnboxingInfoMetadata *metadata)
 
static CompileType ParameterType (LocalVariable *param, Representation representation=kTagged)
 
static int LowestFirst (const intptr_t *a, const intptr_t *b)
 
static ArrayPtr AsSortedDuplicateFreeArray (GrowableArray< intptr_t > *source)
 
static void CollectKernelLibraryTokenPositions (const TypedDataView &kernel_data, const Script &script, intptr_t kernel_offset, intptr_t data_kernel_offset, Zone *zone, TranslationHelper *helper, GrowableArray< intptr_t > *token_positions)
 
bool IsValidSdkHash (const uint8_t *sdk_hash)
 
FunctionPtr CreateFieldInitializerFunction (Thread *thread, Zone *zone, const Field &field)
 

Variables

const char * kKernelInvalidFilesize
 
const char * kKernelInvalidMagicIdentifier = "Invalid magic identifier"
 
const char * kKernelInvalidBinaryFormatVersion
 
const char * kKernelInvalidSizeIndicated
 
const char * kKernelInvalidSdkHash = "Invalid SDK hash"
 
const int kSdkHashSizeInBytes = 10
 
const char * kSdkHashNull = "0000000000"
 
static const uint32_t kMagicProgramFile = 0x90ABCDEFu
 
static const uint32_t kSupportedKernelFormatVersion = 117
 
static constexpr intptr_t kSpecializedTagHighBits = 0xe0
 
static constexpr intptr_t kSpecializedTagMask = 0xf8
 
static constexpr intptr_t kSpecializedPayloadMask = 0x7
 
static constexpr int SpecializedIntLiteralBias = 3
 
static constexpr int LibraryCountFieldCountFromEnd = 1
 
static constexpr int KernelFormatVersionOffset = 4
 
static constexpr int SourceTableFieldCountFromFirstLibraryOffset = 9
 
static constexpr int HeaderSize = 8
 
static const char *const kVMServiceIOLibraryUri = "dart:vmservice_io"
 

Typedef Documentation

◆ UriToSourceTable

Definition at line 189 of file kernel_loader.cc.

Enumeration Type Documentation

◆ AsExpressionFlags

Enumerator
kAsExpressionFlagTypeError 
kAsExpressionFlagCovarianceCheck 
kAsExpressionFlagForDynamic 
kAsExpressionFlagForLegacy 
kAsExpressionFlagUnchecked 

Definition at line 232 of file kernel_binary.h.

232 {
238};
@ kAsExpressionFlagCovarianceCheck
@ kAsExpressionFlagForDynamic

◆ ConstantTag

Enumerator
kNullConstant 
kBoolConstant 
kIntConstant 
kDoubleConstant 
kStringConstant 
kSymbolConstant 
kMapConstant 
kListConstant 
kSetConstant 
kInstanceConstant 
kInstantiationConstant 
kStaticTearOffConstant 
kTypeLiteralConstant 
kUnevaluatedConstant 
kTypedefTearOffConstant 
kConstructorTearOffConstant 
kRedirectingFactoryTearOffConstant 
kRecordConstant 

Definition at line 191 of file kernel_binary.h.

191 {
192 kNullConstant = 0,
193 kBoolConstant = 1,
194 kIntConstant = 2,
195 kDoubleConstant = 3,
196 kStringConstant = 4,
197 kSymbolConstant = 5,
198 kMapConstant = 6,
199 kListConstant = 7,
200 kSetConstant = 13,
205 // These constants are not expected to be seen by the VM, because all
206 // constants are fully evaluated.
211 kRecordConstant = 17,
212};
@ kConstructorTearOffConstant
@ kRedirectingFactoryTearOffConstant

◆ DynamicInvocationFlags

Enumerator
kDynamicInvocationFlagImplicitCall 

Definition at line 252 of file kernel_binary.h.

252 {
254};
@ kDynamicInvocationFlagImplicitCall

◆ FunctionAccessKind

Enumerator
kFunction 
kFunctionType 
kInapplicable 
kNullable 

Definition at line 272 of file kernel_binary.h.

◆ InstanceInvocationFlags

Enumerator
kInstanceInvocationFlagInvariant 
kInstanceInvocationFlagBoundsSafe 

Definition at line 246 of file kernel_binary.h.

246 {
249};
@ kInstanceInvocationFlagBoundsSafe
@ kInstanceInvocationFlagInvariant

◆ IsExpressionFlags

Enumerator
kIsExpressionFlagForLegacy 

Definition at line 241 of file kernel_binary.h.

241 {
243};

◆ KernelNullability

enum class dart::kernel::KernelNullability : int8_t
strong
Enumerator
kUndetermined 
kNullable 
kNonNullable 
kLegacy 

Definition at line 215 of file kernel_binary.h.

◆ NamedTypeFlags

enum class dart::kernel::NamedTypeFlags : uint8_t
strong
Enumerator
kIsRequired 

Definition at line 267 of file kernel_binary.h.

267 : uint8_t {
268 kIsRequired = 1 << 0,
269};

◆ SwitchDispatch

Enumerator
kSwitchDispatchAuto 
kSwitchDispatchLinearScan 
kSwitchDispatchBinarySearch 
kSwitchDispatchJumpTable 

Definition at line 919 of file kernel_to_il.h.

◆ Tag

Definition at line 184 of file kernel_binary.h.

184 {
185#define DECLARE(Name, value) k##Name = value,
187#undef DECLARE
188};
#define DECLARE(Name, value)
#define KERNEL_TAG_LIST(V)

◆ ThrowFlags

Enumerator
kThrowForErrorHandling 

Definition at line 257 of file kernel_binary.h.

257 {
258 kThrowForErrorHandling = 1 << 0,
259};

◆ TypeChecksToBuild

Enumerator
kCheckAllTypeParameterBounds 
kCheckNonCovariantTypeParameterBounds 
kCheckCovariantTypeParameterBounds 

Definition at line 39 of file kernel_to_il.h.

◆ UncheckedEntryPointStyle

Enumerator
kNone 
kSeparate 
kSharedWithVariable 

Definition at line 137 of file base_flow_graph_builder.h.

◆ Variance

Enumerator
kUnrelated 
kCovariant 
kContravariant 
kInvariant 
kLegacyCovariant 

Definition at line 223 of file kernel_binary.h.

223 {
224 kUnrelated = 0,
225 kCovariant = 1,
226 kContravariant = 2,
227 kInvariant = 3,
229};

◆ YieldStatementFlags

Enumerator
kYieldStatementFlagYieldStar 

Definition at line 262 of file kernel_binary.h.

262 {
264};
@ kYieldStatementFlagYieldStar

Function Documentation

◆ AsSortedDuplicateFreeArray()

static ArrayPtr dart::kernel::AsSortedDuplicateFreeArray ( GrowableArray< intptr_t > *  source)
static

If index exists as sublist in list, sort the sublist from lowest to highest, then copy it, as Smis and without duplicates, to a new Array in Heap::kOld which is returned. Note that the source list is both sorted and de-duplicated as well, but will possibly contain duplicate and unsorted data at the end. Otherwise (when sublist doesn't exist in list) return new empty array.

Definition at line 177 of file kernel.cc.

177 {
178 intptr_t size = source->length();
179 if (size == 0) {
180 return Object::empty_array().ptr();
181 }
182
183 source->Sort(LowestFirst);
184
185 intptr_t last = 0;
186 for (intptr_t current = 1; current < size; ++current) {
187 if (source->At(last) != source->At(current)) {
188 (*source)[++last] = source->At(current);
189 }
190 }
191 Array& array_object = Array::Handle();
192 array_object = Array::New(last + 1, Heap::kOld);
193 Smi& smi_value = Smi::Handle();
194 for (intptr_t i = 0; i <= last; ++i) {
195 smi_value = Smi::New(source->At(i));
196 array_object.SetAt(i, smi_value);
197 }
198 return array_object.ptr();
199}
SkBitmap source
Definition examples.cpp:28

◆ CanUnboxElements()

static bool dart::kernel::CanUnboxElements ( classid_t  cid)
static

Definition at line 870 of file kernel_to_il.cc.

870 {
871 switch (RepresentationUtils::RepresentationOfArrayElement(cid)) {
872 case kUnboxedFloat:
873 case kUnboxedDouble:
874 return FlowGraphCompiler::SupportsUnboxedDoubles();
875 case kUnboxedInt32x4:
876 case kUnboxedFloat32x4:
877 case kUnboxedFloat64x2:
878 return FlowGraphCompiler::SupportsUnboxedSimd128();
879 default:
880 return true;
881 }
882}

◆ chunk_size()

static intptr_t dart::kernel::chunk_size ( intptr_t  bytes_left)
static

Definition at line 4852 of file kernel_to_il.cc.

4852 {
4853 ASSERT(bytes_left >= 1);
4854 if (bytes_left >= 8 && compiler::target::kWordSize == 8) {
4855 return 8;
4856 }
4857 if (bytes_left >= 4) {
4858 return 4;
4859 }
4860 if (bytes_left >= 2) {
4861 return 2;
4862 }
4863 return 1;
4864}
#define ASSERT(E)

◆ CollectKernelLibraryTokenPositions()

static void dart::kernel::CollectKernelLibraryTokenPositions ( const TypedDataView kernel_data,
const Script script,
intptr_t  kernel_offset,
intptr_t  data_kernel_offset,
Zone zone,
TranslationHelper helper,
GrowableArray< intptr_t > *  token_positions 
)
static

Definition at line 201 of file kernel.cc.

208 {
209 if (kernel_data.IsNull()) {
210 return;
211 }
212
213 KernelTokenPositionCollector token_position_collector(
214 zone, helper, script, kernel_data, data_kernel_offset,
215 script.kernel_script_index(), script.kernel_script_index(),
216 token_positions);
217
218 token_position_collector.CollectTokenPositions(kernel_offset);
219}
bool IsNull() const
Definition object.h:363

◆ CreateFieldInitializerFunction()

FunctionPtr dart::kernel::CreateFieldInitializerFunction ( Thread thread,
Zone zone,
const Field field 
)

Definition at line 2344 of file kernel_loader.cc.

2346 {
2347 ASSERT(field.InitializerFunction() == Function::null());
2348
2349 String& init_name = String::Handle(zone, field.name());
2350 init_name = Symbols::FromConcat(thread, Symbols::InitPrefix(), init_name);
2351
2352 // Static field initializers are not added as members of their owning class,
2353 // so they must be preemptively given a patch class to avoid the meaning of
2354 // their kernel/token position changing during a reload. Compare
2355 // Class::PatchFieldsAndFunctions().
2356 // This might also be necessary for lazy computation of local var descriptors.
2357 // Compare https://codereview.chromium.org//1317753004
2358 const Script& script = Script::Handle(zone, field.Script());
2359 const Class& field_owner = Class::Handle(zone, field.Owner());
2360 const auto& kernel_program_info =
2361 KernelProgramInfo::Handle(zone, field.KernelProgramInfo());
2362 const PatchClass& initializer_owner = PatchClass::Handle(
2363 zone, PatchClass::New(field_owner, kernel_program_info, script));
2364 const Library& lib = Library::Handle(zone, field_owner.library());
2365 initializer_owner.set_kernel_library_index(lib.kernel_library_index());
2366
2367 // Create a static initializer.
2368 FunctionType& signature = FunctionType::Handle(zone, FunctionType::New());
2369 const Function& initializer_fun = Function::Handle(
2370 zone,
2371 Function::New(signature, init_name, UntaggedFunction::kFieldInitializer,
2372 field.is_static(), // is_static
2373 false, // is_const
2374 false, // is_abstract
2375 false, // is_external
2376 false, // is_native
2377 initializer_owner, TokenPosition::kNoSource));
2378 if (!field.is_static()) {
2379 signature.set_num_fixed_parameters(1);
2380 signature.set_parameter_types(
2381 Array::Handle(zone, Array::New(1, Heap::kOld)));
2382 signature.SetParameterTypeAt(
2383 0, AbstractType::Handle(zone, field_owner.DeclarationType()));
2384 initializer_fun.CreateNameArray();
2385 initializer_fun.SetParameterNameAt(0, Symbols::This());
2386 }
2387 signature.set_result_type(AbstractType::Handle(zone, field.type()));
2388 initializer_fun.set_is_reflectable(false);
2389 initializer_fun.set_is_inlinable(false);
2390 initializer_fun.set_token_pos(field.token_pos());
2391 initializer_fun.set_end_token_pos(field.end_token_pos());
2392 initializer_fun.set_accessor_field(field);
2393 initializer_fun.InheritKernelOffsetFrom(field);
2394 initializer_fun.set_is_extension_member(field.is_extension_member());
2395 initializer_fun.set_is_extension_type_member(
2396 field.is_extension_type_member());
2397
2398 signature ^= ClassFinalizer::FinalizeType(signature);
2399 initializer_fun.SetSignature(signature);
2400
2401 field.SetInitializerFunction(initializer_fun);
2402 return initializer_fun.ptr();
2403}
LibraryPtr library() const
Definition object.h:1335
TypePtr DeclarationType() const
Definition object.cc:5882
FunctionPtr InitializerFunction() const
Definition object.h:4777
ClassPtr Owner() const
Definition object.cc:11911
ScriptPtr Script() const
Definition object.cc:11922
void SetInitializerFunction(const Function &initializer) const
Definition object.cc:12369
bool is_static() const
Definition object.h:4418
bool is_extension_member() const
Definition object.h:4423
StringPtr name() const
Definition object.h:4408
AbstractTypePtr type() const
Definition object.h:4523
bool is_extension_type_member() const
Definition object.h:4426
TokenPosition end_token_pos() const
Definition object.h:4563
TokenPosition token_pos() const
Definition object.h:4562
KernelProgramInfoPtr KernelProgramInfo() const
Definition object.cc:11936
void set_result_type(const AbstractType &value) const
Definition object.cc:8633
void SetParameterTypeAt(intptr_t index, const AbstractType &value) const
Definition object.cc:8648
void set_num_fixed_parameters(intptr_t value) const
Definition object.cc:11659
void set_parameter_types(const Array &value) const
Definition object.cc:8655
void set_accessor_field(const Field &value) const
Definition object.cc:8215
void set_end_token_pos(TokenPosition value) const
Definition object.h:3442
void InheritKernelOffsetFrom(const Function &src) const
Definition object.cc:10909
void CreateNameArray(Heap::Space space=Heap::kOld) const
Definition object.cc:8735
void set_token_pos(TokenPosition value) const
Definition object.cc:8959
void SetParameterNameAt(intptr_t index, const String &value) const
Definition object.cc:8681
void SetSignature(const FunctionType &value) const
Definition object.cc:8604
intptr_t kernel_library_index() const
Definition object.h:5280
ObjectPtr ptr() const
Definition object.h:332
void set_kernel_library_index(intptr_t index) const
Definition object.h:2260

◆ external_typed_data_cid()

static classid_t dart::kernel::external_typed_data_cid ( intptr_t  chunk_size)
static

Definition at line 4883 of file kernel_to_il.cc.

4883 {
4884 switch (chunk_size) {
4885 case 8:
4886 return kExternalTypedDataInt64ArrayCid;
4887 case 4:
4888 return kExternalTypedDataInt32ArrayCid;
4889 case 2:
4890 return kExternalTypedDataInt16ArrayCid;
4891 case 1:
4892 return kExternalTypedDataInt8ArrayCid;
4893 }
4894 UNREACHABLE();
4895}
#define UNREACHABLE()
Definition assert.h:248

◆ GetNoSuchMethodOrDie()

static Function & dart::kernel::GetNoSuchMethodOrDie ( Thread thread,
Zone zone,
const Class klass 
)
static

Definition at line 2477 of file kernel_binary_flowgraph.cc.

2479 {
2480 Function& nsm_function = Function::Handle(zone);
2481 Class& iterate_klass = Class::Handle(zone, klass.ptr());
2482 if (!iterate_klass.IsNull() &&
2483 iterate_klass.EnsureIsFinalized(thread) == Error::null()) {
2484 while (!iterate_klass.IsNull()) {
2485 nsm_function = Resolver::ResolveDynamicFunction(zone, iterate_klass,
2486 Symbols::NoSuchMethod());
2487 if (!nsm_function.IsNull() && nsm_function.NumParameters() == 2 &&
2488 nsm_function.NumTypeParameters() == 0) {
2489 break;
2490 }
2491 iterate_klass = iterate_klass.SuperClass();
2492 }
2493 }
2494 // We are guaranteed to find noSuchMethod of class Object.
2495 ASSERT(!nsm_function.IsNull());
2496
2497 return nsm_function;
2498}
ErrorPtr EnsureIsFinalized(Thread *thread) const
Definition object.cc:4979
ClassPtr SuperClass(ClassTable *class_table=nullptr) const
Definition object.cc:3715
intptr_t NumTypeParameters() const
Definition object.cc:8905
intptr_t NumParameters() const
Definition object.cc:8935

◆ IsValidSdkHash()

bool dart::kernel::IsValidSdkHash ( const uint8_t *  sdk_hash)

Definition at line 79 of file kernel_binary.cc.

79 {
80 if (memcmp(Version::SdkHash(), kSdkHashNull, kSdkHashSizeInBytes) != 0 &&
81 memcmp(sdk_hash, kSdkHashNull, kSdkHashSizeInBytes) != 0 &&
82 memcmp(sdk_hash, Version::SdkHash(), kSdkHashSizeInBytes) != 0) {
83 return false;
84 }
85 return true;
86}

◆ LowestFirst()

static int dart::kernel::LowestFirst ( const intptr_t *  a,
const intptr_t *  b 
)
static

Definition at line 165 of file kernel.cc.

165 {
166 return *a - *b;
167}
static bool b
struct MyStruct a[10]

◆ operator+()

Fragment dart::kernel::operator+ ( const Fragment first,
const Fragment second 
)

Definition at line 76 of file base_flow_graph_builder.cc.

76 {
77 Fragment result = first;
78 result += second;
79 return result;
80}
GAsyncResult * result

◆ operator<<()

Fragment dart::kernel::operator<< ( const Fragment fragment,
Instruction next 
)

Definition at line 82 of file base_flow_graph_builder.cc.

82 {
83 Fragment result = fragment;
84 result <<= next;
85 return result;
86}
static float next(float f)

◆ ParameterType()

static CompileType dart::kernel::ParameterType ( LocalVariable param,
Representation  representation = kTagged 
)
static

Definition at line 25 of file prologue_builder.cc.

26 {
27 return param->was_type_checked_by_caller()
28 ? CompileType::FromAbstractType(param->static_type(),
29 representation == kTagged,
30 CompileType::kCannotBeSentinel)
31 : ((representation == kTagged)
32 ? CompileType::Dynamic()
33 : CompileType::Dynamic().CopyNonNullable());
34}
const AbstractType & static_type() const
Definition scopes.h:134
bool was_type_checked_by_caller() const
Definition scopes.h:194

◆ ReportIfNotNull()

static void dart::kernel::ReportIfNotNull ( const char *  error)
static

Definition at line 6042 of file kernel_binary_flowgraph.cc.

6042 {
6043 if (error != nullptr) {
6044 const auto& language_error = Error::Handle(
6045 LanguageError::New(String::Handle(String::New(error, Heap::kOld)),
6046 Report::kError, Heap::kOld));
6047 Report::LongJump(language_error);
6048 }
6049}
const uint8_t uint32_t uint32_t GError ** error

◆ SetupUnboxingInfoOfParameter()

static void dart::kernel::SetupUnboxingInfoOfParameter ( const Function function,
intptr_t  param_index,
const UnboxingInfoMetadata metadata 
)
static

Definition at line 3843 of file kernel_translation_helper.cc.

3845 {
3846 const intptr_t param_pos =
3847 param_index + (function.HasThisParameter() ? 1 : 0);
3848
3849 if (param_pos < function.maximum_unboxed_parameter_count()) {
3850 switch (metadata->unboxed_args_info[param_index].kind) {
3851 case UnboxingInfoMetadata::kInt:
3852 function.set_unboxed_integer_parameter_at(param_pos);
3853 break;
3854 case UnboxingInfoMetadata::kDouble:
3855 if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
3856 function.set_unboxed_double_parameter_at(param_pos);
3857 }
3858 break;
3859 case UnboxingInfoMetadata::kRecord:
3860 UNREACHABLE();
3861 break;
3862 case UnboxingInfoMetadata::kUnknown:
3863 UNREACHABLE();
3864 break;
3865 case UnboxingInfoMetadata::kBoxed:
3866 break;
3867 }
3868 }
3869}
GrowableArray< UnboxingType > unboxed_args_info
Dart_NativeFunction function
Definition fuchsia.cc:51

◆ SetupUnboxingInfoOfReturnValue()

static void dart::kernel::SetupUnboxingInfoOfReturnValue ( const Function function,
const UnboxingInfoMetadata metadata 
)
static

Definition at line 3871 of file kernel_translation_helper.cc.

3873 {
3874 switch (metadata->return_info.kind) {
3875 case UnboxingInfoMetadata::kInt:
3876 function.set_unboxed_integer_return();
3877 break;
3878 case UnboxingInfoMetadata::kDouble:
3879 if (FlowGraphCompiler::SupportsUnboxedDoubles()) {
3880 function.set_unboxed_double_return();
3881 }
3882 break;
3883 case UnboxingInfoMetadata::kRecord:
3884 function.set_unboxed_record_return();
3885 break;
3886 case UnboxingInfoMetadata::kUnknown:
3887 UNREACHABLE();
3888 break;
3889 case UnboxingInfoMetadata::kBoxed:
3890 break;
3891 }
3892}

◆ SupportsCoverage()

static bool dart::kernel::SupportsCoverage ( )
static

Definition at line 24 of file base_flow_graph_builder.cc.

24 {
25#if defined(PRODUCT)
26 return false;
27#else
28 return !CompilerState::Current().is_aot();
29#endif
30}

◆ typed_data_cid()

static classid_t dart::kernel::typed_data_cid ( intptr_t  chunk_size)
static

Definition at line 4866 of file kernel_to_il.cc.

4866 {
4867 switch (chunk_size) {
4868 case 8:
4869 return kTypedDataInt64ArrayCid;
4870 case 4:
4871 return kTypedDataInt32ArrayCid;
4872 case 2:
4873 return kTypedDataInt16ArrayCid;
4874 case 1:
4875 return kTypedDataInt8ArrayCid;
4876 }
4877 UNREACHABLE();
4878}

◆ TypedDataCidUnboxed()

static classid_t dart::kernel::TypedDataCidUnboxed ( Representation  unboxed_representation)
static

Definition at line 4542 of file kernel_to_il.cc.

4542 {
4543 switch (unboxed_representation) {
4544 case kUnboxedFloat:
4545 // Note kTypedDataFloat32ArrayCid loads kUnboxedDouble.
4546 UNREACHABLE();
4547 return kTypedDataFloat32ArrayCid;
4548 case kUnboxedInt32:
4549 return kTypedDataInt32ArrayCid;
4550 case kUnboxedUint32:
4551 return kTypedDataUint32ArrayCid;
4552 case kUnboxedInt64:
4553 return kTypedDataInt64ArrayCid;
4554 case kUnboxedDouble:
4555 return kTypedDataFloat64ArrayCid;
4556 default:
4557 UNREACHABLE();
4558 }
4559 UNREACHABLE();
4560}

◆ TypedListGetNativeFunction()

const Function & dart::kernel::TypedListGetNativeFunction ( Thread thread,
classid_t  cid 
)

Definition at line 884 of file kernel_to_il.cc.

884 {
885 auto& state = thread->compiler_state();
886 switch (RepresentationUtils::RepresentationOfArrayElement(cid)) {
887 case kUnboxedFloat:
888 return state.TypedListGetFloat32();
889 case kUnboxedDouble:
890 return state.TypedListGetFloat64();
891 case kUnboxedInt32x4:
892 return state.TypedListGetInt32x4();
893 case kUnboxedFloat32x4:
894 return state.TypedListGetFloat32x4();
895 case kUnboxedFloat64x2:
896 return state.TypedListGetFloat64x2();
897 default:
898 UNREACHABLE();
899 return Object::null_function();
900 }
901}
const Function & TypedListGetFloat32()
CompilerState & compiler_state()
Definition thread.h:583
AtkStateType state

◆ TypedListSetNativeFunction()

static const Function & dart::kernel::TypedListSetNativeFunction ( Thread thread,
classid_t  cid 
)
static

Definition at line 2093 of file kernel_to_il.cc.

2094 {
2095 auto& state = thread->compiler_state();
2096 switch (RepresentationUtils::RepresentationOfArrayElement(cid)) {
2097 case kUnboxedFloat:
2098 return state.TypedListSetFloat32();
2099 case kUnboxedDouble:
2100 return state.TypedListSetFloat64();
2101 case kUnboxedInt32x4:
2102 return state.TypedListSetInt32x4();
2103 case kUnboxedFloat32x4:
2104 return state.TypedListSetFloat32x4();
2105 case kUnboxedFloat64x2:
2106 return state.TypedListSetFloat64x2();
2107 default:
2108 UNREACHABLE();
2109 return Object::null_function();
2110 }
2111}
const Function & TypedListSetFloat32()

Variable Documentation

◆ HeaderSize

constexpr int dart::kernel::HeaderSize = 8
staticconstexpr

Definition at line 284 of file kernel_binary.h.

◆ KernelFormatVersionOffset

constexpr int dart::kernel::KernelFormatVersionOffset = 4
staticconstexpr

Definition at line 281 of file kernel_binary.h.

◆ kKernelInvalidBinaryFormatVersion

const char* dart::kernel::kKernelInvalidBinaryFormatVersion
Initial value:
=
"Invalid kernel binary format version"

Definition at line 70 of file kernel_binary.cc.

◆ kKernelInvalidFilesize

const char* dart::kernel::kKernelInvalidFilesize
Initial value:
=
"File size is too small to be a valid kernel file"

Definition at line 67 of file kernel_binary.cc.

◆ kKernelInvalidMagicIdentifier

const char* dart::kernel::kKernelInvalidMagicIdentifier = "Invalid magic identifier"

Definition at line 69 of file kernel_binary.cc.

◆ kKernelInvalidSdkHash

const char* dart::kernel::kKernelInvalidSdkHash = "Invalid SDK hash"

Definition at line 74 of file kernel_binary.cc.

◆ kKernelInvalidSizeIndicated

const char* dart::kernel::kKernelInvalidSizeIndicated
Initial value:
=
"Invalid kernel binary: Indicated size is invalid"

Definition at line 72 of file kernel_binary.cc.

◆ kMagicProgramFile

const uint32_t dart::kernel::kMagicProgramFile = 0x90ABCDEFu
static

Definition at line 20 of file kernel_binary.h.

◆ kSdkHashNull

const char* dart::kernel::kSdkHashNull = "0000000000"

Definition at line 77 of file kernel_binary.cc.

◆ kSdkHashSizeInBytes

const int dart::kernel::kSdkHashSizeInBytes = 10

Definition at line 76 of file kernel_binary.cc.

◆ kSpecializedPayloadMask

constexpr intptr_t dart::kernel::kSpecializedPayloadMask = 0x7
staticconstexpr

Definition at line 182 of file kernel_binary.h.

◆ kSpecializedTagHighBits

constexpr intptr_t dart::kernel::kSpecializedTagHighBits = 0xe0
staticconstexpr

Definition at line 180 of file kernel_binary.h.

◆ kSpecializedTagMask

constexpr intptr_t dart::kernel::kSpecializedTagMask = 0xf8
staticconstexpr

Definition at line 181 of file kernel_binary.h.

◆ kSupportedKernelFormatVersion

const uint32_t dart::kernel::kSupportedKernelFormatVersion = 117
static

Definition at line 21 of file kernel_binary.h.

◆ kVMServiceIOLibraryUri

const char* const dart::kernel::kVMServiceIOLibraryUri = "dart:vmservice_io"
static

Definition at line 37 of file kernel_loader.cc.

◆ LibraryCountFieldCountFromEnd

constexpr int dart::kernel::LibraryCountFieldCountFromEnd = 1
staticconstexpr

Definition at line 280 of file kernel_binary.h.

◆ SourceTableFieldCountFromFirstLibraryOffset

constexpr int dart::kernel::SourceTableFieldCountFromFirstLibraryOffset = 9
staticconstexpr

Definition at line 282 of file kernel_binary.h.

◆ SpecializedIntLiteralBias

constexpr int dart::kernel::SpecializedIntLiteralBias = 3
staticconstexpr

Definition at line 279 of file kernel_binary.h.