blob: 877dc32e265eb0d9ee168492d0c4b1fb18955026 [file] [log] [blame]
library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:ffi" as ffi;
import "dart:typed_data" as typ;
import "dart:_internal" as _in;
import "dart:ffi";
@#C8
abstract class WChar extends ffi::AbiSpecificInteger /*hasConstConstructor*/ {
[@vm.unboxing-info.metadata=()->i] @#C11
static get #sizeOf() → core::int*
return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
}
@#C20
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.unboxing-info.metadata=()->i] @#C11
static get #sizeOf() → core::int*
return #C24.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
}
@#C29
class WCharArrayStruct extends ffi::Struct {
constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] core::Object #typedDataBase) → self::WCharArrayStruct
: super ffi::Struct::_fromTypedDataBase(#typedDataBase)
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] get a0() ffi::Array<self::WChar>
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);
[@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>(0);
}
[@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 {}
}
static method main() void {
self::testSizeOf();
self::testStoreLoad();
self::testStoreLoadIndexed();
self::testStruct();
self::testInlineArray();
}
static method testSizeOf() void {
final core::int size = [@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf;
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>};
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};
}
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>};
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};
}
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};
}
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>};
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);
}
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));
}
[@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C35.{self::_DummyAllocator::free}(p){(ffi::Pointer<ffi::NativeType>) → void};
}
constants {
#C1 = "vm:ffi:abi-specific-mapping"
#C2 = TypeLiteralConstant(ffi::Uint32)
#C3 = TypeLiteralConstant(ffi::Uint64)
#C4 = TypeLiteralConstant(ffi::Int32)
#C5 = TypeLiteralConstant(ffi::Uint16)
#C6 = <core::Type?>[#C2, #C2, #C2, #C2, #C3, #C2, #C2, #C2, #C2, #C2, #C2, #C4, #C4, #C4, #C4, #C2, #C2, #C5, #C5, #C5]
#C7 = ffi::_FfiAbiSpecificMapping {nativeTypes:#C6}
#C8 = core::pragma {name:#C1, options:#C7}
#C9 = "vm:prefer-inline"
#C10 = null
#C11 = core::pragma {name:#C9, options:#C10}
#C12 = 4
#C13 = 8
#C14 = 2
#C15 = <core::int*>[#C12, #C12, #C12, #C12, #C13, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C14, #C14, #C14]
#C16 = "vm:ffi:struct-fields"
#C17 = TypeLiteralConstant(self::WChar)
#C18 = <core::Type>[#C17, #C17]
#C19 = ffi::_FfiStructLayout {fieldTypes:#C18, packing:#C10}
#C20 = core::pragma {name:#C16, options:#C19}
#C21 = 0
#C22 = <core::int*>[#C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21]
#C23 = 16
#C24 = <core::int*>[#C13, #C13, #C13, #C13, #C23, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C12, #C12, #C12]
#C25 = 100
#C26 = ffi::_FfiInlineArray {elementType:#C17, length:#C25}
#C27 = <core::Type>[#C26]
#C28 = ffi::_FfiStructLayout {fieldTypes:#C27, packing:#C10}
#C29 = core::pragma {name:#C16, options:#C28}
#C30 = <core::int*>[]
#C31 = 400
#C32 = 800
#C33 = 200
#C34 = <core::int*>[#C31, #C31, #C31, #C31, #C32, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C31, #C33, #C33, #C33]
#C35 = self::_DummyAllocator {}
}