// Copyright (c) 2014, 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_METHOD_RECOGNIZER_H_
#define RUNTIME_VM_COMPILER_METHOD_RECOGNIZER_H_

#include "vm/allocation.h"
#include "vm/growable_array.h"
#include "vm/token.h"

namespace dart {

// clang-format off
// (class-name, function-name, recognized enum, result type, fingerprint).
// When adding a new function add a 0 as fingerprint, build and run to get the
// correct fingerprint from the mismatch error (or use Library::GetFunction()
// and print func.SourceFingerprint()).
#define OTHER_RECOGNIZED_LIST(V)                                               \
  V(::, identical, ObjectIdentical, 0x49c6e96a)                                \
  V(ClassID, getID, ClassIDgetID, 0x7b18b257)                                  \
  V(Object, Object., ObjectConstructor, 0x681617fe)                            \
  V(List, ., ListFactory, 0x629f8324)                                          \
  V(_List, ., ObjectArrayAllocate, 0x2121902f)                                 \
  V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0x7041895a)                    \
  V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0x336fa3ea)                  \
  V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0x231bbe2e)                  \
  V(_TypedList, _getUint16, ByteArrayBaseGetUint16, 0x0371785f)                \
  V(_TypedList, _getInt32, ByteArrayBaseGetInt32, 0x65ab3a20)                  \
  V(_TypedList, _getUint32, ByteArrayBaseGetUint32, 0x0cb0fcf6)                \
  V(_TypedList, _getInt64, ByteArrayBaseGetInt64, 0x7db75d78)                  \
  V(_TypedList, _getUint64, ByteArrayBaseGetUint64, 0x1487cfc6)                \
  V(_TypedList, _getFloat32, ByteArrayBaseGetFloat32, 0x6674ea6f)              \
  V(_TypedList, _getFloat64, ByteArrayBaseGetFloat64, 0x236c6e7a)              \
  V(_TypedList, _getFloat32x4, ByteArrayBaseGetFloat32x4, 0x5c367ffb)          \
  V(_TypedList, _getInt32x4, ByteArrayBaseGetInt32x4, 0x772d1c0f)              \
  V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0x12bae36a)                    \
  V(_TypedList, _setUint8, ByteArrayBaseSetUint8, 0x15821cc9)                  \
  V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0x1f8237fa)                  \
  V(_TypedList, _setUint16, ByteArrayBaseSetUint16, 0x181e5d16)                \
  V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0x7ddb9f87)                  \
  V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0x74094f8d)                \
  V(_TypedList, _setInt64, ByteArrayBaseSetInt64, 0x4741396e)                  \
  V(_TypedList, _setUint64, ByteArrayBaseSetUint64, 0x3b398ae4)                \
  V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x03db087b)              \
  V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x38a80b0d)              \
  V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x40052c4e)          \
  V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x07b89f54)              \
  V(::, _toClampedUint8, ConvertIntToClampedUint8, 0x564b0435)                 \
  V(_StringBase, _interpolate, StringBaseInterpolate, 0x01ecb15a)              \
  V(_IntegerImplementation, toDouble, IntegerToDouble, 0x05da96ed)             \
  V(_Double, _add, DoubleAdd, 0x2a38277b)                                      \
  V(_Double, _sub, DoubleSub, 0x4f466391)                                      \
  V(_Double, _mul, DoubleMul, 0x175e4f66)                                      \
  V(_Double, _div, DoubleDiv, 0x0854181b)                                      \
  V(::, min, MathMin, 0x32ebc57d)                                              \
  V(::, max, MathMax, 0x377e8889)                                              \
  V(::, _doublePow, MathDoublePow, 0x5add0ec1)                                 \
  V(::, _intPow, MathIntPow, 0x11b45569)                                       \
  V(Float32x4, Float32x4., Float32x4Constructor, 0x26ea459b)                   \
  V(Float32x4, Float32x4.zero, Float32x4Zero, 0x16eca604)                      \
  V(Float32x4, Float32x4.splat, Float32x4Splat, 0x694e83e3)                    \
  V(Float32x4, Float32x4.fromInt32x4Bits, Int32x4ToFloat32x4, 0x2f62ebd3)      \
  V(Float32x4, Float32x4.fromFloat64x2, Float64x2ToFloat32x4, 0x50ed6910)      \
  V(_Float32x4, shuffle, Float32x4Shuffle, 0x7829101f)                         \
  V(_Float32x4, shuffleMix, Float32x4ShuffleMix, 0x4182c06b)                   \
  V(_Float32x4, get:signMask, Float32x4GetSignMask, 0x1d08b351)                \
  V(_Float32x4, equal, Float32x4Equal, 0x11adb239)                             \
  V(_Float32x4, greaterThan, Float32x4GreaterThan, 0x48adaf58)                 \
  V(_Float32x4, greaterThanOrEqual, Float32x4GreaterThanOrEqual, 0x32db94ca)   \
  V(_Float32x4, lessThan, Float32x4LessThan, 0x425b000c)                       \
  V(_Float32x4, lessThanOrEqual, Float32x4LessThanOrEqual, 0x0278c2f8)         \
  V(_Float32x4, notEqual, Float32x4NotEqual, 0x2987cd26)                       \
  V(_Float32x4, min, Float32x4Min, 0x5ed74b6f)                                 \
  V(_Float32x4, max, Float32x4Max, 0x68696442)                                 \
  V(_Float32x4, scale, Float32x4Scale, 0x704e4122)                             \
  V(_Float32x4, sqrt, Float32x4Sqrt, 0x2c967a6f)                               \
  V(_Float32x4, reciprocalSqrt, Float32x4ReciprocalSqrt, 0x6264bfe8)           \
  V(_Float32x4, reciprocal, Float32x4Reciprocal, 0x3cd7e819)                   \
  V(_Float32x4, unary-, Float32x4Negate, 0x37accb52)                           \
  V(_Float32x4, abs, Float32x4Abs, 0x471cdd87)                                 \
  V(_Float32x4, clamp, Float32x4Clamp, 0x2cb30492)                             \
  V(_Float32x4, withX, Float32x4WithX, 0x4e336aff)                             \
  V(_Float32x4, withY, Float32x4WithY, 0x0a72b910)                             \
  V(_Float32x4, withZ, Float32x4WithZ, 0x31e93658)                             \
  V(_Float32x4, withW, Float32x4WithW, 0x60ddc105)                             \
  V(Float64x2, Float64x2., Float64x2Constructor, 0x43054b9f)                   \
  V(Float64x2, Float64x2.zero, Float64x2Zero, 0x4af12f9d)                      \
  V(Float64x2, Float64x2.splat, Float64x2Splat, 0x134edef0)                    \
  V(Float64x2, Float64x2.fromFloat32x4, Float32x4ToFloat64x2, 0x17d6b5e4)      \
  V(_Float64x2, get:x, Float64x2GetX, 0x58c09c58)                              \
  V(_Float64x2, get:y, Float64x2GetY, 0x3cf5e5b8)                              \
  V(_Float64x2, unary-, Float64x2Negate, 0x415ca009)                           \
  V(_Float64x2, abs, Float64x2Abs, 0x031f9e47)                                 \
  V(_Float64x2, sqrt, Float64x2Sqrt, 0x77f711dd)                               \
  V(_Float64x2, get:signMask, Float64x2GetSignMask, 0x27deda4b)                \
  V(_Float64x2, scale, Float64x2Scale, 0x26830a61)                             \
  V(_Float64x2, withX, Float64x2WithX, 0x1d2bcaf5)                             \
  V(_Float64x2, withY, Float64x2WithY, 0x383ed6ac)                             \
  V(_Float64x2, min, Float64x2Min,  0x28d7ddf6)                                \
  V(_Float64x2, max, Float64x2Max,  0x0bd74e5b)                                \
  V(Int32x4, Int32x4., Int32x4Constructor, 0x480555a9)                         \
  V(Int32x4, Int32x4.bool, Int32x4BoolConstructor, 0x36aa6963)                 \
  V(Int32x4, Int32x4.fromFloat32x4Bits, Float32x4ToInt32x4, 0x6715388a)        \
  V(_Int32x4, get:flagX, Int32x4GetFlagX, 0x56396c82)                          \
  V(_Int32x4, get:flagY, Int32x4GetFlagY, 0x44704738)                          \
  V(_Int32x4, get:flagZ, Int32x4GetFlagZ, 0x20d6ff37)                          \
  V(_Int32x4, get:flagW, Int32x4GetFlagW, 0x5045616a)                          \
  V(_Int32x4, get:signMask, Int32x4GetSignMask, 0x2c1fb2a3)                    \
  V(_Int32x4, shuffle, Int32x4Shuffle, 0x20bc0b16)                             \
  V(_Int32x4, shuffleMix, Int32x4ShuffleMix, 0x5c7056e1)                       \
  V(_Int32x4, select, Int32x4Select, 0x6b49654f)                               \
  V(_Int32x4, withFlagX, Int32x4WithFlagX, 0x0ef58fcf)                         \
  V(_Int32x4, withFlagY, Int32x4WithFlagY, 0x6485a9c4)                         \
  V(_Int32x4, withFlagZ, Int32x4WithFlagZ, 0x267acdfa)                         \
  V(_Int32x4, withFlagW, Int32x4WithFlagW, 0x345ac675)                         \
  V(_HashVMBase, get:_index, LinkedHashMap_getIndex, 0x02477157)               \
  V(_HashVMBase, set:_index, LinkedHashMap_setIndex, 0x4fc8d5e0)               \
  V(_HashVMBase, get:_data, LinkedHashMap_getData, 0x2d7a70ac)                 \
  V(_HashVMBase, set:_data, LinkedHashMap_setData, 0x0ec032e8)                 \
  V(_HashVMBase, get:_usedData, LinkedHashMap_getUsedData, 0x088599ed)         \
  V(_HashVMBase, set:_usedData, LinkedHashMap_setUsedData, 0x5f42ca86)         \
  V(_HashVMBase, get:_hashMask, LinkedHashMap_getHashMask, 0x32f3b13b)         \
  V(_HashVMBase, set:_hashMask, LinkedHashMap_setHashMask, 0x7219c45b)         \
  V(_HashVMBase, get:_deletedKeys, LinkedHashMap_getDeletedKeys, 0x558481c2)   \
  V(_HashVMBase, set:_deletedKeys, LinkedHashMap_setDeletedKeys, 0x5aa9888d)   \
  V(::, _classRangeCheck, ClassRangeCheck, 0x2ae76b84)                         \
  V(::, _classRangeCheckNegative, ClassRangeCheckNegated, 0x5acdfb75)          \


