mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 22:11:19 +00:00
[vm] Add unsafeCasts to _rehashObjects to avoid dynamic calls.
Change-Id: Ifed38316045c8137b491ce0008ec78570f9dc4c0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/265921 Reviewed-by: Alexander Markov <alexmarkov@google.com> Commit-Queue: Kallen Tu <kallentu@google.com>
This commit is contained in:
parent
397afd14de
commit
21039dc83b
|
@ -10,7 +10,7 @@ part of "core_patch.dart";
|
|||
void _rehashObjects(List objects) {
|
||||
final int length = objects.length;
|
||||
for (int i = 0; i < length; ++i) {
|
||||
objects[i]._rehash();
|
||||
unsafeCast<Expando>(objects[i])._rehash();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import "dart:typed_data" show Uint32List;
|
|||
void _rehashObjects(List objects) {
|
||||
final int length = objects.length;
|
||||
for (int i = 0; i < length; ++i) {
|
||||
objects[i]._regenerateIndex();
|
||||
internal.unsafeCast<_HashBase>(objects[i])._regenerateIndex();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,6 +230,9 @@ mixin _HashBase on _HashAbstractBase {
|
|||
_deletedKeys = other._deletedKeys;
|
||||
return true;
|
||||
}
|
||||
|
||||
// This method is called by [_rehashObjects] (see above).
|
||||
void _regenerateIndex();
|
||||
}
|
||||
|
||||
abstract class _EqualsAndHashCode {
|
||||
|
@ -437,7 +440,6 @@ mixin _LinkedHashMapMixin<K, V> on _HashBase, _EqualsAndHashCode {
|
|||
}
|
||||
}
|
||||
|
||||
// This method is called by [_rehashObjects] (see above).
|
||||
void _regenerateIndex() {
|
||||
_index =
|
||||
_data.length == 0 ? _uninitializedIndex : new Uint32List(_data.length);
|
||||
|
@ -932,7 +934,6 @@ mixin _LinkedHashSetMixin<E> on _HashBase, _EqualsAndHashCode {
|
|||
Iterator<E> get iterator =>
|
||||
_CompactIterator<E>(this, _data, _usedData, -1, 1);
|
||||
|
||||
// This method is called by [_rehashObjects] (see above).
|
||||
void _regenerateIndex() {
|
||||
final size =
|
||||
_roundUpToPowerOfTwo(max(_data.length, _HashBase._INITIAL_INDEX_SIZE));
|
||||
|
|
Loading…
Reference in a new issue