From 27d4f2c79dcfdd72624bc1fa2389bfc974dd01cf Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Thu, 29 Jan 2026 14:31:47 -0800 Subject: [PATCH] [core/shared] Mark _CopyingBytesBuilder._emptyList shared This enables use of BytesBuilder in isolategroup-bound callbacks. TEST=run_isolate_group_run_test CoreLibraryReviewExempt: this adds vm-specific pragma Bug: https://github.com/dart-lang/sdk/issues/61030 Change-Id: Ic73887af099e6a7636e939d378dbe08a2f0c8f98 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/476601 Reviewed-by: Alexander Markov Commit-Queue: Alexander Aprelev --- sdk/lib/internal/bytes_builder.dart | 1 + tests/ffi/run_isolate_group_run_test.dart | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/sdk/lib/internal/bytes_builder.dart b/sdk/lib/internal/bytes_builder.dart index 3f7dde7a7f6..5a9ba42b90f 100644 --- a/sdk/lib/internal/bytes_builder.dart +++ b/sdk/lib/internal/bytes_builder.dart @@ -74,6 +74,7 @@ class _CopyingBytesBuilder implements BytesBuilder { /// Reusable empty [Uint8List]. /// /// Safe for reuse because a fixed-length empty list is immutable. + @pragma('vm:shared') static final _emptyList = Uint8List(0); /// Current count of bytes written to buffer. diff --git a/tests/ffi/run_isolate_group_run_test.dart b/tests/ffi/run_isolate_group_run_test.dart index a95d12bb14f..005fd817b89 100644 --- a/tests/ffi/run_isolate_group_run_test.dart +++ b/tests/ffi/run_isolate_group_run_test.dart @@ -15,6 +15,7 @@ import 'package:dart_internal/isolate_group.dart' show IsolateGroup; import 'dart:convert'; import 'dart:developer'; +import 'dart:io'; import 'dart:isolate'; import 'dart:math'; @@ -68,6 +69,8 @@ main(List args) { testEncoding(); testRecursiveToString(); + testBytesBuilder(); + print("All tests completed :)"); } @@ -523,3 +526,12 @@ void testRecursiveToString() { }), ); } + +/// +void testBytesBuilder() { + BytesBuilder builder = new BytesBuilder(); + builder.add([1, 2, 3]); + Expect.listEquals([1, 2, 3], builder.toBytes()); + builder.clear(); + Expect.isTrue(builder.isEmpty); +}