1/*
2 * Copyright (C) 2014-2019 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#pragma once
27
28namespace JSC {
29
30// It's important to not change the values of existing abort reasons unless we really
31// have to. For this reason there is a BASIC-style numbering that should allow us to
32// sneak new reasons in without changing the numbering of existing reasons - at least
33// for a while.
34enum AbortReason {
35 AHCallFrameMisaligned = 10,
36 AHIndexingTypeIsValid = 20,
37 AHInsaneArgumentCount = 30,
38 AHIsNotCell = 40,
39 AHIsNotInt32 = 50,
40 AHIsNotJSDouble = 60,
41 AHIsNotJSInt32 = 70,
42 AHIsNotJSNumber = 80,
43 AHIsNotNull = 90,
44 AHStackPointerMisaligned = 100,
45 AHStructureIDIsValid = 110,
46 AHNotCellMaskNotInPlace = 120,
47 AHNumberTagNotInPlace = 130,
48 AHTypeInfoInlineTypeFlagsAreValid = 140,
49 AHTypeInfoIsValid = 150,
50 B3Oops = 155,
51 DFGBailedAtTopOfBlock = 161,
52 DFGBailedAtEndOfNode = 162,
53 DFGBasicStorageAllocatorZeroSize = 170,
54 DFGIsNotCell = 180,
55 DFGIneffectiveWatchpoint = 190,
56 DFGNegativeStringLength = 200,
57 DFGSlowPathGeneratorFellThrough = 210,
58 DFGUnreachableBasicBlock = 220,
59 DFGUnreachableNode = 225,
60 DFGUnreasonableOSREntryJumpDestination = 230,
61 DFGVarargsThrowingPathDidNotThrow = 235,
62 FTLCrash = 236,
63 JITDidReturnFromTailCall = 237,
64 JITDivOperandsAreNotNumbers = 240,
65 JITGetByValResultIsNotEmpty = 250,
66 JITNotSupported = 260,
67 JITOffsetIsNotOutOfLine = 270,
68 JITUncoughtExceptionAfterCall = 275,
69 JITUnexpectedCallFrameSize = 277,
70 JITUnreasonableLoopHintJumpTarget = 280,
71 RPWUnreasonableJumpTarget = 290,
72 RepatchIneffectiveWatchpoint = 300,
73 RepatchInsaneArgumentCount = 310,
74 TGInvalidPointer = 320,
75 TGNotSupported = 330,
76 UncheckedOverflow = 335,
77};
78
79// This enum is for CRASH_WITH_SECURITY_IMPLICATION_AND_INFO so we can easily identify which assertion
80// we are looking at even if the calls to crash get coalesed. The same numbering rules above for
81// AbortReason apply here.
82enum CompilerAbortReason {
83 AbstractInterpreterInvalidType = 10,
84 ObjectAllocationSinkingAssertionFailure = 100,
85};
86
87} // namespace JSC
88