Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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  KernelLineStartsReader
 
class  KernelLoader
 
class  KernelReaderHelper
 
class  KernelSourceFingerprintHelper
 
class  KernelTokenPositionCollector
 
class  LibraryDependencyHelper
 
class  LibraryHelper
 
class  LibraryIndex
 
class  LoadingUnitsMetadataHelper
 
class  Mapping
 
class  MetadataEvaluator
 
class  MetadataHelper
 
class  NameIndex
 
class  ObfuscationProhibitionsMetadataHelper
 
class  ParameterDescriptorBuilder
 
class  PositionScope
 
struct  ProcedureAttributesMetadata
 
class  ProcedureAttributesMetadataHelper
 
class  ProcedureHelper
 
class  Program
 
class  ProgramState
 
class  PrologueBuilder
 
class  Reader
 
class  ScopeBuilder
 
class  ScopeBuildingResult
 
class  SimpleExpressionConverter
 
class  StreamingFlowGraphBuilder
 
class  StringIndex
 
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  LogicalOperator { kAnd , kOr }
 
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 , kAsExpressionFlagUnchecked = 1 << 3 }
 
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)
 
ObjectPtr EvaluateStaticConstFieldInitializer (const Field &field)
 
ObjectPtr EvaluateMetadata (const Library &library, intptr_t kernel_offset, bool is_annotations_offset)
 
ObjectPtr BuildParameterDescriptor (const Function &function)
 
void ReadParameterCovariance (const Function &function, BitVector *is_covariant, BitVector *is_generic_covariant_impl)
 
bool NeedsDynamicInvocationForwarder (const Function &function)
 
static ProcedureAttributesMetadata ProcedureAttributesOf (Zone *zone, const KernelProgramInfo &kernel_program_info, const TypedDataView &kernel_data, intptr_t kernel_data_program_offset, intptr_t kernel_offset)
 
ProcedureAttributesMetadata ProcedureAttributesOf (const Function &function, Zone *zone)
 
ProcedureAttributesMetadata ProcedureAttributesOf (const Field &field, Zone *zone)
 
static UnboxingInfoMetadataUnboxingInfoMetadataOf (Zone *zone, const KernelProgramInfo &kernel_program_info, const TypedDataView &kernel_data, intptr_t kernel_data_program_offset, intptr_t kernel_offset)
 
UnboxingInfoMetadataUnboxingInfoMetadataOf (const Function &function, Zone *zone)
 
TableSelectorMetadataTableSelectorMetadataForProgram (const KernelProgramInfo &info, Zone *zone)
 
bool IsValidSdkHash (const uint8_t *sdk_hash)
 
static bool IsMainOrDevChannel ()
 
static void EnableExperimentSharedData (bool value)
 
 DEFINE_FLAG_HANDLER (EnableExperimentSharedData, experimental_shared_data, "Enable experiment to share data between isolates.")
 
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 = 119
 
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"
 
static bool is_experimental_shared_data_enabled = false
 

Typedef Documentation

◆ UriToSourceTable

Definition at line 208 of file kernel_loader.cc.

Enumeration Type Documentation

◆ AsExpressionFlags

Enumerator
kAsExpressionFlagTypeError 
kAsExpressionFlagCovarianceCheck 
kAsExpressionFlagForDynamic 
kAsExpressionFlagUnchecked 

Definition at line 232 of file kernel_binary.h.

232 {
237};
@ kAsExpressionFlagUnchecked
@ kAsExpressionFlagCovarianceCheck
@ kAsExpressionFlagForDynamic
@ kAsExpressionFlagTypeError

◆ 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 246 of file kernel_binary.h.

246 {
248};
@ kDynamicInvocationFlagImplicitCall

◆ FunctionAccessKind

Enumerator
kFunction 
kFunctionType 
kInapplicable 
kNullable 

Definition at line 266 of file kernel_binary.h.

◆ InstanceInvocationFlags

Enumerator
kInstanceInvocationFlagInvariant 
kInstanceInvocationFlagBoundsSafe 

