blob: e8a7016ccaea9eca6a7d60c9d0549039cab2f4ad [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef RUNTIME_VM_COMPILER_RECOGNIZED_METHODS_LIST_H_
#define RUNTIME_VM_COMPILER_RECOGNIZED_METHODS_LIST_H_
namespace dart {
// clang-format off
// (class-name, function-name, recognized enum, fingerprint).
// When adding a new function, add a 0 as the fingerprint and run the build in
// debug mode to get the correct fingerprint from the mismatch error.
#define OTHER_RECOGNIZED_LIST(V) \
V(::, identical, ObjectIdentical, 0x04168315) \
V(ClassID, getID, ClassIDgetID, 0xdc8b888a) \
V(Object, Object., ObjectConstructor, 0xab6d6cfa) \
V(List, ., ListFactory, 0xbc820cf9) \
V(_List, ., ObjectArrayAllocate, 0xd693eee6) \
V(_List, []=, ObjectArraySetIndexed, 0xd7b48abc) \
V(_GrowableList, ._withData, GrowableArrayAllocateWithData, 0xa32d060b) \
V(_GrowableList, []=, GrowableArraySetIndexed, 0xd7b48abc) \
V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0x1623dc34) \
V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0x177ffe2a) \
V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0x2e40964f) \
V(_TypedList, _getUint16, ByteArrayBaseGetUint16, 0x2fc1f6b9) \
V(_TypedList, _getInt32, ByteArrayBaseGetInt32, 0x19182d0a) \
V(_TypedList, _getUint32, ByteArrayBaseGetUint32, 0x195d6e7b) \
V(_TypedList, _getInt64, ByteArrayBaseGetInt64, 0xf660bfff) \
V(_TypedList, _getUint64, ByteArrayBaseGetUint64, 0x2c5b7959) \
V(_TypedList, _getFloat32, ByteArrayBaseGetFloat32, 0xe8f6a107) \
V(_TypedList, _getFloat64, ByteArrayBaseGetFloat64, 0xf82a3634) \
V(_TypedList, _getFloat32x4, ByteArrayBaseGetFloat32x4, 0xaf2d0ce5) \
V(_TypedList, _getInt32x4, ByteArrayBaseGetInt32x4, 0x5573740b) \
V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0xe18943a2) \
V(_TypedList, _setUint8, ByteArrayBaseSetUint8, 0xaf59b748) \
V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0xbae64027) \
V(_TypedList, _setUint16, ByteArrayBaseSetUint16, 0xce22484f) \
V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0xbddaab40) \
V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0xb966a3b2) \
V(_TypedList, _setInt64, ByteArrayBaseSetInt64, 0xc8cd4f7a) \
V(_TypedList, _setUint64, ByteArrayBaseSetUint64, 0xda473205) \
V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x2f362de0) \
V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x2359f8d2) \
V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x38c6295a) \
V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x5ce9025b) \
V(ByteData, ., ByteDataFactory, 0x8a8b07a8) \
V(_ByteDataView, get:offsetInBytes, ByteDataViewOffsetInBytes, 0x60cef22c) \
V(_ByteDataView, get:_typedData, ByteDataViewTypedData, 0xb9d15ffa) \
V(_TypedListView, get:offsetInBytes, TypedDataViewOffsetInBytes, 0x60cef22c) \
V(_TypedListView, get:_typedData, TypedDataViewTypedData, 0xb9d15ffa) \
V(_ByteDataView, ._, TypedData_ByteDataView_factory, 0x3187137c) \
V(_Int8ArrayView, ._, TypedData_Int8ArrayView_factory, 0x445611ca) \
V(_Uint8ArrayView, ._, TypedData_Uint8ArrayView_factory, 0x96008895) \
V(_Uint8ClampedArrayView, ._, TypedData_Uint8ClampedArrayView_factory, \
0x05397869) \
V(_Int16ArrayView, ._, TypedData_Int16ArrayView_factory, 0x490e13db) \
V(_Uint16ArrayView, ._, TypedData_Uint16ArrayView_factory, 0x9ff8c632) \
V(_Int32ArrayView, ._, TypedData_Int32ArrayView_factory, 0xe2e9aa79) \
V(_Uint32ArrayView, ._, TypedData_Uint32ArrayView_factory, 0x8682baa1) \
V(_Int64ArrayView, ._, TypedData_Int64ArrayView_factory, 0x12c74eaf) \
V(_Uint64ArrayView, ._, TypedData_Uint64ArrayView_factory, 0x25c66efd) \
V(_Float32ArrayView, ._, TypedData_Float32ArrayView_factory, 0xdc968c44) \
V(_Float64ArrayView, ._, TypedData_Float64ArrayView_factory, 0xcb765517) \
V(_Float32x4ArrayView, ._, TypedData_Float32x4ArrayView_factory, 0x665eaec0) \
V(_Int32x4ArrayView, ._, TypedData_Int32x4ArrayView_factory, 0x04b05d05) \
V(_Float64x2ArrayView, ._, TypedData_Float64x2ArrayView_factory, 0x42e25ba4) \
V(Int8List, ., TypedData_Int8Array_factory, 0x660dd888) \
V(Uint8List, ., TypedData_Uint8Array_factory, 0xede3f64f) \
V(Uint8ClampedList, ., TypedData_Uint8ClampedArray_factory, 0x28063755) \
V(Int16List, ., TypedData_Int16Array_factory, 0xd0cd98f3) \
V(Uint16List, ., TypedData_Uint16Array_factory, 0x3cb5fb6a) \
V(Int32List, ., TypedData_Int32Array_factory, 0x1b8ff320) \
V(Uint32List, ., TypedData_Uint32Array_factory, 0x2b2f9a8b) \
V(Int64List, ., TypedData_Int64Array_factory, 0xfb71de2f) \
V(Uint64List, ., TypedData_Uint64Array_factory, 0xe3cfcff8) \
V(Float32List, ., TypedData_Float32Array_factory, 0xa39068fe) \
V(Float64List, ., TypedData_Float64Array_factory, 0xa0c64e91) \
V(Float32x4List, ., TypedData_Float32x4Array_factory, 0x0a7d7b88) \
V(Int32x4List, ., TypedData_Int32x4Array_factory, 0x5a17b46e) \
V(Float64x2List, ., TypedData_Float64x2Array_factory, 0xeccaff6a) \
V(::, _toClampedUint8, ConvertIntToClampedUint8, 0x00fc4650) \
V(::, copyRangeFromUint8ListToOneByteString, \
CopyRangeFromUint8ListToOneByteString, 0x0df019c5) \
V(_StringBase, _interpolate, StringBaseInterpolate, 0xfc28bc84) \
V(_IntegerImplementation, toDouble, IntegerToDouble, 0x97728b46) \
V(_Double, _add, DoubleAdd, 0xea666327) \
V(_Double, _sub, DoubleSub, 0x28474c2e) \
V(_Double, _mul, DoubleMul, 0x1f98c76c) \
V(_Double, _div, DoubleDiv, 0x287d3791) \
V(_Double, _modulo, DoubleMod, 0xfdb397ef) \
V(_Double, ceil, DoubleCeilToInt, 0xcef8d7c5) \
V(_Double, ceilToDouble, DoubleCeilToDouble, 0x5f1bced9) \
V(_Double, floor, DoubleFloorToInt, 0x2a323f88) \
V(_Double, floorToDouble, DoubleFloorToDouble, 0x54b4cb48) \
V(_Double, roundToDouble, DoubleRoundToDouble, 0x5649ca00) \
V(_Double, toInt, DoubleToInteger, 0x676f20a9) \
V(_Double, truncateToDouble, DoubleTruncateToDouble, 0x62d48659) \
V(::, min, MathMin, 0x504a28df) \
V(::, max, MathMax, 0xead7161a) \
V(::, _doublePow, MathDoublePow, 0x989f3334) \
V(::, _intPow, MathIntPow, 0x68b6021e) \
V(::, _sin, MathSin, 0x17daca03) \
V(::, _cos, MathCos, 0xf4947d45) \
V(::, _tan, MathTan, 0xeb1a5537) \
V(::, _asin, MathAsin, 0x29e4d59e) \
V(::, _acos, MathAcos, 0x200aa0db) \
V(::, _atan, MathAtan, 0x10fa60f2) \
V(::, _atan2, MathAtan2, 0x58d4f153) \
V(::, _sqrt, MathSqrt, 0x03183390) \
V(::, _exp, MathExp, 0x00f4ffd0) \
V(::, _log, MathLog, 0x09ae8462) \
V(Float32x4, _Float32x4FromDoubles, Float32x4FromDoubles, 0x1845792b) \
V(Float32x4, Float32x4.zero, Float32x4Zero, 0xd3b64002) \
V(Float32x4, _Float32x4Splat, Float32x4Splat, 0x13a552c3) \
V(Float32x4, Float32x4.fromInt32x4Bits, Int32x4ToFloat32x4, 0x7ed59542) \
V(Float32x4, Float32x4.fromFloat64x2, Float64x2ToFloat32x4, 0x50be8d8d) \
V(_Float32x4, shuffle, Float32x4Shuffle, 0xa7f1b7eb) \
V(_Float32x4, shuffleMix, Float32x4ShuffleMix, 0x79a0c2cc) \
V(_Float32x4, get:signMask, Float32x4GetSignMask, 0x7c6b11ea) \
V(_Float32x4, equal, Float32x4Equal, 0x445aed76) \
V(_Float32x4, greaterThan, Float32x4GreaterThan, 0x524d7d7f) \
V(_Float32x4, greaterThanOrEqual, Float32x4GreaterThanOrEqual, 0x4e6e61b7) \
V(_Float32x4, lessThan, Float32x4LessThan, 0x4a18711d) \
V(_Float32x4, lessThanOrEqual, Float32x4LessThanOrEqual, 0x46775340) \
V(_Float32x4, notEqual, Float32x4NotEqual, 0x644f3543) \
V(_Float32x4, min, Float32x4Min, 0xe41e9e92) \
V(_Float32x4, max, Float32x4Max, 0xc64e2063) \
V(_Float32x4, scale, Float32x4Scale, 0xa3b74802) \
V(_Float32x4, sqrt, Float32x4Sqrt, 0xe4f6fab2) \
V(_Float32x4, reciprocalSqrt, Float32x4ReciprocalSqrt, 0xddd7f238) \
V(_Float32x4, reciprocal, Float32x4Reciprocal, 0xd4522272) \
V(_Float32x4, unary-, Float32x4Negate, 0xe6abc412) \
V(_Float32x4, abs, Float32x4Abs, 0xeb467e48) \
V(_Float32x4, clamp, Float32x4Clamp, 0x77cd71dd) \
V(_Float32x4, _withX, Float32x4WithX, 0xa3179faf) \
V(_Float32x4, _withY, Float32x4WithY, 0x9bb9b443) \
V(_Float32x4, _withZ, Float32x4WithZ, 0x97d62ea0) \
V(_Float32x4, _withW, Float32x4WithW, 0x9533225b) \
V(Float64x2, _Float64x2FromDoubles, Float64x2FromDoubles, 0xd858e051) \
V(Float64x2, Float64x2.zero, Float64x2Zero, 0x82948918) \
V(Float64x2, _Float64x2Splat, Float64x2Splat, 0x5b136bc4) \
V(Float64x2, Float64x2.fromFloat32x4, Float32x4ToFloat64x2, 0x6ea79c66) \
V(_Float64x2, get:x, Float64x2GetX, 0x3a398530) \
V(_Float64x2, get:y, Float64x2GetY, 0x27cae053) \
V(_Float64x2, unary-, Float64x2Negate, 0x958a0d28) \
V(_Float64x2, abs, Float64x2Abs, 0x9a24c75e) \
V(_Float64x2, sqrt, Float64x2Sqrt, 0x93d543c8) \
V(_Float64x2, get:signMask, Float64x2GetSignMask, 0x7c6b11ea) \
V(_Float64x2, scale, Float64x2Scale, 0x52959118) \
V(_Float64x2, _withX, Float64x2WithX, 0x51f5e8c5) \
V(_Float64x2, _withY, Float64x2WithY, 0x4a97fd59) \
V(_Float64x2, min, Float64x2Min, 0x362edc52) \
V(_Float64x2, max, Float64x2Max, 0x185e5e23) \
V(Int32x4, _Int32x4FromInts, Int32x4FromInts, 0xa900bd30) \
V(Int32x4, _Int32x4FromBools, Int32x4FromBools, 0xf56c8fc8) \
V(Int32x4, Int32x4.fromFloat32x4Bits, Float32x4ToInt32x4, 0x45727561) \
V(_Int32x4, get:flagX, Int32x4GetFlagX, 0xc29f03d8) \
V(_Int32x4, get:flagY, Int32x4GetFlagY, 0xde0f3ab8) \
V(_Int32x4, get:flagZ, Int32x4GetFlagZ, 0xebb8d60b) \
V(_Int32x4, get:flagW, Int32x4GetFlagW, 0xf4d8e84c) \
V(_Int32x4, get:signMask, Int32x4GetSignMask, 0x7c6b11ea) \
V(_Int32x4, shuffle, Int32x4Shuffle, 0x406211d3) \
V(_Int32x4, shuffleMix, Int32x4ShuffleMix, 0x4fe8349c) \
V(_Int32x4, select, Int32x4Select, 0x68ca9fa0) \
V(_Int32x4, _withFlagX, Int32x4WithFlagX, 0xb7df0063) \
V(_Int32x4, _withFlagY, Int32x4WithFlagY, 0xa8cf9ba6) \
V(_Int32x4, _withFlagZ, Int32x4WithFlagZ, 0xa8058854) \
V(_Int32x4, _withFlagW, Int32x4WithFlagW, 0xb333f958) \
V(_HashVMBase, get:_index, LinkedHashBase_getIndex, 0x882671dc) \
V(_HashVMBase, set:_index, LinkedHashBase_setIndex, 0xa2be9418) \
V(_HashVMBase, get:_data, LinkedHashBase_getData, 0x780e14ad) \
V(_HashVMBase, set:_data, LinkedHashBase_setData, 0xb6a5c369) \
V(_HashVMBase, get:_usedData, LinkedHashBase_getUsedData, 0x470893ed) \
V(_HashVMBase, set:_usedData, LinkedHashBase_setUsedData, 0xb3c887a9) \
V(_HashVMBase, get:_hashMask, LinkedHashBase_getHashMask, 0x4f0ec79c) \
V(_HashVMBase, set:_hashMask, LinkedHashBase_setHashMask, 0xbbcebb58) \
V(_HashVMBase, get:_deletedKeys, LinkedHashBase_getDeletedKeys, 0x510dc4a0) \
V(_HashVMBase, set:_deletedKeys, LinkedHashBase_setDeletedKeys, 0xbdcdb85c) \
V(_HashVMImmutableBase, get:_data, ImmutableLinkedHashBase_getData, \
0x780e14ad) \
V(_HashVMImmutableBase, get:_indexNullable, \
ImmutableLinkedHashBase_getIndex, 0xfd877bfb) \
V(_HashVMImmutableBase, set:_index, \
ImmutableLinkedHashBase_setIndexStoreRelease, 0xa2be9418) \
V(_WeakProperty, get:key, WeakProperty_getKey, 0xde00e462) \
V(_WeakProperty, set:key, WeakProperty_setKey, 0x963a095f) \
V(_WeakProperty, get:value, WeakProperty_getValue, 0xd2f28aae) \
V(_WeakProperty, set:value, WeakProperty_setValue, 0x8b2bafab) \
V(_WeakReferenceImpl, get:target, WeakReference_getTarget, 0x632d6ca8) \
V(_WeakReferenceImpl, set:_target, WeakReference_setTarget, 0x6edc7518) \
V(::, _classRangeCheck, ClassRangeCheck, 0x09f5fc7a) \
V(::, _abi, FfiAbi, 0x7c4ab3b4) \
V(::, _asFunctionInternal, FfiAsFunctionInternal, 0x92ae104f) \
V(::, _nativeCallbackFunction, FfiNativeCallbackFunction, 0x3ff5ae9c) \
V(::, _nativeEffect, NativeEffect, 0x537dce91) \
V(::, _loadAbiSpecificInt, FfiLoadAbiSpecificInt, 0x7807e872) \
V(::, _loadAbiSpecificIntAtIndex, FfiLoadAbiSpecificIntAtIndex, 0x6aa4cab4) \
V(::, _loadInt8, FfiLoadInt8, 0x0f04e397) \
V(::, _loadInt16, FfiLoadInt16, 0xec4434ee) \
V(::, _loadInt32, FfiLoadInt32, 0xee224384) \
V(::, _loadInt64, FfiLoadInt64, 0xdeefc364) \
V(::, _loadUint8, FfiLoadUint8, 0xe14e2092) \
V(::, _loadUint16, FfiLoadUint16, 0x0cd660ab) \
V(::, _loadUint32, FfiLoadUint32, 0xf66e9416) \
V(::, _loadUint64, FfiLoadUint64, 0x0506018d) \
V(::, _loadFloat, FfiLoadFloat, 0xf8d9845d) \
V(::, _loadFloatUnaligned, FfiLoadFloatUnaligned, 0xc8c8dfff) \
V(::, _loadDouble, FfiLoadDouble, 0xf70cc619) \
V(::, _loadDoubleUnaligned, FfiLoadDoubleUnaligned, 0xc99ebd39) \
V(::, _loadPointer, FfiLoadPointer, 0x4e79d0fc) \
V(::, _storeAbiSpecificInt, FfiStoreAbiSpecificInt, 0xc70954c0) \
V(::, _storeAbiSpecificIntAtIndex, FfiStoreAbiSpecificIntAtIndex, 0xc64efe4b)\
V(::, _storeInt8, FfiStoreInt8, 0xdf50b2cd) \
V(::, _storeInt16, FfiStoreInt16, 0xd84df6f3) \
V(::, _storeInt32, FfiStoreInt32, 0xfbe6301e) \
V(::, _storeInt64, FfiStoreInt64, 0xf1d4113b) \
V(::, _storeUint8, FfiStoreUint8, 0x056dd6b7) \
V(::, _storeUint16, FfiStoreUint16, 0xe2fdae9f) \
V(::, _storeUint32, FfiStoreUint32, 0xe5d7ec86) \
V(::, _storeUint64, FfiStoreUint64, 0xe2d935fa) \
V(::, _storeFloat, FfiStoreFloat, 0x6484f07e) \
V(::, _storeFloatUnaligned, FfiStoreFloatUnaligned, 0x600a9203) \
V(::, _storeDouble, FfiStoreDouble, 0x42998c64) \
V(::, _storeDoubleUnaligned, FfiStoreDoubleUnaligned, 0x3dced75b) \
V(::, _storePointer, FfiStorePointer, 0xea6b7751) \
V(::, _fromAddress, FfiFromAddress, 0xfd8cb1cc) \
V(Pointer, get:address, FfiGetAddress, 0x7cde87be) \
V(::, _asExternalTypedDataInt8, FfiAsExternalTypedDataInt8, 0x768a0698) \
V(::, _asExternalTypedDataInt16, FfiAsExternalTypedDataInt16, 0xd09cf9c6) \
V(::, _asExternalTypedDataInt32, FfiAsExternalTypedDataInt32, 0x38248946) \
V(::, _asExternalTypedDataInt64, FfiAsExternalTypedDataInt64, 0xafaa47fb) \
V(::, _asExternalTypedDataUint8, FfiAsExternalTypedDataUint8, 0x35228834) \
V(::, _asExternalTypedDataUint16, FfiAsExternalTypedDataUint16, 0x89a51e3a) \
V(::, _asExternalTypedDataUint32, FfiAsExternalTypedDataUint32, 0xd272dc41) \
V(::, _asExternalTypedDataUint64, FfiAsExternalTypedDataUint64, 0x06be71c5) \
V(::, _asExternalTypedDataFloat, FfiAsExternalTypedDataFloat, 0x6f465e0c) \
V(::, _asExternalTypedDataDouble, FfiAsExternalTypedDataDouble, 0x40cdd9e1) \
V(::, _getNativeField, GetNativeField, 0xa0139b85) \
V(::, reachabilityFence, ReachabilityFence, 0x730f2b7f) \
V(::, _asyncThenWrapperHelper, AsyncThenWrapperHelper, 0xd9974c34) \
V(_Utf8Decoder, _scan, Utf8DecoderScan, 0x037e7601) \
V(_Future, timeout, FutureTimeout, 0x73041520) \
V(Future, wait, FutureWait, 0x495c83cd) \
V(_RootZone, runUnary, RootZoneRunUnary, 0xb607f8bf) \
V(_FutureListener, handleValue, FutureListenerHandleValue, 0x438115a8) \
V(::, has63BitSmis, Has63BitSmis, 0xf61b56f1) \
// List of intrinsics:
// (class-name, function-name, intrinsification method, fingerprint).
#define CORE_LIB_INTRINSIC_LIST(V) \
V(_Smi, get:bitLength, Smi_bitLength, 0x7ab50ceb) \
V(_BigIntImpl, _lsh, Bigint_lsh, 0x5de6ab16) \
V(_BigIntImpl, _rsh, Bigint_rsh, 0xa8090d4f) \
V(_BigIntImpl, _absAdd, Bigint_absAdd, 0xdc2a8a75) \
V(_BigIntImpl, _absSub, Bigint_absSub, 0x23653a4f) \
V(_BigIntImpl, _mulAdd, Bigint_mulAdd, 0x08fc5919) \
V(_BigIntImpl, _sqrAdd, Bigint_sqrAdd, 0xd1b6bf41) \
V(_BigIntImpl, _estimateQuotientDigit, Bigint_estimateQuotientDigit, \
0x3b2a5ba4) \
V(_BigIntMontgomeryReduction, _mulMod, Montgomery_mulMod, 0xc1c66bf4) \
V(_Double, >, Double_greaterThan, 0x9872cc67) \
V(_Double, >=, Double_greaterEqualThan, 0xfecba6b3) \
V(_Double, <, Double_lessThan, 0xf07a87d4) \
V(_Double, <=, Double_lessEqualThan, 0xb6764495) \
V(_Double, ==, Double_equal, 0xa91c918f) \
V(_Double, +, Double_add, 0xc54725bf) \
V(_Double, -, Double_sub, 0xb8343210) \
V(_Double, *, Double_mul, 0xf9bb3c0d) \
V(_Double, /, Double_div, 0xefe9ca49) \
V(_Double, get:hashCode, Double_hashCode, 0x75e0d093) \
V(_Double, get:_identityHashCode, Double_identityHash, 0x47a56551) \
V(_Double, get:isNaN, Double_getIsNaN, 0xd4890713) \
V(_Double, get:isInfinite, Double_getIsInfinite, 0xc4facbd2) \
V(_Double, get:isNegative, Double_getIsNegative, 0xd4715091) \
V(_Double, _mulFromInteger, Double_mulFromInteger, 0x0a50d2cf) \
V(_Double, .fromInteger, DoubleFromInteger, 0x7d0fd999) \
V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, 0x9911d549) \
V(_RegExp, _ExecuteMatchSticky, RegExp_ExecuteMatchSticky, 0x91dd880f) \
V(Object, ==, ObjectEquals, 0x46587030) \
V(Object, get:runtimeType, ObjectRuntimeType, 0x0381c851) \
V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, 0xce4e6295) \
V(_StringBase, get:hashCode, String_getHashCode, 0x75e0d454) \
V(_StringBase, get:_identityHashCode, String_identityHash, 0x47a56912) \
V(_StringBase, get:isEmpty, StringBaseIsEmpty, 0xfecd3cf3) \
V(_StringBase, _substringMatches, StringBaseSubstringMatches, 0x87094a2a) \
V(_StringBase, [], StringBaseCharAt, 0xd06fc6bf) \
V(_OneByteString, get:hashCode, OneByteString_getHashCode, 0x75e0d454) \
V(_OneByteString, _substringUncheckedNative, \
OneByteString_substringUnchecked, 0x9b18195e) \
V(_OneByteString, ==, OneByteString_equality, 0xb5003d69) \
V(_TwoByteString, ==, TwoByteString_equality, 0xb5003d69) \
V(_Type, get:hashCode, Type_getHashCode, 0x75e0d454) \
V(_Type, ==, Type_equality, 0x465868ae) \
V(_FunctionType, get:hashCode, FunctionType_getHashCode, 0x75e0d454) \
V(_FunctionType, ==, FunctionType_equality, 0x465868ae) \
V(::, _getHash, Object_getHash, 0xc60ff758) \
#define CORE_INTEGER_LIB_INTRINSIC_LIST(V) \
V(_IntegerImplementation, >, Integer_greaterThan, 0xf741693b) \
V(_IntegerImplementation, ==, Integer_equal, 0xa8aba26a) \
V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger, \
0x710f18c2) \
V(_IntegerImplementation, <, Integer_lessThan, 0xf07a87d4) \
V(_IntegerImplementation, <=, Integer_lessEqualThan, 0xb6764495) \
V(_IntegerImplementation, >=, Integer_greaterEqualThan, 0xfecba6b3) \
V(_IntegerImplementation, <<, Integer_shl, 0x2d855b02) \
#define GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \
V(_Int8List, [], Int8ArrayGetIndexed, 0x35f3fab6) \
V(_Int8List, []=, Int8ArraySetIndexed, 0x6e4fdaa7) \
V(_Uint8List, [], Uint8ArrayGetIndexed, 0x9b6c7e76) \
V(_Uint8List, []=, Uint8ArraySetIndexed, 0xbadee66b) \
V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, 0x9b6c7e76) \
V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, 0xbadee66b) \
V(_Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 0x9b6c7e76) \
V(_Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 0xb0de9c0b) \
V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed, \
0x9b6c7e76) \
V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed, \
0xb0de9c0b) \
V(_Int16List, [], Int16ArrayGetIndexed, 0x15f25a16) \
V(_Int16List, []=, Int16ArraySetIndexed, 0xfecf9e32) \
V(_Uint16List, [], Uint16ArrayGetIndexed, 0xf9cb3616) \
V(_Uint16List, []=, Uint16ArraySetIndexed, 0xe71245a9) \
V(_Int32List, [], Int32ArrayGetIndexed, 0x178fffb5) \
V(_Int32List, []=, Int32ArraySetIndexed, 0xdd041ad1) \
V(_Uint32List, [], Uint32ArrayGetIndexed, 0x66e26555) \
V(_Uint32List, []=, Uint32ArraySetIndexed, 0xc8a78f51) \
V(_Int64List, [], Int64ArrayGetIndexed, 0x505859f5) \
V(_Int64List, []=, Int64ArraySetIndexed, 0x5a2e23b7) \
V(_Uint64List, [], Uint64ArrayGetIndexed, 0x8d1cbf75) \
V(_Uint64List, []=, Uint64ArraySetIndexed, 0x258f94ef) \
V(_Float64List, [], Float64ArrayGetIndexed, 0x6d778ebc) \
V(_Float64List, []=, Float64ArraySetIndexed, 0xed47a595) \
V(_Float32List, [], Float32ArrayGetIndexed, 0x43758fdc) \
V(_Float32List, []=, Float32ArraySetIndexed, 0x489602c3) \
V(_Float32x4List, [], Float32x4ArrayGetIndexed, 0xed5d8d35) \
V(_Float32x4List, []=, Float32x4ArraySetIndexed, 0x0b093d30) \
V(_Int32x4List, [], Int32x4ArrayGetIndexed, 0x834607ad) \
V(_Int32x4List, []=, Int32x4ArraySetIndexed, 0x17a2cbc0) \
V(_Float64x2List, [], Float64x2ArrayGetIndexed, 0xea0577df) \
V(_Float64x2List, []=, Float64x2ArraySetIndexed, 0x8af8aa58) \
V(_TypedListBase, get:length, TypedListBaseLength, 0x5850f06b) \
V(_ByteDataView, get:length, ByteDataViewLength, 0x5850f06b) \
V(_Float32x4, get:x, Float32x4ShuffleX, 0x3a398530) \
V(_Float32x4, get:y, Float32x4ShuffleY, 0x27cae053) \
V(_Float32x4, get:z, Float32x4ShuffleZ, 0x5d964be9) \
V(_Float32x4, get:w, Float32x4ShuffleW, 0x3fd6906b) \
V(_Float32x4, *, Float32x4Mul, 0xe5507c87) \
V(_Float32x4, /, Float32x4Div, 0xc09f2f62) \
V(_Float32x4, -, Float32x4Sub, 0xdd326c4a) \
V(_Float32x4, +, Float32x4Add, 0xb7f9a1d9) \
V(_Float64x2, *, Float64x2Mul, 0x3760b686) \
V(_Float64x2, /, Float64x2Div, 0x12af6d22) \
V(_Float64x2, -, Float64x2Sub, 0x2f42a649) \
V(_Float64x2, +, Float64x2Add, 0x0a09dbd8) \
#define GRAPH_CORE_INTRINSICS_LIST(V) \
V(_Array, get:length, ObjectArrayLength, 0x5850f06b) \
V(_Array, [], ObjectArrayGetIndexed, 0x57b029cf) \
V(_List, _setIndexed, ObjectArraySetIndexedUnchecked, 0x02f293ae) \
V(_GrowableList, get:length, GrowableArrayLength, 0x5850f06b) \
V(_GrowableList, get:_capacity, GrowableArrayCapacity, 0x7d9f9bf2) \
V(_GrowableList, _setData, GrowableArraySetData, 0xbdda401b) \
V(_GrowableList, _setLength, GrowableArraySetLength, 0xcc1bf9b6) \
V(_GrowableList, [], GrowableArrayGetIndexed, 0x57b029cf) \
V(_GrowableList, _setIndexed, GrowableArraySetIndexedUnchecked, 0xfb40ee4f) \
V(_StringBase, get:length, StringBaseLength, 0x5850f06b) \
V(_OneByteString, codeUnitAt, OneByteStringCodeUnitAt, 0x17f90910) \
V(_TwoByteString, codeUnitAt, TwoByteStringCodeUnitAt, 0x17f90910) \
V(_ExternalOneByteString, codeUnitAt, ExternalOneByteStringCodeUnitAt, \
0x17f90910) \
V(_ExternalTwoByteString, codeUnitAt, ExternalTwoByteStringCodeUnitAt, \
0x17f90910) \
V(_Smi, ~, Smi_bitNegate, 0x8254f8dc) \
V(_IntegerImplementation, +, Integer_add, 0x8c775aac) \
V(_IntegerImplementation, -, Integer_sub, 0x8080699d) \
V(_IntegerImplementation, *, Integer_mul, 0x63efbe3a) \
V(_IntegerImplementation, %, Integer_mod, 0x93a8d914) \
V(_IntegerImplementation, ~/, Integer_truncDivide, 0x4c5b2b80) \
V(_IntegerImplementation, unary-, Integer_negate, 0xaec000b3) \
V(_IntegerImplementation, &, Integer_bitAnd, 0x42b3d650) \
V(_IntegerImplementation, |, Integer_bitOr, 0x465e5008) \
V(_IntegerImplementation, ^, Integer_bitXor, 0x8f4f190f) \
V(_IntegerImplementation, >>, Integer_sar, 0x4a3615a7) \
V(_IntegerImplementation, >>>, Integer_shr, 0x2bac5209) \
V(_Double, unary-, DoubleFlipSignBit, 0x3d39082b) \
#define GRAPH_INTRINSICS_LIST(V) \
GRAPH_CORE_INTRINSICS_LIST(V) \
GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \
#define DEVELOPER_LIB_INTRINSIC_LIST(V) \
V(::, _getDefaultTag, UserTag_defaultTag, 0x6c19c8a5) \
V(::, _getCurrentTag, Profiler_getCurrentTag, 0x70ead08e) \
V(::, _isDartStreamEnabled, Timeline_isDartStreamEnabled, 0xc97aafb3) \
#define INTERNAL_LIB_INTRINSIC_LIST(V) \
V(::, allocateOneByteString, AllocateOneByteString, 0x9e7745d5) \
V(::, allocateTwoByteString, AllocateTwoByteString, 0xa63c8172) \
V(::, writeIntoOneByteString, WriteIntoOneByteString, 0xd8729161) \
V(::, writeIntoTwoByteString, WriteIntoTwoByteString, 0xcfc7982a) \
#define ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \
CORE_LIB_INTRINSIC_LIST(V) \
DEVELOPER_LIB_INTRINSIC_LIST(V) \
INTERNAL_LIB_INTRINSIC_LIST(V) \
#define ALL_INTRINSICS_LIST(V) \
ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \
CORE_INTEGER_LIB_INTRINSIC_LIST(V)
#define RECOGNIZED_LIST(V) \
OTHER_RECOGNIZED_LIST(V) \
ALL_INTRINSICS_LIST(V) \
GRAPH_INTRINSICS_LIST(V)
// A list of core functions that internally dispatch based on received id.
#define POLYMORPHIC_TARGET_LIST(V) \
V(_StringBase, [], StringBaseCharAt, 0xd06fc6bf) \
V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0x1623dc34) \
V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0x177ffe2a) \
V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0x2e40964f) \
V(_TypedList, _getUint16, ByteArrayBaseGetUint16, 0x2fc1f6b9) \
V(_TypedList, _getInt32, ByteArrayBaseGetInt32, 0x19182d0a) \
V(_TypedList, _getUint32, ByteArrayBaseGetUint32, 0x195d6e7b) \
V(_TypedList, _getInt64, ByteArrayBaseGetInt64, 0xf660bfff) \
V(_TypedList, _getUint64, ByteArrayBaseGetUint64, 0x2c5b7959) \
V(_TypedList, _getFloat32, ByteArrayBaseGetFloat32, 0xe8f6a107) \
V(_TypedList, _getFloat64, ByteArrayBaseGetFloat64, 0xf82a3634) \
V(_TypedList, _getFloat32x4, ByteArrayBaseGetFloat32x4, 0xaf2d0ce5) \
V(_TypedList, _getInt32x4, ByteArrayBaseGetInt32x4, 0x5573740b) \
V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0xe18943a2) \
V(_TypedList, _setUint8, ByteArrayBaseSetInt8, 0xaf59b748) \
V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0xbae64027) \
V(_TypedList, _setUint16, ByteArrayBaseSetInt16, 0xce22484f) \
V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0xbddaab40) \
V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0xb966a3b2) \
V(_TypedList, _setInt64, ByteArrayBaseSetInt64, 0xc8cd4f7a) \
V(_TypedList, _setUint64, ByteArrayBaseSetUint64, 0xda473205) \
V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x2f362de0) \
V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x2359f8d2) \
V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x38c6295a) \
V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x5ce9025b) \
V(Object, get:runtimeType, ObjectRuntimeType, 0x0381c851)
// List of recognized list factories:
// (factory-name-symbol, class-name-string, constructor-name-string,
// result-cid, fingerprint).
#define RECOGNIZED_LIST_FACTORY_LIST(V) \
V(_ListFactory, _List, ., kArrayCid, 0xd693eee6) \
V(_ListFilledFactory, _List, .filled, kArrayCid, 0x7f29060d) \
V(_ListGenerateFactory, _List, .generate, kArrayCid, 0x95feb438) \
V(_GrowableListFactory, _GrowableList, ., kGrowableObjectArrayCid, \
0xc1b55e71) \
V(_GrowableListFilledFactory, _GrowableList, .filled, \
kGrowableObjectArrayCid, 0x37d0dc65) \
V(_GrowableListGenerateFactory, _GrowableList, .generate, \
kGrowableObjectArrayCid, 0x52f61890) \
V(_GrowableListWithData, _GrowableList, ._withData, kGrowableObjectArrayCid, \
0xa32d060b) \
V(_Int8ArrayFactory, Int8List, ., kTypedDataInt8ArrayCid, 0x660dd888) \
V(_Uint8ArrayFactory, Uint8List, ., kTypedDataUint8ArrayCid, 0xede3f64f) \
V(_Uint8ClampedArrayFactory, Uint8ClampedList, ., \
kTypedDataUint8ClampedArrayCid, 0x28063755) \
V(_Int16ArrayFactory, Int16List, ., kTypedDataInt16ArrayCid, 0xd0cd98f3) \
V(_Uint16ArrayFactory, Uint16List, ., kTypedDataUint16ArrayCid, 0x3cb5fb6a) \
V(_Int32ArrayFactory, Int32List, ., kTypedDataInt32ArrayCid, 0x1b8ff320) \
V(_Uint32ArrayFactory, Uint32List, ., kTypedDataUint32ArrayCid, 0x2b2f9a8b) \
V(_Int64ArrayFactory, Int64List, ., kTypedDataInt64ArrayCid, 0xfb71de2f) \
V(_Uint64ArrayFactory, Uint64List, ., kTypedDataUint64ArrayCid, 0xe3cfcff8) \
V(_Float64ArrayFactory, Float64List, ., kTypedDataFloat64ArrayCid, \
0xa0c64e91) \
V(_Float32ArrayFactory, Float32List, ., kTypedDataFloat32ArrayCid, \
0xa39068fe) \
V(_Float32x4ArrayFactory, Float32x4List, ., kTypedDataFloat32x4ArrayCid, \
0x0a7d7b88)
// clang-format on
} // namespace dart
#endif // RUNTIME_VM_COMPILER_RECOGNIZED_METHODS_LIST_H_