Skip to content

Commit

Permalink
Small PbList improvements (#906)
Browse files Browse the repository at this point in the history
- Reduce binary size increase caused by cl/586928869 by adding
`dart2js:never-inline` pragmas to `add`, `addAll`, `clear`.

- Override `isEmpty`, `isNotEmpty` avoid virtual calls to `length`.

- Override `get iterator` to use the known iterator type of
`_wrappedList`, which is always a `_GrowableList`.

cl/587627017
  • Loading branch information
osa1 authored Dec 5, 2023
1 parent bb19774 commit 20ec685
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions protobuf/lib/src/protobuf/pb_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,15 @@ class PbList<E> extends ListBase<E> {
_check = _checkNotNull;

@override
@pragma('dart2js:never-inline')
void add(E element) {
_checkModifiable('add');
_check(element);
_wrappedList.add(element);
}

@override
@pragma('dart2js:never-inline')
void addAll(Iterable<E> iterable) {
_checkModifiable('addAll');
iterable.forEach(_check);
Expand All @@ -74,6 +76,7 @@ class PbList<E> extends ListBase<E> {
}

@override
@pragma('dart2js:never-inline')
void clear() {
_checkModifiable('clear');
_wrappedList.clear();
Expand Down Expand Up @@ -163,6 +166,16 @@ class PbList<E> extends ListBase<E> {
@override
int get length => _wrappedList.length;

@override
bool get isEmpty => _wrappedList.isEmpty;

@override
bool get isNotEmpty => _wrappedList.isNotEmpty;

@override
@pragma('dart2js:never-inline')
Iterator<E> get iterator => _wrappedList.iterator;

@override
set length(int newLength) {
_checkModifiable('set length');
Expand Down

0 comments on commit 20ec685

Please sign in to comment.