Definition at line 240 of file kernel_binary.h.

240 {
243};
@ kInstanceInvocationFlagBoundsSafe
@ kInstanceInvocationFlagInvariant

◆ KernelNullability

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

Definition at line 215 of file kernel_binary.h.

◆ LogicalOperator

Enumerator
kAnd 
kOr 

Definition at line 60 of file kernel.h.

60{ kAnd, kOr };

◆ NamedTypeFlags

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

Definition at line 261 of file kernel_binary.h.

261 : uint8_t {
262 kIsRequired = 1 << 0,
263};

◆ 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)
Definition: kernel_binary.h:24

◆ ThrowFlags

Enumerator
kThrowForErrorHandling 

Definition at line 251 of file kernel_binary.h.

251 {
252 kThrowForErrorHandling = 1 << 0,
253};

◆ 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 256 of file kernel_binary.h.

256 {
258};
@ 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
static int LowestFirst(const intptr_t *a, const intptr_t *b)
Definition: kernel.cc:165
@ kOld
Definition: heap_test.cc:892
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259

◆ BuildParameterDescriptor()

ObjectPtr dart::kernel::BuildParameterDescriptor ( const Function function)

Definition at line 573 of file kernel.cc.

573 {
574 LongJumpScope jump;
575 if (setjmp(*jump.Set()) == 0) {
576 Thread* thread = Thread::Current();
577 Zone* zone = thread->zone();
578
579 const auto& kernel_info =
580 KernelProgramInfo::Handle(zone, function.KernelProgramInfo());
581
582 TranslationHelper helper(thread);
583 helper.InitFromKernelProgramInfo(kernel_info);
584
585 const Class& owner_class = Class::Handle(zone, function.Owner());
586 ActiveClass active_class;
587 ActiveClassScope active_class_scope(&active_class, &owner_class);
588
590 &helper, zone, TypedDataView::Handle(zone, function.KernelLibrary()),
591 function.KernelLibraryOffset(), &active_class);
592
593 return builder.BuildParameterDescriptor(function);
594 } else {
595 return Thread::Current()->StealStickyError();
596 }
597}
jmp_buf * Set()
Definition: longjump.cc:16
Zone * zone() const
Definition: thread_state.h:37
Dart_NativeFunction function
Definition: fuchsia.cc:51

◆ 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 kUnboxedInt32x4:
873 case kUnboxedFloat32x4:
874 case kUnboxedFloat64x2:
875 return FlowGraphCompiler::SupportsUnboxedSimd128();
876 default:
877 return true;
878 }
879}
const intptr_t cid

◆ chunk_size()

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

Definition at line 4818 of file kernel_to_il.cc.

4818 {
4819 ASSERT(bytes_left >= 1);
4820 if (bytes_left >= 8 && compiler::target::kWordSize == 8) {
4821 return 8;
4822 }
4823 if (bytes_left >= 4) {
4824 return 4;
4825 }
4826 if (bytes_left >= 2) {
4827 return 2;
4828 }
4829 return 1;
4830}
#define ASSERT(E)
constexpr intptr_t kWordSize
Definition: globals.h:509

◆ 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 2383 of file kernel_loader.cc.

