Version 2.13.0-67.0.dev
Merge commit 'c7422d5277fcc58ddc41dc8598fcbaf4571322da' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index a11211b..d3231e9 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
"constraint, update this by running tools/generate_package_config.dart."
],
"configVersion": 2,
- "generated": "2021-02-22T20:16:11.942470",
+ "generated": "2021-02-23T10:05:38.675159",
"generator": "tools/generate_package_config.dart",
"packages": [
{
@@ -446,7 +446,7 @@
"name": "native_stack_traces",
"rootUri": "../pkg/native_stack_traces",
"packageUri": "lib/",
- "languageVersion": "2.10"
+ "languageVersion": "2.12"
},
{
"name": "nnbd_migration",
diff --git a/benchmarks/FfiMemory/dart/FfiMemory.dart b/benchmarks/FfiMemory/dart/FfiMemory.dart
index b776aa8..1b822fb 100644
--- a/benchmarks/FfiMemory/dart/FfiMemory.dart
+++ b/benchmarks/FfiMemory/dart/FfiMemory.dart
@@ -10,6 +10,7 @@
// Dart with a specific marshalling and unmarshalling of data.
import 'dart:ffi';
+import 'dart:typed_data';
import 'package:ffi/ffi.dart';
import 'package:benchmark_harness/benchmark_harness.dart';
@@ -24,6 +25,12 @@
}
}
+void doStoreInt8TypedData(Int8List typedData, int length) {
+ for (int i = 0; i < length; i++) {
+ typedData[i] = 1;
+ }
+}
+
void doStoreUint8(Pointer<Uint8> pointer, int length) {
for (int i = 0; i < length; i++) {
pointer[i] = 1;
@@ -103,6 +110,14 @@
return x;
}
+int doLoadInt8TypedData(Int8List typedData, int length) {
+ int x = 0;
+ for (int i = 0; i < length; i++) {
+ x += typedData[i];
+ }
+ return x;
+}
+
int doLoadUint8(Pointer<Uint8> pointer, int length) {
int x = 0;
for (int i = 0; i < length; i++) {
@@ -224,6 +239,62 @@
}
}
+class PointerInt8TypedDataNew extends BenchmarkBase {
+ Pointer<Int8> pointer = nullptr;
+ PointerInt8TypedDataNew() : super('FfiMemory.PointerInt8TypedDataNew');
+
+ @override
+ void setup() {
+ pointer = calloc(N);
+ }
+
+ @override
+ void teardown() {
+ calloc.free(pointer);
+ pointer = nullptr;
+ }
+
+ @override
+ void run() {
+ final typedData = pointer.asTypedList(N);
+ doStoreInt8TypedData(typedData, N);
+ final int x = doLoadInt8TypedData(typedData, N);
+ if (x != N) {
+ throw Exception('$name: Unexpected result: $x, expected $N');
+ }
+ }
+}
+
+final emptyTypedData = Int8List(0);
+
+class PointerInt8TypedDataReuse extends BenchmarkBase {
+ Pointer<Int8> pointer = nullptr;
+ Int8List typedData = emptyTypedData;
+ PointerInt8TypedDataReuse() : super('FfiMemory.PointerInt8TypedDataReuse');
+
+ @override
+ void setup() {
+ pointer = calloc(N);
+ typedData = pointer.asTypedList(N);
+ }
+
+ @override
+ void teardown() {
+ calloc.free(pointer);
+ pointer = nullptr;
+ typedData = emptyTypedData;
+ }
+
+ @override
+ void run() {
+ doStoreInt8TypedData(typedData, N);
+ final int x = doLoadInt8TypedData(typedData, N);
+ if (x != N) {
+ throw Exception('$name: Unexpected result: $x, expected $N');
+ }
+ }
+}
+
class PointerUint8 extends BenchmarkBase {
Pointer<Uint8> pointer = nullptr;
PointerUint8() : super('FfiMemory.PointerUint8');
@@ -449,6 +520,8 @@
void main() {
final benchmarks = [
() => PointerInt8(),
+ () => PointerInt8TypedDataNew(),
+ () => PointerInt8TypedDataReuse(),
() => PointerUint8(),
() => PointerInt16(),
() => PointerUint16(),
diff --git a/benchmarks/FfiMemory/dart2/FfiMemory.dart b/benchmarks/FfiMemory/dart2/FfiMemory.dart
index 5beff0a..f788959 100644
--- a/benchmarks/FfiMemory/dart2/FfiMemory.dart
+++ b/benchmarks/FfiMemory/dart2/FfiMemory.dart
@@ -12,6 +12,7 @@
// @dart=2.9
import 'dart:ffi';
+import 'dart:typed_data';
import 'package:ffi/ffi.dart';
import 'package:benchmark_harness/benchmark_harness.dart';
@@ -26,6 +27,12 @@
}
}
+void doStoreInt8TypedData(Int8List typedData, int length) {
+ for (int i = 0; i < length; i++) {
+ typedData[i] = 1;
+ }
+}
+
void doStoreUint8(Pointer<Uint8> pointer, int length) {
for (int i = 0; i < length; i++) {
pointer[i] = 1;
@@ -105,6 +112,14 @@
return x;
}
+int doLoadInt8TypedData(Int8List typedData, int length) {
+ int x = 0;
+ for (int i = 0; i < length; i++) {
+ x += typedData[i];
+ }
+ return x;
+}
+
int doLoadUint8(Pointer<Uint8> pointer, int length) {
int x = 0;
for (int i = 0; i < length; i++) {
@@ -226,6 +241,60 @@
}
}
+class PointerInt8TypedDataNew extends BenchmarkBase {
+ Pointer<Int8> pointer;
+ PointerInt8TypedDataNew() : super('FfiMemory.PointerInt8TypedDataNew');
+
+ @override
+ void setup() {
+ pointer = calloc(N);
+ }
+
+ @override
+ void teardown() {
+ calloc.free(pointer);
+ pointer = null;
+ }
+
+ @override
+ void run() {
+ final typedData = pointer.asTypedList(N);
+ doStoreInt8TypedData(typedData, N);
+ final int x = doLoadInt8TypedData(typedData, N);
+ if (x != N) {
+ throw Exception('$name: Unexpected result: $x, expected $N');
+ }
+ }
+}
+
+class PointerInt8TypedDataReuse extends BenchmarkBase {
+ Pointer<Int8> pointer;
+ Int8List typedData;
+ PointerInt8TypedDataReuse() : super('FfiMemory.PointerInt8TypedDataReuse');
+
+ @override
+ void setup() {
+ pointer = calloc(N);
+ typedData = pointer.asTypedList(N);
+ }
+
+ @override
+ void teardown() {
+ calloc.free(pointer);
+ pointer = null;
+ typedData = null;
+ }
+
+ @override
+ void run() {
+ doStoreInt8TypedData(typedData, N);
+ final int x = doLoadInt8TypedData(typedData, N);
+ if (x != N) {
+ throw Exception('$name: Unexpected result: $x, expected $N');
+ }
+ }
+}
+
class PointerUint8 extends BenchmarkBase {
Pointer<Uint8> pointer;
PointerUint8() : super('FfiMemory.PointerUint8');
@@ -451,6 +520,8 @@
void main() {
final benchmarks = [
() => PointerInt8(),
+ () => PointerInt8TypedDataNew(),
+ () => PointerInt8TypedDataReuse(),
() => PointerUint8(),
() => PointerInt16(),
() => PointerUint16(),
diff --git a/pkg/native_stack_traces/CHANGELOG.md b/pkg/native_stack_traces/CHANGELOG.md
index 71ca8ba..9b16d1c 100644
--- a/pkg/native_stack_traces/CHANGELOG.md
+++ b/pkg/native_stack_traces/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.4.0
+
+- Stable null safe version of package.
+
+## 0.4.0-nullsafety
+
+- Unstable null safe version of package.
+
## 0.3.8
- Support columns when present in line number programs.
diff --git a/pkg/native_stack_traces/lib/src/elf.dart b/pkg/native_stack_traces/lib/src/elf.dart
index e92fecd..548b5ac 100644
--- a/pkg/native_stack_traces/lib/src/elf.dart
+++ b/pkg/native_stack_traces/lib/src/elf.dart
@@ -863,7 +863,6 @@
if (header == null) return null;
// At this point, the endianness and wordSize should have been set
// during ElfHeader.fromReader.
- assert(reader.endian != null && reader.wordSize != null);
final programHeader = ProgramHeader.fromReader(reader, header);
final sectionHeader = SectionHeader.fromReader(reader, header);
final sections = <SectionHeaderEntry, Section>{};
diff --git a/pkg/native_stack_traces/pubspec.yaml b/pkg/native_stack_traces/pubspec.yaml
index f831df6..df71c5a 100644
--- a/pkg/native_stack_traces/pubspec.yaml
+++ b/pkg/native_stack_traces/pubspec.yaml
@@ -1,19 +1,18 @@
name: native_stack_traces
description: Utilities for working with non-symbolic stack traces.
-version: 0.4.0-nullsafety
+version: 0.4.0
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/native_stack_traces
environment:
- # This must remain a tight constraint until nnbd is stable
- sdk: '>=2.10.0-0 <2.10.0'
+ sdk: '>=2.12.0-0 <3.0.0'
executables:
decode:
dependencies:
- args: ^1.6.0
- path: ^1.8.0-nullsafety
+ args: ^2.0.0
+ path: ^1.8.0
dev_dependencies:
- pedantic: ^1.9.2
+ pedantic: ^1.10.0
diff --git a/tools/VERSION b/tools/VERSION
index fa1d5b6..b6f82ae 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 13
PATCH 0
-PRERELEASE 66
+PRERELEASE 67
PRERELEASE_PATCH 0
\ No newline at end of file