// List of intrinsics:
// (class-name, function-name, intrinsification method, fingerprint).
#define CORE_LIB_INTRINSIC_LIST(V)                                             \
  V(_Smi, ~, Smi_bitNegate, 0x67299f4f)                                        \
  V(_Smi, get:bitLength, Smi_bitLength, 0x25b3cb0a)                            \
  V(_Smi, _bitAndFromSmi, Smi_bitAndFromSmi, 0x562d5047)                       \
  V(_BigIntImpl, _lsh, Bigint_lsh, 0x5b6cfc8b)                                 \
  V(_BigIntImpl, _rsh, Bigint_rsh, 0x6ff14a49)                                 \
  V(_BigIntImpl, _absAdd, Bigint_absAdd, 0x5bf14238)                           \
  V(_BigIntImpl, _absSub, Bigint_absSub, 0x1de5bd32)                           \
  V(_BigIntImpl, _mulAdd, Bigint_mulAdd, 0x6f277966)                           \
  V(_BigIntImpl, _sqrAdd, Bigint_sqrAdd, 0x68e4c8ea)                           \
  V(_BigIntImpl, _estimateQuotientDigit, Bigint_estimateQuotientDigit,         \
    0x35456d91)                                                                \
  V(_BigIntMontgomeryReduction, _mulMod, Montgomery_mulMod, 0x0f7b0375)        \
  V(_Double, >, Double_greaterThan, 0x4f1375a3)                                \
  V(_Double, >=, Double_greaterEqualThan, 0x4260c184)                          \
  V(_Double, <, Double_lessThan, 0x365d1eba)                                   \
  V(_Double, <=, Double_lessEqualThan, 0x74b5eb64)                             \
  V(_Double, ==, Double_equal, 0x613492fc)                                     \
  V(_Double, +, Double_add, 0x53994370)                                        \
  V(_Double, -, Double_sub, 0x3b69d466)                                        \
  V(_Double, *, Double_mul, 0x2bb9bd5d)                                        \
  V(_Double, /, Double_div, 0x483eee28)                                        \
  V(_Double, get:hashCode, Double_hashCode, 0x702b77b7)                        \
  V(_Double, get:_identityHashCode, Double_identityHash, 0x7bda5549)           \
  V(_Double, get:isNaN, Double_getIsNaN, 0x0af9d4a9)                           \
  V(_Double, get:isInfinite, Double_getIsInfinite, 0x0f7acb47)                 \
  V(_Double, get:isNegative, Double_getIsNegative, 0x3a59e7f4)                 \
  V(_Double, _mulFromInteger, Double_mulFromInteger, 0x2017fcf6)               \
  V(_Double, .fromInteger, DoubleFromInteger, 0x6d234f4b)                      \
  V(_GrowableList, .withData, GrowableArray_Allocate, 0x28b2138e)              \
  V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, 0x380184b1)                   \
  V(_RegExp, _ExecuteMatchSticky, RegExp_ExecuteMatchSticky, 0x79b8f955)       \
  V(Object, ==, ObjectEquals, 0x7b32a55a)                                      \
  V(Object, get:runtimeType, ObjectRuntimeType, 0x00e8ab29)                    \
  V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, 0x4dc50799)       \
  V(_StringBase, get:hashCode, String_getHashCode, 0x78c3d446)                 \
  V(_StringBase, get:_identityHashCode, String_identityHash, 0x0472b1d8)       \
  V(_StringBase, get:isEmpty, StringBaseIsEmpty, 0x4a8b29c8)                   \
  V(_StringBase, _substringMatches, StringBaseSubstringMatches, 0x46de4f10)    \
  V(_StringBase, [], StringBaseCharAt, 0x7cbb8603)                             \
  V(_OneByteString, get:hashCode, OneByteString_getHashCode, 0x78c3d446)       \
  V(_OneByteString, _substringUncheckedNative,                                 \
    OneByteString_substringUnchecked,  0x3538ad86)                             \
  V(_OneByteString, _setAt, OneByteStringSetAt, 0x11ffddd1)                    \
  V(_OneByteString, _allocate, OneByteString_allocate,          0x74933376)    \
  V(_OneByteString, ==, OneByteString_equality, 0x4eda197e)                    \
  V(_TwoByteString, ==, TwoByteString_equality, 0x4eda197e)                    \
  V(_Type, get:hashCode, Type_getHashCode, 0x18d1523f)                         \
  V(::, _getHash, Object_getHash, 0x2827856d)                                  \
  V(::, _setHash, Object_setHash, 0x690faebd)                                  \