2385 {
2386 ASSERT(field.InitializerFunction() == Function::null());
2387
2388 String& init_name = String::Handle(zone, field.name());
2389 init_name = Symbols::FromConcat(thread, Symbols::InitPrefix(), init_name);
2390
2391 // Static field initializers are not added as members of their owning class,
2392 // so they must be preemptively given a patch class to avoid the meaning of
2393 // their kernel/token position changing during a reload. Compare
2394 // Class::PatchFieldsAndFunctions().
2395 // This might also be necessary for lazy computation of local var descriptors.
2396 // Compare https://codereview.chromium.org//1317753004
2397 const Script& script = Script::Handle(zone, field.Script());
2398 const Class& field_owner = Class::Handle(zone, field.Owner());
2399 const auto& kernel_program_info =
2400 KernelProgramInfo::Handle(zone, field.KernelProgramInfo());
2401 const PatchClass& initializer_owner = PatchClass::Handle(
2402 zone, PatchClass::New(field_owner, kernel_program_info, script));
2403 const Library& lib = Library::Handle(zone, field_owner.library());
2404 initializer_owner.set_kernel_library_index(lib.kernel_library_index());
2405
2406 // Create a static initializer.
2407 FunctionType& signature = FunctionType::Handle(zone, FunctionType::New());
2408 const Function& initializer_fun = Function::Handle(
2409 zone,
2410 Function::New(signature, init_name, UntaggedFunction::kFieldInitializer,
2411 field.is_static(), // is_static
2412 false, // is_const
2413 false, // is_abstract
2414 false, // is_external
2415 false, // is_native
2416 initializer_owner, TokenPosition::kNoSource));
2417 if (!field.is_static()) {
2418 signature.set_num_fixed_parameters(1);
2419 signature.set_parameter_types(
2420 Array::Handle(zone, Array::New(1, Heap::kOld)));
2421 signature.SetParameterTypeAt(
2422 0, AbstractType::Handle(zone, field_owner.DeclarationType()));
2423 initializer_fun.CreateNameArray();
2424 initializer_fun.SetParameterNameAt(0, Symbols::This());
2425 }
2426 signature.set_result_type(AbstractType::Handle(zone, field.type()));
2427 initializer_fun.set_is_reflectable(false);
2428 initializer_fun.set_is_inlinable(false);
2429 initializer_fun.set_token_pos(field.token_pos());
2430 initializer_fun.set_end_token_pos(field.end_token_pos());
2431 initializer_fun.set_accessor_field(field);
2432 initializer_fun.InheritKernelOffsetFrom(field);
2433 initializer_fun.set_is_extension_member(field.is_extension_member());
2434 initializer_fun.set_is_extension_type_member(
2435 field.is_extension_type_member());
2436
2437 signature ^= ClassFinalizer::FinalizeType(signature);
2438 initializer_fun.SetSignature(signature);
2439
2440 field.SetInitializerFunction(initializer_fun);
2441 return initializer_fun.ptr();
2442}
LibraryPtr library() const
Definition: object.h:1333
TypePtr DeclarationType() const
Definition: object.cc:5827
FunctionPtr InitializerFunction() const
Definition: object.h:4804
ClassPtr Owner() const
Definition: object.cc:11860
ScriptPtr Script() const
Definition: object.cc:11871
void SetInitializerFunction(const Function &initializer) const
Definition: object.cc:12319
bool is_static() const
Definition: object.h:4440
bool is_extension_member() const
Definition: object.h:4445
StringPtr name() const
Definition: object.h:4430
AbstractTypePtr type() const
Definition: object.h:4550
bool is_extension_type_member() const
Definition: object.h:4448
TokenPosition end_token_pos() const
Definition: object.h:4590
TokenPosition token_pos() const
Definition: object.h:4589
KernelProgramInfoPtr KernelProgramInfo() const
Definition: object.cc:11885
void set_result_type(const AbstractType &value) const
Definition: object.cc:8575
void SetParameterTypeAt(intptr_t index, const AbstractType &value) const
Definition: object.cc:8590
void set_num_fixed_parameters(intptr_t value) const
Definition: object.cc:11608
void set_parameter_types(const Array &value) const
Definition: object.cc:8597
void set_accessor_field(const Field &value) const
Definition: object.cc:8157
void set_end_token_pos(TokenPosition value) const
Definition: object.h:3462
void InheritKernelOffsetFrom(const Function &src) const
Definition: object.cc:10851
void CreateNameArray(Heap::Space space=Heap::kOld) const
Definition: object.cc:8677
void set_token_pos(TokenPosition value) const
Definition: object.cc:8901
void SetParameterNameAt(intptr_t index, const String &value) const
Definition: object.cc:8623
void SetSignature(const FunctionType &value) const
Definition: object.cc:8546
intptr_t kernel_library_index() const
Definition: object.h:5309
ObjectPtr ptr() const
Definition: object.h:332
void set_kernel_library_index(intptr_t index) const
Definition: object.h:2280

