[vm] Harden access to unchecked natives.

Bug: https://github.com/dart-lang/sdk/issues/37234
Change-Id: I567b3fa177e89db50345e174a07c98b10c53f102
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105721
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
This commit is contained in:
Ryan Macnak
2019-06-12 21:32:33 +00:00
committed by commit-bot@chromium.org
parent fa28d5b912
commit f005bd5a3e
9 changed files with 196 additions and 83 deletions
+4
View File
@@ -6,6 +6,10 @@
@pragma("vm:entry-point")
class _Closure implements Function {
factory _Closure._uninstantiable() {
throw "Unreachable";
}
bool operator ==(Object other) native "Closure_equals";
int get hashCode {
+4 -2
View File
@@ -480,8 +480,9 @@ abstract class _IntegerImplementation implements int {
@pragma("vm:entry-point")
class _Smi extends _IntegerImplementation {
factory _Smi._uninstantiable() {
throw new UnsupportedError("_Smi can only be allocated by the VM");
throw "Unreachable";
}
int get hashCode => this;
int get _identityHashCode => this;
@pragma("vm:exact-result-type", "dart:core#_Smi")
@@ -682,8 +683,9 @@ class _Smi extends _IntegerImplementation {
@pragma("vm:entry-point")
class _Mint extends _IntegerImplementation {
factory _Mint._uninstantiable() {
throw new UnsupportedError("_Mint can only be allocated by the VM");
throw "Unreachable";
}
int get hashCode => this;
int get _identityHashCode => this;
@pragma("vm:non-nullable-result-type")
+4
View File
@@ -7,6 +7,10 @@
// This type corresponds to the VM-internal class LibraryPrefix.
@pragma("vm:entry-point")
class _LibraryPrefix {
factory _LibraryPrefix._uninstantiable() {
throw "Unreachable";
}
bool _load() native "LibraryPrefix_load";
Object _loadError() native "LibraryPrefix_loadError";
bool isLoaded() native "LibraryPrefix_isLoaded";
+1 -1
View File
@@ -7,7 +7,7 @@
@pragma("vm:entry-point")
class _MirrorReference {
factory _MirrorReference._uninstantiable() {
throw new UnsupportedError("class _MirrorReference cannot be instantiated");
throw "Unreachable";
}
bool operator ==(other) native "MirrorReference_equals";
+4 -4
View File
@@ -148,7 +148,7 @@ class _RegExpHashValue {
}
class _RegExpMatch implements RegExpMatch {
_RegExpMatch(this._regexp, this.input, this._match);
_RegExpMatch._(this._regexp, this.input, this._match);
int get start => _start(0);
int get end => _end(0);
@@ -222,7 +222,7 @@ class _RegExp implements RegExp {
if (match == null) {
return null;
}
return new _RegExpMatch(this, str, match);
return new _RegExpMatch._(this, str, match);
}
Iterable<RegExpMatch> allMatches(String string, [int start = 0]) {
@@ -242,7 +242,7 @@ class _RegExp implements RegExp {
}
List<int> list = _ExecuteMatchSticky(string, start);
if (list == null) return null;
return new _RegExpMatch(this, string, list);
return new _RegExpMatch._(this, string, list);
}
bool hasMatch(String str) {
@@ -379,7 +379,7 @@ class _AllMatchesIterator implements Iterator<RegExpMatch> {
if (_nextIndex <= _str.length) {
var match = _re._ExecuteMatch(_str, _nextIndex);
if (match != null) {
_current = new _RegExpMatch(_re, _str, match);
_current = new _RegExpMatch._(_re, _str, match);
_nextIndex = _current.end;
if (_nextIndex == _current.start) {
// Zero-width match. Advance by one more, unless the regexp
+4 -16
View File
@@ -945,10 +945,7 @@ abstract class _StringBase implements String {
@pragma("vm:entry-point")
class _OneByteString extends _StringBase {
factory _OneByteString._uninstantiable() {
throw new UnsupportedError(
"_OneByteString can only be allocated by the VM");
}
factory _OneByteString._uninstantiable() { throw "Unreachable"; }
@pragma("vm:exact-result-type", "dart:core#_Smi")
int get hashCode native "String_getHashCode";
@@ -1254,10 +1251,7 @@ class _OneByteString extends _StringBase {
@pragma("vm:entry-point")
class _TwoByteString extends _StringBase {
factory _TwoByteString._uninstantiable() {
throw new UnsupportedError(
"_TwoByteString can only be allocated by the VM");
}
factory _TwoByteString._uninstantiable() { throw "Unreachable"; }
static String _allocateFromTwoByteList(List<int> list, int start, int end)
native "TwoByteString_allocateFromTwoByteList";
@@ -1277,10 +1271,7 @@ class _TwoByteString extends _StringBase {
@pragma("vm:entry-point")
class _ExternalOneByteString extends _StringBase {
factory _ExternalOneByteString._uninstantiable() {
throw new UnsupportedError(
"_ExternalOneByteString can only be allocated by the VM");
}
factory _ExternalOneByteString._uninstantiable() { throw "Unreachable"; }
bool _isWhitespace(int codeUnit) {
return _StringBase._isOneByteWhitespace(codeUnit);
@@ -1296,10 +1287,7 @@ class _ExternalOneByteString extends _StringBase {
@pragma("vm:entry-point")
class _ExternalTwoByteString extends _StringBase {
factory _ExternalTwoByteString._uninstantiable() {
throw new UnsupportedError(
"_ExternalTwoByteString can only be allocated by the VM");
}
factory _ExternalTwoByteString._uninstantiable() { throw "Unreachable"; }
bool _isWhitespace(int codeUnit) {
return _StringBase._isTwoByteWhitespace(codeUnit);
+14 -2
View File
@@ -14,14 +14,26 @@ abstract class _AbstractType implements Type {
// Equivalent of RawType.
@pragma("vm:entry-point")
class _Type extends _AbstractType {
factory _Type._uninstantiable() {
throw "Unreachable";
}
@pragma("vm:exact-result-type", "dart:core#_Smi")
int get hashCode native "Type_getHashCode";
}
// Equivalent of RawTypeRef.
@pragma("vm:entry-point")
class _TypeRef extends _AbstractType {}
class _TypeRef extends _AbstractType {
factory _TypeRef._uninstantiable() {
throw "Unreachable";
}
}
// Equivalent of RawTypeParameter.
@pragma("vm:entry-point")
class _TypeParameter extends _AbstractType {}
class _TypeParameter extends _AbstractType {
factory _TypeParameter._uninstantiable() {
throw "Unreachable";
}
}
+146 -43
View File
@@ -40,14 +40,14 @@ class ByteData implements TypedData {
factory ByteData(int length) {
final list = new Uint8List(length) as _TypedList;
_rangeCheck(list.lengthInBytes, 0, length);
return new _ByteDataView(list, 0, length);
return new _ByteDataView._(list, 0, length);
}
// Called directly from C code.
@pragma("vm:entry-point")
factory ByteData._view(_TypedList typedData, int offsetInBytes, int length) {
_rangeCheck(typedData.lengthInBytes, offsetInBytes, length);
return new _ByteDataView(typedData, offsetInBytes, length);
return new _ByteDataView._(typedData, offsetInBytes, length);
}
}
@@ -1907,14 +1907,14 @@ class _ByteBuffer implements ByteBuffer {
ByteData asByteData([int offsetInBytes = 0, int length]) {
length ??= this.lengthInBytes - offsetInBytes;
_rangeCheck(this._data.lengthInBytes, offsetInBytes, length);
return new _ByteDataView(this._data, offsetInBytes, length);
return new _ByteDataView._(this._data, offsetInBytes, length);
}
Int8List asInt8List([int offsetInBytes = 0, int length]) {
length ??= (this.lengthInBytes - offsetInBytes) ~/ Int8List.bytesPerElement;
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Int8List.bytesPerElement);
return new _Int8ArrayView(this._data, offsetInBytes, length);
return new _Int8ArrayView._(this._data, offsetInBytes, length);
}
Uint8List asUint8List([int offsetInBytes = 0, int length]) {
@@ -1922,7 +1922,7 @@ class _ByteBuffer implements ByteBuffer {
(this.lengthInBytes - offsetInBytes) ~/ Uint8List.bytesPerElement;
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Uint8List.bytesPerElement);
return new _Uint8ArrayView(this._data, offsetInBytes, length);
return new _Uint8ArrayView._(this._data, offsetInBytes, length);
}
Uint8ClampedList asUint8ClampedList([int offsetInBytes = 0, int length]) {
@@ -1930,7 +1930,7 @@ class _ByteBuffer implements ByteBuffer {
Uint8ClampedList.bytesPerElement;
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Uint8ClampedList.bytesPerElement);
return new _Uint8ClampedArrayView(this._data, offsetInBytes, length);
return new _Uint8ClampedArrayView._(this._data, offsetInBytes, length);
}
Int16List asInt16List([int offsetInBytes = 0, int length]) {
@@ -1939,7 +1939,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Int16List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Int16List.bytesPerElement);
return new _Int16ArrayView(this._data, offsetInBytes, length);
return new _Int16ArrayView._(this._data, offsetInBytes, length);
}
Uint16List asUint16List([int offsetInBytes = 0, int length]) {
@@ -1948,7 +1948,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Uint16List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Uint16List.bytesPerElement);
return new _Uint16ArrayView(this._data, offsetInBytes, length);
return new _Uint16ArrayView._(this._data, offsetInBytes, length);
}
Int32List asInt32List([int offsetInBytes = 0, int length]) {
@@ -1957,7 +1957,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Int32List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Int32List.bytesPerElement);
return new _Int32ArrayView(this._data, offsetInBytes, length);
return new _Int32ArrayView._(this._data, offsetInBytes, length);
}
Uint32List asUint32List([int offsetInBytes = 0, int length]) {
@@ -1966,7 +1966,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Uint32List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Uint32List.bytesPerElement);
return new _Uint32ArrayView(this._data, offsetInBytes, length);
return new _Uint32ArrayView._(this._data, offsetInBytes, length);
}
Int64List asInt64List([int offsetInBytes = 0, int length]) {
@@ -1975,7 +1975,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Int64List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Int64List.bytesPerElement);
return new _Int64ArrayView(this._data, offsetInBytes, length);
return new _Int64ArrayView._(this._data, offsetInBytes, length);
}
Uint64List asUint64List([int offsetInBytes = 0, int length]) {
@@ -1984,7 +1984,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(
this.lengthInBytes, offsetInBytes, length * Uint64List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Uint64List.bytesPerElement);
return new _Uint64ArrayView(this._data, offsetInBytes, length);
return new _Uint64ArrayView._(this._data, offsetInBytes, length);
}
Float32List asFloat32List([int offsetInBytes = 0, int length]) {
@@ -1993,7 +1993,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Float32List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Float32List.bytesPerElement);
return new _Float32ArrayView(this._data, offsetInBytes, length);
return new _Float32ArrayView._(this._data, offsetInBytes, length);
}
Float64List asFloat64List([int offsetInBytes = 0, int length]) {
@@ -2002,7 +2002,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Float64List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Float64List.bytesPerElement);
return new _Float64ArrayView(this._data, offsetInBytes, length);
return new _Float64ArrayView._(this._data, offsetInBytes, length);
}
Float32x4List asFloat32x4List([int offsetInBytes = 0, int length]) {
@@ -2011,7 +2011,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Float32x4List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Float32x4List.bytesPerElement);
return new _Float32x4ArrayView(this._data, offsetInBytes, length);
return new _Float32x4ArrayView._(this._data, offsetInBytes, length);
}
Int32x4List asInt32x4List([int offsetInBytes = 0, int length]) {
@@ -2020,7 +2020,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Int32x4List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Int32x4List.bytesPerElement);
return new _Int32x4ArrayView(this._data, offsetInBytes, length);
return new _Int32x4ArrayView._(this._data, offsetInBytes, length);
}
Float64x2List asFloat64x2List([int offsetInBytes = 0, int length]) {
@@ -2029,7 +2029,7 @@ class _ByteBuffer implements ByteBuffer {
_rangeCheck(this.lengthInBytes, offsetInBytes,
length * Float64x2List.bytesPerElement);
_offsetAlignmentCheck(offsetInBytes, Float64x2List.bytesPerElement);
return new _Float64x2ArrayView(this._data, offsetInBytes, length);
return new _Float64x2ArrayView._(this._data, offsetInBytes, length);
}
}
@@ -2139,6 +2139,10 @@ class Int8List {
@pragma("vm:entry-point")
class _Int8List extends _TypedList with _IntListMixin implements Int8List {
factory _Int8List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2181,6 +2185,10 @@ class Uint8List {
@pragma("vm:entry-point")
class _Uint8List extends _TypedList with _IntListMixin implements Uint8List {
factory _Uint8List._uninstantiable() {
throw "Unreachable";
}
// Methods implementing List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2225,6 +2233,10 @@ class Uint8ClampedList {
class _Uint8ClampedList extends _TypedList
with _IntListMixin
implements Uint8ClampedList {
factory _Uint8ClampedList._uninstantiable() {
throw "Unreachable";
}
// Methods implementing List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2267,6 +2279,10 @@ class Int16List {
@pragma("vm:entry-point")
class _Int16List extends _TypedList with _IntListMixin implements Int16List {
factory _Int16List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2328,6 +2344,10 @@ class Uint16List {
@pragma("vm:entry-point")
class _Uint16List extends _TypedList with _IntListMixin implements Uint16List {
factory _Uint16List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2389,6 +2409,10 @@ class Int32List {
@pragma("vm:entry-point")
class _Int32List extends _TypedList with _IntListMixin implements Int32List {
factory _Int32List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -2438,6 +2462,10 @@ class Uint32List {
@pragma("vm:entry-point")
class _Uint32List extends _TypedList with _IntListMixin implements Uint32List {
factory _Uint32List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -2487,6 +2515,10 @@ class Int64List {
@pragma("vm:entry-point")
class _Int64List extends _TypedList with _IntListMixin implements Int64List {
factory _Int64List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -2536,6 +2568,10 @@ class Uint64List {
@pragma("vm:entry-point")
class _Uint64List extends _TypedList with _IntListMixin implements Uint64List {
factory _Uint64List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -2587,6 +2623,10 @@ class Float32List {
class _Float32List extends _TypedList
with _DoubleListMixin
implements Float32List {
factory _Float32List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
@pragma("vm:exact-result-type", "dart:core#_Double")
double operator [](int index) {
@@ -2639,6 +2679,10 @@ class Float64List {
class _Float64List extends _TypedList
with _DoubleListMixin
implements Float64List {
factory _Float64List._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
@pragma("vm:exact-result-type", "dart:core#_Double")
double operator [](int index) {
@@ -2691,6 +2735,10 @@ class Float32x4List {
class _Float32x4List extends _TypedList
with _Float32x4ListMixin
implements Float32x4List {
factory _Float32x4List._uninstantiable() {
throw "Unreachable";
}
@pragma("vm:exact-result-type", _Float32x4)
Float32x4 operator [](int index) {
if (index < 0 || index >= length) {
@@ -2742,6 +2790,10 @@ class Int32x4List {
class _Int32x4List extends _TypedList
with _Int32x4ListMixin
implements Int32x4List {
factory _Int32x4List._uninstantiable() {
throw "Unreachable";
}
@pragma("vm:exact-result-type", _Int32x4)
Int32x4 operator [](int index) {
if (index < 0 || index >= length) {
@@ -2793,6 +2845,10 @@ class Float64x2List {
class _Float64x2List extends _TypedList
with _Float64x2ListMixin
implements Float64x2List {
factory _Float64x2List._uninstantiable() {
throw "Unreachable";
}
@pragma("vm:exact-result-type", _Float64x2)
Float64x2 operator [](int index) {
if (index < 0 || index >= length) {
@@ -2831,6 +2887,10 @@ class _Float64x2List extends _TypedList
class _ExternalInt8Array extends _TypedList
with _IntListMixin
implements Int8List {
factory _ExternalInt8Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -2861,6 +2921,10 @@ class _ExternalInt8Array extends _TypedList
class _ExternalUint8Array extends _TypedList
with _IntListMixin
implements Uint8List {
factory _ExternalUint8Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2892,6 +2956,10 @@ class _ExternalUint8Array extends _TypedList
class _ExternalUint8ClampedArray extends _TypedList
with _IntListMixin
implements Uint8ClampedList {
factory _ExternalUint8ClampedArray._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
@pragma("vm:exact-result-type", "dart:core#_Smi")
int operator [](int index) {
@@ -2923,8 +2991,11 @@ class _ExternalUint8ClampedArray extends _TypedList
class _ExternalInt16Array extends _TypedList
with _IntListMixin
implements Int16List {
// Method(s) implementing the List interface.
factory _ExternalInt16Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -2962,8 +3033,11 @@ class _ExternalInt16Array extends _TypedList
class _ExternalUint16Array extends _TypedList
with _IntListMixin
implements Uint16List {
// Method(s) implementing the List interface.
factory _ExternalUint16Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3001,6 +3075,10 @@ class _ExternalUint16Array extends _TypedList
class _ExternalInt32Array extends _TypedList
with _IntListMixin
implements Int32List {
factory _ExternalInt32Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
@@ -3039,8 +3117,11 @@ class _ExternalInt32Array extends _TypedList
class _ExternalUint32Array extends _TypedList
with _IntListMixin
implements Uint32List {
// Method(s) implementing the List interface.
factory _ExternalUint32Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3078,8 +3159,11 @@ class _ExternalUint32Array extends _TypedList
class _ExternalInt64Array extends _TypedList
with _IntListMixin
implements Int64List {
// Method(s) implementing the List interface.
factory _ExternalInt64Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3117,8 +3201,11 @@ class _ExternalInt64Array extends _TypedList
class _ExternalUint64Array extends _TypedList
with _IntListMixin
implements Uint64List {
// Method(s) implementing the List interface.
factory _ExternalUint64Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
int operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3156,8 +3243,11 @@ class _ExternalUint64Array extends _TypedList
class _ExternalFloat32Array extends _TypedList
with _DoubleListMixin
implements Float32List {
// Method(s) implementing the List interface.
factory _ExternalFloat32Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
double operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3195,8 +3285,11 @@ class _ExternalFloat32Array extends _TypedList
class _ExternalFloat64Array extends _TypedList
with _DoubleListMixin
implements Float64List {
// Method(s) implementing the List interface.
factory _ExternalFloat64Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
double operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3234,8 +3327,11 @@ class _ExternalFloat64Array extends _TypedList
class _ExternalFloat32x4Array extends _TypedList
with _Float32x4ListMixin
implements Float32x4List {
// Method(s) implementing the List interface.
factory _ExternalFloat32x4Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
Float32x4 operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3273,8 +3369,11 @@ class _ExternalFloat32x4Array extends _TypedList
class _ExternalInt32x4Array extends _TypedList
with _Int32x4ListMixin
implements Int32x4List {
// Method(s) implementing the List interface.
factory _ExternalInt32x4Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
Int32x4 operator [](int index) {
if (index < 0 || index >= length) {
throw new RangeError.index(index, this, "index");
@@ -3312,6 +3411,10 @@ class _ExternalInt32x4Array extends _TypedList
class _ExternalFloat64x2Array extends _TypedList
with _Float64x2ListMixin
implements Float64x2List {
factory _ExternalFloat64x2Array._uninstantiable() {
throw "Unreachable";
}
// Method(s) implementing the List interface.
Float64x2 operator [](int index) {
if (index < 0 || index >= length) {
@@ -3599,7 +3702,7 @@ class _Int8ArrayView extends _TypedListView
implements Int8List {
// Constructor.
@pragma("vm:exact-result-type", _Int8ArrayView)
factory _Int8ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Int8ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Int8ArrayView_new";
// Method(s) implementing List interface.
@@ -3636,7 +3739,7 @@ class _Uint8ArrayView extends _TypedListView
implements Uint8List {
// Constructor.
@pragma("vm:exact-result-type", _Uint8ArrayView)
factory _Uint8ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Uint8ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Uint8ArrayView_new";
// Method(s) implementing List interface.
@@ -3673,7 +3776,7 @@ class _Uint8ClampedArrayView extends _TypedListView
implements Uint8ClampedList {
// Constructor.
@pragma("vm:exact-result-type", _Uint8ClampedArrayView)
factory _Uint8ClampedArrayView(_TypedList buffer, int offsetInBytes,
factory _Uint8ClampedArrayView._(_TypedList buffer, int offsetInBytes,
int length) native "TypedDataView_Uint8ClampedArrayView_new";
// Method(s) implementing List interface.
@@ -3710,7 +3813,7 @@ class _Int16ArrayView extends _TypedListView
implements Int16List {
// Constructor.
@pragma("vm:exact-result-type", _Int16ArrayView)
factory _Int16ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Int16ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Int16ArrayView_new";
// Method(s) implementing List interface.
@@ -3759,7 +3862,7 @@ class _Uint16ArrayView extends _TypedListView
implements Uint16List {
// Constructor.
@pragma("vm:exact-result-type", _Uint16ArrayView)
factory _Uint16ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Uint16ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Uint16ArrayView_new";
// Method(s) implementing List interface.
@@ -3809,7 +3912,7 @@ class _Int32ArrayView extends _TypedListView
implements Int32List {
// Constructor.
@pragma("vm:exact-result-type", _Int32ArrayView)
factory _Int32ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Int32ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Int32ArrayView_new";
// Method(s) implementing List interface.
@@ -3846,7 +3949,7 @@ class _Uint32ArrayView extends _TypedListView
implements Uint32List {
// Constructor.
@pragma("vm:exact-result-type", _Uint32ArrayView)
factory _Uint32ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Uint32ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Uint32ArrayView_new";
// Method(s) implementing List interface.
@@ -3883,7 +3986,7 @@ class _Int64ArrayView extends _TypedListView
implements Int64List {
// Constructor.
@pragma("vm:exact-result-type", _Int64ArrayView)
factory _Int64ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Int64ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Int64ArrayView_new";
// Method(s) implementing List interface.
@@ -3920,7 +4023,7 @@ class _Uint64ArrayView extends _TypedListView
implements Uint64List {
// Constructor.
@pragma("vm:exact-result-type", _Uint64ArrayView)
factory _Uint64ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Uint64ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Uint64ArrayView_new";
// Method(s) implementing List interface.
@@ -3957,7 +4060,7 @@ class _Float32ArrayView extends _TypedListView
implements Float32List {
// Constructor.
@pragma("vm:exact-result-type", _Float32ArrayView)
factory _Float32ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Float32ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Float32ArrayView_new";
// Method(s) implementing List interface.
@@ -3994,7 +4097,7 @@ class _Float64ArrayView extends _TypedListView
implements Float64List {
// Constructor.
@pragma("vm:exact-result-type", _Float64ArrayView)
factory _Float64ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Float64ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Float64ArrayView_new";
// Method(s) implementing List interface.
@@ -4031,8 +4134,8 @@ class _Float32x4ArrayView extends _TypedListView
implements Float32x4List {
// Constructor.
@pragma("vm:exact-result-type", _Float32x4ArrayView)
factory _Float32x4ArrayView(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Float32x4ArrayView_new";
factory _Float32x4ArrayView._(_TypedList buffer, int offsetInBytes,
int length) native "TypedDataView_Float32x4ArrayView_new";
// Method(s) implementing List interface.
Float32x4 operator [](int index) {
@@ -4068,7 +4171,7 @@ class _Int32x4ArrayView extends _TypedListView
implements Int32x4List {
// Constructor.
@pragma("vm:exact-result-type", _Int32x4ArrayView)
factory _Int32x4ArrayView(_TypedList buffer, int offsetInBytes, int length)
factory _Int32x4ArrayView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Int32x4ArrayView_new";
// Method(s) implementing List interface.
@@ -4105,8 +4208,8 @@ class _Float64x2ArrayView extends _TypedListView
implements Float64x2List {
// Constructor.
@pragma("vm:exact-result-type", _Float64x2ArrayView)
factory _Float64x2ArrayView(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_Float64x2ArrayView_new";
factory _Float64x2ArrayView._(_TypedList buffer, int offsetInBytes,
int length) native "TypedDataView_Float64x2ArrayView_new";
// Method(s) implementing List interface.
Float64x2 operator [](int index) {
@@ -4139,7 +4242,7 @@ class _Float64x2ArrayView extends _TypedListView
@pragma("vm:entry-point")
class _ByteDataView implements ByteData {
@pragma("vm:exact-result-type", _ByteDataView)
factory _ByteDataView(_TypedList buffer, int offsetInBytes, int length)
factory _ByteDataView._(_TypedList buffer, int offsetInBytes, int length)
native "TypedDataView_ByteDataView_new";
// Method(s) implementing TypedData interface.
+15 -15
View File
@@ -47,21 +47,21 @@ namespace dart {
V(_ByteDataView, get:_typedData, ByteDataViewTypedData, 0x0) \
V(_TypedListView, get:offsetInBytes, TypedDataViewOffsetInBytes, 0x0) \
V(_TypedListView, get:_typedData, TypedDataViewTypedData, 0x0) \
V(_ByteDataView, ., TypedData_ByteDataView_factory, 0x0) \
V(_Int8ArrayView, ., TypedData_Int8ArrayView_factory, 0x0) \
V(_Uint8ArrayView, ., TypedData_Uint8ArrayView_factory, 0x0) \
V(_Uint8ClampedArrayView, ., TypedData_Uint8ClampedArrayView_factory, 0x0) \
V(_Int16ArrayView, ., TypedData_Int16ArrayView_factory, 0x0) \
V(_Uint16ArrayView, ., TypedData_Uint16ArrayView_factory, 0x0) \
V(_Int32ArrayView, ., TypedData_Int32ArrayView_factory, 0x0) \
V(_Uint32ArrayView, ., TypedData_Uint32ArrayView_factory, 0x0) \
V(_Int64ArrayView, ., TypedData_Int64ArrayView_factory, 0x0) \
V(_Uint64ArrayView, ., TypedData_Uint64ArrayView_factory, 0x0) \
V(_Float32ArrayView, ., TypedData_Float32ArrayView_factory, 0x0) \
V(_Float64ArrayView, ., TypedData_Float64ArrayView_factory, 0x0) \
V(_Float32x4ArrayView, ., TypedData_Float32x4ArrayView_factory, 0x0) \
V(_Int32x4ArrayView, ., TypedData_Int32x4ArrayView_factory, 0x0) \
V(_Float64x2ArrayView, ., TypedData_Float64x2ArrayView_factory, 0x0) \
V(_ByteDataView, ._, TypedData_ByteDataView_factory, 0x0) \
V(_Int8ArrayView, ._, TypedData_Int8ArrayView_factory, 0x0) \
V(_Uint8ArrayView, ._, TypedData_Uint8ArrayView_factory, 0x0) \
V(_Uint8ClampedArrayView, ._, TypedData_Uint8ClampedArrayView_factory, 0x0) \
V(_Int16ArrayView, ._, TypedData_Int16ArrayView_factory, 0x0) \
V(_Uint16ArrayView, ._, TypedData_Uint16ArrayView_factory, 0x0) \
V(_Int32ArrayView, ._, TypedData_Int32ArrayView_factory, 0x0) \
V(_Uint32ArrayView, ._, TypedData_Uint32ArrayView_factory, 0x0) \
V(_Int64ArrayView, ._, TypedData_Int64ArrayView_factory, 0x0) \
V(_Uint64ArrayView, ._, TypedData_Uint64ArrayView_factory, 0x0) \
V(_Float32ArrayView, ._, TypedData_Float32ArrayView_factory, 0x0) \
V(_Float64ArrayView, ._, TypedData_Float64ArrayView_factory, 0x0) \
V(_Float32x4ArrayView, ._, TypedData_Float32x4ArrayView_factory, 0x0) \
V(_Int32x4ArrayView, ._, TypedData_Int32x4ArrayView_factory, 0x0) \
V(_Float64x2ArrayView, ._, TypedData_Float64x2ArrayView_factory, 0x0) \
V(::, _toClampedUint8, ConvertIntToClampedUint8, 0x564b0435) \
V(_StringBase, _interpolate, StringBaseInterpolate, 0x01ecb15a) \
V(_IntegerImplementation, toDouble, IntegerToDouble, 0x05da96ed) \