mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 22:59:47 +00:00
[kernel] Enable sound null safety in TargetFlags by default
TargetFlags.enableNullSafety is set to true by default and also renamed to TargetFlags.soundNullSafety to better reflect its meaning. TEST=ci Change-Id: I2c2f30c2af6502fd9a96141dc60e4afbf8c524fd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280216 Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Siva Annamalai <asiva@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Nicholas Shahan <nshahan@google.com> Reviewed-by: Aske Simon Christensen <askesc@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com>
This commit is contained in:
parent
44bb70a060
commit
a9d9b7395b
|
@ -222,7 +222,10 @@ Future<_LoadFromSourceResult> _loadFromSource(
|
|||
bool verbose = false;
|
||||
bool cfeConstants = options.features.cfeConstants.isEnabled;
|
||||
Map<String, String>? environment = cfeConstants ? options.environment : null;
|
||||
Target target = Dart2jsTarget(targetName, TargetFlags(),
|
||||
Target target = Dart2jsTarget(
|
||||
targetName,
|
||||
TargetFlags(
|
||||
soundNullSafety: options.nullSafetyMode == NullSafetyMode.sound),
|
||||
options: options,
|
||||
canPerformGlobalTransforms: true,
|
||||
supportsUnevaluatedConstants: !cfeConstants);
|
||||
|
|
|
@ -26,7 +26,7 @@ main() {
|
|||
OutputCollector output = OutputCollector();
|
||||
|
||||
var options = CompilerOptions()
|
||||
..target = Dart2jsTarget("dart2js", TargetFlags(enableNullSafety: true))
|
||||
..target = Dart2jsTarget("dart2js", TargetFlags())
|
||||
..nnbdMode = NnbdMode.Strong
|
||||
..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
|
||||
..additionalDills = <Uri>[
|
||||
|
|
|
@ -86,7 +86,7 @@ Future<List<int>> compileUnit(List<String> inputs, Map<String, dynamic> sources,
|
|||
.entityForUri(toTestUri('.dart_tool/package_config.json'))
|
||||
.writeAsStringSync('{"configVersion": 2, "packages": []}');
|
||||
var options = CompilerOptions()
|
||||
..target = Dart2jsTarget("dart2js", TargetFlags(enableNullSafety: true))
|
||||
..target = Dart2jsTarget("dart2js", TargetFlags())
|
||||
..fileSystem = TestFileSystem(fs)
|
||||
..nnbdMode = NnbdMode.Strong
|
||||
..additionalDills = additionalDills
|
||||
|
|
|
@ -56,7 +56,7 @@ void main(List<String> args) async {
|
|||
..onDiagnostic = _onDiagnosticMessageHandler
|
||||
..compileSdk = true
|
||||
..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
|
||||
..target = VmTarget(TargetFlags());
|
||||
..target = VmTarget(TargetFlags(soundNullSafety: false));
|
||||
var pOptions = ProcessedOptions(options: options);
|
||||
var uriResolver = await pOptions.getUriTranslator();
|
||||
var context = CompilerContext(pOptions);
|
||||
|
|
|
@ -48,7 +48,7 @@ class WasmTarget extends Target {
|
|||
String get name => 'wasm';
|
||||
|
||||
@override
|
||||
TargetFlags get flags => TargetFlags(enableNullSafety: true);
|
||||
TargetFlags get flags => TargetFlags();
|
||||
|
||||
@override
|
||||
List<String> get extraRequiredLibraries => const <String>[
|
||||
|
|
|
@ -281,7 +281,7 @@ Future<CompilerResult> _compile(List<String> args,
|
|||
additionalDills,
|
||||
DevCompilerTarget(TargetFlags(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
enableNullSafety: options.soundNullSafety)),
|
||||
soundNullSafety: options.soundNullSafety)),
|
||||
fileSystem: fileSystem,
|
||||
explicitExperimentalFlags: explicitExperimentalFlags,
|
||||
environmentDefines: declaredVariables,
|
||||
|
@ -322,7 +322,7 @@ Future<CompilerResult> _compile(List<String> args,
|
|||
inputDigests,
|
||||
DevCompilerTarget(TargetFlags(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
enableNullSafety: options.soundNullSafety)),
|
||||
soundNullSafety: options.soundNullSafety)),
|
||||
fileSystem: fileSystem,
|
||||
explicitExperimentalFlags: explicitExperimentalFlags,
|
||||
environmentDefines: declaredVariables,
|
||||
|
|
|
@ -226,8 +226,9 @@ class ExpressionCompilerWorker {
|
|||
..sdkSummary = sdkSummary
|
||||
..packagesFileUri = packagesFile
|
||||
..librariesSpecificationUri = librariesSpecificationUri
|
||||
..target = DevCompilerTarget(
|
||||
TargetFlags(trackWidgetCreation: trackWidgetCreation))
|
||||
..target = DevCompilerTarget(TargetFlags(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
soundNullSafety: soundNullSafety))
|
||||
..fileSystem = fileSystem
|
||||
..omitPlatform = true
|
||||
..environmentDefines = {
|
||||
|
|
|
@ -77,7 +77,8 @@ class SetupCompilerOptions {
|
|||
var options = fe.CompilerOptions()
|
||||
..verbose = false // set to true for debugging
|
||||
..sdkRoot = sdkRoot
|
||||
..target = DevCompilerTarget(TargetFlags())
|
||||
..target =
|
||||
DevCompilerTarget(TargetFlags(soundNullSafety: soundNullSafety))
|
||||
..librariesSpecificationUri = p.toUri('sdk/lib/libraries.json')
|
||||
..omitPlatform = true
|
||||
..sdkSummary =
|
||||
|
|
|
@ -694,8 +694,15 @@ const nullCheck = const _NullCheck();
|
|||
var mainUri = Uri.file('/memory/test.dart');
|
||||
_fileSystem.entityForUri(mainUri).writeAsStringSync(code);
|
||||
var oldCompilerState = _compilerState;
|
||||
_compilerState = fe.initializeCompiler(oldCompilerState, false, root, sdkUri,
|
||||
packagesUri, librariesUri, [], DevCompilerTarget(TargetFlags()),
|
||||
_compilerState = fe.initializeCompiler(
|
||||
oldCompilerState,
|
||||
false,
|
||||
root,
|
||||
sdkUri,
|
||||
packagesUri,
|
||||
librariesUri,
|
||||
[],
|
||||
DevCompilerTarget(TargetFlags(soundNullSafety: false)),
|
||||
fileSystem: _fileSystem,
|
||||
explicitExperimentalFlags: const {},
|
||||
environmentDefines: const {},
|
||||
|
|
|
@ -54,7 +54,8 @@ class SetupCompilerOptions {
|
|||
var options = CompilerOptions()
|
||||
..verbose = false // set to true for debugging
|
||||
..sdkRoot = sdkRoot
|
||||
..target = DevCompilerTarget(TargetFlags())
|
||||
..target =
|
||||
DevCompilerTarget(TargetFlags(soundNullSafety: soundNullSafety))
|
||||
..librariesSpecificationUri = Uri.base.resolve('sdk/lib/libraries.json')
|
||||
..omitPlatform = true
|
||||
..sdkSummary =
|
||||
|
|
|
@ -371,8 +371,9 @@ class ProcessedOptions {
|
|||
String get currentSdkVersion => _raw.currentSdkVersion;
|
||||
|
||||
Target? _target;
|
||||
Target get target =>
|
||||
_target ??= _raw.target ?? new NoneTarget(new TargetFlags());
|
||||
Target get target => _target ??= _raw.target ??
|
||||
new NoneTarget(
|
||||
new TargetFlags(soundNullSafety: nnbdMode == NnbdMode.Strong));
|
||||
|
||||
/// Returns the global state of the experimental features.
|
||||
flags.GlobalFeatures get globalFeatures => _raw.globalFeatures;
|
||||
|
|
|
@ -186,7 +186,7 @@ CompilerContext setupCompilerContext(bool nnbd, String targetString,
|
|||
}
|
||||
|
||||
TargetFlags targetFlags = new TargetFlags(
|
||||
enableNullSafety: nnbd, trackWidgetCreation: widgetTransformation);
|
||||
soundNullSafety: nnbd, trackWidgetCreation: widgetTransformation);
|
||||
Target target;
|
||||
switch (targetString) {
|
||||
case "VM":
|
||||
|
|
|
@ -1935,7 +1935,7 @@ worlds:
|
|||
}
|
||||
|
||||
TargetFlags targetFlags = new TargetFlags(
|
||||
enableNullSafety: false,
|
||||
soundNullSafety: false,
|
||||
trackWidgetCreation: _settings.widgetTransformation);
|
||||
Target target;
|
||||
switch (_settings.targetString) {
|
||||
|
|
|
@ -2181,7 +2181,7 @@ Target createTarget(FolderOptions folderOptions, FastaContext context) {
|
|||
folderOptions.forceNoExplicitGetterCalls,
|
||||
forceConstructorTearOffLoweringForTesting:
|
||||
folderOptions.forceConstructorTearOffLowering,
|
||||
enableNullSafety: context.soundNullSafety,
|
||||
soundNullSafety: context.soundNullSafety,
|
||||
supportedDartLibraries: {'_supported.by.target'},
|
||||
unsupportedDartLibraries: {'unsupported.by.target'},
|
||||
);
|
||||
|
|
|
@ -76,8 +76,7 @@ Future<void> main(List<String> args) async {
|
|||
|
||||
Future<Component> processUri(final List<Uri> inputs, Component? fullComponent,
|
||||
final Uri packageUri) async {
|
||||
TargetFlags targetFlags =
|
||||
new TargetFlags(enableNullSafety: true, trackWidgetCreation: false);
|
||||
TargetFlags targetFlags = new TargetFlags(trackWidgetCreation: false);
|
||||
Target? target = new Dart2jsTarget("dart2js", targetFlags);
|
||||
Uri sdkSummary = Uri.base.resolve("out/ReleaseX64/dart2js_outline.dill");
|
||||
Stopwatch stopwatch = new Stopwatch()..start();
|
||||
|
|
|
@ -25,7 +25,7 @@ Future<void> main() async {
|
|||
Stopwatch stopwatch = new Stopwatch()..start();
|
||||
Component component = await normalCompileToComponent(dart2jsUrl,
|
||||
options: getOptions()
|
||||
..target = new VmTarget(new TargetFlags())
|
||||
..target = new VmTarget(new TargetFlags(soundNullSafety: false))
|
||||
..omitPlatform = false);
|
||||
print("Compiled dart2js in ${stopwatch.elapsedMilliseconds} ms");
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ ProcessedOptions analyzeCommandLine(String programName,
|
|||
Options.forceConstructorTearOffLowering.read(parsedOptions),
|
||||
forceLateLoweringSentinelForTesting:
|
||||
Options.forceLateLoweringSentinel.read(parsedOptions),
|
||||
enableNullSafety: isExperimentEnabled(ExperimentalFlag.nonNullable,
|
||||
soundNullSafety: isExperimentEnabled(ExperimentalFlag.nonNullable,
|
||||
explicitExperimentalFlags: explicitExperimentalFlags));
|
||||
|
||||
final Target? target = getTarget(targetName, flags);
|
||||
|
|
|
@ -315,7 +315,7 @@ class DartDocTest {
|
|||
|
||||
void setupIncrementalCompiler(Uri uri) {
|
||||
options = getOptions();
|
||||
TargetFlags targetFlags = new TargetFlags(enableNullSafety: true);
|
||||
TargetFlags targetFlags = new TargetFlags();
|
||||
// TODO: Target could possible be something else...
|
||||
Target target = new VmTarget(targetFlags);
|
||||
options.target = target;
|
||||
|
|
|
@ -179,7 +179,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
|
|||
(parsedArgs['target'] as String?) ?? (summaryOnly ? 'ddc' : 'vm');
|
||||
var targetFlags = new TargetFlags(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
enableNullSafety: nnbdMode == fe.NnbdMode.Strong);
|
||||
soundNullSafety: nnbdMode == fe.NnbdMode.Strong);
|
||||
Target target;
|
||||
switch (targetName) {
|
||||
case 'vm':
|
||||
|
|
|
@ -76,7 +76,7 @@ class _Client {
|
|||
..fileSystem = _FileSystem(_channel, _dills)
|
||||
..nnbdMode = fe.NnbdMode.Strong
|
||||
..sdkSummary = Uri.parse(sdkSummaryUriStr)
|
||||
..target = vm.VmTarget(fe.TargetFlags(enableNullSafety: true));
|
||||
..target = vm.VmTarget(fe.TargetFlags());
|
||||
|
||||
final additionalDills = arguments['additionalDills'].asListOf<String>();
|
||||
if (additionalDills != null) {
|
||||
|
|
|
@ -14,12 +14,12 @@ final List<String> targetNames = targets.keys.toList();
|
|||
|
||||
class TargetFlags {
|
||||
final bool trackWidgetCreation;
|
||||
final bool enableNullSafety;
|
||||
final bool soundNullSafety;
|
||||
final bool supportMirrors;
|
||||
|
||||
const TargetFlags(
|
||||
{this.trackWidgetCreation = false,
|
||||
this.enableNullSafety = false,
|
||||
this.soundNullSafety = true,
|
||||
this.supportMirrors = true});
|
||||
|
||||
@override
|
||||
|
@ -27,7 +27,7 @@ class TargetFlags {
|
|||
if (identical(this, other)) return true;
|
||||
return other is TargetFlags &&
|
||||
trackWidgetCreation == other.trackWidgetCreation &&
|
||||
enableNullSafety == other.enableNullSafety &&
|
||||
soundNullSafety == other.soundNullSafety &&
|
||||
supportMirrors == other.supportMirrors;
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ class TargetFlags {
|
|||
int get hashCode {
|
||||
int hash = 485786;
|
||||
hash = 0x3fffffff & (hash * 31 + (hash ^ trackWidgetCreation.hashCode));
|
||||
hash = 0x3fffffff & (hash * 31 + (hash ^ enableNullSafety.hashCode));
|
||||
hash = 0x3fffffff & (hash * 31 + (hash ^ soundNullSafety.hashCode));
|
||||
hash = 0x3fffffff & (hash * 31 + (hash ^ supportMirrors.hashCode));
|
||||
return hash;
|
||||
}
|
||||
|
@ -779,12 +779,12 @@ class TestTargetFlags extends TargetFlags {
|
|||
this.forceStaticFieldLoweringForTesting,
|
||||
this.forceNoExplicitGetterCallsForTesting,
|
||||
this.forceConstructorTearOffLoweringForTesting,
|
||||
bool enableNullSafety = false,
|
||||
bool soundNullSafety = false,
|
||||
this.supportedDartLibraries = const {},
|
||||
this.unsupportedDartLibraries = const {}})
|
||||
: super(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
enableNullSafety: enableNullSafety);
|
||||
soundNullSafety: soundNullSafety);
|
||||
}
|
||||
|
||||
mixin TestTargetMixin on Target {
|
||||
|
|
|
@ -101,7 +101,7 @@ CompilerOptions setupCompilerOptions(
|
|||
return new CompilerOptions()
|
||||
..fileSystem = fileSystem
|
||||
..target = new VmTarget(new TargetFlags(
|
||||
enableNullSafety: nullSafety, supportMirrors: enableMirrors))
|
||||
soundNullSafety: nullSafety, supportMirrors: enableMirrors))
|
||||
..packagesFileUri = packagesUri
|
||||
..sdkSummary = platformKernelPath
|
||||
..verbose = verbose
|
||||
|
|
|
@ -108,7 +108,8 @@ Future main(List<String> args) async {
|
|||
|
||||
installAdditionalTargets();
|
||||
|
||||
final target = getTarget(argResults['target'], TargetFlags())!;
|
||||
final target =
|
||||
getTarget(argResults['target'], TargetFlags(soundNullSafety: false))!;
|
||||
|
||||
// The [component] is treeshaken and has TFA annotations. Write output.
|
||||
if (argResults['aot']) {
|
||||
|
|
|
@ -658,7 +658,7 @@ Target? createFrontEndTarget(String targetName,
|
|||
|
||||
final TargetFlags targetFlags = new TargetFlags(
|
||||
trackWidgetCreation: trackWidgetCreation,
|
||||
enableNullSafety: nullSafety,
|
||||
soundNullSafety: nullSafety,
|
||||
supportMirrors: supportMirrors);
|
||||
return getTarget(targetName, targetFlags);
|
||||
}
|
||||
|
|
|
@ -183,7 +183,7 @@ class VmTarget extends Target {
|
|||
|
||||
bool productMode = environmentDefines!["dart.vm.product"] == "true";
|
||||
lowering.transformLibraries(libraries, coreTypes, hierarchy,
|
||||
nullSafety: flags.enableNullSafety, productMode: productMode);
|
||||
nullSafety: flags.soundNullSafety, productMode: productMode);
|
||||
logger?.call("Lowering transformations performed");
|
||||
|
||||
callSiteAnnotator.transformLibraries(
|
||||
|
@ -200,7 +200,7 @@ class VmTarget extends Target {
|
|||
{void Function(String msg)? logger}) {
|
||||
bool productMode = environmentDefines!["dart.vm.product"] == "true";
|
||||
lowering.transformProcedure(procedure, coreTypes, hierarchy,
|
||||
nullSafety: flags.enableNullSafety, productMode: productMode);
|
||||
nullSafety: flags.soundNullSafety, productMode: productMode);
|
||||
logger?.call("Lowering transformations performed");
|
||||
}
|
||||
|
||||
|
|
|
@ -1615,7 +1615,7 @@ class TypeFlowAnalysis implements EntryPointsListener, CallHandler {
|
|||
matcher ?? new ConstantPragmaAnnotationParser(coreTypes, target) {
|
||||
nativeCodeOracle = new NativeCodeOracle(libraryIndex, annotationMatcher);
|
||||
hierarchyCache = new _ClassHierarchyCache(this, _genericInterfacesInfo,
|
||||
environment, target.flags.enableNullSafety);
|
||||
environment, target.flags.soundNullSafety);
|
||||
summaryCollector = new SummaryCollector(
|
||||
target,
|
||||
environment,
|
||||
|
|
|
@ -190,7 +190,7 @@ class _ParameterInfo {
|
|||
// When run in weak mode with null assertions enabled, parameters with
|
||||
// non-nullable types have implicit null checks, which count as reads.
|
||||
if ((param.isCovariantByDeclaration || param.isCovariantByClass) ||
|
||||
(!shaker.typeFlowAnalysis.target.flags.enableNullSafety &&
|
||||
(!shaker.typeFlowAnalysis.target.flags.soundNullSafety &&
|
||||
param.type.nullability == Nullability.nonNullable &&
|
||||
(type == null || type is NullableType))) {
|
||||
isChecked = true;
|
||||
|
|
|
@ -1617,7 +1617,7 @@ class _TreeShakerPass1 extends RemovingTransformer {
|
|||
// are implicitly checked for null, so transform the node only
|
||||
// if using sound null safety or it evaluates to a bool literal.
|
||||
if (_isExtendedBoolLiteral(left) &&
|
||||
(shaker.typeFlowAnalysis.target.flags.enableNullSafety ||
|
||||
(shaker.typeFlowAnalysis.target.flags.soundNullSafety ||
|
||||
_isExtendedBoolLiteral(right))) {
|
||||
return _evaluateArguments([left], right);
|
||||
}
|
||||
|
|
|
@ -113,8 +113,7 @@ class TestOptions {
|
|||
}
|
||||
|
||||
runTestCase(Uri source, List<String>? experimentalFlags) async {
|
||||
final Target target =
|
||||
new TestingVmTarget(new TargetFlags(enableNullSafety: true));
|
||||
final Target target = new TestingVmTarget(new TargetFlags());
|
||||
final Component component = await compileTestCaseToKernelProgram(source,
|
||||
experimentalFlags: experimentalFlags);
|
||||
final Library library = component.mainMethod!.enclosingLibrary;
|
||||
|
|
|
@ -21,7 +21,7 @@ final Uri pkgVmDir = Platform.script.resolve('../../..');
|
|||
|
||||
void runTestCase(Uri source, List<Uri>? linkedDependencies,
|
||||
List<String>? experimentalFlags) async {
|
||||
final target = new TestingVmTarget(new TargetFlags(enableNullSafety: true));
|
||||
final target = new TestingVmTarget(new TargetFlags());
|
||||
Component component = await compileTestCaseToKernelProgram(source,
|
||||
target: target,
|
||||
linkedDependencies: linkedDependencies,
|
||||
|
|
|
@ -18,10 +18,10 @@ class WCharStruct extends ffi::Struct {
|
|||
constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] core::Object #typedDataBase) → self::WCharStruct
|
||||
: super ffi::Struct::_fromTypedDataBase(#typedDataBase)
|
||||
;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] get a0() → core::int
|
||||
return [@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificInt<self::WChar>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->b] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void
|
||||
return [@vm.inferred-type.metadata=int?] ffi::_storeAbiSpecificInt<self::WChar>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue);
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] get a0() → core::int
|
||||
return [@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::WChar>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void
|
||||
return [@vm.inferred-type.metadata=int] ffi::_storeAbiSpecificInt<self::WChar>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue);
|
||||
[@vm.unboxing-info.metadata=()->i] @#C11
|
||||
static get #sizeOf() → core::int*
|
||||
return #C24.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
|
||||
|
@ -35,16 +35,16 @@ class WCharArrayStruct extends ffi::Struct {
|
|||
return new ffi::Array::_<self::WChar>( block {
|
||||
core::Object #typedDataBase = [@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object};
|
||||
core::int #offset = #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
|
||||
} =>#typedDataBase is ffi::Pointer<dynamic> ?{core::Object} [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<self::WChar>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] [@vm.direct-call.metadata=dart.ffi::Pointer.address] [@vm.inferred-type.metadata=int?] #typedDataBase.{ffi::Pointer::address}{core::int}.{core::num::+}(#offset){(core::num) → core::num}) : let typ::TypedData #typedData = _in::unsafeCast<typ::TypedData>(#typedDataBase) in throw "Attempt to execute code removed by Dart AOT compiler (TFA)", #C25, #C30);
|
||||
} =>#typedDataBase is ffi::Pointer<dynamic> ?{core::Object} [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<self::WChar>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] [@vm.direct-call.metadata=dart.ffi::Pointer.address] [@vm.inferred-type.metadata=int] #typedDataBase.{ffi::Pointer::address}{core::int}.{core::num::+}(#offset){(core::num) → core::num}) : let typ::TypedData #typedData = _in::unsafeCast<typ::TypedData>(#typedDataBase) in throw "Attempt to execute code removed by Dart AOT compiler (TFA)", #C25, #C30);
|
||||
[@vm.unboxing-info.metadata=()->i] @#C11
|
||||
static get #sizeOf() → core::int*
|
||||
return #C34.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
|
||||
}
|
||||
class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/ {
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b] method allocate<T extends ffi::NativeType>([@vm.inferred-type.metadata=int] core::int byteCount) → ffi::Pointer<self::_DummyAllocator::allocate::T> {
|
||||
return [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer::fromAddress<self::_DummyAllocator::allocate::T>();
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method allocate<T extends ffi::NativeType>() → ffi::Pointer<self::_DummyAllocator::allocate::T> {
|
||||
return [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Pointer::fromAddress<self::_DummyAllocator::allocate::T>();
|
||||
}
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method free([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer<ffi::NativeType> pointer) → void {}
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method free() → void {}
|
||||
}
|
||||
static method main() → void {
|
||||
self::testSizeOf();
|
||||
|
@ -58,37 +58,37 @@ static method testSizeOf() → void {
|
|||
core::print(size);
|
||||
}
|
||||
static method testStoreLoad() → void {
|
||||
final ffi::Pointer<self::WChar> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C35.{ffi::Allocator::allocate}<self::WChar>([@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
|
||||
final ffi::Pointer<self::WChar> p = let final core::int* #t1 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C35.{ffi::Allocator::allocate}<self::WChar>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
|
||||
ffi::_storeAbiSpecificInt<self::WChar>(p, #C21, 10);
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificInt<self::WChar>(p, #C21));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::WChar>(p, #C21));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testStoreLoadIndexed() → void {
|
||||
final ffi::Pointer<self::WChar> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C35.{ffi::Allocator::allocate}<self::WChar>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] 2.{core::num::*}([@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf){(core::num) → core::num}){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
|
||||
final ffi::Pointer<self::WChar> p = let final core::num #t2 = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] 2.{core::num::*}([@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf){(core::num) → core::num} in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C35.{ffi::Allocator::allocate}<self::WChar>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::WChar>(p, 0, 10);
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::WChar>(p, 1, 3);
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::WChar>(p, 0));
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::WChar>(p, 1));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::WChar>(p, 0));
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::WChar>(p, 1));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testStruct() → void {
|
||||
final ffi::Pointer<self::WCharStruct> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C35.{ffi::Allocator::allocate}<self::WCharStruct>([@vm.inferred-type.metadata=dart.core::_Smi] self::WCharStruct::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharStruct>};
|
||||
[@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(p!).{self::WCharStruct::a0} = 1;
|
||||
core::print([@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=int?] new self::WCharStruct::#fromTypedDataBase(p!).{self::WCharStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(p!).{self::WCharStruct::a0} = 2;
|
||||
core::print([@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=int?] new self::WCharStruct::#fromTypedDataBase(p!).{self::WCharStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
final ffi::Pointer<self::WCharStruct> p = let final core::int* #t3 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C35.{ffi::Allocator::allocate}<self::WCharStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharStruct>};
|
||||
[@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0} = 1;
|
||||
core::print([@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=int] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0} = 2;
|
||||
core::print([@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=int] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testInlineArray() → void {
|
||||
final ffi::Pointer<self::WCharArrayStruct> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C35.{ffi::Allocator::allocate}<self::WCharArrayStruct>([@vm.inferred-type.metadata=dart.core::_Smi] self::WCharArrayStruct::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharArrayStruct>};
|
||||
final ffi::Array<self::WChar> array = [@vm.direct-call.metadata=#lib::WCharArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::WChar>] new self::WCharArrayStruct::#fromTypedDataBase(p!).{self::WCharArrayStruct::a0}{ffi::Array<self::WChar>};
|
||||
final ffi::Pointer<self::WCharArrayStruct> p = let final core::int* #t4 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C35.{ffi::Allocator::allocate}<self::WCharArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharArrayStruct>};
|
||||
final ffi::Array<self::WChar> array = [@vm.direct-call.metadata=#lib::WCharArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::WChar>] new self::WCharArrayStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharArrayStruct>>(p)).{self::WCharArrayStruct::a0}{ffi::Array<self::WChar>};
|
||||
for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::WChar>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] array.{ffi::Array::_typedDataBase}{core::Object}, i, i);
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::WChar>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] [@vm.inferred-type.metadata=!] array.{ffi::Array::_typedDataBase}{core::Object}, i, i);
|
||||
}
|
||||
for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::WChar>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] array.{ffi::Array::_typedDataBase}{core::Object}, i));
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::WChar>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] [@vm.inferred-type.metadata=!] array.{ffi::Array::_typedDataBase}{core::Object}, i));
|
||||
}
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
constants {
|
||||
#C1 = "vm:ffi:abi-specific-mapping"
|
||||
|
|
|
@ -18,10 +18,10 @@ class IncompleteStruct extends ffi::Struct {
|
|||
constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] core::Object #typedDataBase) → self::IncompleteStruct
|
||||
: super ffi::Struct::_fromTypedDataBase(#typedDataBase)
|
||||
;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] get a0() → core::int
|
||||
return [@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificInt<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->b] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void
|
||||
return [@vm.inferred-type.metadata=int?] ffi::_storeAbiSpecificInt<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue);
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] get a0() → core::int
|
||||
return [@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void
|
||||
return [@vm.inferred-type.metadata=int] ffi::_storeAbiSpecificInt<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue);
|
||||
[@vm.unboxing-info.metadata=()->i] @#C8
|
||||
static get #sizeOf() → core::int*
|
||||
return [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
|
@ -35,16 +35,16 @@ class IncompleteArrayStruct extends ffi::Struct {
|
|||
return new ffi::Array::_<self::Incomplete>( block {
|
||||
core::Object #typedDataBase = [@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object};
|
||||
core::int #offset = #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
|
||||
} =>#typedDataBase is ffi::Pointer<dynamic> ?{core::Object} [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<self::Incomplete>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+??] [@vm.inferred-type.metadata=int (skip check)] [@vm.direct-call.metadata=dart.ffi::Pointer.address] [@vm.inferred-type.metadata=int?] #typedDataBase.{ffi::Pointer::address}{core::int}.{core::num::+}(#offset){(core::num) → core::num}) : let typ::TypedData #typedData = _in::unsafeCast<typ::TypedData>(#typedDataBase) in throw "Attempt to execute code removed by Dart AOT compiler (TFA)", #C20, #C25);
|
||||
} =>#typedDataBase is ffi::Pointer<dynamic> ?{core::Object} [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<self::Incomplete>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] [@vm.direct-call.metadata=dart.ffi::Pointer.address] [@vm.inferred-type.metadata=int] #typedDataBase.{ffi::Pointer::address}{core::int}.{core::num::+}(#offset){(core::num) → core::num}) : let typ::TypedData #typedData = _in::unsafeCast<typ::TypedData>(#typedDataBase) in throw "Attempt to execute code removed by Dart AOT compiler (TFA)", #C20, #C25);
|
||||
[@vm.unboxing-info.metadata=()->i] @#C8
|
||||
static get #sizeOf() → core::int*
|
||||
return [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C27.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
|
||||
}
|
||||
class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/ {
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b] method allocate<T extends ffi::NativeType>([@vm.inferred-type.metadata=int] core::int byteCount) → ffi::Pointer<self::_DummyAllocator::allocate::T> {
|
||||
return [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer::fromAddress<self::_DummyAllocator::allocate::T>();
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method allocate<T extends ffi::NativeType>() → ffi::Pointer<self::_DummyAllocator::allocate::T> {
|
||||
return [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Pointer::fromAddress<self::_DummyAllocator::allocate::T>();
|
||||
}
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method free([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer<ffi::NativeType> pointer) → void {}
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method free() → void {}
|
||||
}
|
||||
static method main() → void {
|
||||
self::testSizeOf();
|
||||
|
@ -58,37 +58,37 @@ static method testSizeOf() → void {
|
|||
core::print(size);
|
||||
}
|
||||
static method testStoreLoad() → void {
|
||||
final ffi::Pointer<self::Incomplete> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
|
||||
final ffi::Pointer<self::Incomplete> p = let final core::int* #t1 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
|
||||
ffi::_storeAbiSpecificInt<self::Incomplete>(p, #C16, 10);
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificInt<self::Incomplete>(p, #C16));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::Incomplete>(p, #C16));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testStoreLoadIndexed() → void {
|
||||
final ffi::Pointer<self::Incomplete> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] 2.{core::num::*}([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf){(core::num) → core::num}){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
|
||||
final ffi::Pointer<self::Incomplete> p = let final core::num #t2 = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] 2.{core::num::*}([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf){(core::num) → core::num} in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::Incomplete>(p, 0, 10);
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::Incomplete>(p, 1, 3);
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>(p, 0));
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>(p, 1));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>(p, 0));
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>(p, 1));
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testStruct() → void {
|
||||
final ffi::Pointer<self::IncompleteStruct> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteStruct>([@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] self::IncompleteStruct::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteStruct>};
|
||||
[@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(p!).{self::IncompleteStruct::a0} = 1;
|
||||
core::print([@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=int?] new self::IncompleteStruct::#fromTypedDataBase(p!).{self::IncompleteStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(p!).{self::IncompleteStruct::a0} = 2;
|
||||
core::print([@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=int?] new self::IncompleteStruct::#fromTypedDataBase(p!).{self::IncompleteStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
final ffi::Pointer<self::IncompleteStruct> p = let final core::int* #t3 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] self::IncompleteStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteStruct>};
|
||||
[@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0} = 1;
|
||||
core::print([@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=int] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0} = 2;
|
||||
core::print([@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=int] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0}{core::int});
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
static method testInlineArray() → void {
|
||||
final ffi::Pointer<self::IncompleteArrayStruct> p = [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteArrayStruct>([@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] self::IncompleteArrayStruct::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteArrayStruct>};
|
||||
final ffi::Array<self::Incomplete> array = [@vm.direct-call.metadata=#lib::IncompleteArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::Incomplete>] new self::IncompleteArrayStruct::#fromTypedDataBase(p!).{self::IncompleteArrayStruct::a0}{ffi::Array<self::Incomplete>};
|
||||
final ffi::Pointer<self::IncompleteArrayStruct> p = let final core::int* #t4 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] self::IncompleteArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteArrayStruct>};
|
||||
final ffi::Array<self::Incomplete> array = [@vm.direct-call.metadata=#lib::IncompleteArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::Incomplete>] new self::IncompleteArrayStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteArrayStruct>>(p)).{self::IncompleteArrayStruct::a0}{ffi::Array<self::Incomplete>};
|
||||
for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] array.{ffi::Array::_typedDataBase}{core::Object}, i, i);
|
||||
ffi::_storeAbiSpecificIntAtIndex<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] [@vm.inferred-type.metadata=!] array.{ffi::Array::_typedDataBase}{core::Object}, i, i);
|
||||
}
|
||||
for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
core::print([@vm.inferred-type.metadata=int?] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] array.{ffi::Array::_typedDataBase}{core::Object}, i));
|
||||
core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificIntAtIndex<self::Incomplete>([@vm.direct-call.metadata=dart.ffi::Array._typedDataBase] [@vm.inferred-type.metadata=!] array.{ffi::Array::_typedDataBase}{core::Object}, i));
|
||||
}
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
|
||||
}
|
||||
constants {
|
||||
#C1 = "vm:ffi:abi-specific-mapping"
|
||||
|
|
|
@ -9,20 +9,20 @@ import "dart:ffi";
|
|||
import "dart:nativewrappers";
|
||||
|
||||
abstract class Classy extends core::Object {
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (core::int) → core::int _returnIntPtrStatic$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static method returnIntPtrStatic() → core::int
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (core::int) → core::int _returnIntPtrStatic$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.unboxing-info.metadata=()->i] static method returnIntPtrStatic() → core::int
|
||||
return self::Classy::_returnIntPtrStatic$Method$FfiNative$Ptr(#C4){(core::int) → core::int};
|
||||
}
|
||||
class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void>, ffi::IntPtr) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::IntPtr) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle, ffi::IntPtr) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::IntPtr) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle, ffi::Pointer<ffi::Void>) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::Pointer<ffi::Void>) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle, ffi::Handle) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::Handle) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void>, ffi::Handle) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Handle) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Handle>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Handle>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void>) → ffi::Bool>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>) → ffi::Bool>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>) → core::bool _myField$Getter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void>) → ffi::Bool>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>) → ffi::Bool>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::bool) → void _myField$Setter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → void, (ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void>, ffi::IntPtr) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::IntPtr) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle, ffi::IntPtr) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::IntPtr) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle, ffi::Pointer<ffi::Void>) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::Pointer<ffi::Void>) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle, ffi::Handle) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle, ffi::Handle) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void>, ffi::Handle) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Handle) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Handle>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Handle>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void>) → ffi::Bool>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>) → ffi::Bool>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>) → core::bool _myField$Getter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void>) → ffi::Bool>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>) → ffi::Bool>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure] static final field (ffi::Pointer<ffi::Void>, core::bool) → void _myField$Setter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → void, (ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void>, ffi::Bool) → ffi::Void>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
synthetic constructor •() → self::NativeClassy
|
||||
: super nat::NativeFieldWrapperClass1::•()
|
||||
;
|
||||
|
@ -31,8 +31,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
final nat::NativeFieldWrapperClass1 #t1 = this;
|
||||
final core::int #t2 = #C7;
|
||||
final void #t3 = self::NativeClassy::_goodHasReceiverPointer$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t1);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t1);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -45,7 +45,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final self::NativeClassy #t4 = this;
|
||||
final nat::NativeFieldWrapperClass1 #t5 = v;
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>([@vm.inferred-type.metadata=int?] nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>([@vm.inferred-type.metadata=int] nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
_in::reachabilityFence(#t5);
|
||||
} =>#t6;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method goodHasReceiverHandleAndHandle([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void
|
||||
|
@ -55,8 +55,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
final nat::NativeFieldWrapperClass1 #t7 = this;
|
||||
final self::NativeClassy #t8 = v;
|
||||
final void #t9 = self::NativeClassy::_goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t7);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t7);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -68,8 +68,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
final nat::NativeFieldWrapperClass1 #t10 = this;
|
||||
final core::bool #t11 = #C10;
|
||||
final core::String? #t12 = _in::unsafeCast<core::String?>(self::NativeClassy::_meh$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t10);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t10);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -80,8 +80,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t13 = this;
|
||||
final core::bool #t14 = self::NativeClassy::_blah$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t13);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t13);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -92,8 +92,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t15 = this;
|
||||
final core::bool #t16 = self::NativeClassy::_myField$Getter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t15);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t15);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -105,8 +105,8 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
final nat::NativeFieldWrapperClass1 #t17 = this;
|
||||
final core::bool #t18 = value;
|
||||
final void #t19 = self::NativeClassy::_myField$Setter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t17);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int] nat::_getNativeField(#t17);
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
|
@ -114,11 +114,11 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
_in::reachabilityFence(#t17);
|
||||
} =>#t19;
|
||||
}
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtrLeaf$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
static method returnIntPtr() → core::int
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure]static final field (core::int) → core::int _returnIntPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure]static final field (core::int) → core::int _returnIntPtrLeaf$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr) → ffi::IntPtr>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr) → ffi::IntPtr>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.unboxing-info.metadata=()->i]static method returnIntPtr() → core::int
|
||||
return self::_returnIntPtr$Method$FfiNative$Ptr(#C11){(core::int) → core::int};
|
||||
static method returnIntPtrLeaf() → core::int
|
||||
[@vm.unboxing-info.metadata=()->i]static method returnIntPtrLeaf() → core::int
|
||||
return self::_returnIntPtrLeaf$Method$FfiNative$Ptr(#C12){(core::int) → core::int};
|
||||
static method main() → void {
|
||||
self::returnIntPtr();
|
||||
|
@ -131,7 +131,7 @@ static method main() → void {
|
|||
[@vm.direct-call.metadata=#lib::NativeClassy.goodHasReceiverPtrAndHandle] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::goodHasReceiverPtrAndHandle}(new self::NativeClassy::•()){(self::NativeClassy) → void};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.meh] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::meh}(){(core::bool) → core::String?};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.blah] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::blah}(){() → core::bool};
|
||||
final core::bool b = [@vm.direct-call.metadata=#lib::NativeClassy.myField] [@vm.inferred-type.metadata=dart.core::bool?] new self::NativeClassy::•().{self::NativeClassy::myField}{core::bool};
|
||||
final core::bool b = [@vm.direct-call.metadata=#lib::NativeClassy.myField] [@vm.inferred-type.metadata=dart.core::bool] new self::NativeClassy::•().{self::NativeClassy::myField}{core::bool};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.myField] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::myField} = !b;
|
||||
}
|
||||
constants {
|
||||
|
|
|
@ -29,7 +29,7 @@ static method useFinalizableAsyncStar([@vm.inferred-type.metadata=#lib::MyFinali
|
|||
_in::reachabilityFence(finalizable3);
|
||||
} =>:expressionValueWrappedFinalizable;
|
||||
final self::MyFinalizable finalizable4 = new self::MyFinalizable::•();
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 4) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 4) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable);
|
||||
_in::reachabilityFence(finalizable2);
|
||||
|
@ -58,7 +58,7 @@ static method main() → void async /* futureValueType= void */ {
|
|||
asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
|
||||
try
|
||||
while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await [@vm.direct-call.metadata=dart.async::_StreamIterator.moveNext] [@vm.inferred-type.metadata=!? (skip check)] :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
|
||||
final core::int element = [@vm.direct-call.metadata=dart.async::_StreamIterator.current] [@vm.inferred-type.metadata=int?] :for-iterator.{asy::_StreamIterator::current}{core::int};
|
||||
final core::int element = [@vm.direct-call.metadata=dart.async::_StreamIterator.current] [@vm.inferred-type.metadata=int] :for-iterator.{asy::_StreamIterator::current}{core::int};
|
||||
{
|
||||
core::print(element);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import "dart:io";
|
|||
class A extends core::Object implements ffi::Finalizable {
|
||||
constructor •() → self::A
|
||||
: super core::Object::•() {
|
||||
let final ffi::NativeFinalizer #t1 = [@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer?] self::_nativeFinalizer in let final ffi::Pointer<ffi::Void> #t2 = [@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::Pointer::fromAddress<ffi::Void>() in let final core::int #t3 = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<<] [@vm.inferred-type.metadata=int (skip check)] 1.{core::int::<<}(32){(core::int) → core::int} in [@vm.direct-call.metadata=dart.ffi::_NativeFinalizer.attach??] [@vm.inferred-type.metadata=!? (skip check)] #t1.{ffi::NativeFinalizer::attach}(this, #t2, this, #t3){(ffi::Finalizable, ffi::Pointer<ffi::Void>, {detach: core::Object?, externalSize: core::int?}) → void};
|
||||
let final ffi::NativeFinalizer #t1 = [@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer] self::_nativeFinalizer in let final ffi::Pointer<ffi::Void> #t2 = [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Pointer::fromAddress<ffi::Void>() in let final core::int #t3 = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<<] [@vm.inferred-type.metadata=int (skip check)] 1.{core::int::<<}(32){(core::int) → core::int} in [@vm.direct-call.metadata=dart.ffi::_NativeFinalizer.attach] [@vm.inferred-type.metadata=!? (skip check)] #t1.{ffi::NativeFinalizer::attach}(this, #t2, this, #t3){(ffi::Finalizable, ffi::Pointer<ffi::Void>, {detach: core::Object?, externalSize: core::int?}) → void};
|
||||
_in::reachabilityFence(this);
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ class B extends core::Object implements ffi::Finalizable {
|
|||
_in::reachabilityFence(a);
|
||||
}
|
||||
}
|
||||
[@vm.inferred-type.metadata=dart.ffi::Pointer?]static final field ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>> free = [@vm.direct-call.metadata=dart.ffi::DynamicLibrary.lookup??] [@vm.inferred-type.metadata=dart.ffi::Pointer? (skip check)] [@vm.inferred-type.metadata=dart.ffi::DynamicLibrary?] ffi::DynamicLibrary::process().{ffi::DynamicLibrary::lookup}<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>("free"){(core::String) → ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>};
|
||||
[@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer?]static final field ffi::NativeFinalizer _nativeFinalizer = new ffi::_NativeFinalizer::•([@vm.inferred-type.metadata=dart.ffi::Pointer?] self::free);
|
||||
[@vm.inferred-type.metadata=dart.ffi::Pointer]static final field ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>> free = [@vm.direct-call.metadata=dart.ffi::DynamicLibrary.lookup] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] [@vm.inferred-type.metadata=dart.ffi::DynamicLibrary] ffi::DynamicLibrary::process().{ffi::DynamicLibrary::lookup}<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>("free"){(core::String) → ffi::Pointer<ffi::NativeFunction<(ffi::Pointer<ffi::NativeType>) → ffi::Void>>};
|
||||
[@vm.inferred-type.metadata=dart.ffi::_NativeFinalizer]static final field ffi::NativeFinalizer _nativeFinalizer = new ffi::_NativeFinalizer::•([@vm.inferred-type.metadata=dart.ffi::Pointer] self::free);
|
||||
static method main() → asy::Future<void> async /* futureValueType= void */ {
|
||||
final self::B b = new self::B::•(new self::A::•());
|
||||
final core::List<core::int> l = [@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::int>] core::_GrowableList::•<core::int>(0);
|
||||
|
|
|
@ -17,7 +17,7 @@ static method main() → void {
|
|||
final self::MyFinalizable finalizable2 = new self::MyFinalizable::•();
|
||||
_in::reachabilityFence(finalizable2);
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable);
|
||||
return;
|
||||
|
@ -43,13 +43,13 @@ static method main() → void {
|
|||
try
|
||||
try {
|
||||
final self::MyFinalizable finalizable14 = new self::MyFinalizable::•();
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 100) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 100) {
|
||||
throw block {
|
||||
final core::Exception :expressionValueWrappedFinalizable = core::Exception::•("foo");
|
||||
_in::reachabilityFence(finalizable14);
|
||||
} =>:expressionValueWrappedFinalizable;
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 101) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 101) {
|
||||
throw block {
|
||||
final core::Error :expressionValueWrappedFinalizable = new core::Error::•();
|
||||
_in::reachabilityFence(finalizable);
|
||||
|
@ -66,7 +66,7 @@ static method main() → void {
|
|||
} =>rethrow;
|
||||
}
|
||||
finally {
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1000) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1000) {
|
||||
throw block {
|
||||
final core::Exception :expressionValueWrappedFinalizable = core::Exception::•("bar");
|
||||
_in::reachabilityFence(finalizable13);
|
||||
|
@ -111,7 +111,7 @@ static method main() → void {
|
|||
case #C5:
|
||||
{
|
||||
final self::MyFinalizable finalizable71 = new self::MyFinalizable::•();
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 44) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 44) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable70);
|
||||
_in::reachabilityFence(finalizable71);
|
||||
|
@ -145,27 +145,27 @@ static method main() → void {
|
|||
#L10:
|
||||
{
|
||||
final self::MyFinalizable finalizable10 = new self::MyFinalizable::•();
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable9);
|
||||
_in::reachabilityFence(finalizable10);
|
||||
break #L8;
|
||||
}
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1337) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1337) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable9);
|
||||
_in::reachabilityFence(finalizable10);
|
||||
break #L8;
|
||||
}
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable10);
|
||||
break #L10;
|
||||
}
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable9);
|
||||
_in::reachabilityFence(finalizable10);
|
||||
|
@ -182,14 +182,14 @@ static method main() → void {
|
|||
#L12:
|
||||
{
|
||||
final self::MyFinalizable finalizable12 = new self::MyFinalizable::•();
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable11);
|
||||
_in::reachabilityFence(finalizable12);
|
||||
break #L11;
|
||||
}
|
||||
}
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) {
|
||||
if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::DateTime.millisecondsSinceEpoch] [@vm.inferred-type.metadata=int] new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) {
|
||||
{
|
||||
_in::reachabilityFence(finalizable12);
|
||||
break #L12;
|
||||
|
@ -212,7 +212,7 @@ static method main() → void {
|
|||
{
|
||||
core::Iterator<ffi::Finalizable> :sync-for-iterator = [@vm.inferred-type.metadata=!] [@vm.inferred-type.metadata=!] core::Iterable::generate<ffi::Finalizable>((core::int index) → self::MyFinalizable => new self::MyFinalizable::•()).{core::Iterable::iterator}{core::Iterator<ffi::Finalizable>};
|
||||
for (; [@vm.inferred-type.metadata=dart.core::bool] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
|
||||
final ffi::Finalizable finalizable17 = [@vm.inferred-type.metadata=#lib::MyFinalizable?] :sync-for-iterator.{core::Iterator::current}{ffi::Finalizable};
|
||||
final ffi::Finalizable finalizable17 = [@vm.inferred-type.metadata=#lib::MyFinalizable] :sync-for-iterator.{core::Iterator::current}{ffi::Finalizable};
|
||||
{
|
||||
_in::reachabilityFence(finalizable17);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ static method main() → void {
|
|||
{
|
||||
core::Iterator<core::int> :sync-for-iterator = [@vm.direct-call.metadata=dart.async::_SyncStarIterable.iterator] [@vm.inferred-type.metadata=dart.async::_SyncStarIterator] [@vm.inferred-type.metadata=dart.async::_SyncStarIterable] self::useFinalizableSyncStar(finalizable).{core::Iterable::iterator}{core::Iterator<core::int>};
|
||||
for (; [@vm.direct-call.metadata=dart.async::_SyncStarIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool? (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
|
||||
final core::int element = [@vm.direct-call.metadata=dart.async::_SyncStarIterator.current] [@vm.inferred-type.metadata=int?] :sync-for-iterator.{core::Iterator::current}{core::int};
|
||||
final core::int element = [@vm.direct-call.metadata=dart.async::_SyncStarIterator.current] [@vm.inferred-type.metadata=int] :sync-for-iterator.{core::Iterator::current}{core::int};
|
||||
{
|
||||
core::print(element);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ main() async {
|
|||
final sourceUri =
|
||||
Platform.script.resolve('spawn_uri_from_kernel_blob_script.dart');
|
||||
final options = new CompilerOptions()
|
||||
..target = VmTarget(TargetFlags())
|
||||
..target = VmTarget(TargetFlags(soundNullSafety: hasSoundNullSafety))
|
||||
..additionalDills = <Uri>[Uri.file(platformDill)]
|
||||
..environmentDefines = {}
|
||||
..nnbdMode = hasSoundNullSafety ? NnbdMode.Strong : NnbdMode.Weak
|
||||
|
|
Loading…
Reference in a new issue