◆ DEFINE_FLAG_HANDLER()

dart::kernel::DEFINE_FLAG_HANDLER ( EnableExperimentSharedData  ,
experimental_shared_data  ,
"Enable experiment to share data between isolates."   
)

◆ EnableExperimentSharedData()

static void dart::kernel::EnableExperimentSharedData ( bool  value)
static

Definition at line 45 of file kernel_loader.cc.

45 {
46 if (value && !IsMainOrDevChannel()) {
47 FATAL(
48 "Shared memory multithreading in only available for "
49 "experimentation in dev or main");
50 }
52}
#define FATAL(error)
uint8_t value
static bool IsMainOrDevChannel()
static bool is_experimental_shared_data_enabled

◆ EvaluateMetadata()

ObjectPtr dart::kernel::EvaluateMetadata ( const Library library,
intptr_t  kernel_offset,
bool  is_annotations_offset 
)

Definition at line 467 of file kernel.cc.

469 {
470 LongJumpScope jump;
471 if (setjmp(*jump.Set()) == 0) {
472 Thread* thread = Thread::Current();
473 Zone* zone = thread->zone();
474 TranslationHelper helper(thread);
475 const auto& kernel_info =
476 KernelProgramInfo::Handle(zone, library.kernel_program_info());
477 helper.InitFromKernelProgramInfo(kernel_info);
478
479 const Class& owner_class = Class::Handle(zone, library.toplevel_class());
480 ActiveClass active_class;
481 ActiveClassScope active_class_scope(&active_class, &owner_class);
482
483 MetadataEvaluator metadata_evaluator(
484 zone, &helper, TypedDataView::Handle(zone, library.KernelLibrary()),
485 library.KernelLibraryOffset(), &active_class);
486
487 return metadata_evaluator.EvaluateMetadata(kernel_offset,
488 is_annotations_offset);
489
490 } else {
491 return Thread::Current()->StealStickyError();
492 }
493}
TypedDataViewPtr KernelLibrary() const
Definition: object.cc:13601
ClassPtr toplevel_class() const
Definition: object.h:5208
intptr_t KernelLibraryOffset() const
Definition: object.cc:13606
KernelProgramInfoPtr kernel_program_info() const
Definition: object.h:5301

◆ EvaluateStaticConstFieldInitializer()

ObjectPtr dart::kernel::EvaluateStaticConstFieldInitializer ( const Field field)

Definition at line 381 of file kernel.cc.

381 {
382 ASSERT(field.is_static() && field.is_const());
383
384 LongJumpScope jump;
385 if (setjmp(*jump.Set()) == 0) {
386 Thread* thread = Thread::Current();
387 Zone* zone = thread->zone();
388 TranslationHelper helper(thread);
389 auto& kernel_program_info =
390 KernelProgramInfo::Handle(zone, field.KernelProgramInfo());
391 helper.InitFromKernelProgramInfo(kernel_program_info);
392
393 const Class& owner_class = Class::Handle(zone, field.Owner());
394 ActiveClass active_class;
395 ActiveClassScope active_class_scope(&active_class, &owner_class);
396
397 KernelReaderHelper kernel_reader(
398 zone, &helper, TypedDataView::Handle(zone, field.KernelLibrary()),
399 field.KernelLibraryOffset());
400 kernel_reader.SetOffset(field.kernel_offset());
401 ConstantReader constant_reader(&kernel_reader, &active_class);
402
403 FieldHelper field_helper(&kernel_reader);
404 field_helper.ReadUntilExcluding(FieldHelper::kInitializer);
405 ASSERT(field_helper.IsConst());
406
407 return constant_reader.ReadConstantInitializer();
408 } else {
409 return Thread::Current()->StealStickyError();
410 }
411}
intptr_t kernel_offset() const
Definition: object.h:4495
intptr_t KernelLibraryOffset() const
Definition: object.cc:11912
TypedDataViewPtr KernelLibrary() const
Definition: object.cc:11907
bool is_const() const
Definition: object.h:4443

