Cap length of an array with spread to MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.
[WebKit-https.git] / Source / JavaScriptCore / assembler / AbortReason.h
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
28 namespace 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.
34 enum 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     AHTagMaskNotInPlace                               = 120,
47     AHTagTypeNumberNotInPlace                         = 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     YARRNoInputConsumed                               = 340,
78 };
79
80 // This enum is for CRASH_WITH_SECURITY_IMPLICATION_AND_INFO so we can easily identify which assertion
81 // we are looking at even if the calls to crash get coalesed. The same numbering rules above for
82 // AbortReason apply here.
83 enum CompilerAbortReason {
84     AbstractInterpreterInvalidType                =  10,
85     ObjectAllocationSinkingAssertionFailure       = 100,
86 };
87
88 } // namespace JSC