Skip to content

Commit

Permalink
Version 3.3.0-31.0.dev
Browse files Browse the repository at this point in the history
Merge 9308e6b into dev
  • Loading branch information
Dart CI committed Oct 17, 2023
2 parents 3e98c85 + 9308e6b commit 7d0a805
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 31 deletions.
12 changes: 6 additions & 6 deletions DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ vars = {
"dartdoc_rev": "8c103397734f4dba75915e40c734a88e29a35f26",
"ecosystem_rev": "dcbd2ee5aeed0515204c76d6ba04f340fdc33161",
"ffi_rev": "2faec288966d8f564049adb86a7ca43fd6e01fbf",
"file_rev": "a18ad1ce88eaeb5a11a13ef8fc25d1e78b546c59",
"file_rev": "7418131cfe3c5e063166bc3d7cca98985a6d8eeb",
"fixnum_rev": "ef45eb556524eadcd72ecdbbed87951288bcd9e7",
"flute_rev": "f42b09f77132210499ec8ed819a60c260af03db6",
"glob_rev": "00465333cc4110e077cb256b4fa7eff4797bc856",
"html_rev": "49e2c8e9b3bc9fcf25a8eb290c026d3c94c5d175",
"http_rev": "88ec75eb603ce3d66911ac0df1b48e6582965131",
"http_rev": "7240d0a26c17f06f5e6d704082ea95d10a7a730d",
"http_multi_server_rev": "03041aabc9ffa4c730c4221bf6ff1ef8bcd27cef",
"http_parser_rev": "c557f570fd53fed11914fe98c9dc20872e6eeca6",
"intl_rev": "5d65e3808ce40e6282e40881492607df4e35669f",
Expand All @@ -163,7 +163,7 @@ vars = {
"material_color_utilities_rev": "799b6ba2f3f1c28c67cc7e0b4f18e0c7d7f3c03e",
"mime_rev": "af3e5fe753b957e95f03838f8a63782582c413ca",
"mockito_rev": "47a5588788d37d7a94da9ceb9b3f3ef86c86f27e",
"native_rev": "22f4481573c201542daa1451fc3c58b1e50bf75a",
"native_rev": "757f5034bb3cb9cf9db1b268fccea028d6b0f6a6",
"package_config_rev": "100533d2f836583f281c9dfa11a00d6842c176d4",
"path_rev": "4ca27d4e88d47f2d96c3113940a97321b6aa7175",
"pool_rev": "5ccef15fcd4690d96e22e60c3962f4c97d9430f9",
Expand All @@ -174,7 +174,7 @@ vars = {
"source_map_stack_trace_rev": "73d449cb90f9faf3ccacde0635f55230c6060024",
"source_maps_rev": "fc6aa16cc3548dec5642057a7fbbce01d64f4a19",
"source_span_rev": "92e50bf0c15bea00218e5fdb2881d2570de1932b",
"sse_rev": "e190744aab3260887e99f94078858ac6ea0e9bc5",
"sse_rev": "37df57d7d09503c12f6200122ab0cb7e92ad50d1",
"stack_trace_rev": "634589f915f7b236dba8aca0f581cf792e5a6e03",
"stream_channel_rev": "ffdb20840d05a276699b50fdfc70cf668bfed6e2",
"string_scanner_rev": "9c525f78fbc4189ee4dc3171a5c79e925b58f58b",
Expand All @@ -185,13 +185,13 @@ vars = {
"test_descriptor_rev": "55b5eac522cc10bd5b2280b1f0cc367b0b69c472",
"test_process_rev": "d610333f099884ef91660bffb72d7c668cec5b4c",
"test_reflective_loader_rev": "8593eb160f796179f77c8edb6fde050433810211",
"tools_rev": "92c5c15e3eb713b39779f4545bfa207ccdfeb1af",
"tools_rev": "ddeccf60604ba2115b6e634b8d526041abfbbac6",
"typed_data_rev": "d1c15ed29d10568cd713fba77d01c4d79b03ccf8",
"usage_rev": "d7d2964433f26b9a3c60dc9c6677f00c005ee9fb",
"vector_math_rev": "d54af8a2b8b8d935a475a4da6ea5a1b343f29562",
"watcher_rev": "3998cdd37ecacd3a1715cdc76110b025bffbd1f6",
"web_socket_channel_rev": "f3ac1bf2bd3c93eb6d5d78646ff7de31797f4cf6",
"webdev_rev": "7c2c2d70e05a5012b52e95b209aedce7acb62f94",
"webdev_rev": "8d48d5ea7709088da8ee6b72d744f63829287b04",
"webdriver_rev": "eaf9c582e6e72c3551d3a875b2d522cd1ad06593",
"webkit_inspection_protocol_rev": "82f0c1c46dfdba5edf7c5fa84456233121dd69e1",
"yaml_rev": "9f0d64934c07bc27438074616455618b7103582d",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ static method testNativeCallableListener() → void {
[@vm.call-site-attributes.metadata=receiverType:dart.ffi::NativeCallable<dart.ffi::Void Function(dart.ffi::Int32)>] [@vm.direct-call.metadata=dart.ffi::_NativeCallableBase._pointer] #t1.{ffi::_NativeCallableBase::_pointer} = [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableListener<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>(ffi::_nativeAsyncCallbackFunction<(ffi::Int32) → ffi::Void>(), [@vm.direct-call.metadata=dart.ffi::_NativeCallableListener._port] [@vm.inferred-type.metadata=dart.isolate::_RawReceivePort] #t1.{ffi::_NativeCallableListener::_port}{iso::RawReceivePort});
} =>#t1;
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableListener.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
[@vm.closure-id=2]static method testNativeCallableListenerClosure() → void {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 123)] core::int j = 123;
Expand All @@ -39,50 +39,50 @@ static method testNativeCallableListener() → void {
[@vm.call-site-attributes.metadata=receiverType:dart.ffi::NativeCallable<dart.ffi::Void Function(dart.ffi::Int32)>] [@vm.direct-call.metadata=dart.ffi::_NativeCallableBase._pointer] #t2.{ffi::_NativeCallableBase::_pointer} = [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableListener<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>(ffi::_nativeAsyncCallbackFunction<(ffi::Int32) → ffi::Void>(), [@vm.direct-call.metadata=dart.ffi::_NativeCallableListener._port] [@vm.inferred-type.metadata=dart.isolate::_RawReceivePort] #t2.{ffi::_NativeCallableListener::_port}{iso::RawReceivePort});
} =>#t2;
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableListener.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
static method testNativeCallableIsolateLocalVoid() → void {
final ffi::NativeCallable<(ffi::Int32) → ffi::Void> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>(ffi::_nativeCallbackFunction<(ffi::Int32) → ffi::Void>(#C1, null), null, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
static method testNativeCallableIsolateLocalVoidClosure() → void {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 123)] core::int j = 123;
function closure(core::int i) → void
return core::print([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(j){(core::num) → core::int});
final ffi::NativeCallable<(ffi::Int32) → ffi::Void> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Void>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>(ffi::_nativeIsolateLocalCallbackFunction<(ffi::Int32) → ffi::Void>(null), closure, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Void>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
static method intToPointer(core::int i) → ffi::Pointer<ffi::NativeType>
return [@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Pointer::fromAddress<ffi::NativeType>(i);
static method testNativeCallableIsolateLocalPointer() → void {
final ffi::NativeCallable<(ffi::Int32) → ffi::Pointer<ffi::NativeType>> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>>(ffi::_nativeCallbackFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>(#C2, null), null, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
static method testNativeCallableIsolateLocalPointerClosure() → void {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 123)] core::int j = 123;
function closure(core::int i) → ffi::Pointer<ffi::NativeType>
return ffi::Pointer::fromAddress<ffi::NativeType>([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(j){(core::num) → core::int});
final ffi::NativeCallable<(ffi::Int32) → ffi::Pointer<ffi::NativeType>> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>>(ffi::_nativeIsolateLocalCallbackFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>(null), closure, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Pointer<ffi::NativeType>>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
[@vm.unboxing-info.metadata=(b)->i]static method negateInt(core::int i) → core::int
return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.unary-] [@vm.inferred-type.metadata=int (skip check)] i.{core::int::unary-}(){() → core::int};
static method testNativeCallableIsolateLocalInt() → void {
final ffi::NativeCallable<(ffi::Int32) → ffi::Int> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Int>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Int>>(ffi::_nativeCallbackFunction<(ffi::Int32) → ffi::Int>(#C3, 123), null, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Int>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
static method testNativeCallableIsolateLocalIntClosure() → void {
[@vm.inferred-type.metadata=dart.core::_Smi (value: 123)] core::int j = 123;
function closure(core::int i) → core::int
return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=!? (skip check)] i.{core::num::+}(j){(core::num) → core::int};
final ffi::NativeCallable<(ffi::Int32) → ffi::Int> callback = new ffi::_NativeCallableIsolateLocal::•<(ffi::Int32) → ffi::Int>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::_createNativeCallableIsolateLocal<ffi::NativeFunction<(ffi::Int32) → ffi::Int>>(ffi::_nativeIsolateLocalCallbackFunction<(ffi::Int32) → ffi::Int>(123), closure, true));
core::print([@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.nativeFunction] [@vm.inferred-type.metadata=dart.ffi::Pointer] callback.{ffi::NativeCallable::nativeFunction}{ffi::Pointer<ffi::NativeFunction<(ffi::Int32) → ffi::Int>>});
[@vm.direct-call.metadata=dart.ffi::_NativeCallableIsolateLocal.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
[@vm.direct-call.metadata=dart.ffi::_NativeCallableBase.close] [@vm.inferred-type.metadata=!? (skip check)] callback.{ffi::NativeCallable::close}(){() → void};
}
constants {
#C1 = static-tearoff self::printInt
Expand Down
31 changes: 15 additions & 16 deletions sdk/lib/_internal/vm/lib/ffi_patch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ abstract final class _NativeCallableBase<T extends Function>
@override
void close() {
if (!_isClosed) {
_close();
_deleteNativeCallable(_pointer);
_pointer = nullptr;
}
Expand All @@ -245,40 +246,39 @@ abstract final class _NativeCallableBase<T extends Function>
@override
void set keepIsolateAlive(bool value) {
if (!_isClosed) {
_setKeepIsolateAlive(value);
_keepIsolateAlive = value;
}
}

@override
bool get keepIsolateAlive => _isClosed ? false : _getKeepIsolateAlive();
bool get keepIsolateAlive => !_isClosed && _keepIsolateAlive;

void _setKeepIsolateAlive(bool value);
bool _getKeepIsolateAlive();
abstract bool _keepIsolateAlive;
void _close();
bool get _isClosed => _pointer == nullptr;
}

final class _NativeCallableIsolateLocal<T extends Function>
extends _NativeCallableBase<T> {
bool _keepIsolateAlive = true;
bool _isKeepingIsolateAlive = true;

_NativeCallableIsolateLocal(super._pointer);

@override
void close() {
super.close();
_setKeepIsolateAlive(false);
void _close() {
_keepIsolateAlive = false;
}

@override
void _setKeepIsolateAlive(bool value) {
if (_keepIsolateAlive != value) {
_keepIsolateAlive = value;
void set _keepIsolateAlive(bool value) {
if (_isKeepingIsolateAlive != value) {
_isKeepingIsolateAlive = value;
_updateNativeCallableKeepIsolateAliveCounter(value ? 1 : -1);
}
}

@override
bool _getKeepIsolateAlive() => _keepIsolateAlive;
bool get _keepIsolateAlive => _isKeepingIsolateAlive;
}

final class _NativeCallableListener<T extends Function>
Expand All @@ -291,18 +291,17 @@ final class _NativeCallableListener<T extends Function>
super(nullptr);

@override
void close() {
super.close();
void _close() {
_port.close();
}

@override
void _setKeepIsolateAlive(bool value) {
void set _keepIsolateAlive(bool value) {
_port.keepIsolateAlive = value;
}

@override
bool _getKeepIsolateAlive() => _port.keepIsolateAlive;
bool get _keepIsolateAlive => _port.keepIsolateAlive;
}

@patch
Expand Down
2 changes: 1 addition & 1 deletion tools/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ CHANNEL dev
MAJOR 3
MINOR 3
PATCH 0
PRERELEASE 30
PRERELEASE 31
PRERELEASE_PATCH 0

0 comments on commit 7d0a805

Please sign in to comment.