Mypal/js/src/jit/InlinableNatives.h
2019-12-25 15:40:09 +03:00

167 lines
6.0 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* vim: set ts=8 sts=4 et sw=4 tw=99:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef jit_InlinableNatives_h
#define jit_InlinableNatives_h
#define INLINABLE_NATIVE_LIST(_) \
_(Array) \
_(ArrayIsArray) \
_(ArrayJoin) \
_(ArrayPop) \
_(ArrayShift) \
_(ArrayPush) \
_(ArraySlice) \
\
_(AtomicsCompareExchange) \
_(AtomicsExchange) \
_(AtomicsLoad) \
_(AtomicsStore) \
_(AtomicsAdd) \
_(AtomicsSub) \
_(AtomicsAnd) \
_(AtomicsOr) \
_(AtomicsXor) \
_(AtomicsIsLockFree) \
\
_(MathAbs) \
_(MathFloor) \
_(MathCeil) \
_(MathRound) \
_(MathClz32) \
_(MathSqrt) \
_(MathATan2) \
_(MathHypot) \
_(MathMax) \
_(MathMin) \
_(MathPow) \
_(MathRandom) \
_(MathImul) \
_(MathFRound) \
_(MathSin) \
_(MathTan) \
_(MathCos) \
_(MathExp) \
_(MathLog) \
_(MathASin) \
_(MathATan) \
_(MathACos) \
_(MathLog10) \
_(MathLog2) \
_(MathLog1P) \
_(MathExpM1) \
_(MathSinH) \
_(MathTanH) \
_(MathCosH) \
_(MathASinH) \
_(MathATanH) \
_(MathACosH) \
_(MathSign) \
_(MathTrunc) \
_(MathCbrt) \
\
_(RegExpMatcher) \
_(RegExpSearcher) \
_(RegExpTester) \
_(IsRegExpObject) \
_(RegExpPrototypeOptimizable) \
_(RegExpInstanceOptimizable) \
_(GetFirstDollarIndex) \
\
_(String) \
_(StringCharCodeAt) \
_(StringFromCharCode) \
_(StringFromCodePoint) \
_(StringCharAt) \
\
_(IntrinsicStringReplaceString) \
_(IntrinsicStringSplitString) \
\
_(ObjectCreate) \
\
_(SimdInt32x4) \
_(SimdUint32x4) \
_(SimdInt16x8) \
_(SimdUint16x8) \
_(SimdInt8x16) \
_(SimdUint8x16) \
_(SimdFloat32x4) \
_(SimdBool32x4) \
_(SimdBool16x8) \
_(SimdBool8x16) \
\
_(TestBailout) \
_(TestAssertFloat32) \
_(TestAssertRecoveredOnBailout) \
\
_(IntrinsicUnsafeSetReservedSlot) \
_(IntrinsicUnsafeGetReservedSlot) \
_(IntrinsicUnsafeGetObjectFromReservedSlot) \
_(IntrinsicUnsafeGetInt32FromReservedSlot) \
_(IntrinsicUnsafeGetStringFromReservedSlot) \
_(IntrinsicUnsafeGetBooleanFromReservedSlot) \
\
_(IntrinsicIsCallable) \
_(IntrinsicIsConstructor) \
_(IntrinsicToObject) \
_(IntrinsicIsObject) \
_(IntrinsicIsWrappedArrayConstructor) \
_(IntrinsicToInteger) \
_(IntrinsicToString) \
_(IntrinsicIsConstructing) \
_(IntrinsicSubstringKernel) \
_(IntrinsicDefineDataProperty) \
_(IntrinsicObjectHasPrototype) \
\
_(IntrinsicGuardToArrayIterator) \
_(IntrinsicGuardToMapIterator) \
_(IntrinsicGuardToSetIterator) \
_(IntrinsicGuardToStringIterator) \
\
_(IntrinsicGuardToMapObject) \
_(IntrinsicGetNextMapEntryForIterator) \
\
_(IntrinsicGuardToSetObject) \
_(IntrinsicGetNextSetEntryForIterator) \
\
_(IntrinsicArrayBufferByteLength) \
_(IntrinsicPossiblyWrappedArrayBufferByteLength) \
\
_(TypedArrayConstructor) \
_(IntrinsicIsTypedArray) \
_(IntrinsicIsPossiblyWrappedTypedArray) \
_(IntrinsicTypedArrayLength) \
_(IntrinsicPossiblyWrappedTypedArrayLength) \
_(IntrinsicSetDisjointTypedElements) \
\
_(IntrinsicObjectIsTypedObject) \
_(IntrinsicObjectIsTransparentTypedObject) \
_(IntrinsicObjectIsOpaqueTypedObject) \
_(IntrinsicObjectIsTypeDescr) \
_(IntrinsicTypeDescrIsSimpleType) \
_(IntrinsicTypeDescrIsArrayType)\
_(IntrinsicSetTypedObjectOffset)
struct JSJitInfo;
namespace js {
namespace jit {
enum class InlinableNative : uint16_t {
#define ADD_NATIVE(native) native,
INLINABLE_NATIVE_LIST(ADD_NATIVE)
#undef ADD_NATIVE
};
#define ADD_NATIVE(native) extern const JSJitInfo JitInfo_##native;
INLINABLE_NATIVE_LIST(ADD_NATIVE)
#undef ADD_NATIVE
} // namespace jit
} // namespace js
#endif /* jit_InlinableNatives_h */