◆ external_typed_data_cid()

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

Definition at line 4849 of file kernel_to_il.cc.

4849 {
4850 switch (chunk_size) {
4851 case 8:
4852 return kExternalTypedDataInt64ArrayCid;
4853 case 4:
4854 return kExternalTypedDataInt32ArrayCid;
4855 case 2:
4856 return kExternalTypedDataInt16ArrayCid;
4857 case 1:
4858 return kExternalTypedDataInt8ArrayCid;
4859 }
4860 UNREACHABLE();
4861}
#define UNREACHABLE()
Definition: assert.h:248
static intptr_t chunk_size(intptr_t bytes_left)

◆ 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:4924
ClassPtr SuperClass(ClassTable *class_table=nullptr) const
Definition: object.cc:3665
intptr_t NumTypeParameters() const
Definition: object.cc:8847
intptr_t NumParameters() const
Definition: object.cc:8877

◆ IsMainOrDevChannel()

static bool dart::kernel::IsMainOrDevChannel ( )
static

Definition at line 40 of file kernel_loader.cc.

40 {
41 return strstr("|main|dev|", Version::Channel()) != nullptr;
42}

◆ 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}
const int kSdkHashSizeInBytes
const char * kSdkHashNull

◆ 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]

◆ NeedsDynamicInvocationForwarder()

bool dart::kernel::NeedsDynamicInvocationForwarder ( const Function function)

Definition at line 657 of file kernel.cc.

657 {
658 Zone* zone = Thread::Current()->zone();
659
660 // Right now closures do not need a dyn:* forwarder.
661 // See https://github.com/dart-lang/sdk/issues/40813
662 if (function.IsClosureFunction()) return false;
663
664 // Method extractors have no parameters to check and return value is a closure
665 // and therefore not an unboxed primitive type.
666 if (function.IsMethodExtractor()) {
667 return false;
668 }
669
670 // Record field getters have no parameters to check and 'dynamic' return type.
671 if (function.IsRecordFieldGetter()) {
672 return false;
673 }
674
675 // Invoke field dispatchers are dynamically generated, will invoke a getter to
676 // obtain the field value and then invoke ".call()" on the result.
677 // Those dynamically generated dispathers don't have proper kernel metadata
678 // associated with them - we can therefore not query if there are dynamic
679 // calls to them or not and are therefore conservative.
680 if (function.IsInvokeFieldDispatcher()) {
681 return true;
682 }
683
684 // The dyn:* forwarders perform unboxing of parameters before calling the
685 // actual target (which accepts unboxed parameters) and boxes return values
686 // of the return value.
687 if (function.HasUnboxedParameters() || function.HasUnboxedReturnValue()) {
688 return true;
689 }
690
691 if (function.MaxNumberOfParametersInRegisters(zone) > 0) {
692 return true;
693 }
694
695 // There are no parameters to type check for getters and if the return value
696 // is boxed, then the dyn:* forwarder is not needed.
697 if (function.IsImplicitGetterFunction()) {
698 return false;
699 }
700
701 // Covariant parameters (both explicitly covariant and generic-covariant-impl)
702 // are checked in the body of a function and therefore don't need checks in a
703 // dynamic invocation forwarder. So dynamic invocation forwarder is only
704 // needed if there are non-covariant parameters of non-top type.
705 if (function.IsImplicitSetterFunction()) {
706 const auto& field = Field::Handle(zone, function.accessor_field());
707 return !(field.is_covariant() || field.is_generic_covariant_impl());
708 }
709
710 const auto& type_params =
711 TypeParameters::Handle(zone, function.type_parameters());
712 if (!type_params.IsNull()) {
713 auto& bound = AbstractType::Handle(zone);
714 for (intptr_t i = 0, n = type_params.Length(); i < n; ++i) {
715 bound = type_params.BoundAt(i);
716 if (!bound.IsTopTypeForSubtyping() &&
717 !type_params.IsGenericCovariantImplAt(i)) {
718 return true;
719 }
720 }
721 }
722
723 const intptr_t num_params = function.NumParameters();
724 BitVector is_covariant(zone, num_params);
725 BitVector is_generic_covariant_impl(zone, num_params);
726 ReadParameterCovariance(function, &is_covariant, &is_generic_covariant_impl);
727
728 auto& type = AbstractType::Handle(zone);
729 for (intptr_t i = function.NumImplicitParameters(); i < num_params; ++i) {
730 type = function.ParameterTypeAt(i);
731 if (!type.IsTopTypeForSubtyping() &&
732 !is_generic_covariant_impl.Contains(i) && !is_covariant.Contains(i)) {
733 return true;
734 }
735 }
736
737 return false;
738}
GLenum type
void ReadParameterCovariance(const Function &function, BitVector *is_covariant, BitVector *is_generic_covariant_impl)
Definition: kernel.cc:599