#define CORE_INTEGER_LIB_INTRINSIC_LIST(V)                                     \
  V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger,           \
    0x6a10c54a)                                                                \
  V(_IntegerImplementation, +, Integer_add, 0x43d53af7)                        \
  V(_IntegerImplementation, _subFromInteger, Integer_subFromInteger,           \
    0x3fa4b1ed)                                                                \
  V(_IntegerImplementation, -, Integer_sub, 0x2dc22e03)                        \
  V(_IntegerImplementation, _mulFromInteger, Integer_mulFromInteger,           \
    0x3216e299)                                                                \
  V(_IntegerImplementation, *, Integer_mul, 0x4e7a1c24)                        \
  V(_IntegerImplementation, _moduloFromInteger, Integer_moduloFromInteger,     \
     0x6348b974)                                                               \
  V(_IntegerImplementation, ~/, Integer_truncDivide, 0x4efb2d39)               \
  V(_IntegerImplementation, unary-, Integer_negate, 0x428bf6fa)                \
  V(_IntegerImplementation, _bitAndFromInteger, Integer_bitAndFromInteger,     \
    0x395b1678)                                                                \
  V(_IntegerImplementation, &, Integer_bitAnd, 0x5ab35f30)                     \
  V(_IntegerImplementation, _bitOrFromInteger, Integer_bitOrFromInteger,       \
    0x6a36b395)                                                                \
  V(_IntegerImplementation, |, Integer_bitOr, 0x267fa107)                      \
  V(_IntegerImplementation, _bitXorFromInteger, Integer_bitXorFromInteger,     \
    0x72da93f0)                                                                \
  V(_IntegerImplementation, ^, Integer_bitXor, 0x0c7b0230)                     \
  V(_IntegerImplementation, _greaterThanFromInteger,                           \
    Integer_greaterThanFromInt, 0x4a50ed58)                                    \
  V(_IntegerImplementation, >, Integer_greaterThan, 0x6599a6e1)                \
  V(_IntegerImplementation, ==, Integer_equal, 0x58abc487)                     \
  V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger,           \
    0x063be842)                                                                \
  V(_IntegerImplementation, <, Integer_lessThan, 0x365d1eba)                   \
  V(_IntegerImplementation, <=, Integer_lessEqualThan, 0x74b5eb64)             \
  V(_IntegerImplementation, >=, Integer_greaterEqualThan, 0x4260c184)          \
  V(_IntegerImplementation, <<, Integer_shl, 0x371c45fa)                       \
  V(_IntegerImplementation, >>, Integer_sar, 0x2b630578)                       \
  V(_Double, toInt, DoubleToInteger, 0x26ef344b)                               \

