| /* | 
 |  * Copyright (C) 2011-2017 Apple Inc. All rights reserved. | 
 |  * | 
 |  * Redistribution and use in source and binary forms, with or without | 
 |  * modification, are permitted provided that the following conditions | 
 |  * are met: | 
 |  * 1. Redistributions of source code must retain the above copyright | 
 |  *    notice, this list of conditions and the following disclaimer. | 
 |  * 2. Redistributions in binary form must reproduce the above copyright | 
 |  *    notice, this list of conditions and the following disclaimer in the | 
 |  *    documentation and/or other materials provided with the distribution. | 
 |  * | 
 |  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 
 |  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
 |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
 |  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR | 
 |  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
 |  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
 |  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
 |  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
 |  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
 |  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
 |  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
 |  */ | 
 |  | 
 | #pragma once | 
 |  | 
 | namespace JSC { | 
 |  | 
 | enum Intrinsic { | 
 |     // Call intrinsics. | 
 |     NoIntrinsic, | 
 |     AbsIntrinsic, | 
 |     ACosIntrinsic, | 
 |     ASinIntrinsic, | 
 |     ATanIntrinsic, | 
 |     ACoshIntrinsic, | 
 |     ASinhIntrinsic, | 
 |     ATanhIntrinsic, | 
 |     MinIntrinsic, | 
 |     MaxIntrinsic, | 
 |     SqrtIntrinsic, | 
 |     SinIntrinsic, | 
 |     CbrtIntrinsic, | 
 |     Clz32Intrinsic, | 
 |     CosIntrinsic, | 
 |     TanIntrinsic, | 
 |     CoshIntrinsic, | 
 |     SinhIntrinsic, | 
 |     TanhIntrinsic, | 
 |     ArrayPushIntrinsic, | 
 |     ArrayPopIntrinsic, | 
 |     ArraySliceIntrinsic, | 
 |     ArrayIndexOfIntrinsic, | 
 |     CharCodeAtIntrinsic, | 
 |     CharAtIntrinsic, | 
 |     FromCharCodeIntrinsic, | 
 |     PowIntrinsic, | 
 |     FloorIntrinsic, | 
 |     CeilIntrinsic, | 
 |     RoundIntrinsic, | 
 |     ExpIntrinsic, | 
 |     Expm1Intrinsic, | 
 |     LogIntrinsic, | 
 |     Log10Intrinsic, | 
 |     Log1pIntrinsic, | 
 |     Log2Intrinsic, | 
 |     RegExpExecIntrinsic, | 
 |     RegExpTestIntrinsic, | 
 |     RegExpTestFastIntrinsic, | 
 |     ObjectGetPrototypeOfIntrinsic, | 
 |     ReflectGetPrototypeOfIntrinsic, | 
 |     StringPrototypeValueOfIntrinsic, | 
 |     StringPrototypeReplaceIntrinsic, | 
 |     StringPrototypeReplaceRegExpIntrinsic, | 
 |     StringPrototypeSliceIntrinsic, | 
 |     StringPrototypeToLowerCaseIntrinsic, | 
 |     NumberPrototypeToStringIntrinsic, | 
 |     IMulIntrinsic, | 
 |     RandomIntrinsic, | 
 |     FRoundIntrinsic, | 
 |     TruncIntrinsic, | 
 |     IsTypedArrayViewIntrinsic, | 
 |     BoundThisNoArgsFunctionCallIntrinsic, | 
 |     JSMapGetIntrinsic, | 
 |     JSMapHasIntrinsic, | 
 |     JSMapSetIntrinsic, | 
 |     JSMapBucketHeadIntrinsic, | 
 |     JSMapBucketNextIntrinsic, | 
 |     JSMapBucketKeyIntrinsic, | 
 |     JSMapBucketValueIntrinsic, | 
 |     JSSetHasIntrinsic, | 
 |     JSSetAddIntrinsic, | 
 |     JSSetBucketHeadIntrinsic, | 
 |     JSSetBucketNextIntrinsic, | 
 |     JSSetBucketKeyIntrinsic, | 
 |     JSWeakMapGetIntrinsic, | 
 |     JSWeakMapHasIntrinsic, | 
 |     JSWeakSetHasIntrinsic, | 
 |     HasOwnPropertyIntrinsic, | 
 |     AtomicsAddIntrinsic, | 
 |     AtomicsAndIntrinsic, | 
 |     AtomicsCompareExchangeIntrinsic, | 
 |     AtomicsExchangeIntrinsic, | 
 |     AtomicsIsLockFreeIntrinsic, | 
 |     AtomicsLoadIntrinsic, | 
 |     AtomicsOrIntrinsic, | 
 |     AtomicsStoreIntrinsic, | 
 |     AtomicsSubIntrinsic, | 
 |     AtomicsWaitIntrinsic, | 
 |     AtomicsWakeIntrinsic, | 
 |     AtomicsXorIntrinsic, | 
 |     ParseIntIntrinsic, | 
 |  | 
 |     // Getter intrinsics. | 
 |     TypedArrayLengthIntrinsic, | 
 |     TypedArrayByteLengthIntrinsic, | 
 |     TypedArrayByteOffsetIntrinsic, | 
 |     UnderscoreProtoIntrinsic, | 
 |  | 
 |     // Debugging intrinsics. These are meant to be used as testing hacks within | 
 |     // jsc.cpp and should never be exposed to users. | 
 |     DFGTrueIntrinsic, | 
 |     OSRExitIntrinsic, | 
 |     IsFinalTierIntrinsic, | 
 |     SetInt32HeapPredictionIntrinsic, | 
 |     CheckInt32Intrinsic, | 
 |     FiatInt52Intrinsic, | 
 |  | 
 |     // These are used for $vm performance debugging features. | 
 |     CPUMfenceIntrinsic, | 
 |     CPURdtscIntrinsic, | 
 |     CPUCpuidIntrinsic, | 
 |     CPUPauseIntrinsic, | 
 | }; | 
 |  | 
 | const char* intrinsicName(Intrinsic); | 
 |  | 
 | } // namespace JSC | 
 |  | 
 | namespace WTF { | 
 |  | 
 | class PrintStream; | 
 |  | 
 | void printInternal(PrintStream&, JSC::Intrinsic); | 
 |  | 
 | } // namespace WTF | 
 |  | 
 |  |