◆ 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

◆ ProcedureAttributesOf() [1/3]

ProcedureAttributesMetadata dart::kernel::ProcedureAttributesOf ( const Field field,
Zone zone 
)

Definition at line 768 of file kernel.cc.

769 {
770 const auto& kernel_program_info =
771 KernelProgramInfo::Handle(zone, field.KernelProgramInfo());
773 zone, kernel_program_info,
774 TypedDataView::Handle(zone, field.KernelLibrary()),
775 field.KernelLibraryOffset(), field.kernel_offset());
776}
ProcedureAttributesMetadata ProcedureAttributesOf(const Field &field, Zone *zone)
Definition: kernel.cc:768

◆ ProcedureAttributesOf() [2/3]

ProcedureAttributesMetadata dart::kernel::ProcedureAttributesOf ( const Function function,
Zone zone 
)

Definition at line 758 of file kernel.cc.

759 {
760 const auto& kernel_program_info =
761 KernelProgramInfo::Handle(zone, function.KernelProgramInfo());
763 zone, kernel_program_info,
764 TypedDataView::Handle(zone, function.KernelLibrary()),
765 function.KernelLibraryOffset(), function.kernel_offset());
766}

◆ ProcedureAttributesOf() [3/3]

static ProcedureAttributesMetadata dart::kernel::ProcedureAttributesOf ( Zone zone,
const KernelProgramInfo kernel_program_info,
const TypedDataView kernel_data,
intptr_t  kernel_data_program_offset,
intptr_t  kernel_offset 
)
static

Definition at line 740 of file kernel.cc.

745 {
746 TranslationHelper translation_helper(Thread::Current());
747 translation_helper.InitFromKernelProgramInfo(kernel_program_info);
748 KernelReaderHelper reader_helper(zone, &translation_helper, kernel_data,
749 kernel_data_program_offset);
750 ProcedureAttributesMetadataHelper procedure_attributes_metadata_helper(
751 &reader_helper);
753 procedure_attributes_metadata_helper.GetProcedureAttributes(
754 kernel_offset);
755 return attrs;
756}

◆ ReadParameterCovariance()

void dart::kernel::ReadParameterCovariance ( const Function function,
BitVector is_covariant,
BitVector is_generic_covariant_impl 
)

Definition at line 599 of file kernel.cc.