#define MATH_LIB_INTRINSIC_LIST(V)                                             \
  V(::, sqrt, MathSqrt, 0x70482cf3)                                            \
  V(_Random, _nextState, Random_nextState, 0x2842c4d5)                         \

#define GRAPH_MATH_LIB_INTRINSIC_LIST(V)                                       \
  V(::, sin, MathSin, 0x6b7bd98c)                                              \
  V(::, cos, MathCos, 0x459bf5fe)                                              \
  V(::, tan, MathTan, 0x3bcd772a)                                              \
  V(::, asin, MathAsin, 0x2ecc2fcd)                                            \
  V(::, acos, MathAcos, 0x08cf2212)                                            \
  V(::, atan, MathAtan, 0x1e2731d5)                                            \
  V(::, atan2, MathAtan2, 0x39f1fa41)                                          \

#define TYPED_DATA_LIB_INTRINSIC_LIST(V)                                       \
  V(Int8List, ., TypedData_Int8Array_factory, 0x7e39a3a1)                      \
  V(Uint8List, ., TypedData_Uint8Array_factory, 0x3a79adf7)                    \
  V(Uint8ClampedList, ., TypedData_Uint8ClampedArray_factory, 0x67f38395)      \
  V(Int16List, ., TypedData_Int16Array_factory, 0x6477bda8)                    \
  V(Uint16List, ., TypedData_Uint16Array_factory, 0x5707c5a2)                  \
  V(Int32List, ., TypedData_Int32Array_factory, 0x2b96ec0e)                    \
  V(Uint32List, ., TypedData_Uint32Array_factory, 0x0c1c0d62)                  \
  V(Int64List, ., TypedData_Int64Array_factory, 0x279ab485)                    \
  V(Uint64List, ., TypedData_Uint64Array_factory, 0x7bcb89c2)                  \
  V(Float32List, ., TypedData_Float32Array_factory, 0x43506c09)                \
  V(Float64List, ., TypedData_Float64Array_factory, 0x1fde3eaf)                \
  V(Float32x4List, ., TypedData_Float32x4Array_factory, 0x4a4030d6)            \
  V(Int32x4List, ., TypedData_Int32x4Array_factory, 0x6dd02406)                \
  V(Float64x2List, ., TypedData_Float64x2Array_factory, 0x688e4e97)            \

#define GRAPH_TYPED_DATA_INTRINSICS_LIST(V)                                    \
  V(_Int8List, [], Int8ArrayGetIndexed, 0x49767a2c)                            \
  V(_Int8List, []=, Int8ArraySetIndexed, 0x24f42cd0)                           \
  V(_Uint8List, [], Uint8ArrayGetIndexed, 0x088d86d4)                          \
  V(_Uint8List, []=, Uint8ArraySetIndexed, 0x12639541)                         \
  V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, 0x088d86d4)         \
  V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, 0x12639541)        \
  V(_Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 0x088d86d4)            \
  V(_Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 0x6790dba1)           \
  V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed,       \
    0x088d86d4)                                                                \
  V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed,      \
    0x6790dba1)                                                                \
  V(_Int16List, [], Int16ArrayGetIndexed, 0x5ec64948)                          \
  V(_Int16List, []=, Int16ArraySetIndexed, 0x0e4e8221)                         \
  V(_Uint16List, [], Uint16ArrayGetIndexed, 0x5f49d093)                        \
  V(_Uint16List, []=, Uint16ArraySetIndexed, 0x2efbc90f)                       \
  V(_Int32List, [], Int32ArrayGetIndexed, 0x4bc0d3dd)                          \
  V(_Int32List, []=, Int32ArraySetIndexed, 0x1adf9823)                         \
  V(_Uint32List, [], Uint32ArrayGetIndexed, 0x188658ce)                        \
  V(_Uint32List, []=, Uint32ArraySetIndexed, 0x01f51a79)                       \
  V(_Int64List, [], Int64ArrayGetIndexed, 0x51eafb97)                          \
  V(_Int64List, []=, Int64ArraySetIndexed, 0x376181fb)                         \
  V(_Uint64List, [], Uint64ArrayGetIndexed, 0x4b2a1ba2)                        \
  V(_Uint64List, []=, Uint64ArraySetIndexed, 0x5f881bd4)                       \
  V(_Float64List, [], Float64ArrayGetIndexed, 0x0a714486)                      \
  V(_Float64List, []=, Float64ArraySetIndexed, 0x04937367)                     \
  V(_Float32List, [], Float32ArrayGetIndexed, 0x5ade301f)                      \
  V(_Float32List, []=, Float32ArraySetIndexed, 0x0d5c2e2b)                     \
  V(_Float32x4List, [], Float32x4ArrayGetIndexed, 0x128cddeb)                  \
  V(_Float32x4List, []=, Float32x4ArraySetIndexed, 0x7ad55c72)                 \
  V(_Int32x4List, [], Int32x4ArrayGetIndexed, 0x4b78af9c)                      \
  V(_Int32x4List, []=, Int32x4ArraySetIndexed, 0x31453dab)                     \
  V(_Float64x2List, [], Float64x2ArrayGetIndexed, 0x644a0be1)                  \
  V(_Float64x2List, []=, Float64x2ArraySetIndexed, 0x6b836b0b)                 \
  V(_TypedList, get:length, TypedDataLength, 0x2091c4d8)                       \
  V(_Float32x4, get:x, Float32x4ShuffleX, 0x63d1a9fd)                          \
  V(_Float32x4, get:y, Float32x4ShuffleY, 0x203523d9)                          \
  V(_Float32x4, get:z, Float32x4ShuffleZ, 0x13190678)                          \
  V(_Float32x4, get:w, Float32x4ShuffleW, 0x698a38de)                          \
  V(_Float32x4, *, Float32x4Mul, 0x5dec68b2)                                   \
  V(_Float32x4, -, Float32x4Sub, 0x3ea14461)                                   \
  V(_Float32x4, +, Float32x4Add, 0x7ffcf301)                                   \

#define GRAPH_CORE_INTRINSICS_LIST(V)                                          \
  V(_List, get:length, ObjectArrayLength, 0x25952390)                          \
  V(_List, [], ObjectArrayGetIndexed, 0x653da02e)                              \
  V(_List, []=, ObjectArraySetIndexed, 0x16b3d2b0)                             \
  V(_List, _setIndexed, ObjectArraySetIndexedUnchecked, 0x50d64c75)            \
  V(_ImmutableList, get:length, ImmutableArrayLength, 0x25952390)              \
  V(_ImmutableList, [], ImmutableArrayGetIndexed, 0x653da02e)                  \
  V(_GrowableList, get:length, GrowableArrayLength, 0x18dd86b4)                \
  V(_GrowableList, get:_capacity, GrowableArrayCapacity, 0x2e04be60)           \
  V(_GrowableList, _setData, GrowableArraySetData, 0x3dbea348)                 \
  V(_GrowableList, _setLength, GrowableArraySetLength, 0x753e55da)             \
  V(_GrowableList, [], GrowableArrayGetIndexed, 0x446fe1f0)                    \
  V(_GrowableList, []=, GrowableArraySetIndexed, 0x40a462ec)                   \
  V(_GrowableList, _setIndexed, GrowableArraySetIndexedUnchecked, 0x297083df)  \
  V(_StringBase, get:length, StringBaseLength, 0x2a2d03d1)                     \
  V(_OneByteString, codeUnitAt, OneByteStringCodeUnitAt, 0x55a0a1f3)           \
  V(_TwoByteString, codeUnitAt, TwoByteStringCodeUnitAt, 0x55a0a1f3)           \
  V(_ExternalOneByteString, codeUnitAt, ExternalOneByteStringCodeUnitAt,       \
    0x55a0a1f3)                                                                \
  V(_ExternalTwoByteString, codeUnitAt, ExternalTwoByteStringCodeUnitAt,       \
    0x55a0a1f3)                                                                \
  V(_Double, unary-, DoubleFlipSignBit, 0x6db4674f)                            \
  V(_Double, truncateToDouble, DoubleTruncate, 0x2f27e5d3)                     \
  V(_Double, roundToDouble, DoubleRound, 0x2f89c512)                           \
  V(_Double, floorToDouble, DoubleFloor, 0x6aa87a5f)                           \
  V(_Double, ceilToDouble, DoubleCeil, 0x1b045e9e)                             \
  V(_Double, _modulo, DoubleMod, 0x5b8ceed7)


#define GRAPH_INTRINSICS_LIST(V)                                               \
  GRAPH_CORE_INTRINSICS_LIST(V)                                                \
  GRAPH_TYPED_DATA_INTRINSICS_LIST(V)                                          \
  GRAPH_MATH_LIB_INTRINSIC_LIST(V)                                             \

#define DEVELOPER_LIB_INTRINSIC_LIST(V)                                        \
  V(_UserTag, makeCurrent, UserTag_makeCurrent, 0x0b3066fd)                    \
  V(::, _getDefaultTag, UserTag_defaultTag, 0x69f3f1ad)                        \
  V(::, _getCurrentTag, Profiler_getCurrentTag, 0x05fa99d2)                    \
  V(::, _isDartStreamEnabled, Timeline_isDartStreamEnabled, 0x72f13f7a)        \

#define ASYNC_LIB_INTRINSIC_LIST(V)                                            \
  V(::, _clearAsyncThreadStackTrace, ClearAsyncThreadStackTrace, 0x2edd4b25)   \
  V(::, _setAsyncThreadStackTrace, SetAsyncThreadStackTrace, 0x04f429a7)       \

#define ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V)                                  \
  ASYNC_LIB_INTRINSIC_LIST(V)                                                  \
  CORE_LIB_INTRINSIC_LIST(V)                                                   \
  DEVELOPER_LIB_INTRINSIC_LIST(V)                                              \
  MATH_LIB_INTRINSIC_LIST(V)                                                   \
  TYPED_DATA_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 function that should always be inlined.