601 {
602 Thread* thread = Thread::Current();
603 Zone* zone = thread->zone();
604
605 const intptr_t num_params = function.NumParameters();
606 ASSERT(is_covariant->length() == num_params);
607 ASSERT(is_generic_covariant_impl->length() == num_params);
608
609 const auto& kernel_info =
610 KernelProgramInfo::Handle(zone, function.KernelProgramInfo());
611
612 TranslationHelper translation_helper(thread);
613 translation_helper.InitFromKernelProgramInfo(kernel_info);
614
615 KernelReaderHelper reader_helper(
616 zone, &translation_helper,
617 TypedDataView::Handle(zone, function.KernelLibrary()),
618 function.KernelLibraryOffset());
619
620 reader_helper.SetOffset(function.kernel_offset());
621 reader_helper.ReadUntilFunctionNode();
622
623 FunctionNodeHelper function_node_helper(&reader_helper);
624 function_node_helper.ReadUntilExcluding(
625 FunctionNodeHelper::kPositionalParameters);
626
627 // Positional.
628 const intptr_t num_positional_params = reader_helper.ReadListLength();
629 intptr_t param_index = function.NumImplicitParameters();
630 for (intptr_t i = 0; i < num_positional_params; ++i, ++param_index) {
631 VariableDeclarationHelper helper(&reader_helper);
632 helper.ReadUntilExcluding(VariableDeclarationHelper::kEnd);
633
634 if (helper.IsCovariant()) {
635 is_covariant->Add(param_index);
636 }
637 if (helper.IsGenericCovariantImpl()) {
638 is_generic_covariant_impl->Add(param_index);
639 }
640 }
641
642 // Named.
643 const intptr_t num_named_params = reader_helper.ReadListLength();
644 for (intptr_t i = 0; i < num_named_params; ++i, ++param_index) {
645 VariableDeclarationHelper helper(&reader_helper);
646 helper.ReadUntilExcluding(VariableDeclarationHelper::kEnd);
647
648 if (helper.IsCovariant()) {
649 is_covariant->Add(param_index);
650 }
651 if (helper.IsGenericCovariantImpl()) {
652 is_generic_covariant_impl->Add(param_index);
653 }
654 }
655}
void Add(intptr_t i)
Definition: bit_vector.h:63
intptr_t length() const
Definition: bit_vector.h:117

◆ ReportIfNotNull()

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

Definition at line 6040 of file kernel_binary_flowgraph.cc.

6040 {
6041 if (error != nullptr) {
6042 const auto& language_error = Error::Handle(
6043 LanguageError::New(String::Handle(String::New(error, Heap::kOld)),
6045 Report::LongJump(language_error);
6046 }
6047}
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 3842 of file kernel_translation_helper.cc.

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

◆ SetupUnboxingInfoOfReturnValue()

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

Definition at line 3868 of file kernel_translation_helper.cc.

3870 {
3871 switch (metadata->return_info.kind) {
3872 case UnboxingInfoMetadata::kInt:
3873 function.set_unboxed_integer_return();
3874 break;
3876 function.set_unboxed_double_return();
3877 break;
3878 case UnboxingInfoMetadata::kRecord:
3879 function.set_unboxed_record_return();
3880 break;
3882 UNREACHABLE();
3883 break;
3884 case UnboxingInfoMetadata::kBoxed:
3885 break;
3886 }
3887}

◆ 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}

◆ TableSelectorMetadataForProgram()

TableSelectorMetadata * dart::kernel::TableSelectorMetadataForProgram ( const KernelProgramInfo info,
Zone zone 
)

Definition at line 802 of file kernel.cc.

804 {
805 TranslationHelper translation_helper(Thread::Current());
806 translation_helper.InitFromKernelProgramInfo(info);
807 const auto& data = TypedDataView::Handle(zone, info.metadata_payloads());
808 KernelReaderHelper reader_helper(zone, &translation_helper, data, 0);
809 TableSelectorMetadataHelper table_selector_metadata_helper(&reader_helper);
810 return table_selector_metadata_helper.GetTableSelectorMetadata(zone);
811}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition: DM.cpp:213
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63

◆ typed_data_cid()

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

Definition at line 4832 of file kernel_to_il.cc.

4832 {
4833 switch (chunk_size) {
4834 case 8:
4835 return kTypedDataInt64ArrayCid;
4836 case 4:
4837 return kTypedDataInt32ArrayCid;
4838 case 2:
4839 return kTypedDataInt16ArrayCid;
4840 case 1:
4841 return kTypedDataInt8ArrayCid;
4842 }
4843 UNREACHABLE();
4844}

◆ TypedDataCidUnboxed()

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

Definition at line 4508 of file kernel_to_il.cc.

4508 {
4509 switch (unboxed_representation) {
4510 case kUnboxedFloat:
4511 // Note kTypedDataFloat32ArrayCid loads kUnboxedDouble.
4512 UNREACHABLE();
4513 return kTypedDataFloat32ArrayCid;
4514 case kUnboxedInt32:
4515 return kTypedDataInt32ArrayCid;
4516 case kUnboxedUint32:
4517 return kTypedDataUint32ArrayCid;
4518 case kUnboxedInt64:
4519 return kTypedDataInt64ArrayCid;
4520 case kUnboxedDouble:
4521 return kTypedDataFloat64ArrayCid;
4522 default:
4523 UNREACHABLE();
4524 }
4525 UNREACHABLE();
4526}

◆ TypedListGetNativeFunction()

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

Definition at line 881 of file kernel_to_il.cc.

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

◆ TypedListSetNativeFunction()

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

Definition at line 2059 of file kernel_to_il.cc.

2060 {
2061 auto& state = thread->compiler_state();
2062 switch (RepresentationUtils::RepresentationOfArrayElement(cid)) {
2063 case kUnboxedFloat:
2064 return state.TypedListSetFloat32();
2065 case kUnboxedDouble:
2066 return state.TypedListSetFloat64();
2067 case kUnboxedInt32x4:
2068 return state.TypedListSetInt32x4();
2069 case kUnboxedFloat32x4:
2070 return state.TypedListSetFloat32x4();
2071 case kUnboxedFloat64x2:
2072 return state.TypedListSetFloat64x2();
2073 default:
2074 UNREACHABLE();
2075 return Object::null_function();
2076 }
2077}

◆ UnboxingInfoMetadataOf() [1/2]

UnboxingInfoMetadata * dart::kernel::UnboxingInfoMetadataOf ( const Function function,
Zone zone 
)

Definition at line 792 of file kernel.cc.

793 {
794 const auto& kernel_program_info =
795 KernelProgramInfo::Handle(zone, function.KernelProgramInfo());
797 zone, kernel_program_info,
798 TypedDataView::Handle(zone, function.KernelLibrary()),
799 function.KernelLibraryOffset(), function.kernel_offset());
800}
UnboxingInfoMetadata * UnboxingInfoMetadataOf(const Function &function, Zone *zone)
Definition: kernel.cc:792

◆ UnboxingInfoMetadataOf() [2/2]

static UnboxingInfoMetadata * dart::kernel::UnboxingInfoMetadataOf ( Zone zone,
const KernelProgramInfo kernel_program_info,
const TypedDataView kernel_data,
intptr_t  kernel_data_program_offset,
intptr_t  kernel_offset 
)
static

Definition at line 778 of file kernel.cc.

783 {
784 TranslationHelper translation_helper(Thread::Current());
785 translation_helper.InitFromKernelProgramInfo(kernel_program_info);
786 KernelReaderHelper reader_helper(zone, &translation_helper, kernel_data,
787 kernel_data_program_offset);
788 UnboxingInfoMetadataHelper unboxing_info_metadata_helper(&reader_helper);
789 return unboxing_info_metadata_helper.GetUnboxingInfoMetadata(kernel_offset);
790}

Variable Documentation

◆ HeaderSize

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

Definition at line 278 of file kernel_binary.h.

◆ is_experimental_shared_data_enabled

bool dart::kernel::is_experimental_shared_data_enabled = false
static

Definition at line 44 of file kernel_loader.cc.

◆ KernelFormatVersionOffset

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

Definition at line 275 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 = 119
static

Definition at line 21 of file kernel_binary.h.

◆ kVMServiceIOLibraryUri

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

Definition at line 38 of file kernel_loader.cc.

◆ LibraryCountFieldCountFromEnd

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

Definition at line 274 of file kernel_binary.h.

◆ SourceTableFieldCountFromFirstLibraryOffset

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

Definition at line 276 of file kernel_binary.h.

◆ SpecializedIntLiteralBias

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

Definition at line 273 of file kernel_binary.h.