#define INLINE_WHITE_LIST(V)                                                   \
  V(Object, ==, ObjectEquals, 0x7b32a55a)                                      \
  V(_List, get:length, ObjectArrayLength, 0x25952390)                          \
  V(_ImmutableList, get:length, ImmutableArrayLength, 0x25952390)              \
  V(_TypedList, get:length, TypedDataLength, 0x2091c4d8)                       \
  V(_GrowableList, get:length, GrowableArrayLength, 0x18dd86b4)                \
  V(_GrowableList, get:_capacity, GrowableArrayCapacity, 0x2e04be60)           \
  V(_GrowableList, add, GrowableListAdd, 0x40b490b8)                           \
  V(_GrowableList, removeLast, GrowableListRemoveLast, 0x007855e5)             \
  V(_StringBase, get:length, StringBaseLength, 0x2a2d03d1)                     \
  V(ListIterator, moveNext, ListIteratorMoveNext, 0x2dca30ce)                  \
  V(_FixedSizeArrayIterator, moveNext, FixedListIteratorMoveNext, 0x324eb20b)  \
  V(_GrowableList, get:iterator, GrowableArrayIterator, 0x5bd2ef37)            \
  V(_GrowableList, forEach, GrowableArrayForEach, 0x74900bb8)                  \
  V(_List, ., ObjectArrayAllocate, 0x2121902f)                                 \
  V(ListMixin, get:isEmpty, ListMixinIsEmpty, 0x7be74d04)                      \
  V(_List, get:iterator, ObjectArrayIterator, 0x6c851c55)                      \
  V(_List, forEach, ObjectArrayForEach, 0x11406b13)                            \
  V(_List, _slice, ObjectArraySlice, 0x4c865d1d)                               \
  V(_ImmutableList, get:iterator, ImmutableArrayIterator, 0x6c851c55)          \
  V(_ImmutableList, forEach, ImmutableArrayForEach, 0x11406b13)                \
  V(_Uint8ArrayView, [], Uint8ArrayViewGetIndexed, 0x7d308247)                 \
  V(_Uint8ArrayView, []=, Uint8ArrayViewSetIndexed, 0x65ba546e)                \
  V(_Int8ArrayView, [], Int8ArrayViewGetIndexed, 0x7e5a8458)                   \
  V(_Int8ArrayView, []=, Int8ArrayViewSetIndexed, 0x62f615e4)                  \
  V(_ByteDataView, setInt8, ByteDataViewSetInt8, 0x6395293e)                   \
  V(_ByteDataView, setUint8, ByteDataViewSetUint8, 0x79979d1f)                 \
  V(_ByteDataView, setInt16, ByteDataViewSetInt16, 0x525ec534)                 \
  V(_ByteDataView, setUint16, ByteDataViewSetUint16, 0x48eda263)               \
  V(_ByteDataView, setInt32, ByteDataViewSetInt32, 0x523666fa)                 \
  V(_ByteDataView, setUint32, ByteDataViewSetUint32, 0x5a4683da)               \
  V(_ByteDataView, setInt64, ByteDataViewSetInt64, 0x4283a650)                 \
  V(_ByteDataView, setUint64, ByteDataViewSetUint64, 0x687a1892)               \
  V(_ByteDataView, setFloat32, ByteDataViewSetFloat32, 0x7d5784fd)             \
  V(_ByteDataView, setFloat64, ByteDataViewSetFloat64, 0x00101e3f)             \
  V(_ByteDataView, getInt8, ByteDataViewGetInt8, 0x68448b4d)                   \
  V(_ByteDataView, getUint8, ByteDataViewGetUint8, 0x5d68cbf2)                 \
  V(_ByteDataView, getInt16, ByteDataViewGetInt16, 0x691b5ead)                 \
  V(_ByteDataView, getUint16, ByteDataViewGetUint16, 0x78b744d8)               \
  V(_ByteDataView, getInt32, ByteDataViewGetInt32, 0x3a0f4efa)                 \
  V(_ByteDataView, getUint32, ByteDataViewGetUint32, 0x583261be)               \
  V(_ByteDataView, getInt64, ByteDataViewGetInt64, 0x77de471c)                 \
  V(_ByteDataView, getUint64, ByteDataViewGetUint64, 0x0ffadc4b)               \
  V(_ByteDataView, getFloat32, ByteDataViewGetFloat32, 0x6a205749)             \
  V(_ByteDataView, getFloat64, ByteDataViewGetFloat64, 0x69f58d27)             \
  V(::, exp, MathExp, 0x32ab9efa)                                              \
  V(::, log, MathLog, 0x1ee8f9fc)                                              \
  V(::, max, MathMax, 0x377e8889)                                              \
  V(::, min, MathMin, 0x32ebc57d)                                              \
  V(::, pow, MathPow, 0x79efc5a2)                                              \
  V(::, _classRangeCheck, ClassRangeCheck, 0x2ae76b84)                         \
  V(::, _classRangeCheckNegative, ClassRangeCheckNegated, 0x5acdfb75)          \
  V(::, _toInt, ConvertMaskedInt, 0x713908fd)                                  \
  V(::, _toInt8, ConvertIntToInt8, 0x7484a780)                                 \
  V(::, _toUint8, ConvertIntToUint8, 0x0a15b522)                               \
  V(::, _toInt16, ConvertIntToInt16, 0x0a83fcc6)                               \
  V(::, _toUint16, ConvertIntToUint16, 0x6087d1af)                             \
  V(::, _toInt32, ConvertIntToInt32, 0x62b451b9)                               \
  V(::, _toUint32, ConvertIntToUint32, 0x17a8e085)                             \
  V(::, _byteSwap16, ByteSwap16, 0x44f173be)                                   \
  V(::, _byteSwap32, ByteSwap32, 0x6219333b)                                   \
  V(::, _byteSwap64, ByteSwap64, 0x9abe57e0)                                   \
  V(Lists, copy, ListsCopy, 0x40e974f6)                                        \
  V(_HashVMBase, get:_index, LinkedHashMap_getIndex, 0x02477157)               \
  V(_HashVMBase, set:_index, LinkedHashMap_setIndex, 0x4fc8d5e0)               \
  V(_HashVMBase, get:_data, LinkedHashMap_getData, 0x2d7a70ac)                 \
  V(_HashVMBase, set:_data, LinkedHashMap_setData, 0x0ec032e8)                 \
  V(_HashVMBase, get:_usedData, LinkedHashMap_getUsedData, 0x088599ed)         \
  V(_HashVMBase, set:_usedData, LinkedHashMap_setUsedData, 0x5f42ca86)         \
  V(_HashVMBase, get:_hashMask, LinkedHashMap_getHashMask, 0x32f3b13b)         \
  V(_HashVMBase, set:_hashMask, LinkedHashMap_setHashMask, 0x7219c45b)         \
  V(_HashVMBase, get:_deletedKeys, LinkedHashMap_getDeletedKeys, 0x558481c2)   \
  V(_HashVMBase, set:_deletedKeys, LinkedHashMap_setDeletedKeys, 0x5aa9888d)   \

// A list of core function that should never be inlined.
#define INLINE_BLACK_LIST(V)                                                   \
  V(::, asin, MathAsin, 0x2ecc2fcd)                                            \
  V(::, acos, MathAcos, 0x08cf2212)                                            \
  V(::, atan, MathAtan, 0x1e2731d5)                                            \
  V(::, atan2, MathAtan2, 0x39f1fa41)                                          \
  V(::, cos, MathCos, 0x459bf5fe)                                              \
  V(::, sin, MathSin, 0x6b7bd98c)                                              \
  V(::, sqrt, MathSqrt, 0x70482cf3)                                            \
  V(::, tan, MathTan, 0x3bcd772a)                                              \
  V(_BigIntImpl, _lsh, Bigint_lsh, 0x5b6cfc8b)                                 \
  V(_BigIntImpl, _rsh, Bigint_rsh, 0x6ff14a49)                                 \
  V(_BigIntImpl, _absAdd, Bigint_absAdd, 0x5bf14238)                           \
  V(_BigIntImpl, _absSub, Bigint_absSub, 0x1de5bd32)                           \
  V(_BigIntImpl, _mulAdd, Bigint_mulAdd, 0x6f277966)                           \
  V(_BigIntImpl, _sqrAdd, Bigint_sqrAdd, 0x68e4c8ea)                           \
  V(_BigIntImpl, _estimateQuotientDigit, Bigint_estimateQuotientDigit,         \
    0x35456d91)                                                                \
  V(_BigIntMontgomeryReduction, _mulMod, Montgomery_mulMod, 0x0f7b0375)        \
  V(_Double, >, Double_greaterThan, 0x4f1375a3)                                \
  V(_Double, >=, Double_greaterEqualThan, 0x4260c184)                          \
  V(_Double, <, Double_lessThan, 0x365d1eba)                                   \
  V(_Double, <=, Double_lessEqualThan, 0x74b5eb64)                             \
  V(_Double, ==, Double_equal, 0x613492fc)                                     \
  V(_Double, +, Double_add, 0x53994370)                                        \
  V(_Double, -, Double_sub, 0x3b69d466)                                        \
  V(_Double, *, Double_mul, 0x2bb9bd5d)                                        \
  V(_Double, /, Double_div, 0x483eee28)                                        \
  V(_IntegerImplementation, +, Integer_add, 0x43d53af7)                        \
  V(_IntegerImplementation, -, Integer_sub, 0x2dc22e03)                        \
  V(_IntegerImplementation, *, Integer_mul, 0x4e7a1c24)                        \
  V(_IntegerImplementation, ~/, Integer_truncDivide, 0x4efb2d39)               \
  V(_IntegerImplementation, unary-, Integer_negate, 0x428bf6fa)                \
  V(_IntegerImplementation, &, Integer_bitAnd, 0x5ab35f30)                     \
  V(_IntegerImplementation, |, Integer_bitOr, 0x267fa107)                      \
  V(_IntegerImplementation, ^, Integer_bitXor, 0x0c7b0230)                     \
  V(_IntegerImplementation, >, Integer_greaterThan, 0x6599a6e1)                \
  V(_IntegerImplementation, ==, Integer_equal, 0x58abc487)                     \
  V(_IntegerImplementation, <, Integer_lessThan, 0x365d1eba)                   \
  V(_IntegerImplementation, <=, Integer_lessEqualThan, 0x74b5eb64)             \
  V(_IntegerImplementation, >=, Integer_greaterEqualThan, 0x4260c184)          \
  V(_IntegerImplementation, <<, Integer_shl, 0x371c45fa)                       \
  V(_IntegerImplementation, >>, Integer_sar, 0x2b630578)                       \

// A list of core functions that internally dispatch based on received id.
#define POLYMORPHIC_TARGET_LIST(V)                                             \
  V(_StringBase, [], StringBaseCharAt, 0x7cbb8603)                             \
  V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0x7041895a)                    \
  V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0x336fa3ea)                  \
  V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0x231bbe2e)                  \
  V(_TypedList, _getUint16, ByteArrayBaseGetUint16, 0x0371785f)                \
  V(_TypedList, _getInt32, ByteArrayBaseGetInt32, 0x65ab3a20)                  \
  V(_TypedList, _getUint32, ByteArrayBaseGetUint32, 0x0cb0fcf6)                \
  V(_TypedList, _getInt64, ByteArrayBaseGetInt64, 0x7db75d78)                  \
  V(_TypedList, _getUint64, ByteArrayBaseGetUint64, 0x1487cfc6)                \
  V(_TypedList, _getFloat32, ByteArrayBaseGetFloat32, 0x6674ea6f)              \
  V(_TypedList, _getFloat64, ByteArrayBaseGetFloat64, 0x236c6e7a)              \
  V(_TypedList, _getFloat32x4, ByteArrayBaseGetFloat32x4, 0x5c367ffb)          \
  V(_TypedList, _getInt32x4, ByteArrayBaseGetInt32x4, 0x772d1c0f)              \
  V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0x12bae36a)                    \
  V(_TypedList, _setUint8, ByteArrayBaseSetInt8, 0x15821cc9)                   \
  V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0x1f8237fa)                  \
  V(_TypedList, _setUint16, ByteArrayBaseSetInt16, 0x181e5d16)                 \
  V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0x7ddb9f87)                  \
  V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0x74094f8d)                \
  V(_TypedList, _setInt64, ByteArrayBaseSetInt64, 0x4741396e)                  \
  V(_TypedList, _setUint64, ByteArrayBaseSetUint64, 0x3b398ae4)                \
  V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x03db087b)              \
  V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x38a80b0d)              \
  V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x40052c4e)          \
  V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x07b89f54)              \
  V(Object, get:runtimeType, ObjectRuntimeType, 0x00e8ab29)

// clang-format on

// Forward declarations.
class Function;
class Library;
class RawFunction;
class RawGrowableObjectArray;
class String;
class Zone;

// Class that recognizes the name and owner of a function and returns the
// corresponding enum. See RECOGNIZED_LIST above for list of recognizable
// functions.
class MethodRecognizer : public AllStatic {
 public:
  enum Kind {
    kUnknown,
#define DEFINE_ENUM_LIST(class_name, function_name, enum_name, fp) k##enum_name,
    RECOGNIZED_LIST(DEFINE_ENUM_LIST)
#undef DEFINE_ENUM_LIST
        kNumRecognizedMethods
  };

  static Kind RecognizeKind(const Function& function);
  static bool AlwaysInline(const Function& function);
  static bool PolymorphicTarget(const Function& function);
  static intptr_t NumArgsCheckedForStaticCall(const Function& function);

  // Try to find an annotation of the form
  //   @pragma("vm:exact-result-type", int)
  //   @pragma("vm:exact-result-type", "dart:core#_Smi")
  // and return the exact cid if found or kDynamicCid otherwise.
  //
  // See [result_type_pragma.md].
  static intptr_t ResultCidFromPragma(const Object& function_or_field);

  // Try to find an annotation of the form
  //   @pragma("vm:non-nullable-result-type")
  // and returns true iff `false` was specified in the annotation.
  //
  // See [pragmas.md].
  static bool HasNonNullableResultTypeFromPragma(
      const Object& function_or_field);

  static intptr_t MethodKindToReceiverCid(Kind kind);
  static const char* KindToCString(Kind kind);

#if !defined(DART_PRECOMPILED_RUNTIME)
  static void InitializeState();
  static RawGrowableObjectArray* QueryRecognizedMethods(Zone* zone);

 private:
  static void Libraries(GrowableArray<Library*>* libs);
#endif  // !defined(DART_PRECOMPILED_RUNTIME)
};

// Recognizes token corresponding to a method name.
class MethodTokenRecognizer : public AllStatic {
 public:
  static Token::Kind RecognizeTokenKind(const String& name);
};

#if !defined(DART_PRECOMPILED_RUNTIME)
#define CHECK_FINGERPRINT2(f, p0, p1, fp)                                      \
  ASSERT(f.CheckSourceFingerprint(#p0 ", " #p1, fp))

#define CHECK_FINGERPRINT3(f, p0, p1, p2, fp)                                  \
  ASSERT(f.CheckSourceFingerprint(#p0 ", " #p1 ", " #p2, fp))
#endif  // !defined(DART_PRECOMPILED_RUNTIME)

// clang-format off
// 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, 0x2121902f)                             \
  V(_GrowableListWithData, _GrowableList, .withData, kGrowableObjectArrayCid,  \
    0x28b2138e)                                                                \
  V(_GrowableListFactory, _GrowableList, ., kGrowableObjectArrayCid,           \
    0x3eed680b)                                                                \
  V(_Int8ArrayFactory, Int8List, ., kTypedDataInt8ArrayCid, 0x7e39a3a1)        \
  V(_Uint8ArrayFactory, Uint8List, ., kTypedDataUint8ArrayCid, 0x3a79adf7)     \
  V(_Uint8ClampedArrayFactory, Uint8ClampedList, .,                            \
    kTypedDataUint8ClampedArrayCid, 0x67f38395)                                \
  V(_Int16ArrayFactory, Int16List, ., kTypedDataInt16ArrayCid, 0x6477bda8)     \
  V(_Uint16ArrayFactory, Uint16List, ., kTypedDataUint16ArrayCid, 0x5707c5a2)  \
  V(_Int32ArrayFactory, Int32List, ., kTypedDataInt32ArrayCid, 0x2b96ec0e)     \
  V(_Uint32ArrayFactory, Uint32List, ., kTypedDataUint32ArrayCid, 0x0c1c0d62)  \
  V(_Int64ArrayFactory, Int64List, ., kTypedDataInt64ArrayCid, 0x279ab485)     \
  V(_Uint64ArrayFactory, Uint64List, ., kTypedDataUint64ArrayCid, 0x7bcb89c2)  \
  V(_Float64ArrayFactory, Float64List, ., kTypedDataFloat64ArrayCid,           \
    0x1fde3eaf)                                                                \
  V(_Float32ArrayFactory, Float32List, ., kTypedDataFloat32ArrayCid,           \
    0x43506c09)                                                                \
  V(_Float32x4ArrayFactory, Float32x4List, ., kTypedDataFloat32x4ArrayCid,     \
    0x4a4030d6)

// clang-format on

// Class that recognizes factories and returns corresponding result cid.
class FactoryRecognizer : public AllStatic {
 public:
  // Return kDynamicCid if factory is not recognized.
  static intptr_t ResultCid(const Function& factory);
};

}  // namespace dart

#endif  // RUNTIME_VM_COMPILER_METHOD_RECOGNIZER_H_
