From cdfb3d4c8ce3375c0db14dbec6d81e1e5d0b4e3c Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 25 Feb 2025 08:22:21 -0800 Subject: [PATCH 01/34] Add TypeAttribute and LayoutKind values --- .../src/System/Reflection/RuntimeCustomAttributeData.cs | 1 + src/coreclr/inc/corhdr.h | 2 ++ .../src/System/Runtime/InteropServices/LayoutKind.cs | 1 + .../src/System/Reflection/TypeAttributes.cs | 1 + .../src/System/Runtime/InteropServices/LayoutKind.cs | 1 + src/mono/mono/metadata/tabledefs.h | 1 + 6 files changed, 7 insertions(+) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs index eab9a97e8ba8e4..38e813bd5d2323 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs @@ -2272,6 +2272,7 @@ internal static bool IsDefined(RuntimeFieldInfo field, RuntimeType? caType) case TypeAttributes.ExplicitLayout: layoutKind = LayoutKind.Explicit; break; case TypeAttributes.AutoLayout: layoutKind = LayoutKind.Auto; break; case TypeAttributes.SequentialLayout: layoutKind = LayoutKind.Sequential; break; + case TypeAttributes.ExtendedLayout: layoutKind = LayoutKind.Extended; break; default: Debug.Fail("Unreachable code"); break; } diff --git a/src/coreclr/inc/corhdr.h b/src/coreclr/inc/corhdr.h index 0bd7755e3b0d5e..4435cfb2123d32 100644 --- a/src/coreclr/inc/corhdr.h +++ b/src/coreclr/inc/corhdr.h @@ -288,6 +288,7 @@ typedef enum CorTypeAttr tdAutoLayout = 0x00000000, // Class fields are auto-laid out tdSequentialLayout = 0x00000008, // Class fields are laid out sequentially tdExplicitLayout = 0x00000010, // Layout is supplied explicitly + tdExtendedLayout = 0x00000018, // Layout is supplied via the System.Runtime.InteropServices.ExtendedLayoutAttribute // end layout mask // Use this mask to retrieve class semantics information. @@ -340,6 +341,7 @@ typedef enum CorTypeAttr #define IsTdAutoLayout(x) (((x) & tdLayoutMask) == tdAutoLayout) #define IsTdSequentialLayout(x) (((x) & tdLayoutMask) == tdSequentialLayout) #define IsTdExplicitLayout(x) (((x) & tdLayoutMask) == tdExplicitLayout) +#define IsTdExtendedLayout(x) (((x) & tdLayoutMask) == tdExtendedLayout) #define IsTdClass(x) (((x) & tdClassSemanticsMask) == tdClass) #define IsTdInterface(x) (((x) & tdClassSemanticsMask) == tdInterface) diff --git a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/LayoutKind.cs b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/LayoutKind.cs index faa81e2c990d35..fc3652ed4a6f6c 100644 --- a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/LayoutKind.cs +++ b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/LayoutKind.cs @@ -7,6 +7,7 @@ namespace System.Runtime.InteropServices public enum LayoutKind { Sequential = 0, // 0x00000008, + Extended = 1, // 0x00000018, Explicit = 2, // 0x00000010, Auto = 3, // 0x00000000, } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs index 245cba7b13bf8e..d3ceede6cd5d71 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs @@ -23,6 +23,7 @@ public enum TypeAttributes AutoLayout = 0x00000000, // Class fields are auto-laid out SequentialLayout = 0x00000008, // Class fields are laid out sequentially ExplicitLayout = 0x00000010, // Layout is supplied explicitly + ExtendedLayout = 0x00000018, // Layout is supplied via the System.Runtime.InteropServices.ExtendedLayoutAttribute // end layout mask // Use this mask to distinguish whether a type declaration is an interface. (Class vs. ValueType done based on whether it subclasses S.ValueType) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/LayoutKind.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/LayoutKind.cs index d1e35fb4cfd10b..167abb657d37ba 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/LayoutKind.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/LayoutKind.cs @@ -7,6 +7,7 @@ namespace System.Runtime.InteropServices public enum LayoutKind { Sequential = 0, + Extended = 1, Explicit = 2, Auto = 3, } diff --git a/src/mono/mono/metadata/tabledefs.h b/src/mono/mono/metadata/tabledefs.h index 52521435fc3b55..137d4e8fad1e7a 100644 --- a/src/mono/mono/metadata/tabledefs.h +++ b/src/mono/mono/metadata/tabledefs.h @@ -116,6 +116,7 @@ enum { #define TYPE_ATTRIBUTE_AUTO_LAYOUT 0x00000000 #define TYPE_ATTRIBUTE_SEQUENTIAL_LAYOUT 0x00000008 #define TYPE_ATTRIBUTE_EXPLICIT_LAYOUT 0x00000010 +#define TYPE_ATTRIBUTE_EXTENDED_LAYOUT 0x00000018 #define TYPE_ATTRIBUTE_CLASS_SEMANTIC_MASK 0x00000020 #define TYPE_ATTRIBUTE_CLASS 0x00000000 From a0b5bfad42bef4402b363799d69972b43014ca0c Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 08:43:34 -0700 Subject: [PATCH 02/34] Update ilasm --- src/coreclr/ilasm/asmparse.y | 4 +- src/coreclr/ilasm/prebuilt/asmparse.cpp | 9550 ++++++++++--------- src/coreclr/ilasm/prebuilt/asmparse.grammar | 13 + src/coreclr/inc/il_kywd.h | 1 + 4 files changed, 4809 insertions(+), 4759 deletions(-) diff --git a/src/coreclr/ilasm/asmparse.y b/src/coreclr/ilasm/asmparse.y index d8ac94474868ff..8f3d3f66ab2352 100644 --- a/src/coreclr/ilasm/asmparse.y +++ b/src/coreclr/ilasm/asmparse.y @@ -76,7 +76,7 @@ %token VALUE_ VALUETYPE_ NATIVE_ INSTANCE_ SPECIALNAME_ FORWARDER_ %token STATIC_ PUBLIC_ PRIVATE_ FAMILY_ FINAL_ SYNCHRONIZED_ INTERFACE_ SEALED_ NESTED_ -%token ABSTRACT_ AUTO_ SEQUENTIAL_ EXPLICIT_ ANSI_ UNICODE_ AUTOCHAR_ IMPORT_ ENUM_ +%token ABSTRACT_ AUTO_ SEQUENTIAL_ EXPLICIT_ EXTENDED_ ANSI_ UNICODE_ AUTOCHAR_ IMPORT_ ENUM_ %token VIRTUAL_ NOINLINING_ AGGRESSIVEINLINING_ NOOPTIMIZATION_ AGGRESSIVEOPTIMIZATION_ UNMANAGEDEXP_ BEFOREFIELDINIT_ ASYNC_ %token STRICT_ RETARGETABLE_ WINDOWSRUNTIME_ NOPLATFORM_ %token METHOD_ FIELD_ PINNED_ MODREQ_ MODOPT_ SERIALIZABLE_ PROPERTY_ TYPE_ @@ -260,6 +260,7 @@ id : ID { $$ = $1; } | NOOPTIMIZATION_ { $$ = newString("nooptimization"); } | AGGRESSIVEOPTIMIZATION_ { $$ = newString("aggressiveoptimization"); } | ASYNC_ { $$ = newString("async"); } + | EXTENDED_ { $$ = newString("extended"); } | SQSTRING { $$ = $1; } ; @@ -444,6 +445,7 @@ classAttr : /* EMPTY */ { $$ = (CorRegTypeAt | classAttr AUTO_ { $$ = (CorRegTypeAttr) (($1 & ~tdLayoutMask) | tdAutoLayout); } | classAttr SEQUENTIAL_ { $$ = (CorRegTypeAttr) (($1 & ~tdLayoutMask) | tdSequentialLayout); } | classAttr EXPLICIT_ { $$ = (CorRegTypeAttr) (($1 & ~tdLayoutMask) | tdExplicitLayout); } + | classAttr EXTENDED_ { $$ = (CorRegTypeAttr) (($1 & ~tdLayoutMask) | tdExtendedLayout); } | classAttr ANSI_ { $$ = (CorRegTypeAttr) (($1 & ~tdStringFormatMask) | tdAnsiClass); } | classAttr UNICODE_ { $$ = (CorRegTypeAttr) (($1 & ~tdStringFormatMask) | tdUnicodeClass); } | classAttr AUTOCHAR_ { $$ = (CorRegTypeAttr) (($1 & ~tdStringFormatMask) | tdAutoClass); } diff --git a/src/coreclr/ilasm/prebuilt/asmparse.cpp b/src/coreclr/ilasm/prebuilt/asmparse.cpp index 38d9c6666bf16e..9a359c3c965dda 100644 --- a/src/coreclr/ilasm/prebuilt/asmparse.cpp +++ b/src/coreclr/ilasm/prebuilt/asmparse.cpp @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 1 "asmparse.y" +#line 1 ".\\src\\coreclr\\ilasm\\asmparse.y" // Licensed to the .NET Foundation under one or more agreements. @@ -81,7 +81,7 @@ #include "grammar_before.cpp" -#line 85 "prebuilt\\asmparse.cpp" +#line 85 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" # ifndef YY_CAST # ifdef __cplusplus @@ -206,209 +206,210 @@ extern int yydebug; AUTO_ = 339, /* AUTO_ */ SEQUENTIAL_ = 340, /* SEQUENTIAL_ */ EXPLICIT_ = 341, /* EXPLICIT_ */ - ANSI_ = 342, /* ANSI_ */ - UNICODE_ = 343, /* UNICODE_ */ - AUTOCHAR_ = 344, /* AUTOCHAR_ */ - IMPORT_ = 345, /* IMPORT_ */ - ENUM_ = 346, /* ENUM_ */ - VIRTUAL_ = 347, /* VIRTUAL_ */ - NOINLINING_ = 348, /* NOINLINING_ */ - AGGRESSIVEINLINING_ = 349, /* AGGRESSIVEINLINING_ */ - NOOPTIMIZATION_ = 350, /* NOOPTIMIZATION_ */ - AGGRESSIVEOPTIMIZATION_ = 351, /* AGGRESSIVEOPTIMIZATION_ */ - UNMANAGEDEXP_ = 352, /* UNMANAGEDEXP_ */ - BEFOREFIELDINIT_ = 353, /* BEFOREFIELDINIT_ */ - ASYNC_ = 354, /* ASYNC_ */ - STRICT_ = 355, /* STRICT_ */ - RETARGETABLE_ = 356, /* RETARGETABLE_ */ - WINDOWSRUNTIME_ = 357, /* WINDOWSRUNTIME_ */ - NOPLATFORM_ = 358, /* NOPLATFORM_ */ - METHOD_ = 359, /* METHOD_ */ - FIELD_ = 360, /* FIELD_ */ - PINNED_ = 361, /* PINNED_ */ - MODREQ_ = 362, /* MODREQ_ */ - MODOPT_ = 363, /* MODOPT_ */ - SERIALIZABLE_ = 364, /* SERIALIZABLE_ */ - PROPERTY_ = 365, /* PROPERTY_ */ - TYPE_ = 366, /* TYPE_ */ - ASSEMBLY_ = 367, /* ASSEMBLY_ */ - FAMANDASSEM_ = 368, /* FAMANDASSEM_ */ - FAMORASSEM_ = 369, /* FAMORASSEM_ */ - PRIVATESCOPE_ = 370, /* PRIVATESCOPE_ */ - HIDEBYSIG_ = 371, /* HIDEBYSIG_ */ - NEWSLOT_ = 372, /* NEWSLOT_ */ - RTSPECIALNAME_ = 373, /* RTSPECIALNAME_ */ - PINVOKEIMPL_ = 374, /* PINVOKEIMPL_ */ - _CTOR = 375, /* _CTOR */ - _CCTOR = 376, /* _CCTOR */ - LITERAL_ = 377, /* LITERAL_ */ - NOTSERIALIZED_ = 378, /* NOTSERIALIZED_ */ - INITONLY_ = 379, /* INITONLY_ */ - REQSECOBJ_ = 380, /* REQSECOBJ_ */ - CIL_ = 381, /* CIL_ */ - OPTIL_ = 382, /* OPTIL_ */ - MANAGED_ = 383, /* MANAGED_ */ - FORWARDREF_ = 384, /* FORWARDREF_ */ - PRESERVESIG_ = 385, /* PRESERVESIG_ */ - RUNTIME_ = 386, /* RUNTIME_ */ - INTERNALCALL_ = 387, /* INTERNALCALL_ */ - _IMPORT = 388, /* _IMPORT */ - NOMANGLE_ = 389, /* NOMANGLE_ */ - LASTERR_ = 390, /* LASTERR_ */ - WINAPI_ = 391, /* WINAPI_ */ - AS_ = 392, /* AS_ */ - BESTFIT_ = 393, /* BESTFIT_ */ - ON_ = 394, /* ON_ */ - OFF_ = 395, /* OFF_ */ - CHARMAPERROR_ = 396, /* CHARMAPERROR_ */ - INSTR_NONE = 397, /* INSTR_NONE */ - INSTR_VAR = 398, /* INSTR_VAR */ - INSTR_I = 399, /* INSTR_I */ - INSTR_I8 = 400, /* INSTR_I8 */ - INSTR_R = 401, /* INSTR_R */ - INSTR_BRTARGET = 402, /* INSTR_BRTARGET */ - INSTR_METHOD = 403, /* INSTR_METHOD */ - INSTR_FIELD = 404, /* INSTR_FIELD */ - INSTR_TYPE = 405, /* INSTR_TYPE */ - INSTR_STRING = 406, /* INSTR_STRING */ - INSTR_SIG = 407, /* INSTR_SIG */ - INSTR_TOK = 408, /* INSTR_TOK */ - INSTR_SWITCH = 409, /* INSTR_SWITCH */ - _CLASS = 410, /* _CLASS */ - _NAMESPACE = 411, /* _NAMESPACE */ - _METHOD = 412, /* _METHOD */ - _FIELD = 413, /* _FIELD */ - _DATA = 414, /* _DATA */ - _THIS = 415, /* _THIS */ - _BASE = 416, /* _BASE */ - _NESTER = 417, /* _NESTER */ - _EMITBYTE = 418, /* _EMITBYTE */ - _TRY = 419, /* _TRY */ - _MAXSTACK = 420, /* _MAXSTACK */ - _LOCALS = 421, /* _LOCALS */ - _ENTRYPOINT = 422, /* _ENTRYPOINT */ - _ZEROINIT = 423, /* _ZEROINIT */ - _EVENT = 424, /* _EVENT */ - _ADDON = 425, /* _ADDON */ - _REMOVEON = 426, /* _REMOVEON */ - _FIRE = 427, /* _FIRE */ - _OTHER = 428, /* _OTHER */ - _PROPERTY = 429, /* _PROPERTY */ - _SET = 430, /* _SET */ - _GET = 431, /* _GET */ - _PERMISSION = 432, /* _PERMISSION */ - _PERMISSIONSET = 433, /* _PERMISSIONSET */ - REQUEST_ = 434, /* REQUEST_ */ - DEMAND_ = 435, /* DEMAND_ */ - ASSERT_ = 436, /* ASSERT_ */ - DENY_ = 437, /* DENY_ */ - PERMITONLY_ = 438, /* PERMITONLY_ */ - LINKCHECK_ = 439, /* LINKCHECK_ */ - INHERITCHECK_ = 440, /* INHERITCHECK_ */ - REQMIN_ = 441, /* REQMIN_ */ - REQOPT_ = 442, /* REQOPT_ */ - REQREFUSE_ = 443, /* REQREFUSE_ */ - PREJITGRANT_ = 444, /* PREJITGRANT_ */ - PREJITDENY_ = 445, /* PREJITDENY_ */ - NONCASDEMAND_ = 446, /* NONCASDEMAND_ */ - NONCASLINKDEMAND_ = 447, /* NONCASLINKDEMAND_ */ - NONCASINHERITANCE_ = 448, /* NONCASINHERITANCE_ */ - _LINE = 449, /* _LINE */ - P_LINE = 450, /* P_LINE */ - _LANGUAGE = 451, /* _LANGUAGE */ - _CUSTOM = 452, /* _CUSTOM */ - INIT_ = 453, /* INIT_ */ - _SIZE = 454, /* _SIZE */ - _PACK = 455, /* _PACK */ - _VTABLE = 456, /* _VTABLE */ - _VTFIXUP = 457, /* _VTFIXUP */ - FROMUNMANAGED_ = 458, /* FROMUNMANAGED_ */ - CALLMOSTDERIVED_ = 459, /* CALLMOSTDERIVED_ */ - _VTENTRY = 460, /* _VTENTRY */ - RETAINAPPDOMAIN_ = 461, /* RETAINAPPDOMAIN_ */ - _FILE = 462, /* _FILE */ - NOMETADATA_ = 463, /* NOMETADATA_ */ - _HASH = 464, /* _HASH */ - _ASSEMBLY = 465, /* _ASSEMBLY */ - _PUBLICKEY = 466, /* _PUBLICKEY */ - _PUBLICKEYTOKEN = 467, /* _PUBLICKEYTOKEN */ - ALGORITHM_ = 468, /* ALGORITHM_ */ - _VER = 469, /* _VER */ - _LOCALE = 470, /* _LOCALE */ - EXTERN_ = 471, /* EXTERN_ */ - _MRESOURCE = 472, /* _MRESOURCE */ - _MODULE = 473, /* _MODULE */ - _EXPORT = 474, /* _EXPORT */ - LEGACY_ = 475, /* LEGACY_ */ - LIBRARY_ = 476, /* LIBRARY_ */ - X86_ = 477, /* X86_ */ - AMD64_ = 478, /* AMD64_ */ - ARM_ = 479, /* ARM_ */ - ARM64_ = 480, /* ARM64_ */ - MARSHAL_ = 481, /* MARSHAL_ */ - CUSTOM_ = 482, /* CUSTOM_ */ - SYSSTRING_ = 483, /* SYSSTRING_ */ - FIXED_ = 484, /* FIXED_ */ - VARIANT_ = 485, /* VARIANT_ */ - CURRENCY_ = 486, /* CURRENCY_ */ - SYSCHAR_ = 487, /* SYSCHAR_ */ - DECIMAL_ = 488, /* DECIMAL_ */ - DATE_ = 489, /* DATE_ */ - BSTR_ = 490, /* BSTR_ */ - TBSTR_ = 491, /* TBSTR_ */ - LPSTR_ = 492, /* LPSTR_ */ - LPWSTR_ = 493, /* LPWSTR_ */ - LPTSTR_ = 494, /* LPTSTR_ */ - OBJECTREF_ = 495, /* OBJECTREF_ */ - IUNKNOWN_ = 496, /* IUNKNOWN_ */ - IDISPATCH_ = 497, /* IDISPATCH_ */ - STRUCT_ = 498, /* STRUCT_ */ - SAFEARRAY_ = 499, /* SAFEARRAY_ */ - BYVALSTR_ = 500, /* BYVALSTR_ */ - LPVOID_ = 501, /* LPVOID_ */ - ANY_ = 502, /* ANY_ */ - ARRAY_ = 503, /* ARRAY_ */ - LPSTRUCT_ = 504, /* LPSTRUCT_ */ - IIDPARAM_ = 505, /* IIDPARAM_ */ - IN_ = 506, /* IN_ */ - OUT_ = 507, /* OUT_ */ - OPT_ = 508, /* OPT_ */ - _PARAM = 509, /* _PARAM */ - _OVERRIDE = 510, /* _OVERRIDE */ - WITH_ = 511, /* WITH_ */ - NULL_ = 512, /* NULL_ */ - ERROR_ = 513, /* ERROR_ */ - HRESULT_ = 514, /* HRESULT_ */ - CARRAY_ = 515, /* CARRAY_ */ - USERDEFINED_ = 516, /* USERDEFINED_ */ - RECORD_ = 517, /* RECORD_ */ - FILETIME_ = 518, /* FILETIME_ */ - BLOB_ = 519, /* BLOB_ */ - STREAM_ = 520, /* STREAM_ */ - STORAGE_ = 521, /* STORAGE_ */ - STREAMED_OBJECT_ = 522, /* STREAMED_OBJECT_ */ - STORED_OBJECT_ = 523, /* STORED_OBJECT_ */ - BLOB_OBJECT_ = 524, /* BLOB_OBJECT_ */ - CF_ = 525, /* CF_ */ - CLSID_ = 526, /* CLSID_ */ - VECTOR_ = 527, /* VECTOR_ */ - _SUBSYSTEM = 528, /* _SUBSYSTEM */ - _CORFLAGS = 529, /* _CORFLAGS */ - ALIGNMENT_ = 530, /* ALIGNMENT_ */ - _IMAGEBASE = 531, /* _IMAGEBASE */ - _STACKRESERVE = 532, /* _STACKRESERVE */ - _TYPEDEF = 533, /* _TYPEDEF */ - _TEMPLATE = 534, /* _TEMPLATE */ - _TYPELIST = 535, /* _TYPELIST */ - _MSCORLIB = 536, /* _MSCORLIB */ - P_DEFINE = 537, /* P_DEFINE */ - P_UNDEF = 538, /* P_UNDEF */ - P_IFDEF = 539, /* P_IFDEF */ - P_IFNDEF = 540, /* P_IFNDEF */ - P_ELSE = 541, /* P_ELSE */ - P_ENDIF = 542, /* P_ENDIF */ - P_INCLUDE = 543, /* P_INCLUDE */ - CONSTRAINT_ = 544 /* CONSTRAINT_ */ + EXTENDED_ = 342, /* EXTENDED_ */ + ANSI_ = 343, /* ANSI_ */ + UNICODE_ = 344, /* UNICODE_ */ + AUTOCHAR_ = 345, /* AUTOCHAR_ */ + IMPORT_ = 346, /* IMPORT_ */ + ENUM_ = 347, /* ENUM_ */ + VIRTUAL_ = 348, /* VIRTUAL_ */ + NOINLINING_ = 349, /* NOINLINING_ */ + AGGRESSIVEINLINING_ = 350, /* AGGRESSIVEINLINING_ */ + NOOPTIMIZATION_ = 351, /* NOOPTIMIZATION_ */ + AGGRESSIVEOPTIMIZATION_ = 352, /* AGGRESSIVEOPTIMIZATION_ */ + UNMANAGEDEXP_ = 353, /* UNMANAGEDEXP_ */ + BEFOREFIELDINIT_ = 354, /* BEFOREFIELDINIT_ */ + ASYNC_ = 355, /* ASYNC_ */ + STRICT_ = 356, /* STRICT_ */ + RETARGETABLE_ = 357, /* RETARGETABLE_ */ + WINDOWSRUNTIME_ = 358, /* WINDOWSRUNTIME_ */ + NOPLATFORM_ = 359, /* NOPLATFORM_ */ + METHOD_ = 360, /* METHOD_ */ + FIELD_ = 361, /* FIELD_ */ + PINNED_ = 362, /* PINNED_ */ + MODREQ_ = 363, /* MODREQ_ */ + MODOPT_ = 364, /* MODOPT_ */ + SERIALIZABLE_ = 365, /* SERIALIZABLE_ */ + PROPERTY_ = 366, /* PROPERTY_ */ + TYPE_ = 367, /* TYPE_ */ + ASSEMBLY_ = 368, /* ASSEMBLY_ */ + FAMANDASSEM_ = 369, /* FAMANDASSEM_ */ + FAMORASSEM_ = 370, /* FAMORASSEM_ */ + PRIVATESCOPE_ = 371, /* PRIVATESCOPE_ */ + HIDEBYSIG_ = 372, /* HIDEBYSIG_ */ + NEWSLOT_ = 373, /* NEWSLOT_ */ + RTSPECIALNAME_ = 374, /* RTSPECIALNAME_ */ + PINVOKEIMPL_ = 375, /* PINVOKEIMPL_ */ + _CTOR = 376, /* _CTOR */ + _CCTOR = 377, /* _CCTOR */ + LITERAL_ = 378, /* LITERAL_ */ + NOTSERIALIZED_ = 379, /* NOTSERIALIZED_ */ + INITONLY_ = 380, /* INITONLY_ */ + REQSECOBJ_ = 381, /* REQSECOBJ_ */ + CIL_ = 382, /* CIL_ */ + OPTIL_ = 383, /* OPTIL_ */ + MANAGED_ = 384, /* MANAGED_ */ + FORWARDREF_ = 385, /* FORWARDREF_ */ + PRESERVESIG_ = 386, /* PRESERVESIG_ */ + RUNTIME_ = 387, /* RUNTIME_ */ + INTERNALCALL_ = 388, /* INTERNALCALL_ */ + _IMPORT = 389, /* _IMPORT */ + NOMANGLE_ = 390, /* NOMANGLE_ */ + LASTERR_ = 391, /* LASTERR_ */ + WINAPI_ = 392, /* WINAPI_ */ + AS_ = 393, /* AS_ */ + BESTFIT_ = 394, /* BESTFIT_ */ + ON_ = 395, /* ON_ */ + OFF_ = 396, /* OFF_ */ + CHARMAPERROR_ = 397, /* CHARMAPERROR_ */ + INSTR_NONE = 398, /* INSTR_NONE */ + INSTR_VAR = 399, /* INSTR_VAR */ + INSTR_I = 400, /* INSTR_I */ + INSTR_I8 = 401, /* INSTR_I8 */ + INSTR_R = 402, /* INSTR_R */ + INSTR_BRTARGET = 403, /* INSTR_BRTARGET */ + INSTR_METHOD = 404, /* INSTR_METHOD */ + INSTR_FIELD = 405, /* INSTR_FIELD */ + INSTR_TYPE = 406, /* INSTR_TYPE */ + INSTR_STRING = 407, /* INSTR_STRING */ + INSTR_SIG = 408, /* INSTR_SIG */ + INSTR_TOK = 409, /* INSTR_TOK */ + INSTR_SWITCH = 410, /* INSTR_SWITCH */ + _CLASS = 411, /* _CLASS */ + _NAMESPACE = 412, /* _NAMESPACE */ + _METHOD = 413, /* _METHOD */ + _FIELD = 414, /* _FIELD */ + _DATA = 415, /* _DATA */ + _THIS = 416, /* _THIS */ + _BASE = 417, /* _BASE */ + _NESTER = 418, /* _NESTER */ + _EMITBYTE = 419, /* _EMITBYTE */ + _TRY = 420, /* _TRY */ + _MAXSTACK = 421, /* _MAXSTACK */ + _LOCALS = 422, /* _LOCALS */ + _ENTRYPOINT = 423, /* _ENTRYPOINT */ + _ZEROINIT = 424, /* _ZEROINIT */ + _EVENT = 425, /* _EVENT */ + _ADDON = 426, /* _ADDON */ + _REMOVEON = 427, /* _REMOVEON */ + _FIRE = 428, /* _FIRE */ + _OTHER = 429, /* _OTHER */ + _PROPERTY = 430, /* _PROPERTY */ + _SET = 431, /* _SET */ + _GET = 432, /* _GET */ + _PERMISSION = 433, /* _PERMISSION */ + _PERMISSIONSET = 434, /* _PERMISSIONSET */ + REQUEST_ = 435, /* REQUEST_ */ + DEMAND_ = 436, /* DEMAND_ */ + ASSERT_ = 437, /* ASSERT_ */ + DENY_ = 438, /* DENY_ */ + PERMITONLY_ = 439, /* PERMITONLY_ */ + LINKCHECK_ = 440, /* LINKCHECK_ */ + INHERITCHECK_ = 441, /* INHERITCHECK_ */ + REQMIN_ = 442, /* REQMIN_ */ + REQOPT_ = 443, /* REQOPT_ */ + REQREFUSE_ = 444, /* REQREFUSE_ */ + PREJITGRANT_ = 445, /* PREJITGRANT_ */ + PREJITDENY_ = 446, /* PREJITDENY_ */ + NONCASDEMAND_ = 447, /* NONCASDEMAND_ */ + NONCASLINKDEMAND_ = 448, /* NONCASLINKDEMAND_ */ + NONCASINHERITANCE_ = 449, /* NONCASINHERITANCE_ */ + _LINE = 450, /* _LINE */ + P_LINE = 451, /* P_LINE */ + _LANGUAGE = 452, /* _LANGUAGE */ + _CUSTOM = 453, /* _CUSTOM */ + INIT_ = 454, /* INIT_ */ + _SIZE = 455, /* _SIZE */ + _PACK = 456, /* _PACK */ + _VTABLE = 457, /* _VTABLE */ + _VTFIXUP = 458, /* _VTFIXUP */ + FROMUNMANAGED_ = 459, /* FROMUNMANAGED_ */ + CALLMOSTDERIVED_ = 460, /* CALLMOSTDERIVED_ */ + _VTENTRY = 461, /* _VTENTRY */ + RETAINAPPDOMAIN_ = 462, /* RETAINAPPDOMAIN_ */ + _FILE = 463, /* _FILE */ + NOMETADATA_ = 464, /* NOMETADATA_ */ + _HASH = 465, /* _HASH */ + _ASSEMBLY = 466, /* _ASSEMBLY */ + _PUBLICKEY = 467, /* _PUBLICKEY */ + _PUBLICKEYTOKEN = 468, /* _PUBLICKEYTOKEN */ + ALGORITHM_ = 469, /* ALGORITHM_ */ + _VER = 470, /* _VER */ + _LOCALE = 471, /* _LOCALE */ + EXTERN_ = 472, /* EXTERN_ */ + _MRESOURCE = 473, /* _MRESOURCE */ + _MODULE = 474, /* _MODULE */ + _EXPORT = 475, /* _EXPORT */ + LEGACY_ = 476, /* LEGACY_ */ + LIBRARY_ = 477, /* LIBRARY_ */ + X86_ = 478, /* X86_ */ + AMD64_ = 479, /* AMD64_ */ + ARM_ = 480, /* ARM_ */ + ARM64_ = 481, /* ARM64_ */ + MARSHAL_ = 482, /* MARSHAL_ */ + CUSTOM_ = 483, /* CUSTOM_ */ + SYSSTRING_ = 484, /* SYSSTRING_ */ + FIXED_ = 485, /* FIXED_ */ + VARIANT_ = 486, /* VARIANT_ */ + CURRENCY_ = 487, /* CURRENCY_ */ + SYSCHAR_ = 488, /* SYSCHAR_ */ + DECIMAL_ = 489, /* DECIMAL_ */ + DATE_ = 490, /* DATE_ */ + BSTR_ = 491, /* BSTR_ */ + TBSTR_ = 492, /* TBSTR_ */ + LPSTR_ = 493, /* LPSTR_ */ + LPWSTR_ = 494, /* LPWSTR_ */ + LPTSTR_ = 495, /* LPTSTR_ */ + OBJECTREF_ = 496, /* OBJECTREF_ */ + IUNKNOWN_ = 497, /* IUNKNOWN_ */ + IDISPATCH_ = 498, /* IDISPATCH_ */ + STRUCT_ = 499, /* STRUCT_ */ + SAFEARRAY_ = 500, /* SAFEARRAY_ */ + BYVALSTR_ = 501, /* BYVALSTR_ */ + LPVOID_ = 502, /* LPVOID_ */ + ANY_ = 503, /* ANY_ */ + ARRAY_ = 504, /* ARRAY_ */ + LPSTRUCT_ = 505, /* LPSTRUCT_ */ + IIDPARAM_ = 506, /* IIDPARAM_ */ + IN_ = 507, /* IN_ */ + OUT_ = 508, /* OUT_ */ + OPT_ = 509, /* OPT_ */ + _PARAM = 510, /* _PARAM */ + _OVERRIDE = 511, /* _OVERRIDE */ + WITH_ = 512, /* WITH_ */ + NULL_ = 513, /* NULL_ */ + ERROR_ = 514, /* ERROR_ */ + HRESULT_ = 515, /* HRESULT_ */ + CARRAY_ = 516, /* CARRAY_ */ + USERDEFINED_ = 517, /* USERDEFINED_ */ + RECORD_ = 518, /* RECORD_ */ + FILETIME_ = 519, /* FILETIME_ */ + BLOB_ = 520, /* BLOB_ */ + STREAM_ = 521, /* STREAM_ */ + STORAGE_ = 522, /* STORAGE_ */ + STREAMED_OBJECT_ = 523, /* STREAMED_OBJECT_ */ + STORED_OBJECT_ = 524, /* STORED_OBJECT_ */ + BLOB_OBJECT_ = 525, /* BLOB_OBJECT_ */ + CF_ = 526, /* CF_ */ + CLSID_ = 527, /* CLSID_ */ + VECTOR_ = 528, /* VECTOR_ */ + _SUBSYSTEM = 529, /* _SUBSYSTEM */ + _CORFLAGS = 530, /* _CORFLAGS */ + ALIGNMENT_ = 531, /* ALIGNMENT_ */ + _IMAGEBASE = 532, /* _IMAGEBASE */ + _STACKRESERVE = 533, /* _STACKRESERVE */ + _TYPEDEF = 534, /* _TYPEDEF */ + _TEMPLATE = 535, /* _TEMPLATE */ + _TYPELIST = 536, /* _TYPELIST */ + _MSCORLIB = 537, /* _MSCORLIB */ + P_DEFINE = 538, /* P_DEFINE */ + P_UNDEF = 539, /* P_UNDEF */ + P_IFDEF = 540, /* P_IFDEF */ + P_IFNDEF = 541, /* P_IFNDEF */ + P_ELSE = 542, /* P_ELSE */ + P_ENDIF = 543, /* P_ENDIF */ + P_INCLUDE = 544, /* P_INCLUDE */ + CONSTRAINT_ = 545 /* CONSTRAINT_ */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -417,7 +418,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 15 "asmparse.y" +#line 15 ".\\src\\coreclr\\ilasm\\asmparse.y" CorRegTypeAttr classAttr; CorMethodAttr methAttr; @@ -446,7 +447,7 @@ union YYSTYPE CustomDescr* cad; unsigned short opcode; -#line 450 "prebuilt\\asmparse.cpp" +#line 451 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" }; typedef union YYSTYPE YYSTYPE; @@ -553,414 +554,415 @@ enum yysymbol_kind_t YYSYMBOL_AUTO_ = 84, /* AUTO_ */ YYSYMBOL_SEQUENTIAL_ = 85, /* SEQUENTIAL_ */ YYSYMBOL_EXPLICIT_ = 86, /* EXPLICIT_ */ - YYSYMBOL_ANSI_ = 87, /* ANSI_ */ - YYSYMBOL_UNICODE_ = 88, /* UNICODE_ */ - YYSYMBOL_AUTOCHAR_ = 89, /* AUTOCHAR_ */ - YYSYMBOL_IMPORT_ = 90, /* IMPORT_ */ - YYSYMBOL_ENUM_ = 91, /* ENUM_ */ - YYSYMBOL_VIRTUAL_ = 92, /* VIRTUAL_ */ - YYSYMBOL_NOINLINING_ = 93, /* NOINLINING_ */ - YYSYMBOL_AGGRESSIVEINLINING_ = 94, /* AGGRESSIVEINLINING_ */ - YYSYMBOL_NOOPTIMIZATION_ = 95, /* NOOPTIMIZATION_ */ - YYSYMBOL_AGGRESSIVEOPTIMIZATION_ = 96, /* AGGRESSIVEOPTIMIZATION_ */ - YYSYMBOL_UNMANAGEDEXP_ = 97, /* UNMANAGEDEXP_ */ - YYSYMBOL_BEFOREFIELDINIT_ = 98, /* BEFOREFIELDINIT_ */ - YYSYMBOL_ASYNC_ = 99, /* ASYNC_ */ - YYSYMBOL_STRICT_ = 100, /* STRICT_ */ - YYSYMBOL_RETARGETABLE_ = 101, /* RETARGETABLE_ */ - YYSYMBOL_WINDOWSRUNTIME_ = 102, /* WINDOWSRUNTIME_ */ - YYSYMBOL_NOPLATFORM_ = 103, /* NOPLATFORM_ */ - YYSYMBOL_METHOD_ = 104, /* METHOD_ */ - YYSYMBOL_FIELD_ = 105, /* FIELD_ */ - YYSYMBOL_PINNED_ = 106, /* PINNED_ */ - YYSYMBOL_MODREQ_ = 107, /* MODREQ_ */ - YYSYMBOL_MODOPT_ = 108, /* MODOPT_ */ - YYSYMBOL_SERIALIZABLE_ = 109, /* SERIALIZABLE_ */ - YYSYMBOL_PROPERTY_ = 110, /* PROPERTY_ */ - YYSYMBOL_TYPE_ = 111, /* TYPE_ */ - YYSYMBOL_ASSEMBLY_ = 112, /* ASSEMBLY_ */ - YYSYMBOL_FAMANDASSEM_ = 113, /* FAMANDASSEM_ */ - YYSYMBOL_FAMORASSEM_ = 114, /* FAMORASSEM_ */ - YYSYMBOL_PRIVATESCOPE_ = 115, /* PRIVATESCOPE_ */ - YYSYMBOL_HIDEBYSIG_ = 116, /* HIDEBYSIG_ */ - YYSYMBOL_NEWSLOT_ = 117, /* NEWSLOT_ */ - YYSYMBOL_RTSPECIALNAME_ = 118, /* RTSPECIALNAME_ */ - YYSYMBOL_PINVOKEIMPL_ = 119, /* PINVOKEIMPL_ */ - YYSYMBOL__CTOR = 120, /* _CTOR */ - YYSYMBOL__CCTOR = 121, /* _CCTOR */ - YYSYMBOL_LITERAL_ = 122, /* LITERAL_ */ - YYSYMBOL_NOTSERIALIZED_ = 123, /* NOTSERIALIZED_ */ - YYSYMBOL_INITONLY_ = 124, /* INITONLY_ */ - YYSYMBOL_REQSECOBJ_ = 125, /* REQSECOBJ_ */ - YYSYMBOL_CIL_ = 126, /* CIL_ */ - YYSYMBOL_OPTIL_ = 127, /* OPTIL_ */ - YYSYMBOL_MANAGED_ = 128, /* MANAGED_ */ - YYSYMBOL_FORWARDREF_ = 129, /* FORWARDREF_ */ - YYSYMBOL_PRESERVESIG_ = 130, /* PRESERVESIG_ */ - YYSYMBOL_RUNTIME_ = 131, /* RUNTIME_ */ - YYSYMBOL_INTERNALCALL_ = 132, /* INTERNALCALL_ */ - YYSYMBOL__IMPORT = 133, /* _IMPORT */ - YYSYMBOL_NOMANGLE_ = 134, /* NOMANGLE_ */ - YYSYMBOL_LASTERR_ = 135, /* LASTERR_ */ - YYSYMBOL_WINAPI_ = 136, /* WINAPI_ */ - YYSYMBOL_AS_ = 137, /* AS_ */ - YYSYMBOL_BESTFIT_ = 138, /* BESTFIT_ */ - YYSYMBOL_ON_ = 139, /* ON_ */ - YYSYMBOL_OFF_ = 140, /* OFF_ */ - YYSYMBOL_CHARMAPERROR_ = 141, /* CHARMAPERROR_ */ - YYSYMBOL_INSTR_NONE = 142, /* INSTR_NONE */ - YYSYMBOL_INSTR_VAR = 143, /* INSTR_VAR */ - YYSYMBOL_INSTR_I = 144, /* INSTR_I */ - YYSYMBOL_INSTR_I8 = 145, /* INSTR_I8 */ - YYSYMBOL_INSTR_R = 146, /* INSTR_R */ - YYSYMBOL_INSTR_BRTARGET = 147, /* INSTR_BRTARGET */ - YYSYMBOL_INSTR_METHOD = 148, /* INSTR_METHOD */ - YYSYMBOL_INSTR_FIELD = 149, /* INSTR_FIELD */ - YYSYMBOL_INSTR_TYPE = 150, /* INSTR_TYPE */ - YYSYMBOL_INSTR_STRING = 151, /* INSTR_STRING */ - YYSYMBOL_INSTR_SIG = 152, /* INSTR_SIG */ - YYSYMBOL_INSTR_TOK = 153, /* INSTR_TOK */ - YYSYMBOL_INSTR_SWITCH = 154, /* INSTR_SWITCH */ - YYSYMBOL__CLASS = 155, /* _CLASS */ - YYSYMBOL__NAMESPACE = 156, /* _NAMESPACE */ - YYSYMBOL__METHOD = 157, /* _METHOD */ - YYSYMBOL__FIELD = 158, /* _FIELD */ - YYSYMBOL__DATA = 159, /* _DATA */ - YYSYMBOL__THIS = 160, /* _THIS */ - YYSYMBOL__BASE = 161, /* _BASE */ - YYSYMBOL__NESTER = 162, /* _NESTER */ - YYSYMBOL__EMITBYTE = 163, /* _EMITBYTE */ - YYSYMBOL__TRY = 164, /* _TRY */ - YYSYMBOL__MAXSTACK = 165, /* _MAXSTACK */ - YYSYMBOL__LOCALS = 166, /* _LOCALS */ - YYSYMBOL__ENTRYPOINT = 167, /* _ENTRYPOINT */ - YYSYMBOL__ZEROINIT = 168, /* _ZEROINIT */ - YYSYMBOL__EVENT = 169, /* _EVENT */ - YYSYMBOL__ADDON = 170, /* _ADDON */ - YYSYMBOL__REMOVEON = 171, /* _REMOVEON */ - YYSYMBOL__FIRE = 172, /* _FIRE */ - YYSYMBOL__OTHER = 173, /* _OTHER */ - YYSYMBOL__PROPERTY = 174, /* _PROPERTY */ - YYSYMBOL__SET = 175, /* _SET */ - YYSYMBOL__GET = 176, /* _GET */ - YYSYMBOL__PERMISSION = 177, /* _PERMISSION */ - YYSYMBOL__PERMISSIONSET = 178, /* _PERMISSIONSET */ - YYSYMBOL_REQUEST_ = 179, /* REQUEST_ */ - YYSYMBOL_DEMAND_ = 180, /* DEMAND_ */ - YYSYMBOL_ASSERT_ = 181, /* ASSERT_ */ - YYSYMBOL_DENY_ = 182, /* DENY_ */ - YYSYMBOL_PERMITONLY_ = 183, /* PERMITONLY_ */ - YYSYMBOL_LINKCHECK_ = 184, /* LINKCHECK_ */ - YYSYMBOL_INHERITCHECK_ = 185, /* INHERITCHECK_ */ - YYSYMBOL_REQMIN_ = 186, /* REQMIN_ */ - YYSYMBOL_REQOPT_ = 187, /* REQOPT_ */ - YYSYMBOL_REQREFUSE_ = 188, /* REQREFUSE_ */ - YYSYMBOL_PREJITGRANT_ = 189, /* PREJITGRANT_ */ - YYSYMBOL_PREJITDENY_ = 190, /* PREJITDENY_ */ - YYSYMBOL_NONCASDEMAND_ = 191, /* NONCASDEMAND_ */ - YYSYMBOL_NONCASLINKDEMAND_ = 192, /* NONCASLINKDEMAND_ */ - YYSYMBOL_NONCASINHERITANCE_ = 193, /* NONCASINHERITANCE_ */ - YYSYMBOL__LINE = 194, /* _LINE */ - YYSYMBOL_P_LINE = 195, /* P_LINE */ - YYSYMBOL__LANGUAGE = 196, /* _LANGUAGE */ - YYSYMBOL__CUSTOM = 197, /* _CUSTOM */ - YYSYMBOL_INIT_ = 198, /* INIT_ */ - YYSYMBOL__SIZE = 199, /* _SIZE */ - YYSYMBOL__PACK = 200, /* _PACK */ - YYSYMBOL__VTABLE = 201, /* _VTABLE */ - YYSYMBOL__VTFIXUP = 202, /* _VTFIXUP */ - YYSYMBOL_FROMUNMANAGED_ = 203, /* FROMUNMANAGED_ */ - YYSYMBOL_CALLMOSTDERIVED_ = 204, /* CALLMOSTDERIVED_ */ - YYSYMBOL__VTENTRY = 205, /* _VTENTRY */ - YYSYMBOL_RETAINAPPDOMAIN_ = 206, /* RETAINAPPDOMAIN_ */ - YYSYMBOL__FILE = 207, /* _FILE */ - YYSYMBOL_NOMETADATA_ = 208, /* NOMETADATA_ */ - YYSYMBOL__HASH = 209, /* _HASH */ - YYSYMBOL__ASSEMBLY = 210, /* _ASSEMBLY */ - YYSYMBOL__PUBLICKEY = 211, /* _PUBLICKEY */ - YYSYMBOL__PUBLICKEYTOKEN = 212, /* _PUBLICKEYTOKEN */ - YYSYMBOL_ALGORITHM_ = 213, /* ALGORITHM_ */ - YYSYMBOL__VER = 214, /* _VER */ - YYSYMBOL__LOCALE = 215, /* _LOCALE */ - YYSYMBOL_EXTERN_ = 216, /* EXTERN_ */ - YYSYMBOL__MRESOURCE = 217, /* _MRESOURCE */ - YYSYMBOL__MODULE = 218, /* _MODULE */ - YYSYMBOL__EXPORT = 219, /* _EXPORT */ - YYSYMBOL_LEGACY_ = 220, /* LEGACY_ */ - YYSYMBOL_LIBRARY_ = 221, /* LIBRARY_ */ - YYSYMBOL_X86_ = 222, /* X86_ */ - YYSYMBOL_AMD64_ = 223, /* AMD64_ */ - YYSYMBOL_ARM_ = 224, /* ARM_ */ - YYSYMBOL_ARM64_ = 225, /* ARM64_ */ - YYSYMBOL_MARSHAL_ = 226, /* MARSHAL_ */ - YYSYMBOL_CUSTOM_ = 227, /* CUSTOM_ */ - YYSYMBOL_SYSSTRING_ = 228, /* SYSSTRING_ */ - YYSYMBOL_FIXED_ = 229, /* FIXED_ */ - YYSYMBOL_VARIANT_ = 230, /* VARIANT_ */ - YYSYMBOL_CURRENCY_ = 231, /* CURRENCY_ */ - YYSYMBOL_SYSCHAR_ = 232, /* SYSCHAR_ */ - YYSYMBOL_DECIMAL_ = 233, /* DECIMAL_ */ - YYSYMBOL_DATE_ = 234, /* DATE_ */ - YYSYMBOL_BSTR_ = 235, /* BSTR_ */ - YYSYMBOL_TBSTR_ = 236, /* TBSTR_ */ - YYSYMBOL_LPSTR_ = 237, /* LPSTR_ */ - YYSYMBOL_LPWSTR_ = 238, /* LPWSTR_ */ - YYSYMBOL_LPTSTR_ = 239, /* LPTSTR_ */ - YYSYMBOL_OBJECTREF_ = 240, /* OBJECTREF_ */ - YYSYMBOL_IUNKNOWN_ = 241, /* IUNKNOWN_ */ - YYSYMBOL_IDISPATCH_ = 242, /* IDISPATCH_ */ - YYSYMBOL_STRUCT_ = 243, /* STRUCT_ */ - YYSYMBOL_SAFEARRAY_ = 244, /* SAFEARRAY_ */ - YYSYMBOL_BYVALSTR_ = 245, /* BYVALSTR_ */ - YYSYMBOL_LPVOID_ = 246, /* LPVOID_ */ - YYSYMBOL_ANY_ = 247, /* ANY_ */ - YYSYMBOL_ARRAY_ = 248, /* ARRAY_ */ - YYSYMBOL_LPSTRUCT_ = 249, /* LPSTRUCT_ */ - YYSYMBOL_IIDPARAM_ = 250, /* IIDPARAM_ */ - YYSYMBOL_IN_ = 251, /* IN_ */ - YYSYMBOL_OUT_ = 252, /* OUT_ */ - YYSYMBOL_OPT_ = 253, /* OPT_ */ - YYSYMBOL__PARAM = 254, /* _PARAM */ - YYSYMBOL__OVERRIDE = 255, /* _OVERRIDE */ - YYSYMBOL_WITH_ = 256, /* WITH_ */ - YYSYMBOL_NULL_ = 257, /* NULL_ */ - YYSYMBOL_ERROR_ = 258, /* ERROR_ */ - YYSYMBOL_HRESULT_ = 259, /* HRESULT_ */ - YYSYMBOL_CARRAY_ = 260, /* CARRAY_ */ - YYSYMBOL_USERDEFINED_ = 261, /* USERDEFINED_ */ - YYSYMBOL_RECORD_ = 262, /* RECORD_ */ - YYSYMBOL_FILETIME_ = 263, /* FILETIME_ */ - YYSYMBOL_BLOB_ = 264, /* BLOB_ */ - YYSYMBOL_STREAM_ = 265, /* STREAM_ */ - YYSYMBOL_STORAGE_ = 266, /* STORAGE_ */ - YYSYMBOL_STREAMED_OBJECT_ = 267, /* STREAMED_OBJECT_ */ - YYSYMBOL_STORED_OBJECT_ = 268, /* STORED_OBJECT_ */ - YYSYMBOL_BLOB_OBJECT_ = 269, /* BLOB_OBJECT_ */ - YYSYMBOL_CF_ = 270, /* CF_ */ - YYSYMBOL_CLSID_ = 271, /* CLSID_ */ - YYSYMBOL_VECTOR_ = 272, /* VECTOR_ */ - YYSYMBOL__SUBSYSTEM = 273, /* _SUBSYSTEM */ - YYSYMBOL__CORFLAGS = 274, /* _CORFLAGS */ - YYSYMBOL_ALIGNMENT_ = 275, /* ALIGNMENT_ */ - YYSYMBOL__IMAGEBASE = 276, /* _IMAGEBASE */ - YYSYMBOL__STACKRESERVE = 277, /* _STACKRESERVE */ - YYSYMBOL__TYPEDEF = 278, /* _TYPEDEF */ - YYSYMBOL__TEMPLATE = 279, /* _TEMPLATE */ - YYSYMBOL__TYPELIST = 280, /* _TYPELIST */ - YYSYMBOL__MSCORLIB = 281, /* _MSCORLIB */ - YYSYMBOL_P_DEFINE = 282, /* P_DEFINE */ - YYSYMBOL_P_UNDEF = 283, /* P_UNDEF */ - YYSYMBOL_P_IFDEF = 284, /* P_IFDEF */ - YYSYMBOL_P_IFNDEF = 285, /* P_IFNDEF */ - YYSYMBOL_P_ELSE = 286, /* P_ELSE */ - YYSYMBOL_P_ENDIF = 287, /* P_ENDIF */ - YYSYMBOL_P_INCLUDE = 288, /* P_INCLUDE */ - YYSYMBOL_CONSTRAINT_ = 289, /* CONSTRAINT_ */ - YYSYMBOL_290_ = 290, /* '{' */ - YYSYMBOL_291_ = 291, /* '}' */ - YYSYMBOL_292_ = 292, /* '+' */ - YYSYMBOL_293_ = 293, /* ',' */ - YYSYMBOL_294_ = 294, /* '.' */ - YYSYMBOL_295_ = 295, /* '(' */ - YYSYMBOL_296_ = 296, /* ')' */ - YYSYMBOL_297_ = 297, /* ';' */ - YYSYMBOL_298_ = 298, /* '=' */ - YYSYMBOL_299_ = 299, /* '[' */ - YYSYMBOL_300_ = 300, /* ']' */ - YYSYMBOL_301_ = 301, /* '<' */ - YYSYMBOL_302_ = 302, /* '>' */ - YYSYMBOL_303_ = 303, /* '-' */ - YYSYMBOL_304_ = 304, /* ':' */ - YYSYMBOL_305_ = 305, /* '*' */ - YYSYMBOL_306_ = 306, /* '&' */ - YYSYMBOL_307_ = 307, /* '/' */ - YYSYMBOL_308_ = 308, /* '!' */ - YYSYMBOL_YYACCEPT = 309, /* $accept */ - YYSYMBOL_decls = 310, /* decls */ - YYSYMBOL_decl = 311, /* decl */ - YYSYMBOL_classNameSeq = 312, /* classNameSeq */ - YYSYMBOL_compQstring = 313, /* compQstring */ - YYSYMBOL_languageDecl = 314, /* languageDecl */ - YYSYMBOL_id = 315, /* id */ - YYSYMBOL_dottedName = 316, /* dottedName */ - YYSYMBOL_int32 = 317, /* int32 */ - YYSYMBOL_int64 = 318, /* int64 */ - YYSYMBOL_float64 = 319, /* float64 */ - YYSYMBOL_typedefDecl = 320, /* typedefDecl */ - YYSYMBOL_compControl = 321, /* compControl */ - YYSYMBOL_customDescr = 322, /* customDescr */ - YYSYMBOL_customDescrWithOwner = 323, /* customDescrWithOwner */ - YYSYMBOL_customHead = 324, /* customHead */ - YYSYMBOL_customHeadWithOwner = 325, /* customHeadWithOwner */ - YYSYMBOL_customType = 326, /* customType */ - YYSYMBOL_ownerType = 327, /* ownerType */ - YYSYMBOL_customBlobDescr = 328, /* customBlobDescr */ - YYSYMBOL_customBlobArgs = 329, /* customBlobArgs */ - YYSYMBOL_customBlobNVPairs = 330, /* customBlobNVPairs */ - YYSYMBOL_fieldOrProp = 331, /* fieldOrProp */ - YYSYMBOL_customAttrDecl = 332, /* customAttrDecl */ - YYSYMBOL_serializType = 333, /* serializType */ - YYSYMBOL_moduleHead = 334, /* moduleHead */ - YYSYMBOL_vtfixupDecl = 335, /* vtfixupDecl */ - YYSYMBOL_vtfixupAttr = 336, /* vtfixupAttr */ - YYSYMBOL_vtableDecl = 337, /* vtableDecl */ - YYSYMBOL_vtableHead = 338, /* vtableHead */ - YYSYMBOL_nameSpaceHead = 339, /* nameSpaceHead */ - YYSYMBOL__class = 340, /* _class */ - YYSYMBOL_classHeadBegin = 341, /* classHeadBegin */ - YYSYMBOL_classHead = 342, /* classHead */ - YYSYMBOL_classAttr = 343, /* classAttr */ - YYSYMBOL_extendsClause = 344, /* extendsClause */ - YYSYMBOL_implClause = 345, /* implClause */ - YYSYMBOL_classDecls = 346, /* classDecls */ - YYSYMBOL_implList = 347, /* implList */ - YYSYMBOL_typeList = 348, /* typeList */ - YYSYMBOL_typeListNotEmpty = 349, /* typeListNotEmpty */ - YYSYMBOL_typarsClause = 350, /* typarsClause */ - YYSYMBOL_typarAttrib = 351, /* typarAttrib */ - YYSYMBOL_typarAttribs = 352, /* typarAttribs */ - YYSYMBOL_typars = 353, /* typars */ - YYSYMBOL_typarsRest = 354, /* typarsRest */ - YYSYMBOL_tyBound = 355, /* tyBound */ - YYSYMBOL_genArity = 356, /* genArity */ - YYSYMBOL_genArityNotEmpty = 357, /* genArityNotEmpty */ - YYSYMBOL_classDecl = 358, /* classDecl */ - YYSYMBOL_fieldDecl = 359, /* fieldDecl */ - YYSYMBOL_fieldAttr = 360, /* fieldAttr */ - YYSYMBOL_atOpt = 361, /* atOpt */ - YYSYMBOL_initOpt = 362, /* initOpt */ - YYSYMBOL_repeatOpt = 363, /* repeatOpt */ - YYSYMBOL_methodRef = 364, /* methodRef */ - YYSYMBOL_callConv = 365, /* callConv */ - YYSYMBOL_callKind = 366, /* callKind */ - YYSYMBOL_mdtoken = 367, /* mdtoken */ - YYSYMBOL_memberRef = 368, /* memberRef */ - YYSYMBOL_eventHead = 369, /* eventHead */ - YYSYMBOL_eventAttr = 370, /* eventAttr */ - YYSYMBOL_eventDecls = 371, /* eventDecls */ - YYSYMBOL_eventDecl = 372, /* eventDecl */ - YYSYMBOL_propHead = 373, /* propHead */ - YYSYMBOL_propAttr = 374, /* propAttr */ - YYSYMBOL_propDecls = 375, /* propDecls */ - YYSYMBOL_propDecl = 376, /* propDecl */ - YYSYMBOL_methodHeadPart1 = 377, /* methodHeadPart1 */ - YYSYMBOL_marshalClause = 378, /* marshalClause */ - YYSYMBOL_marshalBlob = 379, /* marshalBlob */ - YYSYMBOL_marshalBlobHead = 380, /* marshalBlobHead */ - YYSYMBOL_methodHead = 381, /* methodHead */ - YYSYMBOL_methAttr = 382, /* methAttr */ - YYSYMBOL_pinvAttr = 383, /* pinvAttr */ - YYSYMBOL_methodName = 384, /* methodName */ - YYSYMBOL_paramAttr = 385, /* paramAttr */ - YYSYMBOL_implAttr = 386, /* implAttr */ - YYSYMBOL_localsHead = 387, /* localsHead */ - YYSYMBOL_methodDecls = 388, /* methodDecls */ - YYSYMBOL_methodDecl = 389, /* methodDecl */ - YYSYMBOL_scopeBlock = 390, /* scopeBlock */ - YYSYMBOL_scopeOpen = 391, /* scopeOpen */ - YYSYMBOL_sehBlock = 392, /* sehBlock */ - YYSYMBOL_sehClauses = 393, /* sehClauses */ - YYSYMBOL_tryBlock = 394, /* tryBlock */ - YYSYMBOL_tryHead = 395, /* tryHead */ - YYSYMBOL_sehClause = 396, /* sehClause */ - YYSYMBOL_filterClause = 397, /* filterClause */ - YYSYMBOL_filterHead = 398, /* filterHead */ - YYSYMBOL_catchClause = 399, /* catchClause */ - YYSYMBOL_finallyClause = 400, /* finallyClause */ - YYSYMBOL_faultClause = 401, /* faultClause */ - YYSYMBOL_handlerBlock = 402, /* handlerBlock */ - YYSYMBOL_dataDecl = 403, /* dataDecl */ - YYSYMBOL_ddHead = 404, /* ddHead */ - YYSYMBOL_tls = 405, /* tls */ - YYSYMBOL_ddBody = 406, /* ddBody */ - YYSYMBOL_ddItemList = 407, /* ddItemList */ - YYSYMBOL_ddItemCount = 408, /* ddItemCount */ - YYSYMBOL_ddItem = 409, /* ddItem */ - YYSYMBOL_fieldSerInit = 410, /* fieldSerInit */ - YYSYMBOL_bytearrayhead = 411, /* bytearrayhead */ - YYSYMBOL_bytes = 412, /* bytes */ - YYSYMBOL_hexbytes = 413, /* hexbytes */ - YYSYMBOL_fieldInit = 414, /* fieldInit */ - YYSYMBOL_serInit = 415, /* serInit */ - YYSYMBOL_f32seq = 416, /* f32seq */ - YYSYMBOL_f64seq = 417, /* f64seq */ - YYSYMBOL_i64seq = 418, /* i64seq */ - YYSYMBOL_i32seq = 419, /* i32seq */ - YYSYMBOL_i16seq = 420, /* i16seq */ - YYSYMBOL_i8seq = 421, /* i8seq */ - YYSYMBOL_boolSeq = 422, /* boolSeq */ - YYSYMBOL_sqstringSeq = 423, /* sqstringSeq */ - YYSYMBOL_classSeq = 424, /* classSeq */ - YYSYMBOL_objSeq = 425, /* objSeq */ - YYSYMBOL_methodSpec = 426, /* methodSpec */ - YYSYMBOL_instr_none = 427, /* instr_none */ - YYSYMBOL_instr_var = 428, /* instr_var */ - YYSYMBOL_instr_i = 429, /* instr_i */ - YYSYMBOL_instr_i8 = 430, /* instr_i8 */ - YYSYMBOL_instr_r = 431, /* instr_r */ - YYSYMBOL_instr_brtarget = 432, /* instr_brtarget */ - YYSYMBOL_instr_method = 433, /* instr_method */ - YYSYMBOL_instr_field = 434, /* instr_field */ - YYSYMBOL_instr_type = 435, /* instr_type */ - YYSYMBOL_instr_string = 436, /* instr_string */ - YYSYMBOL_instr_sig = 437, /* instr_sig */ - YYSYMBOL_instr_tok = 438, /* instr_tok */ - YYSYMBOL_instr_switch = 439, /* instr_switch */ - YYSYMBOL_instr_r_head = 440, /* instr_r_head */ - YYSYMBOL_instr = 441, /* instr */ - YYSYMBOL_labels = 442, /* labels */ - YYSYMBOL_tyArgs0 = 443, /* tyArgs0 */ - YYSYMBOL_tyArgs1 = 444, /* tyArgs1 */ - YYSYMBOL_tyArgs2 = 445, /* tyArgs2 */ - YYSYMBOL_sigArgs0 = 446, /* sigArgs0 */ - YYSYMBOL_sigArgs1 = 447, /* sigArgs1 */ - YYSYMBOL_sigArg = 448, /* sigArg */ - YYSYMBOL_className = 449, /* className */ - YYSYMBOL_slashedName = 450, /* slashedName */ - YYSYMBOL_typeSpec = 451, /* typeSpec */ - YYSYMBOL_nativeType = 452, /* nativeType */ - YYSYMBOL_iidParamIndex = 453, /* iidParamIndex */ - YYSYMBOL_variantType = 454, /* variantType */ - YYSYMBOL_type = 455, /* type */ - YYSYMBOL_simpleType = 456, /* simpleType */ - YYSYMBOL_bounds1 = 457, /* bounds1 */ - YYSYMBOL_bound = 458, /* bound */ - YYSYMBOL_secDecl = 459, /* secDecl */ - YYSYMBOL_secAttrSetBlob = 460, /* secAttrSetBlob */ - YYSYMBOL_secAttrBlob = 461, /* secAttrBlob */ - YYSYMBOL_psetHead = 462, /* psetHead */ - YYSYMBOL_nameValPairs = 463, /* nameValPairs */ - YYSYMBOL_nameValPair = 464, /* nameValPair */ - YYSYMBOL_truefalse = 465, /* truefalse */ - YYSYMBOL_caValue = 466, /* caValue */ - YYSYMBOL_secAction = 467, /* secAction */ - YYSYMBOL_esHead = 468, /* esHead */ - YYSYMBOL_extSourceSpec = 469, /* extSourceSpec */ - YYSYMBOL_fileDecl = 470, /* fileDecl */ - YYSYMBOL_fileAttr = 471, /* fileAttr */ - YYSYMBOL_fileEntry = 472, /* fileEntry */ - YYSYMBOL_hashHead = 473, /* hashHead */ - YYSYMBOL_assemblyHead = 474, /* assemblyHead */ - YYSYMBOL_asmAttr = 475, /* asmAttr */ - YYSYMBOL_assemblyDecls = 476, /* assemblyDecls */ - YYSYMBOL_assemblyDecl = 477, /* assemblyDecl */ - YYSYMBOL_intOrWildcard = 478, /* intOrWildcard */ - YYSYMBOL_asmOrRefDecl = 479, /* asmOrRefDecl */ - YYSYMBOL_publicKeyHead = 480, /* publicKeyHead */ - YYSYMBOL_publicKeyTokenHead = 481, /* publicKeyTokenHead */ - YYSYMBOL_localeHead = 482, /* localeHead */ - YYSYMBOL_assemblyRefHead = 483, /* assemblyRefHead */ - YYSYMBOL_assemblyRefDecls = 484, /* assemblyRefDecls */ - YYSYMBOL_assemblyRefDecl = 485, /* assemblyRefDecl */ - YYSYMBOL_exptypeHead = 486, /* exptypeHead */ - YYSYMBOL_exportHead = 487, /* exportHead */ - YYSYMBOL_exptAttr = 488, /* exptAttr */ - YYSYMBOL_exptypeDecls = 489, /* exptypeDecls */ - YYSYMBOL_exptypeDecl = 490, /* exptypeDecl */ - YYSYMBOL_manifestResHead = 491, /* manifestResHead */ - YYSYMBOL_manresAttr = 492, /* manresAttr */ - YYSYMBOL_manifestResDecls = 493, /* manifestResDecls */ - YYSYMBOL_manifestResDecl = 494 /* manifestResDecl */ + YYSYMBOL_EXTENDED_ = 87, /* EXTENDED_ */ + YYSYMBOL_ANSI_ = 88, /* ANSI_ */ + YYSYMBOL_UNICODE_ = 89, /* UNICODE_ */ + YYSYMBOL_AUTOCHAR_ = 90, /* AUTOCHAR_ */ + YYSYMBOL_IMPORT_ = 91, /* IMPORT_ */ + YYSYMBOL_ENUM_ = 92, /* ENUM_ */ + YYSYMBOL_VIRTUAL_ = 93, /* VIRTUAL_ */ + YYSYMBOL_NOINLINING_ = 94, /* NOINLINING_ */ + YYSYMBOL_AGGRESSIVEINLINING_ = 95, /* AGGRESSIVEINLINING_ */ + YYSYMBOL_NOOPTIMIZATION_ = 96, /* NOOPTIMIZATION_ */ + YYSYMBOL_AGGRESSIVEOPTIMIZATION_ = 97, /* AGGRESSIVEOPTIMIZATION_ */ + YYSYMBOL_UNMANAGEDEXP_ = 98, /* UNMANAGEDEXP_ */ + YYSYMBOL_BEFOREFIELDINIT_ = 99, /* BEFOREFIELDINIT_ */ + YYSYMBOL_ASYNC_ = 100, /* ASYNC_ */ + YYSYMBOL_STRICT_ = 101, /* STRICT_ */ + YYSYMBOL_RETARGETABLE_ = 102, /* RETARGETABLE_ */ + YYSYMBOL_WINDOWSRUNTIME_ = 103, /* WINDOWSRUNTIME_ */ + YYSYMBOL_NOPLATFORM_ = 104, /* NOPLATFORM_ */ + YYSYMBOL_METHOD_ = 105, /* METHOD_ */ + YYSYMBOL_FIELD_ = 106, /* FIELD_ */ + YYSYMBOL_PINNED_ = 107, /* PINNED_ */ + YYSYMBOL_MODREQ_ = 108, /* MODREQ_ */ + YYSYMBOL_MODOPT_ = 109, /* MODOPT_ */ + YYSYMBOL_SERIALIZABLE_ = 110, /* SERIALIZABLE_ */ + YYSYMBOL_PROPERTY_ = 111, /* PROPERTY_ */ + YYSYMBOL_TYPE_ = 112, /* TYPE_ */ + YYSYMBOL_ASSEMBLY_ = 113, /* ASSEMBLY_ */ + YYSYMBOL_FAMANDASSEM_ = 114, /* FAMANDASSEM_ */ + YYSYMBOL_FAMORASSEM_ = 115, /* FAMORASSEM_ */ + YYSYMBOL_PRIVATESCOPE_ = 116, /* PRIVATESCOPE_ */ + YYSYMBOL_HIDEBYSIG_ = 117, /* HIDEBYSIG_ */ + YYSYMBOL_NEWSLOT_ = 118, /* NEWSLOT_ */ + YYSYMBOL_RTSPECIALNAME_ = 119, /* RTSPECIALNAME_ */ + YYSYMBOL_PINVOKEIMPL_ = 120, /* PINVOKEIMPL_ */ + YYSYMBOL__CTOR = 121, /* _CTOR */ + YYSYMBOL__CCTOR = 122, /* _CCTOR */ + YYSYMBOL_LITERAL_ = 123, /* LITERAL_ */ + YYSYMBOL_NOTSERIALIZED_ = 124, /* NOTSERIALIZED_ */ + YYSYMBOL_INITONLY_ = 125, /* INITONLY_ */ + YYSYMBOL_REQSECOBJ_ = 126, /* REQSECOBJ_ */ + YYSYMBOL_CIL_ = 127, /* CIL_ */ + YYSYMBOL_OPTIL_ = 128, /* OPTIL_ */ + YYSYMBOL_MANAGED_ = 129, /* MANAGED_ */ + YYSYMBOL_FORWARDREF_ = 130, /* FORWARDREF_ */ + YYSYMBOL_PRESERVESIG_ = 131, /* PRESERVESIG_ */ + YYSYMBOL_RUNTIME_ = 132, /* RUNTIME_ */ + YYSYMBOL_INTERNALCALL_ = 133, /* INTERNALCALL_ */ + YYSYMBOL__IMPORT = 134, /* _IMPORT */ + YYSYMBOL_NOMANGLE_ = 135, /* NOMANGLE_ */ + YYSYMBOL_LASTERR_ = 136, /* LASTERR_ */ + YYSYMBOL_WINAPI_ = 137, /* WINAPI_ */ + YYSYMBOL_AS_ = 138, /* AS_ */ + YYSYMBOL_BESTFIT_ = 139, /* BESTFIT_ */ + YYSYMBOL_ON_ = 140, /* ON_ */ + YYSYMBOL_OFF_ = 141, /* OFF_ */ + YYSYMBOL_CHARMAPERROR_ = 142, /* CHARMAPERROR_ */ + YYSYMBOL_INSTR_NONE = 143, /* INSTR_NONE */ + YYSYMBOL_INSTR_VAR = 144, /* INSTR_VAR */ + YYSYMBOL_INSTR_I = 145, /* INSTR_I */ + YYSYMBOL_INSTR_I8 = 146, /* INSTR_I8 */ + YYSYMBOL_INSTR_R = 147, /* INSTR_R */ + YYSYMBOL_INSTR_BRTARGET = 148, /* INSTR_BRTARGET */ + YYSYMBOL_INSTR_METHOD = 149, /* INSTR_METHOD */ + YYSYMBOL_INSTR_FIELD = 150, /* INSTR_FIELD */ + YYSYMBOL_INSTR_TYPE = 151, /* INSTR_TYPE */ + YYSYMBOL_INSTR_STRING = 152, /* INSTR_STRING */ + YYSYMBOL_INSTR_SIG = 153, /* INSTR_SIG */ + YYSYMBOL_INSTR_TOK = 154, /* INSTR_TOK */ + YYSYMBOL_INSTR_SWITCH = 155, /* INSTR_SWITCH */ + YYSYMBOL__CLASS = 156, /* _CLASS */ + YYSYMBOL__NAMESPACE = 157, /* _NAMESPACE */ + YYSYMBOL__METHOD = 158, /* _METHOD */ + YYSYMBOL__FIELD = 159, /* _FIELD */ + YYSYMBOL__DATA = 160, /* _DATA */ + YYSYMBOL__THIS = 161, /* _THIS */ + YYSYMBOL__BASE = 162, /* _BASE */ + YYSYMBOL__NESTER = 163, /* _NESTER */ + YYSYMBOL__EMITBYTE = 164, /* _EMITBYTE */ + YYSYMBOL__TRY = 165, /* _TRY */ + YYSYMBOL__MAXSTACK = 166, /* _MAXSTACK */ + YYSYMBOL__LOCALS = 167, /* _LOCALS */ + YYSYMBOL__ENTRYPOINT = 168, /* _ENTRYPOINT */ + YYSYMBOL__ZEROINIT = 169, /* _ZEROINIT */ + YYSYMBOL__EVENT = 170, /* _EVENT */ + YYSYMBOL__ADDON = 171, /* _ADDON */ + YYSYMBOL__REMOVEON = 172, /* _REMOVEON */ + YYSYMBOL__FIRE = 173, /* _FIRE */ + YYSYMBOL__OTHER = 174, /* _OTHER */ + YYSYMBOL__PROPERTY = 175, /* _PROPERTY */ + YYSYMBOL__SET = 176, /* _SET */ + YYSYMBOL__GET = 177, /* _GET */ + YYSYMBOL__PERMISSION = 178, /* _PERMISSION */ + YYSYMBOL__PERMISSIONSET = 179, /* _PERMISSIONSET */ + YYSYMBOL_REQUEST_ = 180, /* REQUEST_ */ + YYSYMBOL_DEMAND_ = 181, /* DEMAND_ */ + YYSYMBOL_ASSERT_ = 182, /* ASSERT_ */ + YYSYMBOL_DENY_ = 183, /* DENY_ */ + YYSYMBOL_PERMITONLY_ = 184, /* PERMITONLY_ */ + YYSYMBOL_LINKCHECK_ = 185, /* LINKCHECK_ */ + YYSYMBOL_INHERITCHECK_ = 186, /* INHERITCHECK_ */ + YYSYMBOL_REQMIN_ = 187, /* REQMIN_ */ + YYSYMBOL_REQOPT_ = 188, /* REQOPT_ */ + YYSYMBOL_REQREFUSE_ = 189, /* REQREFUSE_ */ + YYSYMBOL_PREJITGRANT_ = 190, /* PREJITGRANT_ */ + YYSYMBOL_PREJITDENY_ = 191, /* PREJITDENY_ */ + YYSYMBOL_NONCASDEMAND_ = 192, /* NONCASDEMAND_ */ + YYSYMBOL_NONCASLINKDEMAND_ = 193, /* NONCASLINKDEMAND_ */ + YYSYMBOL_NONCASINHERITANCE_ = 194, /* NONCASINHERITANCE_ */ + YYSYMBOL__LINE = 195, /* _LINE */ + YYSYMBOL_P_LINE = 196, /* P_LINE */ + YYSYMBOL__LANGUAGE = 197, /* _LANGUAGE */ + YYSYMBOL__CUSTOM = 198, /* _CUSTOM */ + YYSYMBOL_INIT_ = 199, /* INIT_ */ + YYSYMBOL__SIZE = 200, /* _SIZE */ + YYSYMBOL__PACK = 201, /* _PACK */ + YYSYMBOL__VTABLE = 202, /* _VTABLE */ + YYSYMBOL__VTFIXUP = 203, /* _VTFIXUP */ + YYSYMBOL_FROMUNMANAGED_ = 204, /* FROMUNMANAGED_ */ + YYSYMBOL_CALLMOSTDERIVED_ = 205, /* CALLMOSTDERIVED_ */ + YYSYMBOL__VTENTRY = 206, /* _VTENTRY */ + YYSYMBOL_RETAINAPPDOMAIN_ = 207, /* RETAINAPPDOMAIN_ */ + YYSYMBOL__FILE = 208, /* _FILE */ + YYSYMBOL_NOMETADATA_ = 209, /* NOMETADATA_ */ + YYSYMBOL__HASH = 210, /* _HASH */ + YYSYMBOL__ASSEMBLY = 211, /* _ASSEMBLY */ + YYSYMBOL__PUBLICKEY = 212, /* _PUBLICKEY */ + YYSYMBOL__PUBLICKEYTOKEN = 213, /* _PUBLICKEYTOKEN */ + YYSYMBOL_ALGORITHM_ = 214, /* ALGORITHM_ */ + YYSYMBOL__VER = 215, /* _VER */ + YYSYMBOL__LOCALE = 216, /* _LOCALE */ + YYSYMBOL_EXTERN_ = 217, /* EXTERN_ */ + YYSYMBOL__MRESOURCE = 218, /* _MRESOURCE */ + YYSYMBOL__MODULE = 219, /* _MODULE */ + YYSYMBOL__EXPORT = 220, /* _EXPORT */ + YYSYMBOL_LEGACY_ = 221, /* LEGACY_ */ + YYSYMBOL_LIBRARY_ = 222, /* LIBRARY_ */ + YYSYMBOL_X86_ = 223, /* X86_ */ + YYSYMBOL_AMD64_ = 224, /* AMD64_ */ + YYSYMBOL_ARM_ = 225, /* ARM_ */ + YYSYMBOL_ARM64_ = 226, /* ARM64_ */ + YYSYMBOL_MARSHAL_ = 227, /* MARSHAL_ */ + YYSYMBOL_CUSTOM_ = 228, /* CUSTOM_ */ + YYSYMBOL_SYSSTRING_ = 229, /* SYSSTRING_ */ + YYSYMBOL_FIXED_ = 230, /* FIXED_ */ + YYSYMBOL_VARIANT_ = 231, /* VARIANT_ */ + YYSYMBOL_CURRENCY_ = 232, /* CURRENCY_ */ + YYSYMBOL_SYSCHAR_ = 233, /* SYSCHAR_ */ + YYSYMBOL_DECIMAL_ = 234, /* DECIMAL_ */ + YYSYMBOL_DATE_ = 235, /* DATE_ */ + YYSYMBOL_BSTR_ = 236, /* BSTR_ */ + YYSYMBOL_TBSTR_ = 237, /* TBSTR_ */ + YYSYMBOL_LPSTR_ = 238, /* LPSTR_ */ + YYSYMBOL_LPWSTR_ = 239, /* LPWSTR_ */ + YYSYMBOL_LPTSTR_ = 240, /* LPTSTR_ */ + YYSYMBOL_OBJECTREF_ = 241, /* OBJECTREF_ */ + YYSYMBOL_IUNKNOWN_ = 242, /* IUNKNOWN_ */ + YYSYMBOL_IDISPATCH_ = 243, /* IDISPATCH_ */ + YYSYMBOL_STRUCT_ = 244, /* STRUCT_ */ + YYSYMBOL_SAFEARRAY_ = 245, /* SAFEARRAY_ */ + YYSYMBOL_BYVALSTR_ = 246, /* BYVALSTR_ */ + YYSYMBOL_LPVOID_ = 247, /* LPVOID_ */ + YYSYMBOL_ANY_ = 248, /* ANY_ */ + YYSYMBOL_ARRAY_ = 249, /* ARRAY_ */ + YYSYMBOL_LPSTRUCT_ = 250, /* LPSTRUCT_ */ + YYSYMBOL_IIDPARAM_ = 251, /* IIDPARAM_ */ + YYSYMBOL_IN_ = 252, /* IN_ */ + YYSYMBOL_OUT_ = 253, /* OUT_ */ + YYSYMBOL_OPT_ = 254, /* OPT_ */ + YYSYMBOL__PARAM = 255, /* _PARAM */ + YYSYMBOL__OVERRIDE = 256, /* _OVERRIDE */ + YYSYMBOL_WITH_ = 257, /* WITH_ */ + YYSYMBOL_NULL_ = 258, /* NULL_ */ + YYSYMBOL_ERROR_ = 259, /* ERROR_ */ + YYSYMBOL_HRESULT_ = 260, /* HRESULT_ */ + YYSYMBOL_CARRAY_ = 261, /* CARRAY_ */ + YYSYMBOL_USERDEFINED_ = 262, /* USERDEFINED_ */ + YYSYMBOL_RECORD_ = 263, /* RECORD_ */ + YYSYMBOL_FILETIME_ = 264, /* FILETIME_ */ + YYSYMBOL_BLOB_ = 265, /* BLOB_ */ + YYSYMBOL_STREAM_ = 266, /* STREAM_ */ + YYSYMBOL_STORAGE_ = 267, /* STORAGE_ */ + YYSYMBOL_STREAMED_OBJECT_ = 268, /* STREAMED_OBJECT_ */ + YYSYMBOL_STORED_OBJECT_ = 269, /* STORED_OBJECT_ */ + YYSYMBOL_BLOB_OBJECT_ = 270, /* BLOB_OBJECT_ */ + YYSYMBOL_CF_ = 271, /* CF_ */ + YYSYMBOL_CLSID_ = 272, /* CLSID_ */ + YYSYMBOL_VECTOR_ = 273, /* VECTOR_ */ + YYSYMBOL__SUBSYSTEM = 274, /* _SUBSYSTEM */ + YYSYMBOL__CORFLAGS = 275, /* _CORFLAGS */ + YYSYMBOL_ALIGNMENT_ = 276, /* ALIGNMENT_ */ + YYSYMBOL__IMAGEBASE = 277, /* _IMAGEBASE */ + YYSYMBOL__STACKRESERVE = 278, /* _STACKRESERVE */ + YYSYMBOL__TYPEDEF = 279, /* _TYPEDEF */ + YYSYMBOL__TEMPLATE = 280, /* _TEMPLATE */ + YYSYMBOL__TYPELIST = 281, /* _TYPELIST */ + YYSYMBOL__MSCORLIB = 282, /* _MSCORLIB */ + YYSYMBOL_P_DEFINE = 283, /* P_DEFINE */ + YYSYMBOL_P_UNDEF = 284, /* P_UNDEF */ + YYSYMBOL_P_IFDEF = 285, /* P_IFDEF */ + YYSYMBOL_P_IFNDEF = 286, /* P_IFNDEF */ + YYSYMBOL_P_ELSE = 287, /* P_ELSE */ + YYSYMBOL_P_ENDIF = 288, /* P_ENDIF */ + YYSYMBOL_P_INCLUDE = 289, /* P_INCLUDE */ + YYSYMBOL_CONSTRAINT_ = 290, /* CONSTRAINT_ */ + YYSYMBOL_291_ = 291, /* '{' */ + YYSYMBOL_292_ = 292, /* '}' */ + YYSYMBOL_293_ = 293, /* '+' */ + YYSYMBOL_294_ = 294, /* ',' */ + YYSYMBOL_295_ = 295, /* '.' */ + YYSYMBOL_296_ = 296, /* '(' */ + YYSYMBOL_297_ = 297, /* ')' */ + YYSYMBOL_298_ = 298, /* ';' */ + YYSYMBOL_299_ = 299, /* '=' */ + YYSYMBOL_300_ = 300, /* '[' */ + YYSYMBOL_301_ = 301, /* ']' */ + YYSYMBOL_302_ = 302, /* '<' */ + YYSYMBOL_303_ = 303, /* '>' */ + YYSYMBOL_304_ = 304, /* '-' */ + YYSYMBOL_305_ = 305, /* ':' */ + YYSYMBOL_306_ = 306, /* '*' */ + YYSYMBOL_307_ = 307, /* '&' */ + YYSYMBOL_308_ = 308, /* '/' */ + YYSYMBOL_309_ = 309, /* '!' */ + YYSYMBOL_YYACCEPT = 310, /* $accept */ + YYSYMBOL_decls = 311, /* decls */ + YYSYMBOL_decl = 312, /* decl */ + YYSYMBOL_classNameSeq = 313, /* classNameSeq */ + YYSYMBOL_compQstring = 314, /* compQstring */ + YYSYMBOL_languageDecl = 315, /* languageDecl */ + YYSYMBOL_id = 316, /* id */ + YYSYMBOL_dottedName = 317, /* dottedName */ + YYSYMBOL_int32 = 318, /* int32 */ + YYSYMBOL_int64 = 319, /* int64 */ + YYSYMBOL_float64 = 320, /* float64 */ + YYSYMBOL_typedefDecl = 321, /* typedefDecl */ + YYSYMBOL_compControl = 322, /* compControl */ + YYSYMBOL_customDescr = 323, /* customDescr */ + YYSYMBOL_customDescrWithOwner = 324, /* customDescrWithOwner */ + YYSYMBOL_customHead = 325, /* customHead */ + YYSYMBOL_customHeadWithOwner = 326, /* customHeadWithOwner */ + YYSYMBOL_customType = 327, /* customType */ + YYSYMBOL_ownerType = 328, /* ownerType */ + YYSYMBOL_customBlobDescr = 329, /* customBlobDescr */ + YYSYMBOL_customBlobArgs = 330, /* customBlobArgs */ + YYSYMBOL_customBlobNVPairs = 331, /* customBlobNVPairs */ + YYSYMBOL_fieldOrProp = 332, /* fieldOrProp */ + YYSYMBOL_customAttrDecl = 333, /* customAttrDecl */ + YYSYMBOL_serializType = 334, /* serializType */ + YYSYMBOL_moduleHead = 335, /* moduleHead */ + YYSYMBOL_vtfixupDecl = 336, /* vtfixupDecl */ + YYSYMBOL_vtfixupAttr = 337, /* vtfixupAttr */ + YYSYMBOL_vtableDecl = 338, /* vtableDecl */ + YYSYMBOL_vtableHead = 339, /* vtableHead */ + YYSYMBOL_nameSpaceHead = 340, /* nameSpaceHead */ + YYSYMBOL__class = 341, /* _class */ + YYSYMBOL_classHeadBegin = 342, /* classHeadBegin */ + YYSYMBOL_classHead = 343, /* classHead */ + YYSYMBOL_classAttr = 344, /* classAttr */ + YYSYMBOL_extendsClause = 345, /* extendsClause */ + YYSYMBOL_implClause = 346, /* implClause */ + YYSYMBOL_classDecls = 347, /* classDecls */ + YYSYMBOL_implList = 348, /* implList */ + YYSYMBOL_typeList = 349, /* typeList */ + YYSYMBOL_typeListNotEmpty = 350, /* typeListNotEmpty */ + YYSYMBOL_typarsClause = 351, /* typarsClause */ + YYSYMBOL_typarAttrib = 352, /* typarAttrib */ + YYSYMBOL_typarAttribs = 353, /* typarAttribs */ + YYSYMBOL_typars = 354, /* typars */ + YYSYMBOL_typarsRest = 355, /* typarsRest */ + YYSYMBOL_tyBound = 356, /* tyBound */ + YYSYMBOL_genArity = 357, /* genArity */ + YYSYMBOL_genArityNotEmpty = 358, /* genArityNotEmpty */ + YYSYMBOL_classDecl = 359, /* classDecl */ + YYSYMBOL_fieldDecl = 360, /* fieldDecl */ + YYSYMBOL_fieldAttr = 361, /* fieldAttr */ + YYSYMBOL_atOpt = 362, /* atOpt */ + YYSYMBOL_initOpt = 363, /* initOpt */ + YYSYMBOL_repeatOpt = 364, /* repeatOpt */ + YYSYMBOL_methodRef = 365, /* methodRef */ + YYSYMBOL_callConv = 366, /* callConv */ + YYSYMBOL_callKind = 367, /* callKind */ + YYSYMBOL_mdtoken = 368, /* mdtoken */ + YYSYMBOL_memberRef = 369, /* memberRef */ + YYSYMBOL_eventHead = 370, /* eventHead */ + YYSYMBOL_eventAttr = 371, /* eventAttr */ + YYSYMBOL_eventDecls = 372, /* eventDecls */ + YYSYMBOL_eventDecl = 373, /* eventDecl */ + YYSYMBOL_propHead = 374, /* propHead */ + YYSYMBOL_propAttr = 375, /* propAttr */ + YYSYMBOL_propDecls = 376, /* propDecls */ + YYSYMBOL_propDecl = 377, /* propDecl */ + YYSYMBOL_methodHeadPart1 = 378, /* methodHeadPart1 */ + YYSYMBOL_marshalClause = 379, /* marshalClause */ + YYSYMBOL_marshalBlob = 380, /* marshalBlob */ + YYSYMBOL_marshalBlobHead = 381, /* marshalBlobHead */ + YYSYMBOL_methodHead = 382, /* methodHead */ + YYSYMBOL_methAttr = 383, /* methAttr */ + YYSYMBOL_pinvAttr = 384, /* pinvAttr */ + YYSYMBOL_methodName = 385, /* methodName */ + YYSYMBOL_paramAttr = 386, /* paramAttr */ + YYSYMBOL_implAttr = 387, /* implAttr */ + YYSYMBOL_localsHead = 388, /* localsHead */ + YYSYMBOL_methodDecls = 389, /* methodDecls */ + YYSYMBOL_methodDecl = 390, /* methodDecl */ + YYSYMBOL_scopeBlock = 391, /* scopeBlock */ + YYSYMBOL_scopeOpen = 392, /* scopeOpen */ + YYSYMBOL_sehBlock = 393, /* sehBlock */ + YYSYMBOL_sehClauses = 394, /* sehClauses */ + YYSYMBOL_tryBlock = 395, /* tryBlock */ + YYSYMBOL_tryHead = 396, /* tryHead */ + YYSYMBOL_sehClause = 397, /* sehClause */ + YYSYMBOL_filterClause = 398, /* filterClause */ + YYSYMBOL_filterHead = 399, /* filterHead */ + YYSYMBOL_catchClause = 400, /* catchClause */ + YYSYMBOL_finallyClause = 401, /* finallyClause */ + YYSYMBOL_faultClause = 402, /* faultClause */ + YYSYMBOL_handlerBlock = 403, /* handlerBlock */ + YYSYMBOL_dataDecl = 404, /* dataDecl */ + YYSYMBOL_ddHead = 405, /* ddHead */ + YYSYMBOL_tls = 406, /* tls */ + YYSYMBOL_ddBody = 407, /* ddBody */ + YYSYMBOL_ddItemList = 408, /* ddItemList */ + YYSYMBOL_ddItemCount = 409, /* ddItemCount */ + YYSYMBOL_ddItem = 410, /* ddItem */ + YYSYMBOL_fieldSerInit = 411, /* fieldSerInit */ + YYSYMBOL_bytearrayhead = 412, /* bytearrayhead */ + YYSYMBOL_bytes = 413, /* bytes */ + YYSYMBOL_hexbytes = 414, /* hexbytes */ + YYSYMBOL_fieldInit = 415, /* fieldInit */ + YYSYMBOL_serInit = 416, /* serInit */ + YYSYMBOL_f32seq = 417, /* f32seq */ + YYSYMBOL_f64seq = 418, /* f64seq */ + YYSYMBOL_i64seq = 419, /* i64seq */ + YYSYMBOL_i32seq = 420, /* i32seq */ + YYSYMBOL_i16seq = 421, /* i16seq */ + YYSYMBOL_i8seq = 422, /* i8seq */ + YYSYMBOL_boolSeq = 423, /* boolSeq */ + YYSYMBOL_sqstringSeq = 424, /* sqstringSeq */ + YYSYMBOL_classSeq = 425, /* classSeq */ + YYSYMBOL_objSeq = 426, /* objSeq */ + YYSYMBOL_methodSpec = 427, /* methodSpec */ + YYSYMBOL_instr_none = 428, /* instr_none */ + YYSYMBOL_instr_var = 429, /* instr_var */ + YYSYMBOL_instr_i = 430, /* instr_i */ + YYSYMBOL_instr_i8 = 431, /* instr_i8 */ + YYSYMBOL_instr_r = 432, /* instr_r */ + YYSYMBOL_instr_brtarget = 433, /* instr_brtarget */ + YYSYMBOL_instr_method = 434, /* instr_method */ + YYSYMBOL_instr_field = 435, /* instr_field */ + YYSYMBOL_instr_type = 436, /* instr_type */ + YYSYMBOL_instr_string = 437, /* instr_string */ + YYSYMBOL_instr_sig = 438, /* instr_sig */ + YYSYMBOL_instr_tok = 439, /* instr_tok */ + YYSYMBOL_instr_switch = 440, /* instr_switch */ + YYSYMBOL_instr_r_head = 441, /* instr_r_head */ + YYSYMBOL_instr = 442, /* instr */ + YYSYMBOL_labels = 443, /* labels */ + YYSYMBOL_tyArgs0 = 444, /* tyArgs0 */ + YYSYMBOL_tyArgs1 = 445, /* tyArgs1 */ + YYSYMBOL_tyArgs2 = 446, /* tyArgs2 */ + YYSYMBOL_sigArgs0 = 447, /* sigArgs0 */ + YYSYMBOL_sigArgs1 = 448, /* sigArgs1 */ + YYSYMBOL_sigArg = 449, /* sigArg */ + YYSYMBOL_className = 450, /* className */ + YYSYMBOL_slashedName = 451, /* slashedName */ + YYSYMBOL_typeSpec = 452, /* typeSpec */ + YYSYMBOL_nativeType = 453, /* nativeType */ + YYSYMBOL_iidParamIndex = 454, /* iidParamIndex */ + YYSYMBOL_variantType = 455, /* variantType */ + YYSYMBOL_type = 456, /* type */ + YYSYMBOL_simpleType = 457, /* simpleType */ + YYSYMBOL_bounds1 = 458, /* bounds1 */ + YYSYMBOL_bound = 459, /* bound */ + YYSYMBOL_secDecl = 460, /* secDecl */ + YYSYMBOL_secAttrSetBlob = 461, /* secAttrSetBlob */ + YYSYMBOL_secAttrBlob = 462, /* secAttrBlob */ + YYSYMBOL_psetHead = 463, /* psetHead */ + YYSYMBOL_nameValPairs = 464, /* nameValPairs */ + YYSYMBOL_nameValPair = 465, /* nameValPair */ + YYSYMBOL_truefalse = 466, /* truefalse */ + YYSYMBOL_caValue = 467, /* caValue */ + YYSYMBOL_secAction = 468, /* secAction */ + YYSYMBOL_esHead = 469, /* esHead */ + YYSYMBOL_extSourceSpec = 470, /* extSourceSpec */ + YYSYMBOL_fileDecl = 471, /* fileDecl */ + YYSYMBOL_fileAttr = 472, /* fileAttr */ + YYSYMBOL_fileEntry = 473, /* fileEntry */ + YYSYMBOL_hashHead = 474, /* hashHead */ + YYSYMBOL_assemblyHead = 475, /* assemblyHead */ + YYSYMBOL_asmAttr = 476, /* asmAttr */ + YYSYMBOL_assemblyDecls = 477, /* assemblyDecls */ + YYSYMBOL_assemblyDecl = 478, /* assemblyDecl */ + YYSYMBOL_intOrWildcard = 479, /* intOrWildcard */ + YYSYMBOL_asmOrRefDecl = 480, /* asmOrRefDecl */ + YYSYMBOL_publicKeyHead = 481, /* publicKeyHead */ + YYSYMBOL_publicKeyTokenHead = 482, /* publicKeyTokenHead */ + YYSYMBOL_localeHead = 483, /* localeHead */ + YYSYMBOL_assemblyRefHead = 484, /* assemblyRefHead */ + YYSYMBOL_assemblyRefDecls = 485, /* assemblyRefDecls */ + YYSYMBOL_assemblyRefDecl = 486, /* assemblyRefDecl */ + YYSYMBOL_exptypeHead = 487, /* exptypeHead */ + YYSYMBOL_exportHead = 488, /* exportHead */ + YYSYMBOL_exptAttr = 489, /* exptAttr */ + YYSYMBOL_exptypeDecls = 490, /* exptypeDecls */ + YYSYMBOL_exptypeDecl = 491, /* exptypeDecl */ + YYSYMBOL_manifestResHead = 492, /* manifestResHead */ + YYSYMBOL_manresAttr = 493, /* manresAttr */ + YYSYMBOL_manifestResDecls = 494, /* manifestResDecls */ + YYSYMBOL_manifestResDecl = 495 /* manifestResDecl */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1288,19 +1290,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 5505 +#define YYLAST 5609 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 309 +#define YYNTOKENS 310 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 186 /* YYNRULES -- Number of rules. */ -#define YYNRULES 862 +#define YYNRULES 864 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1607 +#define YYNSTATES 1609 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 544 +#define YYMAXUTOK 545 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1317,16 +1319,16 @@ static const yytype_int16 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 308, 2, 2, 2, 2, 306, 2, - 295, 296, 305, 292, 293, 303, 294, 307, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 304, 297, - 301, 298, 302, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 309, 2, 2, 2, 2, 307, 2, + 296, 297, 306, 293, 294, 304, 295, 308, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 305, 298, + 302, 299, 303, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 299, 2, 300, 2, 2, 2, 2, 2, 2, + 2, 300, 2, 301, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 290, 2, 291, 2, 2, 2, 2, + 2, 2, 2, 291, 2, 292, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1368,7 +1370,7 @@ static const yytype_int16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG @@ -1380,88 +1382,88 @@ static const yytype_int16 yyrline[] = 212, 215, 216, 219, 222, 223, 224, 225, 226, 227, 230, 231, 234, 235, 238, 239, 241, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 266, 267, 268, 271, 274, 275, - 278, 279, 280, 284, 285, 286, 287, 288, 293, 294, - 295, 296, 299, 302, 303, 307, 308, 312, 313, 314, - 315, 318, 319, 320, 322, 325, 328, 334, 337, 338, - 342, 348, 349, 351, 354, 355, 361, 364, 365, 368, - 372, 373, 381, 382, 383, 384, 386, 388, 393, 394, - 395, 402, 406, 407, 408, 409, 410, 411, 414, 417, - 421, 424, 427, 433, 436, 437, 438, 439, 440, 441, + 260, 261, 262, 263, 264, 267, 268, 269, 272, 275, + 276, 279, 280, 281, 285, 286, 287, 288, 289, 294, + 295, 296, 297, 300, 303, 304, 308, 309, 313, 314, + 315, 316, 319, 320, 321, 323, 326, 329, 335, 338, + 339, 343, 349, 350, 352, 355, 356, 362, 365, 366, + 369, 373, 374, 382, 383, 384, 385, 387, 389, 394, + 395, 396, 403, 407, 408, 409, 410, 411, 412, 415, + 418, 422, 425, 428, 434, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 465, 466, 469, 470, 473, 474, 477, 478, 482, - 483, 486, 487, 490, 491, 494, 495, 496, 497, 498, - 499, 500, 503, 504, 507, 508, 511, 512, 515, 518, - 519, 522, 526, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 547, 556, 557, 558, 563, - 569, 570, 571, 578, 583, 584, 585, 586, 587, 588, - 589, 590, 602, 604, 605, 606, 607, 608, 609, 610, - 613, 614, 617, 618, 621, 622, 626, 643, 649, 665, - 670, 671, 672, 675, 676, 677, 678, 681, 682, 683, - 684, 685, 686, 687, 688, 691, 694, 699, 703, 707, - 709, 711, 716, 717, 721, 722, 723, 726, 727, 730, - 731, 732, 733, 734, 735, 736, 737, 741, 747, 748, - 749, 752, 753, 757, 758, 759, 760, 761, 762, 763, - 767, 773, 774, 777, 778, 781, 784, 800, 801, 802, + 462, 463, 464, 467, 468, 471, 472, 475, 476, 479, + 480, 484, 485, 488, 489, 492, 493, 496, 497, 498, + 499, 500, 501, 502, 505, 506, 509, 510, 513, 514, + 517, 520, 521, 524, 528, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 549, 558, 559, + 560, 565, 571, 572, 573, 580, 585, 586, 587, 588, + 589, 590, 591, 592, 604, 606, 607, 608, 609, 610, + 611, 612, 615, 616, 619, 620, 623, 624, 628, 645, + 651, 667, 672, 673, 674, 677, 678, 679, 680, 683, + 684, 685, 686, 687, 688, 689, 690, 693, 696, 701, + 705, 709, 711, 713, 718, 719, 723, 724, 725, 728, + 729, 732, 733, 734, 735, 736, 737, 738, 739, 743, + 749, 750, 751, 754, 755, 759, 760, 761, 762, 763, + 764, 765, 769, 775, 776, 779, 780, 783, 786, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 823, 826, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 849, 850, 851, 854, - 855, 856, 857, 858, 861, 862, 863, 864, 865, 866, + 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, + 825, 828, 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 847, 848, 851, 852, + 853, 856, 857, 858, 859, 860, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 880, 884, 885, 888, 889, 890, 891, 893, 896, - 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, - 916, 926, 928, 931, 938, 939, 944, 950, 951, 953, - 974, 977, 981, 984, 985, 988, 989, 990, 994, 999, - 1000, 1001, 1002, 1006, 1007, 1009, 1013, 1017, 1022, 1026, - 1030, 1031, 1032, 1037, 1040, 1041, 1044, 1045, 1046, 1049, - 1050, 1053, 1054, 1057, 1058, 1063, 1064, 1065, 1066, 1073, - 1080, 1087, 1094, 1102, 1110, 1111, 1112, 1113, 1114, 1115, - 1119, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, - 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1160, - 1163, 1164, 1167, 1168, 1172, 1173, 1174, 1179, 1180, 1181, - 1183, 1185, 1187, 1188, 1189, 1193, 1197, 1201, 1205, 1209, - 1213, 1217, 1221, 1225, 1229, 1233, 1237, 1241, 1245, 1249, - 1253, 1257, 1261, 1268, 1269, 1271, 1275, 1276, 1278, 1282, - 1283, 1287, 1288, 1291, 1292, 1295, 1296, 1299, 1300, 1304, - 1305, 1306, 1310, 1311, 1312, 1314, 1318, 1319, 1323, 1329, - 1332, 1335, 1338, 1341, 1344, 1347, 1355, 1358, 1361, 1364, - 1367, 1370, 1373, 1377, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 1393, 1394, 1395, 1402, 1410, 1418, 1424, 1430, 1436, - 1440, 1441, 1443, 1445, 1449, 1455, 1458, 1459, 1460, 1461, - 1462, 1466, 1467, 1470, 1471, 1474, 1475, 1479, 1480, 1483, - 1484, 1487, 1488, 1489, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1503, 1509, 1516, 1517, 1520, 1521, 1522, 1523, - 1527, 1528, 1535, 1541, 1543, 1546, 1548, 1549, 1551, 1553, - 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 1566, 1567, 1568, 1569, 1571, 1573, 1578, 1583, - 1586, 1588, 1590, 1591, 1592, 1593, 1594, 1596, 1598, 1600, - 1601, 1603, 1606, 1610, 1611, 1612, 1613, 1615, 1616, 1617, - 1618, 1619, 1620, 1621, 1622, 1625, 1626, 1629, 1630, 1631, + 877, 878, 879, 882, 886, 887, 890, 891, 892, 893, + 895, 898, 899, 900, 901, 902, 903, 904, 905, 906, + 907, 908, 918, 928, 930, 933, 940, 941, 946, 952, + 953, 955, 976, 979, 983, 986, 987, 990, 991, 992, + 996, 1001, 1002, 1003, 1004, 1008, 1009, 1011, 1015, 1019, + 1024, 1028, 1032, 1033, 1034, 1039, 1042, 1043, 1046, 1047, + 1048, 1051, 1052, 1055, 1056, 1059, 1060, 1065, 1066, 1067, + 1068, 1075, 1082, 1089, 1096, 1104, 1112, 1113, 1114, 1115, + 1116, 1117, 1121, 1124, 1126, 1128, 1130, 1132, 1134, 1136, + 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, + 1158, 1162, 1165, 1166, 1169, 1170, 1174, 1175, 1176, 1181, + 1182, 1183, 1185, 1187, 1189, 1190, 1191, 1195, 1199, 1203, + 1207, 1211, 1215, 1219, 1223, 1227, 1231, 1235, 1239, 1243, + 1247, 1251, 1255, 1259, 1263, 1270, 1271, 1273, 1277, 1278, + 1280, 1284, 1285, 1289, 1290, 1293, 1294, 1297, 1298, 1301, + 1302, 1306, 1307, 1308, 1312, 1313, 1314, 1316, 1320, 1321, + 1325, 1331, 1334, 1337, 1340, 1343, 1346, 1349, 1357, 1360, + 1363, 1366, 1369, 1372, 1375, 1379, 1380, 1381, 1382, 1383, + 1384, 1385, 1386, 1395, 1396, 1397, 1404, 1412, 1420, 1426, + 1432, 1438, 1442, 1443, 1445, 1447, 1451, 1457, 1460, 1461, + 1462, 1463, 1464, 1468, 1469, 1472, 1473, 1476, 1477, 1481, + 1482, 1485, 1486, 1489, 1490, 1491, 1495, 1496, 1497, 1498, + 1499, 1500, 1501, 1502, 1505, 1511, 1518, 1519, 1522, 1523, + 1524, 1525, 1529, 1530, 1537, 1543, 1545, 1548, 1550, 1551, + 1553, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, + 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1573, 1575, + 1580, 1585, 1588, 1590, 1592, 1593, 1594, 1595, 1596, 1598, + 1600, 1602, 1603, 1605, 1608, 1612, 1613, 1614, 1615, 1617, + 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1627, 1628, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1676, 1677, 1681, 1687, 1688, 1689, - 1690, 1691, 1692, 1693, 1694, 1695, 1697, 1699, 1706, 1713, - 1719, 1725, 1740, 1755, 1756, 1757, 1758, 1759, 1760, 1761, - 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, - 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1784, 1785, - 1788, 1789, 1790, 1791, 1794, 1798, 1800, 1802, 1803, 1804, - 1806, 1815, 1816, 1817, 1820, 1823, 1828, 1829, 1833, 1834, - 1837, 1840, 1841, 1844, 1847, 1850, 1853, 1857, 1863, 1869, - 1875, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, - 1892, 1893, 1894, 1895, 1896, 1897, 1901, 1902, 1905, 1908, - 1910, 1913, 1915, 1919, 1922, 1926, 1929, 1933, 1936, 1942, - 1944, 1947, 1948, 1951, 1952, 1955, 1958, 1961, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1973, 1974, 1977, - 1978, 1979, 1982, 1983, 1986, 1987, 1989, 1990, 1991, 1992, - 1995, 1998, 2001, 2004, 2006, 2010, 2011, 2014, 2015, 2016, - 2017, 2020, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, - 2033, 2034, 2035, 2038, 2039, 2042, 2043, 2044, 2045, 2047, - 2049, 2050, 2053, 2054, 2058, 2059, 2060, 2063, 2064, 2067, - 2068, 2069, 2070 + 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1683, 1689, + 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1699, 1701, + 1708, 1715, 1721, 1727, 1742, 1757, 1758, 1759, 1760, 1761, + 1762, 1763, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, + 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, + 1786, 1787, 1790, 1791, 1792, 1793, 1796, 1800, 1802, 1804, + 1805, 1806, 1808, 1817, 1818, 1819, 1822, 1825, 1830, 1831, + 1835, 1836, 1839, 1842, 1843, 1846, 1849, 1852, 1855, 1859, + 1865, 1871, 1877, 1885, 1886, 1887, 1888, 1889, 1890, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1903, 1904, + 1907, 1910, 1912, 1915, 1917, 1921, 1924, 1928, 1931, 1935, + 1938, 1944, 1946, 1949, 1950, 1953, 1954, 1957, 1960, 1963, + 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1975, + 1976, 1979, 1980, 1981, 1984, 1985, 1988, 1989, 1991, 1992, + 1993, 1994, 1997, 2000, 2003, 2006, 2008, 2012, 2013, 2016, + 2017, 2018, 2019, 2022, 2025, 2028, 2029, 2030, 2031, 2032, + 2033, 2034, 2035, 2036, 2037, 2040, 2041, 2044, 2045, 2046, + 2047, 2049, 2051, 2052, 2055, 2056, 2060, 2061, 2062, 2065, + 2066, 2069, 2070, 2071, 2072 }; #endif @@ -1492,8 +1494,8 @@ static const char *const yytname[] = "INSTANCE_", "SPECIALNAME_", "FORWARDER_", "STATIC_", "PUBLIC_", "PRIVATE_", "FAMILY_", "FINAL_", "SYNCHRONIZED_", "INTERFACE_", "SEALED_", "NESTED_", "ABSTRACT_", "AUTO_", "SEQUENTIAL_", "EXPLICIT_", - "ANSI_", "UNICODE_", "AUTOCHAR_", "IMPORT_", "ENUM_", "VIRTUAL_", - "NOINLINING_", "AGGRESSIVEINLINING_", "NOOPTIMIZATION_", + "EXTENDED_", "ANSI_", "UNICODE_", "AUTOCHAR_", "IMPORT_", "ENUM_", + "VIRTUAL_", "NOINLINING_", "AGGRESSIVEINLINING_", "NOOPTIMIZATION_", "AGGRESSIVEOPTIMIZATION_", "UNMANAGEDEXP_", "BEFOREFIELDINIT_", "ASYNC_", "STRICT_", "RETARGETABLE_", "WINDOWSRUNTIME_", "NOPLATFORM_", "METHOD_", "FIELD_", "PINNED_", "MODREQ_", "MODOPT_", "SERIALIZABLE_", "PROPERTY_", @@ -1578,12 +1580,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-1345) +#define YYPACT_NINF (-1347) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-575) +#define YYTABLE_NINF (-577) #define yytable_value_is_error(Yyn) \ 0 @@ -1592,167 +1594,167 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -1345, 1188, -1345, -1345, -80, 5281, -1345, -75, 61, 2078, - 2078, -1345, -1345, 240, 223, -67, -30, -20, 50, -1345, - 4471, 275, 275, 141, 141, 1282, -16, -1345, 5281, 5281, - 5281, 5281, -1345, -1345, 293, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, 290, 290, -1345, -1345, -1345, -1345, 290, 15, - -1345, 294, 89, -1345, -1345, -1345, -1345, 129, -1345, 290, - 275, -1345, -1345, 97, 107, 130, 135, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, 128, 275, -1345, - -1345, -1345, 4538, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 2294, 33, - 99, -1345, -1345, 168, 175, -1345, -1345, 451, 132, 132, - 2151, 180, -1345, 4333, -1345, -1345, 207, 275, 275, 4880, - -1345, 4826, 5140, 5281, 128, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, 4333, -1345, -1345, -1345, 614, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, 3190, -1345, 453, 3190, 164, -1345, 3628, -1345, -1345, - -1345, 885, 733, 128, 377, 394, -1345, 397, 1446, 415, - 214, 359, -1345, 3190, 64, 128, 128, 128, -1345, -1345, - 261, 553, 274, 281, -1345, 5035, 2294, 537, -1345, 5380, - 3613, 299, 62, 86, 94, 162, 169, 186, 317, 178, - 322, -1345, -1345, 290, 324, 42, -1345, -1345, -1345, -1345, - 5130, 5281, 323, 4163, 334, 2832, -1345, 132, -1345, -13, - 221, -1345, 360, -33, 365, 660, 275, 275, -1345, -1345, - -1345, -1345, -1345, -1345, 374, -1345, -1345, 57, 164, 1535, - -1345, 382, -1345, -1345, -45, 4826, -1345, -1345, -1345, 31, - 472, -1345, -1345, -1345, -1345, 128, -1345, -1345, -53, 128, - 221, -1345, -1345, -1345, -1345, -1345, 3190, -1345, 663, -1345, - -1345, -1345, -1345, 1843, 5281, 401, -146, 413, 5238, 128, - -1345, 5281, 5281, 5281, -1345, 4333, 5281, 5281, -1345, 422, - 424, 5281, 38, 4333, -1345, -1345, 430, 3190, 365, -1345, - -1345, -1345, -1345, 4271, 434, -1345, -1345, -1345, -1345, -1345, - -1345, 416, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -102, -1345, 2294, -1345, 4502, - 441, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 445, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, 275, -1345, 275, -1345, -1345, -1345, - 275, 426, -54, 2452, -1345, -1345, -1345, 439, -1345, -1345, - -78, -1345, -1345, -1345, -1345, 531, 2286, -1345, -1345, 2587, - 275, 141, 108, 2587, 1446, 3572, 2294, 140, 132, 2151, - 449, 290, -1345, -1345, -1345, 454, 275, 275, -1345, 275, - -1345, 275, -1345, 141, -1345, 138, -1345, 138, -1345, -1345, - 466, 458, 4538, 464, -1345, -1345, -1345, 275, 275, 1460, - 1144, 1632, 2147, -1345, -1345, -1345, 721, 128, 128, -1345, - 473, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, 474, 2431, -1345, 5281, -86, 4333, - 755, 481, -1345, 2595, -1345, 765, 482, 478, 489, 1446, - -1345, -1345, 365, -1345, -1345, 2850, 46, 476, 769, -1345, - -1345, 581, -51, -1345, 5281, -1345, -1345, 46, 772, -29, - 5281, 5281, 5281, 128, -1345, 128, 128, 128, 1685, 128, - 128, 2294, 2294, 128, -1345, -1345, 775, -81, -1345, 490, - 506, 221, -1345, -1345, -1345, 275, -1345, -1345, -1345, -1345, - -1345, -1345, 187, -1345, 507, -1345, 690, -1345, -1345, -1345, - 275, 275, -1345, -35, 2753, -1345, -1345, -1345, -1345, 516, - -1345, -1345, 518, 523, -1345, -1345, -1345, -1345, 525, 275, - 755, 3989, -1345, -1345, 513, 275, 892, 3285, 275, 132, - 804, -1345, 529, 79, 3795, -1345, 2294, -1345, -1345, -1345, - 531, 13, 2286, 13, 13, 13, 768, 776, -1345, -1345, - -1345, -1345, -1345, -1345, 536, 551, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, 1843, -1345, 552, 365, 290, - 4333, -1345, 2587, 555, 755, 556, 548, 557, 558, 560, - 571, 573, -1345, 178, 574, -1345, 545, 43, 645, 575, - 29, 34, -1345, -1345, -1345, -1345, -1345, -1345, 290, 290, - -1345, 577, 578, -1345, 290, -1345, 290, -1345, 582, 59, - 5281, 656, -1345, -1345, -1345, -1345, 5281, 662, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 275, 4789, - -1, -27, 5281, 477, 21, 583, 587, -1345, 3274, 584, - 593, 592, -1345, 878, -1345, -1345, 589, 597, 4479, 4278, - 594, 600, 5184, 633, 290, 5281, 128, 5281, 5281, 214, - 214, 214, 601, 596, 603, 275, 176, -1345, -1345, 4333, - 605, 607, -1345, -1345, -1345, -1345, -1345, -1345, 187, 3976, - 606, 2294, 2294, 1993, 739, -1345, -1345, 5130, 3292, 3387, - 132, 886, -1345, -1345, -1345, 3969, -1345, 611, -3, 467, - 188, 404, 275, 609, 275, 128, 275, -100, 612, 4333, - 5184, 79, -1345, 3989, 615, 624, -1345, -1345, -1345, -1345, - 2587, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 4538, - 275, 275, 141, 46, 900, 755, 625, 460, 627, 629, - 631, -1345, 24, 632, -1345, 632, 632, 632, 632, 632, - -1345, -1345, 275, -1345, 275, 275, 635, -1345, -1345, 628, - 638, 365, 640, 641, 639, 643, 644, 646, 275, 5281, - -1345, 128, 5281, 16, 5281, 647, -1345, -1345, -1345, 519, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, 649, 698, 713, -1345, 702, 670, -64, 929, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - 649, 649, -1345, 4385, -1345, -1345, -1345, -1345, 661, 290, - 18, 4538, 668, 5281, 2960, -1345, 755, 679, 674, 693, - -1345, 2595, -1345, 65, -1345, 210, 224, 793, 238, 241, - 254, 264, 265, 300, 311, 312, 338, 353, 354, 355, - 368, -1345, 954, -1345, 290, -1345, 275, 687, 79, 79, - 128, 476, -1345, -1345, 4538, -1345, -1345, -1345, 694, 128, - 128, 214, 79, -1345, -1345, -1345, -1345, 221, -1345, 275, - -1345, 2294, -60, 5281, -1345, -1345, 795, -1345, -1345, 105, - 5281, -1345, -1345, 4333, 128, 275, 128, 275, 48, 4333, - 5184, 4554, 1324, 1940, -1345, 2711, -1345, 755, 493, 703, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - 696, 730, -1345, 697, 707, 725, 735, 742, 5184, -1345, - 901, 740, 743, 2294, 668, 1843, -1345, 748, 404, -1345, - 1019, 983, 984, -1345, -1345, 754, 756, 5281, 84, -1345, - 79, 2587, 2587, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, 44, 1043, -1345, -1345, 29, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, 757, 214, 128, 275, 128, -1345, -1345, - -1345, -1345, -1345, -1345, 818, -1345, -1345, -1345, -1345, 755, - 774, 779, -1345, -1345, -1345, -1345, -1345, 706, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, 143, -1345, 27, 51, - -1345, -1345, 3441, -1345, 780, -1345, -1345, 365, -1345, 784, - -1345, -1345, -1345, -1345, 791, -1345, -1345, -1345, -1345, 365, - 378, 275, 275, 275, 384, 385, 390, 396, 275, 275, - 275, 275, 275, 275, 141, 275, 565, 275, 562, 275, - 275, 275, 275, 275, 275, 275, 141, 275, 3528, 275, - 127, 275, 3090, 275, -1345, -1345, -1345, 5362, 778, 782, - -1345, 787, 788, 796, 797, -1345, 921, 794, 801, 803, - 800, -1345, 187, -1345, -60, 1446, -1345, 128, 2431, 802, - 805, 2294, 1843, 844, -1345, 1446, 1446, 1446, 1446, -1345, - -1345, -1345, -1345, -1345, -1345, 1446, 1446, 1446, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, 365, -1345, 275, 336, 486, - -1345, -1345, -1345, -1345, 4789, 806, 4538, -1345, 811, -1345, - -1345, 1087, -1345, 4538, -1345, 4538, 275, -1345, -1345, 128, - -1345, 813, -1345, -1345, -1345, 275, -1345, 810, -1345, -1345, - 812, 406, 275, 275, -1345, -1345, -1345, -1345, -1345, -1345, - 755, 828, -1345, -1345, 275, -1345, -71, 821, 843, 816, - 847, 849, 851, 852, 854, 855, 857, 859, 860, 861, - -1345, 365, -1345, -1345, 275, 233, -1345, 745, 866, 863, - 864, 865, 867, 275, 275, 275, 275, 275, 275, 141, - 275, 869, 872, 870, 873, 879, 874, 880, 877, 887, - 888, 881, 889, 890, 882, 891, 893, 896, 894, 899, - 898, 903, 902, 904, 905, 907, 908, 909, 911, 1152, - 912, 913, -1345, 3111, -1345, 3450, -1345, -1345, 910, -1345, - -1345, 79, 79, -1345, -1345, -1345, -1345, 2294, -1345, -1345, - 417, -1345, 918, -1345, 1170, 132, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, 960, 919, -1345, -1345, -1345, -1345, 922, - 868, -1345, 2294, 5184, -1345, -1345, -1345, -1345, 1193, 29, - 275, 755, 917, 920, 365, -1345, 923, 275, -1345, 924, - 926, 927, 931, 928, 925, 930, 939, 934, 975, -1345, - -1345, -1345, 932, -1345, 936, 950, 947, 952, 949, 956, - 953, 958, 955, -1345, 972, -1345, 973, -1345, 974, -1345, - 976, -1345, -1345, 986, -1345, -1345, 987, -1345, 988, -1345, - 989, -1345, 990, -1345, 991, -1345, 997, -1345, -1345, 998, - -1345, 1000, -1345, 999, 1242, -1345, 970, 189, -1345, 1001, - 1003, -1345, 79, 2294, 5184, 4333, -1345, -1345, -1345, 79, - -1345, 895, -1345, 1008, 1005, 76, -1345, 4828, -1345, 979, - -1345, 275, 275, 275, -1345, -1345, -1345, -1345, -1345, 1012, - -1345, 1020, -1345, 1026, -1345, 1031, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, 3528, -1345, -1345, 1032, -1345, 895, 1843, 1033, - 1028, 1036, -1345, 29, -1345, 755, -1345, 18, -1345, 1038, - 1041, 1044, 8, 68, -1345, -1345, -1345, -1345, 78, 81, - 87, 98, 74, 71, 92, 95, 102, 100, 1034, 53, - 2978, -1345, 668, 1037, 1320, -1345, 79, -1345, 414, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, 106, 121, 122, 104, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, 1340, -1345, -1345, -1345, 79, 5184, 2000, - 1053, 755, -1345, -1345, -1345, -1345, -1345, 1058, 1062, 1067, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, 412, 1107, 79, - 275, -1345, 1260, 1072, 1073, 132, -1345, -1345, 4333, 1843, - 1351, 5184, 895, 1077, 79, 1078, -1345 + -1347, 2869, -1347, -1347, -98, 5309, -1347, -165, 87, 3866, + 3866, -1347, -1347, 136, 418, -143, -135, -97, -2, -1347, + 4897, 185, 185, 361, 361, 1847, -68, -1347, 5309, 5309, + 5309, 5309, -1347, -1347, 223, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, 226, 226, -1347, -1347, -1347, -1347, 226, -50, + -1347, 196, 4, -1347, -1347, -1347, -1347, 176, -1347, 226, + 185, -1347, -1347, 24, 38, 47, 50, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 26, 185, + -1347, -1347, -1347, 4553, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 2300, + 41, 14, -1347, -1347, 93, 122, -1347, -1347, 526, 539, + 539, 2149, 27, -1347, 4347, -1347, -1347, 140, 185, 185, + 5048, -1347, 4842, 5224, 5309, 26, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, 4347, -1347, -1347, -1347, 759, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, 3377, -1347, 302, 3377, 225, -1347, 3652, -1347, + -1347, -1347, 1218, 697, 26, 242, 301, -1347, 313, 2033, + 333, 177, 194, -1347, 3377, 56, 26, 26, 26, -1347, + -1347, 201, 483, 212, 235, -1347, 5114, 2300, 489, -1347, + 5483, 3637, 233, 91, 120, 207, 219, 230, 255, 289, + 237, 291, -1347, -1347, 226, 293, 42, -1347, -1347, -1347, + -1347, 5210, 5309, 319, 4186, 324, 2891, -1347, 539, -1347, + -119, 379, -1347, 305, -39, 341, 631, 185, 185, -1347, + -1347, -1347, -1347, -1347, -1347, 348, -1347, -1347, 37, 225, + 1537, -1347, 351, -1347, -1347, -63, 4842, -1347, -1347, -1347, + 25, 435, -1347, -1347, -1347, -1347, 26, -1347, -1347, -20, + 26, 379, -1347, -1347, -1347, -1347, -1347, 3377, -1347, 635, + -1347, -1347, -1347, -1347, 1371, 5309, 362, -67, 368, 5356, + 26, -1347, 5309, 5309, 5309, -1347, 4347, 5309, 5309, -1347, + 386, 388, 5309, 44, 4347, -1347, -1347, 398, 3377, 341, + -1347, -1347, -1347, -1347, 4285, 403, -1347, -1347, -1347, -1347, + -1347, -1347, 73, -1347, -1347, -1347, -1347, 211, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -105, -1347, 2300, + -1347, 4517, 426, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + 440, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, 185, -1347, 185, -1347, + -1347, -1347, 185, 413, 123, 2451, -1347, -1347, -1347, 429, + -1347, -1347, -76, -1347, -1347, -1347, -1347, 578, 1674, -1347, + -1347, 5420, 185, 361, 121, 5420, 2033, 3596, 2300, 148, + 539, 2149, 454, 226, -1347, -1347, -1347, 464, 185, 185, + -1347, 185, -1347, 185, -1347, 361, -1347, 195, -1347, 195, + -1347, -1347, 471, 501, 4553, 451, -1347, -1347, -1347, 185, + 185, 1144, 2986, 1773, 570, -1347, -1347, -1347, 452, 26, + 26, -1347, 481, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, 507, 937, -1347, 5309, + -34, 4347, 798, 517, -1347, 2602, -1347, 803, 520, 524, + 534, 2033, -1347, -1347, 341, -1347, -1347, 2825, 35, 521, + 813, -1347, -1347, 623, 9, -1347, 5309, -1347, -1347, 35, + 815, -10, 5309, 5309, 5309, 26, -1347, 26, 26, 26, + 1688, 26, 26, 2300, 2300, 26, -1347, -1347, 826, -83, + -1347, 532, 554, 379, -1347, -1347, -1347, 185, -1347, -1347, + -1347, -1347, -1347, -1347, 173, -1347, 555, -1347, 738, -1347, + -1347, -1347, 185, 185, -1347, -36, 2753, -1347, -1347, -1347, + -1347, 561, -1347, -1347, 569, 572, -1347, -1347, -1347, -1347, + 573, 185, 798, 3530, -1347, -1347, 556, 185, 2135, 2286, + 185, 539, 847, -1347, 574, 80, 3819, -1347, 2300, -1347, + -1347, -1347, 578, 23, 1674, 23, 23, 23, 809, 810, + -1347, -1347, -1347, -1347, -1347, -1347, 577, 581, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, 1371, -1347, 582, + 341, 226, 4347, -1347, 5420, 584, 798, 585, 583, 586, + 588, 589, 590, 591, -1347, 237, 594, -1347, 587, 65, + 660, 580, 31, 55, -1347, -1347, -1347, -1347, -1347, -1347, + 226, 226, -1347, 596, 598, -1347, 226, -1347, 226, -1347, + 597, 66, 5309, 677, -1347, -1347, -1347, -1347, 5309, 684, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + 185, 4805, 53, 139, 5309, 438, 108, 605, 609, -1347, + 3447, 607, 617, 616, -1347, 905, -1347, -1347, 612, 622, + 4494, 4292, 619, 620, 5290, 505, 226, 5309, 26, 5309, + 5309, 177, 177, 177, 621, 625, 627, 185, 150, -1347, + -1347, 4347, 629, 632, -1347, -1347, -1347, -1347, -1347, -1347, + 173, 1827, 630, 2300, 2300, 1998, 124, -1347, -1347, 5210, + 2437, 2588, 539, 900, -1347, -1347, -1347, 3991, -1347, 637, + -60, 472, 57, 210, 185, 634, 185, 26, 185, 104, + 640, 4347, 5290, 80, -1347, 3530, 639, 638, -1347, -1347, + -1347, -1347, 5420, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, 4553, 185, 185, 361, 35, 925, 798, 649, 371, + 654, 656, 662, -1347, -19, 651, -1347, 651, 651, 651, + 651, 651, -1347, -1347, 185, -1347, 185, 185, 661, -1347, + -1347, 663, 670, 341, 672, 673, 671, 678, 681, 683, + 185, 5309, -1347, 26, 5309, 54, 5309, 686, -1347, -1347, + -1347, 417, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, 685, 744, 754, -1347, 745, 698, + -75, 973, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, 685, 685, -1347, 4399, -1347, -1347, -1347, -1347, + 699, 226, 6, 4553, 703, 5309, 3095, -1347, 798, 705, + 706, 720, -1347, 2602, -1347, 48, -1347, 282, 300, 772, + 303, 350, 355, 366, 374, 376, 387, 395, 397, 411, + 423, 431, 433, -1347, 1043, -1347, 226, -1347, 185, 709, + 80, 80, 26, 521, -1347, -1347, 4553, -1347, -1347, -1347, + 716, 26, 26, 177, 80, -1347, -1347, -1347, -1347, 379, + -1347, 185, -1347, 2300, 174, 5309, -1347, -1347, 816, -1347, + -1347, 444, 5309, -1347, -1347, 4347, 26, 185, 26, 185, + 198, 4347, 5290, 4569, 903, 3564, -1347, 3056, -1347, 798, + 850, 719, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, 712, 713, -1347, 718, 721, 722, 724, 725, + 5290, -1347, 882, 726, 728, 2300, 703, 1371, -1347, 729, + 210, -1347, 1010, 974, 976, -1347, -1347, 742, 743, 5309, + 456, -1347, 80, 5420, 5420, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, 96, 1027, -1347, -1347, 31, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, 746, 177, 26, 185, 26, + -1347, -1347, -1347, -1347, -1347, -1347, 791, -1347, -1347, -1347, + -1347, 798, 741, 747, -1347, -1347, -1347, -1347, -1347, 603, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -54, -1347, + 86, 62, -1347, -1347, 3384, -1347, 752, -1347, -1347, 341, + -1347, 753, -1347, -1347, -1347, -1347, 760, -1347, -1347, -1347, + -1347, 341, 476, 185, 185, 185, 441, 459, 461, 466, + 185, 185, 185, 185, 185, 185, 361, 185, 527, 185, + 595, 185, 185, 185, 185, 185, 185, 185, 361, 185, + 2970, 185, 128, 185, 3235, 185, -1347, -1347, -1347, 3848, + 755, 749, -1347, 756, 757, 761, 762, -1347, 891, 763, + 764, 765, 769, -1347, 173, -1347, 174, 2033, -1347, 26, + 937, 770, 771, 2300, 1371, 821, -1347, 2033, 2033, 2033, + 2033, -1347, -1347, -1347, -1347, -1347, -1347, 2033, 2033, 2033, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, 341, -1347, 185, + 408, 416, -1347, -1347, -1347, -1347, 4805, 777, 4553, -1347, + 779, -1347, -1347, 1061, -1347, 4553, -1347, 4553, 185, -1347, + -1347, 26, -1347, 784, -1347, -1347, -1347, 185, -1347, 778, + -1347, -1347, 783, 276, 185, 185, -1347, -1347, -1347, -1347, + -1347, -1347, 798, 785, -1347, -1347, 185, -1347, -101, 792, + 793, 790, 794, 796, 797, 799, 800, 801, 814, 820, + 822, 823, -1347, 341, -1347, -1347, 185, 296, -1347, 553, + 795, 812, 825, 843, 845, 185, 185, 185, 185, 185, + 185, 361, 185, 851, 852, 854, 855, 862, 860, 866, + 873, 878, 879, 876, 881, 886, 883, 888, 892, 897, + 895, 901, 896, 906, 899, 907, 904, 909, 913, 911, + 917, 1086, 918, 915, -1347, 3305, -1347, 2963, -1347, -1347, + 841, -1347, -1347, 80, 80, -1347, -1347, -1347, -1347, 2300, + -1347, -1347, 447, -1347, 858, -1347, 1160, 539, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, 1119, 920, -1347, -1347, -1347, + -1347, 922, 924, -1347, 2300, 5290, -1347, -1347, -1347, -1347, + 1194, 31, 185, 798, 921, 927, 341, -1347, 928, 185, + -1347, 929, 934, 935, 936, 941, 916, 940, 942, 943, + 819, -1347, -1347, -1347, 945, -1347, 946, 951, 932, 952, + 949, 955, 956, 963, 961, -1347, 957, -1347, 967, -1347, + 968, -1347, 969, -1347, -1347, 972, -1347, -1347, 975, -1347, + 977, -1347, 978, -1347, 985, -1347, 988, -1347, 989, -1347, + -1347, 990, -1347, 992, -1347, 991, 1261, -1347, 993, 475, + -1347, 994, 995, -1347, 80, 2300, 5290, 4347, -1347, -1347, + -1347, 80, -1347, 996, -1347, 998, 999, 298, -1347, 4844, + -1347, 1000, -1347, 185, 185, 185, -1347, -1347, -1347, -1347, + -1347, 1003, -1347, 1004, -1347, 1008, -1347, 1011, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, 2970, -1347, -1347, 1009, -1347, 996, + 1371, 1012, 1016, 1014, -1347, 31, -1347, 798, -1347, 6, + -1347, 1022, 1023, 1024, 30, 78, -1347, -1347, -1347, -1347, + 84, 85, 88, 59, 79, 71, 97, 98, 99, 75, + 4000, 69, 3165, -1347, 703, 1015, 1271, -1347, 80, -1347, + 486, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 100, 103, + 106, 82, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, 1287, -1347, -1347, -1347, 80, + 5290, 1557, 1028, 798, -1347, -1347, -1347, -1347, -1347, 1036, + 1038, 1039, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 478, + 1051, 80, 185, -1347, 1219, 1040, 1041, 539, -1347, -1347, + 4347, 1371, 1317, 5290, 996, 1047, 80, 1042, -1347 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1760,215 +1762,215 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 101, 121, 0, 280, 224, 406, 0, - 0, 776, 777, 0, 237, 0, 0, 791, 797, 854, - 108, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 0, 73, 74, 0, 76, 3, 25, 26, 27, - 99, 100, 450, 450, 19, 17, 10, 9, 450, 0, - 124, 151, 0, 7, 287, 352, 8, 0, 18, 450, - 0, 11, 12, 0, 0, 0, 0, 833, 37, 55, - 53, 42, 38, 47, 48, 49, 50, 51, 52, 39, - 40, 41, 43, 44, 45, 46, 54, 120, 0, 204, - 407, 408, 405, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 0, 0, - 34, 231, 232, 0, 0, 238, 239, 244, 237, 237, - 0, 77, 87, 0, 235, 230, 0, 0, 0, 0, - 797, 0, 0, 0, 109, 57, 20, 21, 59, 58, - 23, 24, 570, 727, 0, 704, 712, 710, 0, 713, - 714, 715, 716, 717, 718, 723, 724, 725, 726, 687, - 711, 0, 703, 0, 0, 38, 508, 0, 571, 572, - 573, 0, 0, 574, 0, 0, 251, 0, 237, 0, - 568, 0, 708, 30, 68, 70, 71, 72, 75, 452, - 0, 451, 0, 0, 2, 0, 0, 153, 155, 237, - 0, 0, 413, 413, 413, 413, 413, 413, 0, 0, - 0, 403, 410, 450, 0, 779, 807, 825, 843, 857, - 0, 0, 0, 0, 0, 0, 569, 237, 576, 737, - 579, 32, 0, 0, 739, 0, 0, 0, 240, 241, - 242, 243, 233, 234, 0, 89, 88, 0, 0, 0, - 119, 0, 22, 792, 793, 0, 798, 799, 800, 802, - 0, 803, 804, 805, 806, 796, 855, 856, 852, 110, - 709, 719, 720, 721, 722, 686, 0, 689, 0, 705, - 707, 249, 250, 0, 0, 0, 0, 0, 0, 702, - 700, 0, 0, 0, 246, 0, 0, 0, 694, 0, - 0, 0, 730, 553, 693, 692, 0, 30, 69, 80, - 453, 84, 118, 0, 0, 127, 148, 125, 126, 129, - 130, 0, 131, 132, 133, 134, 135, 136, 137, 138, - 128, 147, 140, 139, 149, 163, 152, 0, 123, 0, - 0, 293, 288, 289, 290, 291, 292, 296, 294, 304, - 295, 297, 298, 299, 300, 301, 302, 303, 0, 305, - 329, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 0, 388, 0, 351, 359, 360, - 0, 0, 0, 0, 381, 6, 366, 0, 368, 367, - 0, 353, 374, 352, 355, 0, 0, 361, 523, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 237, 0, - 0, 450, 362, 364, 365, 0, 0, 0, 429, 0, - 428, 0, 427, 0, 426, 0, 424, 0, 425, 449, - 0, 412, 0, 0, 738, 788, 778, 0, 0, 0, - 0, 0, 0, 836, 835, 834, 0, 831, 56, 225, - 0, 211, 205, 206, 207, 208, 213, 214, 215, 216, - 210, 217, 218, 209, 0, 0, 404, 0, 0, 0, - 0, 0, 747, 741, 746, 0, 35, 0, 0, 237, - 91, 85, 78, 326, 327, 730, 328, 551, 0, 112, - 794, 790, 823, 801, 0, 688, 706, 248, 0, 0, - 0, 0, 0, 701, 699, 66, 67, 65, 0, 64, - 575, 0, 0, 63, 731, 690, 732, 0, 728, 0, - 554, 555, 28, 31, 5, 0, 141, 142, 143, 144, - 145, 146, 172, 122, 154, 158, 0, 121, 254, 268, - 0, 0, 833, 0, 0, 4, 196, 197, 190, 0, - 156, 186, 0, 0, 352, 187, 188, 189, 0, 0, - 310, 0, 354, 356, 0, 0, 0, 0, 0, 237, - 0, 363, 0, 329, 0, 398, 0, 396, 399, 382, - 384, 0, 0, 0, 0, 0, 0, 0, 385, 525, - 524, 526, 527, 60, 0, 0, 522, 529, 528, 532, - 531, 533, 537, 538, 536, 0, 539, 0, 540, 450, - 0, 544, 546, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 409, 0, 0, 417, 0, 781, 0, 0, - 0, 0, 13, 819, 818, 810, 808, 811, 450, 450, - 830, 0, 0, 14, 450, 828, 450, 826, 0, 0, - 0, 0, 15, 851, 850, 844, 0, 0, 16, 862, - 861, 858, 837, 838, 839, 840, 841, 842, 0, 580, - 220, 0, 577, 0, 0, 0, 748, 91, 0, 0, - 0, 742, 33, 0, 236, 245, 81, 0, 94, 553, - 0, 0, 0, 0, 450, 0, 853, 0, 0, 566, - 564, 565, 693, 0, 0, 734, 730, 691, 698, 0, - 0, 0, 167, 169, 168, 170, 165, 166, 172, 0, - 0, 0, 0, 0, 237, 191, 192, 0, 0, 0, - 237, 0, 155, 257, 271, 0, 843, 0, 310, 0, - 0, 281, 0, 0, 0, 376, 0, 0, 0, 0, - 0, 329, 561, 0, 0, 558, 559, 380, 397, 383, - 0, 400, 390, 394, 395, 393, 389, 391, 392, 0, - 0, 0, 0, 535, 0, 0, 0, 0, 549, 550, - 0, 530, 0, 413, 414, 413, 413, 413, 413, 413, - 411, 416, 0, 780, 0, 0, 0, 813, 812, 0, - 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, - 849, 845, 0, 0, 0, 0, 634, 588, 589, 0, - 623, 590, 591, 592, 593, 594, 595, 625, 601, 602, - 603, 604, 635, 0, 0, 631, 0, 0, 0, 585, - 586, 587, 610, 611, 612, 629, 613, 614, 615, 616, - 635, 635, 619, 637, 627, 633, 596, 285, 0, 0, - 283, 0, 222, 578, 0, 735, 0, 0, 53, 0, - 740, 741, 36, 0, 79, 0, 0, 0, 0, 0, + 2, 0, 1, 102, 122, 0, 282, 226, 408, 0, + 0, 778, 779, 0, 239, 0, 0, 793, 799, 856, + 109, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 74, 75, 0, 77, 3, 25, 26, 27, + 100, 101, 452, 452, 19, 17, 10, 9, 452, 0, + 125, 153, 0, 7, 289, 354, 8, 0, 18, 452, + 0, 11, 12, 0, 0, 0, 0, 835, 37, 56, + 54, 42, 38, 47, 53, 48, 49, 50, 51, 52, + 39, 40, 41, 43, 44, 45, 46, 55, 121, 0, + 206, 409, 410, 407, 763, 764, 765, 766, 767, 768, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 0, + 0, 34, 233, 234, 0, 0, 240, 241, 246, 239, + 239, 0, 78, 88, 0, 237, 232, 0, 0, 0, + 0, 799, 0, 0, 0, 110, 58, 20, 21, 60, + 59, 23, 24, 572, 729, 0, 706, 714, 712, 0, + 715, 716, 717, 718, 719, 720, 725, 726, 727, 728, + 689, 713, 0, 705, 0, 0, 38, 510, 0, 573, + 574, 575, 0, 0, 576, 0, 0, 253, 0, 239, + 0, 570, 0, 710, 30, 69, 71, 72, 73, 76, + 454, 0, 453, 0, 0, 2, 0, 0, 155, 157, + 239, 0, 0, 415, 415, 415, 415, 415, 415, 0, + 0, 0, 405, 412, 452, 0, 781, 809, 827, 845, + 859, 0, 0, 0, 0, 0, 0, 571, 239, 578, + 739, 581, 32, 0, 0, 741, 0, 0, 0, 242, + 243, 244, 245, 235, 236, 0, 90, 89, 0, 0, + 0, 120, 0, 22, 794, 795, 0, 800, 801, 802, + 804, 0, 805, 806, 807, 808, 798, 857, 858, 854, + 111, 711, 721, 722, 723, 724, 688, 0, 691, 0, + 707, 709, 251, 252, 0, 0, 0, 0, 0, 0, + 704, 702, 0, 0, 0, 248, 0, 0, 0, 696, + 0, 0, 0, 732, 555, 695, 694, 0, 30, 70, + 81, 455, 85, 119, 0, 0, 128, 150, 126, 127, + 130, 131, 0, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 129, 149, 142, 141, 151, 165, 154, 0, + 124, 0, 0, 295, 290, 291, 292, 293, 294, 298, + 296, 306, 297, 299, 300, 301, 302, 303, 304, 305, + 0, 307, 331, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 0, 390, 0, 353, + 361, 362, 0, 0, 0, 0, 383, 6, 368, 0, + 370, 369, 0, 355, 376, 354, 357, 0, 0, 363, + 525, 0, 0, 0, 0, 0, 239, 0, 0, 0, + 239, 0, 0, 452, 364, 366, 367, 0, 0, 0, + 431, 0, 430, 0, 429, 0, 428, 0, 426, 0, + 427, 451, 0, 414, 0, 0, 740, 790, 780, 0, + 0, 0, 0, 0, 0, 838, 837, 836, 0, 833, + 57, 227, 0, 213, 207, 208, 209, 210, 215, 216, + 217, 218, 212, 219, 220, 211, 0, 0, 406, 0, + 0, 0, 0, 0, 749, 743, 748, 0, 35, 0, + 0, 239, 92, 86, 79, 328, 329, 732, 330, 553, + 0, 113, 796, 792, 825, 803, 0, 690, 708, 250, + 0, 0, 0, 0, 0, 703, 701, 67, 68, 66, + 0, 65, 577, 0, 0, 64, 733, 692, 734, 0, + 730, 0, 556, 557, 28, 31, 5, 0, 143, 144, + 145, 146, 147, 148, 174, 123, 156, 160, 0, 122, + 256, 270, 0, 0, 835, 0, 0, 4, 198, 199, + 192, 0, 158, 188, 0, 0, 354, 189, 190, 191, + 0, 0, 312, 0, 356, 358, 0, 0, 0, 0, + 0, 239, 0, 365, 0, 331, 0, 400, 0, 398, + 401, 384, 386, 0, 0, 0, 0, 0, 0, 0, + 387, 527, 526, 528, 529, 61, 0, 0, 524, 531, + 530, 534, 533, 535, 539, 540, 538, 0, 541, 0, + 542, 452, 0, 546, 548, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 411, 0, 0, 419, 0, 783, + 0, 0, 0, 0, 13, 821, 820, 812, 810, 813, + 452, 452, 832, 0, 0, 14, 452, 830, 452, 828, + 0, 0, 0, 0, 15, 853, 852, 846, 0, 0, + 16, 864, 863, 860, 839, 840, 841, 842, 843, 844, + 0, 582, 222, 0, 579, 0, 0, 0, 750, 92, + 0, 0, 0, 744, 33, 0, 238, 247, 82, 0, + 95, 555, 0, 0, 0, 0, 452, 0, 855, 0, + 0, 568, 566, 567, 695, 0, 0, 736, 732, 693, + 700, 0, 0, 0, 169, 171, 170, 172, 167, 168, + 174, 0, 0, 0, 0, 0, 239, 193, 194, 0, + 0, 0, 239, 0, 157, 259, 273, 0, 845, 0, + 312, 0, 0, 283, 0, 0, 0, 378, 0, 0, + 0, 0, 0, 331, 563, 0, 0, 560, 561, 382, + 399, 385, 0, 402, 392, 396, 397, 395, 391, 393, + 394, 0, 0, 0, 0, 537, 0, 0, 0, 0, + 551, 552, 0, 532, 0, 415, 416, 415, 415, 415, + 415, 415, 413, 418, 0, 782, 0, 0, 0, 815, + 814, 0, 0, 818, 0, 0, 0, 0, 0, 0, + 0, 0, 851, 847, 0, 0, 0, 0, 636, 590, + 591, 0, 625, 592, 593, 594, 595, 596, 597, 627, + 603, 604, 605, 606, 637, 0, 0, 633, 0, 0, + 0, 587, 588, 589, 612, 613, 614, 631, 615, 616, + 617, 618, 637, 637, 621, 639, 629, 635, 598, 287, + 0, 0, 285, 0, 224, 580, 0, 737, 0, 0, + 54, 0, 742, 743, 36, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 93, 90, 457, 450, 92, 0, 0, 329, 329, - 328, 551, 113, 114, 0, 115, 116, 117, 0, 824, - 247, 567, 329, 695, 696, 733, 729, 556, 150, 0, - 173, 159, 176, 0, 164, 157, 0, 256, 255, 574, - 0, 270, 269, 0, 832, 0, 199, 0, 0, 0, - 0, 0, 0, 0, 182, 0, 306, 0, 0, 0, - 317, 318, 319, 320, 312, 313, 314, 311, 315, 316, - 0, 0, 309, 0, 0, 0, 0, 0, 0, 371, - 369, 0, 0, 0, 222, 0, 372, 0, 281, 357, - 329, 0, 0, 386, 387, 0, 0, 0, 0, 542, - 329, 546, 546, 545, 415, 423, 422, 421, 420, 418, - 419, 785, 783, 809, 820, 0, 822, 814, 817, 795, - 821, 827, 829, 0, 846, 847, 0, 860, 219, 624, - 597, 598, 599, 600, 0, 620, 626, 628, 632, 0, - 0, 0, 630, 617, 618, 641, 642, 0, 669, 643, - 644, 645, 646, 647, 648, 671, 653, 654, 655, 656, - 639, 640, 661, 662, 663, 664, 665, 666, 667, 668, - 638, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 657, 621, 212, 0, 0, - 605, 221, 0, 203, 0, 751, 752, 756, 754, 0, - 753, 750, 749, 736, 0, 94, 743, 91, 86, 82, + 0, 0, 0, 94, 91, 459, 452, 93, 0, 0, + 331, 331, 330, 553, 114, 115, 0, 116, 117, 118, + 0, 826, 249, 569, 331, 697, 698, 735, 731, 558, + 152, 0, 175, 161, 178, 0, 166, 159, 0, 258, + 257, 576, 0, 272, 271, 0, 834, 0, 201, 0, + 0, 0, 0, 0, 0, 0, 184, 0, 308, 0, + 0, 0, 319, 320, 321, 322, 314, 315, 316, 313, + 317, 318, 0, 0, 311, 0, 0, 0, 0, 0, + 0, 373, 371, 0, 0, 0, 224, 0, 374, 0, + 283, 359, 331, 0, 0, 388, 389, 0, 0, 0, + 0, 544, 331, 548, 548, 547, 417, 425, 424, 423, + 422, 420, 421, 787, 785, 811, 822, 0, 824, 816, + 819, 797, 823, 829, 831, 0, 848, 849, 0, 862, + 221, 626, 599, 600, 601, 602, 0, 622, 628, 630, + 634, 0, 0, 0, 632, 619, 620, 643, 644, 0, + 671, 645, 646, 647, 648, 649, 650, 673, 655, 656, + 657, 658, 641, 642, 663, 664, 665, 666, 667, 668, + 669, 670, 640, 674, 675, 676, 677, 678, 679, 680, + 681, 682, 683, 684, 685, 686, 687, 659, 623, 214, + 0, 0, 607, 223, 0, 205, 0, 753, 754, 758, + 756, 0, 755, 752, 751, 738, 0, 95, 745, 92, + 87, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 99, 97, 0, + 0, 0, 554, 0, 0, 0, 0, 112, 795, 0, + 0, 0, 162, 163, 174, 177, 178, 239, 204, 254, + 0, 0, 0, 0, 0, 0, 185, 239, 239, 239, + 239, 186, 267, 268, 266, 260, 265, 239, 239, 239, + 187, 280, 281, 278, 274, 279, 195, 312, 310, 0, + 0, 0, 332, 333, 334, 335, 582, 165, 0, 377, + 0, 380, 381, 0, 360, 564, 562, 0, 0, 62, + 63, 536, 543, 0, 549, 550, 786, 0, 784, 0, + 850, 861, 0, 0, 0, 0, 672, 651, 652, 653, + 654, 661, 0, 0, 662, 286, 0, 608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 97, 98, 96, 0, 0, 0, - 552, 0, 0, 0, 0, 111, 793, 0, 0, 0, - 160, 161, 172, 175, 176, 237, 202, 252, 0, 0, - 0, 0, 0, 0, 183, 237, 237, 237, 237, 184, - 265, 266, 264, 258, 263, 237, 237, 237, 185, 278, - 279, 276, 272, 277, 193, 310, 308, 0, 0, 0, - 330, 331, 332, 333, 580, 163, 0, 375, 0, 378, - 379, 0, 358, 562, 560, 0, 0, 61, 62, 534, - 541, 0, 547, 548, 784, 0, 782, 0, 848, 859, - 0, 0, 0, 0, 670, 649, 650, 651, 652, 659, - 0, 0, 660, 284, 0, 606, 0, 0, 0, 0, + 0, 0, 458, 457, 456, 225, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 456, 455, 454, 223, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 0, 104, 0, 103, 450, + 0, 231, 230, 331, 331, 791, 699, 173, 180, 0, + 179, 176, 0, 200, 0, 203, 0, 239, 261, 262, + 263, 264, 277, 275, 276, 0, 0, 323, 324, 325, + 326, 0, 0, 372, 0, 0, 565, 403, 404, 545, + 789, 0, 0, 0, 0, 0, 624, 660, 0, 0, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 746, 84, 449, 0, 448, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 439, 0, 438, 0, 437, + 0, 436, 0, 434, 432, 0, 435, 433, 0, 447, + 0, 446, 0, 445, 0, 444, 0, 465, 0, 461, + 460, 0, 464, 0, 463, 0, 0, 107, 0, 0, + 183, 0, 0, 164, 331, 0, 0, 0, 309, 327, + 284, 331, 379, 181, 788, 0, 0, 0, 585, 582, + 611, 0, 757, 0, 0, 0, 762, 747, 499, 495, + 443, 0, 442, 0, 441, 0, 440, 0, 497, 495, + 493, 491, 485, 488, 497, 495, 493, 491, 508, 501, + 462, 504, 106, 108, 0, 229, 228, 0, 202, 181, + 0, 0, 0, 0, 182, 0, 638, 0, 584, 586, + 610, 0, 0, 0, 0, 0, 497, 495, 493, 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 0, 103, 0, 102, 448, 0, 229, - 228, 329, 329, 789, 697, 171, 178, 0, 177, 174, - 0, 198, 0, 201, 0, 237, 259, 260, 261, 262, - 275, 273, 274, 0, 0, 321, 322, 323, 324, 0, - 0, 370, 0, 0, 563, 401, 402, 543, 787, 0, - 0, 0, 0, 0, 622, 658, 0, 0, 607, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 744, - 83, 447, 0, 446, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 437, 0, 436, 0, 435, 0, 434, - 0, 432, 430, 0, 433, 431, 0, 445, 0, 444, - 0, 443, 0, 442, 0, 463, 0, 459, 458, 0, - 462, 0, 461, 0, 0, 106, 0, 0, 181, 0, - 0, 162, 329, 0, 0, 0, 307, 325, 282, 329, - 377, 179, 786, 0, 0, 0, 583, 580, 609, 0, - 755, 0, 0, 0, 760, 745, 497, 493, 441, 0, - 440, 0, 439, 0, 438, 0, 495, 493, 491, 489, - 483, 486, 495, 493, 491, 489, 506, 499, 460, 502, - 105, 107, 0, 227, 226, 0, 200, 179, 0, 0, - 0, 0, 180, 0, 636, 0, 582, 584, 608, 0, - 0, 0, 0, 0, 495, 493, 491, 489, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 222, 0, 0, 334, 329, 815, 0, 757, - 758, 759, 479, 498, 478, 494, 0, 0, 0, 0, - 469, 496, 468, 467, 492, 466, 490, 464, 485, 484, - 465, 488, 487, 473, 472, 471, 470, 482, 507, 501, - 500, 480, 503, 0, 481, 505, 267, 329, 0, 0, - 0, 0, 477, 476, 475, 474, 504, 0, 0, 0, - 339, 335, 344, 345, 346, 347, 348, 349, 336, 337, - 338, 340, 341, 342, 343, 286, 373, 0, 0, 329, - 0, 581, 0, 0, 0, 237, 194, 350, 0, 0, - 0, 0, 179, 0, 329, 0, 195 + 0, 0, 0, 96, 224, 0, 0, 336, 331, 817, + 0, 759, 760, 761, 481, 500, 480, 496, 0, 0, + 0, 0, 471, 498, 470, 469, 494, 468, 492, 466, + 487, 486, 467, 490, 489, 475, 474, 473, 472, 484, + 509, 503, 502, 482, 505, 0, 483, 507, 269, 331, + 0, 0, 0, 0, 479, 478, 477, 476, 506, 0, + 0, 0, 341, 337, 346, 347, 348, 349, 350, 351, + 338, 339, 340, 342, 343, 344, 345, 288, 375, 0, + 0, 331, 0, 583, 0, 0, 0, 239, 196, 352, + 0, 0, 0, 0, 181, 0, 331, 0, 197 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1345, 1179, -1345, 1081, -106, 17, -88, -5, 10, 22, - -416, -1345, 32, -11, 1355, -1345, -1345, 914, 982, -642, - -1345, -966, -1345, 11, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -323, -1345, -1345, -1345, 664, -1345, -1345, - -1345, 197, -1345, 676, 245, 247, -1345, -1344, -445, -1345, - -320, -1345, -1345, -954, -1345, -172, -111, -1345, 3, 1374, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 425, - 213, -1345, -317, -1345, -708, -687, 1055, -1345, -1345, -248, - -1345, -144, -1345, -1345, 824, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -151, 9, -1345, -1345, -1345, 798, -112, - 1359, 335, -44, 0, 559, -1345, -1094, -1345, -1345, -1322, - -1318, -1304, -1299, -1345, -1345, -1345, -1345, 12, -1345, -1345, - -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, - -1345, -1345, -1345, -264, 521, 731, -1345, -676, -1345, 443, - 19, -447, -107, -12, -103, -1345, -23, 287, -1345, 727, - 20, 563, -1345, -1345, 570, -1345, -1064, -1345, 1427, -1345, - 26, -1345, -1345, 292, 948, -1345, 1310, -1345, -1345, -976, - 1006, -1345, -1345, -1345, -1345, -1345, -1345, -1345, -1345, 906, - 709, -1345, -1345, -1345, -1345, -1345 + -1347, 1149, -1347, 1044, -102, 17, -41, -5, 10, 22, + -420, -1347, 11, -21, 1328, -1347, -1347, 874, 947, -643, + -1347, -976, -1347, 32, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -330, -1347, -1347, -1347, 633, -1347, -1347, + -1347, 160, -1347, 641, 209, 208, -1347, -1346, -462, -1347, + -322, -1347, -1347, -960, -1347, -169, -114, -1347, 3, 1340, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 390, + 170, -1347, -321, -1347, -706, -680, 1006, -1347, -1347, -258, + -1347, -154, -1347, -1347, 789, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -62, 21, -1347, -1347, -1347, 748, -147, + 1318, 290, -44, 8, 519, -1347, -1091, -1347, -1347, -1326, + -1309, -1339, -1303, -1347, -1347, -1347, -1347, 13, -1347, -1347, + -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, + -1347, -1347, -1347, -204, 479, 687, -1347, -716, -1347, 401, + -22, -461, -108, -53, -40, -1347, -23, 249, -1347, 682, + 20, 516, -1347, -1347, 528, -1347, -1067, -1347, 1391, -1347, + 28, -1347, -1347, 257, 926, -1347, 1279, -1347, -1347, -977, + 981, -1347, -1347, -1347, -1347, -1347, -1347, -1347, -1347, 867, + 679, -1347, -1347, -1347, -1347, -1347 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 36, 306, 674, 386, 86, 173, 798, 1536, - 598, 38, 388, 40, 41, 42, 43, 121, 244, 687, - 688, 892, 1137, 389, 1305, 45, 46, 693, 47, 48, - 49, 50, 51, 52, 195, 197, 338, 339, 534, 1149, - 1150, 533, 718, 719, 720, 1153, 923, 1481, 1482, 550, - 53, 223, 862, 1083, 89, 122, 123, 124, 226, 245, - 552, 723, 942, 1173, 553, 724, 943, 1182, 54, 968, - 858, 859, 55, 199, 739, 487, 753, 1559, 390, 200, - 391, 761, 393, 394, 579, 395, 396, 580, 581, 582, - 583, 584, 585, 762, 397, 57, 92, 211, 430, 418, - 431, 893, 894, 190, 191, 1253, 895, 1502, 1503, 1501, - 1500, 1493, 1498, 1492, 1509, 1510, 1508, 227, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 780, 691, 519, 520, 754, 755, 756, - 228, 180, 246, 860, 1025, 1076, 230, 182, 517, 518, - 413, 680, 681, 59, 675, 676, 1090, 1091, 108, 60, - 414, 62, 129, 491, 644, 63, 131, 439, 636, 799, - 637, 638, 646, 639, 64, 440, 647, 65, 558, 220, - 441, 655, 66, 132, 442, 661 + 0, 1, 36, 307, 676, 388, 87, 174, 800, 1538, + 600, 38, 390, 40, 41, 42, 43, 122, 245, 689, + 690, 894, 1139, 391, 1307, 45, 46, 695, 47, 48, + 49, 50, 51, 52, 196, 198, 340, 341, 536, 1151, + 1152, 535, 720, 721, 722, 1155, 925, 1483, 1484, 552, + 53, 224, 864, 1085, 90, 123, 124, 125, 227, 246, + 554, 725, 944, 1175, 555, 726, 945, 1184, 54, 970, + 860, 861, 55, 200, 741, 489, 755, 1561, 392, 201, + 393, 763, 395, 396, 581, 397, 398, 582, 583, 584, + 585, 586, 587, 764, 399, 57, 93, 212, 432, 420, + 433, 895, 896, 191, 192, 1255, 897, 1504, 1505, 1503, + 1502, 1495, 1500, 1494, 1511, 1512, 1510, 228, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 782, 693, 521, 522, 756, 757, 758, + 229, 181, 247, 862, 1027, 1078, 231, 183, 519, 520, + 415, 682, 683, 59, 677, 678, 1092, 1093, 109, 60, + 416, 62, 130, 493, 646, 63, 132, 441, 638, 801, + 639, 640, 648, 641, 64, 442, 649, 65, 560, 221, + 443, 657, 66, 133, 444, 663 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1976,1371 +1978,1391 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 87, 229, 181, 234, 224, 901, 294, 242, 243, 620, - 56, 621, 44, 213, 174, 134, 549, 125, 37, 551, - 1200, 58, 554, 184, 185, 186, 187, 61, 176, 1217, - 948, 136, 137, 39, 1293, 867, 1259, 178, 135, 310, - 231, 231, 690, 192, 179, 140, 141, 135, 193, 435, - 436, 793, 1214, 699, 700, 701, 392, 566, 514, 214, - 135, 1549, 861, 976, 231, -574, 232, 295, 135, 760, - 215, 231, 231, 1085, 1086, 977, 728, 135, 308, 1016, - 138, 139, 593, 135, 494, 593, 695, 135, 360, 336, - 135, 420, 422, 424, 426, 428, 135, 1550, 222, 752, - 249, 135, 594, 595, 135, 594, 595, 138, 139, 138, - 139, 135, 387, 138, 139, 135, 469, 138, 139, 593, - 572, 270, 490, 176, 254, 90, 265, 268, 269, 1257, - 135, 135, 178, 1513, 947, 1295, 67, 251, 252, 594, - 595, 482, 488, 1507, 283, 574, 1506, 231, 221, 593, - 138, 139, 201, 1499, 501, 202, 203, 204, 205, 1505, - 206, 207, 208, 1504, 1030, 213, 286, 289, -39, 594, - 595, 1296, 113, 208, 287, 1529, 498, 115, 1528, 116, - 275, 125, 290, 277, 1031, 135, 117, 91, 278, 279, - 335, 1527, 221, 973, 221, 1526, 514, 135, 280, 532, - 465, 201, 307, 118, 202, 203, 204, 205, 221, 206, - 207, 208, 706, 433, 672, 447, 448, 573, 119, 707, - 468, 1357, 1141, 1142, 88, 700, 711, 607, 287, 1358, - 535, 126, 601, 1152, 221, 567, 1147, 111, 712, 713, - 112, 221, 135, 221, 486, 568, 477, 478, 110, 221, - 492, 911, 588, 1163, 729, 128, 714, 473, 1603, 1364, - 1365, 1366, 474, 113, 114, 221, 130, 221, 115, 127, - 116, 698, 508, 863, 183, 809, 570, 117, 497, 499, - 521, 1195, 470, 503, 135, 471, 505, 506, 507, 475, - 1368, 509, 510, 221, 118, 495, 513, 610, 504, 606, - 188, 608, 189, 384, 1522, 194, 735, 715, 586, 119, - 221, 589, 516, 475, 1211, 599, 475, 1079, 1233, 864, - 994, -39, 56, 1080, 44, -39, 307, 298, 299, 300, - 37, 233, 800, 58, 797, 437, 794, 1215, 515, 61, - 221, 1161, 221, 1234, 624, 39, 438, 480, 555, 1551, - 548, 1235, 481, -574, 196, 1097, 546, 416, 221, 556, - 1098, 417, 1014, 609, 1524, 557, 679, 1540, 475, 1485, - 1537, 547, 1486, 1433, 1530, -557, 475, 1532, 1511, 198, - 1210, 419, 605, 1533, 562, 417, 563, 216, 1543, 421, - 564, 1544, 235, 417, 1535, -253, 1546, 217, 1545, 221, - 1565, 488, 1562, 596, 703, 704, 587, 125, 604, 590, - 591, 613, 176, 600, 1548, 1229, 911, 1563, 1564, 209, - 218, 178, 221, 592, 597, 219, 615, 616, 1523, 617, - 392, 618, 766, 767, 768, 210, 1230, 731, 765, 963, - 964, 965, 1231, 1085, 1086, 619, 673, 626, 627, 1232, - 634, 634, 654, 660, 738, 1258, 1143, 423, 749, 635, - 670, 417, 671, 236, 425, 298, 299, 300, 417, 758, - 237, 633, 633, 653, 659, 1335, 1336, 1333, 247, 716, - 468, 427, 125, 221, 210, 417, 387, 1472, 287, 696, - 717, 526, 527, 528, 763, 516, 301, 238, 774, 239, - 240, 241, 250, 486, 276, 1100, 949, 1517, 782, 1101, - 298, 299, 300, 950, 291, 951, 952, 953, 120, 1102, - 302, 297, 303, 1103, 778, 801, 304, 305, 529, 530, - 531, 292, 949, 1108, 293, 710, 1110, 1109, 741, 950, - 1111, 951, 952, 953, 1019, 1020, 1021, 1022, 1023, 1112, - 725, 726, 296, 1113, 954, 955, 956, 309, 1556, 1114, - 1116, 745, 747, 1115, 1117, 310, 298, 299, 300, 737, - 311, 138, 139, 593, 135, 743, 593, 312, 748, 213, - 954, 955, 956, 298, 299, 300, 575, 777, 576, 577, - 578, 392, 764, 594, 595, 1118, 594, 595, 337, 1119, - 773, 957, 958, 959, 415, 960, 1120, 1122, 961, 776, - 1121, 1123, 429, 933, 925, 926, 930, 432, 549, 939, - 434, 551, 779, 449, 554, 1337, 1338, 957, 958, 959, - 967, 960, 466, 1124, 961, 1419, 1420, 1125, 802, 803, - 271, 272, 273, 274, 806, 811, 807, 387, 1126, 1128, - 1130, 813, 1127, 1129, 1131, 472, 1431, 475, 302, 810, - 303, 902, 903, 1132, 304, 305, 521, 1133, 476, 988, - 479, 995, 981, 996, 997, 998, 999, 1000, 815, 1263, - 1265, 983, 489, 1264, 1266, 1267, 917, 900, 496, 1268, - 909, 1269, 910, 493, 908, 1270, 904, 275, 475, 1351, - 1280, 500, 1283, 302, 475, 303, 475, 1561, 1591, 304, - 305, 221, 1422, 502, 922, 915, 516, 511, 929, 512, - 891, 522, 934, 936, 938, 565, 975, 1212, 1213, 525, - 978, 1224, 1225, 1226, 1227, 1228, 559, 1477, 68, 69, - 560, 70, 135, 571, 612, 900, 1475, 1033, 1034, 614, - 966, 623, 969, 1479, 971, 990, 972, 622, 1087, 302, - 625, 303, 231, 962, 679, 304, 305, 1099, 668, 669, - 982, 677, 682, 1081, 684, 683, 302, 689, 303, 113, - 984, 985, 702, 305, 115, 685, 116, 71, 692, 1186, - 641, 697, 708, 117, 986, 705, 662, 663, 664, 709, - 721, 722, 1001, 72, 1002, 1003, 732, 1015, 733, 1017, - 118, 931, 73, 734, 1151, 736, 1145, 742, 1013, 1104, - 1105, 1106, 1107, 750, 751, 119, 74, 75, 76, 77, - 769, 771, 78, 665, 666, 667, 905, 906, 770, 907, - 1560, 1185, 1359, 1360, 1361, 1362, 772, 775, 784, 792, - 1134, 781, 783, 785, 786, 1135, 787, 932, 795, 79, - 80, 81, 82, 83, 84, 85, 1199, 788, 1201, 789, - 791, 1568, 812, 796, 1088, 804, 805, 808, 814, 865, - 866, 1567, 869, 1089, 870, 871, 872, 873, 874, 898, - 68, 69, 913, 70, 1138, 899, 912, 68, 69, 914, - 70, 918, 919, 778, 778, 940, 1139, 946, 924, 970, - 1158, 979, 974, 1593, 1602, 1156, 1162, 980, 1154, 987, - 991, 989, 992, 1221, 1136, 1157, 114, 993, 1605, 1148, - 1004, 417, 1005, 1006, 1009, 900, 1007, 1008, 1010, 71, - 1011, 1026, 1012, 1018, 1024, 1159, 71, 1160, 1027, 1028, - 555, 1032, 548, 1172, 1181, 72, 654, 1077, 546, 1170, - 1179, 556, 72, 900, 73, 1029, 1082, 557, 1174, 1183, - 1093, 73, 1094, 547, 1171, 1180, 1251, 653, 74, 75, - 76, 77, 1209, 1095, 78, 74, 75, 76, 77, 1140, - 1146, 78, 1155, 1326, 1327, 1328, 1329, 1190, 1187, 949, - 1188, 779, 779, 1330, 1331, 1332, 950, 1191, 951, 952, - 953, 79, 80, 81, 82, 83, 84, 85, 79, 80, - 81, 82, 83, 84, 85, 1192, 1219, 28, 29, 30, - 31, 32, 33, 34, 1189, 1193, 1369, 1194, 1196, 752, - 1197, 288, 35, 1198, 1202, 1205, 1206, 954, 955, 956, - 1207, 1216, 1208, 1218, 1323, 1324, 875, 876, 877, 1134, - 878, 879, 880, 881, 1135, 882, 883, 208, 1220, 884, - 885, 886, 887, 1222, 1307, 1254, 888, 889, 1223, 1255, - 1134, 1256, 1308, 1309, 1310, 1135, 1539, 1542, 490, 1236, - 1314, 1311, 1312, 1317, 957, 958, 959, 1315, 960, 1316, - 1325, 961, 1321, 284, 1342, 1322, 1343, 532, 1341, 1347, - 1350, 1260, 1261, 1262, 1349, 1344, 1100, 1345, 1271, 1272, - 1273, 1274, 1275, 1276, 1354, 1278, 1279, 1281, 1355, 1284, - 1285, 1286, 1287, 1288, 1289, 1290, 1277, 1292, 1102, 1294, - 1282, 1297, 1108, 1301, 1110, 890, 1112, 1114, 1291, 1116, - 1118, 1300, 1120, 1320, 1122, 1124, 1126, 1370, 125, 1371, - 1411, 1373, 3, 1429, 1372, 1383, 1385, 1374, 125, 125, - 125, 125, 1384, 1386, 1388, 1387, 1389, 1390, 125, 125, - 125, 1393, 1396, 1391, 1392, 1394, 1395, 1397, 2, 1424, - 285, 744, 1399, 1398, 1400, 1401, 1480, 1334, 1402, 1403, - 1405, 1432, 1404, 1407, 1408, 1406, 3, 1410, 1412, 1409, - 1421, 1423, 1418, 1413, 1425, 1427, 1346, 1436, 1428, 1263, - 1437, 1265, 1267, 1438, 1440, 1348, 1269, 1446, 640, 1441, - 1444, 1447, 1352, 1353, 1442, 1430, 28, 29, 30, 31, - 32, 33, 34, 1443, 1356, 1435, 1448, 1449, 1450, 1451, - 1470, 35, 1452, 1453, 1454, 1455, 1426, 28, 29, 30, - 31, 32, 33, 34, 1363, 1367, 1445, 1456, 1457, 1458, - 1471, 1459, 35, 1375, 1376, 1377, 1378, 1379, 1380, 1488, - 1382, 1460, 1461, 1462, 1463, 1464, 1465, 68, 69, 1136, - 70, 1381, 1466, 1467, 1469, 142, 1468, 1473, 143, 1474, - 1417, 1484, 144, 145, 146, 147, 148, 1494, 149, 150, - 151, 152, 1483, 153, 154, 1495, 1476, 155, 156, 157, - 158, 1496, 1415, 114, 159, 160, 1497, 896, 1512, 1515, - 1547, 1516, 1557, 161, 1519, 162, 71, 1520, 900, 1558, - 1521, 14, 3, 4, 5, 6, 7, 8, 1566, 1586, - 163, 164, 165, 641, 1588, 629, 642, 1589, 630, 631, - 1434, 73, 1590, 1592, 1595, 9, 10, 1439, 1596, 1597, - 1601, 1514, 1604, 313, 1606, 74, 75, 76, 77, 1518, - 175, 78, 11, 12, 13, 14, 166, 167, 523, 15, - 16, 611, 1340, 686, 920, 17, 941, 1318, 18, 177, - 1136, 1319, 1478, 1203, 759, 19, 20, 1339, 79, 80, - 81, 82, 83, 84, 85, 561, 212, 1252, 1078, 900, - 897, 790, 1144, 1204, 1306, 1487, 28, 29, 30, 31, - 32, 33, 34, 916, 1096, 643, 1092, 109, 1313, 694, - 255, 35, 168, 169, 170, 945, 645, 0, 727, 0, - 0, 1489, 1490, 1491, 0, 1587, 0, 0, 0, 0, - 111, 21, 22, 112, 23, 24, 25, 0, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 0, 3, 14, - 0, 0, 0, 0, 1598, 35, 113, 114, 0, 0, - 0, 115, 1600, 116, 1165, 1166, 1167, 1168, 0, 0, - 117, 0, 0, 1525, 0, 0, 0, 0, 1531, 1525, - 1534, 0, 1538, 0, 1531, 1525, 1534, 118, 11, 12, - 13, 14, 0, 0, 0, 1541, 0, 0, 0, 1555, - 0, 0, 119, 0, 0, 0, 1531, 1525, 1534, 0, - 68, 69, 0, 70, 0, 0, 0, 0, 142, 0, - 0, 143, 0, 900, 0, 144, 145, 146, 147, 148, - 0, 149, 150, 151, 152, 0, 153, 154, 0, 0, - 155, 156, 157, 158, 0, 1599, 114, 159, 160, 0, - 0, 171, 0, 0, 0, 0, 161, 0, 162, 71, - 172, 0, 0, 0, 0, 0, 900, 0, 0, 0, - 1594, 0, 0, 163, 164, 165, 28, 29, 30, 31, - 32, 33, 34, 0, 73, 1169, 0, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 74, 75, - 76, 77, 0, 0, 78, 0, 0, 9, 10, 166, - 0, 298, 299, 300, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 483, 484, 14, 0, 0, - 0, 79, 80, 81, 82, 83, 84, 85, 0, 628, - 0, 629, 0, 648, 630, 631, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 69, 0, 70, 0, 168, 169, 170, 142, 0, - 0, 143, 0, 0, 0, 144, 145, 146, 147, 148, - 0, 149, 150, 151, 152, 0, 153, 154, 0, 0, - 155, 156, 157, 158, 0, 0, 114, 159, 160, 0, - 0, 0, 0, 0, 0, 0, 161, 0, 162, 71, - 0, 0, 28, 29, 30, 31, 32, 33, 34, 0, - 0, 632, 0, 163, 164, 165, 0, 35, 0, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, - 76, 77, 0, 0, 78, 0, 0, 649, 0, 166, - 0, 298, 299, 300, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 483, 484, 0, 0, 0, - 0, 79, 80, 81, 82, 83, 84, 85, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 485, 0, 303, 0, 0, 650, - 304, 305, 651, 172, 0, 168, 169, 170, 68, 69, - 0, 70, 0, 0, 0, 0, 142, 0, 0, 143, - 0, 0, 0, 144, 145, 146, 147, 148, 0, 149, - 150, 151, 152, 0, 153, 154, 0, 0, 155, 156, - 157, 158, 0, 0, 114, 159, 160, 0, 0, 0, - 0, 0, 0, 0, 161, 0, 162, 71, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 163, 164, 165, 28, 29, 30, 31, 32, 33, - 34, 0, 73, 652, 0, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, 74, 75, 76, 77, - 0, 0, 78, 0, 0, 0, 0, 166, 0, 298, - 299, 300, 0, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, - 80, 81, 82, 83, 84, 85, 0, 0, 0, 0, - 0, 0, 0, 0, 485, 0, 303, 0, 0, 0, - 702, 305, 0, 172, 0, 0, 0, 0, 68, 69, - 0, 70, 0, 168, 169, 170, 142, 0, 0, 143, - 0, 0, 0, 144, 145, 146, 147, 148, 0, 149, - 150, 151, 152, 0, 153, 154, 0, 0, 155, 156, - 157, 158, 0, 0, 114, 159, 160, 0, 0, 1569, - 0, 0, 0, 0, 161, 0, 162, 71, 0, 0, - 0, 0, 0, 0, 1570, 0, 0, 0, 0, 0, - 0, 163, 164, 165, 0, 927, 0, 0, 0, 0, - 1571, 0, 73, 0, 0, 0, 0, 0, 0, 1572, - 0, 0, 0, 0, 0, 0, 74, 75, 76, 77, - 0, 0, 78, 1573, 1574, 1575, 1576, 166, 0, 1577, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 928, 0, 1175, 0, 1176, 1177, 0, 0, 79, - 80, 81, 82, 83, 84, 85, 1578, 1579, 1580, 1581, - 1582, 1583, 1584, 0, 11, 12, 13, 14, 0, 0, - 0, 0, 485, 0, 303, 0, 0, 0, 304, 305, - 0, 172, 0, 168, 169, 170, 68, 69, 0, 70, - 0, 0, 0, 0, 142, 3, 0, 143, 0, 0, - 0, 144, 145, 146, 147, 148, 0, 149, 150, 151, - 152, 0, 153, 154, 0, 0, 155, 156, 157, 158, - 0, 0, 114, 159, 160, 0, 0, 0, 0, 0, - 0, 0, 161, 0, 162, 71, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, - 164, 165, 28, 29, 30, 31, 32, 33, 34, 0, - 73, 1178, 0, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 74, 75, 76, 77, 0, 0, - 78, 0, 0, 0, 0, 166, 167, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 0, 0, 0, 0, 0, 79, 80, 81, - 82, 83, 84, 85, 0, 0, 0, 0, 0, 0, - 1585, 68, 225, 0, 70, 135, 0, 0, 0, 68, - 69, 172, 70, 0, 0, 0, 0, 142, 0, 0, - 143, 168, 169, 170, 144, 145, 146, 147, 148, 0, - 149, 150, 151, 152, 0, 153, 154, 0, 0, 155, - 156, 157, 158, 0, 0, 114, 159, 160, 0, 0, - 71, 0, 0, 0, 14, 161, 0, 162, 71, 0, - 0, 0, 0, 0, 656, 0, 72, 657, 0, 0, - 0, 0, 163, 164, 165, 73, 0, 0, 0, 0, - 0, 0, 0, 73, 0, 0, 0, 0, 0, 74, - 75, 76, 77, 0, 0, 78, 0, 74, 75, 76, - 77, 0, 0, 78, 0, 0, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 79, 80, 81, 82, 83, 84, 85, 0, - 79, 80, 81, 82, 83, 84, 85, 0, 0, 28, - 29, 30, 31, 32, 33, 34, 68, 69, 658, 70, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 225, 0, 0, 0, 168, 169, 170, 68, 69, 172, - 70, 0, 0, 0, 0, 142, 0, 0, 143, 0, - 0, 0, 144, 145, 146, 147, 148, 0, 149, 150, - 151, 152, 0, 153, 154, 71, 0, 155, 156, 157, - 158, 0, 0, 114, 159, 160, 0, 0, 0, 0, - 0, 72, 0, 161, 0, 162, 71, 0, 0, 0, - 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 163, 164, 165, 0, 74, 75, 76, 77, 0, 0, - 78, 73, 0, 0, 0, 0, 0, 298, 299, 300, - 0, 0, 0, 0, 0, 74, 75, 76, 77, 0, - 0, 78, 0, 0, 0, 0, 569, 79, 80, 81, - 82, 83, 84, 85, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 384, 0, 79, 80, - 81, 82, 83, 84, 85, 0, 0, 0, 0, 0, - 0, 0, 68, 225, 0, 70, 135, 0, 0, 0, - 68, 69, 172, 70, 0, 0, 0, 0, 142, 0, - 0, 143, 168, 169, 170, 144, 145, 146, 147, 148, - 0, 149, 150, 151, 152, 0, 153, 154, 0, 0, - 155, 156, 157, 158, 0, 0, 114, 159, 160, 0, - 0, 71, 0, 0, 0, 0, 678, 0, 162, 71, - 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, - 0, 0, 0, 163, 164, 165, 73, 0, 0, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 74, 75, 76, 77, 0, 0, 78, 0, 74, 75, - 76, 77, 0, 0, 78, 0, 0, 0, 0, 166, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 79, 80, 81, 82, 83, 84, 85, - 0, 79, 80, 81, 82, 83, 84, 85, 0, 3, - 302, 0, 303, 0, 0, 0, 304, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 648, 0, 0, 168, 169, 170, 68, 69, - 172, 70, 0, 0, 0, 0, 142, 0, 0, 143, - 0, 0, 0, 144, 145, 146, 147, 148, 0, 149, - 150, 151, 152, 0, 153, 154, 0, 0, 155, 156, - 157, 158, 0, 0, 114, 159, 160, 0, 0, 0, - 0, 0, 0, 0, 161, 0, 162, 71, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 163, 164, 165, 0, 0, 0, 0, 0, 0, - 0, 0, 73, 0, 0, 0, 0, 68, 69, 0, - 70, 0, 0, 0, 0, 0, 74, 75, 76, 77, - 0, 0, 78, 0, 0, 68, 69, 730, 70, 135, - 0, 0, 0, 0, 0, 0, 649, 0, 0, 0, - 514, 0, 0, 114, 0, 0, 0, 0, 0, 79, - 80, 81, 82, 83, 84, 85, 71, 0, 0, 0, - 0, 114, 0, 0, 225, 0, 0, 0, 0, 0, - 0, 0, 72, 172, 71, 0, 0, 0, 14, 0, - 0, 73, 0, 168, 169, 170, 0, 0, 650, 0, - 72, 651, 0, 0, 0, 74, 75, 76, 77, 73, - 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 74, 75, 76, 77, 0, 0, 78, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 80, - 81, 82, 83, 84, 85, 68, 69, 231, 70, 135, - 0, 0, 0, 142, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 68, 69, 0, 70, 0, 1084, 0, - 0, 142, 0, 28, 29, 30, 31, 32, 33, 34, - 0, 114, 1184, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 0, 114, - 0, 0, 1552, 0, 0, 1085, 1086, 0, 0, 1553, - 72, 0, 71, 0, 0, 0, 0, 0, 0, 73, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, - 467, 0, 225, 74, 75, 76, 77, 73, 0, 78, - 0, 172, 0, 0, 0, 0, 0, 0, 467, 0, - 0, 74, 75, 76, 77, 0, 0, 78, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 0, 0, 68, 69, 0, 70, 0, - 0, 0, 0, 142, 79, 80, 81, 82, 83, 84, - 85, 0, 0, 0, 0, 0, 68, 69, 0, 70, - 168, 169, 170, 0, 142, 0, 0, 0, 0, 0, - 0, 114, 0, 0, 1298, 0, 0, 285, 168, 169, - 170, 1299, 0, 0, 71, 0, 0, 0, 0, 0, - 515, 0, 114, 0, 0, 285, 0, 0, 0, 0, - 72, 0, 1414, 0, 0, 71, 0, 0, 0, 73, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 72, 0, 74, 75, 76, 77, 0, 0, 78, - 73, 0, 0, 0, 0, 68, 69, 0, 70, 0, - 0, 0, 0, 142, 74, 75, 76, 77, 0, 0, - 78, 0, 0, 0, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 0, 0, 0, 0, 0, 0, 0, - 0, 114, 0, 0, 0, 0, 0, 79, 80, 81, - 82, 83, 84, 85, 71, 0, 0, 0, 0, 0, - 168, 169, 170, 0, 0, 0, 0, 0, 0, 171, - 72, 0, 0, 0, 0, 0, 0, 0, 0, 73, - 0, 168, 169, 170, 1554, 0, 0, 171, 0, 68, - 69, 0, 868, 74, 75, 76, 77, 142, 0, 78, - 68, 69, 0, 70, 0, 0, 0, 68, 69, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 114, 79, 80, 81, 82, - 83, 84, 85, 0, 0, 0, 0, 0, 71, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, - 0, 0, 0, 0, 72, 0, 71, 0, 0, 0, - 168, 169, 170, 73, 0, 72, 0, 0, 0, 0, - 0, 0, 72, 0, 73, 0, 0, 74, 75, 76, - 77, 73, 0, 78, 0, 0, 0, 0, 74, 75, - 76, 77, 0, 0, 78, 74, 75, 76, 77, 171, - 0, 78, 68, 69, 0, 70, 0, 0, 0, 0, - 79, 80, 81, 82, 83, 84, 85, 0, 0, 0, - 171, 79, 80, 81, 82, 83, 84, 85, 79, 80, - 81, 82, 83, 84, 85, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 168, 169, 170, 0, 0, 0, - 0, 71, 0, 0, 0, 0, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 68, 69, 72, 70, 0, - 0, 0, 0, 1237, 1238, 1239, 73, 1240, 1241, 1242, - 1243, 0, 1244, 1245, 208, 0, 1246, 1247, 1248, 1249, - 74, 75, 76, 77, 0, 1250, 78, 0, 0, 171, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, - 0, 0, 0, 79, 80, 81, 82, 83, 84, 85, - 72, 0, 0, 0, 0, 0, 0, 0, 0, 73, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 74, 75, 76, 77, 0, 0, 78, - 875, 876, 877, 0, 878, 879, 880, 881, 0, 882, - 883, 208, 0, 884, 885, 886, 887, 0, 0, 0, - 888, 889, 0, 171, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 0, 746, 0, 0, 602, 143, 603, - 0, 935, 144, 145, 146, 147, 148, 0, 149, 150, - 151, 152, 0, 153, 154, 0, 0, 155, 156, 157, - 158, 0, 0, 114, 159, 160, 0, 0, 68, 0, - 0, 70, 0, 161, 0, 162, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 890, - 163, 164, 248, 281, 143, 282, 0, 0, 144, 145, - 146, 147, 148, 0, 149, 150, 151, 152, 0, 153, - 154, 0, 0, 155, 156, 157, 158, 71, 0, 0, - 159, 160, 0, 0, 0, 0, 166, 0, 0, 161, - 0, 162, 0, 72, 0, 0, 937, 0, 0, 0, - 0, 0, 73, 0, 0, 0, 163, 164, 248, 0, - 0, 0, 0, 0, 0, 0, 74, 75, 76, 77, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, + 88, 230, 182, 180, 175, 243, 244, 622, 235, 623, + 295, 551, 39, 214, 903, 135, 1202, 126, 37, 553, + 556, 58, 56, 185, 186, 187, 188, 692, 177, 61, + 1219, 137, 138, 44, 950, 1261, 869, 979, 179, 1295, + 136, 701, 702, 703, 232, 141, 142, 394, 232, 437, + 438, 193, 225, 136, -576, 232, 194, 422, 424, 426, + 428, 430, 232, 232, 516, 296, 136, 215, 139, 140, + 216, 136, 978, 795, 233, 136, 730, 1551, 949, 762, + 139, 140, 595, 309, 139, 140, 362, 136, 136, 338, + 595, 139, 140, 136, 136, 1087, 1088, 136, 311, 223, + 754, 250, 596, 597, 1216, 492, 136, 136, 136, 136, + 596, 597, 136, 1552, 471, 136, 863, 1018, 496, 67, + 1501, 1259, 271, 574, 177, 255, 1507, 266, 269, 270, + 139, 140, 595, 1515, 179, 89, 1297, 576, 252, 253, + 276, 1509, 490, 278, 111, 284, 484, 697, 528, 529, + 530, 91, 596, 597, 1032, 232, 127, 1508, 1529, 136, + 389, 1506, 308, -39, 114, 128, 214, 287, 290, 116, + 516, 117, 1298, 1531, 1033, 288, 500, 472, 118, 129, + 473, 209, 126, 291, 1143, 1144, 531, 532, 533, 1530, + 222, 337, 1359, 1528, 136, 119, 933, 534, 1149, 202, + 1360, 467, 203, 204, 205, 206, 595, 207, 208, 209, + 120, 708, 713, 702, 92, 131, 449, 450, 709, 1231, + 575, 470, 435, 184, 714, 715, 596, 597, 222, 288, + 189, 537, 222, 477, 503, 568, 609, 603, 190, 913, + 1232, 195, 716, 934, 590, 488, 1233, 479, 480, 279, + 280, 494, 475, 1234, 731, 497, 197, 476, 1605, 281, + 202, 222, 1165, 203, 204, 205, 206, 674, 207, 208, + 209, -53, -53, 510, 477, 222, 1213, 572, 996, 499, + 501, 523, 1370, 811, 505, 222, 308, 507, 508, 509, + 1197, 700, 511, 512, 717, 199, 612, 515, 737, 506, + 608, 299, 300, 301, 222, 136, 1081, 610, 236, 965, + 966, 967, 1082, 518, 386, 217, -39, 299, 300, 301, + -39, 222, 1366, 1367, 1368, 39, 248, 1524, 482, 218, + 222, 37, 302, 483, 58, 56, 439, 799, 219, 1099, + 234, 220, 61, -576, 1100, 517, 44, 440, 222, 222, + 1016, 222, 549, 277, 802, 1236, 1537, 588, 548, 796, + 591, 558, 557, 1237, 601, 611, 1553, 681, 1542, 559, + 139, 140, 1548, 550, 1435, 1526, 1539, -559, 1235, 1567, + 292, 1532, 1534, 1513, 607, 1535, 564, 418, 565, 237, + 1217, 419, 566, 626, 1545, 1546, 1547, 1564, 975, 222, + 1565, 477, 490, 1566, 913, 705, 706, 866, 589, 126, + 606, 592, 593, 569, 177, 602, 421, 598, 238, 1550, + 419, 615, 394, 570, 179, 594, 599, 1525, 617, 618, + 767, 619, 112, 620, 222, 113, 251, 969, 733, 293, + 865, 1145, 1021, 1022, 1023, 1024, 1025, 621, 675, 628, + 629, 294, 635, 635, 655, 661, 1260, 751, 114, 115, + 740, 637, 672, 116, 673, 117, 718, 210, 1154, 222, + 760, 297, 118, 636, 636, 656, 662, 719, 299, 300, + 301, 1335, 470, 211, 126, 298, 299, 300, 301, 119, + 288, 698, 1163, 222, 303, 311, 304, 518, 310, 776, + 305, 306, -53, 423, 120, 488, -53, 419, 1519, 312, + 303, 951, 304, -53, 784, 425, 305, 306, 952, 419, + 953, 954, 955, 768, 769, 770, 427, 664, 665, 666, + 419, 803, 313, 904, 905, 389, 136, 712, 595, 417, + 743, 1087, 1088, 765, 211, 299, 300, 301, 1337, 1338, + 339, 429, 727, 728, 1558, 419, 1339, 1340, 596, 597, + 956, 957, 958, 747, 749, 667, 668, 669, 906, 477, + 1353, 739, 239, 780, 240, 241, 242, 745, 1102, 114, + 750, 214, 1103, 394, 116, 431, 117, 434, 3, 779, + 436, 477, 1487, 118, 766, 1488, 1104, 1421, 1422, 1110, + 1105, 474, 775, 1111, 139, 140, 595, 959, 960, 961, + 119, 962, 935, 551, 963, 927, 928, 932, 941, 778, + 451, 553, 556, 468, 781, 120, 596, 597, 1226, 1227, + 1228, 1229, 1230, 577, 477, 578, 579, 580, 997, 478, + 998, 999, 1000, 1001, 1002, 481, 1112, 813, 804, 805, + 1113, 1114, 491, 815, 808, 1115, 809, 495, 276, 1136, + 498, 812, 1116, 502, 1137, 1433, 1117, 992, 523, 504, + 1118, 303, 1120, 304, 1119, 990, 1121, 305, 306, 303, + 817, 304, 513, 1122, 514, 305, 306, 1123, 919, 902, + 524, 1124, 911, 1126, 912, 1125, 389, 1127, 1282, 527, + 1285, 893, 68, 69, 910, 70, 136, 1128, 1477, 907, + 908, 1129, 909, 567, 121, 1481, 924, 917, 518, 1130, + 931, 983, 561, 1131, 936, 938, 940, 1132, 977, 1134, + 985, 1133, 980, 1135, 573, -255, 562, 1265, 303, 222, + 304, 1266, 222, 1424, 704, 306, 1479, 902, 627, 477, + 614, 71, 968, 1212, 971, 1267, 973, 1269, 974, 1268, + 616, 1270, 1271, 624, 1089, 681, 1272, 72, 14, 964, + 222, 477, 984, 1101, 1474, 1593, 73, 670, 658, 477, + 1563, 659, 986, 987, 74, 272, 273, 274, 275, 1214, + 1215, 75, 76, 77, 78, 625, 988, 79, 1106, 1107, + 1108, 1109, 1562, 671, 1003, 232, 1004, 1005, 679, 1017, + 684, 1019, 1035, 1036, 685, 1153, 1361, 1362, 1363, 1364, + 1015, 686, 1083, 691, 80, 81, 82, 83, 84, 85, + 86, 687, 694, 643, 699, 710, 28, 29, 30, 31, + 32, 33, 34, 1569, 1091, 1371, 707, 1187, 711, 723, + 724, 35, 734, 28, 29, 30, 31, 32, 33, 34, + 735, 744, 660, 736, 738, 1147, 752, 1201, 35, 1203, + 753, 771, 772, 773, 797, 1595, 1090, 774, 777, 798, + 1570, 783, 785, 787, 786, 788, 789, 790, 791, 951, + 1607, 793, 794, 810, 814, 806, 952, 807, 953, 954, + 955, 816, 867, 868, 1140, 1138, 871, 1158, 1141, 872, + 873, 875, 1160, 874, 876, 900, 901, 914, 1164, 942, + 1156, 3, 915, 1604, 916, 1136, 920, 1159, 921, 1223, + 1137, 1150, 982, 926, 948, 972, 981, 902, 956, 957, + 958, 976, 68, 69, 989, 70, 991, 1161, 993, 1162, + 994, 419, 780, 780, 549, 1173, 1182, 1006, 655, 995, + 548, 1172, 1181, 558, 557, 902, 1008, 1011, 1007, 1009, + 1010, 559, 1176, 1185, 1012, 550, 1174, 1183, 1013, 656, + 1014, 1026, 1253, 1020, 1211, 959, 960, 961, 1028, 962, + 1029, 71, 963, 1030, 1031, 1034, 1079, 1095, 1328, 1329, + 1330, 1331, 1084, 781, 781, 1096, 289, 72, 1332, 1333, + 1334, 1097, 1142, 1148, 1157, 1189, 73, 1190, 1191, 1192, + 1198, 1196, 1193, 1194, 74, 1195, 1204, 1199, 1221, 1200, + 754, 75, 76, 77, 78, 1218, 1207, 79, 1208, 1209, + 1210, 1224, 1222, 1220, 299, 300, 301, 1225, 1256, 1257, + 1310, 1258, 1309, 1311, 1312, 1325, 1326, 1313, 1314, 492, + 1316, 1317, 1318, 1319, 80, 81, 82, 83, 84, 85, + 86, 1323, 1324, 1344, 1167, 1168, 1169, 1170, 1327, 534, + 1345, 1349, 1352, 1351, 1541, 1544, 1357, 1372, 1102, 1104, + 1110, 1238, 1112, 1114, 1413, 1116, 1118, 1120, 11, 12, + 13, 14, 28, 29, 30, 31, 32, 33, 34, 1373, + 1122, 1447, 1302, 1262, 1263, 1264, 1124, 35, 1126, 1128, + 1273, 1274, 1275, 1276, 1277, 1278, 1374, 1280, 1281, 1283, + 1356, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1279, 1294, + 1375, 1296, 1284, 1299, 1420, 1303, 1376, 1188, 1385, 1136, + 1293, 1387, 1425, 1386, 1137, 1322, 1388, 1343, 951, 1389, + 126, 1390, 3, 1391, 1346, 952, 1347, 953, 954, 955, + 126, 126, 126, 126, 1392, 1393, 1394, 1395, 1396, 1426, + 126, 126, 126, 1397, 1398, 1399, 28, 29, 30, 31, + 32, 33, 34, 1400, 1401, 1171, 1402, 1404, 1403, 1336, + 1406, 35, 1434, 1405, 1407, 1408, 1409, 956, 957, 958, + 1410, 1423, 1411, 1427, 1412, 1414, 1415, 1429, 1348, 1430, + 1431, 1443, 1438, 68, 69, 1265, 70, 1350, 1439, 1440, + 1267, 1269, 1271, 1451, 1354, 1355, 1432, 303, 1442, 304, + 1446, 1448, 1449, 305, 306, 1444, 1358, 1445, 1450, 1452, + 1453, 1437, 1454, 1458, 959, 960, 961, 1455, 962, 115, + 1456, 963, 1457, 1459, 1460, 1461, 1365, 1369, 1462, 1472, + 1138, 1463, 71, 1464, 1465, 1377, 1378, 1379, 1380, 1381, + 1382, 1466, 1384, 1417, 1467, 1468, 1469, 1471, 72, 1470, + 1560, 1475, 1476, 1383, 1473, 1568, 1486, 73, 1482, 1496, + 1497, 1490, 1419, 1485, 1498, 74, 1514, 1499, 1594, 1517, + 1518, 1559, 75, 76, 77, 78, 898, 1478, 79, 1521, + 1522, 1523, 9, 10, 1597, 1588, 28, 29, 30, 31, + 32, 33, 34, 1590, 1591, 1592, 1603, 1598, 1599, 1608, + 902, 35, 14, 1606, 314, 80, 81, 82, 83, 84, + 85, 86, 525, 176, 630, 688, 631, 1342, 613, 632, + 633, 922, 1436, 1320, 1321, 178, 1341, 943, 563, 1441, + 1205, 761, 1516, 792, 1254, 213, 68, 69, 899, 70, + 1080, 1138, 1146, 1206, 143, 1520, 1489, 144, 1308, 1098, + 918, 145, 146, 147, 148, 149, 1094, 150, 151, 152, + 153, 110, 154, 155, 1480, 1315, 156, 157, 158, 159, + 256, 729, 115, 160, 161, 0, 1428, 947, 0, 696, + 0, 902, 162, 647, 163, 71, 0, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 634, 285, 0, 164, + 165, 166, 35, 0, 0, 0, 0, 0, 0, 0, + 73, 0, 0, 1491, 1492, 1493, 0, 0, 74, 0, + 0, 1589, 0, 0, 0, 75, 76, 77, 78, 0, + 0, 79, 0, 0, 0, 0, 167, 0, 299, 300, + 301, 0, 0, 1600, 0, 0, 0, 0, 0, 0, + 1557, 0, 0, 1602, 0, 0, 0, 0, 80, 81, + 82, 83, 84, 85, 86, 1527, 0, 0, 0, 0, + 1533, 1527, 1536, 0, 1540, 0, 1533, 1527, 1536, 0, + 0, 0, 0, 0, 286, 0, 0, 1543, 0, 0, + 0, 0, 169, 170, 171, 0, 0, 0, 1533, 1527, + 1536, 0, 68, 69, 0, 70, 0, 0, 0, 0, + 143, 0, 0, 144, 0, 902, 0, 145, 146, 147, + 148, 149, 0, 150, 151, 152, 153, 0, 154, 155, + 0, 0, 156, 157, 158, 159, 0, 1601, 115, 160, + 161, 0, 0, 0, 0, 0, 0, 0, 162, 0, + 163, 71, 0, 0, 0, 0, 1571, 0, 902, 0, + 0, 0, 1596, 0, 0, 164, 165, 166, 0, 0, + 0, 1572, 0, 0, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 0, 1573, 0, 0, + 0, 75, 76, 77, 78, 0, 1574, 79, 0, 0, + 0, 0, 167, 0, 299, 300, 301, 0, 0, 0, + 0, 1575, 1576, 1577, 1578, 0, 0, 1579, 485, 486, + 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, + 86, 487, 0, 304, 0, 0, 0, 305, 306, 68, + 173, 0, 70, 136, 1580, 1581, 1582, 1583, 1584, 1585, + 1586, 0, 0, 68, 69, 0, 70, 0, 169, 170, + 171, 143, 0, 0, 144, 0, 0, 0, 145, 146, + 147, 148, 149, 0, 150, 151, 152, 153, 0, 154, + 155, 0, 0, 156, 157, 158, 159, 0, 71, 115, + 160, 161, 0, 0, 0, 0, 0, 0, 0, 162, + 0, 163, 71, 0, 72, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 0, 0, 164, 165, 166, 0, + 0, 74, 0, 0, 0, 0, 0, 73, 75, 76, + 77, 78, 0, 0, 79, 74, 0, 0, 0, 0, + 0, 0, 75, 76, 77, 78, 0, 0, 79, 0, + 0, 3, 0, 167, 0, 299, 300, 301, 0, 0, + 0, 80, 81, 82, 83, 84, 85, 86, 0, 485, + 486, 0, 0, 0, 650, 80, 81, 82, 83, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 69, 0, 70, 0, 487, 0, 304, + 0, 0, 0, 305, 306, 0, 173, 0, 1587, 169, + 170, 171, 68, 69, 0, 70, 0, 0, 0, 0, + 143, 0, 0, 144, 0, 0, 0, 145, 146, 147, + 148, 149, 0, 150, 151, 152, 153, 0, 154, 155, + 0, 71, 156, 157, 158, 159, 0, 0, 115, 160, + 161, 0, 0, 0, 0, 0, 0, 72, 162, 0, + 163, 71, 0, 0, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 74, 164, 165, 166, 0, 0, + 0, 75, 76, 77, 78, 0, 73, 79, 0, 651, + 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, + 0, 75, 76, 77, 78, 0, 0, 79, 0, 0, + 0, 0, 167, 168, 80, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 0, 386, 0, 0, 0, 0, + 0, 14, 0, 0, 80, 81, 82, 83, 84, 85, + 86, 652, 0, 0, 653, 0, 0, 0, 487, 0, + 304, 0, 0, 0, 704, 306, 0, 173, 0, 0, + 0, 0, 0, 68, 69, 0, 70, 0, 169, 170, + 171, 143, 0, 0, 144, 0, 0, 0, 145, 146, + 147, 148, 149, 0, 150, 151, 152, 153, 0, 154, + 155, 0, 0, 156, 157, 158, 159, 0, 0, 115, + 160, 161, 0, 0, 0, 14, 0, 112, 0, 162, + 113, 163, 71, 0, 0, 0, 28, 29, 30, 31, + 32, 33, 34, 0, 0, 654, 164, 165, 166, 0, + 929, 35, 0, 114, 115, 0, 0, 73, 116, 0, + 117, 0, 0, 0, 0, 74, 0, 118, 0, 0, + 0, 0, 75, 76, 77, 78, 0, 0, 79, 0, + 0, 0, 0, 167, 119, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 930, 0, 120, + 0, 0, 0, 923, 0, 80, 81, 82, 83, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 69, 0, 70, 0, 0, 0, 172, 0, 0, + 0, 0, 0, 0, 68, 69, 173, 70, 0, 169, + 170, 171, 143, 0, 0, 144, 0, 0, 0, 145, + 146, 147, 148, 149, 0, 150, 151, 152, 153, 0, + 154, 155, 0, 0, 156, 157, 158, 159, 0, 71, + 115, 160, 161, 0, 0, 0, 0, 0, 0, 0, + 162, 0, 163, 71, 0, 72, 0, 0, 0, 0, + 0, 0, 0, 0, 73, 0, 0, 164, 165, 166, + 0, 0, 74, 0, 0, 0, 0, 0, 73, 75, + 76, 77, 78, 0, 0, 79, 74, 0, 0, 0, + 0, 0, 0, 75, 76, 77, 78, 0, 0, 79, + 0, 0, 0, 0, 167, 168, 0, 0, 0, 0, + 0, 0, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, + 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 69, 0, 70, 0, 0, 0, 226, 0, + 0, 0, 0, 0, 0, 68, 69, 173, 70, 0, + 169, 170, 171, 143, 0, 0, 144, 0, 0, 0, + 145, 146, 147, 148, 149, 0, 150, 151, 152, 153, + 0, 154, 155, 0, 0, 156, 157, 158, 159, 0, + 71, 115, 160, 161, 0, 0, 0, 0, 0, 0, + 0, 162, 0, 163, 71, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 73, 0, 0, 164, 165, + 166, 0, 0, 74, 0, 0, 0, 0, 0, 73, + 75, 76, 77, 78, 0, 0, 79, 74, 0, 0, + 0, 0, 0, 0, 75, 76, 77, 78, 0, 0, + 79, 0, 0, 0, 0, 167, 0, 0, 0, 0, + 0, 0, 0, 80, 81, 82, 83, 84, 85, 86, + 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, + 83, 84, 85, 86, 0, 746, 0, 0, 0, 0, + 0, 0, 68, 69, 0, 70, 0, 0, 0, 226, + 0, 0, 0, 0, 0, 0, 68, 69, 173, 70, + 0, 169, 170, 171, 143, 0, 0, 144, 0, 0, + 0, 145, 146, 147, 148, 149, 0, 150, 151, 152, + 153, 0, 154, 155, 0, 0, 156, 157, 158, 159, + 0, 71, 115, 160, 161, 0, 0, 0, 0, 0, + 0, 0, 162, 0, 163, 71, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 73, 0, 0, 164, + 165, 166, 0, 0, 74, 0, 0, 0, 0, 0, + 73, 75, 76, 77, 78, 0, 0, 79, 74, 0, + 0, 0, 0, 0, 0, 75, 76, 77, 78, 0, + 0, 79, 0, 0, 0, 0, 571, 0, 0, 0, + 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 0, 0, 0, 0, 80, 81, + 82, 83, 84, 85, 86, 0, 748, 0, 0, 0, + 0, 0, 0, 68, 69, 0, 70, 0, 0, 0, + 226, 0, 0, 0, 0, 0, 0, 68, 69, 173, + 70, 0, 169, 170, 171, 143, 0, 0, 144, 0, + 0, 0, 145, 146, 147, 148, 149, 0, 150, 151, + 152, 153, 0, 154, 155, 0, 0, 156, 157, 158, + 159, 0, 71, 115, 160, 161, 0, 0, 0, 0, + 0, 0, 0, 680, 0, 163, 71, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 164, 165, 166, 0, 0, 74, 0, 0, 0, 0, + 0, 73, 75, 76, 77, 78, 0, 0, 79, 74, + 0, 0, 0, 0, 0, 0, 75, 76, 77, 78, + 0, 0, 79, 0, 0, 0, 0, 167, 0, 0, + 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 80, + 81, 82, 83, 84, 85, 86, 0, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 166, 0, 0, 0, 0, 0, 0, 79, - 80, 81, 82, 83, 84, 85, 0, 0, 0, 1416, - 0, 0, 0, 0, 0, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 0, 0, - 0, 0, 8, 0, 0, 0, 374, 375, 376, 377, - 378, 379, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 70, 0, 0, 0, 11, 12, 13, - 14, 0, 0, 3, 0, 0, 0, 0, 380, 0, + 0, 226, 0, 0, 0, 0, 0, 0, 68, 69, + 173, 70, 0, 169, 170, 171, 143, 0, 0, 144, + 0, 0, 0, 145, 146, 147, 148, 149, 0, 150, + 151, 152, 153, 0, 154, 155, 0, 0, 156, 157, + 158, 159, 0, 0, 115, 160, 161, 0, 0, 0, + 0, 0, 0, 0, 162, 0, 163, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, + 0, 164, 165, 166, 0, 0, 0, 0, 0, 0, + 68, 69, 73, 70, 136, 0, 0, 0, 0, 0, + 74, 0, 0, 0, 0, 516, 0, 75, 76, 77, + 78, 0, 0, 79, 0, 0, 0, 0, 732, 0, + 0, 0, 0, 0, 0, 0, 115, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 80, 81, 82, 83, 84, 85, 86, 3, 939, 0, + 0, 0, 0, 0, 0, 72, 68, 69, 0, 70, + 0, 0, 226, 0, 73, 0, 0, 0, 0, 0, + 0, 173, 74, 0, 169, 170, 171, 0, 0, 75, + 76, 77, 78, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 72, 0, 0, 0, 0, 0, 0, 68, 69, + 73, 70, 0, 0, 0, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 75, 76, 77, 78, 0, + 0, 79, 877, 878, 879, 0, 880, 881, 882, 883, + 0, 884, 885, 209, 3, 886, 887, 888, 889, 0, + 0, 0, 890, 891, 0, 0, 0, 71, 80, 81, + 82, 83, 84, 85, 86, 4, 5, 6, 7, 8, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 73, 0, 469, 0, 0, 9, 10, 0, + 74, 0, 0, 226, 0, 0, 0, 75, 76, 77, + 78, 0, 173, 79, 11, 12, 13, 14, 0, 0, + 642, 15, 16, 0, 3, 0, 0, 17, 0, 0, + 18, 0, 892, 0, 0, 0, 0, 19, 20, 0, + 80, 81, 82, 83, 84, 85, 86, 650, 0, 0, + 68, 69, 232, 70, 136, 0, 0, 0, 143, 0, + 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1086, 0, 0, 517, 0, 0, 0, + 0, 286, 0, 0, 0, 0, 115, 0, 0, 0, + 0, 0, 0, 21, 22, 0, 23, 24, 25, 71, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, + 1087, 1088, 0, 0, 0, 72, 0, 35, 0, 0, + 68, 69, 0, 70, 73, 0, 0, 0, 143, 0, + 0, 0, 74, 0, 14, 0, 0, 0, 0, 75, + 76, 77, 78, 0, 0, 79, 643, 286, 631, 644, + 0, 632, 633, 0, 0, 0, 115, 0, 0, 1554, + 0, 0, 651, 0, 0, 0, 1555, 0, 0, 71, + 0, 0, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, + 68, 69, 0, 70, 73, 0, 0, 0, 143, 0, + 0, 0, 74, 0, 14, 0, 169, 170, 171, 75, + 76, 77, 78, 1418, 652, 79, 0, 653, 0, 28, + 29, 30, 31, 32, 33, 34, 115, 0, 645, 1300, + 0, 0, 0, 0, 35, 0, 1301, 0, 0, 71, + 0, 0, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, + 68, 69, 0, 70, 73, 0, 0, 0, 143, 0, + 0, 0, 74, 0, 0, 0, 169, 170, 171, 75, + 76, 77, 78, 0, 0, 79, 0, 0, 0, 28, + 29, 30, 31, 32, 33, 34, 115, 0, 1186, 0, + 0, 0, 0, 0, 35, 0, 1416, 0, 0, 71, + 0, 0, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, + 0, 0, 68, 69, 73, 70, 0, 0, 0, 0, + 143, 232, 74, 0, 0, 172, 169, 170, 171, 75, + 76, 77, 78, 0, 0, 79, 1239, 1240, 1241, 0, + 1242, 1243, 1244, 1245, 0, 1246, 1247, 209, 115, 1248, + 1249, 1250, 1251, 0, 0, 0, 0, 0, 1252, 0, + 0, 71, 80, 81, 82, 83, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 0, 68, 69, 0, 870, 73, 0, 0, 0, + 143, 0, 1556, 0, 74, 172, 169, 170, 171, 0, + 0, 75, 76, 77, 78, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 72, 0, 382, 383, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 172, 0, 0, 0, 0, 0, 0, 0, 74, 75, - 76, 77, 0, 0, 78, 28, 29, 30, 31, 32, - 33, 34, 0, 384, 385, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 79, 80, 81, 82, 83, 84, 85, 0, 0, - 0, 0, 0, 0, 0, 0, 172, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 0, 0, 0, 0, 8, 0, 0, 0, 374, 375, - 376, 377, 378, 379, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 10, 68, 0, 0, 70, 0, 0, - 0, 68, 69, 0, 70, 0, 0, 3, 0, 11, - 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, - 380, 0, 0, 0, 0, 143, 0, 0, 0, 144, - 145, 146, 147, 148, 381, 149, 150, 151, 152, 0, - 153, 154, 0, 71, 155, 156, 157, 158, 0, 0, - 71, 159, 160, 0, 0, 0, 0, 0, 0, 72, - 161, 0, 162, 0, 0, 0, 72, 0, 73, 382, - 383, 0, 0, 0, 0, 73, 0, 163, 164, 248, - 0, 0, 74, 75, 76, 77, 0, 0, 78, 74, - 75, 76, 77, 0, 0, 78, 0, 28, 29, 30, - 31, 32, 33, 34, 0, 384, 757, 0, 0, 0, - 0, 0, 35, 166, 0, 79, 80, 81, 82, 83, - 84, 85, 79, 80, 81, 82, 83, 84, 85, 0, - 0, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 0, 0, 0, 0, 8, 0, - 0, 0, 374, 375, 376, 377, 378, 379, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, - 0, 0, 0, 0, 380, 0, 0, 0, 0, 143, - 0, 0, 0, 144, 145, 146, 147, 148, 381, 149, - 150, 151, 152, 0, 153, 154, 0, 0, 155, 156, - 157, 158, 450, 0, 0, 159, 160, 0, 0, 0, - 0, 0, 0, 0, 161, 0, 162, 0, 0, 0, - 0, 0, 0, 382, 383, 0, 0, 0, 0, 0, - 0, 163, 164, 248, 0, 451, 0, 452, 453, 454, - 455, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 29, 30, 31, 32, 33, 34, 0, 384, - 944, 0, 0, 0, 0, 0, 35, 166, 0, 0, - 0, 921, 0, 0, 0, 456, 457, 458, 459, 0, - 0, 460, 0, 0, 0, 461, 462, 463, 740, 3, - 0, 0, 0, 0, 143, 0, 0, 172, 144, 145, - 146, 147, 148, 0, 149, 150, 151, 152, 0, 153, - 154, 0, 0, 155, 156, 157, 158, 0, 0, 0, - 159, 160, 0, 0, 0, 0, 0, 0, 0, 161, - 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 163, 164, 248, 143, - 0, 0, 0, 144, 145, 146, 147, 148, 0, 149, - 150, 151, 152, 0, 153, 154, 0, 0, 155, 156, - 157, 158, 0, 0, 0, 159, 160, 0, 0, 0, - 0, 0, 166, 0, 161, 0, 162, 0, 0, 464, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 163, 164, 248, 0, 0, 1035, 1036, 0, 1037, - 1038, 1039, 1040, 1041, 1042, 0, 1043, 1044, 0, 1045, - 1046, 1047, 1048, 1049, 0, 0, 4, 5, 6, 7, - 8, 0, 0, 0, 0, 0, 0, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, - 0, 172, 15, 16, 0, 0, 68, 69, 17, 70, - 0, 18, 0, 0, 0, 0, 0, 0, 19, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 875, 876, 877, 0, 878, 879, 880, 881, 0, - 882, 883, 208, 0, 884, 885, 886, 887, 0, 0, - 3, 888, 889, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 72, 0, 68, 21, 22, 70, 23, 24, 25, - 73, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 0, 0, 524, 0, 74, 75, 76, 77, 35, 536, - 78, 0, 3, 0, 0, 0, 0, 896, 0, 0, - 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, - 890, 0, 71, 0, 0, 0, 0, 79, 80, 81, - 82, 83, 84, 85, 0, 0, 0, 0, 72, 0, - 0, 0, 0, 0, 0, 1050, 1051, 73, 1052, 1053, - 1054, 536, 1055, 1056, 0, 0, 1057, 1058, 0, 1059, - 0, 74, 75, 76, 77, 0, 0, 78, 0, 0, - 0, 172, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, - 1068, 1069, 1070, 1071, 1072, 1073, 1074, 537, 0, 6, - 7, 8, 0, 0, 79, 80, 81, 82, 83, 84, - 85, 538, 0, 0, 0, 0, 539, 0, 0, 9, - 10, 0, 0, 0, 0, 0, 0, 133, 0, 0, - 1075, 0, 0, 0, 0, 0, 11, 12, 13, 14, - 0, 540, 541, 0, 0, 0, 0, 0, 0, 537, - 0, 6, 7, 8, 0, 0, 0, 0, 0, 0, - 0, 542, 0, 538, 0, 0, 0, 0, 539, 0, - 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, - 13, 14, 0, 540, 541, 0, 543, 544, 0, 0, - 0, 28, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 542, 0, 0, 35, 0, 0, 0, + 0, 71, 0, 0, 80, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 74, 172, 0, 0, 169, 170, + 171, 75, 76, 77, 78, 0, 144, 79, 0, 0, + 145, 146, 147, 148, 149, 0, 150, 151, 152, 153, + 0, 154, 155, 0, 0, 156, 157, 158, 159, 0, + 0, 0, 160, 161, 80, 81, 82, 83, 84, 85, + 86, 162, 3, 163, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 164, 165, + 249, 0, 0, 0, 0, 172, 0, 0, 169, 170, + 171, 604, 144, 605, 0, 0, 145, 146, 147, 148, + 149, 0, 150, 151, 152, 153, 0, 154, 155, 0, + 0, 156, 157, 158, 159, 167, 0, 115, 160, 161, + 0, 0, 68, 0, 0, 70, 0, 162, 0, 163, + 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 164, 165, 249, 282, 144, 283, + 0, 0, 145, 146, 147, 148, 149, 172, 150, 151, + 152, 153, 0, 154, 155, 0, 0, 156, 157, 158, + 159, 71, 0, 0, 160, 161, 0, 0, 0, 0, + 0, 167, 0, 162, 0, 163, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, + 164, 165, 249, 0, 74, 0, 0, 0, 0, 0, + 0, 75, 76, 77, 78, 0, 0, 79, 1177, 0, + 1178, 1179, 0, 0, 0, 0, 0, 172, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 11, + 12, 13, 14, 0, 80, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 0, 0, 0, 0, 8, 0, 0, + 0, 376, 377, 378, 379, 380, 381, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 70, 0, 0, + 742, 0, 11, 12, 13, 14, 0, 3, 0, 173, + 0, 0, 0, 382, 0, 0, 0, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 1180, 383, 0, 0, + 0, 0, 35, 0, 144, 0, 0, 0, 0, 0, + 147, 148, 149, 71, 150, 151, 152, 153, 0, 154, + 155, 0, 0, 156, 157, 158, 159, 0, 0, 72, + 1304, 161, 384, 385, 0, 0, 0, 0, 73, 0, + 0, 0, 0, 0, 0, 173, 74, 0, 0, 0, + 0, 0, 0, 75, 76, 77, 78, 0, 0, 79, + 28, 29, 30, 31, 32, 33, 34, 0, 386, 387, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 1305, 0, 0, 0, 0, 0, 80, 81, 82, 83, + 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, + 1306, 173, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 0, 0, 0, 0, 8, + 0, 0, 0, 376, 377, 378, 379, 380, 381, 0, + 0, 0, 0, 0, 0, 0, 68, 9, 10, 70, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, + 0, 0, 877, 878, 879, 382, 880, 881, 882, 883, + 0, 884, 885, 209, 0, 886, 887, 888, 889, 383, + 0, 0, 890, 891, 0, 71, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 72, 0, 0, 0, 0, 0, 0, 0, 0, + 73, 0, 0, 0, 384, 385, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 75, 76, 77, 78, 0, + 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 29, 30, 31, 32, 33, 34, 0, + 386, 759, 892, 0, 0, 0, 0, 35, 80, 81, + 82, 83, 84, 85, 86, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 0, 0, 0, + 0, 8, 0, 0, 0, 376, 377, 378, 379, 380, + 381, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, + 0, 0, 0, 0, 0, 0, 0, 382, 0, 0, + 0, 0, 144, 0, 0, 0, 145, 146, 147, 148, + 149, 383, 150, 151, 152, 153, 0, 154, 155, 0, + 0, 156, 157, 158, 159, 452, 0, 0, 160, 161, + 0, 0, 0, 0, 0, 0, 0, 162, 0, 163, + 0, 0, 0, 0, 0, 0, 384, 385, 0, 0, + 0, 0, 0, 0, 164, 165, 249, 0, 453, 0, + 454, 455, 456, 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, - 34, 0, 0, 545, 0, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 816, 0, 0, 543, 544, - 817, 818, 0, 819, 820, 821, 822, 823, 824, 0, - 825, 826, 0, 827, 828, 829, 830, 831, 0, 0, - 0, 68, 69, 0, 70, 0, 28, 29, 30, 31, - 32, 33, 34, 0, 816, 1164, 0, 0, 0, 817, - 818, 35, 819, 820, 821, 822, 823, 824, 0, 825, - 826, 0, 827, 828, 829, 830, 831, 0, 0, 832, - 0, 833, 0, 0, 0, 0, 834, 0, 0, 0, - 71, 0, 0, 0, 0, 68, 69, 0, 70, 0, - 0, 0, 0, 835, 0, 0, 72, 0, 0, 0, - 0, 0, 0, 0, 0, 73, 0, 0, 832, 0, - 833, 0, 0, 0, 0, 834, 0, 0, 0, 74, - 75, 76, 77, 0, 0, 78, 836, 256, 257, 258, - 0, 0, 835, 0, 71, 0, 0, 0, 0, 0, + 34, 0, 386, 946, 0, 0, 0, 0, 0, 35, + 0, 167, 0, 0, 0, 0, 0, 1549, 0, 458, + 459, 460, 461, 3, 0, 462, 0, 0, 144, 463, + 464, 465, 145, 146, 147, 148, 149, 0, 150, 151, + 152, 153, 0, 154, 155, 0, 0, 156, 157, 158, + 159, 0, 0, 0, 160, 161, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 0, 259, 80, 81, 82, 83, 84, 85, 73, - 0, 0, 0, 0, 0, 836, 0, 0, 0, 0, - 0, 0, 0, 74, 75, 76, 77, 0, 0, 78, + 164, 165, 249, 144, 0, 0, 0, 145, 146, 147, + 148, 149, 0, 150, 151, 152, 153, 0, 154, 155, + 0, 0, 156, 157, 158, 159, 0, 0, 0, 160, + 161, 0, 0, 0, 0, 0, 0, 167, 162, 0, + 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 466, 0, 164, 165, 249, 0, 0, + 1037, 1038, 0, 1039, 1040, 1041, 1042, 1043, 1044, 0, + 1045, 1046, 0, 1047, 1048, 1049, 1050, 1051, 0, 0, + 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 12, 13, 14, 0, 0, 0, 15, 16, 0, + 0, 0, 0, 17, 0, 173, 18, 0, 0, 0, + 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 877, 878, 879, 0, + 880, 881, 882, 883, 0, 884, 885, 209, 0, 886, + 887, 888, 889, 0, 0, 3, 890, 891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 0, 0, 0, 837, 0, 838, 839, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 850, 851, 852, 853, 854, 0, 0, 0, 855, 0, - 68, 69, 0, 70, 0, 0, 260, 856, 261, 262, - 263, 264, 0, 0, 0, 837, 0, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 314, 0, 0, 855, 0, 857, - 0, 0, 0, 0, 0, 0, 856, 0, 253, 71, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 21, + 22, 70, 23, 24, 25, 0, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 0, 0, 526, 0, 0, + 0, 0, 0, 35, 538, 0, 0, 3, 0, 0, + 0, 0, 898, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 0, 892, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 315, 0, 72, 0, 316, 0, 0, - 317, 318, 0, 0, 73, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 0, 74, 75, - 76, 77, 0, 331, 78, 68, 69, 332, 70, 0, - 0, 0, 0, 0, 333, 68, 69, 0, 70, 0, - 0, 0, 0, 334, 0, 0, 0, 0, 0, 0, - 0, 79, 80, 81, 82, 83, 84, 85, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 1052, 1053, 73, 1054, 1055, 1056, 538, 1057, 1058, 0, + 74, 1059, 1060, 0, 1061, 0, 0, 75, 76, 77, + 78, 0, 0, 79, 0, 0, 173, 1062, 1063, 1064, + 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, + 1075, 1076, 0, 539, 0, 6, 7, 8, 0, 0, + 80, 81, 82, 83, 84, 85, 86, 540, 0, 0, + 0, 0, 541, 0, 0, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 1077, 0, 0, 0, 0, + 0, 0, 11, 12, 13, 14, 0, 542, 543, 0, + 0, 0, 0, 0, 0, 539, 0, 6, 7, 8, + 0, 0, 0, 0, 0, 0, 0, 544, 0, 540, + 0, 0, 0, 0, 541, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 0, 68, - 69, 0, 70, 0, 71, 0, 0, 0, 0, 0, - 72, 0, 0, 443, 0, 444, 445, 0, 0, 73, - 72, 0, 446, 0, 0, 266, 267, 0, 0, 73, - 0, 0, 0, 74, 75, 76, 77, 0, 0, 78, - 0, 0, 0, 74, 75, 76, 77, 0, 71, 78, - 0, 0, 0, 68, 69, 0, 70, 135, 0, 0, - 0, 0, 0, 0, 72, 0, 79, 80, 81, 82, - 83, 84, 85, 73, 0, 0, 79, 80, 81, 82, - 83, 84, 85, 0, 0, 0, 0, 74, 75, 76, - 77, 0, 0, 78, 0, 0, 68, 69, 0, 70, - 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 483, 484, 0, 0, 72, 0, - 79, 80, 81, 82, 83, 84, 85, 73, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 14, 0, 542, + 543, 0, 545, 546, 0, 0, 0, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 544, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 28, 29, 30, 31, 32, 33, 34, 0, 0, 547, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 818, 0, 0, 545, 546, 819, 820, 0, 821, + 822, 823, 824, 825, 826, 0, 827, 828, 0, 829, + 830, 831, 832, 833, 0, 0, 0, 68, 69, 0, + 70, 0, 28, 29, 30, 31, 32, 33, 34, 0, + 818, 1166, 0, 0, 0, 819, 820, 35, 821, 822, + 823, 824, 825, 826, 0, 827, 828, 0, 829, 830, + 831, 832, 833, 0, 0, 834, 0, 835, 0, 0, + 0, 0, 0, 836, 0, 0, 71, 0, 0, 0, + 0, 0, 68, 69, 0, 70, 0, 0, 0, 0, + 837, 0, 72, 0, 0, 0, 0, 0, 0, 0, + 0, 73, 0, 0, 834, 0, 835, 0, 0, 74, + 0, 0, 836, 0, 0, 0, 75, 76, 77, 78, + 0, 0, 79, 838, 257, 258, 259, 0, 0, 837, + 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 260, + 81, 82, 83, 84, 85, 86, 73, 0, 0, 0, + 0, 0, 838, 0, 74, 0, 0, 0, 0, 0, + 0, 75, 76, 77, 78, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 75, 76, 77, 71, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 0, 0, 0, 79, 80, 81, 82, 83, 84, - 85, 0, 0, 0, 74, 75, 76, 77, 143, 0, - 78, 0, 0, 0, 146, 147, 148, 0, 149, 150, - 151, 152, 0, 153, 154, 0, 0, 155, 156, 157, - 158, 0, 0, 0, 1302, 160, 0, 79, 80, 81, - 82, 83, 84, 85, 0, 0, 0, 0, 0, 340, - 113, 0, 0, 0, 0, 115, 0, 116, 0, 0, - 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, + 86, 0, 0, 839, 0, 840, 841, 842, 843, 844, + 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, + 855, 856, 0, 68, 69, 857, 70, 0, 0, 0, + 0, 0, 0, 261, 858, 262, 263, 264, 265, 0, + 0, 0, 839, 0, 840, 841, 842, 843, 844, 845, + 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 0, 0, 0, 857, 0, 859, 0, 0, 0, + 0, 0, 71, 858, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 0, 72, 68, + 69, 0, 70, 0, 0, 0, 0, 73, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 75, 76, 77, 78, 0, 0, 79, 0, + 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, + 85, 86, 316, 0, 72, 0, 317, 0, 0, 318, + 319, 0, 0, 73, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 0, 75, 76, + 77, 78, 0, 333, 79, 68, 69, 334, 70, 0, + 0, 0, 0, 0, 335, 0, 0, 0, 0, 68, + 69, 0, 70, 336, 0, 0, 0, 0, 0, 0, + 0, 80, 81, 82, 83, 84, 85, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, + 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 72, 0, 0, 445, 0, 446, 447, 0, 0, 73, + 0, 0, 448, 0, 72, 68, 69, 74, 70, 267, + 268, 0, 0, 73, 75, 76, 77, 78, 0, 0, + 79, 74, 0, 0, 68, 69, 0, 70, 75, 76, + 77, 78, 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, + 83, 84, 85, 86, 71, 0, 0, 0, 0, 0, + 0, 80, 81, 82, 83, 84, 85, 86, 0, 0, + 72, 68, 69, 71, 70, 136, 0, 0, 0, 73, + 0, 0, 0, 0, 0, 0, 0, 74, 0, 72, + 0, 0, 0, 0, 75, 76, 77, 78, 73, 0, + 79, 0, 0, 0, 0, 0, 74, 0, 0, 0, + 0, 0, 0, 75, 76, 77, 78, 0, 0, 79, + 71, 485, 486, 0, 0, 0, 0, 80, 81, 82, + 83, 84, 85, 86, 0, 68, 72, 0, 70, 136, + 0, 0, 0, 0, 0, 73, 80, 81, 82, 83, + 84, 85, 86, 74, 0, 0, 0, 0, 0, 0, + 75, 76, 77, 78, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 341, 1303, 342, 343, 344, 345, 346, 0, - 0, 0, 0, 347, 0, 0, 119, 0, 0, 0, - 0, 0, 348, 1304, 0, 0, 0, 349, 0, 0, - 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 351, 352, 353, 354, 355, 356, 357, 358, - 0, 0, 0, 0, 0, 359 + 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 81, 82, 83, 84, 85, 86, + 72, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 75, 76, 77, 78, 0, 0, + 79, 0, 342, 114, 0, 0, 0, 0, 116, 0, + 117, 0, 0, 0, 0, 0, 0, 118, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, + 83, 84, 85, 86, 119, 343, 0, 344, 345, 346, + 347, 348, 0, 0, 0, 0, 349, 0, 0, 120, + 0, 0, 0, 0, 0, 0, 350, 0, 0, 0, + 0, 351, 0, 0, 352, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 361 }; static const yytype_int16 yycheck[] = { - 5, 108, 25, 109, 92, 692, 178, 118, 119, 425, - 1, 427, 1, 57, 25, 20, 339, 14, 1, 339, - 974, 1, 339, 28, 29, 30, 31, 1, 25, 1005, - 738, 21, 22, 1, 1128, 677, 1100, 25, 9, 12, - 7, 7, 487, 43, 25, 23, 24, 9, 48, 7, - 8, 8, 8, 500, 501, 502, 200, 111, 20, 59, - 9, 8, 63, 750, 7, 19, 33, 178, 9, 56, - 60, 7, 7, 65, 66, 751, 111, 9, 184, 63, - 9, 10, 11, 9, 137, 11, 137, 9, 199, 196, - 9, 203, 204, 205, 206, 207, 9, 44, 88, 20, - 123, 9, 31, 32, 9, 31, 32, 9, 10, 9, - 10, 9, 200, 9, 10, 9, 227, 9, 10, 11, - 198, 144, 167, 120, 129, 64, 131, 132, 133, 1095, - 9, 9, 120, 1477, 137, 8, 216, 127, 128, 31, - 32, 247, 249, 1465, 167, 393, 1464, 7, 294, 11, - 9, 10, 23, 1457, 300, 26, 27, 28, 29, 1463, - 31, 32, 33, 1462, 228, 209, 171, 172, 137, 31, - 32, 44, 40, 33, 171, 1497, 283, 45, 1496, 47, - 161, 178, 172, 164, 248, 9, 54, 126, 24, 25, - 195, 1495, 294, 293, 294, 1494, 20, 9, 34, 301, - 223, 23, 183, 71, 26, 27, 28, 29, 294, 31, - 32, 33, 293, 213, 300, 220, 221, 295, 86, 300, - 225, 292, 898, 899, 299, 672, 39, 87, 225, 300, - 337, 298, 404, 293, 294, 289, 912, 14, 51, 52, - 17, 294, 9, 294, 249, 299, 236, 237, 8, 294, - 255, 698, 396, 940, 289, 275, 69, 290, 1602, 26, - 27, 28, 295, 40, 41, 294, 216, 294, 45, 299, - 47, 300, 295, 300, 290, 216, 383, 54, 283, 284, - 303, 968, 295, 288, 9, 298, 291, 292, 293, 292, - 1256, 296, 297, 294, 71, 276, 301, 408, 288, 406, - 7, 407, 12, 290, 296, 290, 554, 120, 396, 86, - 294, 399, 302, 292, 990, 403, 292, 299, 291, 298, - 296, 290, 313, 305, 313, 294, 307, 106, 107, 108, - 313, 298, 298, 313, 305, 293, 293, 293, 300, 313, - 294, 293, 294, 292, 432, 313, 304, 290, 339, 296, - 339, 300, 295, 307, 60, 290, 339, 295, 294, 339, - 295, 299, 809, 407, 296, 339, 473, 296, 292, 293, - 296, 339, 296, 1349, 296, 296, 292, 296, 1472, 290, - 296, 295, 405, 296, 374, 299, 376, 290, 296, 295, - 380, 296, 293, 299, 296, 290, 296, 290, 296, 294, - 296, 508, 296, 295, 511, 512, 396, 404, 405, 399, - 400, 411, 409, 403, 1508, 272, 863, 296, 296, 290, - 290, 409, 294, 401, 402, 290, 416, 417, 1492, 419, - 574, 421, 583, 584, 585, 306, 293, 544, 582, 251, - 252, 253, 299, 65, 66, 423, 469, 437, 438, 306, - 439, 440, 441, 442, 560, 1097, 901, 295, 569, 439, - 465, 299, 467, 295, 295, 106, 107, 108, 299, 576, - 295, 439, 440, 441, 442, 139, 140, 1185, 298, 292, - 485, 295, 479, 294, 306, 299, 574, 298, 485, 494, - 303, 75, 76, 77, 582, 485, 137, 46, 605, 48, - 49, 50, 295, 508, 51, 295, 39, 1483, 614, 299, - 106, 107, 108, 46, 137, 48, 49, 50, 295, 295, - 299, 307, 301, 299, 612, 631, 305, 306, 112, 113, - 114, 137, 39, 295, 137, 525, 295, 299, 561, 46, - 299, 48, 49, 50, 25, 26, 27, 28, 29, 295, - 540, 541, 137, 299, 87, 88, 89, 296, 1512, 295, - 295, 566, 567, 299, 299, 12, 106, 107, 108, 559, - 296, 9, 10, 11, 9, 565, 11, 296, 568, 623, - 87, 88, 89, 106, 107, 108, 55, 610, 57, 58, - 59, 735, 582, 31, 32, 295, 31, 32, 61, 299, - 605, 134, 135, 136, 305, 138, 295, 295, 141, 609, - 299, 299, 295, 724, 721, 722, 723, 295, 941, 730, - 296, 941, 612, 300, 941, 139, 140, 134, 135, 136, - 226, 138, 298, 295, 141, 1311, 1312, 299, 638, 639, - 26, 27, 28, 29, 644, 650, 646, 735, 295, 295, - 295, 656, 299, 299, 299, 295, 1343, 292, 299, 649, - 301, 28, 29, 295, 305, 306, 689, 299, 8, 775, - 296, 783, 760, 785, 786, 787, 788, 789, 668, 295, - 295, 769, 300, 299, 299, 295, 709, 692, 25, 299, - 695, 295, 697, 221, 694, 299, 63, 678, 292, 293, - 1116, 300, 1118, 299, 292, 301, 292, 293, 296, 305, - 306, 294, 295, 300, 719, 705, 706, 295, 723, 295, - 688, 291, 727, 728, 729, 299, 749, 991, 992, 295, - 753, 25, 26, 27, 28, 29, 295, 1424, 5, 6, - 295, 8, 9, 304, 295, 750, 1422, 850, 851, 295, - 740, 293, 742, 1429, 744, 295, 746, 291, 864, 299, - 296, 301, 7, 296, 871, 305, 306, 873, 295, 295, - 760, 290, 7, 861, 296, 293, 299, 301, 301, 40, - 770, 771, 305, 306, 45, 296, 47, 54, 19, 296, - 209, 19, 302, 54, 772, 20, 75, 76, 77, 293, - 293, 111, 792, 70, 794, 795, 290, 812, 290, 814, - 71, 72, 79, 290, 921, 290, 904, 304, 808, 26, - 27, 28, 29, 19, 295, 86, 93, 94, 95, 96, - 62, 295, 99, 112, 113, 114, 203, 204, 62, 206, - 1516, 947, 26, 27, 28, 29, 295, 295, 300, 304, - 105, 296, 296, 296, 296, 110, 296, 118, 213, 126, - 127, 128, 129, 130, 131, 132, 973, 296, 975, 296, - 296, 1558, 216, 298, 864, 298, 298, 295, 216, 296, - 293, 1557, 298, 864, 291, 293, 8, 298, 291, 295, - 5, 6, 296, 8, 894, 295, 295, 5, 6, 296, - 8, 296, 295, 991, 992, 19, 896, 296, 302, 300, - 933, 296, 300, 1589, 1601, 926, 939, 293, 923, 19, - 293, 296, 293, 1029, 892, 930, 41, 296, 1604, 919, - 295, 299, 304, 295, 295, 940, 296, 296, 295, 54, - 296, 243, 296, 296, 295, 935, 54, 937, 235, 247, - 941, 22, 941, 942, 943, 70, 945, 296, 941, 942, - 943, 941, 70, 968, 79, 295, 298, 941, 942, 943, - 291, 79, 298, 941, 942, 943, 1082, 945, 93, 94, - 95, 96, 987, 290, 99, 93, 94, 95, 96, 302, - 296, 99, 197, 1165, 1166, 1167, 1168, 300, 295, 39, - 304, 991, 992, 1175, 1176, 1177, 46, 300, 48, 49, - 50, 126, 127, 128, 129, 130, 131, 132, 126, 127, - 128, 129, 130, 131, 132, 300, 1016, 282, 283, 284, - 285, 286, 287, 288, 304, 300, 291, 295, 137, 20, - 300, 308, 297, 300, 296, 62, 62, 87, 88, 89, - 296, 8, 296, 296, 1161, 1162, 22, 23, 24, 105, - 26, 27, 28, 29, 110, 31, 32, 33, 250, 35, - 36, 37, 38, 299, 296, 295, 42, 43, 299, 295, - 105, 290, 300, 296, 296, 110, 1502, 1503, 167, 1079, - 296, 295, 295, 293, 134, 135, 136, 296, 138, 296, - 256, 141, 300, 218, 293, 300, 19, 301, 1196, 296, - 298, 1101, 1102, 1103, 304, 1203, 295, 1205, 1108, 1109, - 1110, 1111, 1112, 1113, 1230, 1115, 1116, 1117, 300, 1119, - 1120, 1121, 1122, 1123, 1124, 1125, 1114, 1127, 295, 1129, - 1118, 1131, 295, 1133, 295, 111, 295, 295, 1126, 295, - 295, 1132, 295, 1158, 295, 295, 295, 291, 1155, 296, - 8, 296, 18, 295, 300, 296, 296, 300, 1165, 1166, - 1167, 1168, 300, 300, 300, 296, 296, 300, 1175, 1176, - 1177, 300, 300, 296, 296, 296, 296, 296, 0, 19, - 305, 299, 296, 300, 300, 296, 301, 1187, 300, 296, - 296, 8, 300, 296, 296, 300, 18, 296, 296, 300, - 1317, 293, 302, 300, 1325, 296, 1206, 300, 296, 295, - 300, 295, 295, 300, 296, 1215, 295, 295, 84, 304, - 296, 295, 1222, 1223, 304, 1342, 282, 283, 284, 285, - 286, 287, 288, 304, 1234, 1351, 296, 300, 296, 300, - 8, 297, 296, 300, 296, 300, 296, 282, 283, 284, - 285, 286, 287, 288, 1254, 1255, 291, 295, 295, 295, - 300, 295, 297, 1263, 1264, 1265, 1266, 1267, 1268, 300, - 1270, 295, 295, 295, 295, 295, 295, 5, 6, 1257, - 8, 1269, 295, 295, 295, 13, 296, 296, 16, 296, - 1305, 296, 20, 21, 22, 23, 24, 295, 26, 27, - 28, 29, 304, 31, 32, 295, 1423, 35, 36, 37, - 38, 295, 1303, 41, 42, 43, 295, 299, 296, 296, - 296, 295, 295, 51, 296, 53, 54, 296, 1343, 19, - 296, 197, 18, 155, 156, 157, 158, 159, 8, 296, - 68, 69, 70, 209, 296, 211, 212, 295, 214, 215, - 1350, 79, 295, 256, 104, 177, 178, 1357, 296, 296, - 19, 1478, 295, 194, 296, 93, 94, 95, 96, 1485, - 25, 99, 194, 195, 196, 197, 104, 105, 307, 201, - 202, 409, 1195, 479, 718, 207, 732, 1152, 210, 25, - 1368, 1154, 1425, 978, 580, 217, 218, 1194, 126, 127, - 128, 129, 130, 131, 132, 360, 57, 1082, 859, 1424, - 689, 623, 901, 980, 1137, 1437, 282, 283, 284, 285, - 286, 287, 288, 706, 871, 291, 866, 10, 1146, 491, - 130, 297, 160, 161, 162, 736, 440, -1, 542, -1, - -1, 1441, 1442, 1443, -1, 1561, -1, -1, -1, -1, - 14, 273, 274, 17, 276, 277, 278, -1, 280, 281, - 282, 283, 284, 285, 286, 287, 288, -1, 18, 197, - -1, -1, -1, -1, 1595, 297, 40, 41, -1, -1, - -1, 45, 1599, 47, 170, 171, 172, 173, -1, -1, - 54, -1, -1, 1493, -1, -1, -1, -1, 1498, 1499, - 1500, -1, 1502, -1, 1504, 1505, 1506, 71, 194, 195, - 196, 197, -1, -1, -1, 1503, -1, -1, -1, 1510, - -1, -1, 86, -1, -1, -1, 1526, 1527, 1528, -1, - 5, 6, -1, 8, -1, -1, -1, -1, 13, -1, - -1, 16, -1, 1558, -1, 20, 21, 22, 23, 24, - -1, 26, 27, 28, 29, -1, 31, 32, -1, -1, - 35, 36, 37, 38, -1, 1598, 41, 42, 43, -1, - -1, 299, -1, -1, -1, -1, 51, -1, 53, 54, - 308, -1, -1, -1, -1, -1, 1601, -1, -1, -1, - 1590, -1, -1, 68, 69, 70, 282, 283, 284, 285, - 286, 287, 288, -1, 79, 291, -1, -1, -1, -1, - -1, 297, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, 99, -1, -1, 177, 178, 104, - -1, 106, 107, 108, -1, -1, -1, -1, -1, -1, - 18, -1, -1, -1, -1, 120, 121, 197, -1, -1, - -1, 126, 127, 128, 129, 130, 131, 132, -1, 209, - -1, 211, -1, 41, 214, 215, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 5, 6, -1, 8, -1, 160, 161, 162, 13, -1, - -1, 16, -1, -1, -1, 20, 21, 22, 23, 24, - -1, 26, 27, 28, 29, -1, 31, 32, -1, -1, - 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, - -1, -1, -1, -1, -1, -1, 51, -1, 53, 54, - -1, -1, 282, 283, 284, 285, 286, 287, 288, -1, - -1, 291, -1, 68, 69, 70, -1, 297, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, 99, -1, -1, 155, -1, 104, - -1, 106, 107, 108, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 120, 121, -1, -1, -1, - -1, 126, 127, 128, 129, 130, 131, 132, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 197, - -1, -1, -1, -1, 299, -1, 301, -1, -1, 207, - 305, 306, 210, 308, -1, 160, 161, 162, 5, 6, - -1, 8, -1, -1, -1, -1, 13, -1, -1, 16, - -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, - 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, - 37, 38, -1, -1, 41, 42, 43, -1, -1, -1, - -1, -1, -1, -1, 51, -1, 53, 54, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 68, 69, 70, 282, 283, 284, 285, 286, 287, - 288, -1, 79, 291, -1, -1, -1, -1, -1, 297, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - -1, -1, 99, -1, -1, -1, -1, 104, -1, 106, - 107, 108, -1, -1, -1, -1, -1, -1, 18, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, - 127, 128, 129, 130, 131, 132, -1, -1, -1, -1, - -1, -1, -1, -1, 299, -1, 301, -1, -1, -1, - 305, 306, -1, 308, -1, -1, -1, -1, 5, 6, - -1, 8, -1, 160, 161, 162, 13, -1, -1, 16, - -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, - 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, - 37, 38, -1, -1, 41, 42, 43, -1, -1, 39, - -1, -1, -1, -1, 51, -1, 53, 54, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - -1, 68, 69, 70, -1, 72, -1, -1, -1, -1, - 70, -1, 79, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - -1, -1, 99, 93, 94, 95, 96, 104, -1, 99, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 118, -1, 173, -1, 175, 176, -1, -1, 126, - 127, 128, 129, 130, 131, 132, 126, 127, 128, 129, - 130, 131, 132, -1, 194, 195, 196, 197, -1, -1, - -1, -1, 299, -1, 301, -1, -1, -1, 305, 306, - -1, 308, -1, 160, 161, 162, 5, 6, -1, 8, - -1, -1, -1, -1, 13, 18, -1, 16, -1, -1, + 5, 109, 25, 25, 25, 119, 120, 427, 110, 429, + 179, 341, 1, 57, 694, 20, 976, 14, 1, 341, + 341, 1, 1, 28, 29, 30, 31, 489, 25, 1, + 1007, 21, 22, 1, 740, 1102, 679, 753, 25, 1130, + 9, 502, 503, 504, 7, 23, 24, 201, 7, 7, + 8, 43, 93, 9, 19, 7, 48, 204, 205, 206, + 207, 208, 7, 7, 20, 179, 9, 59, 9, 10, + 60, 9, 752, 8, 33, 9, 112, 8, 138, 56, + 9, 10, 11, 185, 9, 10, 200, 9, 9, 197, + 11, 9, 10, 9, 9, 65, 66, 9, 12, 89, + 20, 124, 31, 32, 8, 168, 9, 9, 9, 9, + 31, 32, 9, 44, 228, 9, 63, 63, 138, 217, + 1459, 1097, 145, 199, 121, 130, 1465, 132, 133, 134, + 9, 10, 11, 1479, 121, 300, 8, 395, 128, 129, + 162, 1467, 250, 165, 8, 168, 248, 138, 75, 76, + 77, 64, 31, 32, 229, 7, 299, 1466, 1497, 9, + 201, 1464, 184, 138, 40, 300, 210, 172, 173, 45, + 20, 47, 44, 1499, 249, 172, 284, 296, 54, 276, + 299, 33, 179, 173, 900, 901, 113, 114, 115, 1498, + 295, 196, 293, 1496, 9, 71, 72, 302, 914, 23, + 301, 224, 26, 27, 28, 29, 11, 31, 32, 33, + 86, 294, 39, 674, 127, 217, 221, 222, 301, 273, + 296, 226, 214, 291, 51, 52, 31, 32, 295, 226, + 7, 339, 295, 293, 301, 112, 88, 406, 12, 700, + 294, 291, 69, 119, 398, 250, 300, 237, 238, 24, + 25, 256, 291, 307, 290, 277, 60, 296, 1604, 34, + 23, 295, 942, 26, 27, 28, 29, 301, 31, 32, + 33, 60, 61, 296, 293, 295, 992, 385, 297, 284, + 285, 304, 1258, 217, 289, 295, 308, 292, 293, 294, + 970, 301, 297, 298, 121, 291, 410, 302, 556, 289, + 408, 107, 108, 109, 295, 9, 300, 409, 294, 252, + 253, 254, 306, 303, 291, 291, 291, 107, 108, 109, + 295, 295, 26, 27, 28, 314, 299, 297, 291, 291, + 295, 314, 138, 296, 314, 314, 294, 306, 291, 291, + 299, 291, 314, 308, 296, 301, 314, 305, 295, 295, + 811, 295, 341, 51, 299, 293, 297, 398, 341, 294, + 401, 341, 341, 301, 405, 409, 297, 475, 297, 341, + 9, 10, 297, 341, 1351, 297, 297, 297, 292, 297, + 138, 297, 297, 1474, 407, 297, 376, 296, 378, 296, + 294, 300, 382, 434, 297, 297, 297, 297, 294, 295, + 297, 293, 510, 297, 865, 513, 514, 299, 398, 406, + 407, 401, 402, 290, 411, 405, 296, 296, 296, 1510, + 300, 413, 576, 300, 411, 403, 404, 1494, 418, 419, + 584, 421, 14, 423, 295, 17, 296, 227, 546, 138, + 301, 903, 25, 26, 27, 28, 29, 425, 471, 439, + 440, 138, 441, 442, 443, 444, 1099, 571, 40, 41, + 562, 441, 467, 45, 469, 47, 293, 291, 294, 295, + 578, 138, 54, 441, 442, 443, 444, 304, 107, 108, + 109, 1187, 487, 307, 481, 308, 107, 108, 109, 71, + 487, 496, 294, 295, 300, 12, 302, 487, 297, 607, + 306, 307, 291, 296, 86, 510, 295, 300, 1485, 297, + 300, 39, 302, 302, 616, 296, 306, 307, 46, 300, + 48, 49, 50, 585, 586, 587, 296, 75, 76, 77, + 300, 633, 297, 28, 29, 576, 9, 527, 11, 306, + 563, 65, 66, 584, 307, 107, 108, 109, 140, 141, + 61, 296, 542, 543, 1514, 300, 140, 141, 31, 32, + 88, 89, 90, 568, 569, 113, 114, 115, 63, 293, + 294, 561, 46, 614, 48, 49, 50, 567, 296, 40, + 570, 625, 300, 737, 45, 296, 47, 296, 18, 612, + 297, 293, 294, 54, 584, 297, 296, 1313, 1314, 296, + 300, 296, 607, 300, 9, 10, 11, 135, 136, 137, + 71, 139, 726, 943, 142, 723, 724, 725, 732, 611, + 301, 943, 943, 299, 614, 86, 31, 32, 25, 26, + 27, 28, 29, 55, 293, 57, 58, 59, 785, 8, + 787, 788, 789, 790, 791, 297, 296, 652, 640, 641, + 300, 296, 301, 658, 646, 300, 648, 222, 680, 106, + 25, 651, 296, 301, 111, 1345, 300, 296, 691, 301, + 296, 300, 296, 302, 300, 777, 300, 306, 307, 300, + 670, 302, 296, 296, 296, 306, 307, 300, 711, 694, + 292, 296, 697, 296, 699, 300, 737, 300, 1118, 296, + 1120, 690, 5, 6, 696, 8, 9, 296, 1424, 204, + 205, 300, 207, 300, 296, 1431, 721, 707, 708, 296, + 725, 762, 296, 300, 729, 730, 731, 296, 751, 296, + 771, 300, 755, 300, 305, 291, 296, 296, 300, 295, + 302, 300, 295, 296, 306, 307, 1426, 752, 297, 293, + 296, 54, 742, 297, 744, 296, 746, 296, 748, 300, + 296, 300, 296, 292, 866, 873, 300, 70, 198, 297, + 295, 293, 762, 875, 299, 297, 79, 296, 208, 293, + 294, 211, 772, 773, 87, 26, 27, 28, 29, 993, + 994, 94, 95, 96, 97, 294, 774, 100, 26, 27, + 28, 29, 1518, 296, 794, 7, 796, 797, 291, 814, + 7, 816, 852, 853, 294, 923, 26, 27, 28, 29, + 810, 297, 863, 302, 127, 128, 129, 130, 131, 132, + 133, 297, 19, 210, 19, 303, 283, 284, 285, 286, + 287, 288, 289, 1559, 866, 292, 20, 949, 294, 294, + 112, 298, 291, 283, 284, 285, 286, 287, 288, 289, + 291, 305, 292, 291, 291, 906, 19, 975, 298, 977, + 296, 62, 62, 296, 214, 1591, 866, 296, 296, 299, + 1560, 297, 297, 297, 301, 297, 297, 297, 297, 39, + 1606, 297, 305, 296, 217, 299, 46, 299, 48, 49, + 50, 217, 297, 294, 896, 894, 299, 928, 898, 292, + 294, 299, 935, 8, 292, 296, 296, 296, 941, 19, + 925, 18, 297, 1603, 297, 106, 297, 932, 296, 1031, + 111, 921, 294, 303, 297, 301, 297, 942, 88, 89, + 90, 301, 5, 6, 19, 8, 297, 937, 294, 939, + 294, 300, 993, 994, 943, 944, 945, 296, 947, 297, + 943, 944, 945, 943, 943, 970, 296, 296, 305, 297, + 297, 943, 944, 945, 296, 943, 944, 945, 297, 947, + 297, 296, 1084, 297, 989, 135, 136, 137, 244, 139, + 236, 54, 142, 248, 296, 22, 297, 292, 1167, 1168, + 1169, 1170, 299, 993, 994, 299, 309, 70, 1177, 1178, + 1179, 291, 303, 297, 198, 296, 79, 305, 305, 301, + 138, 296, 301, 301, 87, 301, 297, 301, 1018, 301, + 20, 94, 95, 96, 97, 8, 62, 100, 62, 297, + 297, 300, 251, 297, 107, 108, 109, 300, 296, 296, + 301, 291, 297, 297, 297, 1163, 1164, 296, 296, 168, + 297, 297, 297, 294, 127, 128, 129, 130, 131, 132, + 133, 301, 301, 294, 171, 172, 173, 174, 257, 302, + 19, 297, 299, 305, 1504, 1505, 301, 292, 296, 296, + 296, 1081, 296, 296, 8, 296, 296, 296, 195, 196, + 197, 198, 283, 284, 285, 286, 287, 288, 289, 297, + 296, 292, 1134, 1103, 1104, 1105, 296, 298, 296, 296, + 1110, 1111, 1112, 1113, 1114, 1115, 301, 1117, 1118, 1119, + 1232, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1116, 1129, + 297, 1131, 1120, 1133, 303, 1135, 301, 297, 297, 106, + 1128, 297, 294, 301, 111, 1160, 301, 1198, 39, 297, + 1157, 301, 18, 297, 1205, 46, 1207, 48, 49, 50, + 1167, 1168, 1169, 1170, 301, 297, 297, 301, 297, 19, + 1177, 1178, 1179, 297, 301, 297, 283, 284, 285, 286, + 287, 288, 289, 301, 297, 292, 301, 301, 297, 1189, + 301, 298, 8, 297, 297, 301, 297, 88, 89, 90, + 297, 1319, 301, 1327, 297, 297, 301, 297, 1208, 297, + 296, 305, 301, 5, 6, 296, 8, 1217, 301, 301, + 296, 296, 296, 301, 1224, 1225, 1344, 300, 297, 302, + 297, 296, 296, 306, 307, 305, 1236, 305, 297, 297, + 301, 1353, 297, 296, 135, 136, 137, 301, 139, 41, + 297, 142, 301, 296, 296, 296, 1256, 1257, 296, 8, + 1259, 296, 54, 296, 296, 1265, 1266, 1267, 1268, 1269, + 1270, 296, 1272, 1305, 296, 296, 296, 296, 70, 297, + 19, 297, 297, 1271, 301, 8, 297, 79, 302, 296, + 296, 301, 1307, 305, 296, 87, 297, 296, 257, 297, + 296, 296, 94, 95, 96, 97, 300, 1425, 100, 297, + 297, 297, 178, 179, 105, 297, 283, 284, 285, 286, + 287, 288, 289, 297, 296, 296, 19, 297, 297, 297, + 1345, 298, 198, 296, 195, 127, 128, 129, 130, 131, + 132, 133, 308, 25, 210, 481, 212, 1197, 411, 215, + 216, 720, 1352, 1154, 1156, 25, 1196, 734, 362, 1359, + 980, 582, 1480, 625, 1084, 57, 5, 6, 691, 8, + 861, 1370, 903, 982, 13, 1487, 1439, 16, 1139, 873, + 708, 20, 21, 22, 23, 24, 868, 26, 27, 28, + 29, 10, 31, 32, 1427, 1148, 35, 36, 37, 38, + 131, 544, 41, 42, 43, -1, 297, 738, -1, 493, + -1, 1426, 51, 442, 53, 54, -1, 283, 284, 285, + 286, 287, 288, 289, -1, -1, 292, 219, -1, 68, + 69, 70, 298, -1, -1, -1, -1, -1, -1, -1, + 79, -1, -1, 1443, 1444, 1445, -1, -1, 87, -1, + -1, 1563, -1, -1, -1, 94, 95, 96, 97, -1, + -1, 100, -1, -1, -1, -1, 105, -1, 107, 108, + 109, -1, -1, 1597, -1, -1, -1, -1, -1, -1, + 1512, -1, -1, 1601, -1, -1, -1, -1, 127, 128, + 129, 130, 131, 132, 133, 1495, -1, -1, -1, -1, + 1500, 1501, 1502, -1, 1504, -1, 1506, 1507, 1508, -1, + -1, -1, -1, -1, 306, -1, -1, 1505, -1, -1, + -1, -1, 161, 162, 163, -1, -1, -1, 1528, 1529, + 1530, -1, 5, 6, -1, 8, -1, -1, -1, -1, + 13, -1, -1, 16, -1, 1560, -1, 20, 21, 22, + 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, + -1, -1, 35, 36, 37, 38, -1, 1600, 41, 42, + 43, -1, -1, -1, -1, -1, -1, -1, 51, -1, + 53, 54, -1, -1, -1, -1, 39, -1, 1603, -1, + -1, -1, 1592, -1, -1, 68, 69, 70, -1, -1, + -1, 54, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, -1, -1, 70, -1, -1, + -1, 94, 95, 96, 97, -1, 79, 100, -1, -1, + -1, -1, 105, -1, 107, 108, 109, -1, -1, -1, + -1, 94, 95, 96, 97, -1, -1, 100, 121, 122, + -1, -1, -1, -1, 127, 128, 129, 130, 131, 132, + 133, 300, -1, 302, -1, -1, -1, 306, 307, 5, + 309, -1, 8, 9, 127, 128, 129, 130, 131, 132, + 133, -1, -1, 5, 6, -1, 8, -1, 161, 162, + 163, 13, -1, -1, 16, -1, -1, -1, 20, 21, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, -1, -1, 35, 36, 37, 38, -1, 54, 41, + 42, 43, -1, -1, -1, -1, -1, -1, -1, 51, + -1, 53, 54, -1, 70, -1, -1, -1, -1, -1, + -1, -1, -1, 79, -1, -1, 68, 69, 70, -1, + -1, 87, -1, -1, -1, -1, -1, 79, 94, 95, + 96, 97, -1, -1, 100, 87, -1, -1, -1, -1, + -1, -1, 94, 95, 96, 97, -1, -1, 100, -1, + -1, 18, -1, 105, -1, 107, 108, 109, -1, -1, + -1, 127, 128, 129, 130, 131, 132, 133, -1, 121, + 122, -1, -1, -1, 41, 127, 128, 129, 130, 131, + 132, 133, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 5, 6, -1, 8, -1, 300, -1, 302, + -1, -1, -1, 306, 307, -1, 309, -1, 291, 161, + 162, 163, 5, 6, -1, 8, -1, -1, -1, -1, + 13, -1, -1, 16, -1, -1, -1, 20, 21, 22, + 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, + -1, 54, 35, 36, 37, 38, -1, -1, 41, 42, + 43, -1, -1, -1, -1, -1, -1, 70, 51, -1, + 53, 54, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, 68, 69, 70, -1, -1, + -1, 94, 95, 96, 97, -1, 79, 100, -1, 156, + -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, + -1, 94, 95, 96, 97, -1, -1, 100, -1, -1, + -1, -1, 105, 106, 127, 128, 129, 130, 131, 132, + 133, -1, -1, -1, -1, 291, -1, -1, -1, -1, + -1, 198, -1, -1, 127, 128, 129, 130, 131, 132, + 133, 208, -1, -1, 211, -1, -1, -1, 300, -1, + 302, -1, -1, -1, 306, 307, -1, 309, -1, -1, + -1, -1, -1, 5, 6, -1, 8, -1, 161, 162, + 163, 13, -1, -1, 16, -1, -1, -1, 20, 21, + 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, + 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, + 42, 43, -1, -1, -1, 198, -1, 14, -1, 51, + 17, 53, 54, -1, -1, -1, 283, 284, 285, 286, + 287, 288, 289, -1, -1, 292, 68, 69, 70, -1, + 72, 298, -1, 40, 41, -1, -1, 79, 45, -1, + 47, -1, -1, -1, -1, 87, -1, 54, -1, -1, + -1, -1, 94, 95, 96, 97, -1, -1, 100, -1, + -1, -1, -1, 105, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 119, -1, 86, + -1, -1, -1, 296, -1, 127, 128, 129, 130, 131, + 132, 133, -1, -1, -1, -1, -1, -1, -1, -1, + 5, 6, -1, 8, -1, -1, -1, 300, -1, -1, + -1, -1, -1, -1, 5, 6, 309, 8, -1, 161, + 162, 163, 13, -1, -1, 16, -1, -1, -1, 20, + 21, 22, 23, 24, -1, 26, 27, 28, 29, -1, + 31, 32, -1, -1, 35, 36, 37, 38, -1, 54, + 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, + 51, -1, 53, 54, -1, 70, -1, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, 68, 69, 70, + -1, -1, 87, -1, -1, -1, -1, -1, 79, 94, + 95, 96, 97, -1, -1, 100, 87, -1, -1, -1, + -1, -1, -1, 94, 95, 96, 97, -1, -1, 100, + -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, + -1, -1, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, -1, -1, -1, 127, 128, 129, 130, + 131, 132, 133, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 6, -1, 8, -1, -1, -1, 300, -1, + -1, -1, -1, -1, -1, 5, 6, 309, 8, -1, + 161, 162, 163, 13, -1, -1, 16, -1, -1, -1, + 20, 21, 22, 23, 24, -1, 26, 27, 28, 29, + -1, 31, 32, -1, -1, 35, 36, 37, 38, -1, + 54, 41, 42, 43, -1, -1, -1, -1, -1, -1, + -1, 51, -1, 53, 54, -1, 70, -1, -1, -1, + -1, -1, -1, -1, -1, 79, -1, -1, 68, 69, + 70, -1, -1, 87, -1, -1, -1, -1, -1, 79, + 94, 95, 96, 97, -1, -1, 100, 87, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, -1, -1, + 100, -1, -1, -1, -1, 105, -1, -1, -1, -1, + -1, -1, -1, 127, 128, 129, 130, 131, 132, 133, + -1, -1, -1, -1, -1, -1, -1, 127, 128, 129, + 130, 131, 132, 133, -1, 300, -1, -1, -1, -1, + -1, -1, 5, 6, -1, 8, -1, -1, -1, 300, + -1, -1, -1, -1, -1, -1, 5, 6, 309, 8, + -1, 161, 162, 163, 13, -1, -1, 16, -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, 38, - -1, -1, 41, 42, 43, -1, -1, -1, -1, -1, - -1, -1, 51, -1, 53, 54, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, - 69, 70, 282, 283, 284, 285, 286, 287, 288, -1, - 79, 291, -1, -1, -1, -1, -1, 297, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, - 99, -1, -1, -1, -1, 104, 105, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, -1, -1, -1, -1, -1, 126, 127, 128, - 129, 130, 131, 132, -1, -1, -1, -1, -1, -1, - 290, 5, 299, -1, 8, 9, -1, -1, -1, 5, - 6, 308, 8, -1, -1, -1, -1, 13, -1, -1, - 16, 160, 161, 162, 20, 21, 22, 23, 24, -1, - 26, 27, 28, 29, -1, 31, 32, -1, -1, 35, - 36, 37, 38, -1, -1, 41, 42, 43, -1, -1, - 54, -1, -1, -1, 197, 51, -1, 53, 54, -1, - -1, -1, -1, -1, 207, -1, 70, 210, -1, -1, - -1, -1, 68, 69, 70, 79, -1, -1, -1, -1, - -1, -1, -1, 79, -1, -1, -1, -1, -1, 93, - 94, 95, 96, -1, -1, 99, -1, 93, 94, 95, - 96, -1, -1, 99, -1, -1, -1, -1, 104, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 126, 127, 128, 129, 130, 131, 132, -1, - 126, 127, 128, 129, 130, 131, 132, -1, -1, 282, - 283, 284, 285, 286, 287, 288, 5, 6, 291, 8, - -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, - 299, -1, -1, -1, 160, 161, 162, 5, 6, 308, - 8, -1, -1, -1, -1, 13, -1, -1, 16, -1, + -1, 54, 41, 42, 43, -1, -1, -1, -1, -1, + -1, -1, 51, -1, 53, 54, -1, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, 68, + 69, 70, -1, -1, 87, -1, -1, -1, -1, -1, + 79, 94, 95, 96, 97, -1, -1, 100, 87, -1, + -1, -1, -1, -1, -1, 94, 95, 96, 97, -1, + -1, 100, -1, -1, -1, -1, 105, -1, -1, -1, + -1, -1, -1, -1, 127, 128, 129, 130, 131, 132, + 133, -1, -1, -1, -1, -1, -1, -1, 127, 128, + 129, 130, 131, 132, 133, -1, 300, -1, -1, -1, + -1, -1, -1, 5, 6, -1, 8, -1, -1, -1, + 300, -1, -1, -1, -1, -1, -1, 5, 6, 309, + 8, -1, 161, 162, 163, 13, -1, -1, 16, -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, 27, - 28, 29, -1, 31, 32, 54, -1, 35, 36, 37, - 38, -1, -1, 41, 42, 43, -1, -1, -1, -1, - -1, 70, -1, 51, -1, 53, 54, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 68, 69, 70, -1, 93, 94, 95, 96, -1, -1, - 99, 79, -1, -1, -1, -1, -1, 106, 107, 108, - -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, - -1, 99, -1, -1, -1, -1, 104, 126, 127, 128, - 129, 130, 131, 132, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 290, -1, 126, 127, - 128, 129, 130, 131, 132, -1, -1, -1, -1, -1, - -1, -1, 5, 299, -1, 8, 9, -1, -1, -1, - 5, 6, 308, 8, -1, -1, -1, -1, 13, -1, - -1, 16, 160, 161, 162, 20, 21, 22, 23, 24, - -1, 26, 27, 28, 29, -1, 31, 32, -1, -1, - 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, - -1, 54, -1, -1, -1, -1, 51, -1, 53, 54, - -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, - -1, -1, -1, 68, 69, 70, 79, -1, -1, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - 93, 94, 95, 96, -1, -1, 99, -1, 93, 94, - 95, 96, -1, -1, 99, -1, -1, -1, -1, 104, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 126, 127, 128, 129, 130, 131, 132, - -1, 126, 127, 128, 129, 130, 131, 132, -1, 18, - 299, -1, 301, -1, -1, -1, 305, 306, -1, -1, + 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, + 38, -1, 54, 41, 42, 43, -1, -1, -1, -1, + -1, -1, -1, 51, -1, 53, 54, -1, 70, -1, + -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + 68, 69, 70, -1, -1, 87, -1, -1, -1, -1, + -1, 79, 94, 95, 96, 97, -1, -1, 100, 87, + -1, -1, -1, -1, -1, -1, 94, 95, 96, 97, + -1, -1, 100, -1, -1, -1, -1, 105, -1, -1, + -1, -1, -1, -1, -1, 127, 128, 129, 130, 131, + 132, 133, -1, -1, -1, -1, -1, -1, -1, 127, + 128, 129, 130, 131, 132, 133, -1, 300, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 299, 41, -1, -1, 160, 161, 162, 5, 6, - 308, 8, -1, -1, -1, -1, 13, -1, -1, 16, + -1, 300, -1, -1, -1, -1, -1, -1, 5, 6, + 309, 8, -1, 161, 162, 163, 13, -1, -1, 16, -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, 70, -1, -1, -1, -1, -1, -1, - -1, -1, 79, -1, -1, -1, -1, 5, 6, -1, - 8, -1, -1, -1, -1, -1, 93, 94, 95, 96, - -1, -1, 99, -1, -1, 5, 6, 104, 8, 9, - -1, -1, -1, -1, -1, -1, 155, -1, -1, -1, - 20, -1, -1, 41, -1, -1, -1, -1, -1, 126, - 127, 128, 129, 130, 131, 132, 54, -1, -1, -1, - -1, 41, -1, -1, 299, -1, -1, -1, -1, -1, - -1, -1, 70, 308, 54, -1, -1, -1, 197, -1, - -1, 79, -1, 160, 161, 162, -1, -1, 207, -1, - 70, 210, -1, -1, -1, 93, 94, 95, 96, 79, - -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 95, 96, -1, -1, 99, - -1, -1, -1, -1, -1, -1, -1, -1, 126, 127, - 128, 129, 130, 131, 132, 5, 6, 7, 8, 9, - -1, -1, -1, 13, -1, -1, 126, 127, 128, 129, - 130, 131, 132, 5, 6, -1, 8, -1, 28, -1, - -1, 13, -1, 282, 283, 284, 285, 286, 287, 288, - -1, 41, 291, -1, -1, -1, -1, -1, 297, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, 65, 66, -1, -1, 51, - 70, -1, 54, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, - 218, -1, 299, 93, 94, 95, 96, 79, -1, 99, - -1, 308, -1, -1, -1, -1, -1, -1, 218, -1, - -1, 93, 94, 95, 96, -1, -1, 99, -1, -1, - -1, -1, -1, -1, -1, -1, 126, 127, 128, 129, - 130, 131, 132, -1, -1, 5, 6, -1, 8, -1, - -1, -1, -1, 13, 126, 127, 128, 129, 130, 131, - 132, -1, -1, -1, -1, -1, 5, 6, -1, 8, - 160, 161, 162, -1, 13, -1, -1, -1, -1, -1, - -1, 41, -1, -1, 44, -1, -1, 305, 160, 161, - 162, 51, -1, -1, 54, -1, -1, -1, -1, -1, - 300, -1, 41, -1, -1, 305, -1, -1, -1, -1, - 70, -1, 51, -1, -1, 54, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, 93, 94, 95, 96, -1, -1, 99, - 79, -1, -1, -1, -1, 5, 6, -1, 8, -1, - -1, -1, -1, 13, 93, 94, 95, 96, -1, -1, - 99, -1, -1, -1, -1, -1, 126, 127, 128, 129, - 130, 131, 132, -1, -1, -1, -1, -1, -1, -1, - -1, 41, -1, -1, -1, -1, -1, 126, 127, 128, - 129, 130, 131, 132, 54, -1, -1, -1, -1, -1, - 160, 161, 162, -1, -1, -1, -1, -1, -1, 299, - 70, -1, -1, -1, -1, -1, -1, -1, -1, 79, - -1, 160, 161, 162, 296, -1, -1, 299, -1, 5, - 6, -1, 8, 93, 94, 95, 96, 13, -1, 99, - 5, 6, -1, 8, -1, -1, -1, 5, 6, -1, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, 126, 127, 128, 129, - 130, 131, 132, -1, -1, -1, -1, -1, 54, -1, + 5, 6, 79, 8, 9, -1, -1, -1, -1, -1, + 87, -1, -1, -1, -1, 20, -1, 94, 95, 96, + 97, -1, -1, 100, -1, -1, -1, -1, 105, -1, + -1, -1, -1, -1, -1, -1, 41, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, -1, -1, -1, 70, -1, 54, -1, -1, -1, - 160, 161, 162, 79, -1, 70, -1, -1, -1, -1, - -1, -1, 70, -1, 79, -1, -1, 93, 94, 95, - 96, 79, -1, 99, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, 99, 93, 94, 95, 96, 299, - -1, 99, 5, 6, -1, 8, -1, -1, -1, -1, - 126, 127, 128, 129, 130, 131, 132, -1, -1, -1, - 299, 126, 127, 128, 129, 130, 131, 132, 126, 127, - 128, 129, 130, 131, 132, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 160, 161, 162, -1, -1, -1, - -1, 54, -1, -1, -1, -1, -1, -1, 7, -1, - -1, -1, -1, -1, -1, 5, 6, 70, 8, -1, - -1, -1, -1, 22, 23, 24, 79, 26, 27, 28, - 29, -1, 31, 32, 33, -1, 35, 36, 37, 38, - 93, 94, 95, 96, -1, 44, 99, -1, -1, 299, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - -1, -1, -1, 126, 127, 128, 129, 130, 131, 132, - 70, -1, -1, -1, -1, -1, -1, -1, -1, 79, + 127, 128, 129, 130, 131, 132, 133, 18, 300, -1, + -1, -1, -1, -1, -1, 70, 5, 6, -1, 8, + -1, -1, 300, -1, 79, -1, -1, -1, -1, -1, + -1, 309, 87, -1, 161, 162, 163, -1, -1, 94, + 95, 96, 97, -1, -1, 100, -1, -1, -1, -1, + -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, + -1, -1, 127, 128, 129, 130, 131, 132, 133, -1, + -1, 70, -1, -1, -1, -1, -1, -1, 5, 6, + 79, 8, -1, -1, -1, -1, -1, -1, 87, -1, + -1, -1, -1, -1, -1, 94, 95, 96, 97, -1, + -1, 100, 22, 23, 24, -1, 26, 27, 28, 29, + -1, 31, 32, 33, 18, 35, 36, 37, 38, -1, + -1, -1, 42, 43, -1, -1, -1, 54, 127, 128, + 129, 130, 131, 132, 133, 156, 157, 158, 159, 160, + -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, + -1, -1, 79, -1, 219, -1, -1, 178, 179, -1, + 87, -1, -1, 300, -1, -1, -1, 94, 95, 96, + 97, -1, 309, 100, 195, 196, 197, 198, -1, -1, + 84, 202, 203, -1, 18, -1, -1, 208, -1, -1, + 211, -1, 112, -1, -1, -1, -1, 218, 219, -1, + 127, 128, 129, 130, 131, 132, 133, 41, -1, -1, + 5, 6, 7, 8, 9, -1, -1, -1, 13, -1, + 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, -1, -1, 301, -1, -1, -1, + -1, 306, -1, -1, -1, -1, 41, -1, -1, -1, + -1, -1, -1, 274, 275, -1, 277, 278, 279, 54, + 281, 282, 283, 284, 285, 286, 287, 288, 289, -1, + 65, 66, -1, -1, -1, 70, -1, 298, -1, -1, + 5, 6, -1, 8, 79, -1, -1, -1, 13, -1, + -1, -1, 87, -1, 198, -1, -1, -1, -1, 94, + 95, 96, 97, -1, -1, 100, 210, 306, 212, 213, + -1, 215, 216, -1, -1, -1, 41, -1, -1, 44, + -1, -1, 156, -1, -1, -1, 51, -1, -1, 54, + -1, -1, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, + 5, 6, -1, 8, 79, -1, -1, -1, 13, -1, + -1, -1, 87, -1, 198, -1, 161, 162, 163, 94, + 95, 96, 97, 300, 208, 100, -1, 211, -1, 283, + 284, 285, 286, 287, 288, 289, 41, -1, 292, 44, + -1, -1, -1, -1, 298, -1, 51, -1, -1, 54, + -1, -1, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, + 5, 6, -1, 8, 79, -1, -1, -1, 13, -1, + -1, -1, 87, -1, -1, -1, 161, 162, 163, 94, + 95, 96, 97, -1, -1, 100, -1, -1, -1, 283, + 284, 285, 286, 287, 288, 289, 41, -1, 292, -1, + -1, -1, -1, -1, 298, -1, 51, -1, -1, 54, + -1, -1, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, + -1, -1, 5, 6, 79, 8, -1, -1, -1, -1, + 13, 7, 87, -1, -1, 300, 161, 162, 163, 94, + 95, 96, 97, -1, -1, 100, 22, 23, 24, -1, + 26, 27, 28, 29, -1, 31, 32, 33, 41, 35, + 36, 37, 38, -1, -1, -1, -1, -1, 44, -1, + -1, 54, 127, 128, 129, 130, 131, 132, 133, -1, + -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, + -1, -1, 5, 6, -1, 8, 79, -1, -1, -1, + 13, -1, 297, -1, 87, 300, 161, 162, 163, -1, + -1, 94, 95, 96, 97, -1, -1, 100, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 95, 96, -1, -1, 99, - 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, - 32, 33, -1, 35, 36, 37, 38, -1, -1, -1, - 42, 43, -1, 299, -1, -1, 126, 127, 128, 129, - 130, 131, 132, -1, 299, -1, -1, 15, 16, 17, - -1, 299, 20, 21, 22, 23, 24, -1, 26, 27, + -1, 54, -1, -1, 127, 128, 129, 130, 131, 132, + 133, -1, -1, -1, -1, -1, -1, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, 300, -1, -1, 161, 162, + 163, 94, 95, 96, 97, -1, 16, 100, -1, -1, + 20, 21, 22, 23, 24, -1, 26, 27, 28, 29, + -1, 31, 32, -1, -1, 35, 36, 37, 38, -1, + -1, -1, 42, 43, 127, 128, 129, 130, 131, 132, + 133, 51, 18, 53, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, + 70, -1, -1, -1, -1, 300, -1, -1, 161, 162, + 163, 15, 16, 17, -1, -1, 20, 21, 22, 23, + 24, -1, 26, 27, 28, 29, -1, 31, 32, -1, + -1, 35, 36, 37, 38, 105, -1, 41, 42, 43, + -1, -1, 5, -1, -1, 8, -1, 51, -1, 53, + -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, + -1, -1, -1, -1, 68, 69, 70, 15, 16, 17, + -1, -1, 20, 21, 22, 23, 24, 300, 26, 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, - 38, -1, -1, 41, 42, 43, -1, -1, 5, -1, - -1, 8, -1, 51, -1, 53, -1, -1, -1, -1, - -1, 18, -1, -1, -1, -1, -1, -1, -1, 111, - 68, 69, 70, 15, 16, 17, -1, -1, 20, 21, - 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, - 32, -1, -1, 35, 36, 37, 38, 54, -1, -1, - 42, 43, -1, -1, -1, -1, 104, -1, -1, 51, - -1, 53, -1, 70, -1, -1, 299, -1, -1, -1, - -1, -1, 79, -1, -1, -1, 68, 69, 70, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 104, -1, -1, -1, -1, -1, -1, 126, - 127, 128, 129, 130, 131, 132, -1, -1, -1, 299, - -1, -1, -1, -1, -1, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, -1, -1, - -1, -1, 159, -1, -1, -1, 163, 164, 165, 166, - 167, 168, -1, -1, -1, -1, -1, -1, -1, -1, - 177, 178, -1, -1, -1, -1, -1, -1, -1, -1, - 5, -1, -1, 8, -1, -1, -1, 194, 195, 196, - 197, -1, -1, 18, -1, -1, -1, -1, 205, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, -1, 254, 255, -1, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - 308, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, 99, 282, 283, 284, 285, 286, - 287, 288, -1, 290, 291, -1, -1, -1, -1, -1, - 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 126, 127, 128, 129, 130, 131, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 308, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - -1, -1, -1, -1, 159, -1, -1, -1, 163, 164, - 165, 166, 167, 168, -1, -1, -1, -1, -1, -1, - -1, -1, 177, 178, 5, -1, -1, 8, -1, -1, - -1, 5, 6, -1, 8, -1, -1, 18, -1, 194, - 195, 196, 197, -1, -1, -1, -1, -1, -1, -1, - 205, -1, -1, -1, -1, 16, -1, -1, -1, 20, - 21, 22, 23, 24, 219, 26, 27, 28, 29, -1, - 31, 32, -1, 54, 35, 36, 37, 38, -1, -1, - 54, 42, 43, -1, -1, -1, -1, -1, -1, 70, - 51, -1, 53, -1, -1, -1, 70, -1, 79, 254, - 255, -1, -1, -1, -1, 79, -1, 68, 69, 70, - -1, -1, 93, 94, 95, 96, -1, -1, 99, 93, - 94, 95, 96, -1, -1, 99, -1, 282, 283, 284, - 285, 286, 287, 288, -1, 290, 291, -1, -1, -1, - -1, -1, 297, 104, -1, 126, 127, 128, 129, 130, - 131, 132, 126, 127, 128, 129, 130, 131, 132, -1, - -1, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, -1, -1, -1, -1, 159, -1, - -1, -1, 163, 164, 165, 166, 167, 168, -1, -1, - -1, -1, -1, -1, -1, -1, 177, 178, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 194, 195, 196, 197, -1, -1, -1, - -1, -1, -1, -1, 205, -1, -1, -1, -1, 16, - -1, -1, -1, 20, 21, 22, 23, 24, 219, 26, - 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, - 37, 38, 39, -1, -1, 42, 43, -1, -1, -1, - -1, -1, -1, -1, 51, -1, 53, -1, -1, -1, - -1, -1, -1, 254, 255, -1, -1, -1, -1, -1, - -1, 68, 69, 70, -1, 72, -1, 74, 75, 76, - 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 282, 283, 284, 285, 286, 287, 288, -1, 290, - 291, -1, -1, -1, -1, -1, 297, 104, -1, -1, - -1, 295, -1, -1, -1, 112, 113, 114, 115, -1, - -1, 118, -1, -1, -1, 122, 123, 124, 299, 18, - -1, -1, -1, -1, 16, -1, -1, 308, 20, 21, - 22, 23, 24, -1, 26, 27, 28, 29, -1, 31, - 32, -1, -1, 35, 36, 37, 38, -1, -1, -1, - 42, 43, -1, -1, -1, -1, -1, -1, -1, 51, - -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 68, 69, 70, 16, - -1, -1, -1, 20, 21, 22, 23, 24, -1, 26, - 27, 28, 29, -1, 31, 32, -1, -1, 35, 36, - 37, 38, -1, -1, -1, 42, 43, -1, -1, -1, - -1, -1, 104, -1, 51, -1, 53, -1, -1, 226, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 68, 69, 70, -1, -1, 21, 22, -1, 24, - 25, 26, 27, 28, 29, -1, 31, 32, -1, 34, - 35, 36, 37, 38, -1, -1, 155, 156, 157, 158, - 159, -1, -1, -1, -1, -1, -1, 104, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 177, 178, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 194, 195, 196, 197, -1, - -1, 308, 201, 202, -1, -1, 5, 6, 207, 8, - -1, 210, -1, -1, -1, -1, -1, -1, 217, 218, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, 24, -1, 26, 27, 28, 29, -1, - 31, 32, 33, -1, 35, 36, 37, 38, -1, -1, - 18, 42, 43, -1, -1, 54, -1, -1, -1, -1, + 38, 54, -1, -1, 42, 43, -1, -1, -1, -1, + -1, 105, -1, 51, -1, 53, -1, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + 68, 69, 70, -1, 87, -1, -1, -1, -1, -1, + -1, 94, 95, 96, 97, -1, -1, 100, 174, -1, + 176, 177, -1, -1, -1, -1, -1, 300, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 105, -1, 195, + 196, 197, 198, -1, 127, 128, 129, 130, 131, 132, + 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, -1, -1, -1, -1, 160, -1, -1, + -1, 164, 165, 166, 167, 168, 169, -1, -1, -1, + -1, -1, -1, -1, -1, 178, 179, -1, -1, -1, + -1, -1, -1, -1, 5, -1, -1, 8, -1, -1, + 300, -1, 195, 196, 197, 198, -1, 18, -1, 309, + -1, -1, -1, 206, -1, -1, -1, 283, 284, 285, + 286, 287, 288, 289, -1, -1, 292, 220, -1, -1, + -1, -1, 298, -1, 16, -1, -1, -1, -1, -1, + 22, 23, 24, 54, 26, 27, 28, 29, -1, 31, + 32, -1, -1, 35, 36, 37, 38, -1, -1, 70, + 42, 43, 255, 256, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, -1, 309, 87, -1, -1, -1, + -1, -1, -1, 94, 95, 96, 97, -1, -1, 100, + 283, 284, 285, 286, 287, 288, 289, -1, 291, 292, + -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, + 92, -1, -1, -1, -1, -1, 127, 128, 129, 130, + 131, 132, 133, -1, -1, -1, -1, -1, -1, -1, + 112, 309, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, -1, -1, -1, -1, 160, + -1, -1, -1, 164, 165, 166, 167, 168, 169, -1, + -1, -1, -1, -1, -1, -1, 5, 178, 179, 8, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + -1, -1, -1, -1, 195, 196, 197, 198, -1, -1, + -1, -1, 22, 23, 24, 206, 26, 27, 28, 29, + -1, 31, 32, 33, -1, 35, 36, 37, 38, 220, + -1, -1, 42, 43, -1, 54, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 70, -1, -1, -1, -1, -1, -1, -1, -1, + 79, -1, -1, -1, 255, 256, -1, -1, 87, -1, + -1, -1, -1, -1, -1, 94, 95, 96, 97, -1, + -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 283, 284, 285, 286, 287, 288, 289, -1, + 291, 292, 112, -1, -1, -1, -1, 298, 127, 128, + 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, -1, -1, -1, + -1, 160, -1, -1, -1, 164, 165, 166, 167, 168, + 169, -1, -1, -1, -1, -1, -1, -1, -1, 178, + 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 195, 196, 197, 198, + -1, -1, -1, -1, -1, -1, -1, 206, -1, -1, + -1, -1, 16, -1, -1, -1, 20, 21, 22, 23, + 24, 220, 26, 27, 28, 29, -1, 31, 32, -1, + -1, 35, 36, 37, 38, 39, -1, -1, 42, 43, + -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, + -1, -1, -1, -1, -1, -1, 255, 256, -1, -1, + -1, -1, -1, -1, 68, 69, 70, -1, 72, -1, + 74, 75, 76, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 283, 284, 285, 286, 287, 288, + 289, -1, 291, 292, -1, -1, -1, -1, -1, 298, + -1, 105, -1, -1, -1, -1, -1, 297, -1, 113, + 114, 115, 116, 18, -1, 119, -1, -1, 16, 123, + 124, 125, 20, 21, 22, 23, 24, -1, 26, 27, + 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, + 38, -1, -1, -1, 42, 43, -1, -1, -1, -1, + -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, 5, 273, 274, 8, 276, 277, 278, - 79, 280, 281, 282, 283, 284, 285, 286, 287, 288, - -1, -1, 291, -1, 93, 94, 95, 96, 297, 67, - 99, -1, 18, -1, -1, -1, -1, 299, -1, -1, - -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, - 111, -1, 54, -1, -1, -1, -1, 126, 127, 128, - 129, 130, 131, 132, -1, -1, -1, -1, 70, -1, - -1, -1, -1, -1, -1, 230, 231, 79, 233, 234, - 235, 67, 237, 238, -1, -1, 241, 242, -1, 244, - -1, 93, 94, 95, 96, -1, -1, 99, -1, -1, - -1, 308, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 155, -1, 157, - 158, 159, -1, -1, 126, 127, 128, 129, 130, 131, - 132, 169, -1, -1, -1, -1, 174, -1, -1, 177, - 178, -1, -1, -1, -1, -1, -1, 216, -1, -1, - 305, -1, -1, -1, -1, -1, 194, 195, 196, 197, - -1, 199, 200, -1, -1, -1, -1, -1, -1, 155, - -1, 157, 158, 159, -1, -1, -1, -1, -1, -1, - -1, 219, -1, 169, -1, -1, -1, -1, 174, -1, - -1, 177, 178, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 194, 195, - 196, 197, -1, 199, 200, -1, 254, 255, -1, -1, - -1, 282, 283, 284, 285, 286, 287, 288, -1, -1, - -1, -1, -1, 219, -1, -1, 297, -1, -1, -1, - -1, -1, -1, -1, 282, 283, 284, 285, 286, 287, - 288, -1, -1, 291, -1, -1, -1, -1, -1, 297, - -1, -1, -1, -1, -1, 16, -1, -1, 254, 255, + 68, 69, 70, 16, -1, -1, -1, 20, 21, 22, + 23, 24, -1, 26, 27, 28, 29, -1, 31, 32, + -1, -1, 35, 36, 37, 38, -1, -1, -1, 42, + 43, -1, -1, -1, -1, -1, -1, 105, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 227, -1, 68, 69, 70, -1, -1, 21, 22, -1, 24, 25, 26, 27, 28, 29, -1, 31, 32, -1, 34, 35, 36, 37, 38, -1, -1, - -1, 5, 6, -1, 8, -1, 282, 283, 284, 285, - 286, 287, 288, -1, 16, 291, -1, -1, -1, 21, - 22, 297, 24, 25, 26, 27, 28, 29, -1, 31, - 32, -1, 34, 35, 36, 37, 38, -1, -1, 80, - -1, 82, -1, -1, -1, -1, 87, -1, -1, -1, - 54, -1, -1, -1, -1, 5, 6, -1, 8, -1, - -1, -1, -1, 104, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, 80, -1, - 82, -1, -1, -1, -1, 87, -1, -1, -1, 93, - 94, 95, 96, -1, -1, 99, 137, 101, 102, 103, - -1, -1, 104, -1, 54, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, -1, 126, 127, 128, 129, 130, 131, 132, 79, - -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 95, 96, -1, -1, 99, + -1, 156, 157, 158, 159, 160, -1, -1, -1, -1, + -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 178, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 195, 196, 197, 198, -1, -1, -1, 202, 203, -1, + -1, -1, -1, 208, -1, 309, 211, -1, -1, -1, + -1, -1, -1, 218, 219, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, 24, -1, + 26, 27, 28, 29, -1, 31, 32, 33, -1, 35, + 36, 37, 38, -1, -1, 18, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 126, 127, 128, 129, - 130, 131, 132, -1, -1, -1, 227, -1, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, -1, -1, -1, 249, -1, - 5, 6, -1, 8, -1, -1, 220, 258, 222, 223, - 224, 225, -1, -1, -1, 227, -1, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 39, -1, -1, 249, -1, 290, - -1, -1, -1, -1, -1, -1, 258, -1, 208, 54, + -1, -1, -1, -1, -1, -1, -1, -1, 5, 274, + 275, 8, 277, 278, 279, -1, 281, 282, 283, 284, + 285, 286, 287, 288, 289, -1, -1, 292, -1, -1, + -1, -1, -1, 298, 67, -1, -1, 18, -1, -1, + -1, -1, 300, -1, -1, -1, -1, -1, -1, -1, + -1, 309, -1, -1, -1, -1, 112, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 68, -1, 70, -1, 72, -1, -1, - 75, 76, -1, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, -1, 93, 94, - 95, 96, -1, 98, 99, 5, 6, 102, 8, -1, - -1, -1, -1, -1, 109, 5, 6, -1, 8, -1, - -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, - -1, 126, 127, 128, 129, 130, 131, 132, -1, -1, + -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, + 231, 232, 79, 234, 235, 236, 67, 238, 239, -1, + 87, 242, 243, -1, 245, -1, -1, 94, 95, 96, + 97, -1, -1, 100, -1, -1, 309, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, -1, 156, -1, 158, 159, 160, -1, -1, + 127, 128, 129, 130, 131, 132, 133, 170, -1, -1, + -1, -1, 175, -1, -1, 178, 179, -1, -1, -1, + -1, -1, -1, -1, -1, 306, -1, -1, -1, -1, + -1, -1, 195, 196, 197, 198, -1, 200, 201, -1, + -1, -1, -1, -1, -1, 156, -1, 158, 159, 160, + -1, -1, -1, -1, -1, -1, -1, 220, -1, 170, + -1, -1, -1, -1, 175, -1, -1, 178, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, 5, - 6, -1, 8, -1, 54, -1, -1, -1, -1, -1, - 70, -1, -1, 73, -1, 75, 76, -1, -1, 79, - 70, -1, 82, -1, -1, 75, 76, -1, -1, 79, - -1, -1, -1, 93, 94, 95, 96, -1, -1, 99, - -1, -1, -1, 93, 94, 95, 96, -1, 54, 99, - -1, -1, -1, 5, 6, -1, 8, 9, -1, -1, - -1, -1, -1, -1, 70, -1, 126, 127, 128, 129, - 130, 131, 132, 79, -1, -1, 126, 127, 128, 129, - 130, 131, 132, -1, -1, -1, -1, 93, 94, 95, - 96, -1, -1, 99, -1, -1, 5, 6, -1, 8, - -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 120, 121, -1, -1, 70, -1, - 126, 127, 128, 129, 130, 131, 132, 79, -1, -1, + -1, -1, -1, -1, 195, 196, 197, 198, -1, 200, + 201, -1, 255, 256, -1, -1, -1, 283, 284, 285, + 286, 287, 288, 289, -1, -1, -1, -1, -1, 220, + -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, + 283, 284, 285, 286, 287, 288, 289, -1, -1, 292, + -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, + -1, 16, -1, -1, 255, 256, 21, 22, -1, 24, + 25, 26, 27, 28, 29, -1, 31, 32, -1, 34, + 35, 36, 37, 38, -1, -1, -1, 5, 6, -1, + 8, -1, 283, 284, 285, 286, 287, 288, 289, -1, + 16, 292, -1, -1, -1, 21, 22, 298, 24, 25, + 26, 27, 28, 29, -1, 31, 32, -1, 34, 35, + 36, 37, 38, -1, -1, 80, -1, 82, -1, -1, + -1, -1, -1, 88, -1, -1, 54, -1, -1, -1, + -1, -1, 5, 6, -1, 8, -1, -1, -1, -1, + 105, -1, 70, -1, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, 80, -1, 82, -1, -1, 87, + -1, -1, 88, -1, -1, -1, 94, 95, 96, 97, + -1, -1, 100, 138, 102, 103, 104, -1, -1, 105, + -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, -1, 127, + 128, 129, 130, 131, 132, 133, 79, -1, -1, -1, + -1, -1, 138, -1, 87, -1, -1, -1, -1, -1, + -1, 94, 95, 96, 97, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 94, 95, 96, 54, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, 126, 127, 128, 129, 130, 131, - 132, -1, -1, -1, 93, 94, 95, 96, 16, -1, - 99, -1, -1, -1, 22, 23, 24, -1, 26, 27, - 28, 29, -1, 31, 32, -1, -1, 35, 36, 37, - 38, -1, -1, -1, 42, 43, -1, 126, 127, 128, - 129, 130, 131, 132, -1, -1, -1, -1, -1, 39, - 40, -1, -1, -1, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 127, 128, 129, 130, 131, 132, + 133, -1, -1, 228, -1, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, -1, 5, 6, 250, 8, -1, -1, -1, + -1, -1, -1, 221, 259, 223, 224, 225, 226, -1, + -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, -1, -1, -1, 250, -1, 291, -1, -1, -1, + -1, -1, 54, 259, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 217, -1, -1, -1, 70, 5, + 6, -1, 8, -1, -1, -1, -1, 79, -1, -1, + -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, + -1, -1, 94, 95, 96, 97, -1, -1, 100, -1, + -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, + -1, -1, -1, -1, -1, 127, 128, 129, 130, 131, + 132, 133, 68, -1, 70, -1, 72, -1, -1, 75, + 76, -1, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, + 96, 97, -1, 99, 100, 5, 6, 103, 8, -1, + -1, -1, -1, -1, 110, -1, -1, -1, -1, 5, + 6, -1, 8, 119, -1, -1, -1, -1, -1, -1, + -1, 127, 128, 129, 130, 131, 132, 133, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 209, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, + 70, -1, -1, 73, -1, 75, 76, -1, -1, 79, + -1, -1, 82, -1, 70, 5, 6, 87, 8, 75, + 76, -1, -1, 79, 94, 95, 96, 97, -1, -1, + 100, 87, -1, -1, 5, 6, -1, 8, 94, 95, + 96, 97, -1, -1, 100, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 127, 128, 129, + 130, 131, 132, 133, 54, -1, -1, -1, -1, -1, + -1, 127, 128, 129, 130, 131, 132, 133, -1, -1, + 70, 5, 6, 54, 8, 9, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, -1, 70, + -1, -1, -1, -1, 94, 95, 96, 97, 79, -1, + 100, -1, -1, -1, -1, -1, 87, -1, -1, -1, + -1, -1, -1, 94, 95, 96, 97, -1, -1, 100, + 54, 121, 122, -1, -1, -1, -1, 127, 128, 129, + 130, 131, 132, 133, -1, 5, 70, -1, 8, 9, + -1, -1, -1, -1, -1, 79, 127, 128, 129, 130, + 131, 132, 133, 87, -1, -1, -1, -1, -1, -1, + 94, 95, 96, 97, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 71, 72, 91, 74, 75, 76, 77, 78, -1, - -1, -1, -1, 83, -1, -1, 86, -1, -1, -1, - -1, -1, 92, 111, -1, -1, -1, 97, -1, -1, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, - -1, -1, -1, -1, -1, 125 + -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, + -1, -1, -1, 127, 128, 129, 130, 131, 132, 133, + 70, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, -1, -1, + 100, -1, 39, 40, -1, -1, -1, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 127, 128, 129, + 130, 131, 132, 133, 71, 72, -1, 74, 75, 76, + 77, 78, -1, -1, -1, -1, 83, -1, -1, 86, + -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, 98, -1, -1, 101, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, + 117, 118, 119, 120, -1, -1, -1, -1, -1, 126 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 310, 0, 18, 155, 156, 157, 158, 159, 177, - 178, 194, 195, 196, 197, 201, 202, 207, 210, 217, - 218, 273, 274, 276, 277, 278, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 297, 311, 314, 320, 321, - 322, 323, 324, 325, 332, 334, 335, 337, 338, 339, - 340, 341, 342, 359, 377, 381, 403, 404, 459, 462, - 468, 469, 470, 474, 483, 486, 491, 216, 5, 6, - 8, 54, 70, 79, 93, 94, 95, 96, 99, 126, - 127, 128, 129, 130, 131, 132, 315, 316, 299, 363, - 64, 126, 405, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 467, 467, - 8, 14, 17, 40, 41, 45, 47, 54, 71, 86, - 295, 326, 364, 365, 366, 367, 298, 299, 275, 471, - 216, 475, 492, 216, 316, 9, 317, 317, 9, 10, - 318, 318, 13, 16, 20, 21, 22, 23, 24, 26, - 27, 28, 29, 31, 32, 35, 36, 37, 38, 42, - 43, 51, 53, 68, 69, 70, 104, 105, 160, 161, - 162, 299, 308, 316, 322, 323, 367, 368, 426, 449, - 450, 455, 456, 290, 316, 316, 316, 316, 7, 12, - 412, 413, 412, 412, 290, 343, 60, 344, 290, 382, - 388, 23, 26, 27, 28, 29, 31, 32, 33, 290, - 306, 406, 409, 411, 412, 317, 290, 290, 290, 290, - 488, 294, 317, 360, 315, 299, 367, 426, 449, 451, - 455, 7, 33, 298, 313, 293, 295, 295, 46, 48, - 49, 50, 365, 365, 327, 368, 451, 298, 70, 455, - 295, 317, 317, 208, 316, 475, 101, 102, 103, 126, - 220, 222, 223, 224, 225, 316, 75, 76, 316, 316, - 455, 26, 27, 28, 29, 449, 51, 449, 24, 25, - 34, 15, 17, 455, 218, 305, 316, 367, 308, 316, - 317, 137, 137, 137, 364, 365, 137, 307, 106, 107, - 108, 137, 299, 301, 305, 306, 312, 449, 313, 296, - 12, 296, 296, 310, 39, 68, 72, 75, 76, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 98, 102, 109, 118, 316, 451, 61, 345, 346, - 39, 72, 74, 75, 76, 77, 78, 83, 92, 97, - 100, 112, 113, 114, 115, 116, 117, 118, 119, 125, - 365, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 163, 164, 165, 166, 167, 168, - 205, 219, 254, 255, 290, 291, 314, 315, 321, 332, - 387, 389, 390, 391, 392, 394, 395, 403, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 459, 469, 305, 295, 299, 408, 295, - 408, 295, 408, 295, 408, 295, 408, 295, 408, 295, - 407, 409, 295, 412, 296, 7, 8, 293, 304, 476, - 484, 489, 493, 73, 75, 76, 82, 316, 316, 300, - 39, 72, 74, 75, 76, 77, 112, 113, 114, 115, - 118, 122, 123, 124, 226, 455, 298, 218, 316, 365, - 295, 298, 295, 290, 295, 292, 8, 317, 317, 296, - 290, 295, 313, 120, 121, 299, 316, 384, 451, 300, - 167, 472, 316, 221, 137, 449, 25, 316, 451, 316, - 300, 300, 300, 316, 317, 316, 316, 316, 455, 316, - 316, 295, 295, 316, 20, 300, 317, 457, 458, 444, - 445, 455, 291, 312, 291, 295, 75, 76, 77, 112, - 113, 114, 301, 350, 347, 451, 67, 155, 169, 174, - 199, 200, 219, 254, 255, 291, 314, 321, 332, 342, - 358, 359, 369, 373, 381, 403, 459, 469, 487, 295, - 295, 385, 317, 317, 317, 299, 111, 289, 299, 104, - 451, 304, 198, 295, 388, 55, 57, 58, 59, 393, - 396, 397, 398, 399, 400, 401, 315, 317, 390, 315, - 317, 317, 318, 11, 31, 32, 295, 318, 319, 315, - 317, 364, 15, 17, 367, 455, 451, 87, 313, 411, - 365, 327, 295, 412, 295, 317, 317, 317, 317, 318, - 319, 319, 291, 293, 315, 296, 317, 317, 209, 211, - 214, 215, 291, 321, 332, 459, 477, 479, 480, 482, - 84, 209, 212, 291, 473, 479, 481, 485, 41, 155, - 207, 210, 291, 321, 332, 490, 207, 210, 291, 321, - 332, 494, 75, 76, 77, 112, 113, 114, 295, 295, - 316, 316, 300, 455, 313, 463, 464, 290, 51, 451, - 460, 461, 7, 293, 296, 296, 326, 328, 329, 301, - 357, 443, 19, 336, 473, 137, 316, 19, 300, 450, - 450, 450, 305, 451, 451, 20, 293, 300, 302, 293, - 317, 39, 51, 52, 69, 120, 292, 303, 351, 352, - 353, 293, 111, 370, 374, 317, 317, 488, 111, 289, - 104, 451, 290, 290, 290, 388, 290, 317, 313, 383, - 299, 455, 304, 317, 299, 316, 299, 316, 317, 365, - 19, 295, 20, 385, 446, 447, 448, 291, 451, 393, - 56, 390, 402, 315, 317, 390, 402, 402, 402, 62, - 62, 295, 295, 316, 451, 295, 412, 455, 315, 317, - 442, 296, 313, 296, 300, 296, 296, 296, 296, 296, - 407, 296, 304, 8, 293, 213, 298, 305, 317, 478, - 298, 313, 412, 412, 298, 298, 412, 412, 295, 216, - 317, 316, 216, 316, 216, 317, 16, 21, 22, 24, - 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, - 37, 38, 80, 82, 87, 104, 137, 227, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 249, 258, 290, 379, 380, - 452, 63, 361, 300, 298, 296, 293, 328, 8, 298, - 291, 293, 8, 298, 291, 22, 23, 24, 26, 27, - 28, 29, 31, 32, 35, 36, 37, 38, 42, 43, - 111, 321, 330, 410, 411, 415, 299, 444, 295, 295, - 316, 384, 28, 29, 63, 203, 204, 206, 412, 316, - 316, 450, 295, 296, 296, 317, 458, 455, 296, 295, - 352, 295, 316, 355, 302, 451, 451, 72, 118, 316, - 451, 72, 118, 365, 316, 299, 316, 299, 316, 365, - 19, 346, 371, 375, 291, 489, 296, 137, 383, 39, - 46, 48, 49, 50, 87, 88, 89, 134, 135, 136, - 138, 141, 296, 251, 252, 253, 317, 226, 378, 317, - 300, 317, 317, 293, 300, 455, 384, 446, 455, 296, - 293, 315, 317, 315, 317, 317, 318, 19, 313, 296, - 295, 293, 293, 296, 296, 408, 408, 408, 408, 408, - 408, 317, 317, 317, 295, 304, 295, 296, 296, 295, - 295, 296, 296, 317, 450, 316, 63, 316, 296, 25, - 26, 27, 28, 29, 295, 453, 243, 235, 247, 295, - 228, 248, 22, 453, 453, 21, 22, 24, 25, 26, - 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, - 230, 231, 233, 234, 235, 237, 238, 241, 242, 244, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 305, 454, 296, 413, 299, - 305, 315, 298, 362, 28, 65, 66, 313, 317, 449, - 465, 466, 463, 291, 298, 290, 460, 290, 295, 313, - 295, 299, 295, 299, 26, 27, 28, 29, 295, 299, - 295, 299, 295, 299, 295, 299, 295, 299, 295, 299, - 295, 299, 295, 299, 295, 299, 295, 299, 295, 299, - 295, 299, 295, 299, 105, 110, 321, 331, 412, 317, - 302, 446, 446, 357, 443, 315, 296, 446, 317, 348, - 349, 451, 293, 354, 316, 197, 322, 316, 455, 317, - 317, 293, 455, 384, 291, 170, 171, 172, 173, 291, - 314, 321, 332, 372, 469, 173, 175, 176, 291, 314, - 321, 332, 376, 469, 291, 313, 296, 295, 304, 304, - 300, 300, 300, 300, 295, 384, 137, 300, 300, 451, - 362, 451, 296, 378, 448, 62, 62, 296, 296, 316, - 296, 446, 442, 442, 8, 293, 8, 478, 296, 317, - 250, 313, 299, 299, 25, 26, 27, 28, 29, 272, - 293, 299, 306, 291, 292, 300, 317, 22, 23, 24, + 0, 311, 0, 18, 156, 157, 158, 159, 160, 178, + 179, 195, 196, 197, 198, 202, 203, 208, 211, 218, + 219, 274, 275, 277, 278, 279, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 298, 312, 315, 321, 322, + 323, 324, 325, 326, 333, 335, 336, 338, 339, 340, + 341, 342, 343, 360, 378, 382, 404, 405, 460, 463, + 469, 470, 471, 475, 484, 487, 492, 217, 5, 6, + 8, 54, 70, 79, 87, 94, 95, 96, 97, 100, + 127, 128, 129, 130, 131, 132, 133, 316, 317, 300, + 364, 64, 127, 406, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 468, + 468, 8, 14, 17, 40, 41, 45, 47, 54, 71, + 86, 296, 327, 365, 366, 367, 368, 299, 300, 276, + 472, 217, 476, 493, 217, 317, 9, 318, 318, 9, + 10, 319, 319, 13, 16, 20, 21, 22, 23, 24, + 26, 27, 28, 29, 31, 32, 35, 36, 37, 38, + 42, 43, 51, 53, 68, 69, 70, 105, 106, 161, + 162, 163, 300, 309, 317, 323, 324, 368, 369, 427, + 450, 451, 456, 457, 291, 317, 317, 317, 317, 7, + 12, 413, 414, 413, 413, 291, 344, 60, 345, 291, + 383, 389, 23, 26, 27, 28, 29, 31, 32, 33, + 291, 307, 407, 410, 412, 413, 318, 291, 291, 291, + 291, 489, 295, 318, 361, 316, 300, 368, 427, 450, + 452, 456, 7, 33, 299, 314, 294, 296, 296, 46, + 48, 49, 50, 366, 366, 328, 369, 452, 299, 70, + 456, 296, 318, 318, 209, 317, 476, 102, 103, 104, + 127, 221, 223, 224, 225, 226, 317, 75, 76, 317, + 317, 456, 26, 27, 28, 29, 450, 51, 450, 24, + 25, 34, 15, 17, 456, 219, 306, 317, 368, 309, + 317, 318, 138, 138, 138, 365, 366, 138, 308, 107, + 108, 109, 138, 300, 302, 306, 307, 313, 450, 314, + 297, 12, 297, 297, 311, 39, 68, 72, 75, 76, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 99, 103, 110, 119, 317, 452, 61, + 346, 347, 39, 72, 74, 75, 76, 77, 78, 83, + 93, 98, 101, 113, 114, 115, 116, 117, 118, 119, + 120, 126, 366, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 164, 165, 166, 167, + 168, 169, 206, 220, 255, 256, 291, 292, 315, 316, + 322, 333, 388, 390, 391, 392, 393, 395, 396, 404, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 460, 470, 306, 296, 300, + 409, 296, 409, 296, 409, 296, 409, 296, 409, 296, + 409, 296, 408, 410, 296, 413, 297, 7, 8, 294, + 305, 477, 485, 490, 494, 73, 75, 76, 82, 317, + 317, 301, 39, 72, 74, 75, 76, 77, 113, 114, + 115, 116, 119, 123, 124, 125, 227, 456, 299, 219, + 317, 366, 296, 299, 296, 291, 296, 293, 8, 318, + 318, 297, 291, 296, 314, 121, 122, 300, 317, 385, + 452, 301, 168, 473, 317, 222, 138, 450, 25, 317, + 452, 317, 301, 301, 301, 317, 318, 317, 317, 317, + 456, 317, 317, 296, 296, 317, 20, 301, 318, 458, + 459, 445, 446, 456, 292, 313, 292, 296, 75, 76, + 77, 113, 114, 115, 302, 351, 348, 452, 67, 156, + 170, 175, 200, 201, 220, 255, 256, 292, 315, 322, + 333, 343, 359, 360, 370, 374, 382, 404, 460, 470, + 488, 296, 296, 386, 318, 318, 318, 300, 112, 290, + 300, 105, 452, 305, 199, 296, 389, 55, 57, 58, + 59, 394, 397, 398, 399, 400, 401, 402, 316, 318, + 391, 316, 318, 318, 319, 11, 31, 32, 296, 319, + 320, 316, 318, 365, 15, 17, 368, 456, 452, 88, + 314, 412, 366, 328, 296, 413, 296, 318, 318, 318, + 318, 319, 320, 320, 292, 294, 316, 297, 318, 318, + 210, 212, 215, 216, 292, 322, 333, 460, 478, 480, + 481, 483, 84, 210, 213, 292, 474, 480, 482, 486, + 41, 156, 208, 211, 292, 322, 333, 491, 208, 211, + 292, 322, 333, 495, 75, 76, 77, 113, 114, 115, + 296, 296, 317, 317, 301, 456, 314, 464, 465, 291, + 51, 452, 461, 462, 7, 294, 297, 297, 327, 329, + 330, 302, 358, 444, 19, 337, 474, 138, 317, 19, + 301, 451, 451, 451, 306, 452, 452, 20, 294, 301, + 303, 294, 318, 39, 51, 52, 69, 121, 293, 304, + 352, 353, 354, 294, 112, 371, 375, 318, 318, 489, + 112, 290, 105, 452, 291, 291, 291, 389, 291, 318, + 314, 384, 300, 456, 305, 318, 300, 317, 300, 317, + 318, 366, 19, 296, 20, 386, 447, 448, 449, 292, + 452, 394, 56, 391, 403, 316, 318, 391, 403, 403, + 403, 62, 62, 296, 296, 317, 452, 296, 413, 456, + 316, 318, 443, 297, 314, 297, 301, 297, 297, 297, + 297, 297, 408, 297, 305, 8, 294, 214, 299, 306, + 318, 479, 299, 314, 413, 413, 299, 299, 413, 413, + 296, 217, 318, 317, 217, 317, 217, 318, 16, 21, + 22, 24, 25, 26, 27, 28, 29, 31, 32, 34, + 35, 36, 37, 38, 80, 82, 88, 105, 138, 228, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 250, 259, 291, + 380, 381, 453, 63, 362, 301, 299, 297, 294, 329, + 8, 299, 292, 294, 8, 299, 292, 22, 23, 24, 26, 27, 28, 29, 31, 32, 35, 36, 37, 38, - 44, 313, 410, 414, 295, 295, 290, 330, 328, 465, - 317, 317, 317, 295, 299, 295, 299, 295, 299, 295, - 299, 317, 317, 317, 317, 317, 317, 318, 317, 317, - 319, 317, 318, 319, 317, 317, 317, 317, 317, 317, - 317, 318, 317, 415, 317, 8, 44, 317, 44, 51, - 449, 317, 42, 91, 111, 333, 456, 296, 300, 296, - 296, 295, 295, 472, 296, 296, 296, 293, 353, 354, - 316, 300, 300, 451, 451, 256, 364, 364, 364, 364, - 364, 364, 364, 383, 317, 139, 140, 139, 140, 379, - 350, 315, 293, 19, 315, 315, 317, 296, 317, 304, - 298, 293, 317, 317, 313, 300, 317, 292, 300, 26, - 27, 28, 29, 317, 26, 27, 28, 317, 330, 291, - 291, 296, 300, 296, 300, 317, 317, 317, 317, 317, - 317, 318, 317, 296, 300, 296, 300, 296, 300, 296, - 300, 296, 296, 300, 296, 296, 300, 296, 300, 296, - 300, 296, 300, 296, 300, 296, 300, 296, 296, 300, - 296, 8, 296, 300, 51, 449, 299, 316, 302, 446, - 446, 451, 295, 293, 19, 365, 296, 296, 296, 295, - 451, 384, 8, 478, 317, 313, 300, 300, 300, 317, - 296, 304, 304, 304, 296, 291, 295, 295, 296, 300, - 296, 300, 296, 300, 296, 300, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 296, 295, - 8, 300, 298, 296, 296, 446, 451, 384, 455, 446, - 301, 356, 357, 304, 296, 293, 296, 452, 300, 317, - 317, 317, 422, 420, 295, 295, 295, 295, 421, 420, - 419, 418, 416, 417, 421, 420, 419, 418, 425, 423, - 424, 415, 296, 356, 451, 296, 295, 478, 313, 296, - 296, 296, 296, 465, 296, 317, 421, 420, 419, 418, - 296, 317, 296, 296, 317, 296, 318, 296, 317, 319, - 296, 318, 319, 296, 296, 296, 296, 296, 415, 8, - 44, 296, 44, 51, 296, 449, 362, 295, 19, 386, - 446, 293, 296, 296, 296, 296, 8, 446, 384, 39, - 54, 70, 79, 93, 94, 95, 96, 99, 126, 127, - 128, 129, 130, 131, 132, 290, 296, 313, 296, 295, - 295, 296, 256, 446, 317, 104, 296, 296, 365, 455, - 451, 19, 384, 356, 295, 446, 296 + 42, 43, 112, 322, 331, 411, 412, 416, 300, 445, + 296, 296, 317, 385, 28, 29, 63, 204, 205, 207, + 413, 317, 317, 451, 296, 297, 297, 318, 459, 456, + 297, 296, 353, 296, 317, 356, 303, 452, 452, 72, + 119, 317, 452, 72, 119, 366, 317, 300, 317, 300, + 317, 366, 19, 347, 372, 376, 292, 490, 297, 138, + 384, 39, 46, 48, 49, 50, 88, 89, 90, 135, + 136, 137, 139, 142, 297, 252, 253, 254, 318, 227, + 379, 318, 301, 318, 318, 294, 301, 456, 385, 447, + 456, 297, 294, 316, 318, 316, 318, 318, 319, 19, + 314, 297, 296, 294, 294, 297, 297, 409, 409, 409, + 409, 409, 409, 318, 318, 318, 296, 305, 296, 297, + 297, 296, 296, 297, 297, 318, 451, 317, 63, 317, + 297, 25, 26, 27, 28, 29, 296, 454, 244, 236, + 248, 296, 229, 249, 22, 454, 454, 21, 22, 24, + 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, + 37, 38, 231, 232, 234, 235, 236, 238, 239, 242, + 243, 245, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 306, 455, 297, + 414, 300, 306, 316, 299, 363, 28, 65, 66, 314, + 318, 450, 466, 467, 464, 292, 299, 291, 461, 291, + 296, 314, 296, 300, 296, 300, 26, 27, 28, 29, + 296, 300, 296, 300, 296, 300, 296, 300, 296, 300, + 296, 300, 296, 300, 296, 300, 296, 300, 296, 300, + 296, 300, 296, 300, 296, 300, 106, 111, 322, 332, + 413, 318, 303, 447, 447, 358, 444, 316, 297, 447, + 318, 349, 350, 452, 294, 355, 317, 198, 323, 317, + 456, 318, 318, 294, 456, 385, 292, 171, 172, 173, + 174, 292, 315, 322, 333, 373, 470, 174, 176, 177, + 292, 315, 322, 333, 377, 470, 292, 314, 297, 296, + 305, 305, 301, 301, 301, 301, 296, 385, 138, 301, + 301, 452, 363, 452, 297, 379, 449, 62, 62, 297, + 297, 317, 297, 447, 443, 443, 8, 294, 8, 479, + 297, 318, 251, 314, 300, 300, 25, 26, 27, 28, + 29, 273, 294, 300, 307, 292, 293, 301, 318, 22, + 23, 24, 26, 27, 28, 29, 31, 32, 35, 36, + 37, 38, 44, 314, 411, 415, 296, 296, 291, 331, + 329, 466, 318, 318, 318, 296, 300, 296, 300, 296, + 300, 296, 300, 318, 318, 318, 318, 318, 318, 319, + 318, 318, 320, 318, 319, 320, 318, 318, 318, 318, + 318, 318, 318, 319, 318, 416, 318, 8, 44, 318, + 44, 51, 450, 318, 42, 92, 112, 334, 457, 297, + 301, 297, 297, 296, 296, 473, 297, 297, 297, 294, + 354, 355, 317, 301, 301, 452, 452, 257, 365, 365, + 365, 365, 365, 365, 365, 384, 318, 140, 141, 140, + 141, 380, 351, 316, 294, 19, 316, 316, 318, 297, + 318, 305, 299, 294, 318, 318, 314, 301, 318, 293, + 301, 26, 27, 28, 29, 318, 26, 27, 28, 318, + 331, 292, 292, 297, 301, 297, 301, 318, 318, 318, + 318, 318, 318, 319, 318, 297, 301, 297, 301, 297, + 301, 297, 301, 297, 297, 301, 297, 297, 301, 297, + 301, 297, 301, 297, 301, 297, 301, 297, 301, 297, + 297, 301, 297, 8, 297, 301, 51, 450, 300, 317, + 303, 447, 447, 452, 296, 294, 19, 366, 297, 297, + 297, 296, 452, 385, 8, 479, 318, 314, 301, 301, + 301, 318, 297, 305, 305, 305, 297, 292, 296, 296, + 297, 301, 297, 301, 297, 301, 297, 301, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 297, 296, 8, 301, 299, 297, 297, 447, 452, 385, + 456, 447, 302, 357, 358, 305, 297, 294, 297, 453, + 301, 318, 318, 318, 423, 421, 296, 296, 296, 296, + 422, 421, 420, 419, 417, 418, 422, 421, 420, 419, + 426, 424, 425, 416, 297, 357, 452, 297, 296, 479, + 314, 297, 297, 297, 297, 466, 297, 318, 422, 421, + 420, 419, 297, 318, 297, 297, 318, 297, 319, 297, + 318, 320, 297, 319, 320, 297, 297, 297, 297, 297, + 416, 8, 44, 297, 44, 51, 297, 450, 363, 296, + 19, 387, 447, 294, 297, 297, 297, 297, 8, 447, + 385, 39, 54, 70, 79, 94, 95, 96, 97, 100, + 127, 128, 129, 130, 131, 132, 133, 291, 297, 314, + 297, 296, 296, 297, 257, 447, 318, 105, 297, 297, + 366, 456, 452, 19, 385, 357, 296, 447, 297 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 309, 310, 310, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 312, 312, 313, 313, 314, 314, 314, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 316, 316, 316, 317, 318, 318, - 319, 319, 319, 320, 320, 320, 320, 320, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 322, 322, 322, - 322, 323, 323, 323, 323, 324, 325, 326, 327, 327, - 328, 329, 329, 329, 330, 330, 330, 331, 331, 332, - 332, 332, 333, 333, 333, 333, 333, 333, 334, 334, - 334, 335, 336, 336, 336, 336, 336, 336, 337, 338, - 339, 340, 341, 342, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 344, 344, 345, 345, 346, 346, 347, 347, 348, - 348, 349, 349, 350, 350, 351, 351, 351, 351, 351, - 351, 351, 352, 352, 353, 353, 354, 354, 355, 356, - 356, 357, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 358, 358, 359, 360, 360, 360, 360, 360, 360, - 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, - 361, 361, 362, 362, 363, 363, 364, 364, 364, 364, - 364, 364, 364, 365, 365, 365, 365, 366, 366, 366, - 366, 366, 366, 366, 366, 367, 368, 368, 368, 368, - 368, 368, 369, 369, 370, 370, 370, 371, 371, 372, - 372, 372, 372, 372, 372, 372, 372, 373, 374, 374, - 374, 375, 375, 376, 376, 376, 376, 376, 376, 376, - 377, 378, 378, 379, 379, 380, 381, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 0, 310, 311, 311, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 314, 314, 315, 315, 315, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 317, 317, 317, 318, 319, + 319, 320, 320, 320, 321, 321, 321, 321, 321, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 323, 323, + 323, 323, 324, 324, 324, 324, 325, 326, 327, 328, + 328, 329, 330, 330, 330, 331, 331, 331, 332, 332, + 333, 333, 333, 334, 334, 334, 334, 334, 334, 335, + 335, 335, 336, 337, 337, 337, 337, 337, 337, 338, + 339, 340, 341, 342, 343, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 345, 345, 346, 346, 347, 347, 348, + 348, 349, 349, 350, 350, 351, 351, 352, 352, 352, + 352, 352, 352, 352, 353, 353, 354, 354, 355, 355, + 356, 357, 357, 358, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 360, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 362, 362, 363, 363, 364, 364, 365, 365, + 365, 365, 365, 365, 365, 366, 366, 366, 366, 367, + 367, 367, 367, 367, 367, 367, 367, 368, 369, 369, + 369, 369, 369, 369, 370, 370, 371, 371, 371, 372, + 372, 373, 373, 373, 373, 373, 373, 373, 373, 374, + 375, 375, 375, 376, 376, 377, 377, 377, 377, 377, + 377, 377, 378, 379, 379, 380, 380, 381, 382, 383, + 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 384, 384, 384, 385, - 385, 385, 385, 385, 386, 386, 386, 386, 386, 386, - 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, - 386, 387, 388, 388, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 390, 391, 392, 393, 393, 394, 394, 394, 395, 396, - 396, 396, 396, 397, 397, 397, 398, 399, 400, 401, - 402, 402, 402, 403, 404, 404, 405, 405, 405, 406, - 406, 407, 407, 408, 408, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 383, 383, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, + 385, 386, 386, 386, 386, 386, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 388, 389, 389, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 391, 392, 393, 394, 394, 395, 395, 395, + 396, 397, 397, 397, 397, 398, 398, 398, 399, 400, + 401, 402, 403, 403, 403, 404, 405, 405, 406, 406, + 406, 407, 407, 408, 408, 409, 409, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 411, - 412, 412, 413, 413, 414, 414, 414, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 416, 416, 416, 417, 417, 417, 418, + 410, 410, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 412, 413, 413, 414, 414, 415, 415, 415, 416, + 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 416, 417, 417, 417, 418, 418, 418, 419, 419, 420, 420, 421, 421, 422, 422, 423, - 423, 423, 424, 424, 424, 424, 425, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 442, 442, 442, 442, - 442, 443, 443, 444, 444, 445, 445, 446, 446, 447, - 447, 448, 448, 448, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 450, 450, 451, 451, 451, 451, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 453, 453, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 455, 455, 455, 455, + 423, 424, 424, 424, 425, 425, 425, 425, 426, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 443, 443, + 443, 443, 443, 444, 444, 445, 445, 446, 446, 447, + 447, 448, 448, 449, 449, 449, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 451, 451, 452, 452, + 452, 452, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 453, 454, 454, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, + 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, + 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, + 455, 455, 455, 455, 455, 455, 455, 455, 456, 456, + 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, - 456, 456, 456, 456, 456, 456, 456, 456, 457, 457, - 458, 458, 458, 458, 458, 459, 459, 459, 459, 459, - 459, 460, 460, 460, 461, 461, 462, 462, 463, 463, - 464, 465, 465, 466, 466, 466, 466, 466, 466, 466, - 466, 467, 467, 467, 467, 467, 467, 467, 467, 467, - 467, 467, 467, 467, 467, 467, 468, 468, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 470, - 470, 471, 471, 472, 472, 473, 474, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 476, 476, 477, - 477, 477, 478, 478, 479, 479, 479, 479, 479, 479, - 480, 481, 482, 483, 483, 484, 484, 485, 485, 485, - 485, 486, 487, 488, 488, 488, 488, 488, 488, 488, - 488, 488, 488, 489, 489, 490, 490, 490, 490, 490, - 490, 490, 491, 491, 492, 492, 492, 493, 493, 494, - 494, 494, 494 + 456, 456, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 458, 458, 459, 459, 459, 459, 459, 460, 460, 460, + 460, 460, 460, 461, 461, 461, 462, 462, 463, 463, + 464, 464, 465, 466, 466, 467, 467, 467, 467, 467, + 467, 467, 467, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 469, 469, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 471, 471, 472, 472, 473, 473, 474, 475, 476, + 476, 476, 476, 476, 476, 476, 476, 476, 476, 477, + 477, 478, 478, 478, 479, 479, 480, 480, 480, 480, + 480, 480, 481, 482, 483, 484, 484, 485, 485, 486, + 486, 486, 486, 487, 488, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 490, 490, 491, 491, 491, + 491, 491, 491, 491, 492, 492, 493, 493, 493, 494, + 494, 495, 495, 495, 495 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -3351,88 +3373,88 @@ static const yytype_int8 yyr2[] = 2, 2, 3, 2, 2, 1, 1, 1, 4, 1, 0, 2, 1, 3, 2, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 2, 3, - 2, 2, 2, 1, 1, 2, 1, 2, 4, 6, - 3, 5, 7, 9, 3, 4, 7, 1, 1, 1, - 2, 0, 2, 2, 0, 6, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 1, 2, - 3, 7, 0, 2, 2, 2, 2, 2, 3, 3, - 2, 1, 4, 3, 0, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, + 1, 1, 4, 4, 4, 4, 4, 4, 4, 2, + 3, 2, 2, 2, 1, 1, 2, 1, 2, 4, + 6, 3, 5, 7, 9, 3, 4, 7, 1, 1, + 1, 2, 0, 2, 2, 0, 6, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 2, 3, 1, + 2, 3, 7, 0, 2, 2, 2, 2, 2, 3, + 3, 2, 1, 4, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 5, 0, 2, 0, 2, 0, 2, 3, 1, 0, - 1, 1, 3, 0, 3, 1, 1, 1, 1, 1, - 1, 4, 0, 2, 4, 3, 0, 2, 3, 0, - 1, 5, 3, 4, 4, 4, 1, 1, 1, 1, - 1, 2, 2, 4, 13, 22, 1, 1, 5, 3, - 7, 5, 4, 7, 0, 2, 2, 2, 2, 2, - 2, 2, 5, 2, 2, 2, 2, 2, 2, 5, - 0, 2, 0, 2, 0, 3, 9, 9, 7, 7, - 1, 1, 1, 2, 2, 1, 4, 0, 1, 1, - 2, 2, 2, 2, 1, 4, 2, 5, 3, 2, - 2, 1, 4, 3, 0, 2, 2, 0, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 9, 0, 2, - 2, 0, 2, 2, 2, 2, 1, 1, 1, 1, - 1, 0, 4, 1, 3, 1, 13, 0, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 5, 0, 2, 0, 2, 0, 2, 3, + 1, 0, 1, 1, 3, 0, 3, 1, 1, 1, + 1, 1, 1, 4, 0, 2, 4, 3, 0, 2, + 3, 0, 1, 5, 3, 4, 4, 4, 1, 1, + 1, 1, 1, 2, 2, 4, 13, 22, 1, 1, + 5, 3, 7, 5, 4, 7, 0, 2, 2, 2, + 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, + 2, 5, 0, 2, 0, 2, 0, 3, 9, 9, + 7, 7, 1, 1, 1, 2, 2, 1, 4, 0, + 1, 1, 2, 2, 2, 2, 1, 4, 2, 5, + 3, 2, 2, 1, 4, 3, 0, 2, 2, 0, + 2, 2, 2, 2, 2, 1, 1, 1, 1, 9, + 0, 2, 2, 0, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 0, 4, 1, 3, 1, 13, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 5, 8, 6, 5, - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4, 4, 4, 4, 5, 1, 1, 1, 0, - 4, 4, 4, 4, 0, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 5, 8, + 6, 5, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 4, 4, 4, 5, 1, 1, + 1, 0, 4, 4, 4, 4, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 5, 1, 0, 2, 2, 1, 2, 4, 5, 1, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 4, - 6, 4, 4, 11, 1, 5, 3, 7, 5, 5, - 3, 1, 2, 2, 1, 2, 4, 4, 1, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, - 1, 4, 4, 2, 4, 2, 0, 1, 1, 3, - 1, 3, 1, 0, 3, 5, 4, 3, 5, 5, - 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, - 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, - 5, 5, 4, 4, 4, 4, 4, 4, 3, 2, - 0, 1, 1, 2, 1, 1, 1, 1, 4, 4, - 5, 4, 4, 4, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, - 7, 7, 7, 0, 2, 2, 0, 2, 2, 0, + 2, 2, 5, 1, 0, 2, 2, 1, 2, 4, + 5, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 4, 6, 4, 4, 11, 1, 5, 3, 7, + 5, 5, 3, 1, 2, 2, 1, 2, 4, 4, + 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 1, 1, 1, 4, 4, 2, 4, 2, 0, 1, + 1, 3, 1, 3, 1, 0, 3, 5, 4, 3, + 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, + 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, + 3, 2, 0, 1, 1, 2, 1, 1, 1, 1, + 4, 4, 5, 4, 4, 4, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, + 7, 7, 7, 7, 7, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 2, 0, 2, 3, 2, 0, 2, 1, 1, + 2, 0, 2, 2, 0, 2, 3, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 5, 3, 2, 2, 2, 2, - 2, 5, 4, 6, 2, 4, 0, 3, 3, 1, - 1, 0, 3, 0, 1, 1, 3, 0, 1, 1, - 3, 1, 3, 4, 4, 4, 4, 5, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 3, 4, 1, - 0, 10, 6, 5, 6, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 1, 1, 1, 1, 2, 3, 4, 6, 5, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 2, 2, 4, 1, 2, 1, 2, 1, 2, 1, - 2, 1, 2, 1, 1, 0, 5, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 3, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 3, 2, - 3, 4, 2, 2, 2, 5, 5, 7, 4, 3, - 2, 3, 2, 1, 1, 2, 3, 2, 1, 2, + 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 5, 3, 2, 2, + 2, 2, 2, 5, 4, 6, 2, 4, 0, 3, + 3, 1, 1, 0, 3, 0, 1, 1, 3, 0, + 1, 1, 3, 1, 3, 4, 4, 4, 4, 5, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, + 4, 1, 0, 10, 6, 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, - 0, 1, 1, 3, 2, 6, 7, 3, 3, 3, - 6, 0, 1, 3, 5, 6, 4, 4, 1, 3, - 3, 1, 1, 1, 1, 4, 1, 6, 6, 6, - 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 5, 4, 7, 6, 7, 6, 9, 8, 3, 8, - 4, 0, 2, 0, 1, 3, 3, 0, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 0, 2, 3, - 1, 1, 1, 1, 3, 8, 2, 3, 1, 1, - 3, 3, 3, 4, 6, 0, 2, 3, 1, 3, - 1, 4, 3, 0, 2, 2, 2, 3, 3, 3, - 3, 3, 3, 0, 2, 2, 3, 3, 4, 2, - 1, 1, 3, 5, 0, 2, 2, 0, 2, 4, - 3, 1, 1 + 2, 2, 2, 1, 1, 1, 1, 2, 3, 4, + 6, 5, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 1, 2, 2, 4, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 2, 1, 1, 0, 5, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 3, 2, 3, 4, 2, 2, 2, 5, 5, 7, + 4, 3, 2, 3, 2, 1, 1, 2, 3, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 1, 3, 0, 1, 1, 3, 2, 6, 7, 3, + 3, 3, 6, 0, 1, 3, 5, 6, 4, 4, + 1, 3, 3, 1, 1, 1, 1, 4, 1, 6, + 6, 6, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 5, 4, 7, 6, 7, 6, 9, 8, + 3, 8, 4, 0, 2, 0, 1, 3, 3, 0, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 0, + 2, 3, 1, 1, 1, 1, 3, 8, 2, 3, + 1, 1, 3, 3, 3, 4, 6, 0, 2, 3, + 1, 3, 1, 4, 3, 0, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 0, 2, 2, 3, 3, + 4, 2, 1, 1, 3, 5, 0, 2, 2, 0, + 2, 4, 3, 1, 1 }; @@ -3896,1057 +3918,1069 @@ yyparse (void) switch (yyn) { case 4: /* decl: classHead '{' classDecls '}' */ -#line 193 "asmparse.y" +#line 193 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EndClass(); } -#line 3902 "prebuilt\\asmparse.cpp" +#line 3924 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 5: /* decl: nameSpaceHead '{' decls '}' */ -#line 194 "asmparse.y" +#line 194 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EndNameSpace(); } -#line 3908 "prebuilt\\asmparse.cpp" +#line 3930 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 6: /* decl: methodHead methodDecls '}' */ -#line 195 "asmparse.y" +#line 195 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurMethod->m_ulLines[1] ==0) { PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine; PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;} PASM->EndMethod(); } -#line 3917 "prebuilt\\asmparse.cpp" +#line 3939 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 13: /* decl: assemblyHead '{' assemblyDecls '}' */ -#line 205 "asmparse.y" +#line 205 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->EndAssembly(); } -#line 3923 "prebuilt\\asmparse.cpp" +#line 3945 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 14: /* decl: assemblyRefHead '{' assemblyRefDecls '}' */ -#line 206 "asmparse.y" +#line 206 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->EndAssembly(); } -#line 3929 "prebuilt\\asmparse.cpp" +#line 3951 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 15: /* decl: exptypeHead '{' exptypeDecls '}' */ -#line 207 "asmparse.y" +#line 207 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->EndComType(); } -#line 3935 "prebuilt\\asmparse.cpp" +#line 3957 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 16: /* decl: manifestResHead '{' manifestResDecls '}' */ -#line 208 "asmparse.y" +#line 208 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->EndManifestRes(); } -#line 3941 "prebuilt\\asmparse.cpp" +#line 3963 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 20: /* decl: _SUBSYSTEM int32 */ -#line 212 "asmparse.y" +#line 212 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_dwSubsystem = (yyvsp[0].int32); } -#line 3949 "prebuilt\\asmparse.cpp" +#line 3971 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 21: /* decl: _CORFLAGS int32 */ -#line 215 "asmparse.y" +#line 215 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_dwComImageFlags = (yyvsp[0].int32); } -#line 3955 "prebuilt\\asmparse.cpp" +#line 3977 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 22: /* decl: _FILE ALIGNMENT_ int32 */ -#line 216 "asmparse.y" +#line 216 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_dwFileAlignment = (yyvsp[0].int32); if(((yyvsp[0].int32) & ((yyvsp[0].int32) - 1))||((yyvsp[0].int32) < 0x200)||((yyvsp[0].int32) > 0x10000)) PASM->report->error("Invalid file alignment, must be power of 2 from 0x200 to 0x10000\n");} -#line 3963 "prebuilt\\asmparse.cpp" +#line 3985 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 23: /* decl: _IMAGEBASE int64 */ -#line 219 "asmparse.y" +#line 219 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_stBaseAddress = (ULONGLONG)(*((yyvsp[0].int64))); delete (yyvsp[0].int64); if(PASM->m_stBaseAddress & 0xFFFF) PASM->report->error("Invalid image base, must be 0x10000-aligned\n");} -#line 3971 "prebuilt\\asmparse.cpp" +#line 3993 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 24: /* decl: _STACKRESERVE int64 */ -#line 222 "asmparse.y" +#line 222 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_stSizeOfStackReserve = (size_t)(*((yyvsp[0].int64))); delete (yyvsp[0].int64); } -#line 3977 "prebuilt\\asmparse.cpp" +#line 3999 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 29: /* decl: _MSCORLIB */ -#line 227 "asmparse.y" +#line 227 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_fIsMscorlib = TRUE; } -#line 3983 "prebuilt\\asmparse.cpp" +#line 4005 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 32: /* compQstring: QSTRING */ -#line 234 "asmparse.y" +#line 234 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 3989 "prebuilt\\asmparse.cpp" +#line 4011 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 33: /* compQstring: compQstring '+' QSTRING */ -#line 235 "asmparse.y" +#line 235 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); } -#line 3995 "prebuilt\\asmparse.cpp" +#line 4017 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 34: /* languageDecl: _LANGUAGE SQSTRING */ -#line 238 "asmparse.y" +#line 238 ".\\src\\coreclr\\ilasm\\asmparse.y" { LPCSTRToGuid((yyvsp[0].string),&(PASM->m_guidLang)); } -#line 4001 "prebuilt\\asmparse.cpp" +#line 4023 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 35: /* languageDecl: _LANGUAGE SQSTRING ',' SQSTRING */ -#line 239 "asmparse.y" +#line 239 ".\\src\\coreclr\\ilasm\\asmparse.y" { LPCSTRToGuid((yyvsp[-2].string),&(PASM->m_guidLang)); LPCSTRToGuid((yyvsp[0].string),&(PASM->m_guidLangVendor));} -#line 4008 "prebuilt\\asmparse.cpp" +#line 4030 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 36: /* languageDecl: _LANGUAGE SQSTRING ',' SQSTRING ',' SQSTRING */ -#line 241 "asmparse.y" +#line 241 ".\\src\\coreclr\\ilasm\\asmparse.y" { LPCSTRToGuid((yyvsp[-4].string),&(PASM->m_guidLang)); LPCSTRToGuid((yyvsp[-2].string),&(PASM->m_guidLangVendor)); LPCSTRToGuid((yyvsp[-2].string),&(PASM->m_guidDoc));} -#line 4016 "prebuilt\\asmparse.cpp" +#line 4038 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 37: /* id: ID */ -#line 246 "asmparse.y" +#line 246 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 4022 "prebuilt\\asmparse.cpp" +#line 4044 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 38: /* id: NATIVE_ */ -#line 248 "asmparse.y" +#line 248 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("native"); } -#line 4028 "prebuilt\\asmparse.cpp" +#line 4050 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 39: /* id: CIL_ */ -#line 249 "asmparse.y" +#line 249 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("cil"); } -#line 4034 "prebuilt\\asmparse.cpp" +#line 4056 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 40: /* id: OPTIL_ */ -#line 250 "asmparse.y" +#line 250 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("optil"); } -#line 4040 "prebuilt\\asmparse.cpp" +#line 4062 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 41: /* id: MANAGED_ */ -#line 251 "asmparse.y" +#line 251 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("managed"); } -#line 4046 "prebuilt\\asmparse.cpp" +#line 4068 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 42: /* id: UNMANAGED_ */ -#line 252 "asmparse.y" +#line 252 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("unmanaged"); } -#line 4052 "prebuilt\\asmparse.cpp" +#line 4074 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 43: /* id: FORWARDREF_ */ -#line 253 "asmparse.y" +#line 253 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("forwardref"); } -#line 4058 "prebuilt\\asmparse.cpp" +#line 4080 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 44: /* id: PRESERVESIG_ */ -#line 254 "asmparse.y" +#line 254 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("preservesig"); } -#line 4064 "prebuilt\\asmparse.cpp" +#line 4086 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 45: /* id: RUNTIME_ */ -#line 255 "asmparse.y" +#line 255 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("runtime"); } -#line 4070 "prebuilt\\asmparse.cpp" +#line 4092 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 46: /* id: INTERNALCALL_ */ -#line 256 "asmparse.y" +#line 256 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("internalcall"); } -#line 4076 "prebuilt\\asmparse.cpp" +#line 4098 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 47: /* id: SYNCHRONIZED_ */ -#line 257 "asmparse.y" +#line 257 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("synchronized"); } -#line 4082 "prebuilt\\asmparse.cpp" +#line 4104 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 48: /* id: NOINLINING_ */ -#line 258 "asmparse.y" +#line 258 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("noinlining"); } -#line 4088 "prebuilt\\asmparse.cpp" +#line 4110 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 49: /* id: AGGRESSIVEINLINING_ */ -#line 259 "asmparse.y" +#line 259 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("aggressiveinlining"); } -#line 4094 "prebuilt\\asmparse.cpp" +#line 4116 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 50: /* id: NOOPTIMIZATION_ */ -#line 260 "asmparse.y" +#line 260 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("nooptimization"); } -#line 4100 "prebuilt\\asmparse.cpp" +#line 4122 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 51: /* id: AGGRESSIVEOPTIMIZATION_ */ -#line 261 "asmparse.y" +#line 261 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("aggressiveoptimization"); } -#line 4106 "prebuilt\\asmparse.cpp" +#line 4128 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; case 52: /* id: ASYNC_ */ -#line 262 "asmparse.y" +#line 262 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString("async"); } -#line 4112 "prebuilt\\asmparse.cpp" +#line 4134 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" + break; + + case 53: /* id: EXTENDED_ */ +#line 263 ".\\src\\coreclr\\ilasm\\asmparse.y" + { (yyval.string) = newString("extended"); } +#line 4140 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 53: /* id: SQSTRING */ -#line 263 "asmparse.y" + case 54: /* id: SQSTRING */ +#line 264 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 4118 "prebuilt\\asmparse.cpp" +#line 4146 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 54: /* dottedName: id */ -#line 266 "asmparse.y" + case 55: /* dottedName: id */ +#line 267 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 4124 "prebuilt\\asmparse.cpp" +#line 4152 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 55: /* dottedName: DOTTEDNAME */ -#line 267 "asmparse.y" + case 56: /* dottedName: DOTTEDNAME */ +#line 268 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 4130 "prebuilt\\asmparse.cpp" +#line 4158 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 56: /* dottedName: dottedName '.' dottedName */ -#line 268 "asmparse.y" + case 57: /* dottedName: dottedName '.' dottedName */ +#line 269 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newStringWDel((yyvsp[-2].string), '.', (yyvsp[0].string)); } -#line 4136 "prebuilt\\asmparse.cpp" +#line 4164 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 57: /* int32: INT32_V */ -#line 271 "asmparse.y" + case 58: /* int32: INT32_V */ +#line 272 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[0].int32); } -#line 4142 "prebuilt\\asmparse.cpp" +#line 4170 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 58: /* int64: INT64_V */ -#line 274 "asmparse.y" + case 59: /* int64: INT64_V */ +#line 275 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int64) = (yyvsp[0].int64); } -#line 4148 "prebuilt\\asmparse.cpp" +#line 4176 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 59: /* int64: INT32_V */ -#line 275 "asmparse.y" + case 60: /* int64: INT32_V */ +#line 276 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int64) = neg ? new int64_t((yyvsp[0].int32)) : new int64_t((unsigned)(yyvsp[0].int32)); } -#line 4154 "prebuilt\\asmparse.cpp" +#line 4182 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 60: /* float64: FLOAT64 */ -#line 278 "asmparse.y" + case 61: /* float64: FLOAT64 */ +#line 279 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.float64) = (yyvsp[0].float64); } -#line 4160 "prebuilt\\asmparse.cpp" +#line 4188 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 61: /* float64: FLOAT32_ '(' int32 ')' */ -#line 279 "asmparse.y" + case 62: /* float64: FLOAT32_ '(' int32 ')' */ +#line 280 ".\\src\\coreclr\\ilasm\\asmparse.y" { float f; *((int32_t*) (&f)) = (yyvsp[-1].int32); (yyval.float64) = new double(f); } -#line 4166 "prebuilt\\asmparse.cpp" +#line 4194 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 62: /* float64: FLOAT64_ '(' int64 ')' */ -#line 280 "asmparse.y" + case 63: /* float64: FLOAT64_ '(' int64 ')' */ +#line 281 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.float64) = (double*) (yyvsp[-1].int64); } -#line 4172 "prebuilt\\asmparse.cpp" +#line 4200 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 63: /* typedefDecl: _TYPEDEF type AS_ dottedName */ -#line 284 "asmparse.y" + case 64: /* typedefDecl: _TYPEDEF type AS_ dottedName */ +#line 285 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddTypeDef((yyvsp[-2].binstr),(yyvsp[0].string)); } -#line 4178 "prebuilt\\asmparse.cpp" +#line 4206 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 64: /* typedefDecl: _TYPEDEF className AS_ dottedName */ -#line 285 "asmparse.y" + case 65: /* typedefDecl: _TYPEDEF className AS_ dottedName */ +#line 286 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddTypeDef((yyvsp[-2].token),(yyvsp[0].string)); } -#line 4184 "prebuilt\\asmparse.cpp" +#line 4212 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 65: /* typedefDecl: _TYPEDEF memberRef AS_ dottedName */ -#line 286 "asmparse.y" + case 66: /* typedefDecl: _TYPEDEF memberRef AS_ dottedName */ +#line 287 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddTypeDef((yyvsp[-2].token),(yyvsp[0].string)); } -#line 4190 "prebuilt\\asmparse.cpp" +#line 4218 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 66: /* typedefDecl: _TYPEDEF customDescr AS_ dottedName */ -#line 287 "asmparse.y" + case 67: /* typedefDecl: _TYPEDEF customDescr AS_ dottedName */ +#line 288 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-2].cad)->tkOwner = 0; PASM->AddTypeDef((yyvsp[-2].cad),(yyvsp[0].string)); } -#line 4196 "prebuilt\\asmparse.cpp" +#line 4224 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 67: /* typedefDecl: _TYPEDEF customDescrWithOwner AS_ dottedName */ -#line 288 "asmparse.y" + case 68: /* typedefDecl: _TYPEDEF customDescrWithOwner AS_ dottedName */ +#line 289 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddTypeDef((yyvsp[-2].cad),(yyvsp[0].string)); } -#line 4202 "prebuilt\\asmparse.cpp" +#line 4230 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 68: /* compControl: P_DEFINE dottedName */ -#line 293 "asmparse.y" + case 69: /* compControl: P_DEFINE dottedName */ +#line 294 ".\\src\\coreclr\\ilasm\\asmparse.y" { DefineVar((yyvsp[0].string), NULL); } -#line 4208 "prebuilt\\asmparse.cpp" +#line 4236 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 69: /* compControl: P_DEFINE dottedName compQstring */ -#line 294 "asmparse.y" + case 70: /* compControl: P_DEFINE dottedName compQstring */ +#line 295 ".\\src\\coreclr\\ilasm\\asmparse.y" { DefineVar((yyvsp[-1].string), (yyvsp[0].binstr)); } -#line 4214 "prebuilt\\asmparse.cpp" +#line 4242 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 70: /* compControl: P_UNDEF dottedName */ -#line 295 "asmparse.y" + case 71: /* compControl: P_UNDEF dottedName */ +#line 296 ".\\src\\coreclr\\ilasm\\asmparse.y" { UndefVar((yyvsp[0].string)); } -#line 4220 "prebuilt\\asmparse.cpp" +#line 4248 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 71: /* compControl: P_IFDEF dottedName */ -#line 296 "asmparse.y" + case 72: /* compControl: P_IFDEF dottedName */ +#line 297 ".\\src\\coreclr\\ilasm\\asmparse.y" { SkipToken = !IsVarDefined((yyvsp[0].string)); IfEndif++; } -#line 4228 "prebuilt\\asmparse.cpp" +#line 4256 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 72: /* compControl: P_IFNDEF dottedName */ -#line 299 "asmparse.y" + case 73: /* compControl: P_IFNDEF dottedName */ +#line 300 ".\\src\\coreclr\\ilasm\\asmparse.y" { SkipToken = IsVarDefined((yyvsp[0].string)); IfEndif++; } -#line 4236 "prebuilt\\asmparse.cpp" +#line 4264 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 73: /* compControl: P_ELSE */ -#line 302 "asmparse.y" + case 74: /* compControl: P_ELSE */ +#line 303 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(IfEndif == 1) SkipToken = !SkipToken;} -#line 4242 "prebuilt\\asmparse.cpp" +#line 4270 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 74: /* compControl: P_ENDIF */ -#line 303 "asmparse.y" + case 75: /* compControl: P_ENDIF */ +#line 304 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(IfEndif == 0) PASM->report->error("Unmatched #endif\n"); else IfEndif--; } -#line 4251 "prebuilt\\asmparse.cpp" +#line 4279 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 75: /* compControl: P_INCLUDE QSTRING */ -#line 307 "asmparse.y" + case 76: /* compControl: P_INCLUDE QSTRING */ +#line 308 ".\\src\\coreclr\\ilasm\\asmparse.y" { _ASSERTE(!"yylex should have dealt with this"); } -#line 4257 "prebuilt\\asmparse.cpp" +#line 4285 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 76: /* compControl: ';' */ -#line 308 "asmparse.y" + case 77: /* compControl: ';' */ +#line 309 ".\\src\\coreclr\\ilasm\\asmparse.y" { } -#line 4263 "prebuilt\\asmparse.cpp" +#line 4291 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 77: /* customDescr: _CUSTOM customType */ -#line 312 "asmparse.y" + case 78: /* customDescr: _CUSTOM customType */ +#line 313 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr(PASM->m_tkCurrentCVOwner, (yyvsp[0].token), NULL); } -#line 4269 "prebuilt\\asmparse.cpp" +#line 4297 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 78: /* customDescr: _CUSTOM customType '=' compQstring */ -#line 313 "asmparse.y" + case 79: /* customDescr: _CUSTOM customType '=' compQstring */ +#line 314 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr(PASM->m_tkCurrentCVOwner, (yyvsp[-2].token), (yyvsp[0].binstr)); } -#line 4275 "prebuilt\\asmparse.cpp" +#line 4303 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 79: /* customDescr: _CUSTOM customType '=' '{' customBlobDescr '}' */ -#line 314 "asmparse.y" + case 80: /* customDescr: _CUSTOM customType '=' '{' customBlobDescr '}' */ +#line 315 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr(PASM->m_tkCurrentCVOwner, (yyvsp[-4].token), (yyvsp[-1].binstr)); } -#line 4281 "prebuilt\\asmparse.cpp" +#line 4309 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 80: /* customDescr: customHead bytes ')' */ -#line 315 "asmparse.y" + case 81: /* customDescr: customHead bytes ')' */ +#line 316 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr(PASM->m_tkCurrentCVOwner, (yyvsp[-2].int32), (yyvsp[-1].binstr)); } -#line 4287 "prebuilt\\asmparse.cpp" +#line 4315 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 81: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType */ -#line 318 "asmparse.y" + case 82: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType */ +#line 319 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr((yyvsp[-2].token), (yyvsp[0].token), NULL); } -#line 4293 "prebuilt\\asmparse.cpp" +#line 4321 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 82: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType '=' compQstring */ -#line 319 "asmparse.y" + case 83: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType '=' compQstring */ +#line 320 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr((yyvsp[-4].token), (yyvsp[-2].token), (yyvsp[0].binstr)); } -#line 4299 "prebuilt\\asmparse.cpp" +#line 4327 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 83: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType '=' '{' customBlobDescr '}' */ -#line 321 "asmparse.y" + case 84: /* customDescrWithOwner: _CUSTOM '(' ownerType ')' customType '=' '{' customBlobDescr '}' */ +#line 322 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr((yyvsp[-6].token), (yyvsp[-4].token), (yyvsp[-1].binstr)); } -#line 4305 "prebuilt\\asmparse.cpp" +#line 4333 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 84: /* customDescrWithOwner: customHeadWithOwner bytes ')' */ -#line 322 "asmparse.y" + case 85: /* customDescrWithOwner: customHeadWithOwner bytes ')' */ +#line 323 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.cad) = new CustomDescr(PASM->m_tkCurrentCVOwner, (yyvsp[-2].int32), (yyvsp[-1].binstr)); } -#line 4311 "prebuilt\\asmparse.cpp" +#line 4339 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 85: /* customHead: _CUSTOM customType '=' '(' */ -#line 325 "asmparse.y" + case 86: /* customHead: _CUSTOM customType '=' '(' */ +#line 326 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-2].token); bParsingByteArray = TRUE; } -#line 4317 "prebuilt\\asmparse.cpp" +#line 4345 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 86: /* customHeadWithOwner: _CUSTOM '(' ownerType ')' customType '=' '(' */ -#line 329 "asmparse.y" + case 87: /* customHeadWithOwner: _CUSTOM '(' ownerType ')' customType '=' '(' */ +#line 330 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCustomDescrList = NULL; PASM->m_tkCurrentCVOwner = (yyvsp[-4].token); (yyval.int32) = (yyvsp[-2].token); bParsingByteArray = TRUE; } -#line 4325 "prebuilt\\asmparse.cpp" +#line 4353 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 87: /* customType: methodRef */ -#line 334 "asmparse.y" + case 88: /* customType: methodRef */ +#line 335 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); } -#line 4331 "prebuilt\\asmparse.cpp" +#line 4359 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 88: /* ownerType: typeSpec */ -#line 337 "asmparse.y" + case 89: /* ownerType: typeSpec */ +#line 338 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); } -#line 4337 "prebuilt\\asmparse.cpp" +#line 4365 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 89: /* ownerType: memberRef */ -#line 338 "asmparse.y" + case 90: /* ownerType: memberRef */ +#line 339 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); } -#line 4343 "prebuilt\\asmparse.cpp" +#line 4371 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 90: /* customBlobDescr: customBlobArgs customBlobNVPairs */ -#line 342 "asmparse.y" + case 91: /* customBlobDescr: customBlobArgs customBlobNVPairs */ +#line 343 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt16(VAL16(nCustomBlobNVPairs)); (yyval.binstr)->append((yyvsp[0].binstr)); nCustomBlobNVPairs = 0; } -#line 4352 "prebuilt\\asmparse.cpp" +#line 4380 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 91: /* customBlobArgs: %empty */ -#line 348 "asmparse.y" + case 92: /* customBlobArgs: %empty */ +#line 349 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt16(VAL16(0x0001)); } -#line 4358 "prebuilt\\asmparse.cpp" +#line 4386 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 92: /* customBlobArgs: customBlobArgs serInit */ -#line 349 "asmparse.y" + case 93: /* customBlobArgs: customBlobArgs serInit */ +#line 350 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); AppendFieldToCustomBlob((yyval.binstr),(yyvsp[0].binstr)); } -#line 4365 "prebuilt\\asmparse.cpp" +#line 4393 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 93: /* customBlobArgs: customBlobArgs compControl */ -#line 351 "asmparse.y" + case 94: /* customBlobArgs: customBlobArgs compControl */ +#line 352 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 4371 "prebuilt\\asmparse.cpp" +#line 4399 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 94: /* customBlobNVPairs: %empty */ -#line 354 "asmparse.y" + case 95: /* customBlobNVPairs: %empty */ +#line 355 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 4377 "prebuilt\\asmparse.cpp" +#line 4405 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 95: /* customBlobNVPairs: customBlobNVPairs fieldOrProp serializType dottedName '=' serInit */ -#line 356 "asmparse.y" + case 96: /* customBlobNVPairs: customBlobNVPairs fieldOrProp serializType dottedName '=' serInit */ +#line 357 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-5].binstr); (yyval.binstr)->appendInt8((yyvsp[-4].int32)); (yyval.binstr)->append((yyvsp[-3].binstr)); AppendStringWithLength((yyval.binstr),(yyvsp[-2].string)); AppendFieldToCustomBlob((yyval.binstr),(yyvsp[0].binstr)); nCustomBlobNVPairs++; } -#line 4387 "prebuilt\\asmparse.cpp" +#line 4415 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 96: /* customBlobNVPairs: customBlobNVPairs compControl */ -#line 361 "asmparse.y" + case 97: /* customBlobNVPairs: customBlobNVPairs compControl */ +#line 362 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 4393 "prebuilt\\asmparse.cpp" +#line 4421 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 97: /* fieldOrProp: FIELD_ */ -#line 364 "asmparse.y" + case 98: /* fieldOrProp: FIELD_ */ +#line 365 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = SERIALIZATION_TYPE_FIELD; } -#line 4399 "prebuilt\\asmparse.cpp" +#line 4427 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 98: /* fieldOrProp: PROPERTY_ */ -#line 365 "asmparse.y" + case 99: /* fieldOrProp: PROPERTY_ */ +#line 366 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = SERIALIZATION_TYPE_PROPERTY; } -#line 4405 "prebuilt\\asmparse.cpp" +#line 4433 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 99: /* customAttrDecl: customDescr */ -#line 368 "asmparse.y" + case 100: /* customAttrDecl: customDescr */ +#line 369 ".\\src\\coreclr\\ilasm\\asmparse.y" { if((yyvsp[0].cad)->tkOwner && !(yyvsp[0].cad)->tkInterfacePair) PASM->DefineCV((yyvsp[0].cad)); else if(PASM->m_pCustomDescrList) PASM->m_pCustomDescrList->PUSH((yyvsp[0].cad)); } -#line 4414 "prebuilt\\asmparse.cpp" +#line 4442 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 100: /* customAttrDecl: customDescrWithOwner */ -#line 372 "asmparse.y" + case 101: /* customAttrDecl: customDescrWithOwner */ +#line 373 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->DefineCV((yyvsp[0].cad)); } -#line 4420 "prebuilt\\asmparse.cpp" +#line 4448 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 101: /* customAttrDecl: TYPEDEF_CA */ -#line 373 "asmparse.y" + case 102: /* customAttrDecl: TYPEDEF_CA */ +#line 374 ".\\src\\coreclr\\ilasm\\asmparse.y" { CustomDescr* pNew = new CustomDescr((yyvsp[0].tdd)->m_pCA); if(pNew->tkOwner == 0) pNew->tkOwner = PASM->m_tkCurrentCVOwner; if(pNew->tkOwner) PASM->DefineCV(pNew); else if(PASM->m_pCustomDescrList) PASM->m_pCustomDescrList->PUSH(pNew); } -#line 4431 "prebuilt\\asmparse.cpp" +#line 4459 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 102: /* serializType: simpleType */ -#line 381 "asmparse.y" + case 103: /* serializType: simpleType */ +#line 382 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 4437 "prebuilt\\asmparse.cpp" +#line 4465 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 103: /* serializType: TYPE_ */ -#line 382 "asmparse.y" + case 104: /* serializType: TYPE_ */ +#line 383 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_TYPE); } -#line 4443 "prebuilt\\asmparse.cpp" +#line 4471 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 104: /* serializType: OBJECT_ */ -#line 383 "asmparse.y" + case 105: /* serializType: OBJECT_ */ +#line 384 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } -#line 4449 "prebuilt\\asmparse.cpp" +#line 4477 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 105: /* serializType: ENUM_ CLASS_ SQSTRING */ -#line 384 "asmparse.y" + case 106: /* serializType: ENUM_ CLASS_ SQSTRING */ +#line 385 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); AppendStringWithLength((yyval.binstr),(yyvsp[0].string)); } -#line 4456 "prebuilt\\asmparse.cpp" +#line 4484 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 106: /* serializType: ENUM_ className */ -#line 386 "asmparse.y" + case 107: /* serializType: ENUM_ className */ +#line 387 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); AppendStringWithLength((yyval.binstr),PASM->ReflectionNotation((yyvsp[0].token))); } -#line 4463 "prebuilt\\asmparse.cpp" +#line 4491 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 107: /* serializType: serializType '[' ']' */ -#line 388 "asmparse.y" + case 108: /* serializType: serializType '[' ']' */ +#line 389 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 4469 "prebuilt\\asmparse.cpp" +#line 4497 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 108: /* moduleHead: _MODULE */ -#line 393 "asmparse.y" + case 109: /* moduleHead: _MODULE */ +#line 394 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } -#line 4475 "prebuilt\\asmparse.cpp" +#line 4503 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 109: /* moduleHead: _MODULE dottedName */ -#line 394 "asmparse.y" + case 110: /* moduleHead: _MODULE dottedName */ +#line 395 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetModuleName((yyvsp[0].string)); PASM->m_tkCurrentCVOwner=1; } -#line 4481 "prebuilt\\asmparse.cpp" +#line 4509 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 110: /* moduleHead: _MODULE EXTERN_ dottedName */ -#line 395 "asmparse.y" + case 111: /* moduleHead: _MODULE EXTERN_ dottedName */ +#line 396 ".\\src\\coreclr\\ilasm\\asmparse.y" { BinStr* pbs = new BinStr(); unsigned L = (unsigned)strlen((yyvsp[0].string)); memcpy((char*)(pbs->getBuff(L)),(yyvsp[0].string),L); PASM->EmitImport(pbs); delete pbs;} -#line 4490 "prebuilt\\asmparse.cpp" +#line 4518 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 111: /* vtfixupDecl: _VTFIXUP '[' int32 ']' vtfixupAttr AT_ id */ -#line 402 "asmparse.y" + case 112: /* vtfixupDecl: _VTFIXUP '[' int32 ']' vtfixupAttr AT_ id */ +#line 403 ".\\src\\coreclr\\ilasm\\asmparse.y" { /*PASM->SetDataSection(); PASM->EmitDataLabel($7);*/ PASM->m_VTFList.PUSH(new VTFEntry((USHORT)(yyvsp[-4].int32), (USHORT)(yyvsp[-2].int32), (yyvsp[0].string))); } -#line 4497 "prebuilt\\asmparse.cpp" +#line 4525 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 112: /* vtfixupAttr: %empty */ -#line 406 "asmparse.y" + case 113: /* vtfixupAttr: %empty */ +#line 407 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0; } -#line 4503 "prebuilt\\asmparse.cpp" +#line 4531 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 113: /* vtfixupAttr: vtfixupAttr INT32_ */ -#line 407 "asmparse.y" + case 114: /* vtfixupAttr: vtfixupAttr INT32_ */ +#line 408 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | COR_VTABLE_32BIT; } -#line 4509 "prebuilt\\asmparse.cpp" +#line 4537 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 114: /* vtfixupAttr: vtfixupAttr INT64_ */ -#line 408 "asmparse.y" + case 115: /* vtfixupAttr: vtfixupAttr INT64_ */ +#line 409 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | COR_VTABLE_64BIT; } -#line 4515 "prebuilt\\asmparse.cpp" +#line 4543 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 115: /* vtfixupAttr: vtfixupAttr FROMUNMANAGED_ */ -#line 409 "asmparse.y" + case 116: /* vtfixupAttr: vtfixupAttr FROMUNMANAGED_ */ +#line 410 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | COR_VTABLE_FROM_UNMANAGED; } -#line 4521 "prebuilt\\asmparse.cpp" +#line 4549 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 116: /* vtfixupAttr: vtfixupAttr CALLMOSTDERIVED_ */ -#line 410 "asmparse.y" + case 117: /* vtfixupAttr: vtfixupAttr CALLMOSTDERIVED_ */ +#line 411 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | COR_VTABLE_CALL_MOST_DERIVED; } -#line 4527 "prebuilt\\asmparse.cpp" +#line 4555 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 117: /* vtfixupAttr: vtfixupAttr RETAINAPPDOMAIN_ */ -#line 411 "asmparse.y" + case 118: /* vtfixupAttr: vtfixupAttr RETAINAPPDOMAIN_ */ +#line 412 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } -#line 4533 "prebuilt\\asmparse.cpp" +#line 4561 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 118: /* vtableDecl: vtableHead bytes ')' */ -#line 414 "asmparse.y" + case 119: /* vtableDecl: vtableHead bytes ')' */ +#line 415 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pVTable = (yyvsp[-1].binstr); } -#line 4539 "prebuilt\\asmparse.cpp" +#line 4567 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 119: /* vtableHead: _VTABLE '=' '(' */ -#line 417 "asmparse.y" + case 120: /* vtableHead: _VTABLE '=' '(' */ +#line 418 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 4545 "prebuilt\\asmparse.cpp" +#line 4573 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 120: /* nameSpaceHead: _NAMESPACE dottedName */ -#line 421 "asmparse.y" + case 121: /* nameSpaceHead: _NAMESPACE dottedName */ +#line 422 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->StartNameSpace((yyvsp[0].string)); } -#line 4551 "prebuilt\\asmparse.cpp" +#line 4579 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 121: /* _class: _CLASS */ -#line 424 "asmparse.y" + case 122: /* _class: _CLASS */ +#line 425 ".\\src\\coreclr\\ilasm\\asmparse.y" { newclass = TRUE; } -#line 4557 "prebuilt\\asmparse.cpp" +#line 4585 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 122: /* classHeadBegin: _class classAttr dottedName typarsClause */ -#line 427 "asmparse.y" + case 123: /* classHeadBegin: _class classAttr dottedName typarsClause */ +#line 428 ".\\src\\coreclr\\ilasm\\asmparse.y" { if((yyvsp[0].typarlist)) FixupConstraints(); PASM->StartClass((yyvsp[-1].string), (yyvsp[-2].classAttr), (yyvsp[0].typarlist)); TyParFixupList.RESET(false); newclass = FALSE; } -#line 4567 "prebuilt\\asmparse.cpp" +#line 4595 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 123: /* classHead: classHeadBegin extendsClause implClause */ -#line 433 "asmparse.y" + case 124: /* classHead: classHeadBegin extendsClause implClause */ +#line 434 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddClass(); } -#line 4573 "prebuilt\\asmparse.cpp" +#line 4601 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 124: /* classAttr: %empty */ -#line 436 "asmparse.y" + case 125: /* classAttr: %empty */ +#line 437 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) 0; } -#line 4579 "prebuilt\\asmparse.cpp" +#line 4607 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 125: /* classAttr: classAttr PUBLIC_ */ -#line 437 "asmparse.y" + case 126: /* classAttr: classAttr PUBLIC_ */ +#line 438 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdVisibilityMask) | tdPublic); } -#line 4585 "prebuilt\\asmparse.cpp" +#line 4613 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 126: /* classAttr: classAttr PRIVATE_ */ -#line 438 "asmparse.y" + case 127: /* classAttr: classAttr PRIVATE_ */ +#line 439 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdVisibilityMask) | tdNotPublic); } -#line 4591 "prebuilt\\asmparse.cpp" +#line 4619 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 127: /* classAttr: classAttr VALUE_ */ -#line 439 "asmparse.y" + case 128: /* classAttr: classAttr VALUE_ */ +#line 440 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | 0x80000000 | tdSealed); } -#line 4597 "prebuilt\\asmparse.cpp" +#line 4625 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 128: /* classAttr: classAttr ENUM_ */ -#line 440 "asmparse.y" + case 129: /* classAttr: classAttr ENUM_ */ +#line 441 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | 0x40000000); } -#line 4603 "prebuilt\\asmparse.cpp" +#line 4631 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 129: /* classAttr: classAttr INTERFACE_ */ -#line 441 "asmparse.y" + case 130: /* classAttr: classAttr INTERFACE_ */ +#line 442 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdInterface | tdAbstract); } -#line 4609 "prebuilt\\asmparse.cpp" +#line 4637 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 130: /* classAttr: classAttr SEALED_ */ -#line 442 "asmparse.y" + case 131: /* classAttr: classAttr SEALED_ */ +#line 443 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdSealed); } -#line 4615 "prebuilt\\asmparse.cpp" +#line 4643 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 131: /* classAttr: classAttr ABSTRACT_ */ -#line 443 "asmparse.y" + case 132: /* classAttr: classAttr ABSTRACT_ */ +#line 444 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdAbstract); } -#line 4621 "prebuilt\\asmparse.cpp" +#line 4649 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 132: /* classAttr: classAttr AUTO_ */ -#line 444 "asmparse.y" + case 133: /* classAttr: classAttr AUTO_ */ +#line 445 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdLayoutMask) | tdAutoLayout); } -#line 4627 "prebuilt\\asmparse.cpp" +#line 4655 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 133: /* classAttr: classAttr SEQUENTIAL_ */ -#line 445 "asmparse.y" + case 134: /* classAttr: classAttr SEQUENTIAL_ */ +#line 446 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdLayoutMask) | tdSequentialLayout); } -#line 4633 "prebuilt\\asmparse.cpp" +#line 4661 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 134: /* classAttr: classAttr EXPLICIT_ */ -#line 446 "asmparse.y" + case 135: /* classAttr: classAttr EXPLICIT_ */ +#line 447 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdLayoutMask) | tdExplicitLayout); } -#line 4639 "prebuilt\\asmparse.cpp" +#line 4667 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" + break; + + case 136: /* classAttr: classAttr EXTENDED_ */ +#line 448 ".\\src\\coreclr\\ilasm\\asmparse.y" + { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdLayoutMask) | tdExtendedLayout); } +#line 4673 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 135: /* classAttr: classAttr ANSI_ */ -#line 447 "asmparse.y" + case 137: /* classAttr: classAttr ANSI_ */ +#line 449 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdStringFormatMask) | tdAnsiClass); } -#line 4645 "prebuilt\\asmparse.cpp" +#line 4679 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 136: /* classAttr: classAttr UNICODE_ */ -#line 448 "asmparse.y" + case 138: /* classAttr: classAttr UNICODE_ */ +#line 450 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdStringFormatMask) | tdUnicodeClass); } -#line 4651 "prebuilt\\asmparse.cpp" +#line 4685 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 137: /* classAttr: classAttr AUTOCHAR_ */ -#line 449 "asmparse.y" + case 139: /* classAttr: classAttr AUTOCHAR_ */ +#line 451 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-1].classAttr) & ~tdStringFormatMask) | tdAutoClass); } -#line 4657 "prebuilt\\asmparse.cpp" +#line 4691 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 138: /* classAttr: classAttr IMPORT_ */ -#line 450 "asmparse.y" + case 140: /* classAttr: classAttr IMPORT_ */ +#line 452 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdImport); } -#line 4663 "prebuilt\\asmparse.cpp" +#line 4697 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 139: /* classAttr: classAttr SERIALIZABLE_ */ -#line 451 "asmparse.y" + case 141: /* classAttr: classAttr SERIALIZABLE_ */ +#line 453 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdSerializable); } -#line 4669 "prebuilt\\asmparse.cpp" +#line 4703 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 140: /* classAttr: classAttr WINDOWSRUNTIME_ */ -#line 452 "asmparse.y" + case 142: /* classAttr: classAttr WINDOWSRUNTIME_ */ +#line 454 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdWindowsRuntime); } -#line 4675 "prebuilt\\asmparse.cpp" +#line 4709 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 141: /* classAttr: classAttr NESTED_ PUBLIC_ */ -#line 453 "asmparse.y" + case 143: /* classAttr: classAttr NESTED_ PUBLIC_ */ +#line 455 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedPublic); } -#line 4681 "prebuilt\\asmparse.cpp" +#line 4715 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 142: /* classAttr: classAttr NESTED_ PRIVATE_ */ -#line 454 "asmparse.y" + case 144: /* classAttr: classAttr NESTED_ PRIVATE_ */ +#line 456 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedPrivate); } -#line 4687 "prebuilt\\asmparse.cpp" +#line 4721 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 143: /* classAttr: classAttr NESTED_ FAMILY_ */ -#line 455 "asmparse.y" + case 145: /* classAttr: classAttr NESTED_ FAMILY_ */ +#line 457 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedFamily); } -#line 4693 "prebuilt\\asmparse.cpp" +#line 4727 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 144: /* classAttr: classAttr NESTED_ ASSEMBLY_ */ -#line 456 "asmparse.y" + case 146: /* classAttr: classAttr NESTED_ ASSEMBLY_ */ +#line 458 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedAssembly); } -#line 4699 "prebuilt\\asmparse.cpp" +#line 4733 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 145: /* classAttr: classAttr NESTED_ FAMANDASSEM_ */ -#line 457 "asmparse.y" + case 147: /* classAttr: classAttr NESTED_ FAMANDASSEM_ */ +#line 459 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedFamANDAssem); } -#line 4705 "prebuilt\\asmparse.cpp" +#line 4739 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 146: /* classAttr: classAttr NESTED_ FAMORASSEM_ */ -#line 458 "asmparse.y" + case 148: /* classAttr: classAttr NESTED_ FAMORASSEM_ */ +#line 460 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) (((yyvsp[-2].classAttr) & ~tdVisibilityMask) | tdNestedFamORAssem); } -#line 4711 "prebuilt\\asmparse.cpp" +#line 4745 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 147: /* classAttr: classAttr BEFOREFIELDINIT_ */ -#line 459 "asmparse.y" + case 149: /* classAttr: classAttr BEFOREFIELDINIT_ */ +#line 461 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdBeforeFieldInit); } -#line 4717 "prebuilt\\asmparse.cpp" +#line 4751 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 148: /* classAttr: classAttr SPECIALNAME_ */ -#line 460 "asmparse.y" + case 150: /* classAttr: classAttr SPECIALNAME_ */ +#line 462 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr) | tdSpecialName); } -#line 4723 "prebuilt\\asmparse.cpp" +#line 4757 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 149: /* classAttr: classAttr RTSPECIALNAME_ */ -#line 461 "asmparse.y" + case 151: /* classAttr: classAttr RTSPECIALNAME_ */ +#line 463 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].classAttr)); } -#line 4729 "prebuilt\\asmparse.cpp" +#line 4763 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 150: /* classAttr: classAttr FLAGS_ '(' int32 ')' */ -#line 462 "asmparse.y" + case 152: /* classAttr: classAttr FLAGS_ '(' int32 ')' */ +#line 464 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.classAttr) = (CorRegTypeAttr) ((yyvsp[-1].int32)); } -#line 4735 "prebuilt\\asmparse.cpp" +#line 4769 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 152: /* extendsClause: EXTENDS_ typeSpec */ -#line 466 "asmparse.y" + case 154: /* extendsClause: EXTENDS_ typeSpec */ +#line 468 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_crExtends = (yyvsp[0].token); } -#line 4741 "prebuilt\\asmparse.cpp" +#line 4775 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 157: /* implList: implList ',' typeSpec */ -#line 477 "asmparse.y" + case 159: /* implList: implList ',' typeSpec */ +#line 479 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddToImplList((yyvsp[0].token)); } -#line 4747 "prebuilt\\asmparse.cpp" +#line 4781 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 158: /* implList: typeSpec */ -#line 478 "asmparse.y" + case 160: /* implList: typeSpec */ +#line 480 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddToImplList((yyvsp[0].token)); } -#line 4753 "prebuilt\\asmparse.cpp" +#line 4787 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 159: /* typeList: %empty */ -#line 482 "asmparse.y" + case 161: /* typeList: %empty */ +#line 484 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 4759 "prebuilt\\asmparse.cpp" +#line 4793 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 160: /* typeList: typeListNotEmpty */ -#line 483 "asmparse.y" + case 162: /* typeList: typeListNotEmpty */ +#line 485 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 4765 "prebuilt\\asmparse.cpp" +#line 4799 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 161: /* typeListNotEmpty: typeSpec */ -#line 486 "asmparse.y" + case 163: /* typeListNotEmpty: typeSpec */ +#line 488 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32((yyvsp[0].token)); } -#line 4771 "prebuilt\\asmparse.cpp" +#line 4805 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 162: /* typeListNotEmpty: typeListNotEmpty ',' typeSpec */ -#line 487 "asmparse.y" + case 164: /* typeListNotEmpty: typeListNotEmpty ',' typeSpec */ +#line 489 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->appendInt32((yyvsp[0].token)); } -#line 4777 "prebuilt\\asmparse.cpp" +#line 4811 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 163: /* typarsClause: %empty */ -#line 490 "asmparse.y" + case 165: /* typarsClause: %empty */ +#line 492 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.typarlist) = NULL; PASM->m_TyParList = NULL;} -#line 4783 "prebuilt\\asmparse.cpp" +#line 4817 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 164: /* typarsClause: '<' typars '>' */ -#line 491 "asmparse.y" + case 166: /* typarsClause: '<' typars '>' */ +#line 493 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.typarlist) = (yyvsp[-1].typarlist); PASM->m_TyParList = (yyvsp[-1].typarlist);} -#line 4789 "prebuilt\\asmparse.cpp" +#line 4823 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 165: /* typarAttrib: '+' */ -#line 494 "asmparse.y" + case 167: /* typarAttrib: '+' */ +#line 496 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpCovariant; } -#line 4795 "prebuilt\\asmparse.cpp" +#line 4829 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 166: /* typarAttrib: '-' */ -#line 495 "asmparse.y" + case 168: /* typarAttrib: '-' */ +#line 497 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpContravariant; } -#line 4801 "prebuilt\\asmparse.cpp" +#line 4835 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 167: /* typarAttrib: CLASS_ */ -#line 496 "asmparse.y" + case 169: /* typarAttrib: CLASS_ */ +#line 498 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpReferenceTypeConstraint; } -#line 4807 "prebuilt\\asmparse.cpp" +#line 4841 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 168: /* typarAttrib: VALUETYPE_ */ -#line 497 "asmparse.y" + case 170: /* typarAttrib: VALUETYPE_ */ +#line 499 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpNotNullableValueTypeConstraint; } -#line 4813 "prebuilt\\asmparse.cpp" +#line 4847 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 169: /* typarAttrib: BYREFLIKE_ */ -#line 498 "asmparse.y" + case 171: /* typarAttrib: BYREFLIKE_ */ +#line 500 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpAllowByRefLike; } -#line 4819 "prebuilt\\asmparse.cpp" +#line 4853 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 170: /* typarAttrib: _CTOR */ -#line 499 "asmparse.y" + case 172: /* typarAttrib: _CTOR */ +#line 501 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = gpDefaultConstructorConstraint; } -#line 4825 "prebuilt\\asmparse.cpp" +#line 4859 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 171: /* typarAttrib: FLAGS_ '(' int32 ')' */ -#line 500 "asmparse.y" + case 173: /* typarAttrib: FLAGS_ '(' int32 ')' */ +#line 502 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (CorGenericParamAttr)(yyvsp[-1].int32); } -#line 4831 "prebuilt\\asmparse.cpp" +#line 4865 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 172: /* typarAttribs: %empty */ -#line 503 "asmparse.y" + case 174: /* typarAttribs: %empty */ +#line 505 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0; } -#line 4837 "prebuilt\\asmparse.cpp" +#line 4871 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 173: /* typarAttribs: typarAttrib typarAttribs */ -#line 504 "asmparse.y" + case 175: /* typarAttribs: typarAttrib typarAttribs */ +#line 506 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | (yyvsp[0].int32); } -#line 4843 "prebuilt\\asmparse.cpp" +#line 4877 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 174: /* typars: typarAttribs tyBound dottedName typarsRest */ -#line 507 "asmparse.y" + case 176: /* typars: typarAttribs tyBound dottedName typarsRest */ +#line 509 ".\\src\\coreclr\\ilasm\\asmparse.y" {(yyval.typarlist) = new TyParList((yyvsp[-3].int32), (yyvsp[-2].binstr), (yyvsp[-1].string), (yyvsp[0].typarlist));} -#line 4849 "prebuilt\\asmparse.cpp" +#line 4883 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 175: /* typars: typarAttribs dottedName typarsRest */ -#line 508 "asmparse.y" + case 177: /* typars: typarAttribs dottedName typarsRest */ +#line 510 ".\\src\\coreclr\\ilasm\\asmparse.y" {(yyval.typarlist) = new TyParList((yyvsp[-2].int32), NULL, (yyvsp[-1].string), (yyvsp[0].typarlist));} -#line 4855 "prebuilt\\asmparse.cpp" +#line 4889 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 176: /* typarsRest: %empty */ -#line 511 "asmparse.y" + case 178: /* typarsRest: %empty */ +#line 513 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.typarlist) = NULL; } -#line 4861 "prebuilt\\asmparse.cpp" +#line 4895 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 177: /* typarsRest: ',' typars */ -#line 512 "asmparse.y" + case 179: /* typarsRest: ',' typars */ +#line 514 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.typarlist) = (yyvsp[0].typarlist); } -#line 4867 "prebuilt\\asmparse.cpp" +#line 4901 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 178: /* tyBound: '(' typeList ')' */ -#line 515 "asmparse.y" + case 180: /* tyBound: '(' typeList ')' */ +#line 517 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 4873 "prebuilt\\asmparse.cpp" +#line 4907 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 179: /* genArity: %empty */ -#line 518 "asmparse.y" + case 181: /* genArity: %empty */ +#line 520 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32)= 0; } -#line 4879 "prebuilt\\asmparse.cpp" +#line 4913 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 180: /* genArity: genArityNotEmpty */ -#line 519 "asmparse.y" + case 182: /* genArity: genArityNotEmpty */ +#line 521 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[0].int32); } -#line 4885 "prebuilt\\asmparse.cpp" +#line 4919 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 181: /* genArityNotEmpty: '<' '[' int32 ']' '>' */ -#line 522 "asmparse.y" + case 183: /* genArityNotEmpty: '<' '[' int32 ']' '>' */ +#line 524 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-2].int32); } -#line 4891 "prebuilt\\asmparse.cpp" +#line 4925 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 182: /* classDecl: methodHead methodDecls '}' */ -#line 526 "asmparse.y" + case 184: /* classDecl: methodHead methodDecls '}' */ +#line 528 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurMethod->m_ulLines[1] ==0) { PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine; PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;} PASM->EndMethod(); } -#line 4900 "prebuilt\\asmparse.cpp" +#line 4934 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 183: /* classDecl: classHead '{' classDecls '}' */ -#line 530 "asmparse.y" + case 185: /* classDecl: classHead '{' classDecls '}' */ +#line 532 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EndClass(); } -#line 4906 "prebuilt\\asmparse.cpp" +#line 4940 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 184: /* classDecl: eventHead '{' eventDecls '}' */ -#line 531 "asmparse.y" + case 186: /* classDecl: eventHead '{' eventDecls '}' */ +#line 533 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EndEvent(); } -#line 4912 "prebuilt\\asmparse.cpp" +#line 4946 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 185: /* classDecl: propHead '{' propDecls '}' */ -#line 532 "asmparse.y" + case 187: /* classDecl: propHead '{' propDecls '}' */ +#line 534 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EndProp(); } -#line 4918 "prebuilt\\asmparse.cpp" +#line 4952 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 191: /* classDecl: _SIZE int32 */ -#line 538 "asmparse.y" + case 193: /* classDecl: _SIZE int32 */ +#line 540 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurClass->m_ulSize = (yyvsp[0].int32); } -#line 4924 "prebuilt\\asmparse.cpp" +#line 4958 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 192: /* classDecl: _PACK int32 */ -#line 539 "asmparse.y" + case 194: /* classDecl: _PACK int32 */ +#line 541 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurClass->m_ulPack = (yyvsp[0].int32); } -#line 4930 "prebuilt\\asmparse.cpp" +#line 4964 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 193: /* classDecl: exportHead '{' exptypeDecls '}' */ -#line 540 "asmparse.y" + case 195: /* classDecl: exportHead '{' exptypeDecls '}' */ +#line 542 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->EndComType(); } -#line 4936 "prebuilt\\asmparse.cpp" +#line 4970 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 194: /* classDecl: _OVERRIDE typeSpec DCOLON methodName WITH_ callConv type typeSpec DCOLON methodName '(' sigArgs0 ')' */ -#line 542 "asmparse.y" + case 196: /* classDecl: _OVERRIDE typeSpec DCOLON methodName WITH_ callConv type typeSpec DCOLON methodName '(' sigArgs0 ')' */ +#line 544 ".\\src\\coreclr\\ilasm\\asmparse.y" { BinStr *sig1 = parser->MakeSig((yyvsp[-7].int32), (yyvsp[-6].binstr), (yyvsp[-1].binstr)); BinStr *sig2 = new BinStr(); sig2->append(sig1); PASM->AddMethodImpl((yyvsp[-11].token),(yyvsp[-9].string),sig1,(yyvsp[-5].token),(yyvsp[-3].string),sig2); PASM->ResetArgNameList(); } -#line 4946 "prebuilt\\asmparse.cpp" +#line 4980 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 195: /* classDecl: _OVERRIDE METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' WITH_ METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' */ -#line 548 "asmparse.y" + case 197: /* classDecl: _OVERRIDE METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' WITH_ METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' */ +#line 550 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddMethodImpl((yyvsp[-17].token),(yyvsp[-15].string), ((yyvsp[-14].int32)==0 ? parser->MakeSig((yyvsp[-19].int32),(yyvsp[-18].binstr),(yyvsp[-12].binstr)) : parser->MakeSig((yyvsp[-19].int32)| IMAGE_CEE_CS_CALLCONV_GENERIC,(yyvsp[-18].binstr),(yyvsp[-12].binstr),(yyvsp[-14].int32))), @@ -4955,192 +4989,192 @@ yyparse (void) parser->MakeSig((yyvsp[-8].int32)| IMAGE_CEE_CS_CALLCONV_GENERIC,(yyvsp[-7].binstr),(yyvsp[-1].binstr),(yyvsp[-3].int32)))); PASM->ResetArgNameList(); } -#line 4959 "prebuilt\\asmparse.cpp" +#line 4993 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 198: /* classDecl: _PARAM TYPE_ '[' int32 ']' */ -#line 558 "asmparse.y" + case 200: /* classDecl: _PARAM TYPE_ '[' int32 ']' */ +#line 560 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(((yyvsp[-1].int32) > 0) && ((yyvsp[-1].int32) <= (int)PASM->m_pCurClass->m_NumTyPars)) PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[(yyvsp[-1].int32)-1].CAList(); else PASM->report->error("Type parameter index out of range\n"); } -#line 4969 "prebuilt\\asmparse.cpp" +#line 5003 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 199: /* classDecl: _PARAM TYPE_ dottedName */ -#line 563 "asmparse.y" + case 201: /* classDecl: _PARAM TYPE_ dottedName */ +#line 565 ".\\src\\coreclr\\ilasm\\asmparse.y" { int n = PASM->m_pCurClass->FindTyPar((yyvsp[0].string)); if(n >= 0) PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[n].CAList(); else PASM->report->error("Type parameter '%s' undefined\n",(yyvsp[0].string)); } -#line 4980 "prebuilt\\asmparse.cpp" +#line 5014 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 200: /* classDecl: _PARAM CONSTRAINT_ '[' int32 ']' ',' typeSpec */ -#line 569 "asmparse.y" + case 202: /* classDecl: _PARAM CONSTRAINT_ '[' int32 ']' ',' typeSpec */ +#line 571 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddGenericParamConstraint((yyvsp[-3].int32), 0, (yyvsp[0].token)); } -#line 4986 "prebuilt\\asmparse.cpp" +#line 5020 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 201: /* classDecl: _PARAM CONSTRAINT_ dottedName ',' typeSpec */ -#line 570 "asmparse.y" + case 203: /* classDecl: _PARAM CONSTRAINT_ dottedName ',' typeSpec */ +#line 572 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddGenericParamConstraint(0, (yyvsp[-2].string), (yyvsp[0].token)); } -#line 4992 "prebuilt\\asmparse.cpp" +#line 5026 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 202: /* classDecl: _INTERFACEIMPL TYPE_ typeSpec customDescr */ -#line 571 "asmparse.y" + case 204: /* classDecl: _INTERFACEIMPL TYPE_ typeSpec customDescr */ +#line 573 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[0].cad)->tkInterfacePair = (yyvsp[-1].token); if(PASM->m_pCustomDescrList) PASM->m_pCustomDescrList->PUSH((yyvsp[0].cad)); } -#line 5001 "prebuilt\\asmparse.cpp" +#line 5035 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 203: /* fieldDecl: _FIELD repeatOpt fieldAttr type dottedName atOpt initOpt */ -#line 579 "asmparse.y" + case 205: /* fieldDecl: _FIELD repeatOpt fieldAttr type dottedName atOpt initOpt */ +#line 581 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-3].binstr)->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); PASM->AddField((yyvsp[-2].string), (yyvsp[-3].binstr), (yyvsp[-4].fieldAttr), (yyvsp[-1].string), (yyvsp[0].binstr), (yyvsp[-5].int32)); } -#line 5008 "prebuilt\\asmparse.cpp" +#line 5042 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 204: /* fieldAttr: %empty */ -#line 583 "asmparse.y" + case 206: /* fieldAttr: %empty */ +#line 585 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) 0; } -#line 5014 "prebuilt\\asmparse.cpp" +#line 5048 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 205: /* fieldAttr: fieldAttr STATIC_ */ -#line 584 "asmparse.y" + case 207: /* fieldAttr: fieldAttr STATIC_ */ +#line 586 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].fieldAttr) | fdStatic); } -#line 5020 "prebuilt\\asmparse.cpp" +#line 5054 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 206: /* fieldAttr: fieldAttr PUBLIC_ */ -#line 585 "asmparse.y" + case 208: /* fieldAttr: fieldAttr PUBLIC_ */ +#line 587 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdPublic); } -#line 5026 "prebuilt\\asmparse.cpp" +#line 5060 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 207: /* fieldAttr: fieldAttr PRIVATE_ */ -#line 586 "asmparse.y" + case 209: /* fieldAttr: fieldAttr PRIVATE_ */ +#line 588 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdPrivate); } -#line 5032 "prebuilt\\asmparse.cpp" +#line 5066 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 208: /* fieldAttr: fieldAttr FAMILY_ */ -#line 587 "asmparse.y" + case 210: /* fieldAttr: fieldAttr FAMILY_ */ +#line 589 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdFamily); } -#line 5038 "prebuilt\\asmparse.cpp" +#line 5072 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 209: /* fieldAttr: fieldAttr INITONLY_ */ -#line 588 "asmparse.y" + case 211: /* fieldAttr: fieldAttr INITONLY_ */ +#line 590 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].fieldAttr) | fdInitOnly); } -#line 5044 "prebuilt\\asmparse.cpp" +#line 5078 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 210: /* fieldAttr: fieldAttr RTSPECIALNAME_ */ -#line 589 "asmparse.y" + case 212: /* fieldAttr: fieldAttr RTSPECIALNAME_ */ +#line 591 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (yyvsp[-1].fieldAttr); } -#line 5050 "prebuilt\\asmparse.cpp" +#line 5084 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 211: /* fieldAttr: fieldAttr SPECIALNAME_ */ -#line 590 "asmparse.y" + case 213: /* fieldAttr: fieldAttr SPECIALNAME_ */ +#line 592 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].fieldAttr) | fdSpecialName); } -#line 5056 "prebuilt\\asmparse.cpp" +#line 5090 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 212: /* fieldAttr: fieldAttr MARSHAL_ '(' marshalBlob ')' */ -#line 603 "asmparse.y" + case 214: /* fieldAttr: fieldAttr MARSHAL_ '(' marshalBlob ')' */ +#line 605 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pMarshal = (yyvsp[-1].binstr); } -#line 5062 "prebuilt\\asmparse.cpp" +#line 5096 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 213: /* fieldAttr: fieldAttr ASSEMBLY_ */ -#line 604 "asmparse.y" + case 215: /* fieldAttr: fieldAttr ASSEMBLY_ */ +#line 606 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdAssembly); } -#line 5068 "prebuilt\\asmparse.cpp" +#line 5102 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 214: /* fieldAttr: fieldAttr FAMANDASSEM_ */ -#line 605 "asmparse.y" + case 216: /* fieldAttr: fieldAttr FAMANDASSEM_ */ +#line 607 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdFamANDAssem); } -#line 5074 "prebuilt\\asmparse.cpp" +#line 5108 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 215: /* fieldAttr: fieldAttr FAMORASSEM_ */ -#line 606 "asmparse.y" + case 217: /* fieldAttr: fieldAttr FAMORASSEM_ */ +#line 608 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdFamORAssem); } -#line 5080 "prebuilt\\asmparse.cpp" +#line 5114 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 216: /* fieldAttr: fieldAttr PRIVATESCOPE_ */ -#line 607 "asmparse.y" + case 218: /* fieldAttr: fieldAttr PRIVATESCOPE_ */ +#line 609 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) (((yyvsp[-1].fieldAttr) & ~mdMemberAccessMask) | fdPrivateScope); } -#line 5086 "prebuilt\\asmparse.cpp" +#line 5120 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 217: /* fieldAttr: fieldAttr LITERAL_ */ -#line 608 "asmparse.y" + case 219: /* fieldAttr: fieldAttr LITERAL_ */ +#line 610 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].fieldAttr) | fdLiteral); } -#line 5092 "prebuilt\\asmparse.cpp" +#line 5126 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 218: /* fieldAttr: fieldAttr NOTSERIALIZED_ */ -#line 609 "asmparse.y" + case 220: /* fieldAttr: fieldAttr NOTSERIALIZED_ */ +#line 611 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].fieldAttr) | fdNotSerialized); } -#line 5098 "prebuilt\\asmparse.cpp" +#line 5132 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 219: /* fieldAttr: fieldAttr FLAGS_ '(' int32 ')' */ -#line 610 "asmparse.y" + case 221: /* fieldAttr: fieldAttr FLAGS_ '(' int32 ')' */ +#line 612 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fieldAttr) = (CorFieldAttr) ((yyvsp[-1].int32)); } -#line 5104 "prebuilt\\asmparse.cpp" +#line 5138 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 220: /* atOpt: %empty */ -#line 613 "asmparse.y" + case 222: /* atOpt: %empty */ +#line 615 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = 0; } -#line 5110 "prebuilt\\asmparse.cpp" +#line 5144 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 221: /* atOpt: AT_ id */ -#line 614 "asmparse.y" + case 223: /* atOpt: AT_ id */ +#line 616 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 5116 "prebuilt\\asmparse.cpp" +#line 5150 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 222: /* initOpt: %empty */ -#line 617 "asmparse.y" + case 224: /* initOpt: %empty */ +#line 619 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = NULL; } -#line 5122 "prebuilt\\asmparse.cpp" +#line 5156 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 223: /* initOpt: '=' fieldInit */ -#line 618 "asmparse.y" + case 225: /* initOpt: '=' fieldInit */ +#line 620 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 5128 "prebuilt\\asmparse.cpp" +#line 5162 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 224: /* repeatOpt: %empty */ -#line 621 "asmparse.y" + case 226: /* repeatOpt: %empty */ +#line 623 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0xFFFFFFFF; } -#line 5134 "prebuilt\\asmparse.cpp" +#line 5168 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 225: /* repeatOpt: '[' int32 ']' */ -#line 622 "asmparse.y" + case 227: /* repeatOpt: '[' int32 ']' */ +#line 624 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32); } -#line 5140 "prebuilt\\asmparse.cpp" +#line 5174 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 226: /* methodRef: callConv type typeSpec DCOLON methodName tyArgs0 '(' sigArgs0 ')' */ -#line 627 "asmparse.y" + case 228: /* methodRef: callConv type typeSpec DCOLON methodName tyArgs0 '(' sigArgs0 ')' */ +#line 629 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetArgNameList(); if ((yyvsp[-3].binstr) == NULL) { @@ -5157,21 +5191,21 @@ yyparse (void) parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, (yyvsp[-3].binstr))); } } -#line 5161 "prebuilt\\asmparse.cpp" +#line 5195 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 227: /* methodRef: callConv type typeSpec DCOLON methodName genArityNotEmpty '(' sigArgs0 ')' */ -#line 644 "asmparse.y" + case 229: /* methodRef: callConv type typeSpec DCOLON methodName genArityNotEmpty '(' sigArgs0 ')' */ +#line 646 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetArgNameList(); if((iCallConv)&&(((yyvsp[-8].int32) & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); (yyval.token) = PASM->MakeMemberRef((yyvsp[-6].token), (yyvsp[-4].string), parser->MakeSig((yyvsp[-8].int32) | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, (yyvsp[-7].binstr), (yyvsp[-1].binstr), (yyvsp[-3].int32))); } -#line 5171 "prebuilt\\asmparse.cpp" +#line 5205 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 228: /* methodRef: callConv type methodName tyArgs0 '(' sigArgs0 ')' */ -#line 650 "asmparse.y" + case 230: /* methodRef: callConv type methodName tyArgs0 '(' sigArgs0 ')' */ +#line 652 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetArgNameList(); if ((yyvsp[-3].binstr) == NULL) { @@ -5187,300 +5221,300 @@ yyparse (void) parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, (yyvsp[-3].binstr))); } } -#line 5191 "prebuilt\\asmparse.cpp" +#line 5225 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 229: /* methodRef: callConv type methodName genArityNotEmpty '(' sigArgs0 ')' */ -#line 666 "asmparse.y" + case 231: /* methodRef: callConv type methodName genArityNotEmpty '(' sigArgs0 ')' */ +#line 668 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetArgNameList(); if((iCallConv)&&(((yyvsp[-6].int32) & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); (yyval.token) = PASM->MakeMemberRef(mdTokenNil, (yyvsp[-4].string), parser->MakeSig((yyvsp[-6].int32) | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, (yyvsp[-5].binstr), (yyvsp[-1].binstr), (yyvsp[-3].int32))); } -#line 5200 "prebuilt\\asmparse.cpp" +#line 5234 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 230: /* methodRef: mdtoken */ -#line 670 "asmparse.y" + case 232: /* methodRef: mdtoken */ +#line 672 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); } -#line 5206 "prebuilt\\asmparse.cpp" +#line 5240 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 231: /* methodRef: TYPEDEF_M */ -#line 671 "asmparse.y" + case 233: /* methodRef: TYPEDEF_M */ +#line 673 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].tdd)->m_tkTypeSpec; } -#line 5212 "prebuilt\\asmparse.cpp" +#line 5246 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 232: /* methodRef: TYPEDEF_MR */ -#line 672 "asmparse.y" + case 234: /* methodRef: TYPEDEF_MR */ +#line 674 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].tdd)->m_tkTypeSpec; } -#line 5218 "prebuilt\\asmparse.cpp" +#line 5252 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 233: /* callConv: INSTANCE_ callConv */ -#line 675 "asmparse.y" + case 235: /* callConv: INSTANCE_ callConv */ +#line 677 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = ((yyvsp[0].int32) | IMAGE_CEE_CS_CALLCONV_HASTHIS); } -#line 5224 "prebuilt\\asmparse.cpp" +#line 5258 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 234: /* callConv: EXPLICIT_ callConv */ -#line 676 "asmparse.y" + case 236: /* callConv: EXPLICIT_ callConv */ +#line 678 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = ((yyvsp[0].int32) | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } -#line 5230 "prebuilt\\asmparse.cpp" +#line 5264 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 235: /* callConv: callKind */ -#line 677 "asmparse.y" + case 237: /* callConv: callKind */ +#line 679 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[0].int32); } -#line 5236 "prebuilt\\asmparse.cpp" +#line 5270 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 236: /* callConv: CALLCONV_ '(' int32 ')' */ -#line 678 "asmparse.y" + case 238: /* callConv: CALLCONV_ '(' int32 ')' */ +#line 680 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32); } -#line 5242 "prebuilt\\asmparse.cpp" +#line 5276 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 237: /* callKind: %empty */ -#line 681 "asmparse.y" + case 239: /* callKind: %empty */ +#line 683 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_DEFAULT; } -#line 5248 "prebuilt\\asmparse.cpp" +#line 5282 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 238: /* callKind: DEFAULT_ */ -#line 682 "asmparse.y" + case 240: /* callKind: DEFAULT_ */ +#line 684 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_DEFAULT; } -#line 5254 "prebuilt\\asmparse.cpp" +#line 5288 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 239: /* callKind: VARARG_ */ -#line 683 "asmparse.y" + case 241: /* callKind: VARARG_ */ +#line 685 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_VARARG; } -#line 5260 "prebuilt\\asmparse.cpp" +#line 5294 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 240: /* callKind: UNMANAGED_ CDECL_ */ -#line 684 "asmparse.y" + case 242: /* callKind: UNMANAGED_ CDECL_ */ +#line 686 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_C; } -#line 5266 "prebuilt\\asmparse.cpp" +#line 5300 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 241: /* callKind: UNMANAGED_ STDCALL_ */ -#line 685 "asmparse.y" + case 243: /* callKind: UNMANAGED_ STDCALL_ */ +#line 687 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_STDCALL; } -#line 5272 "prebuilt\\asmparse.cpp" +#line 5306 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 242: /* callKind: UNMANAGED_ THISCALL_ */ -#line 686 "asmparse.y" + case 244: /* callKind: UNMANAGED_ THISCALL_ */ +#line 688 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_THISCALL; } -#line 5278 "prebuilt\\asmparse.cpp" +#line 5312 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 243: /* callKind: UNMANAGED_ FASTCALL_ */ -#line 687 "asmparse.y" + case 245: /* callKind: UNMANAGED_ FASTCALL_ */ +#line 689 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_FASTCALL; } -#line 5284 "prebuilt\\asmparse.cpp" +#line 5318 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 244: /* callKind: UNMANAGED_ */ -#line 688 "asmparse.y" + case 246: /* callKind: UNMANAGED_ */ +#line 690 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = IMAGE_CEE_CS_CALLCONV_UNMANAGED; } -#line 5290 "prebuilt\\asmparse.cpp" +#line 5324 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 245: /* mdtoken: MDTOKEN_ '(' int32 ')' */ -#line 691 "asmparse.y" + case 247: /* mdtoken: MDTOKEN_ '(' int32 ')' */ +#line 693 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[-1].int32); } -#line 5296 "prebuilt\\asmparse.cpp" +#line 5330 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 246: /* memberRef: methodSpec methodRef */ -#line 694 "asmparse.y" + case 248: /* memberRef: methodSpec methodRef */ +#line 696 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = parser->m_ANSFirst.POP(); PASM->m_lastArgName = parser->m_ANSLast.POP(); PASM->SetMemberRefFixup((yyvsp[0].token),iOpcodeLen); } -#line 5306 "prebuilt\\asmparse.cpp" +#line 5340 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 247: /* memberRef: FIELD_ type typeSpec DCOLON dottedName */ -#line 700 "asmparse.y" + case 249: /* memberRef: FIELD_ type typeSpec DCOLON dottedName */ +#line 702 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-3].binstr)->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); (yyval.token) = PASM->MakeMemberRef((yyvsp[-2].token), (yyvsp[0].string), (yyvsp[-3].binstr)); PASM->SetMemberRefFixup((yyval.token),iOpcodeLen); } -#line 5314 "prebuilt\\asmparse.cpp" +#line 5348 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 248: /* memberRef: FIELD_ type dottedName */ -#line 704 "asmparse.y" + case 250: /* memberRef: FIELD_ type dottedName */ +#line 706 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-1].binstr)->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); (yyval.token) = PASM->MakeMemberRef(mdTokenNil, (yyvsp[0].string), (yyvsp[-1].binstr)); PASM->SetMemberRefFixup((yyval.token),iOpcodeLen); } -#line 5322 "prebuilt\\asmparse.cpp" +#line 5356 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 249: /* memberRef: FIELD_ TYPEDEF_F */ -#line 707 "asmparse.y" + case 251: /* memberRef: FIELD_ TYPEDEF_F */ +#line 709 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].tdd)->m_tkTypeSpec; PASM->SetMemberRefFixup((yyval.token),iOpcodeLen); } -#line 5329 "prebuilt\\asmparse.cpp" +#line 5363 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 250: /* memberRef: FIELD_ TYPEDEF_MR */ -#line 709 "asmparse.y" + case 252: /* memberRef: FIELD_ TYPEDEF_MR */ +#line 711 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].tdd)->m_tkTypeSpec; PASM->SetMemberRefFixup((yyval.token),iOpcodeLen); } -#line 5336 "prebuilt\\asmparse.cpp" +#line 5370 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 251: /* memberRef: mdtoken */ -#line 711 "asmparse.y" + case 253: /* memberRef: mdtoken */ +#line 713 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); PASM->SetMemberRefFixup((yyval.token),iOpcodeLen); } -#line 5343 "prebuilt\\asmparse.cpp" +#line 5377 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 252: /* eventHead: _EVENT eventAttr typeSpec dottedName */ -#line 716 "asmparse.y" + case 254: /* eventHead: _EVENT eventAttr typeSpec dottedName */ +#line 718 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetEvent((yyvsp[0].string), (yyvsp[-1].token), (yyvsp[-2].eventAttr)); } -#line 5349 "prebuilt\\asmparse.cpp" +#line 5383 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 253: /* eventHead: _EVENT eventAttr dottedName */ -#line 717 "asmparse.y" + case 255: /* eventHead: _EVENT eventAttr dottedName */ +#line 719 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetEvent((yyvsp[0].string), mdTypeRefNil, (yyvsp[-1].eventAttr)); } -#line 5355 "prebuilt\\asmparse.cpp" +#line 5389 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 254: /* eventAttr: %empty */ -#line 721 "asmparse.y" + case 256: /* eventAttr: %empty */ +#line 723 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.eventAttr) = (CorEventAttr) 0; } -#line 5361 "prebuilt\\asmparse.cpp" +#line 5395 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 255: /* eventAttr: eventAttr RTSPECIALNAME_ */ -#line 722 "asmparse.y" + case 257: /* eventAttr: eventAttr RTSPECIALNAME_ */ +#line 724 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.eventAttr) = (yyvsp[-1].eventAttr); } -#line 5367 "prebuilt\\asmparse.cpp" +#line 5401 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 256: /* eventAttr: eventAttr SPECIALNAME_ */ -#line 723 "asmparse.y" + case 258: /* eventAttr: eventAttr SPECIALNAME_ */ +#line 725 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.eventAttr) = (CorEventAttr) ((yyvsp[-1].eventAttr) | evSpecialName); } -#line 5373 "prebuilt\\asmparse.cpp" +#line 5407 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 259: /* eventDecl: _ADDON methodRef */ -#line 730 "asmparse.y" + case 261: /* eventDecl: _ADDON methodRef */ +#line 732 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetEventMethod(0, (yyvsp[0].token)); } -#line 5379 "prebuilt\\asmparse.cpp" +#line 5413 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 260: /* eventDecl: _REMOVEON methodRef */ -#line 731 "asmparse.y" + case 262: /* eventDecl: _REMOVEON methodRef */ +#line 733 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetEventMethod(1, (yyvsp[0].token)); } -#line 5385 "prebuilt\\asmparse.cpp" +#line 5419 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 261: /* eventDecl: _FIRE methodRef */ -#line 732 "asmparse.y" + case 263: /* eventDecl: _FIRE methodRef */ +#line 734 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetEventMethod(2, (yyvsp[0].token)); } -#line 5391 "prebuilt\\asmparse.cpp" +#line 5425 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 262: /* eventDecl: _OTHER methodRef */ -#line 733 "asmparse.y" + case 264: /* eventDecl: _OTHER methodRef */ +#line 735 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetEventMethod(3, (yyvsp[0].token)); } -#line 5397 "prebuilt\\asmparse.cpp" +#line 5431 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 267: /* propHead: _PROPERTY propAttr callConv type dottedName '(' sigArgs0 ')' initOpt */ -#line 742 "asmparse.y" + case 269: /* propHead: _PROPERTY propAttr callConv type dottedName '(' sigArgs0 ')' initOpt */ +#line 744 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetProp((yyvsp[-4].string), parser->MakeSig((IMAGE_CEE_CS_CALLCONV_PROPERTY | ((yyvsp[-6].int32) & IMAGE_CEE_CS_CALLCONV_HASTHIS)),(yyvsp[-5].binstr),(yyvsp[-2].binstr)), (yyvsp[-7].propAttr), (yyvsp[0].binstr));} -#line 5405 "prebuilt\\asmparse.cpp" +#line 5439 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 268: /* propAttr: %empty */ -#line 747 "asmparse.y" + case 270: /* propAttr: %empty */ +#line 749 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.propAttr) = (CorPropertyAttr) 0; } -#line 5411 "prebuilt\\asmparse.cpp" +#line 5445 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 269: /* propAttr: propAttr RTSPECIALNAME_ */ -#line 748 "asmparse.y" + case 271: /* propAttr: propAttr RTSPECIALNAME_ */ +#line 750 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.propAttr) = (yyvsp[-1].propAttr); } -#line 5417 "prebuilt\\asmparse.cpp" +#line 5451 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 270: /* propAttr: propAttr SPECIALNAME_ */ -#line 749 "asmparse.y" + case 272: /* propAttr: propAttr SPECIALNAME_ */ +#line 751 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.propAttr) = (CorPropertyAttr) ((yyvsp[-1].propAttr) | prSpecialName); } -#line 5423 "prebuilt\\asmparse.cpp" +#line 5457 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 273: /* propDecl: _SET methodRef */ -#line 757 "asmparse.y" + case 275: /* propDecl: _SET methodRef */ +#line 759 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPropMethod(0, (yyvsp[0].token)); } -#line 5429 "prebuilt\\asmparse.cpp" +#line 5463 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 274: /* propDecl: _GET methodRef */ -#line 758 "asmparse.y" + case 276: /* propDecl: _GET methodRef */ +#line 760 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPropMethod(1, (yyvsp[0].token)); } -#line 5435 "prebuilt\\asmparse.cpp" +#line 5469 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 275: /* propDecl: _OTHER methodRef */ -#line 759 "asmparse.y" + case 277: /* propDecl: _OTHER methodRef */ +#line 761 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPropMethod(2, (yyvsp[0].token)); } -#line 5441 "prebuilt\\asmparse.cpp" +#line 5475 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 280: /* methodHeadPart1: _METHOD */ -#line 767 "asmparse.y" + case 282: /* methodHeadPart1: _METHOD */ +#line 769 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetForNextMethod(); uMethodBeginLine = PASM->m_ulCurLine; uMethodBeginColumn=PASM->m_ulCurColumn; } -#line 5450 "prebuilt\\asmparse.cpp" +#line 5484 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 281: /* marshalClause: %empty */ -#line 773 "asmparse.y" + case 283: /* marshalClause: %empty */ +#line 775 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = NULL; } -#line 5456 "prebuilt\\asmparse.cpp" +#line 5490 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 282: /* marshalClause: MARSHAL_ '(' marshalBlob ')' */ -#line 774 "asmparse.y" + case 284: /* marshalClause: MARSHAL_ '(' marshalBlob ')' */ +#line 776 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 5462 "prebuilt\\asmparse.cpp" +#line 5496 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 283: /* marshalBlob: nativeType */ -#line 777 "asmparse.y" + case 285: /* marshalBlob: nativeType */ +#line 779 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 5468 "prebuilt\\asmparse.cpp" +#line 5502 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 284: /* marshalBlob: marshalBlobHead hexbytes '}' */ -#line 778 "asmparse.y" + case 286: /* marshalBlob: marshalBlobHead hexbytes '}' */ +#line 780 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 5474 "prebuilt\\asmparse.cpp" +#line 5508 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 285: /* marshalBlobHead: '{' */ -#line 781 "asmparse.y" + case 287: /* marshalBlobHead: '{' */ +#line 783 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 5480 "prebuilt\\asmparse.cpp" +#line 5514 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 286: /* methodHead: methodHeadPart1 methAttr callConv paramAttr type marshalClause methodName typarsClause '(' sigArgs0 ')' implAttr '{' */ -#line 785 "asmparse.y" + case 288: /* methodHead: methodHeadPart1 methAttr callConv paramAttr type marshalClause methodName typarsClause '(' sigArgs0 ')' implAttr '{' */ +#line 787 ".\\src\\coreclr\\ilasm\\asmparse.y" { BinStr* sig; if ((yyvsp[-5].typarlist) == NULL) sig = parser->MakeSig((yyvsp[-10].int32), (yyvsp[-8].binstr), (yyvsp[-3].binstr)); else { @@ -5494,456 +5528,456 @@ yyparse (void) PASM->m_pCurMethod->m_ulLines[0] = uMethodBeginLine; PASM->m_pCurMethod->m_ulColumns[0]=uMethodBeginColumn; } -#line 5498 "prebuilt\\asmparse.cpp" +#line 5532 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 287: /* methAttr: %empty */ -#line 800 "asmparse.y" + case 289: /* methAttr: %empty */ +#line 802 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) 0; } -#line 5504 "prebuilt\\asmparse.cpp" +#line 5538 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 288: /* methAttr: methAttr STATIC_ */ -#line 801 "asmparse.y" + case 290: /* methAttr: methAttr STATIC_ */ +#line 803 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdStatic); } -#line 5510 "prebuilt\\asmparse.cpp" +#line 5544 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 289: /* methAttr: methAttr PUBLIC_ */ -#line 802 "asmparse.y" + case 291: /* methAttr: methAttr PUBLIC_ */ +#line 804 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdPublic); } -#line 5516 "prebuilt\\asmparse.cpp" +#line 5550 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 290: /* methAttr: methAttr PRIVATE_ */ -#line 803 "asmparse.y" + case 292: /* methAttr: methAttr PRIVATE_ */ +#line 805 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdPrivate); } -#line 5522 "prebuilt\\asmparse.cpp" +#line 5556 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 291: /* methAttr: methAttr FAMILY_ */ -#line 804 "asmparse.y" + case 293: /* methAttr: methAttr FAMILY_ */ +#line 806 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdFamily); } -#line 5528 "prebuilt\\asmparse.cpp" +#line 5562 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 292: /* methAttr: methAttr FINAL_ */ -#line 805 "asmparse.y" + case 294: /* methAttr: methAttr FINAL_ */ +#line 807 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdFinal); } -#line 5534 "prebuilt\\asmparse.cpp" +#line 5568 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 293: /* methAttr: methAttr SPECIALNAME_ */ -#line 806 "asmparse.y" + case 295: /* methAttr: methAttr SPECIALNAME_ */ +#line 808 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdSpecialName); } -#line 5540 "prebuilt\\asmparse.cpp" +#line 5574 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 294: /* methAttr: methAttr VIRTUAL_ */ -#line 807 "asmparse.y" + case 296: /* methAttr: methAttr VIRTUAL_ */ +#line 809 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdVirtual); } -#line 5546 "prebuilt\\asmparse.cpp" +#line 5580 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 295: /* methAttr: methAttr STRICT_ */ -#line 808 "asmparse.y" + case 297: /* methAttr: methAttr STRICT_ */ +#line 810 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdCheckAccessOnOverride); } -#line 5552 "prebuilt\\asmparse.cpp" +#line 5586 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 296: /* methAttr: methAttr ABSTRACT_ */ -#line 809 "asmparse.y" + case 298: /* methAttr: methAttr ABSTRACT_ */ +#line 811 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdAbstract); } -#line 5558 "prebuilt\\asmparse.cpp" +#line 5592 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 297: /* methAttr: methAttr ASSEMBLY_ */ -#line 810 "asmparse.y" + case 299: /* methAttr: methAttr ASSEMBLY_ */ +#line 812 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdAssem); } -#line 5564 "prebuilt\\asmparse.cpp" +#line 5598 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 298: /* methAttr: methAttr FAMANDASSEM_ */ -#line 811 "asmparse.y" + case 300: /* methAttr: methAttr FAMANDASSEM_ */ +#line 813 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdFamANDAssem); } -#line 5570 "prebuilt\\asmparse.cpp" +#line 5604 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 299: /* methAttr: methAttr FAMORASSEM_ */ -#line 812 "asmparse.y" + case 301: /* methAttr: methAttr FAMORASSEM_ */ +#line 814 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdFamORAssem); } -#line 5576 "prebuilt\\asmparse.cpp" +#line 5610 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 300: /* methAttr: methAttr PRIVATESCOPE_ */ -#line 813 "asmparse.y" + case 302: /* methAttr: methAttr PRIVATESCOPE_ */ +#line 815 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) (((yyvsp[-1].methAttr) & ~mdMemberAccessMask) | mdPrivateScope); } -#line 5582 "prebuilt\\asmparse.cpp" +#line 5616 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 301: /* methAttr: methAttr HIDEBYSIG_ */ -#line 814 "asmparse.y" + case 303: /* methAttr: methAttr HIDEBYSIG_ */ +#line 816 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdHideBySig); } -#line 5588 "prebuilt\\asmparse.cpp" +#line 5622 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 302: /* methAttr: methAttr NEWSLOT_ */ -#line 815 "asmparse.y" + case 304: /* methAttr: methAttr NEWSLOT_ */ +#line 817 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdNewSlot); } -#line 5594 "prebuilt\\asmparse.cpp" +#line 5628 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 303: /* methAttr: methAttr RTSPECIALNAME_ */ -#line 816 "asmparse.y" + case 305: /* methAttr: methAttr RTSPECIALNAME_ */ +#line 818 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (yyvsp[-1].methAttr); } -#line 5600 "prebuilt\\asmparse.cpp" +#line 5634 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 304: /* methAttr: methAttr UNMANAGEDEXP_ */ -#line 817 "asmparse.y" + case 306: /* methAttr: methAttr UNMANAGEDEXP_ */ +#line 819 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdUnmanagedExport); } -#line 5606 "prebuilt\\asmparse.cpp" +#line 5640 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 305: /* methAttr: methAttr REQSECOBJ_ */ -#line 818 "asmparse.y" + case 307: /* methAttr: methAttr REQSECOBJ_ */ +#line 820 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].methAttr) | mdRequireSecObject); } -#line 5612 "prebuilt\\asmparse.cpp" +#line 5646 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 306: /* methAttr: methAttr FLAGS_ '(' int32 ')' */ -#line 819 "asmparse.y" + case 308: /* methAttr: methAttr FLAGS_ '(' int32 ')' */ +#line 821 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-1].int32)); } -#line 5618 "prebuilt\\asmparse.cpp" +#line 5652 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 307: /* methAttr: methAttr PINVOKEIMPL_ '(' compQstring AS_ compQstring pinvAttr ')' */ -#line 821 "asmparse.y" + case 309: /* methAttr: methAttr PINVOKEIMPL_ '(' compQstring AS_ compQstring pinvAttr ')' */ +#line 823 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPinvoke((yyvsp[-4].binstr),0,(yyvsp[-2].binstr),(yyvsp[-1].pinvAttr)); (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-7].methAttr) | mdPinvokeImpl); } -#line 5625 "prebuilt\\asmparse.cpp" +#line 5659 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 308: /* methAttr: methAttr PINVOKEIMPL_ '(' compQstring pinvAttr ')' */ -#line 824 "asmparse.y" + case 310: /* methAttr: methAttr PINVOKEIMPL_ '(' compQstring pinvAttr ')' */ +#line 826 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPinvoke((yyvsp[-2].binstr),0,NULL,(yyvsp[-1].pinvAttr)); (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-5].methAttr) | mdPinvokeImpl); } -#line 5632 "prebuilt\\asmparse.cpp" +#line 5666 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 309: /* methAttr: methAttr PINVOKEIMPL_ '(' pinvAttr ')' */ -#line 827 "asmparse.y" + case 311: /* methAttr: methAttr PINVOKEIMPL_ '(' pinvAttr ')' */ +#line 829 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetPinvoke(new BinStr(),0,NULL,(yyvsp[-1].pinvAttr)); (yyval.methAttr) = (CorMethodAttr) ((yyvsp[-4].methAttr) | mdPinvokeImpl); } -#line 5639 "prebuilt\\asmparse.cpp" +#line 5673 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 310: /* pinvAttr: %empty */ -#line 831 "asmparse.y" + case 312: /* pinvAttr: %empty */ +#line 833 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) 0; } -#line 5645 "prebuilt\\asmparse.cpp" +#line 5679 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 311: /* pinvAttr: pinvAttr NOMANGLE_ */ -#line 832 "asmparse.y" + case 313: /* pinvAttr: pinvAttr NOMANGLE_ */ +#line 834 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmNoMangle); } -#line 5651 "prebuilt\\asmparse.cpp" +#line 5685 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 312: /* pinvAttr: pinvAttr ANSI_ */ -#line 833 "asmparse.y" + case 314: /* pinvAttr: pinvAttr ANSI_ */ +#line 835 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCharSetAnsi); } -#line 5657 "prebuilt\\asmparse.cpp" +#line 5691 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 313: /* pinvAttr: pinvAttr UNICODE_ */ -#line 834 "asmparse.y" + case 315: /* pinvAttr: pinvAttr UNICODE_ */ +#line 836 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCharSetUnicode); } -#line 5663 "prebuilt\\asmparse.cpp" +#line 5697 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 314: /* pinvAttr: pinvAttr AUTOCHAR_ */ -#line 835 "asmparse.y" + case 316: /* pinvAttr: pinvAttr AUTOCHAR_ */ +#line 837 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCharSetAuto); } -#line 5669 "prebuilt\\asmparse.cpp" +#line 5703 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 315: /* pinvAttr: pinvAttr LASTERR_ */ -#line 836 "asmparse.y" + case 317: /* pinvAttr: pinvAttr LASTERR_ */ +#line 838 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmSupportsLastError); } -#line 5675 "prebuilt\\asmparse.cpp" +#line 5709 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 316: /* pinvAttr: pinvAttr WINAPI_ */ -#line 837 "asmparse.y" + case 318: /* pinvAttr: pinvAttr WINAPI_ */ +#line 839 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCallConvWinapi); } -#line 5681 "prebuilt\\asmparse.cpp" +#line 5715 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 317: /* pinvAttr: pinvAttr CDECL_ */ -#line 838 "asmparse.y" + case 319: /* pinvAttr: pinvAttr CDECL_ */ +#line 840 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCallConvCdecl); } -#line 5687 "prebuilt\\asmparse.cpp" +#line 5721 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 318: /* pinvAttr: pinvAttr STDCALL_ */ -#line 839 "asmparse.y" + case 320: /* pinvAttr: pinvAttr STDCALL_ */ +#line 841 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCallConvStdcall); } -#line 5693 "prebuilt\\asmparse.cpp" +#line 5727 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 319: /* pinvAttr: pinvAttr THISCALL_ */ -#line 840 "asmparse.y" + case 321: /* pinvAttr: pinvAttr THISCALL_ */ +#line 842 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCallConvThiscall); } -#line 5699 "prebuilt\\asmparse.cpp" +#line 5733 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 320: /* pinvAttr: pinvAttr FASTCALL_ */ -#line 841 "asmparse.y" + case 322: /* pinvAttr: pinvAttr FASTCALL_ */ +#line 843 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].pinvAttr) | pmCallConvFastcall); } -#line 5705 "prebuilt\\asmparse.cpp" +#line 5739 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 321: /* pinvAttr: pinvAttr BESTFIT_ ':' ON_ */ -#line 842 "asmparse.y" + case 323: /* pinvAttr: pinvAttr BESTFIT_ ':' ON_ */ +#line 844 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-3].pinvAttr) | pmBestFitEnabled); } -#line 5711 "prebuilt\\asmparse.cpp" +#line 5745 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 322: /* pinvAttr: pinvAttr BESTFIT_ ':' OFF_ */ -#line 843 "asmparse.y" + case 324: /* pinvAttr: pinvAttr BESTFIT_ ':' OFF_ */ +#line 845 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-3].pinvAttr) | pmBestFitDisabled); } -#line 5717 "prebuilt\\asmparse.cpp" +#line 5751 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 323: /* pinvAttr: pinvAttr CHARMAPERROR_ ':' ON_ */ -#line 844 "asmparse.y" + case 325: /* pinvAttr: pinvAttr CHARMAPERROR_ ':' ON_ */ +#line 846 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-3].pinvAttr) | pmThrowOnUnmappableCharEnabled); } -#line 5723 "prebuilt\\asmparse.cpp" +#line 5757 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 324: /* pinvAttr: pinvAttr CHARMAPERROR_ ':' OFF_ */ -#line 845 "asmparse.y" + case 326: /* pinvAttr: pinvAttr CHARMAPERROR_ ':' OFF_ */ +#line 847 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-3].pinvAttr) | pmThrowOnUnmappableCharDisabled); } -#line 5729 "prebuilt\\asmparse.cpp" +#line 5763 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 325: /* pinvAttr: pinvAttr FLAGS_ '(' int32 ')' */ -#line 846 "asmparse.y" + case 327: /* pinvAttr: pinvAttr FLAGS_ '(' int32 ')' */ +#line 848 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pinvAttr) = (CorPinvokeMap) ((yyvsp[-1].int32)); } -#line 5735 "prebuilt\\asmparse.cpp" +#line 5769 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 326: /* methodName: _CTOR */ -#line 849 "asmparse.y" + case 328: /* methodName: _CTOR */ +#line 851 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString(COR_CTOR_METHOD_NAME); } -#line 5741 "prebuilt\\asmparse.cpp" +#line 5775 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 327: /* methodName: _CCTOR */ -#line 850 "asmparse.y" + case 329: /* methodName: _CCTOR */ +#line 852 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newString(COR_CCTOR_METHOD_NAME); } -#line 5747 "prebuilt\\asmparse.cpp" +#line 5781 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 328: /* methodName: dottedName */ -#line 851 "asmparse.y" + case 330: /* methodName: dottedName */ +#line 853 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 5753 "prebuilt\\asmparse.cpp" +#line 5787 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 329: /* paramAttr: %empty */ -#line 854 "asmparse.y" + case 331: /* paramAttr: %empty */ +#line 856 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0; } -#line 5759 "prebuilt\\asmparse.cpp" +#line 5793 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 330: /* paramAttr: paramAttr '[' IN_ ']' */ -#line 855 "asmparse.y" + case 332: /* paramAttr: paramAttr '[' IN_ ']' */ +#line 857 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-3].int32) | pdIn; } -#line 5765 "prebuilt\\asmparse.cpp" +#line 5799 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 331: /* paramAttr: paramAttr '[' OUT_ ']' */ -#line 856 "asmparse.y" + case 333: /* paramAttr: paramAttr '[' OUT_ ']' */ +#line 858 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-3].int32) | pdOut; } -#line 5771 "prebuilt\\asmparse.cpp" +#line 5805 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 332: /* paramAttr: paramAttr '[' OPT_ ']' */ -#line 857 "asmparse.y" + case 334: /* paramAttr: paramAttr '[' OPT_ ']' */ +#line 859 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-3].int32) | pdOptional; } -#line 5777 "prebuilt\\asmparse.cpp" +#line 5811 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 333: /* paramAttr: paramAttr '[' int32 ']' */ -#line 858 "asmparse.y" + case 335: /* paramAttr: paramAttr '[' int32 ']' */ +#line 860 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) + 1; } -#line 5783 "prebuilt\\asmparse.cpp" +#line 5817 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 334: /* implAttr: %empty */ -#line 861 "asmparse.y" + case 336: /* implAttr: %empty */ +#line 863 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (miIL | miManaged); } -#line 5789 "prebuilt\\asmparse.cpp" +#line 5823 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 335: /* implAttr: implAttr NATIVE_ */ -#line 862 "asmparse.y" + case 337: /* implAttr: implAttr NATIVE_ */ +#line 864 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (((yyvsp[-1].implAttr) & 0xFFF4) | miNative); } -#line 5795 "prebuilt\\asmparse.cpp" +#line 5829 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 336: /* implAttr: implAttr CIL_ */ -#line 863 "asmparse.y" + case 338: /* implAttr: implAttr CIL_ */ +#line 865 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (((yyvsp[-1].implAttr) & 0xFFF4) | miIL); } -#line 5801 "prebuilt\\asmparse.cpp" +#line 5835 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 337: /* implAttr: implAttr OPTIL_ */ -#line 864 "asmparse.y" + case 339: /* implAttr: implAttr OPTIL_ */ +#line 866 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (((yyvsp[-1].implAttr) & 0xFFF4) | miOPTIL); } -#line 5807 "prebuilt\\asmparse.cpp" +#line 5841 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 338: /* implAttr: implAttr MANAGED_ */ -#line 865 "asmparse.y" + case 340: /* implAttr: implAttr MANAGED_ */ +#line 867 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (((yyvsp[-1].implAttr) & 0xFFFB) | miManaged); } -#line 5813 "prebuilt\\asmparse.cpp" +#line 5847 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 339: /* implAttr: implAttr UNMANAGED_ */ -#line 866 "asmparse.y" + case 341: /* implAttr: implAttr UNMANAGED_ */ +#line 868 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) (((yyvsp[-1].implAttr) & 0xFFFB) | miUnmanaged); } -#line 5819 "prebuilt\\asmparse.cpp" +#line 5853 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 340: /* implAttr: implAttr FORWARDREF_ */ -#line 867 "asmparse.y" + case 342: /* implAttr: implAttr FORWARDREF_ */ +#line 869 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miForwardRef); } -#line 5825 "prebuilt\\asmparse.cpp" +#line 5859 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 341: /* implAttr: implAttr PRESERVESIG_ */ -#line 868 "asmparse.y" + case 343: /* implAttr: implAttr PRESERVESIG_ */ +#line 870 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miPreserveSig); } -#line 5831 "prebuilt\\asmparse.cpp" +#line 5865 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 342: /* implAttr: implAttr RUNTIME_ */ -#line 869 "asmparse.y" + case 344: /* implAttr: implAttr RUNTIME_ */ +#line 871 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miRuntime); } -#line 5837 "prebuilt\\asmparse.cpp" +#line 5871 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 343: /* implAttr: implAttr INTERNALCALL_ */ -#line 870 "asmparse.y" + case 345: /* implAttr: implAttr INTERNALCALL_ */ +#line 872 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miInternalCall); } -#line 5843 "prebuilt\\asmparse.cpp" +#line 5877 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 344: /* implAttr: implAttr SYNCHRONIZED_ */ -#line 871 "asmparse.y" + case 346: /* implAttr: implAttr SYNCHRONIZED_ */ +#line 873 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miSynchronized); } -#line 5849 "prebuilt\\asmparse.cpp" +#line 5883 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 345: /* implAttr: implAttr NOINLINING_ */ -#line 872 "asmparse.y" + case 347: /* implAttr: implAttr NOINLINING_ */ +#line 874 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miNoInlining); } -#line 5855 "prebuilt\\asmparse.cpp" +#line 5889 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 346: /* implAttr: implAttr AGGRESSIVEINLINING_ */ -#line 873 "asmparse.y" + case 348: /* implAttr: implAttr AGGRESSIVEINLINING_ */ +#line 875 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miAggressiveInlining); } -#line 5861 "prebuilt\\asmparse.cpp" +#line 5895 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 347: /* implAttr: implAttr NOOPTIMIZATION_ */ -#line 874 "asmparse.y" + case 349: /* implAttr: implAttr NOOPTIMIZATION_ */ +#line 876 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miNoOptimization); } -#line 5867 "prebuilt\\asmparse.cpp" +#line 5901 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 348: /* implAttr: implAttr AGGRESSIVEOPTIMIZATION_ */ -#line 875 "asmparse.y" + case 350: /* implAttr: implAttr AGGRESSIVEOPTIMIZATION_ */ +#line 877 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miAggressiveOptimization); } -#line 5873 "prebuilt\\asmparse.cpp" +#line 5907 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 349: /* implAttr: implAttr ASYNC_ */ -#line 876 "asmparse.y" + case 351: /* implAttr: implAttr ASYNC_ */ +#line 878 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].implAttr) | miAsync); } -#line 5879 "prebuilt\\asmparse.cpp" +#line 5913 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 350: /* implAttr: implAttr FLAGS_ '(' int32 ')' */ -#line 877 "asmparse.y" + case 352: /* implAttr: implAttr FLAGS_ '(' int32 ')' */ +#line 879 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.implAttr) = (CorMethodImpl) ((yyvsp[-1].int32)); } -#line 5885 "prebuilt\\asmparse.cpp" +#line 5919 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 351: /* localsHead: _LOCALS */ -#line 880 "asmparse.y" + case 353: /* localsHead: _LOCALS */ +#line 882 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL; } -#line 5892 "prebuilt\\asmparse.cpp" +#line 5926 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 354: /* methodDecl: _EMITBYTE int32 */ -#line 888 "asmparse.y" + case 356: /* methodDecl: _EMITBYTE int32 */ +#line 890 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitByte((yyvsp[0].int32)); } -#line 5898 "prebuilt\\asmparse.cpp" +#line 5932 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 355: /* methodDecl: sehBlock */ -#line 889 "asmparse.y" + case 357: /* methodDecl: sehBlock */ +#line 891 ".\\src\\coreclr\\ilasm\\asmparse.y" { delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } -#line 5904 "prebuilt\\asmparse.cpp" +#line 5938 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 356: /* methodDecl: _MAXSTACK int32 */ -#line 890 "asmparse.y" + case 358: /* methodDecl: _MAXSTACK int32 */ +#line 892 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitMaxStack((yyvsp[0].int32)); } -#line 5910 "prebuilt\\asmparse.cpp" +#line 5944 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 357: /* methodDecl: localsHead '(' sigArgs0 ')' */ -#line 891 "asmparse.y" + case 359: /* methodDecl: localsHead '(' sigArgs0 ')' */ +#line 893 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, (yyvsp[-1].binstr))); } -#line 5917 "prebuilt\\asmparse.cpp" +#line 5951 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 358: /* methodDecl: localsHead INIT_ '(' sigArgs0 ')' */ -#line 893 "asmparse.y" + case 360: /* methodDecl: localsHead INIT_ '(' sigArgs0 ')' */ +#line 895 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitZeroInit(); PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, (yyvsp[-1].binstr))); } -#line 5925 "prebuilt\\asmparse.cpp" +#line 5959 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 359: /* methodDecl: _ENTRYPOINT */ -#line 896 "asmparse.y" + case 361: /* methodDecl: _ENTRYPOINT */ +#line 898 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitEntryPoint(); } -#line 5931 "prebuilt\\asmparse.cpp" +#line 5965 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 360: /* methodDecl: _ZEROINIT */ -#line 897 "asmparse.y" + case 362: /* methodDecl: _ZEROINIT */ +#line 899 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitZeroInit(); } -#line 5937 "prebuilt\\asmparse.cpp" +#line 5971 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 363: /* methodDecl: id ':' */ -#line 900 "asmparse.y" + case 365: /* methodDecl: id ':' */ +#line 902 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddLabel(PASM->m_CurPC,(yyvsp[-1].string)); /*PASM->EmitLabel($1);*/ } -#line 5943 "prebuilt\\asmparse.cpp" +#line 5977 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 369: /* methodDecl: _EXPORT '[' int32 ']' */ -#line 906 "asmparse.y" + case 371: /* methodDecl: _EXPORT '[' int32 ']' */ +#line 908 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF) { PASM->m_pCurMethod->m_dwExportOrdinal = (yyvsp[-1].int32); @@ -5954,11 +5988,11 @@ yyparse (void) else PASM->report->warn("Duplicate .export directive, ignored\n"); } -#line 5958 "prebuilt\\asmparse.cpp" +#line 5992 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 370: /* methodDecl: _EXPORT '[' int32 ']' AS_ id */ -#line 916 "asmparse.y" + case 372: /* methodDecl: _EXPORT '[' int32 ']' AS_ id */ +#line 918 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF) { PASM->m_pCurMethod->m_dwExportOrdinal = (yyvsp[-3].int32); @@ -5969,68 +6003,68 @@ yyparse (void) else PASM->report->warn("Duplicate .export directive, ignored\n"); } -#line 5973 "prebuilt\\asmparse.cpp" +#line 6007 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 371: /* methodDecl: _VTENTRY int32 ':' int32 */ -#line 926 "asmparse.y" + case 373: /* methodDecl: _VTENTRY int32 ':' int32 */ +#line 928 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurMethod->m_wVTEntry = (WORD)(yyvsp[-2].int32); PASM->m_pCurMethod->m_wVTSlot = (WORD)(yyvsp[0].int32); } -#line 5980 "prebuilt\\asmparse.cpp" +#line 6014 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 372: /* methodDecl: _OVERRIDE typeSpec DCOLON methodName */ -#line 929 "asmparse.y" + case 374: /* methodDecl: _OVERRIDE typeSpec DCOLON methodName */ +#line 931 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddMethodImpl((yyvsp[-2].token),(yyvsp[0].string),NULL,mdTokenNil,NULL,NULL); } -#line 5986 "prebuilt\\asmparse.cpp" +#line 6020 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 373: /* methodDecl: _OVERRIDE METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' */ -#line 932 "asmparse.y" + case 375: /* methodDecl: _OVERRIDE METHOD_ callConv type typeSpec DCOLON methodName genArity '(' sigArgs0 ')' */ +#line 934 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddMethodImpl((yyvsp[-6].token),(yyvsp[-4].string), ((yyvsp[-3].int32)==0 ? parser->MakeSig((yyvsp[-8].int32),(yyvsp[-7].binstr),(yyvsp[-1].binstr)) : parser->MakeSig((yyvsp[-8].int32)| IMAGE_CEE_CS_CALLCONV_GENERIC,(yyvsp[-7].binstr),(yyvsp[-1].binstr),(yyvsp[-3].int32))) ,mdTokenNil,NULL,NULL); PASM->ResetArgNameList(); } -#line 5997 "prebuilt\\asmparse.cpp" +#line 6031 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 375: /* methodDecl: _PARAM TYPE_ '[' int32 ']' */ -#line 939 "asmparse.y" + case 377: /* methodDecl: _PARAM TYPE_ '[' int32 ']' */ +#line 941 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(((yyvsp[-1].int32) > 0) && ((yyvsp[-1].int32) <= (int)PASM->m_pCurMethod->m_NumTyPars)) PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[(yyvsp[-1].int32)-1].CAList(); else PASM->report->error("Type parameter index out of range\n"); } -#line 6007 "prebuilt\\asmparse.cpp" +#line 6041 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 376: /* methodDecl: _PARAM TYPE_ dottedName */ -#line 944 "asmparse.y" + case 378: /* methodDecl: _PARAM TYPE_ dottedName */ +#line 946 ".\\src\\coreclr\\ilasm\\asmparse.y" { int n = PASM->m_pCurMethod->FindTyPar((yyvsp[0].string)); if(n >= 0) PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[n].CAList(); else PASM->report->error("Type parameter '%s' undefined\n",(yyvsp[0].string)); } -#line 6018 "prebuilt\\asmparse.cpp" +#line 6052 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 377: /* methodDecl: _PARAM CONSTRAINT_ '[' int32 ']' ',' typeSpec */ -#line 950 "asmparse.y" + case 379: /* methodDecl: _PARAM CONSTRAINT_ '[' int32 ']' ',' typeSpec */ +#line 952 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurMethod->AddGenericParamConstraint((yyvsp[-3].int32), 0, (yyvsp[0].token)); } -#line 6024 "prebuilt\\asmparse.cpp" +#line 6058 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 378: /* methodDecl: _PARAM CONSTRAINT_ dottedName ',' typeSpec */ -#line 951 "asmparse.y" + case 380: /* methodDecl: _PARAM CONSTRAINT_ dottedName ',' typeSpec */ +#line 953 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurMethod->AddGenericParamConstraint(0, (yyvsp[-2].string), (yyvsp[0].token)); } -#line 6030 "prebuilt\\asmparse.cpp" +#line 6064 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 379: /* methodDecl: _PARAM '[' int32 ']' initOpt */ -#line 954 "asmparse.y" + case 381: /* methodDecl: _PARAM '[' int32 ']' initOpt */ +#line 956 ".\\src\\coreclr\\ilasm\\asmparse.y" { if( (yyvsp[-2].int32) ) { ARG_NAME_LIST* pAN=PASM->findArg(PASM->m_pCurMethod->m_firstArgName, (yyvsp[-2].int32) - 1); if(pAN) @@ -6049,241 +6083,241 @@ yyparse (void) } PASM->m_tkCurrentCVOwner = 0; } -#line 6053 "prebuilt\\asmparse.cpp" +#line 6087 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 380: /* scopeBlock: scopeOpen methodDecls '}' */ -#line 974 "asmparse.y" + case 382: /* scopeBlock: scopeOpen methodDecls '}' */ +#line 976 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurMethod->CloseScope(); } -#line 6059 "prebuilt\\asmparse.cpp" +#line 6093 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 381: /* scopeOpen: '{' */ -#line 977 "asmparse.y" + case 383: /* scopeOpen: '{' */ +#line 979 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_pCurMethod->OpenScope(); } -#line 6065 "prebuilt\\asmparse.cpp" +#line 6099 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 385: /* tryBlock: tryHead scopeBlock */ -#line 988 "asmparse.y" + case 387: /* tryBlock: tryHead scopeBlock */ +#line 990 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->tryTo = PASM->m_CurPC; } -#line 6071 "prebuilt\\asmparse.cpp" +#line 6105 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 386: /* tryBlock: tryHead id TO_ id */ -#line 989 "asmparse.y" + case 388: /* tryBlock: tryHead id TO_ id */ +#line 991 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetTryLabels((yyvsp[-2].string), (yyvsp[0].string)); } -#line 6077 "prebuilt\\asmparse.cpp" +#line 6111 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 387: /* tryBlock: tryHead int32 TO_ int32 */ -#line 990 "asmparse.y" + case 389: /* tryBlock: tryHead int32 TO_ int32 */ +#line 992 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = (yyvsp[-2].int32); PASM->m_SEHD->tryTo = (yyvsp[0].int32);} } -#line 6084 "prebuilt\\asmparse.cpp" +#line 6118 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 388: /* tryHead: _TRY */ -#line 994 "asmparse.y" + case 390: /* tryHead: _TRY */ +#line 996 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->NewSEHDescriptor(); PASM->m_SEHD->tryFrom = PASM->m_CurPC; } -#line 6091 "prebuilt\\asmparse.cpp" +#line 6125 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 389: /* sehClause: catchClause handlerBlock */ -#line 999 "asmparse.y" + case 391: /* sehClause: catchClause handlerBlock */ +#line 1001 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitTry(); } -#line 6097 "prebuilt\\asmparse.cpp" +#line 6131 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 390: /* sehClause: filterClause handlerBlock */ -#line 1000 "asmparse.y" + case 392: /* sehClause: filterClause handlerBlock */ +#line 1002 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitTry(); } -#line 6103 "prebuilt\\asmparse.cpp" +#line 6137 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 391: /* sehClause: finallyClause handlerBlock */ -#line 1001 "asmparse.y" + case 393: /* sehClause: finallyClause handlerBlock */ +#line 1003 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitTry(); } -#line 6109 "prebuilt\\asmparse.cpp" +#line 6143 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 392: /* sehClause: faultClause handlerBlock */ -#line 1002 "asmparse.y" + case 394: /* sehClause: faultClause handlerBlock */ +#line 1004 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitTry(); } -#line 6115 "prebuilt\\asmparse.cpp" +#line 6149 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 393: /* filterClause: filterHead scopeBlock */ -#line 1006 "asmparse.y" + case 395: /* filterClause: filterHead scopeBlock */ +#line 1008 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6121 "prebuilt\\asmparse.cpp" +#line 6155 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 394: /* filterClause: filterHead id */ -#line 1007 "asmparse.y" + case 396: /* filterClause: filterHead id */ +#line 1009 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetFilterLabel((yyvsp[0].string)); PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6128 "prebuilt\\asmparse.cpp" +#line 6162 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 395: /* filterClause: filterHead int32 */ -#line 1009 "asmparse.y" + case 397: /* filterClause: filterHead int32 */ +#line 1011 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehFilter = (yyvsp[0].int32); PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6135 "prebuilt\\asmparse.cpp" +#line 6169 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 396: /* filterHead: FILTER_ */ -#line 1013 "asmparse.y" + case 398: /* filterHead: FILTER_ */ +#line 1015 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER; PASM->m_SEHD->sehFilter = PASM->m_CurPC; } -#line 6142 "prebuilt\\asmparse.cpp" +#line 6176 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 397: /* catchClause: CATCH_ typeSpec */ -#line 1017 "asmparse.y" + case 399: /* catchClause: CATCH_ typeSpec */ +#line 1019 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE; PASM->SetCatchClass((yyvsp[0].token)); PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6150 "prebuilt\\asmparse.cpp" +#line 6184 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 398: /* finallyClause: FINALLY_ */ -#line 1022 "asmparse.y" + case 400: /* finallyClause: FINALLY_ */ +#line 1024 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY; PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6157 "prebuilt\\asmparse.cpp" +#line 6191 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 399: /* faultClause: FAULT_ */ -#line 1026 "asmparse.y" + case 401: /* faultClause: FAULT_ */ +#line 1028 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT; PASM->m_SEHD->sehHandler = PASM->m_CurPC; } -#line 6164 "prebuilt\\asmparse.cpp" +#line 6198 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 400: /* handlerBlock: scopeBlock */ -#line 1030 "asmparse.y" + case 402: /* handlerBlock: scopeBlock */ +#line 1032 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } -#line 6170 "prebuilt\\asmparse.cpp" +#line 6204 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 401: /* handlerBlock: HANDLER_ id TO_ id */ -#line 1031 "asmparse.y" + case 403: /* handlerBlock: HANDLER_ id TO_ id */ +#line 1033 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetHandlerLabels((yyvsp[-2].string), (yyvsp[0].string)); } -#line 6176 "prebuilt\\asmparse.cpp" +#line 6210 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 402: /* handlerBlock: HANDLER_ int32 TO_ int32 */ -#line 1032 "asmparse.y" + case 404: /* handlerBlock: HANDLER_ int32 TO_ int32 */ +#line 1034 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->m_SEHD->sehHandler = (yyvsp[-2].int32); PASM->m_SEHD->sehHandlerTo = (yyvsp[0].int32); } -#line 6183 "prebuilt\\asmparse.cpp" +#line 6217 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 404: /* ddHead: _DATA tls id '=' */ -#line 1040 "asmparse.y" + case 406: /* ddHead: _DATA tls id '=' */ +#line 1042 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitDataLabel((yyvsp[-1].string)); } -#line 6189 "prebuilt\\asmparse.cpp" +#line 6223 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 406: /* tls: %empty */ -#line 1044 "asmparse.y" + case 408: /* tls: %empty */ +#line 1046 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetDataSection(); } -#line 6195 "prebuilt\\asmparse.cpp" +#line 6229 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 407: /* tls: TLS_ */ -#line 1045 "asmparse.y" + case 409: /* tls: TLS_ */ +#line 1047 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetTLSSection(); } -#line 6201 "prebuilt\\asmparse.cpp" +#line 6235 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 408: /* tls: CIL_ */ -#line 1046 "asmparse.y" + case 410: /* tls: CIL_ */ +#line 1048 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetILSection(); } -#line 6207 "prebuilt\\asmparse.cpp" +#line 6241 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 413: /* ddItemCount: %empty */ -#line 1057 "asmparse.y" + case 415: /* ddItemCount: %empty */ +#line 1059 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 1; } -#line 6213 "prebuilt\\asmparse.cpp" +#line 6247 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 414: /* ddItemCount: '[' int32 ']' */ -#line 1058 "asmparse.y" + case 416: /* ddItemCount: '[' int32 ']' */ +#line 1060 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32); if((yyvsp[-1].int32) <= 0) { PASM->report->error("Illegal item count: %d\n",(yyvsp[-1].int32)); if(!PASM->OnErrGo) (yyval.int32) = 1; }} -#line 6221 "prebuilt\\asmparse.cpp" +#line 6255 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 415: /* ddItem: CHAR_ '*' '(' compQstring ')' */ -#line 1063 "asmparse.y" + case 417: /* ddItem: CHAR_ '*' '(' compQstring ')' */ +#line 1065 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitDataString((yyvsp[-1].binstr)); } -#line 6227 "prebuilt\\asmparse.cpp" +#line 6261 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 416: /* ddItem: '&' '(' id ')' */ -#line 1064 "asmparse.y" + case 418: /* ddItem: '&' '(' id ')' */ +#line 1066 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitDD((yyvsp[-1].string)); } -#line 6233 "prebuilt\\asmparse.cpp" +#line 6267 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 417: /* ddItem: bytearrayhead bytes ')' */ -#line 1065 "asmparse.y" + case 419: /* ddItem: bytearrayhead bytes ')' */ +#line 1067 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData((yyvsp[-1].binstr)->ptr(),(yyvsp[-1].binstr)->length()); } -#line 6239 "prebuilt\\asmparse.cpp" +#line 6273 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 418: /* ddItem: FLOAT32_ '(' float64 ')' ddItemCount */ -#line 1067 "asmparse.y" + case 420: /* ddItem: FLOAT32_ '(' float64 ')' ddItemCount */ +#line 1069 ".\\src\\coreclr\\ilasm\\asmparse.y" { float f = (float) (*(yyvsp[-2].float64)); float* p = new (nothrow) float[(yyvsp[0].int32)]; if(p != NULL) { for(int i=0; i < (yyvsp[0].int32); i++) p[i] = f; PASM->EmitData(p, sizeof(float)*(yyvsp[0].int32)); delete (yyvsp[-2].float64); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(float)*(yyvsp[0].int32)); } -#line 6250 "prebuilt\\asmparse.cpp" +#line 6284 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 419: /* ddItem: FLOAT64_ '(' float64 ')' ddItemCount */ -#line 1074 "asmparse.y" + case 421: /* ddItem: FLOAT64_ '(' float64 ')' ddItemCount */ +#line 1076 ".\\src\\coreclr\\ilasm\\asmparse.y" { double* p = new (nothrow) double[(yyvsp[0].int32)]; if(p != NULL) { for(int i=0; i<(yyvsp[0].int32); i++) p[i] = *((yyvsp[-2].float64)); PASM->EmitData(p, sizeof(double)*(yyvsp[0].int32)); delete (yyvsp[-2].float64); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(double)*(yyvsp[0].int32)); } -#line 6261 "prebuilt\\asmparse.cpp" +#line 6295 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 420: /* ddItem: INT64_ '(' int64 ')' ddItemCount */ -#line 1081 "asmparse.y" + case 422: /* ddItem: INT64_ '(' int64 ')' ddItemCount */ +#line 1083 ".\\src\\coreclr\\ilasm\\asmparse.y" { int64_t* p = new (nothrow) int64_t[(yyvsp[0].int32)]; if(p != NULL) { for(int i=0; i<(yyvsp[0].int32); i++) p[i] = *((yyvsp[-2].int64)); PASM->EmitData(p, sizeof(int64_t)*(yyvsp[0].int32)); delete (yyvsp[-2].int64); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(int64_t)*(yyvsp[0].int32)); } -#line 6272 "prebuilt\\asmparse.cpp" +#line 6306 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 421: /* ddItem: INT32_ '(' int32 ')' ddItemCount */ -#line 1088 "asmparse.y" + case 423: /* ddItem: INT32_ '(' int32 ')' ddItemCount */ +#line 1090 ".\\src\\coreclr\\ilasm\\asmparse.y" { int32_t* p = new (nothrow) int32_t[(yyvsp[0].int32)]; if(p != NULL) { for(int i=0; i<(yyvsp[0].int32); i++) p[i] = (yyvsp[-2].int32); PASM->EmitData(p, sizeof(int32_t)*(yyvsp[0].int32)); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(int32_t)*(yyvsp[0].int32)); } -#line 6283 "prebuilt\\asmparse.cpp" +#line 6317 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 422: /* ddItem: INT16_ '(' int32 ')' ddItemCount */ -#line 1095 "asmparse.y" + case 424: /* ddItem: INT16_ '(' int32 ')' ddItemCount */ +#line 1097 ".\\src\\coreclr\\ilasm\\asmparse.y" { int16_t i = (int16_t) (yyvsp[-2].int32); FAIL_UNLESS(i == (yyvsp[-2].int32), ("Value %d too big\n", (yyvsp[-2].int32))); int16_t* p = new (nothrow) int16_t[(yyvsp[0].int32)]; if(p != NULL) { @@ -6291,11 +6325,11 @@ yyparse (void) PASM->EmitData(p, sizeof(int16_t)*(yyvsp[0].int32)); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(int16_t)*(yyvsp[0].int32)); } -#line 6295 "prebuilt\\asmparse.cpp" +#line 6329 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 423: /* ddItem: INT8_ '(' int32 ')' ddItemCount */ -#line 1103 "asmparse.y" + case 425: /* ddItem: INT8_ '(' int32 ')' ddItemCount */ +#line 1105 ".\\src\\coreclr\\ilasm\\asmparse.y" { int8_t i = (int8_t) (yyvsp[-2].int32); FAIL_UNLESS(i == (yyvsp[-2].int32), ("Value %d too big\n", (yyvsp[-2].int32))); int8_t* p = new (nothrow) int8_t[(yyvsp[0].int32)]; if(p != NULL) { @@ -6303,726 +6337,726 @@ yyparse (void) PASM->EmitData(p, sizeof(int8_t)*(yyvsp[0].int32)); delete [] p; } else PASM->report->error("Out of memory emitting data block %d bytes\n", sizeof(int8_t)*(yyvsp[0].int32)); } -#line 6307 "prebuilt\\asmparse.cpp" +#line 6341 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 424: /* ddItem: FLOAT32_ ddItemCount */ -#line 1110 "asmparse.y" + case 426: /* ddItem: FLOAT32_ ddItemCount */ +#line 1112 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(float)*(yyvsp[0].int32)); } -#line 6313 "prebuilt\\asmparse.cpp" +#line 6347 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 425: /* ddItem: FLOAT64_ ddItemCount */ -#line 1111 "asmparse.y" + case 427: /* ddItem: FLOAT64_ ddItemCount */ +#line 1113 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(double)*(yyvsp[0].int32)); } -#line 6319 "prebuilt\\asmparse.cpp" +#line 6353 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 426: /* ddItem: INT64_ ddItemCount */ -#line 1112 "asmparse.y" + case 428: /* ddItem: INT64_ ddItemCount */ +#line 1114 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(int64_t)*(yyvsp[0].int32)); } -#line 6325 "prebuilt\\asmparse.cpp" +#line 6359 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 427: /* ddItem: INT32_ ddItemCount */ -#line 1113 "asmparse.y" + case 429: /* ddItem: INT32_ ddItemCount */ +#line 1115 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(int32_t)*(yyvsp[0].int32)); } -#line 6331 "prebuilt\\asmparse.cpp" +#line 6365 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 428: /* ddItem: INT16_ ddItemCount */ -#line 1114 "asmparse.y" + case 430: /* ddItem: INT16_ ddItemCount */ +#line 1116 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(int16_t)*(yyvsp[0].int32)); } -#line 6337 "prebuilt\\asmparse.cpp" +#line 6371 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 429: /* ddItem: INT8_ ddItemCount */ -#line 1115 "asmparse.y" + case 431: /* ddItem: INT8_ ddItemCount */ +#line 1117 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitData(NULL, sizeof(int8_t)*(yyvsp[0].int32)); } -#line 6343 "prebuilt\\asmparse.cpp" +#line 6377 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 430: /* fieldSerInit: FLOAT32_ '(' float64 ')' */ -#line 1119 "asmparse.y" + case 432: /* fieldSerInit: FLOAT32_ '(' float64 ')' */ +#line 1121 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R4); float f = (float)(*(yyvsp[-1].float64)); (yyval.binstr)->appendInt32(*((int32_t*)&f)); delete (yyvsp[-1].float64); } -#line 6351 "prebuilt\\asmparse.cpp" +#line 6385 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 431: /* fieldSerInit: FLOAT64_ '(' float64 ')' */ -#line 1122 "asmparse.y" + case 433: /* fieldSerInit: FLOAT64_ '(' float64 ')' */ +#line 1124 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R8); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[-1].float64)); delete (yyvsp[-1].float64); } -#line 6358 "prebuilt\\asmparse.cpp" +#line 6392 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 432: /* fieldSerInit: FLOAT32_ '(' int32 ')' */ -#line 1124 "asmparse.y" + case 434: /* fieldSerInit: FLOAT32_ '(' int32 ')' */ +#line 1126 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 6365 "prebuilt\\asmparse.cpp" +#line 6399 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 433: /* fieldSerInit: FLOAT64_ '(' int64 ')' */ -#line 1126 "asmparse.y" + case 435: /* fieldSerInit: FLOAT64_ '(' int64 ')' */ +#line 1128 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R8); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[-1].int64)); delete (yyvsp[-1].int64); } -#line 6372 "prebuilt\\asmparse.cpp" +#line 6406 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 434: /* fieldSerInit: INT64_ '(' int64 ')' */ -#line 1128 "asmparse.y" + case 436: /* fieldSerInit: INT64_ '(' int64 ')' */ +#line 1130 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I8); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[-1].int64)); delete (yyvsp[-1].int64); } -#line 6379 "prebuilt\\asmparse.cpp" +#line 6413 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 435: /* fieldSerInit: INT32_ '(' int32 ')' */ -#line 1130 "asmparse.y" + case 437: /* fieldSerInit: INT32_ '(' int32 ')' */ +#line 1132 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 6386 "prebuilt\\asmparse.cpp" +#line 6420 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 436: /* fieldSerInit: INT16_ '(' int32 ')' */ -#line 1132 "asmparse.y" + case 438: /* fieldSerInit: INT16_ '(' int32 ')' */ +#line 1134 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I2); (yyval.binstr)->appendInt16((yyvsp[-1].int32)); } -#line 6393 "prebuilt\\asmparse.cpp" +#line 6427 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 437: /* fieldSerInit: INT8_ '(' int32 ')' */ -#line 1134 "asmparse.y" + case 439: /* fieldSerInit: INT8_ '(' int32 ')' */ +#line 1136 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I1); (yyval.binstr)->appendInt8((yyvsp[-1].int32)); } -#line 6400 "prebuilt\\asmparse.cpp" +#line 6434 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 438: /* fieldSerInit: UNSIGNED_ INT64_ '(' int64 ')' */ -#line 1136 "asmparse.y" + case 440: /* fieldSerInit: UNSIGNED_ INT64_ '(' int64 ')' */ +#line 1138 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U8); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[-1].int64)); delete (yyvsp[-1].int64); } -#line 6407 "prebuilt\\asmparse.cpp" +#line 6441 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 439: /* fieldSerInit: UNSIGNED_ INT32_ '(' int32 ')' */ -#line 1138 "asmparse.y" + case 441: /* fieldSerInit: UNSIGNED_ INT32_ '(' int32 ')' */ +#line 1140 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 6414 "prebuilt\\asmparse.cpp" +#line 6448 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 440: /* fieldSerInit: UNSIGNED_ INT16_ '(' int32 ')' */ -#line 1140 "asmparse.y" + case 442: /* fieldSerInit: UNSIGNED_ INT16_ '(' int32 ')' */ +#line 1142 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U2); (yyval.binstr)->appendInt16((yyvsp[-1].int32)); } -#line 6421 "prebuilt\\asmparse.cpp" +#line 6455 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 441: /* fieldSerInit: UNSIGNED_ INT8_ '(' int32 ')' */ -#line 1142 "asmparse.y" + case 443: /* fieldSerInit: UNSIGNED_ INT8_ '(' int32 ')' */ +#line 1144 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U1); (yyval.binstr)->appendInt8((yyvsp[-1].int32)); } -#line 6428 "prebuilt\\asmparse.cpp" +#line 6462 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 442: /* fieldSerInit: UINT64_ '(' int64 ')' */ -#line 1144 "asmparse.y" + case 444: /* fieldSerInit: UINT64_ '(' int64 ')' */ +#line 1146 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U8); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[-1].int64)); delete (yyvsp[-1].int64); } -#line 6435 "prebuilt\\asmparse.cpp" +#line 6469 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 443: /* fieldSerInit: UINT32_ '(' int32 ')' */ -#line 1146 "asmparse.y" + case 445: /* fieldSerInit: UINT32_ '(' int32 ')' */ +#line 1148 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 6442 "prebuilt\\asmparse.cpp" +#line 6476 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 444: /* fieldSerInit: UINT16_ '(' int32 ')' */ -#line 1148 "asmparse.y" + case 446: /* fieldSerInit: UINT16_ '(' int32 ')' */ +#line 1150 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U2); (yyval.binstr)->appendInt16((yyvsp[-1].int32)); } -#line 6449 "prebuilt\\asmparse.cpp" +#line 6483 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 445: /* fieldSerInit: UINT8_ '(' int32 ')' */ -#line 1150 "asmparse.y" + case 447: /* fieldSerInit: UINT8_ '(' int32 ')' */ +#line 1152 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U1); (yyval.binstr)->appendInt8((yyvsp[-1].int32)); } -#line 6456 "prebuilt\\asmparse.cpp" +#line 6490 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 446: /* fieldSerInit: CHAR_ '(' int32 ')' */ -#line 1152 "asmparse.y" + case 448: /* fieldSerInit: CHAR_ '(' int32 ')' */ +#line 1154 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_CHAR); (yyval.binstr)->appendInt16((yyvsp[-1].int32)); } -#line 6463 "prebuilt\\asmparse.cpp" +#line 6497 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 447: /* fieldSerInit: BOOL_ '(' truefalse ')' */ -#line 1154 "asmparse.y" + case 449: /* fieldSerInit: BOOL_ '(' truefalse ')' */ +#line 1156 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_BOOLEAN); (yyval.binstr)->appendInt8((yyvsp[-1].int32));} -#line 6470 "prebuilt\\asmparse.cpp" +#line 6504 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 448: /* fieldSerInit: bytearrayhead bytes ')' */ -#line 1156 "asmparse.y" + case 450: /* fieldSerInit: bytearrayhead bytes ')' */ +#line 1158 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_STRING); (yyval.binstr)->append((yyvsp[-1].binstr)); delete (yyvsp[-1].binstr);} -#line 6477 "prebuilt\\asmparse.cpp" +#line 6511 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 449: /* bytearrayhead: BYTEARRAY_ '(' */ -#line 1160 "asmparse.y" + case 451: /* bytearrayhead: BYTEARRAY_ '(' */ +#line 1162 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 6483 "prebuilt\\asmparse.cpp" +#line 6517 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 450: /* bytes: %empty */ -#line 1163 "asmparse.y" + case 452: /* bytes: %empty */ +#line 1165 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6489 "prebuilt\\asmparse.cpp" +#line 6523 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 451: /* bytes: hexbytes */ -#line 1164 "asmparse.y" + case 453: /* bytes: hexbytes */ +#line 1166 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 6495 "prebuilt\\asmparse.cpp" +#line 6529 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 452: /* hexbytes: HEXBYTE */ -#line 1167 "asmparse.y" + case 454: /* hexbytes: HEXBYTE */ +#line 1169 ".\\src\\coreclr\\ilasm\\asmparse.y" { int8_t i = (int8_t) (yyvsp[0].int32); (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(i); } -#line 6501 "prebuilt\\asmparse.cpp" +#line 6535 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 453: /* hexbytes: hexbytes HEXBYTE */ -#line 1168 "asmparse.y" + case 455: /* hexbytes: hexbytes HEXBYTE */ +#line 1170 ".\\src\\coreclr\\ilasm\\asmparse.y" { int8_t i = (int8_t) (yyvsp[0].int32); (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt8(i); } -#line 6507 "prebuilt\\asmparse.cpp" +#line 6541 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 454: /* fieldInit: fieldSerInit */ -#line 1172 "asmparse.y" + case 456: /* fieldInit: fieldSerInit */ +#line 1174 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 6513 "prebuilt\\asmparse.cpp" +#line 6547 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 455: /* fieldInit: compQstring */ -#line 1173 "asmparse.y" + case 457: /* fieldInit: compQstring */ +#line 1175 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = BinStrToUnicode((yyvsp[0].binstr),true); (yyval.binstr)->insertInt8(ELEMENT_TYPE_STRING);} -#line 6519 "prebuilt\\asmparse.cpp" +#line 6553 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 456: /* fieldInit: NULLREF_ */ -#line 1174 "asmparse.y" + case 458: /* fieldInit: NULLREF_ */ +#line 1176 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_CLASS); (yyval.binstr)->appendInt32(0); } -#line 6526 "prebuilt\\asmparse.cpp" +#line 6560 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 457: /* serInit: fieldSerInit */ -#line 1179 "asmparse.y" + case 459: /* serInit: fieldSerInit */ +#line 1181 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 6532 "prebuilt\\asmparse.cpp" +#line 6566 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 458: /* serInit: STRING_ '(' NULLREF_ ')' */ -#line 1180 "asmparse.y" + case 460: /* serInit: STRING_ '(' NULLREF_ ')' */ +#line 1182 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_STRING); (yyval.binstr)->appendInt8(0xFF); } -#line 6538 "prebuilt\\asmparse.cpp" +#line 6572 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 459: /* serInit: STRING_ '(' SQSTRING ')' */ -#line 1181 "asmparse.y" + case 461: /* serInit: STRING_ '(' SQSTRING ')' */ +#line 1183 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_STRING); AppendStringWithLength((yyval.binstr),(yyvsp[-1].string)); delete [] (yyvsp[-1].string);} -#line 6545 "prebuilt\\asmparse.cpp" +#line 6579 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 460: /* serInit: TYPE_ '(' CLASS_ SQSTRING ')' */ -#line 1183 "asmparse.y" + case 462: /* serInit: TYPE_ '(' CLASS_ SQSTRING ')' */ +#line 1185 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_TYPE); AppendStringWithLength((yyval.binstr),(yyvsp[-1].string)); delete [] (yyvsp[-1].string);} -#line 6552 "prebuilt\\asmparse.cpp" +#line 6586 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 461: /* serInit: TYPE_ '(' className ')' */ -#line 1185 "asmparse.y" + case 463: /* serInit: TYPE_ '(' className ')' */ +#line 1187 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_TYPE); AppendStringWithLength((yyval.binstr),PASM->ReflectionNotation((yyvsp[-1].token)));} -#line 6559 "prebuilt\\asmparse.cpp" +#line 6593 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 462: /* serInit: TYPE_ '(' NULLREF_ ')' */ -#line 1187 "asmparse.y" + case 464: /* serInit: TYPE_ '(' NULLREF_ ')' */ +#line 1189 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_TYPE); (yyval.binstr)->appendInt8(0xFF); } -#line 6565 "prebuilt\\asmparse.cpp" +#line 6599 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 463: /* serInit: OBJECT_ '(' serInit ')' */ -#line 1188 "asmparse.y" + case 465: /* serInit: OBJECT_ '(' serInit ')' */ +#line 1190 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} -#line 6571 "prebuilt\\asmparse.cpp" +#line 6605 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 464: /* serInit: FLOAT32_ '[' int32 ']' '(' f32seq ')' */ -#line 1190 "asmparse.y" + case 466: /* serInit: FLOAT32_ '[' int32 ']' '(' f32seq ')' */ +#line 1192 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_R4); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6579 "prebuilt\\asmparse.cpp" +#line 6613 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 465: /* serInit: FLOAT64_ '[' int32 ']' '(' f64seq ')' */ -#line 1194 "asmparse.y" + case 467: /* serInit: FLOAT64_ '[' int32 ']' '(' f64seq ')' */ +#line 1196 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_R8); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6587 "prebuilt\\asmparse.cpp" +#line 6621 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 466: /* serInit: INT64_ '[' int32 ']' '(' i64seq ')' */ -#line 1198 "asmparse.y" + case 468: /* serInit: INT64_ '[' int32 ']' '(' i64seq ')' */ +#line 1200 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_I8); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6595 "prebuilt\\asmparse.cpp" +#line 6629 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 467: /* serInit: INT32_ '[' int32 ']' '(' i32seq ')' */ -#line 1202 "asmparse.y" + case 469: /* serInit: INT32_ '[' int32 ']' '(' i32seq ')' */ +#line 1204 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_I4); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6603 "prebuilt\\asmparse.cpp" +#line 6637 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 468: /* serInit: INT16_ '[' int32 ']' '(' i16seq ')' */ -#line 1206 "asmparse.y" + case 470: /* serInit: INT16_ '[' int32 ']' '(' i16seq ')' */ +#line 1208 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_I2); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6611 "prebuilt\\asmparse.cpp" +#line 6645 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 469: /* serInit: INT8_ '[' int32 ']' '(' i8seq ')' */ -#line 1210 "asmparse.y" + case 471: /* serInit: INT8_ '[' int32 ']' '(' i8seq ')' */ +#line 1212 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_I1); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6619 "prebuilt\\asmparse.cpp" +#line 6653 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 470: /* serInit: UINT64_ '[' int32 ']' '(' i64seq ')' */ -#line 1214 "asmparse.y" + case 472: /* serInit: UINT64_ '[' int32 ']' '(' i64seq ')' */ +#line 1216 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U8); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6627 "prebuilt\\asmparse.cpp" +#line 6661 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 471: /* serInit: UINT32_ '[' int32 ']' '(' i32seq ')' */ -#line 1218 "asmparse.y" + case 473: /* serInit: UINT32_ '[' int32 ']' '(' i32seq ')' */ +#line 1220 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U4); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6635 "prebuilt\\asmparse.cpp" +#line 6669 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 472: /* serInit: UINT16_ '[' int32 ']' '(' i16seq ')' */ -#line 1222 "asmparse.y" + case 474: /* serInit: UINT16_ '[' int32 ']' '(' i16seq ')' */ +#line 1224 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U2); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6643 "prebuilt\\asmparse.cpp" +#line 6677 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 473: /* serInit: UINT8_ '[' int32 ']' '(' i8seq ')' */ -#line 1226 "asmparse.y" + case 475: /* serInit: UINT8_ '[' int32 ']' '(' i8seq ')' */ +#line 1228 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U1); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6651 "prebuilt\\asmparse.cpp" +#line 6685 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 474: /* serInit: UNSIGNED_ INT64_ '[' int32 ']' '(' i64seq ')' */ -#line 1230 "asmparse.y" + case 476: /* serInit: UNSIGNED_ INT64_ '[' int32 ']' '(' i64seq ')' */ +#line 1232 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U8); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6659 "prebuilt\\asmparse.cpp" +#line 6693 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 475: /* serInit: UNSIGNED_ INT32_ '[' int32 ']' '(' i32seq ')' */ -#line 1234 "asmparse.y" + case 477: /* serInit: UNSIGNED_ INT32_ '[' int32 ']' '(' i32seq ')' */ +#line 1236 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U4); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6667 "prebuilt\\asmparse.cpp" +#line 6701 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 476: /* serInit: UNSIGNED_ INT16_ '[' int32 ']' '(' i16seq ')' */ -#line 1238 "asmparse.y" + case 478: /* serInit: UNSIGNED_ INT16_ '[' int32 ']' '(' i16seq ')' */ +#line 1240 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U2); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6675 "prebuilt\\asmparse.cpp" +#line 6709 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 477: /* serInit: UNSIGNED_ INT8_ '[' int32 ']' '(' i8seq ')' */ -#line 1242 "asmparse.y" + case 479: /* serInit: UNSIGNED_ INT8_ '[' int32 ']' '(' i8seq ')' */ +#line 1244 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_U1); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6683 "prebuilt\\asmparse.cpp" +#line 6717 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 478: /* serInit: CHAR_ '[' int32 ']' '(' i16seq ')' */ -#line 1246 "asmparse.y" + case 480: /* serInit: CHAR_ '[' int32 ']' '(' i16seq ')' */ +#line 1248 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_CHAR); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6691 "prebuilt\\asmparse.cpp" +#line 6725 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 479: /* serInit: BOOL_ '[' int32 ']' '(' boolSeq ')' */ -#line 1250 "asmparse.y" + case 481: /* serInit: BOOL_ '[' int32 ']' '(' boolSeq ')' */ +#line 1252 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_BOOLEAN); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6699 "prebuilt\\asmparse.cpp" +#line 6733 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 480: /* serInit: STRING_ '[' int32 ']' '(' sqstringSeq ')' */ -#line 1254 "asmparse.y" + case 482: /* serInit: STRING_ '[' int32 ']' '(' sqstringSeq ')' */ +#line 1256 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_STRING); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6707 "prebuilt\\asmparse.cpp" +#line 6741 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 481: /* serInit: TYPE_ '[' int32 ']' '(' classSeq ')' */ -#line 1258 "asmparse.y" + case 483: /* serInit: TYPE_ '[' int32 ']' '(' classSeq ')' */ +#line 1260 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(SERIALIZATION_TYPE_TYPE); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6715 "prebuilt\\asmparse.cpp" +#line 6749 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 482: /* serInit: OBJECT_ '[' int32 ']' '(' objSeq ')' */ -#line 1262 "asmparse.y" + case 484: /* serInit: OBJECT_ '[' int32 ']' '(' objSeq ')' */ +#line 1264 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt32((yyvsp[-4].int32)); (yyval.binstr)->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 6723 "prebuilt\\asmparse.cpp" +#line 6757 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 483: /* f32seq: %empty */ -#line 1268 "asmparse.y" + case 485: /* f32seq: %empty */ +#line 1270 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6729 "prebuilt\\asmparse.cpp" +#line 6763 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 484: /* f32seq: f32seq float64 */ -#line 1269 "asmparse.y" + case 486: /* f32seq: f32seq float64 */ +#line 1271 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); float f = (float) (*(yyvsp[0].float64)); (yyval.binstr)->appendInt32(*((int32_t*)&f)); delete (yyvsp[0].float64); } -#line 6736 "prebuilt\\asmparse.cpp" +#line 6770 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 485: /* f32seq: f32seq int32 */ -#line 1271 "asmparse.y" + case 487: /* f32seq: f32seq int32 */ +#line 1273 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt32((yyvsp[0].int32)); } -#line 6743 "prebuilt\\asmparse.cpp" +#line 6777 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 486: /* f64seq: %empty */ -#line 1275 "asmparse.y" + case 488: /* f64seq: %empty */ +#line 1277 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6749 "prebuilt\\asmparse.cpp" +#line 6783 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 487: /* f64seq: f64seq float64 */ -#line 1276 "asmparse.y" + case 489: /* f64seq: f64seq float64 */ +#line 1278 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[0].float64)); delete (yyvsp[0].float64); } -#line 6756 "prebuilt\\asmparse.cpp" +#line 6790 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 488: /* f64seq: f64seq int64 */ -#line 1278 "asmparse.y" + case 490: /* f64seq: f64seq int64 */ +#line 1280 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[0].int64)); delete (yyvsp[0].int64); } -#line 6763 "prebuilt\\asmparse.cpp" +#line 6797 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 489: /* i64seq: %empty */ -#line 1282 "asmparse.y" + case 491: /* i64seq: %empty */ +#line 1284 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6769 "prebuilt\\asmparse.cpp" +#line 6803 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 490: /* i64seq: i64seq int64 */ -#line 1283 "asmparse.y" + case 492: /* i64seq: i64seq int64 */ +#line 1285 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt64((int64_t *)(yyvsp[0].int64)); delete (yyvsp[0].int64); } -#line 6776 "prebuilt\\asmparse.cpp" +#line 6810 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 491: /* i32seq: %empty */ -#line 1287 "asmparse.y" + case 493: /* i32seq: %empty */ +#line 1289 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6782 "prebuilt\\asmparse.cpp" +#line 6816 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 492: /* i32seq: i32seq int32 */ -#line 1288 "asmparse.y" + case 494: /* i32seq: i32seq int32 */ +#line 1290 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt32((yyvsp[0].int32));} -#line 6788 "prebuilt\\asmparse.cpp" +#line 6822 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 493: /* i16seq: %empty */ -#line 1291 "asmparse.y" + case 495: /* i16seq: %empty */ +#line 1293 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6794 "prebuilt\\asmparse.cpp" +#line 6828 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 494: /* i16seq: i16seq int32 */ -#line 1292 "asmparse.y" + case 496: /* i16seq: i16seq int32 */ +#line 1294 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt16((yyvsp[0].int32));} -#line 6800 "prebuilt\\asmparse.cpp" +#line 6834 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 495: /* i8seq: %empty */ -#line 1295 "asmparse.y" + case 497: /* i8seq: %empty */ +#line 1297 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6806 "prebuilt\\asmparse.cpp" +#line 6840 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 496: /* i8seq: i8seq int32 */ -#line 1296 "asmparse.y" + case 498: /* i8seq: i8seq int32 */ +#line 1298 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt8((yyvsp[0].int32)); } -#line 6812 "prebuilt\\asmparse.cpp" +#line 6846 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 497: /* boolSeq: %empty */ -#line 1299 "asmparse.y" + case 499: /* boolSeq: %empty */ +#line 1301 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6818 "prebuilt\\asmparse.cpp" +#line 6852 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 498: /* boolSeq: boolSeq truefalse */ -#line 1300 "asmparse.y" + case 500: /* boolSeq: boolSeq truefalse */ +#line 1302 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt8((yyvsp[0].int32));} -#line 6825 "prebuilt\\asmparse.cpp" +#line 6859 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 499: /* sqstringSeq: %empty */ -#line 1304 "asmparse.y" + case 501: /* sqstringSeq: %empty */ +#line 1306 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6831 "prebuilt\\asmparse.cpp" +#line 6865 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 500: /* sqstringSeq: sqstringSeq NULLREF_ */ -#line 1305 "asmparse.y" + case 502: /* sqstringSeq: sqstringSeq NULLREF_ */ +#line 1307 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt8(0xFF); } -#line 6837 "prebuilt\\asmparse.cpp" +#line 6871 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 501: /* sqstringSeq: sqstringSeq SQSTRING */ -#line 1306 "asmparse.y" + case 503: /* sqstringSeq: sqstringSeq SQSTRING */ +#line 1308 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); AppendStringWithLength((yyval.binstr),(yyvsp[0].string)); delete [] (yyvsp[0].string);} -#line 6844 "prebuilt\\asmparse.cpp" +#line 6878 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 502: /* classSeq: %empty */ -#line 1310 "asmparse.y" + case 504: /* classSeq: %empty */ +#line 1312 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6850 "prebuilt\\asmparse.cpp" +#line 6884 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 503: /* classSeq: classSeq NULLREF_ */ -#line 1311 "asmparse.y" + case 505: /* classSeq: classSeq NULLREF_ */ +#line 1313 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->appendInt8(0xFF); } -#line 6856 "prebuilt\\asmparse.cpp" +#line 6890 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 504: /* classSeq: classSeq CLASS_ SQSTRING */ -#line 1312 "asmparse.y" + case 506: /* classSeq: classSeq CLASS_ SQSTRING */ +#line 1314 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); AppendStringWithLength((yyval.binstr),(yyvsp[0].string)); delete [] (yyvsp[0].string);} -#line 6863 "prebuilt\\asmparse.cpp" +#line 6897 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 505: /* classSeq: classSeq className */ -#line 1314 "asmparse.y" + case 507: /* classSeq: classSeq className */ +#line 1316 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); AppendStringWithLength((yyval.binstr),PASM->ReflectionNotation((yyvsp[0].token)));} -#line 6870 "prebuilt\\asmparse.cpp" +#line 6904 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 506: /* objSeq: %empty */ -#line 1318 "asmparse.y" + case 508: /* objSeq: %empty */ +#line 1320 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 6876 "prebuilt\\asmparse.cpp" +#line 6910 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 507: /* objSeq: objSeq serInit */ -#line 1319 "asmparse.y" + case 509: /* objSeq: objSeq serInit */ +#line 1321 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); } -#line 6882 "prebuilt\\asmparse.cpp" +#line 6916 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 508: /* methodSpec: METHOD_ */ -#line 1323 "asmparse.y" + case 510: /* methodSpec: METHOD_ */ +#line 1325 ".\\src\\coreclr\\ilasm\\asmparse.y" { parser->m_ANSFirst.PUSH(PASM->m_firstArgName); parser->m_ANSLast.PUSH(PASM->m_lastArgName); PASM->m_firstArgName = NULL; PASM->m_lastArgName = NULL; } -#line 6891 "prebuilt\\asmparse.cpp" +#line 6925 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 509: /* instr_none: INSTR_NONE */ -#line 1329 "asmparse.y" + case 511: /* instr_none: INSTR_NONE */ +#line 1331 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6897 "prebuilt\\asmparse.cpp" +#line 6931 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 510: /* instr_var: INSTR_VAR */ -#line 1332 "asmparse.y" + case 512: /* instr_var: INSTR_VAR */ +#line 1334 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6903 "prebuilt\\asmparse.cpp" +#line 6937 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 511: /* instr_i: INSTR_I */ -#line 1335 "asmparse.y" + case 513: /* instr_i: INSTR_I */ +#line 1337 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6909 "prebuilt\\asmparse.cpp" +#line 6943 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 512: /* instr_i8: INSTR_I8 */ -#line 1338 "asmparse.y" + case 514: /* instr_i8: INSTR_I8 */ +#line 1340 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6915 "prebuilt\\asmparse.cpp" +#line 6949 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 513: /* instr_r: INSTR_R */ -#line 1341 "asmparse.y" + case 515: /* instr_r: INSTR_R */ +#line 1343 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6921 "prebuilt\\asmparse.cpp" +#line 6955 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 514: /* instr_brtarget: INSTR_BRTARGET */ -#line 1344 "asmparse.y" + case 516: /* instr_brtarget: INSTR_BRTARGET */ +#line 1346 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6927 "prebuilt\\asmparse.cpp" +#line 6961 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 515: /* instr_method: INSTR_METHOD */ -#line 1347 "asmparse.y" + case 517: /* instr_method: INSTR_METHOD */ +#line 1349 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); if((!PASM->OnErrGo)&& (((yyvsp[0].opcode) == CEE_NEWOBJ)|| ((yyvsp[0].opcode) == CEE_CALLVIRT))) iCallConv = IMAGE_CEE_CS_CALLCONV_HASTHIS; } -#line 6938 "prebuilt\\asmparse.cpp" +#line 6972 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 516: /* instr_field: INSTR_FIELD */ -#line 1355 "asmparse.y" + case 518: /* instr_field: INSTR_FIELD */ +#line 1357 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6944 "prebuilt\\asmparse.cpp" +#line 6978 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 517: /* instr_type: INSTR_TYPE */ -#line 1358 "asmparse.y" + case 519: /* instr_type: INSTR_TYPE */ +#line 1360 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6950 "prebuilt\\asmparse.cpp" +#line 6984 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 518: /* instr_string: INSTR_STRING */ -#line 1361 "asmparse.y" + case 520: /* instr_string: INSTR_STRING */ +#line 1363 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6956 "prebuilt\\asmparse.cpp" +#line 6990 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 519: /* instr_sig: INSTR_SIG */ -#line 1364 "asmparse.y" + case 521: /* instr_sig: INSTR_SIG */ +#line 1366 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6962 "prebuilt\\asmparse.cpp" +#line 6996 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 520: /* instr_tok: INSTR_TOK */ -#line 1367 "asmparse.y" + case 522: /* instr_tok: INSTR_TOK */ +#line 1369 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); iOpcodeLen = PASM->OpcodeLen((yyval.instr)); } -#line 6968 "prebuilt\\asmparse.cpp" +#line 7002 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 521: /* instr_switch: INSTR_SWITCH */ -#line 1370 "asmparse.y" + case 523: /* instr_switch: INSTR_SWITCH */ +#line 1372 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = SetupInstr((yyvsp[0].opcode)); } -#line 6974 "prebuilt\\asmparse.cpp" +#line 7008 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 522: /* instr_r_head: instr_r '(' */ -#line 1373 "asmparse.y" + case 524: /* instr_r_head: instr_r '(' */ +#line 1375 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.instr) = (yyvsp[-1].instr); bParsingByteArray = TRUE; } -#line 6980 "prebuilt\\asmparse.cpp" +#line 7014 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 523: /* instr: instr_none */ -#line 1377 "asmparse.y" + case 525: /* instr: instr_none */ +#line 1379 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitOpcode((yyvsp[0].instr)); } -#line 6986 "prebuilt\\asmparse.cpp" +#line 7020 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 524: /* instr: instr_var int32 */ -#line 1378 "asmparse.y" + case 526: /* instr: instr_var int32 */ +#line 1380 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrVar((yyvsp[-1].instr), (yyvsp[0].int32)); } -#line 6992 "prebuilt\\asmparse.cpp" +#line 7026 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 525: /* instr: instr_var id */ -#line 1379 "asmparse.y" + case 527: /* instr: instr_var id */ +#line 1381 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrVarByName((yyvsp[-1].instr), (yyvsp[0].string)); } -#line 6998 "prebuilt\\asmparse.cpp" +#line 7032 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 526: /* instr: instr_i int32 */ -#line 1380 "asmparse.y" + case 528: /* instr: instr_i int32 */ +#line 1382 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrI((yyvsp[-1].instr), (yyvsp[0].int32)); } -#line 7004 "prebuilt\\asmparse.cpp" +#line 7038 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 527: /* instr: instr_i8 int64 */ -#line 1381 "asmparse.y" + case 529: /* instr: instr_i8 int64 */ +#line 1383 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrI8((yyvsp[-1].instr), (yyvsp[0].int64)); } -#line 7010 "prebuilt\\asmparse.cpp" +#line 7044 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 528: /* instr: instr_r float64 */ -#line 1382 "asmparse.y" + case 530: /* instr: instr_r float64 */ +#line 1384 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrR((yyvsp[-1].instr), (yyvsp[0].float64)); delete ((yyvsp[0].float64));} -#line 7016 "prebuilt\\asmparse.cpp" +#line 7050 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 529: /* instr: instr_r int64 */ -#line 1383 "asmparse.y" + case 531: /* instr: instr_r int64 */ +#line 1385 ".\\src\\coreclr\\ilasm\\asmparse.y" { double f = (double) (*(yyvsp[0].int64)); PASM->EmitInstrR((yyvsp[-1].instr), &f); } -#line 7022 "prebuilt\\asmparse.cpp" +#line 7056 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 530: /* instr: instr_r_head bytes ')' */ -#line 1384 "asmparse.y" + case 532: /* instr: instr_r_head bytes ')' */ +#line 1386 ".\\src\\coreclr\\ilasm\\asmparse.y" { unsigned L = (yyvsp[-1].binstr)->length(); FAIL_UNLESS(L >= sizeof(float), ("%d hexbytes, must be at least %d\n", L,sizeof(float))); @@ -7032,34 +7066,34 @@ yyparse (void) : (double)(*(float *)((yyvsp[-1].binstr)->ptr())); PASM->EmitInstrR((yyvsp[-2].instr),&f); } delete (yyvsp[-1].binstr); } -#line 7036 "prebuilt\\asmparse.cpp" +#line 7070 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 531: /* instr: instr_brtarget int32 */ -#line 1393 "asmparse.y" + case 533: /* instr: instr_brtarget int32 */ +#line 1395 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrBrOffset((yyvsp[-1].instr), (yyvsp[0].int32)); } -#line 7042 "prebuilt\\asmparse.cpp" +#line 7076 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 532: /* instr: instr_brtarget id */ -#line 1394 "asmparse.y" + case 534: /* instr: instr_brtarget id */ +#line 1396 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrBrTarget((yyvsp[-1].instr), (yyvsp[0].string)); } -#line 7048 "prebuilt\\asmparse.cpp" +#line 7082 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 533: /* instr: instr_method methodRef */ -#line 1396 "asmparse.y" + case 535: /* instr: instr_method methodRef */ +#line 1398 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->SetMemberRefFixup((yyvsp[0].token),PASM->OpcodeLen((yyvsp[-1].instr))); PASM->EmitInstrI((yyvsp[-1].instr),(yyvsp[0].token)); PASM->m_tkCurrentCVOwner = (yyvsp[0].token); PASM->m_pCustomDescrList = NULL; iCallConv = 0; } -#line 7059 "prebuilt\\asmparse.cpp" +#line 7093 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 534: /* instr: instr_field type typeSpec DCOLON dottedName */ -#line 1403 "asmparse.y" + case 536: /* instr: instr_field type typeSpec DCOLON dottedName */ +#line 1405 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-3].binstr)->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); mdToken mr = PASM->MakeMemberRef((yyvsp[-2].token), (yyvsp[0].string), (yyvsp[-3].binstr)); PASM->SetMemberRefFixup(mr, PASM->OpcodeLen((yyvsp[-4].instr))); @@ -7067,11 +7101,11 @@ yyparse (void) PASM->m_tkCurrentCVOwner = mr; PASM->m_pCustomDescrList = NULL; } -#line 7071 "prebuilt\\asmparse.cpp" +#line 7105 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 535: /* instr: instr_field type dottedName */ -#line 1411 "asmparse.y" + case 537: /* instr: instr_field type dottedName */ +#line 1413 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-1].binstr)->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); mdToken mr = PASM->MakeMemberRef(mdTokenNil, (yyvsp[0].string), (yyvsp[-1].binstr)); PASM->SetMemberRefFixup(mr, PASM->OpcodeLen((yyvsp[-2].instr))); @@ -7079,1067 +7113,1067 @@ yyparse (void) PASM->m_tkCurrentCVOwner = mr; PASM->m_pCustomDescrList = NULL; } -#line 7083 "prebuilt\\asmparse.cpp" +#line 7117 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 536: /* instr: instr_field mdtoken */ -#line 1418 "asmparse.y" + case 538: /* instr: instr_field mdtoken */ +#line 1420 ".\\src\\coreclr\\ilasm\\asmparse.y" { mdToken mr = (yyvsp[0].token); PASM->SetMemberRefFixup(mr, PASM->OpcodeLen((yyvsp[-1].instr))); PASM->EmitInstrI((yyvsp[-1].instr),mr); PASM->m_tkCurrentCVOwner = mr; PASM->m_pCustomDescrList = NULL; } -#line 7094 "prebuilt\\asmparse.cpp" +#line 7128 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 537: /* instr: instr_field TYPEDEF_F */ -#line 1424 "asmparse.y" + case 539: /* instr: instr_field TYPEDEF_F */ +#line 1426 ".\\src\\coreclr\\ilasm\\asmparse.y" { mdToken mr = (yyvsp[0].tdd)->m_tkTypeSpec; PASM->SetMemberRefFixup(mr, PASM->OpcodeLen((yyvsp[-1].instr))); PASM->EmitInstrI((yyvsp[-1].instr),mr); PASM->m_tkCurrentCVOwner = mr; PASM->m_pCustomDescrList = NULL; } -#line 7105 "prebuilt\\asmparse.cpp" +#line 7139 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 538: /* instr: instr_field TYPEDEF_MR */ -#line 1430 "asmparse.y" + case 540: /* instr: instr_field TYPEDEF_MR */ +#line 1432 ".\\src\\coreclr\\ilasm\\asmparse.y" { mdToken mr = (yyvsp[0].tdd)->m_tkTypeSpec; PASM->SetMemberRefFixup(mr, PASM->OpcodeLen((yyvsp[-1].instr))); PASM->EmitInstrI((yyvsp[-1].instr),mr); PASM->m_tkCurrentCVOwner = mr; PASM->m_pCustomDescrList = NULL; } -#line 7116 "prebuilt\\asmparse.cpp" +#line 7150 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 539: /* instr: instr_type typeSpec */ -#line 1436 "asmparse.y" + case 541: /* instr: instr_type typeSpec */ +#line 1438 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrI((yyvsp[-1].instr), (yyvsp[0].token)); PASM->m_tkCurrentCVOwner = (yyvsp[0].token); PASM->m_pCustomDescrList = NULL; } -#line 7125 "prebuilt\\asmparse.cpp" +#line 7159 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 540: /* instr: instr_string compQstring */ -#line 1440 "asmparse.y" + case 542: /* instr: instr_string compQstring */ +#line 1442 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrStringLiteral((yyvsp[-1].instr), (yyvsp[0].binstr),TRUE); } -#line 7131 "prebuilt\\asmparse.cpp" +#line 7165 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 541: /* instr: instr_string ANSI_ '(' compQstring ')' */ -#line 1442 "asmparse.y" + case 543: /* instr: instr_string ANSI_ '(' compQstring ')' */ +#line 1444 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrStringLiteral((yyvsp[-4].instr), (yyvsp[-1].binstr),FALSE); } -#line 7137 "prebuilt\\asmparse.cpp" +#line 7171 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 542: /* instr: instr_string bytearrayhead bytes ')' */ -#line 1444 "asmparse.y" + case 544: /* instr: instr_string bytearrayhead bytes ')' */ +#line 1446 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrStringLiteral((yyvsp[-3].instr), (yyvsp[-1].binstr),FALSE,TRUE); } -#line 7143 "prebuilt\\asmparse.cpp" +#line 7177 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 543: /* instr: instr_sig callConv type '(' sigArgs0 ')' */ -#line 1446 "asmparse.y" + case 545: /* instr: instr_sig callConv type '(' sigArgs0 ')' */ +#line 1448 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrSig((yyvsp[-5].instr), parser->MakeSig((yyvsp[-4].int32), (yyvsp[-3].binstr), (yyvsp[-1].binstr))); PASM->ResetArgNameList(); } -#line 7151 "prebuilt\\asmparse.cpp" +#line 7185 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 544: /* instr: instr_tok ownerType */ -#line 1450 "asmparse.y" + case 546: /* instr: instr_tok ownerType */ +#line 1452 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrI((yyvsp[-1].instr),(yyvsp[0].token)); PASM->m_tkCurrentCVOwner = (yyvsp[0].token); PASM->m_pCustomDescrList = NULL; iOpcodeLen = 0; } -#line 7161 "prebuilt\\asmparse.cpp" +#line 7195 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 545: /* instr: instr_switch '(' labels ')' */ -#line 1455 "asmparse.y" + case 547: /* instr: instr_switch '(' labels ')' */ +#line 1457 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->EmitInstrSwitch((yyvsp[-3].instr), (yyvsp[-1].labels)); } -#line 7167 "prebuilt\\asmparse.cpp" +#line 7201 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 546: /* labels: %empty */ -#line 1458 "asmparse.y" + case 548: /* labels: %empty */ +#line 1460 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.labels) = 0; } -#line 7173 "prebuilt\\asmparse.cpp" +#line 7207 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 547: /* labels: id ',' labels */ -#line 1459 "asmparse.y" + case 549: /* labels: id ',' labels */ +#line 1461 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.labels) = new Labels((yyvsp[-2].string), (yyvsp[0].labels), TRUE); } -#line 7179 "prebuilt\\asmparse.cpp" +#line 7213 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 548: /* labels: int32 ',' labels */ -#line 1460 "asmparse.y" + case 550: /* labels: int32 ',' labels */ +#line 1462 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.labels) = new Labels((char *)(UINT_PTR)(yyvsp[-2].int32), (yyvsp[0].labels), FALSE); } -#line 7185 "prebuilt\\asmparse.cpp" +#line 7219 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 549: /* labels: id */ -#line 1461 "asmparse.y" + case 551: /* labels: id */ +#line 1463 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.labels) = new Labels((yyvsp[0].string), NULL, TRUE); } -#line 7191 "prebuilt\\asmparse.cpp" +#line 7225 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 550: /* labels: int32 */ -#line 1462 "asmparse.y" + case 552: /* labels: int32 */ +#line 1464 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.labels) = new Labels((char *)(UINT_PTR)(yyvsp[0].int32), NULL, FALSE); } -#line 7197 "prebuilt\\asmparse.cpp" +#line 7231 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 551: /* tyArgs0: %empty */ -#line 1466 "asmparse.y" + case 553: /* tyArgs0: %empty */ +#line 1468 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = NULL; } -#line 7203 "prebuilt\\asmparse.cpp" +#line 7237 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 552: /* tyArgs0: '<' tyArgs1 '>' */ -#line 1467 "asmparse.y" + case 554: /* tyArgs0: '<' tyArgs1 '>' */ +#line 1469 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); } -#line 7209 "prebuilt\\asmparse.cpp" +#line 7243 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 553: /* tyArgs1: %empty */ -#line 1470 "asmparse.y" + case 555: /* tyArgs1: %empty */ +#line 1472 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = NULL; } -#line 7215 "prebuilt\\asmparse.cpp" +#line 7249 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 554: /* tyArgs1: tyArgs2 */ -#line 1471 "asmparse.y" + case 556: /* tyArgs1: tyArgs2 */ +#line 1473 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 7221 "prebuilt\\asmparse.cpp" +#line 7255 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 555: /* tyArgs2: type */ -#line 1474 "asmparse.y" + case 557: /* tyArgs2: type */ +#line 1476 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 7227 "prebuilt\\asmparse.cpp" +#line 7261 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 556: /* tyArgs2: tyArgs2 ',' type */ -#line 1475 "asmparse.y" + case 558: /* tyArgs2: tyArgs2 ',' type */ +#line 1477 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); } -#line 7233 "prebuilt\\asmparse.cpp" +#line 7267 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 557: /* sigArgs0: %empty */ -#line 1479 "asmparse.y" + case 559: /* sigArgs0: %empty */ +#line 1481 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 7239 "prebuilt\\asmparse.cpp" +#line 7273 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 558: /* sigArgs0: sigArgs1 */ -#line 1480 "asmparse.y" + case 560: /* sigArgs0: sigArgs1 */ +#line 1482 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr);} -#line 7245 "prebuilt\\asmparse.cpp" +#line 7279 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 559: /* sigArgs1: sigArg */ -#line 1483 "asmparse.y" + case 561: /* sigArgs1: sigArg */ +#line 1485 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 7251 "prebuilt\\asmparse.cpp" +#line 7285 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 560: /* sigArgs1: sigArgs1 ',' sigArg */ -#line 1484 "asmparse.y" + case 562: /* sigArgs1: sigArgs1 ',' sigArg */ +#line 1486 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); } -#line 7257 "prebuilt\\asmparse.cpp" +#line 7291 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 561: /* sigArg: ELLIPSIS */ -#line 1487 "asmparse.y" + case 563: /* sigArg: ELLIPSIS */ +#line 1489 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_SENTINEL); } -#line 7263 "prebuilt\\asmparse.cpp" +#line 7297 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 562: /* sigArg: paramAttr type marshalClause */ -#line 1488 "asmparse.y" + case 564: /* sigArg: paramAttr type marshalClause */ +#line 1490 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->append((yyvsp[-1].binstr)); PASM->addArgName(NULL, (yyvsp[-1].binstr), (yyvsp[0].binstr), (yyvsp[-2].int32)); } -#line 7269 "prebuilt\\asmparse.cpp" +#line 7303 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 563: /* sigArg: paramAttr type marshalClause id */ -#line 1489 "asmparse.y" + case 565: /* sigArg: paramAttr type marshalClause id */ +#line 1491 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->append((yyvsp[-2].binstr)); PASM->addArgName((yyvsp[0].string), (yyvsp[-2].binstr), (yyvsp[-1].binstr), (yyvsp[-3].int32));} -#line 7275 "prebuilt\\asmparse.cpp" +#line 7309 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 564: /* className: '[' dottedName ']' slashedName */ -#line 1493 "asmparse.y" + case 566: /* className: '[' dottedName ']' slashedName */ +#line 1495 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveClassRef(PASM->GetAsmRef((yyvsp[-2].string)), (yyvsp[0].string), NULL); delete[] (yyvsp[-2].string);} -#line 7281 "prebuilt\\asmparse.cpp" +#line 7315 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 565: /* className: '[' mdtoken ']' slashedName */ -#line 1494 "asmparse.y" + case 567: /* className: '[' mdtoken ']' slashedName */ +#line 1496 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveClassRef((yyvsp[-2].token), (yyvsp[0].string), NULL); } -#line 7287 "prebuilt\\asmparse.cpp" +#line 7321 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 566: /* className: '[' '*' ']' slashedName */ -#line 1495 "asmparse.y" + case 568: /* className: '[' '*' ']' slashedName */ +#line 1497 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveClassRef(mdTokenNil, (yyvsp[0].string), NULL); } -#line 7293 "prebuilt\\asmparse.cpp" +#line 7327 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 567: /* className: '[' _MODULE dottedName ']' slashedName */ -#line 1496 "asmparse.y" + case 569: /* className: '[' _MODULE dottedName ']' slashedName */ +#line 1498 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveClassRef(PASM->GetModRef((yyvsp[-2].string)),(yyvsp[0].string), NULL); delete[] (yyvsp[-2].string);} -#line 7299 "prebuilt\\asmparse.cpp" +#line 7333 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 568: /* className: slashedName */ -#line 1497 "asmparse.y" + case 570: /* className: slashedName */ +#line 1499 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveClassRef(1,(yyvsp[0].string),NULL); } -#line 7305 "prebuilt\\asmparse.cpp" +#line 7339 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 569: /* className: mdtoken */ -#line 1498 "asmparse.y" + case 571: /* className: mdtoken */ +#line 1500 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token); } -#line 7311 "prebuilt\\asmparse.cpp" +#line 7345 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 570: /* className: TYPEDEF_T */ -#line 1499 "asmparse.y" + case 572: /* className: TYPEDEF_T */ +#line 1501 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].tdd)->m_tkTypeSpec; } -#line 7317 "prebuilt\\asmparse.cpp" +#line 7351 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 571: /* className: _THIS */ -#line 1500 "asmparse.y" + case 573: /* className: _THIS */ +#line 1502 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurClass != NULL) (yyval.token) = PASM->m_pCurClass->m_cl; else { (yyval.token) = 0; PASM->report->error(".this outside class scope\n"); } } -#line 7325 "prebuilt\\asmparse.cpp" +#line 7359 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 572: /* className: _BASE */ -#line 1503 "asmparse.y" + case 574: /* className: _BASE */ +#line 1505 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurClass != NULL) { (yyval.token) = PASM->m_pCurClass->m_crExtends; if(RidFromToken((yyval.token)) == 0) PASM->report->error(".base undefined\n"); } else { (yyval.token) = 0; PASM->report->error(".base outside class scope\n"); } } -#line 7336 "prebuilt\\asmparse.cpp" +#line 7370 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 573: /* className: _NESTER */ -#line 1509 "asmparse.y" + case 575: /* className: _NESTER */ +#line 1511 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(PASM->m_pCurClass != NULL) { if(PASM->m_pCurClass->m_pEncloser != NULL) (yyval.token) = PASM->m_pCurClass->m_pEncloser->m_cl; else { (yyval.token) = 0; PASM->report->error(".nester undefined\n"); } } else { (yyval.token) = 0; PASM->report->error(".nester outside class scope\n"); } } -#line 7346 "prebuilt\\asmparse.cpp" +#line 7380 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 574: /* slashedName: dottedName */ -#line 1516 "asmparse.y" + case 576: /* slashedName: dottedName */ +#line 1518 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = (yyvsp[0].string); } -#line 7352 "prebuilt\\asmparse.cpp" +#line 7386 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 575: /* slashedName: slashedName '/' dottedName */ -#line 1517 "asmparse.y" + case 577: /* slashedName: slashedName '/' dottedName */ +#line 1519 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.string) = newStringWDel((yyvsp[-2].string), NESTING_SEP, (yyvsp[0].string)); } -#line 7358 "prebuilt\\asmparse.cpp" +#line 7392 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 576: /* typeSpec: className */ -#line 1520 "asmparse.y" + case 578: /* typeSpec: className */ +#line 1522 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = (yyvsp[0].token);} -#line 7364 "prebuilt\\asmparse.cpp" +#line 7398 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 577: /* typeSpec: '[' dottedName ']' */ -#line 1521 "asmparse.y" + case 579: /* typeSpec: '[' dottedName ']' */ +#line 1523 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->GetAsmRef((yyvsp[-1].string)); delete[] (yyvsp[-1].string);} -#line 7370 "prebuilt\\asmparse.cpp" +#line 7404 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 578: /* typeSpec: '[' _MODULE dottedName ']' */ -#line 1522 "asmparse.y" + case 580: /* typeSpec: '[' _MODULE dottedName ']' */ +#line 1524 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->GetModRef((yyvsp[-1].string)); delete[] (yyvsp[-1].string);} -#line 7376 "prebuilt\\asmparse.cpp" +#line 7410 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 579: /* typeSpec: type */ -#line 1523 "asmparse.y" + case 581: /* typeSpec: type */ +#line 1525 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.token) = PASM->ResolveTypeSpec((yyvsp[0].binstr)); } -#line 7382 "prebuilt\\asmparse.cpp" +#line 7416 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 580: /* nativeType: %empty */ -#line 1527 "asmparse.y" + case 582: /* nativeType: %empty */ +#line 1529 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); } -#line 7388 "prebuilt\\asmparse.cpp" +#line 7422 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 581: /* nativeType: CUSTOM_ '(' compQstring ',' compQstring ',' compQstring ',' compQstring ')' */ -#line 1529 "asmparse.y" + case 583: /* nativeType: CUSTOM_ '(' compQstring ',' compQstring ',' compQstring ',' compQstring ')' */ +#line 1531 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER); corEmitInt((yyval.binstr),(yyvsp[-7].binstr)->length()); (yyval.binstr)->append((yyvsp[-7].binstr)); corEmitInt((yyval.binstr),(yyvsp[-5].binstr)->length()); (yyval.binstr)->append((yyvsp[-5].binstr)); corEmitInt((yyval.binstr),(yyvsp[-3].binstr)->length()); (yyval.binstr)->append((yyvsp[-3].binstr)); corEmitInt((yyval.binstr),(yyvsp[-1].binstr)->length()); (yyval.binstr)->append((yyvsp[-1].binstr)); PASM->report->warn("Deprecated 4-string form of custom marshaler, first two strings ignored\n");} -#line 7399 "prebuilt\\asmparse.cpp" +#line 7433 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 582: /* nativeType: CUSTOM_ '(' compQstring ',' compQstring ')' */ -#line 1536 "asmparse.y" + case 584: /* nativeType: CUSTOM_ '(' compQstring ',' compQstring ')' */ +#line 1538 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER); corEmitInt((yyval.binstr),0); corEmitInt((yyval.binstr),0); corEmitInt((yyval.binstr),(yyvsp[-3].binstr)->length()); (yyval.binstr)->append((yyvsp[-3].binstr)); corEmitInt((yyval.binstr),(yyvsp[-1].binstr)->length()); (yyval.binstr)->append((yyvsp[-1].binstr)); } -#line 7409 "prebuilt\\asmparse.cpp" +#line 7443 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 583: /* nativeType: FIXED_ SYSSTRING_ '[' int32 ']' */ -#line 1541 "asmparse.y" + case 585: /* nativeType: FIXED_ SYSSTRING_ '[' int32 ']' */ +#line 1543 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING); corEmitInt((yyval.binstr),(yyvsp[-1].int32)); } -#line 7416 "prebuilt\\asmparse.cpp" +#line 7450 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 584: /* nativeType: FIXED_ ARRAY_ '[' int32 ']' nativeType */ -#line 1544 "asmparse.y" + case 586: /* nativeType: FIXED_ ARRAY_ '[' int32 ']' nativeType */ +#line 1546 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_FIXEDARRAY); corEmitInt((yyval.binstr),(yyvsp[-2].int32)); (yyval.binstr)->append((yyvsp[0].binstr)); } -#line 7423 "prebuilt\\asmparse.cpp" +#line 7457 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 585: /* nativeType: VARIANT_ */ -#line 1546 "asmparse.y" + case 587: /* nativeType: VARIANT_ */ +#line 1548 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_VARIANT); PASM->report->warn("Deprecated native type 'variant'\n"); } -#line 7430 "prebuilt\\asmparse.cpp" +#line 7464 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 586: /* nativeType: CURRENCY_ */ -#line 1548 "asmparse.y" + case 588: /* nativeType: CURRENCY_ */ +#line 1550 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_CURRENCY); } -#line 7436 "prebuilt\\asmparse.cpp" +#line 7470 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 587: /* nativeType: SYSCHAR_ */ -#line 1549 "asmparse.y" + case 589: /* nativeType: SYSCHAR_ */ +#line 1551 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_SYSCHAR); PASM->report->warn("Deprecated native type 'syschar'\n"); } -#line 7443 "prebuilt\\asmparse.cpp" +#line 7477 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 588: /* nativeType: VOID_ */ -#line 1551 "asmparse.y" + case 590: /* nativeType: VOID_ */ +#line 1553 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_VOID); PASM->report->warn("Deprecated native type 'void'\n"); } -#line 7450 "prebuilt\\asmparse.cpp" +#line 7484 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 589: /* nativeType: BOOL_ */ -#line 1553 "asmparse.y" + case 591: /* nativeType: BOOL_ */ +#line 1555 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_BOOLEAN); } -#line 7456 "prebuilt\\asmparse.cpp" +#line 7490 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 590: /* nativeType: INT8_ */ -#line 1554 "asmparse.y" + case 592: /* nativeType: INT8_ */ +#line 1556 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_I1); } -#line 7462 "prebuilt\\asmparse.cpp" +#line 7496 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 591: /* nativeType: INT16_ */ -#line 1555 "asmparse.y" + case 593: /* nativeType: INT16_ */ +#line 1557 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_I2); } -#line 7468 "prebuilt\\asmparse.cpp" +#line 7502 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 592: /* nativeType: INT32_ */ -#line 1556 "asmparse.y" + case 594: /* nativeType: INT32_ */ +#line 1558 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_I4); } -#line 7474 "prebuilt\\asmparse.cpp" +#line 7508 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 593: /* nativeType: INT64_ */ -#line 1557 "asmparse.y" + case 595: /* nativeType: INT64_ */ +#line 1559 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_I8); } -#line 7480 "prebuilt\\asmparse.cpp" +#line 7514 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 594: /* nativeType: FLOAT32_ */ -#line 1558 "asmparse.y" + case 596: /* nativeType: FLOAT32_ */ +#line 1560 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_R4); } -#line 7486 "prebuilt\\asmparse.cpp" +#line 7520 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 595: /* nativeType: FLOAT64_ */ -#line 1559 "asmparse.y" + case 597: /* nativeType: FLOAT64_ */ +#line 1561 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_R8); } -#line 7492 "prebuilt\\asmparse.cpp" +#line 7526 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 596: /* nativeType: ERROR_ */ -#line 1560 "asmparse.y" + case 598: /* nativeType: ERROR_ */ +#line 1562 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_ERROR); } -#line 7498 "prebuilt\\asmparse.cpp" +#line 7532 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 597: /* nativeType: UNSIGNED_ INT8_ */ -#line 1561 "asmparse.y" + case 599: /* nativeType: UNSIGNED_ INT8_ */ +#line 1563 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U1); } -#line 7504 "prebuilt\\asmparse.cpp" +#line 7538 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 598: /* nativeType: UNSIGNED_ INT16_ */ -#line 1562 "asmparse.y" + case 600: /* nativeType: UNSIGNED_ INT16_ */ +#line 1564 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U2); } -#line 7510 "prebuilt\\asmparse.cpp" +#line 7544 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 599: /* nativeType: UNSIGNED_ INT32_ */ -#line 1563 "asmparse.y" + case 601: /* nativeType: UNSIGNED_ INT32_ */ +#line 1565 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U4); } -#line 7516 "prebuilt\\asmparse.cpp" +#line 7550 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 600: /* nativeType: UNSIGNED_ INT64_ */ -#line 1564 "asmparse.y" + case 602: /* nativeType: UNSIGNED_ INT64_ */ +#line 1566 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U8); } -#line 7522 "prebuilt\\asmparse.cpp" +#line 7556 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 601: /* nativeType: UINT8_ */ -#line 1565 "asmparse.y" + case 603: /* nativeType: UINT8_ */ +#line 1567 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U1); } -#line 7528 "prebuilt\\asmparse.cpp" +#line 7562 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 602: /* nativeType: UINT16_ */ -#line 1566 "asmparse.y" + case 604: /* nativeType: UINT16_ */ +#line 1568 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U2); } -#line 7534 "prebuilt\\asmparse.cpp" +#line 7568 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 603: /* nativeType: UINT32_ */ -#line 1567 "asmparse.y" + case 605: /* nativeType: UINT32_ */ +#line 1569 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U4); } -#line 7540 "prebuilt\\asmparse.cpp" +#line 7574 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 604: /* nativeType: UINT64_ */ -#line 1568 "asmparse.y" + case 606: /* nativeType: UINT64_ */ +#line 1570 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_U8); } -#line 7546 "prebuilt\\asmparse.cpp" +#line 7580 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 605: /* nativeType: nativeType '*' */ -#line 1569 "asmparse.y" + case 607: /* nativeType: nativeType '*' */ +#line 1571 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt8(NATIVE_TYPE_PTR); PASM->report->warn("Deprecated native type '*'\n"); } -#line 7553 "prebuilt\\asmparse.cpp" +#line 7587 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 606: /* nativeType: nativeType '[' ']' */ -#line 1571 "asmparse.y" + case 608: /* nativeType: nativeType '[' ']' */ +#line 1573 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); if((yyval.binstr)->length()==0) (yyval.binstr)->appendInt8(NATIVE_TYPE_MAX); (yyval.binstr)->insertInt8(NATIVE_TYPE_ARRAY); } -#line 7560 "prebuilt\\asmparse.cpp" +#line 7594 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 607: /* nativeType: nativeType '[' int32 ']' */ -#line 1573 "asmparse.y" + case 609: /* nativeType: nativeType '[' int32 ']' */ +#line 1575 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-3].binstr); if((yyval.binstr)->length()==0) (yyval.binstr)->appendInt8(NATIVE_TYPE_MAX); (yyval.binstr)->insertInt8(NATIVE_TYPE_ARRAY); corEmitInt((yyval.binstr),0); corEmitInt((yyval.binstr),(yyvsp[-1].int32)); corEmitInt((yyval.binstr),0); } -#line 7570 "prebuilt\\asmparse.cpp" +#line 7604 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 608: /* nativeType: nativeType '[' int32 '+' int32 ']' */ -#line 1578 "asmparse.y" + case 610: /* nativeType: nativeType '[' int32 '+' int32 ']' */ +#line 1580 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-5].binstr); if((yyval.binstr)->length()==0) (yyval.binstr)->appendInt8(NATIVE_TYPE_MAX); (yyval.binstr)->insertInt8(NATIVE_TYPE_ARRAY); corEmitInt((yyval.binstr),(yyvsp[-1].int32)); corEmitInt((yyval.binstr),(yyvsp[-3].int32)); corEmitInt((yyval.binstr),ntaSizeParamIndexSpecified); } -#line 7580 "prebuilt\\asmparse.cpp" +#line 7614 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 609: /* nativeType: nativeType '[' '+' int32 ']' */ -#line 1583 "asmparse.y" + case 611: /* nativeType: nativeType '[' '+' int32 ']' */ +#line 1585 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-4].binstr); if((yyval.binstr)->length()==0) (yyval.binstr)->appendInt8(NATIVE_TYPE_MAX); (yyval.binstr)->insertInt8(NATIVE_TYPE_ARRAY); corEmitInt((yyval.binstr),(yyvsp[-1].int32)); } -#line 7588 "prebuilt\\asmparse.cpp" +#line 7622 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 610: /* nativeType: DECIMAL_ */ -#line 1586 "asmparse.y" + case 612: /* nativeType: DECIMAL_ */ +#line 1588 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_DECIMAL); PASM->report->warn("Deprecated native type 'decimal'\n"); } -#line 7595 "prebuilt\\asmparse.cpp" +#line 7629 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 611: /* nativeType: DATE_ */ -#line 1588 "asmparse.y" + case 613: /* nativeType: DATE_ */ +#line 1590 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_DATE); PASM->report->warn("Deprecated native type 'date'\n"); } -#line 7602 "prebuilt\\asmparse.cpp" +#line 7636 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 612: /* nativeType: BSTR_ */ -#line 1590 "asmparse.y" + case 614: /* nativeType: BSTR_ */ +#line 1592 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_BSTR); } -#line 7608 "prebuilt\\asmparse.cpp" +#line 7642 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 613: /* nativeType: LPSTR_ */ -#line 1591 "asmparse.y" + case 615: /* nativeType: LPSTR_ */ +#line 1593 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_LPSTR); } -#line 7614 "prebuilt\\asmparse.cpp" +#line 7648 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 614: /* nativeType: LPWSTR_ */ -#line 1592 "asmparse.y" + case 616: /* nativeType: LPWSTR_ */ +#line 1594 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_LPWSTR); } -#line 7620 "prebuilt\\asmparse.cpp" +#line 7654 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 615: /* nativeType: LPTSTR_ */ -#line 1593 "asmparse.y" + case 617: /* nativeType: LPTSTR_ */ +#line 1595 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_LPTSTR); } -#line 7626 "prebuilt\\asmparse.cpp" +#line 7660 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 616: /* nativeType: OBJECTREF_ */ -#line 1594 "asmparse.y" + case 618: /* nativeType: OBJECTREF_ */ +#line 1596 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_OBJECTREF); PASM->report->warn("Deprecated native type 'objectref'\n"); } -#line 7633 "prebuilt\\asmparse.cpp" +#line 7667 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 617: /* nativeType: IUNKNOWN_ iidParamIndex */ -#line 1596 "asmparse.y" + case 619: /* nativeType: IUNKNOWN_ iidParamIndex */ +#line 1598 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_IUNKNOWN); if((yyvsp[0].int32) != -1) corEmitInt((yyval.binstr),(yyvsp[0].int32)); } -#line 7640 "prebuilt\\asmparse.cpp" +#line 7674 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 618: /* nativeType: IDISPATCH_ iidParamIndex */ -#line 1598 "asmparse.y" + case 620: /* nativeType: IDISPATCH_ iidParamIndex */ +#line 1600 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_IDISPATCH); if((yyvsp[0].int32) != -1) corEmitInt((yyval.binstr),(yyvsp[0].int32)); } -#line 7647 "prebuilt\\asmparse.cpp" +#line 7681 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 619: /* nativeType: STRUCT_ */ -#line 1600 "asmparse.y" + case 621: /* nativeType: STRUCT_ */ +#line 1602 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_STRUCT); } -#line 7653 "prebuilt\\asmparse.cpp" +#line 7687 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 620: /* nativeType: INTERFACE_ iidParamIndex */ -#line 1601 "asmparse.y" + case 622: /* nativeType: INTERFACE_ iidParamIndex */ +#line 1603 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_INTF); if((yyvsp[0].int32) != -1) corEmitInt((yyval.binstr),(yyvsp[0].int32)); } -#line 7660 "prebuilt\\asmparse.cpp" +#line 7694 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 621: /* nativeType: SAFEARRAY_ variantType */ -#line 1603 "asmparse.y" + case 623: /* nativeType: SAFEARRAY_ variantType */ +#line 1605 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_SAFEARRAY); corEmitInt((yyval.binstr),(yyvsp[0].int32)); corEmitInt((yyval.binstr),0);} -#line 7668 "prebuilt\\asmparse.cpp" +#line 7702 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 622: /* nativeType: SAFEARRAY_ variantType ',' compQstring */ -#line 1606 "asmparse.y" + case 624: /* nativeType: SAFEARRAY_ variantType ',' compQstring */ +#line 1608 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_SAFEARRAY); corEmitInt((yyval.binstr),(yyvsp[-2].int32)); corEmitInt((yyval.binstr),(yyvsp[0].binstr)->length()); (yyval.binstr)->append((yyvsp[0].binstr)); } -#line 7676 "prebuilt\\asmparse.cpp" +#line 7710 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 623: /* nativeType: INT_ */ -#line 1610 "asmparse.y" + case 625: /* nativeType: INT_ */ +#line 1612 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_INT); } -#line 7682 "prebuilt\\asmparse.cpp" +#line 7716 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 624: /* nativeType: UNSIGNED_ INT_ */ -#line 1611 "asmparse.y" + case 626: /* nativeType: UNSIGNED_ INT_ */ +#line 1613 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_UINT); } -#line 7688 "prebuilt\\asmparse.cpp" +#line 7722 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 625: /* nativeType: UINT_ */ -#line 1612 "asmparse.y" + case 627: /* nativeType: UINT_ */ +#line 1614 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_UINT); } -#line 7694 "prebuilt\\asmparse.cpp" +#line 7728 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 626: /* nativeType: NESTED_ STRUCT_ */ -#line 1613 "asmparse.y" + case 628: /* nativeType: NESTED_ STRUCT_ */ +#line 1615 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_NESTEDSTRUCT); PASM->report->warn("Deprecated native type 'nested struct'\n"); } -#line 7701 "prebuilt\\asmparse.cpp" +#line 7735 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 627: /* nativeType: BYVALSTR_ */ -#line 1615 "asmparse.y" + case 629: /* nativeType: BYVALSTR_ */ +#line 1617 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_BYVALSTR); } -#line 7707 "prebuilt\\asmparse.cpp" +#line 7741 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 628: /* nativeType: ANSI_ BSTR_ */ -#line 1616 "asmparse.y" + case 630: /* nativeType: ANSI_ BSTR_ */ +#line 1618 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_ANSIBSTR); } -#line 7713 "prebuilt\\asmparse.cpp" +#line 7747 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 629: /* nativeType: TBSTR_ */ -#line 1617 "asmparse.y" + case 631: /* nativeType: TBSTR_ */ +#line 1619 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_TBSTR); } -#line 7719 "prebuilt\\asmparse.cpp" +#line 7753 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 630: /* nativeType: VARIANT_ BOOL_ */ -#line 1618 "asmparse.y" + case 632: /* nativeType: VARIANT_ BOOL_ */ +#line 1620 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_VARIANTBOOL); } -#line 7725 "prebuilt\\asmparse.cpp" +#line 7759 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 631: /* nativeType: METHOD_ */ -#line 1619 "asmparse.y" + case 633: /* nativeType: METHOD_ */ +#line 1621 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_FUNC); } -#line 7731 "prebuilt\\asmparse.cpp" +#line 7765 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 632: /* nativeType: AS_ ANY_ */ -#line 1620 "asmparse.y" + case 634: /* nativeType: AS_ ANY_ */ +#line 1622 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_ASANY); } -#line 7737 "prebuilt\\asmparse.cpp" +#line 7771 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 633: /* nativeType: LPSTRUCT_ */ -#line 1621 "asmparse.y" + case 635: /* nativeType: LPSTRUCT_ */ +#line 1623 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(NATIVE_TYPE_LPSTRUCT); } -#line 7743 "prebuilt\\asmparse.cpp" +#line 7777 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 634: /* nativeType: TYPEDEF_TS */ -#line 1622 "asmparse.y" + case 636: /* nativeType: TYPEDEF_TS */ +#line 1624 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->append((yyvsp[0].tdd)->m_pbsTypeSpec); } -#line 7749 "prebuilt\\asmparse.cpp" +#line 7783 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 635: /* iidParamIndex: %empty */ -#line 1625 "asmparse.y" + case 637: /* iidParamIndex: %empty */ +#line 1627 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = -1; } -#line 7755 "prebuilt\\asmparse.cpp" +#line 7789 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 636: /* iidParamIndex: '(' IIDPARAM_ '=' int32 ')' */ -#line 1626 "asmparse.y" + case 638: /* iidParamIndex: '(' IIDPARAM_ '=' int32 ')' */ +#line 1628 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32); } -#line 7761 "prebuilt\\asmparse.cpp" +#line 7795 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 637: /* variantType: %empty */ -#line 1629 "asmparse.y" + case 639: /* variantType: %empty */ +#line 1631 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_EMPTY; } -#line 7767 "prebuilt\\asmparse.cpp" +#line 7801 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 638: /* variantType: NULL_ */ -#line 1630 "asmparse.y" + case 640: /* variantType: NULL_ */ +#line 1632 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_NULL; } -#line 7773 "prebuilt\\asmparse.cpp" +#line 7807 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 639: /* variantType: VARIANT_ */ -#line 1631 "asmparse.y" + case 641: /* variantType: VARIANT_ */ +#line 1633 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_VARIANT; } -#line 7779 "prebuilt\\asmparse.cpp" +#line 7813 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 640: /* variantType: CURRENCY_ */ -#line 1632 "asmparse.y" + case 642: /* variantType: CURRENCY_ */ +#line 1634 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_CY; } -#line 7785 "prebuilt\\asmparse.cpp" +#line 7819 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 641: /* variantType: VOID_ */ -#line 1633 "asmparse.y" + case 643: /* variantType: VOID_ */ +#line 1635 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_VOID; } -#line 7791 "prebuilt\\asmparse.cpp" +#line 7825 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 642: /* variantType: BOOL_ */ -#line 1634 "asmparse.y" + case 644: /* variantType: BOOL_ */ +#line 1636 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_BOOL; } -#line 7797 "prebuilt\\asmparse.cpp" +#line 7831 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 643: /* variantType: INT8_ */ -#line 1635 "asmparse.y" + case 645: /* variantType: INT8_ */ +#line 1637 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_I1; } -#line 7803 "prebuilt\\asmparse.cpp" +#line 7837 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 644: /* variantType: INT16_ */ -#line 1636 "asmparse.y" + case 646: /* variantType: INT16_ */ +#line 1638 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_I2; } -#line 7809 "prebuilt\\asmparse.cpp" +#line 7843 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 645: /* variantType: INT32_ */ -#line 1637 "asmparse.y" + case 647: /* variantType: INT32_ */ +#line 1639 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_I4; } -#line 7815 "prebuilt\\asmparse.cpp" +#line 7849 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 646: /* variantType: INT64_ */ -#line 1638 "asmparse.y" + case 648: /* variantType: INT64_ */ +#line 1640 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_I8; } -#line 7821 "prebuilt\\asmparse.cpp" +#line 7855 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 647: /* variantType: FLOAT32_ */ -#line 1639 "asmparse.y" + case 649: /* variantType: FLOAT32_ */ +#line 1641 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_R4; } -#line 7827 "prebuilt\\asmparse.cpp" +#line 7861 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 648: /* variantType: FLOAT64_ */ -#line 1640 "asmparse.y" + case 650: /* variantType: FLOAT64_ */ +#line 1642 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_R8; } -#line 7833 "prebuilt\\asmparse.cpp" +#line 7867 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 649: /* variantType: UNSIGNED_ INT8_ */ -#line 1641 "asmparse.y" + case 651: /* variantType: UNSIGNED_ INT8_ */ +#line 1643 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI1; } -#line 7839 "prebuilt\\asmparse.cpp" +#line 7873 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 650: /* variantType: UNSIGNED_ INT16_ */ -#line 1642 "asmparse.y" + case 652: /* variantType: UNSIGNED_ INT16_ */ +#line 1644 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI2; } -#line 7845 "prebuilt\\asmparse.cpp" +#line 7879 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 651: /* variantType: UNSIGNED_ INT32_ */ -#line 1643 "asmparse.y" + case 653: /* variantType: UNSIGNED_ INT32_ */ +#line 1645 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI4; } -#line 7851 "prebuilt\\asmparse.cpp" +#line 7885 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 652: /* variantType: UNSIGNED_ INT64_ */ -#line 1644 "asmparse.y" + case 654: /* variantType: UNSIGNED_ INT64_ */ +#line 1646 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI8; } -#line 7857 "prebuilt\\asmparse.cpp" +#line 7891 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 653: /* variantType: UINT8_ */ -#line 1645 "asmparse.y" + case 655: /* variantType: UINT8_ */ +#line 1647 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI1; } -#line 7863 "prebuilt\\asmparse.cpp" +#line 7897 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 654: /* variantType: UINT16_ */ -#line 1646 "asmparse.y" + case 656: /* variantType: UINT16_ */ +#line 1648 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI2; } -#line 7869 "prebuilt\\asmparse.cpp" +#line 7903 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 655: /* variantType: UINT32_ */ -#line 1647 "asmparse.y" + case 657: /* variantType: UINT32_ */ +#line 1649 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI4; } -#line 7875 "prebuilt\\asmparse.cpp" +#line 7909 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 656: /* variantType: UINT64_ */ -#line 1648 "asmparse.y" + case 658: /* variantType: UINT64_ */ +#line 1650 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UI8; } -#line 7881 "prebuilt\\asmparse.cpp" +#line 7915 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 657: /* variantType: '*' */ -#line 1649 "asmparse.y" + case 659: /* variantType: '*' */ +#line 1651 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_PTR; } -#line 7887 "prebuilt\\asmparse.cpp" +#line 7921 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 658: /* variantType: variantType '[' ']' */ -#line 1650 "asmparse.y" + case 660: /* variantType: variantType '[' ']' */ +#line 1652 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-2].int32) | VT_ARRAY; } -#line 7893 "prebuilt\\asmparse.cpp" +#line 7927 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 659: /* variantType: variantType VECTOR_ */ -#line 1651 "asmparse.y" + case 661: /* variantType: variantType VECTOR_ */ +#line 1653 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | VT_VECTOR; } -#line 7899 "prebuilt\\asmparse.cpp" +#line 7933 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 660: /* variantType: variantType '&' */ -#line 1652 "asmparse.y" + case 662: /* variantType: variantType '&' */ +#line 1654 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[-1].int32) | VT_BYREF; } -#line 7905 "prebuilt\\asmparse.cpp" +#line 7939 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 661: /* variantType: DECIMAL_ */ -#line 1653 "asmparse.y" + case 663: /* variantType: DECIMAL_ */ +#line 1655 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_DECIMAL; } -#line 7911 "prebuilt\\asmparse.cpp" +#line 7945 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 662: /* variantType: DATE_ */ -#line 1654 "asmparse.y" + case 664: /* variantType: DATE_ */ +#line 1656 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_DATE; } -#line 7917 "prebuilt\\asmparse.cpp" +#line 7951 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 663: /* variantType: BSTR_ */ -#line 1655 "asmparse.y" + case 665: /* variantType: BSTR_ */ +#line 1657 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_BSTR; } -#line 7923 "prebuilt\\asmparse.cpp" +#line 7957 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 664: /* variantType: LPSTR_ */ -#line 1656 "asmparse.y" + case 666: /* variantType: LPSTR_ */ +#line 1658 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_LPSTR; } -#line 7929 "prebuilt\\asmparse.cpp" +#line 7963 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 665: /* variantType: LPWSTR_ */ -#line 1657 "asmparse.y" + case 667: /* variantType: LPWSTR_ */ +#line 1659 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_LPWSTR; } -#line 7935 "prebuilt\\asmparse.cpp" +#line 7969 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 666: /* variantType: IUNKNOWN_ */ -#line 1658 "asmparse.y" + case 668: /* variantType: IUNKNOWN_ */ +#line 1660 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UNKNOWN; } -#line 7941 "prebuilt\\asmparse.cpp" +#line 7975 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 667: /* variantType: IDISPATCH_ */ -#line 1659 "asmparse.y" + case 669: /* variantType: IDISPATCH_ */ +#line 1661 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_DISPATCH; } -#line 7947 "prebuilt\\asmparse.cpp" +#line 7981 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 668: /* variantType: SAFEARRAY_ */ -#line 1660 "asmparse.y" + case 670: /* variantType: SAFEARRAY_ */ +#line 1662 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_SAFEARRAY; } -#line 7953 "prebuilt\\asmparse.cpp" +#line 7987 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 669: /* variantType: INT_ */ -#line 1661 "asmparse.y" + case 671: /* variantType: INT_ */ +#line 1663 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_INT; } -#line 7959 "prebuilt\\asmparse.cpp" +#line 7993 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 670: /* variantType: UNSIGNED_ INT_ */ -#line 1662 "asmparse.y" + case 672: /* variantType: UNSIGNED_ INT_ */ +#line 1664 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UINT; } -#line 7965 "prebuilt\\asmparse.cpp" +#line 7999 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 671: /* variantType: UINT_ */ -#line 1663 "asmparse.y" + case 673: /* variantType: UINT_ */ +#line 1665 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_UINT; } -#line 7971 "prebuilt\\asmparse.cpp" +#line 8005 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 672: /* variantType: ERROR_ */ -#line 1664 "asmparse.y" + case 674: /* variantType: ERROR_ */ +#line 1666 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_ERROR; } -#line 7977 "prebuilt\\asmparse.cpp" +#line 8011 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 673: /* variantType: HRESULT_ */ -#line 1665 "asmparse.y" + case 675: /* variantType: HRESULT_ */ +#line 1667 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_HRESULT; } -#line 7983 "prebuilt\\asmparse.cpp" +#line 8017 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 674: /* variantType: CARRAY_ */ -#line 1666 "asmparse.y" + case 676: /* variantType: CARRAY_ */ +#line 1668 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_CARRAY; } -#line 7989 "prebuilt\\asmparse.cpp" +#line 8023 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 675: /* variantType: USERDEFINED_ */ -#line 1667 "asmparse.y" + case 677: /* variantType: USERDEFINED_ */ +#line 1669 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_USERDEFINED; } -#line 7995 "prebuilt\\asmparse.cpp" +#line 8029 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 676: /* variantType: RECORD_ */ -#line 1668 "asmparse.y" + case 678: /* variantType: RECORD_ */ +#line 1670 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_RECORD; } -#line 8001 "prebuilt\\asmparse.cpp" +#line 8035 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 677: /* variantType: FILETIME_ */ -#line 1669 "asmparse.y" + case 679: /* variantType: FILETIME_ */ +#line 1671 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_FILETIME; } -#line 8007 "prebuilt\\asmparse.cpp" +#line 8041 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 678: /* variantType: BLOB_ */ -#line 1670 "asmparse.y" + case 680: /* variantType: BLOB_ */ +#line 1672 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_BLOB; } -#line 8013 "prebuilt\\asmparse.cpp" +#line 8047 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 679: /* variantType: STREAM_ */ -#line 1671 "asmparse.y" + case 681: /* variantType: STREAM_ */ +#line 1673 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_STREAM; } -#line 8019 "prebuilt\\asmparse.cpp" +#line 8053 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 680: /* variantType: STORAGE_ */ -#line 1672 "asmparse.y" + case 682: /* variantType: STORAGE_ */ +#line 1674 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_STORAGE; } -#line 8025 "prebuilt\\asmparse.cpp" +#line 8059 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 681: /* variantType: STREAMED_OBJECT_ */ -#line 1673 "asmparse.y" + case 683: /* variantType: STREAMED_OBJECT_ */ +#line 1675 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_STREAMED_OBJECT; } -#line 8031 "prebuilt\\asmparse.cpp" +#line 8065 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 682: /* variantType: STORED_OBJECT_ */ -#line 1674 "asmparse.y" + case 684: /* variantType: STORED_OBJECT_ */ +#line 1676 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_STORED_OBJECT; } -#line 8037 "prebuilt\\asmparse.cpp" +#line 8071 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 683: /* variantType: BLOB_OBJECT_ */ -#line 1675 "asmparse.y" + case 685: /* variantType: BLOB_OBJECT_ */ +#line 1677 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_BLOB_OBJECT; } -#line 8043 "prebuilt\\asmparse.cpp" +#line 8077 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 684: /* variantType: CF_ */ -#line 1676 "asmparse.y" + case 686: /* variantType: CF_ */ +#line 1678 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_CF; } -#line 8049 "prebuilt\\asmparse.cpp" +#line 8083 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 685: /* variantType: CLSID_ */ -#line 1677 "asmparse.y" + case 687: /* variantType: CLSID_ */ +#line 1679 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = VT_CLSID; } -#line 8055 "prebuilt\\asmparse.cpp" +#line 8089 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 686: /* type: CLASS_ className */ -#line 1681 "asmparse.y" + case 688: /* type: CLASS_ className */ +#line 1683 ".\\src\\coreclr\\ilasm\\asmparse.y" { if((yyvsp[0].token) == PASM->m_tkSysString) { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_STRING); } else if((yyvsp[0].token) == PASM->m_tkSysObject) { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_OBJECT); } else (yyval.binstr) = parser->MakeTypeClass(ELEMENT_TYPE_CLASS, (yyvsp[0].token)); } -#line 8066 "prebuilt\\asmparse.cpp" +#line 8100 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 687: /* type: OBJECT_ */ -#line 1687 "asmparse.y" + case 689: /* type: OBJECT_ */ +#line 1689 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_OBJECT); } -#line 8072 "prebuilt\\asmparse.cpp" +#line 8106 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 688: /* type: VALUE_ CLASS_ className */ -#line 1688 "asmparse.y" + case 690: /* type: VALUE_ CLASS_ className */ +#line 1690 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, (yyvsp[0].token)); } -#line 8078 "prebuilt\\asmparse.cpp" +#line 8112 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 689: /* type: VALUETYPE_ className */ -#line 1689 "asmparse.y" + case 691: /* type: VALUETYPE_ className */ +#line 1691 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, (yyvsp[0].token)); } -#line 8084 "prebuilt\\asmparse.cpp" +#line 8118 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 690: /* type: type '[' ']' */ -#line 1690 "asmparse.y" + case 692: /* type: type '[' ']' */ +#line 1692 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SZARRAY); } -#line 8090 "prebuilt\\asmparse.cpp" +#line 8124 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 691: /* type: type '[' bounds1 ']' */ -#line 1691 "asmparse.y" + case 693: /* type: type '[' bounds1 ']' */ +#line 1693 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, (yyvsp[-3].binstr), (yyvsp[-1].binstr)); } -#line 8096 "prebuilt\\asmparse.cpp" +#line 8130 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 692: /* type: type '&' */ -#line 1692 "asmparse.y" + case 694: /* type: type '&' */ +#line 1694 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_BYREF); } -#line 8102 "prebuilt\\asmparse.cpp" +#line 8136 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 693: /* type: type '*' */ -#line 1693 "asmparse.y" + case 695: /* type: type '*' */ +#line 1695 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_PTR); } -#line 8108 "prebuilt\\asmparse.cpp" +#line 8142 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 694: /* type: type PINNED_ */ -#line 1694 "asmparse.y" + case 696: /* type: type PINNED_ */ +#line 1696 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-1].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_PINNED); } -#line 8114 "prebuilt\\asmparse.cpp" +#line 8148 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 695: /* type: type MODREQ_ '(' typeSpec ')' */ -#line 1695 "asmparse.y" + case 697: /* type: type MODREQ_ '(' typeSpec ')' */ +#line 1697 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, (yyvsp[-1].token)); (yyval.binstr)->append((yyvsp[-4].binstr)); } -#line 8121 "prebuilt\\asmparse.cpp" +#line 8155 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 696: /* type: type MODOPT_ '(' typeSpec ')' */ -#line 1697 "asmparse.y" + case 698: /* type: type MODOPT_ '(' typeSpec ')' */ +#line 1699 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, (yyvsp[-1].token)); (yyval.binstr)->append((yyvsp[-4].binstr)); } -#line 8128 "prebuilt\\asmparse.cpp" +#line 8162 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 697: /* type: methodSpec callConv type '*' '(' sigArgs0 ')' */ -#line 1700 "asmparse.y" + case 699: /* type: methodSpec callConv type '*' '(' sigArgs0 ')' */ +#line 1702 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = parser->MakeSig((yyvsp[-5].int32), (yyvsp[-4].binstr), (yyvsp[-1].binstr)); (yyval.binstr)->insertInt8(ELEMENT_TYPE_FNPTR); PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = parser->m_ANSFirst.POP(); PASM->m_lastArgName = parser->m_ANSLast.POP(); } -#line 8139 "prebuilt\\asmparse.cpp" +#line 8173 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 698: /* type: type '<' tyArgs1 '>' */ -#line 1706 "asmparse.y" + case 700: /* type: type '<' tyArgs1 '>' */ +#line 1708 ".\\src\\coreclr\\ilasm\\asmparse.y" { if((yyvsp[-1].binstr) == NULL) (yyval.binstr) = (yyvsp[-3].binstr); else { (yyval.binstr) = new BinStr(); @@ -8147,33 +8181,33 @@ yyparse (void) (yyval.binstr)->append((yyvsp[-3].binstr)); corEmitInt((yyval.binstr), corCountArgs((yyvsp[-1].binstr))); (yyval.binstr)->append((yyvsp[-1].binstr)); delete (yyvsp[-3].binstr); delete (yyvsp[-1].binstr); }} -#line 8151 "prebuilt\\asmparse.cpp" +#line 8185 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 699: /* type: '!' '!' int32 */ -#line 1713 "asmparse.y" + case 701: /* type: '!' '!' int32 */ +#line 1715 ".\\src\\coreclr\\ilasm\\asmparse.y" { //if(PASM->m_pCurMethod) { // if(($3 < 0)||((DWORD)$3 >= PASM->m_pCurMethod->m_NumTyPars)) // PASM->report->error("Invalid method type parameter '%d'\n",$3); (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_MVAR); corEmitInt((yyval.binstr), (yyvsp[0].int32)); //} else PASM->report->error("Method type parameter '%d' outside method scope\n",$3); } -#line 8162 "prebuilt\\asmparse.cpp" +#line 8196 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 700: /* type: '!' int32 */ -#line 1719 "asmparse.y" + case 702: /* type: '!' int32 */ +#line 1721 ".\\src\\coreclr\\ilasm\\asmparse.y" { //if(PASM->m_pCurClass) { // if(($2 < 0)||((DWORD)$2 >= PASM->m_pCurClass->m_NumTyPars)) // PASM->report->error("Invalid type parameter '%d'\n",$2); (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_VAR); corEmitInt((yyval.binstr), (yyvsp[0].int32)); //} else PASM->report->error("Type parameter '%d' outside class scope\n",$2); } -#line 8173 "prebuilt\\asmparse.cpp" +#line 8207 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 701: /* type: '!' '!' dottedName */ -#line 1725 "asmparse.y" + case 703: /* type: '!' '!' dottedName */ +#line 1727 ".\\src\\coreclr\\ilasm\\asmparse.y" { int eltype = ELEMENT_TYPE_MVAR; int n=-1; if(PASM->m_pCurMethod) n = PASM->m_pCurMethod->FindTyPar((yyvsp[0].string)); @@ -8189,11 +8223,11 @@ yyparse (void) n = 0x1FFFFFFF; } (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(eltype); corEmitInt((yyval.binstr),n); } -#line 8193 "prebuilt\\asmparse.cpp" +#line 8227 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 702: /* type: '!' dottedName */ -#line 1740 "asmparse.y" + case 704: /* type: '!' dottedName */ +#line 1742 ".\\src\\coreclr\\ilasm\\asmparse.y" { int eltype = ELEMENT_TYPE_VAR; int n=-1; if(PASM->m_pCurClass && !newclass) n = PASM->m_pCurClass->FindTyPar((yyvsp[0].string)); @@ -8209,926 +8243,926 @@ yyparse (void) n = 0x1FFFFFFF; } (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(eltype); corEmitInt((yyval.binstr),n); } -#line 8213 "prebuilt\\asmparse.cpp" +#line 8247 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 703: /* type: TYPEDREF_ */ -#line 1755 "asmparse.y" + case 705: /* type: TYPEDREF_ */ +#line 1757 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } -#line 8219 "prebuilt\\asmparse.cpp" +#line 8253 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 704: /* type: VOID_ */ -#line 1756 "asmparse.y" + case 706: /* type: VOID_ */ +#line 1758 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_VOID); } -#line 8225 "prebuilt\\asmparse.cpp" +#line 8259 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 705: /* type: NATIVE_ INT_ */ -#line 1757 "asmparse.y" + case 707: /* type: NATIVE_ INT_ */ +#line 1759 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I); } -#line 8231 "prebuilt\\asmparse.cpp" +#line 8265 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 706: /* type: NATIVE_ UNSIGNED_ INT_ */ -#line 1758 "asmparse.y" + case 708: /* type: NATIVE_ UNSIGNED_ INT_ */ +#line 1760 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U); } -#line 8237 "prebuilt\\asmparse.cpp" +#line 8271 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 707: /* type: NATIVE_ UINT_ */ -#line 1759 "asmparse.y" + case 709: /* type: NATIVE_ UINT_ */ +#line 1761 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U); } -#line 8243 "prebuilt\\asmparse.cpp" +#line 8277 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 708: /* type: simpleType */ -#line 1760 "asmparse.y" + case 710: /* type: simpleType */ +#line 1762 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 8249 "prebuilt\\asmparse.cpp" +#line 8283 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 709: /* type: ELLIPSIS type */ -#line 1761 "asmparse.y" + case 711: /* type: ELLIPSIS type */ +#line 1763 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); (yyval.binstr)->insertInt8(ELEMENT_TYPE_SENTINEL); } -#line 8255 "prebuilt\\asmparse.cpp" +#line 8289 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 710: /* simpleType: CHAR_ */ -#line 1764 "asmparse.y" + case 712: /* simpleType: CHAR_ */ +#line 1766 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_CHAR); } -#line 8261 "prebuilt\\asmparse.cpp" +#line 8295 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 711: /* simpleType: STRING_ */ -#line 1765 "asmparse.y" + case 713: /* simpleType: STRING_ */ +#line 1767 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_STRING); } -#line 8267 "prebuilt\\asmparse.cpp" +#line 8301 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 712: /* simpleType: BOOL_ */ -#line 1766 "asmparse.y" + case 714: /* simpleType: BOOL_ */ +#line 1768 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_BOOLEAN); } -#line 8273 "prebuilt\\asmparse.cpp" +#line 8307 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 713: /* simpleType: INT8_ */ -#line 1767 "asmparse.y" + case 715: /* simpleType: INT8_ */ +#line 1769 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I1); } -#line 8279 "prebuilt\\asmparse.cpp" +#line 8313 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 714: /* simpleType: INT16_ */ -#line 1768 "asmparse.y" + case 716: /* simpleType: INT16_ */ +#line 1770 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I2); } -#line 8285 "prebuilt\\asmparse.cpp" +#line 8319 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 715: /* simpleType: INT32_ */ -#line 1769 "asmparse.y" + case 717: /* simpleType: INT32_ */ +#line 1771 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I4); } -#line 8291 "prebuilt\\asmparse.cpp" +#line 8325 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 716: /* simpleType: INT64_ */ -#line 1770 "asmparse.y" + case 718: /* simpleType: INT64_ */ +#line 1772 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_I8); } -#line 8297 "prebuilt\\asmparse.cpp" +#line 8331 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 717: /* simpleType: FLOAT32_ */ -#line 1771 "asmparse.y" + case 719: /* simpleType: FLOAT32_ */ +#line 1773 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R4); } -#line 8303 "prebuilt\\asmparse.cpp" +#line 8337 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 718: /* simpleType: FLOAT64_ */ -#line 1772 "asmparse.y" + case 720: /* simpleType: FLOAT64_ */ +#line 1774 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_R8); } -#line 8309 "prebuilt\\asmparse.cpp" +#line 8343 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 719: /* simpleType: UNSIGNED_ INT8_ */ -#line 1773 "asmparse.y" + case 721: /* simpleType: UNSIGNED_ INT8_ */ +#line 1775 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U1); } -#line 8315 "prebuilt\\asmparse.cpp" +#line 8349 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 720: /* simpleType: UNSIGNED_ INT16_ */ -#line 1774 "asmparse.y" + case 722: /* simpleType: UNSIGNED_ INT16_ */ +#line 1776 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U2); } -#line 8321 "prebuilt\\asmparse.cpp" +#line 8355 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 721: /* simpleType: UNSIGNED_ INT32_ */ -#line 1775 "asmparse.y" + case 723: /* simpleType: UNSIGNED_ INT32_ */ +#line 1777 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U4); } -#line 8327 "prebuilt\\asmparse.cpp" +#line 8361 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 722: /* simpleType: UNSIGNED_ INT64_ */ -#line 1776 "asmparse.y" + case 724: /* simpleType: UNSIGNED_ INT64_ */ +#line 1778 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U8); } -#line 8333 "prebuilt\\asmparse.cpp" +#line 8367 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 723: /* simpleType: UINT8_ */ -#line 1777 "asmparse.y" + case 725: /* simpleType: UINT8_ */ +#line 1779 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U1); } -#line 8339 "prebuilt\\asmparse.cpp" +#line 8373 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 724: /* simpleType: UINT16_ */ -#line 1778 "asmparse.y" + case 726: /* simpleType: UINT16_ */ +#line 1780 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U2); } -#line 8345 "prebuilt\\asmparse.cpp" +#line 8379 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 725: /* simpleType: UINT32_ */ -#line 1779 "asmparse.y" + case 727: /* simpleType: UINT32_ */ +#line 1781 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U4); } -#line 8351 "prebuilt\\asmparse.cpp" +#line 8385 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 726: /* simpleType: UINT64_ */ -#line 1780 "asmparse.y" + case 728: /* simpleType: UINT64_ */ +#line 1782 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(ELEMENT_TYPE_U8); } -#line 8357 "prebuilt\\asmparse.cpp" +#line 8391 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 727: /* simpleType: TYPEDEF_TS */ -#line 1781 "asmparse.y" + case 729: /* simpleType: TYPEDEF_TS */ +#line 1783 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->append((yyvsp[0].tdd)->m_pbsTypeSpec); } -#line 8363 "prebuilt\\asmparse.cpp" +#line 8397 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 728: /* bounds1: bound */ -#line 1784 "asmparse.y" + case 730: /* bounds1: bound */ +#line 1786 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); } -#line 8369 "prebuilt\\asmparse.cpp" +#line 8403 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 729: /* bounds1: bounds1 ',' bound */ -#line 1785 "asmparse.y" + case 731: /* bounds1: bounds1 ',' bound */ +#line 1787 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyvsp[-2].binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); } -#line 8375 "prebuilt\\asmparse.cpp" +#line 8409 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 730: /* bound: %empty */ -#line 1788 "asmparse.y" + case 732: /* bound: %empty */ +#line 1790 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32(0x7FFFFFFF); (yyval.binstr)->appendInt32(0x7FFFFFFF); } -#line 8381 "prebuilt\\asmparse.cpp" +#line 8415 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 731: /* bound: ELLIPSIS */ -#line 1789 "asmparse.y" + case 733: /* bound: ELLIPSIS */ +#line 1791 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32(0x7FFFFFFF); (yyval.binstr)->appendInt32(0x7FFFFFFF); } -#line 8387 "prebuilt\\asmparse.cpp" +#line 8421 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 732: /* bound: int32 */ -#line 1790 "asmparse.y" + case 734: /* bound: int32 */ +#line 1792 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32(0); (yyval.binstr)->appendInt32((yyvsp[0].int32)); } -#line 8393 "prebuilt\\asmparse.cpp" +#line 8427 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 733: /* bound: int32 ELLIPSIS int32 */ -#line 1791 "asmparse.y" + case 735: /* bound: int32 ELLIPSIS int32 */ +#line 1793 ".\\src\\coreclr\\ilasm\\asmparse.y" { FAIL_UNLESS((yyvsp[-2].int32) <= (yyvsp[0].int32), ("lower bound %d must be <= upper bound %d\n", (yyvsp[-2].int32), (yyvsp[0].int32))); if ((yyvsp[-2].int32) > (yyvsp[0].int32)) { YYERROR; }; (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32((yyvsp[-2].int32)); (yyval.binstr)->appendInt32((yyvsp[0].int32)-(yyvsp[-2].int32)+1); } -#line 8401 "prebuilt\\asmparse.cpp" +#line 8435 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 734: /* bound: int32 ELLIPSIS */ -#line 1794 "asmparse.y" + case 736: /* bound: int32 ELLIPSIS */ +#line 1796 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); (yyval.binstr)->appendInt32(0x7FFFFFFF); } -#line 8407 "prebuilt\\asmparse.cpp" +#line 8441 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 735: /* secDecl: _PERMISSION secAction typeSpec '(' nameValPairs ')' */ -#line 1799 "asmparse.y" + case 737: /* secDecl: _PERMISSION secAction typeSpec '(' nameValPairs ')' */ +#line 1801 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddPermissionDecl((yyvsp[-4].secAct), (yyvsp[-3].token), (yyvsp[-1].pair)); } -#line 8413 "prebuilt\\asmparse.cpp" +#line 8447 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 736: /* secDecl: _PERMISSION secAction typeSpec '=' '{' customBlobDescr '}' */ -#line 1801 "asmparse.y" + case 738: /* secDecl: _PERMISSION secAction typeSpec '=' '{' customBlobDescr '}' */ +#line 1803 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddPermissionDecl((yyvsp[-5].secAct), (yyvsp[-4].token), (yyvsp[-1].binstr)); } -#line 8419 "prebuilt\\asmparse.cpp" +#line 8453 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 737: /* secDecl: _PERMISSION secAction typeSpec */ -#line 1802 "asmparse.y" + case 739: /* secDecl: _PERMISSION secAction typeSpec */ +#line 1804 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddPermissionDecl((yyvsp[-1].secAct), (yyvsp[0].token), (NVPair *)NULL); } -#line 8425 "prebuilt\\asmparse.cpp" +#line 8459 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 738: /* secDecl: psetHead bytes ')' */ -#line 1803 "asmparse.y" + case 740: /* secDecl: psetHead bytes ')' */ +#line 1805 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddPermissionSetDecl((yyvsp[-2].secAct), (yyvsp[-1].binstr)); } -#line 8431 "prebuilt\\asmparse.cpp" +#line 8465 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 739: /* secDecl: _PERMISSIONSET secAction compQstring */ -#line 1805 "asmparse.y" + case 741: /* secDecl: _PERMISSIONSET secAction compQstring */ +#line 1807 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->AddPermissionSetDecl((yyvsp[-1].secAct),BinStrToUnicode((yyvsp[0].binstr),true));} -#line 8437 "prebuilt\\asmparse.cpp" +#line 8471 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 740: /* secDecl: _PERMISSIONSET secAction '=' '{' secAttrSetBlob '}' */ -#line 1807 "asmparse.y" + case 742: /* secDecl: _PERMISSIONSET secAction '=' '{' secAttrSetBlob '}' */ +#line 1809 ".\\src\\coreclr\\ilasm\\asmparse.y" { BinStr* ret = new BinStr(); ret->insertInt8('.'); corEmitInt(ret, nSecAttrBlobs); ret->append((yyvsp[-1].binstr)); PASM->AddPermissionSetDecl((yyvsp[-4].secAct),ret); nSecAttrBlobs = 0; } -#line 8448 "prebuilt\\asmparse.cpp" +#line 8482 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 741: /* secAttrSetBlob: %empty */ -#line 1815 "asmparse.y" + case 743: /* secAttrSetBlob: %empty */ +#line 1817 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); nSecAttrBlobs = 0;} -#line 8454 "prebuilt\\asmparse.cpp" +#line 8488 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 742: /* secAttrSetBlob: secAttrBlob */ -#line 1816 "asmparse.y" + case 744: /* secAttrSetBlob: secAttrBlob */ +#line 1818 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[0].binstr); nSecAttrBlobs = 1; } -#line 8460 "prebuilt\\asmparse.cpp" +#line 8494 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 743: /* secAttrSetBlob: secAttrBlob ',' secAttrSetBlob */ -#line 1817 "asmparse.y" + case 745: /* secAttrSetBlob: secAttrBlob ',' secAttrSetBlob */ +#line 1819 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = (yyvsp[-2].binstr); (yyval.binstr)->append((yyvsp[0].binstr)); nSecAttrBlobs++; } -#line 8466 "prebuilt\\asmparse.cpp" +#line 8500 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 744: /* secAttrBlob: typeSpec '=' '{' customBlobNVPairs '}' */ -#line 1821 "asmparse.y" + case 746: /* secAttrBlob: typeSpec '=' '{' customBlobNVPairs '}' */ +#line 1823 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = PASM->EncodeSecAttr(PASM->ReflectionNotation((yyvsp[-4].token)),(yyvsp[-1].binstr),nCustomBlobNVPairs); nCustomBlobNVPairs = 0; } -#line 8473 "prebuilt\\asmparse.cpp" +#line 8507 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 745: /* secAttrBlob: CLASS_ SQSTRING '=' '{' customBlobNVPairs '}' */ -#line 1824 "asmparse.y" + case 747: /* secAttrBlob: CLASS_ SQSTRING '=' '{' customBlobNVPairs '}' */ +#line 1826 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = PASM->EncodeSecAttr((yyvsp[-4].string),(yyvsp[-1].binstr),nCustomBlobNVPairs); nCustomBlobNVPairs = 0; } -#line 8480 "prebuilt\\asmparse.cpp" +#line 8514 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 746: /* psetHead: _PERMISSIONSET secAction '=' '(' */ -#line 1828 "asmparse.y" + case 748: /* psetHead: _PERMISSIONSET secAction '=' '(' */ +#line 1830 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = (yyvsp[-2].secAct); bParsingByteArray = TRUE; } -#line 8486 "prebuilt\\asmparse.cpp" +#line 8520 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 747: /* psetHead: _PERMISSIONSET secAction BYTEARRAY_ '(' */ -#line 1830 "asmparse.y" + case 749: /* psetHead: _PERMISSIONSET secAction BYTEARRAY_ '(' */ +#line 1832 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = (yyvsp[-2].secAct); bParsingByteArray = TRUE; } -#line 8492 "prebuilt\\asmparse.cpp" +#line 8526 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 748: /* nameValPairs: nameValPair */ -#line 1833 "asmparse.y" + case 750: /* nameValPairs: nameValPair */ +#line 1835 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pair) = (yyvsp[0].pair); } -#line 8498 "prebuilt\\asmparse.cpp" +#line 8532 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 749: /* nameValPairs: nameValPair ',' nameValPairs */ -#line 1834 "asmparse.y" + case 751: /* nameValPairs: nameValPair ',' nameValPairs */ +#line 1836 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.pair) = (yyvsp[-2].pair)->Concat((yyvsp[0].pair)); } -#line 8504 "prebuilt\\asmparse.cpp" +#line 8538 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 750: /* nameValPair: compQstring '=' caValue */ -#line 1837 "asmparse.y" + case 752: /* nameValPair: compQstring '=' caValue */ +#line 1839 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[-2].binstr)->appendInt8(0); (yyval.pair) = new NVPair((yyvsp[-2].binstr), (yyvsp[0].binstr)); } -#line 8510 "prebuilt\\asmparse.cpp" +#line 8544 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 751: /* truefalse: TRUE_ */ -#line 1840 "asmparse.y" + case 753: /* truefalse: TRUE_ */ +#line 1842 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 1; } -#line 8516 "prebuilt\\asmparse.cpp" +#line 8550 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 752: /* truefalse: FALSE_ */ -#line 1841 "asmparse.y" + case 754: /* truefalse: FALSE_ */ +#line 1843 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0; } -#line 8522 "prebuilt\\asmparse.cpp" +#line 8556 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 753: /* caValue: truefalse */ -#line 1844 "asmparse.y" + case 755: /* caValue: truefalse */ +#line 1846 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_BOOLEAN); (yyval.binstr)->appendInt8((yyvsp[0].int32)); } -#line 8530 "prebuilt\\asmparse.cpp" +#line 8564 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 754: /* caValue: int32 */ -#line 1847 "asmparse.y" + case 756: /* caValue: int32 */ +#line 1849 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_I4); (yyval.binstr)->appendInt32((yyvsp[0].int32)); } -#line 8538 "prebuilt\\asmparse.cpp" +#line 8572 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 755: /* caValue: INT32_ '(' int32 ')' */ -#line 1850 "asmparse.y" + case 757: /* caValue: INT32_ '(' int32 ')' */ +#line 1852 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_I4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 8546 "prebuilt\\asmparse.cpp" +#line 8580 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 756: /* caValue: compQstring */ -#line 1853 "asmparse.y" + case 758: /* caValue: compQstring */ +#line 1855 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_STRING); (yyval.binstr)->append((yyvsp[0].binstr)); delete (yyvsp[0].binstr); (yyval.binstr)->appendInt8(0); } -#line 8555 "prebuilt\\asmparse.cpp" +#line 8589 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 757: /* caValue: className '(' INT8_ ':' int32 ')' */ -#line 1857 "asmparse.y" + case 759: /* caValue: className '(' INT8_ ':' int32 ')' */ +#line 1859 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); char* sz = PASM->ReflectionNotation((yyvsp[-5].token)); strcpy_s((char *)(yyval.binstr)->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz); (yyval.binstr)->appendInt8(1); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 8566 "prebuilt\\asmparse.cpp" +#line 8600 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 758: /* caValue: className '(' INT16_ ':' int32 ')' */ -#line 1863 "asmparse.y" + case 760: /* caValue: className '(' INT16_ ':' int32 ')' */ +#line 1865 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); char* sz = PASM->ReflectionNotation((yyvsp[-5].token)); strcpy_s((char *)(yyval.binstr)->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz); (yyval.binstr)->appendInt8(2); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 8577 "prebuilt\\asmparse.cpp" +#line 8611 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 759: /* caValue: className '(' INT32_ ':' int32 ')' */ -#line 1869 "asmparse.y" + case 761: /* caValue: className '(' INT32_ ':' int32 ')' */ +#line 1871 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); char* sz = PASM->ReflectionNotation((yyvsp[-5].token)); strcpy_s((char *)(yyval.binstr)->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz); (yyval.binstr)->appendInt8(4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 8588 "prebuilt\\asmparse.cpp" +#line 8622 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 760: /* caValue: className '(' int32 ')' */ -#line 1875 "asmparse.y" + case 762: /* caValue: className '(' int32 ')' */ +#line 1877 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.binstr) = new BinStr(); (yyval.binstr)->appendInt8(SERIALIZATION_TYPE_ENUM); char* sz = PASM->ReflectionNotation((yyvsp[-3].token)); strcpy_s((char *)(yyval.binstr)->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz); (yyval.binstr)->appendInt8(4); (yyval.binstr)->appendInt32((yyvsp[-1].int32)); } -#line 8599 "prebuilt\\asmparse.cpp" +#line 8633 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 761: /* secAction: REQUEST_ */ -#line 1883 "asmparse.y" + case 763: /* secAction: REQUEST_ */ +#line 1885 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclRequest; } -#line 8605 "prebuilt\\asmparse.cpp" +#line 8639 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 762: /* secAction: DEMAND_ */ -#line 1884 "asmparse.y" + case 764: /* secAction: DEMAND_ */ +#line 1886 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclDemand; } -#line 8611 "prebuilt\\asmparse.cpp" +#line 8645 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 763: /* secAction: ASSERT_ */ -#line 1885 "asmparse.y" + case 765: /* secAction: ASSERT_ */ +#line 1887 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclAssert; } -#line 8617 "prebuilt\\asmparse.cpp" +#line 8651 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 764: /* secAction: DENY_ */ -#line 1886 "asmparse.y" + case 766: /* secAction: DENY_ */ +#line 1888 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclDeny; } -#line 8623 "prebuilt\\asmparse.cpp" +#line 8657 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 765: /* secAction: PERMITONLY_ */ -#line 1887 "asmparse.y" + case 767: /* secAction: PERMITONLY_ */ +#line 1889 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclPermitOnly; } -#line 8629 "prebuilt\\asmparse.cpp" +#line 8663 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 766: /* secAction: LINKCHECK_ */ -#line 1888 "asmparse.y" + case 768: /* secAction: LINKCHECK_ */ +#line 1890 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclLinktimeCheck; } -#line 8635 "prebuilt\\asmparse.cpp" +#line 8669 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 767: /* secAction: INHERITCHECK_ */ -#line 1889 "asmparse.y" + case 769: /* secAction: INHERITCHECK_ */ +#line 1891 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclInheritanceCheck; } -#line 8641 "prebuilt\\asmparse.cpp" +#line 8675 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 768: /* secAction: REQMIN_ */ -#line 1890 "asmparse.y" + case 770: /* secAction: REQMIN_ */ +#line 1892 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclRequestMinimum; } -#line 8647 "prebuilt\\asmparse.cpp" +#line 8681 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 769: /* secAction: REQOPT_ */ -#line 1891 "asmparse.y" + case 771: /* secAction: REQOPT_ */ +#line 1893 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclRequestOptional; } -#line 8653 "prebuilt\\asmparse.cpp" +#line 8687 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 770: /* secAction: REQREFUSE_ */ -#line 1892 "asmparse.y" + case 772: /* secAction: REQREFUSE_ */ +#line 1894 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclRequestRefuse; } -#line 8659 "prebuilt\\asmparse.cpp" +#line 8693 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 771: /* secAction: PREJITGRANT_ */ -#line 1893 "asmparse.y" + case 773: /* secAction: PREJITGRANT_ */ +#line 1895 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclPrejitGrant; } -#line 8665 "prebuilt\\asmparse.cpp" +#line 8699 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 772: /* secAction: PREJITDENY_ */ -#line 1894 "asmparse.y" + case 774: /* secAction: PREJITDENY_ */ +#line 1896 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclPrejitDenied; } -#line 8671 "prebuilt\\asmparse.cpp" +#line 8705 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 773: /* secAction: NONCASDEMAND_ */ -#line 1895 "asmparse.y" + case 775: /* secAction: NONCASDEMAND_ */ +#line 1897 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclNonCasDemand; } -#line 8677 "prebuilt\\asmparse.cpp" +#line 8711 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 774: /* secAction: NONCASLINKDEMAND_ */ -#line 1896 "asmparse.y" + case 776: /* secAction: NONCASLINKDEMAND_ */ +#line 1898 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclNonCasLinkDemand; } -#line 8683 "prebuilt\\asmparse.cpp" +#line 8717 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 775: /* secAction: NONCASINHERITANCE_ */ -#line 1897 "asmparse.y" + case 777: /* secAction: NONCASINHERITANCE_ */ +#line 1899 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.secAct) = dclNonCasInheritance; } -#line 8689 "prebuilt\\asmparse.cpp" +#line 8723 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 776: /* esHead: _LINE */ -#line 1901 "asmparse.y" + case 778: /* esHead: _LINE */ +#line 1903 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } -#line 8695 "prebuilt\\asmparse.cpp" +#line 8729 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 777: /* esHead: P_LINE */ -#line 1902 "asmparse.y" + case 779: /* esHead: P_LINE */ +#line 1904 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } -#line 8701 "prebuilt\\asmparse.cpp" +#line 8735 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 778: /* extSourceSpec: esHead int32 SQSTRING */ -#line 1905 "asmparse.y" + case 780: /* extSourceSpec: esHead int32 SQSTRING */ +#line 1907 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-1].int32); PENV->nExtCol = 0; PENV->nExtColEnd = static_cast(-1); PASM->SetSourceFileName((yyvsp[0].string));} -#line 8709 "prebuilt\\asmparse.cpp" +#line 8743 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 779: /* extSourceSpec: esHead int32 */ -#line 1908 "asmparse.y" + case 781: /* extSourceSpec: esHead int32 */ +#line 1910 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[0].int32); PENV->nExtCol = 0; PENV->nExtColEnd = static_cast(-1); } -#line 8716 "prebuilt\\asmparse.cpp" +#line 8750 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 780: /* extSourceSpec: esHead int32 ':' int32 SQSTRING */ -#line 1910 "asmparse.y" + case 782: /* extSourceSpec: esHead int32 ':' int32 SQSTRING */ +#line 1912 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-3].int32); PENV->nExtCol=(yyvsp[-1].int32); PENV->nExtColEnd = static_cast(-1); PASM->SetSourceFileName((yyvsp[0].string));} -#line 8724 "prebuilt\\asmparse.cpp" +#line 8758 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 781: /* extSourceSpec: esHead int32 ':' int32 */ -#line 1913 "asmparse.y" + case 783: /* extSourceSpec: esHead int32 ':' int32 */ +#line 1915 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-2].int32); PENV->nExtCol=(yyvsp[0].int32); PENV->nExtColEnd = static_cast(-1);} -#line 8731 "prebuilt\\asmparse.cpp" +#line 8765 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 782: /* extSourceSpec: esHead int32 ':' int32 ',' int32 SQSTRING */ -#line 1916 "asmparse.y" + case 784: /* extSourceSpec: esHead int32 ':' int32 ',' int32 SQSTRING */ +#line 1918 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-5].int32); PENV->nExtCol=(yyvsp[-3].int32); PENV->nExtColEnd = (yyvsp[-1].int32); PASM->SetSourceFileName((yyvsp[0].string));} -#line 8739 "prebuilt\\asmparse.cpp" +#line 8773 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 783: /* extSourceSpec: esHead int32 ':' int32 ',' int32 */ -#line 1920 "asmparse.y" + case 785: /* extSourceSpec: esHead int32 ':' int32 ',' int32 */ +#line 1922 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-4].int32); PENV->nExtCol=(yyvsp[-2].int32); PENV->nExtColEnd = (yyvsp[0].int32); } -#line 8746 "prebuilt\\asmparse.cpp" +#line 8780 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 784: /* extSourceSpec: esHead int32 ',' int32 ':' int32 SQSTRING */ -#line 1923 "asmparse.y" + case 786: /* extSourceSpec: esHead int32 ',' int32 ':' int32 SQSTRING */ +#line 1925 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = (yyvsp[-5].int32); PENV->nExtLineEnd = (yyvsp[-3].int32); PENV->nExtCol=(yyvsp[-1].int32); PENV->nExtColEnd = static_cast(-1); PASM->SetSourceFileName((yyvsp[0].string));} -#line 8754 "prebuilt\\asmparse.cpp" +#line 8788 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 785: /* extSourceSpec: esHead int32 ',' int32 ':' int32 */ -#line 1927 "asmparse.y" + case 787: /* extSourceSpec: esHead int32 ',' int32 ':' int32 */ +#line 1929 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = (yyvsp[-4].int32); PENV->nExtLineEnd = (yyvsp[-2].int32); PENV->nExtCol=(yyvsp[0].int32); PENV->nExtColEnd = static_cast(-1); } -#line 8761 "prebuilt\\asmparse.cpp" +#line 8795 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 786: /* extSourceSpec: esHead int32 ',' int32 ':' int32 ',' int32 SQSTRING */ -#line 1930 "asmparse.y" + case 788: /* extSourceSpec: esHead int32 ',' int32 ':' int32 ',' int32 SQSTRING */ +#line 1932 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = (yyvsp[-7].int32); PENV->nExtLineEnd = (yyvsp[-5].int32); PENV->nExtCol=(yyvsp[-3].int32); PENV->nExtColEnd = (yyvsp[-1].int32); PASM->SetSourceFileName((yyvsp[0].string));} -#line 8769 "prebuilt\\asmparse.cpp" +#line 8803 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 787: /* extSourceSpec: esHead int32 ',' int32 ':' int32 ',' int32 */ -#line 1934 "asmparse.y" + case 789: /* extSourceSpec: esHead int32 ',' int32 ':' int32 ',' int32 */ +#line 1936 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = (yyvsp[-6].int32); PENV->nExtLineEnd = (yyvsp[-4].int32); PENV->nExtCol=(yyvsp[-2].int32); PENV->nExtColEnd = (yyvsp[0].int32); } -#line 8776 "prebuilt\\asmparse.cpp" +#line 8810 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 788: /* extSourceSpec: esHead int32 QSTRING */ -#line 1936 "asmparse.y" + case 790: /* extSourceSpec: esHead int32 QSTRING */ +#line 1938 ".\\src\\coreclr\\ilasm\\asmparse.y" { PENV->nExtLine = PENV->nExtLineEnd = (yyvsp[-1].int32) - 1; PENV->nExtCol = 0; PENV->nExtColEnd = static_cast(-1); PASM->SetSourceFileName((yyvsp[0].binstr));} -#line 8784 "prebuilt\\asmparse.cpp" +#line 8818 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 789: /* fileDecl: _FILE fileAttr dottedName fileEntry hashHead bytes ')' fileEntry */ -#line 1943 "asmparse.y" + case 791: /* fileDecl: _FILE fileAttr dottedName fileEntry hashHead bytes ')' fileEntry */ +#line 1945 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->AddFile((yyvsp[-5].string), (yyvsp[-6].fileAttr)|(yyvsp[-4].fileAttr)|(yyvsp[0].fileAttr), (yyvsp[-2].binstr)); } -#line 8790 "prebuilt\\asmparse.cpp" +#line 8824 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 790: /* fileDecl: _FILE fileAttr dottedName fileEntry */ -#line 1944 "asmparse.y" + case 792: /* fileDecl: _FILE fileAttr dottedName fileEntry */ +#line 1946 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->AddFile((yyvsp[-1].string), (yyvsp[-2].fileAttr)|(yyvsp[0].fileAttr), NULL); } -#line 8796 "prebuilt\\asmparse.cpp" +#line 8830 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 791: /* fileAttr: %empty */ -#line 1947 "asmparse.y" + case 793: /* fileAttr: %empty */ +#line 1949 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fileAttr) = (CorFileFlags) 0; } -#line 8802 "prebuilt\\asmparse.cpp" +#line 8836 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 792: /* fileAttr: fileAttr NOMETADATA_ */ -#line 1948 "asmparse.y" + case 794: /* fileAttr: fileAttr NOMETADATA_ */ +#line 1950 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fileAttr) = (CorFileFlags) ((yyvsp[-1].fileAttr) | ffContainsNoMetaData); } -#line 8808 "prebuilt\\asmparse.cpp" +#line 8842 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 793: /* fileEntry: %empty */ -#line 1951 "asmparse.y" + case 795: /* fileEntry: %empty */ +#line 1953 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fileAttr) = (CorFileFlags) 0; } -#line 8814 "prebuilt\\asmparse.cpp" +#line 8848 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 794: /* fileEntry: _ENTRYPOINT */ -#line 1952 "asmparse.y" + case 796: /* fileEntry: _ENTRYPOINT */ +#line 1954 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.fileAttr) = (CorFileFlags) 0x80000000; } -#line 8820 "prebuilt\\asmparse.cpp" +#line 8854 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 795: /* hashHead: _HASH '=' '(' */ -#line 1955 "asmparse.y" + case 797: /* hashHead: _HASH '=' '(' */ +#line 1957 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 8826 "prebuilt\\asmparse.cpp" +#line 8860 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 796: /* assemblyHead: _ASSEMBLY asmAttr dottedName */ -#line 1958 "asmparse.y" + case 798: /* assemblyHead: _ASSEMBLY asmAttr dottedName */ +#line 1960 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartAssembly((yyvsp[0].string), NULL, (DWORD)(yyvsp[-1].asmAttr), FALSE); } -#line 8832 "prebuilt\\asmparse.cpp" +#line 8866 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 797: /* asmAttr: %empty */ -#line 1961 "asmparse.y" + case 799: /* asmAttr: %empty */ +#line 1963 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.asmAttr) = (CorAssemblyFlags) 0; } -#line 8838 "prebuilt\\asmparse.cpp" +#line 8872 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 798: /* asmAttr: asmAttr RETARGETABLE_ */ -#line 1962 "asmparse.y" + case 800: /* asmAttr: asmAttr RETARGETABLE_ */ +#line 1964 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.asmAttr) = (CorAssemblyFlags) ((yyvsp[-1].asmAttr) | afRetargetable); } -#line 8844 "prebuilt\\asmparse.cpp" +#line 8878 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 799: /* asmAttr: asmAttr WINDOWSRUNTIME_ */ -#line 1963 "asmparse.y" + case 801: /* asmAttr: asmAttr WINDOWSRUNTIME_ */ +#line 1965 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.asmAttr) = (CorAssemblyFlags) ((yyvsp[-1].asmAttr) | afContentType_WindowsRuntime); } -#line 8850 "prebuilt\\asmparse.cpp" +#line 8884 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 800: /* asmAttr: asmAttr NOPLATFORM_ */ -#line 1964 "asmparse.y" + case 802: /* asmAttr: asmAttr NOPLATFORM_ */ +#line 1966 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.asmAttr) = (CorAssemblyFlags) ((yyvsp[-1].asmAttr) | afPA_NoPlatform); } -#line 8856 "prebuilt\\asmparse.cpp" +#line 8890 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 801: /* asmAttr: asmAttr LEGACY_ LIBRARY_ */ -#line 1965 "asmparse.y" + case 803: /* asmAttr: asmAttr LEGACY_ LIBRARY_ */ +#line 1967 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.asmAttr) = (yyvsp[-2].asmAttr); } -#line 8862 "prebuilt\\asmparse.cpp" +#line 8896 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 802: /* asmAttr: asmAttr CIL_ */ -#line 1966 "asmparse.y" + case 804: /* asmAttr: asmAttr CIL_ */ +#line 1968 ".\\src\\coreclr\\ilasm\\asmparse.y" { SET_PA((yyval.asmAttr),(yyvsp[-1].asmAttr),afPA_MSIL); } -#line 8868 "prebuilt\\asmparse.cpp" +#line 8902 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 803: /* asmAttr: asmAttr X86_ */ -#line 1967 "asmparse.y" + case 805: /* asmAttr: asmAttr X86_ */ +#line 1969 ".\\src\\coreclr\\ilasm\\asmparse.y" { SET_PA((yyval.asmAttr),(yyvsp[-1].asmAttr),afPA_x86); } -#line 8874 "prebuilt\\asmparse.cpp" +#line 8908 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 804: /* asmAttr: asmAttr AMD64_ */ -#line 1968 "asmparse.y" + case 806: /* asmAttr: asmAttr AMD64_ */ +#line 1970 ".\\src\\coreclr\\ilasm\\asmparse.y" { SET_PA((yyval.asmAttr),(yyvsp[-1].asmAttr),afPA_AMD64); } -#line 8880 "prebuilt\\asmparse.cpp" +#line 8914 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 805: /* asmAttr: asmAttr ARM_ */ -#line 1969 "asmparse.y" + case 807: /* asmAttr: asmAttr ARM_ */ +#line 1971 ".\\src\\coreclr\\ilasm\\asmparse.y" { SET_PA((yyval.asmAttr),(yyvsp[-1].asmAttr),afPA_ARM); } -#line 8886 "prebuilt\\asmparse.cpp" +#line 8920 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 806: /* asmAttr: asmAttr ARM64_ */ -#line 1970 "asmparse.y" + case 808: /* asmAttr: asmAttr ARM64_ */ +#line 1972 ".\\src\\coreclr\\ilasm\\asmparse.y" { SET_PA((yyval.asmAttr),(yyvsp[-1].asmAttr),afPA_ARM64); } -#line 8892 "prebuilt\\asmparse.cpp" +#line 8926 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 809: /* assemblyDecl: _HASH ALGORITHM_ int32 */ -#line 1977 "asmparse.y" + case 811: /* assemblyDecl: _HASH ALGORITHM_ int32 */ +#line 1979 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyHashAlg((yyvsp[0].int32)); } -#line 8898 "prebuilt\\asmparse.cpp" +#line 8932 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 812: /* intOrWildcard: int32 */ -#line 1982 "asmparse.y" + case 814: /* intOrWildcard: int32 */ +#line 1984 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = (yyvsp[0].int32); } -#line 8904 "prebuilt\\asmparse.cpp" +#line 8938 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 813: /* intOrWildcard: '*' */ -#line 1983 "asmparse.y" + case 815: /* intOrWildcard: '*' */ +#line 1985 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.int32) = 0xFFFF; } -#line 8910 "prebuilt\\asmparse.cpp" +#line 8944 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 814: /* asmOrRefDecl: publicKeyHead bytes ')' */ -#line 1986 "asmparse.y" + case 816: /* asmOrRefDecl: publicKeyHead bytes ')' */ +#line 1988 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyPublicKey((yyvsp[-1].binstr)); } -#line 8916 "prebuilt\\asmparse.cpp" +#line 8950 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 815: /* asmOrRefDecl: _VER intOrWildcard ':' intOrWildcard ':' intOrWildcard ':' intOrWildcard */ -#line 1988 "asmparse.y" + case 817: /* asmOrRefDecl: _VER intOrWildcard ':' intOrWildcard ':' intOrWildcard ':' intOrWildcard */ +#line 1990 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyVer((USHORT)(yyvsp[-6].int32), (USHORT)(yyvsp[-4].int32), (USHORT)(yyvsp[-2].int32), (USHORT)(yyvsp[0].int32)); } -#line 8922 "prebuilt\\asmparse.cpp" +#line 8956 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 816: /* asmOrRefDecl: _LOCALE compQstring */ -#line 1989 "asmparse.y" + case 818: /* asmOrRefDecl: _LOCALE compQstring */ +#line 1991 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyvsp[0].binstr)->appendInt8(0); PASMM->SetAssemblyLocale((yyvsp[0].binstr),TRUE); } -#line 8928 "prebuilt\\asmparse.cpp" +#line 8962 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 817: /* asmOrRefDecl: localeHead bytes ')' */ -#line 1990 "asmparse.y" + case 819: /* asmOrRefDecl: localeHead bytes ')' */ +#line 1992 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyLocale((yyvsp[-1].binstr),FALSE); } -#line 8934 "prebuilt\\asmparse.cpp" +#line 8968 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 820: /* publicKeyHead: _PUBLICKEY '=' '(' */ -#line 1995 "asmparse.y" + case 822: /* publicKeyHead: _PUBLICKEY '=' '(' */ +#line 1997 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 8940 "prebuilt\\asmparse.cpp" +#line 8974 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 821: /* publicKeyTokenHead: _PUBLICKEYTOKEN '=' '(' */ -#line 1998 "asmparse.y" + case 823: /* publicKeyTokenHead: _PUBLICKEYTOKEN '=' '(' */ +#line 2000 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 8946 "prebuilt\\asmparse.cpp" +#line 8980 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 822: /* localeHead: _LOCALE '=' '(' */ -#line 2001 "asmparse.y" + case 824: /* localeHead: _LOCALE '=' '(' */ +#line 2003 ".\\src\\coreclr\\ilasm\\asmparse.y" { bParsingByteArray = TRUE; } -#line 8952 "prebuilt\\asmparse.cpp" +#line 8986 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 823: /* assemblyRefHead: _ASSEMBLY EXTERN_ asmAttr dottedName */ -#line 2005 "asmparse.y" + case 825: /* assemblyRefHead: _ASSEMBLY EXTERN_ asmAttr dottedName */ +#line 2007 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartAssembly((yyvsp[0].string), NULL, (yyvsp[-1].asmAttr), TRUE); } -#line 8958 "prebuilt\\asmparse.cpp" +#line 8992 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 824: /* assemblyRefHead: _ASSEMBLY EXTERN_ asmAttr dottedName AS_ dottedName */ -#line 2007 "asmparse.y" + case 826: /* assemblyRefHead: _ASSEMBLY EXTERN_ asmAttr dottedName AS_ dottedName */ +#line 2009 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartAssembly((yyvsp[-2].string), (yyvsp[0].string), (yyvsp[-3].asmAttr), TRUE); } -#line 8964 "prebuilt\\asmparse.cpp" +#line 8998 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 827: /* assemblyRefDecl: hashHead bytes ')' */ -#line 2014 "asmparse.y" + case 829: /* assemblyRefDecl: hashHead bytes ')' */ +#line 2016 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyHashBlob((yyvsp[-1].binstr)); } -#line 8970 "prebuilt\\asmparse.cpp" +#line 9004 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 829: /* assemblyRefDecl: publicKeyTokenHead bytes ')' */ -#line 2016 "asmparse.y" + case 831: /* assemblyRefDecl: publicKeyTokenHead bytes ')' */ +#line 2018 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyPublicKeyToken((yyvsp[-1].binstr)); } -#line 8976 "prebuilt\\asmparse.cpp" +#line 9010 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 830: /* assemblyRefDecl: AUTO_ */ -#line 2017 "asmparse.y" + case 832: /* assemblyRefDecl: AUTO_ */ +#line 2019 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetAssemblyAutodetect(); } -#line 8982 "prebuilt\\asmparse.cpp" +#line 9016 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 831: /* exptypeHead: _CLASS EXTERN_ exptAttr dottedName */ -#line 2020 "asmparse.y" + case 833: /* exptypeHead: _CLASS EXTERN_ exptAttr dottedName */ +#line 2022 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartComType((yyvsp[0].string), (yyvsp[-1].exptAttr));} -#line 8988 "prebuilt\\asmparse.cpp" +#line 9022 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 832: /* exportHead: _EXPORT exptAttr dottedName */ -#line 2023 "asmparse.y" + case 834: /* exportHead: _EXPORT exptAttr dottedName */ +#line 2025 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartComType((yyvsp[0].string), (yyvsp[-1].exptAttr)); } -#line 8994 "prebuilt\\asmparse.cpp" +#line 9028 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 833: /* exptAttr: %empty */ -#line 2026 "asmparse.y" + case 835: /* exptAttr: %empty */ +#line 2028 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) 0; } -#line 9000 "prebuilt\\asmparse.cpp" +#line 9034 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 834: /* exptAttr: exptAttr PRIVATE_ */ -#line 2027 "asmparse.y" + case 836: /* exptAttr: exptAttr PRIVATE_ */ +#line 2029 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-1].exptAttr) | tdNotPublic); } -#line 9006 "prebuilt\\asmparse.cpp" +#line 9040 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 835: /* exptAttr: exptAttr PUBLIC_ */ -#line 2028 "asmparse.y" + case 837: /* exptAttr: exptAttr PUBLIC_ */ +#line 2030 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-1].exptAttr) | tdPublic); } -#line 9012 "prebuilt\\asmparse.cpp" +#line 9046 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 836: /* exptAttr: exptAttr FORWARDER_ */ -#line 2029 "asmparse.y" + case 838: /* exptAttr: exptAttr FORWARDER_ */ +#line 2031 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-1].exptAttr) | tdForwarder); } -#line 9018 "prebuilt\\asmparse.cpp" +#line 9052 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 837: /* exptAttr: exptAttr NESTED_ PUBLIC_ */ -#line 2030 "asmparse.y" + case 839: /* exptAttr: exptAttr NESTED_ PUBLIC_ */ +#line 2032 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedPublic); } -#line 9024 "prebuilt\\asmparse.cpp" +#line 9058 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 838: /* exptAttr: exptAttr NESTED_ PRIVATE_ */ -#line 2031 "asmparse.y" + case 840: /* exptAttr: exptAttr NESTED_ PRIVATE_ */ +#line 2033 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedPrivate); } -#line 9030 "prebuilt\\asmparse.cpp" +#line 9064 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 839: /* exptAttr: exptAttr NESTED_ FAMILY_ */ -#line 2032 "asmparse.y" + case 841: /* exptAttr: exptAttr NESTED_ FAMILY_ */ +#line 2034 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedFamily); } -#line 9036 "prebuilt\\asmparse.cpp" +#line 9070 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 840: /* exptAttr: exptAttr NESTED_ ASSEMBLY_ */ -#line 2033 "asmparse.y" + case 842: /* exptAttr: exptAttr NESTED_ ASSEMBLY_ */ +#line 2035 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedAssembly); } -#line 9042 "prebuilt\\asmparse.cpp" +#line 9076 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 841: /* exptAttr: exptAttr NESTED_ FAMANDASSEM_ */ -#line 2034 "asmparse.y" + case 843: /* exptAttr: exptAttr NESTED_ FAMANDASSEM_ */ +#line 2036 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedFamANDAssem); } -#line 9048 "prebuilt\\asmparse.cpp" +#line 9082 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 842: /* exptAttr: exptAttr NESTED_ FAMORASSEM_ */ -#line 2035 "asmparse.y" + case 844: /* exptAttr: exptAttr NESTED_ FAMORASSEM_ */ +#line 2037 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.exptAttr) = (CorTypeAttr) ((yyvsp[-2].exptAttr) | tdNestedFamORAssem); } -#line 9054 "prebuilt\\asmparse.cpp" +#line 9088 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 845: /* exptypeDecl: _FILE dottedName */ -#line 2042 "asmparse.y" + case 847: /* exptypeDecl: _FILE dottedName */ +#line 2044 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetComTypeFile((yyvsp[0].string)); } -#line 9060 "prebuilt\\asmparse.cpp" +#line 9094 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 846: /* exptypeDecl: _CLASS EXTERN_ slashedName */ -#line 2043 "asmparse.y" + case 848: /* exptypeDecl: _CLASS EXTERN_ slashedName */ +#line 2045 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetComTypeComType((yyvsp[0].string)); } -#line 9066 "prebuilt\\asmparse.cpp" +#line 9100 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 847: /* exptypeDecl: _ASSEMBLY EXTERN_ dottedName */ -#line 2044 "asmparse.y" + case 849: /* exptypeDecl: _ASSEMBLY EXTERN_ dottedName */ +#line 2046 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetComTypeAsmRef((yyvsp[0].string)); } -#line 9072 "prebuilt\\asmparse.cpp" +#line 9106 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 848: /* exptypeDecl: MDTOKEN_ '(' int32 ')' */ -#line 2045 "asmparse.y" + case 850: /* exptypeDecl: MDTOKEN_ '(' int32 ')' */ +#line 2047 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(!PASMM->SetComTypeImplementationTok((yyvsp[-1].int32))) PASM->report->error("Invalid implementation of exported type\n"); } -#line 9079 "prebuilt\\asmparse.cpp" +#line 9113 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 849: /* exptypeDecl: _CLASS int32 */ -#line 2047 "asmparse.y" + case 851: /* exptypeDecl: _CLASS int32 */ +#line 2049 ".\\src\\coreclr\\ilasm\\asmparse.y" { if(!PASMM->SetComTypeClassTok((yyvsp[0].int32))) PASM->report->error("Invalid TypeDefID of exported type\n"); } -#line 9086 "prebuilt\\asmparse.cpp" +#line 9120 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 852: /* manifestResHead: _MRESOURCE manresAttr dottedName */ -#line 2053 "asmparse.y" + case 854: /* manifestResHead: _MRESOURCE manresAttr dottedName */ +#line 2055 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartManifestRes((yyvsp[0].string), (yyvsp[0].string), (yyvsp[-1].manresAttr)); } -#line 9092 "prebuilt\\asmparse.cpp" +#line 9126 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 853: /* manifestResHead: _MRESOURCE manresAttr dottedName AS_ dottedName */ -#line 2055 "asmparse.y" + case 855: /* manifestResHead: _MRESOURCE manresAttr dottedName AS_ dottedName */ +#line 2057 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->StartManifestRes((yyvsp[-2].string), (yyvsp[0].string), (yyvsp[-3].manresAttr)); } -#line 9098 "prebuilt\\asmparse.cpp" +#line 9132 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 854: /* manresAttr: %empty */ -#line 2058 "asmparse.y" + case 856: /* manresAttr: %empty */ +#line 2060 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.manresAttr) = (CorManifestResourceFlags) 0; } -#line 9104 "prebuilt\\asmparse.cpp" +#line 9138 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 855: /* manresAttr: manresAttr PUBLIC_ */ -#line 2059 "asmparse.y" + case 857: /* manresAttr: manresAttr PUBLIC_ */ +#line 2061 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.manresAttr) = (CorManifestResourceFlags) ((yyvsp[-1].manresAttr) | mrPublic); } -#line 9110 "prebuilt\\asmparse.cpp" +#line 9144 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 856: /* manresAttr: manresAttr PRIVATE_ */ -#line 2060 "asmparse.y" + case 858: /* manresAttr: manresAttr PRIVATE_ */ +#line 2062 ".\\src\\coreclr\\ilasm\\asmparse.y" { (yyval.manresAttr) = (CorManifestResourceFlags) ((yyvsp[-1].manresAttr) | mrPrivate); } -#line 9116 "prebuilt\\asmparse.cpp" +#line 9150 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 859: /* manifestResDecl: _FILE dottedName AT_ int32 */ -#line 2067 "asmparse.y" + case 861: /* manifestResDecl: _FILE dottedName AT_ int32 */ +#line 2069 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetManifestResFile((yyvsp[-2].string), (ULONG)(yyvsp[0].int32)); } -#line 9122 "prebuilt\\asmparse.cpp" +#line 9156 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; - case 860: /* manifestResDecl: _ASSEMBLY EXTERN_ dottedName */ -#line 2068 "asmparse.y" + case 862: /* manifestResDecl: _ASSEMBLY EXTERN_ dottedName */ +#line 2070 ".\\src\\coreclr\\ilasm\\asmparse.y" { PASMM->SetManifestResAsmRef((yyvsp[0].string)); } -#line 9128 "prebuilt\\asmparse.cpp" +#line 9162 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" break; -#line 9132 "prebuilt\\asmparse.cpp" +#line 9166 ".\\src\\coreclr\\ilasm\\prebuilt\\asmparse.cpp" default: break; } @@ -9321,7 +9355,7 @@ yyparse (void) return yyresult; } -#line 2073 "asmparse.y" +#line 2075 ".\\src\\coreclr\\ilasm\\asmparse.y" #include "grammar_after.cpp" diff --git a/src/coreclr/ilasm/prebuilt/asmparse.grammar b/src/coreclr/ilasm/prebuilt/asmparse.grammar index dd70298c98b169..2fe322733fde76 100644 --- a/src/coreclr/ilasm/prebuilt/asmparse.grammar +++ b/src/coreclr/ilasm/prebuilt/asmparse.grammar @@ -1,3 +1,14 @@ +E:\source\runtime\.dotnet + + Determining projects to restore... + Restored E:\source\runtime\src\coreclr\ilasm\GrammarExtractor\GrammarExtractor.csproj (in 595 ms). + 7 of 8 projects are up-to-date for restore. + ILLink.RoslynAnalyzer -> E:\source\runtime\artifacts\bin\ILLink.RoslynAnalyzer\Debug\netstandard2.0\ILLink.RoslynAnalyzer.dll + ILLink.CodeFixProvider -> E:\source\runtime\artifacts\bin\ILLink.CodeFixProvider\Debug\netstandard2.0\ILLink.CodeFixProvider.dll + Mono.Linker -> E:\source\runtime\artifacts\bin\Mono.Linker\ref\Debug\net10.0\illink.dll + Mono.Linker -> E:\source\runtime\artifacts\bin\Mono.Linker\Debug\net10.0\illink.dll + ILLink.Tasks -> E:\source\runtime\artifacts\bin\ILLink.Tasks\Debug\net\ILLink.Tasks.dll + GrammarExtractor -> E:\source\runtime\artifacts\bin\GrammarExtractor\x64\Debug\GrammarExtractor.dll // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. @@ -84,6 +95,7 @@ id : ID | 'nooptimization' | 'aggressiveoptimization' | 'async' + | 'extended' | SQSTRING ; @@ -230,6 +242,7 @@ classAttr : /* EMPTY */ | classAttr 'auto' | classAttr 'sequential' | classAttr 'explicit' + | classAttr 'extended' | classAttr 'ansi' | classAttr 'unicode' | classAttr 'autochar' diff --git a/src/coreclr/inc/il_kywd.h b/src/coreclr/inc/il_kywd.h index 8c284460a369bf..e5cc4d6cefb7c7 100644 --- a/src/coreclr/inc/il_kywd.h +++ b/src/coreclr/inc/il_kywd.h @@ -66,6 +66,7 @@ KYWD( "auto", AUTO_, NO_VALUE ) KYWD( "sequential", SEQUENTIAL_, NO_VALUE ) KYWD( "explicit", EXPLICIT_, NO_VALUE ) + KYWD( "extended", EXTENDED_, NO_VALUE ) KYWD( "ansi", ANSI_, NO_VALUE ) KYWD( "unicode", UNICODE_, NO_VALUE ) KYWD( "autochar", AUTOCHAR_, NO_VALUE ) From 37de415c7156e66a61bb89aacc3e09aa977634fb Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 08:43:48 -0700 Subject: [PATCH 03/34] Don't block loading extended layout types --- src/coreclr/vm/methodtablebuilder.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 97bc51539e4c90..312699542c95c8 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -140,10 +140,6 @@ MethodTableBuilder::CreateClass( Module *pModule, pEEClass->m_dwAttrClass = dwAttrClass; - // MDVal check: can't be both tdSequentialLayout and tdExplicitLayout - if((dwAttrClass & tdLayoutMask) == tdLayoutMask) - COMPlusThrowHR(COR_E_TYPELOAD); - if (IsTdInterface(dwAttrClass)) { // MDVal check: must have nil tkExtends and must be tdAbstract From 62289aed9602a75a508faebcdce4226acb6e849e Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 10:02:52 -0700 Subject: [PATCH 04/34] Update SRE support for ExtendedLayout --- .../src/System/Reflection/Emit/RuntimeTypeBuilder.cs | 6 ------ src/coreclr/md/compiler/custattr_emit.cpp | 3 +++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs index ec06235cdd50e2..6d5849c8c41c86 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs @@ -519,12 +519,6 @@ private void VerifyTypeAttributes(TypeAttributes attr) } } - // Verify that the layout mask is valid. - if (((attr & TypeAttributes.LayoutMask) != TypeAttributes.AutoLayout) && ((attr & TypeAttributes.LayoutMask) != TypeAttributes.SequentialLayout) && ((attr & TypeAttributes.LayoutMask) != TypeAttributes.ExplicitLayout)) - { - throw new ArgumentException(SR.Argument_BadTypeAttrInvalidLayout); - } - // Check if the user attempted to set any reserved bits. if ((attr & TypeAttributes.ReservedMask) != 0) { diff --git a/src/coreclr/md/compiler/custattr_emit.cpp b/src/coreclr/md/compiler/custattr_emit.cpp index 491a85ef7f5730..131330fa13250d 100644 --- a/src/coreclr/md/compiler/custattr_emit.cpp +++ b/src/coreclr/md/compiler/custattr_emit.cpp @@ -1349,6 +1349,9 @@ HRESULT RegMeta::_HandleKnownCustomAttribute( // S_OK or error. case 0: // tdSequentialLayout: dwFlags = (dwFlags & ~tdLayoutMask) | tdSequentialLayout; break; + case 1: // tdExtendedLayout: + dwFlags = (dwFlags & ~tdLayoutMask) | tdExtendedLayout; + break; case 2: // tdExplicitLayout: dwFlags = (dwFlags & ~tdLayoutMask) | tdExplicitLayout; break; From 084bc478cecabf8d33ebaddab05d4ab12474c2ce Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 10:03:08 -0700 Subject: [PATCH 05/34] Add support in the managed type system for extended layout --- .../Common/TypeSystem/Canon/CanonTypes.Metadata.cs | 2 ++ .../TypeSystem/Common/InstantiatedType.Metadata.cs | 5 +++++ .../tools/Common/TypeSystem/Common/MetadataType.cs | 6 ++++++ .../Common/TypeSystem/Common/TypeWithRepeatedFields.cs | 2 ++ src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs | 10 ++++++++-- .../Common/TypeSystem/Interop/IL/InlineArrayType.cs | 8 ++++++++ .../Common/TypeSystem/Interop/IL/NativeStructType.cs | 8 ++++++++ .../TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs | 5 +++++ .../Compiler/CompilerTypeSystemContext.BoxedTypes.cs | 1 + .../CompilerTypeSystemContext.GeneratedAssembly.cs | 8 ++++++++ .../ILCompiler/Metadata/Transform.Type.cs | 4 ++++ .../TypeRefTypeSystem/TypeRefTypeSystemType.cs | 2 ++ .../System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs | 1 + .../src/System/RuntimeType.Mono.cs | 1 + 14 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs index 320491b70319aa..6db13322372948 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs @@ -29,6 +29,8 @@ protected override MethodImplRecord[] ComputeVirtualMethodImplsForType() public override bool IsExplicitLayout => false; + public override bool IsExtendedLayout => false; + public override ModuleDesc Module => _context.SystemModule; public override bool IsModuleType => false; diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index 1c642b46ebfa7c..db73637bc05f59 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -40,6 +40,11 @@ public override bool IsSequentialLayout } } + public override bool IsExtendedLayout + { + get => _typeDef.IsExtendedLayout; + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs index 18d3ee8f754d59..9529396e7a21d9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs @@ -33,6 +33,12 @@ public abstract partial class MetadataType : DefType /// public abstract bool IsSequentialLayout { get; } + /// + /// If true, the type layout is dictated by extended layout rules provided by the + /// System.Runtime.InteropServices.ExtendedLayoutAttribute. + /// + public abstract bool IsExtendedLayout { get; } + /// /// If true, the type initializer of this type has a relaxed semantic. Corresponds /// to the definition of beforefieldinit semantic defined in the ECMA-335 specification. diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs index 158925c84e647d..a164fd37cea630 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs @@ -102,6 +102,8 @@ public override IEnumerable GetFields() public override bool IsSequentialLayout => MetadataType.IsSequentialLayout; + public override bool IsExtendedLayout => MetadataType.IsExtendedLayout; + public override bool IsBeforeFieldInit => MetadataType.IsBeforeFieldInit; public override ModuleDesc Module => MetadataType.Module; diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index a444ebb2e3b596..6ce11a7715f3cc 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -18,6 +18,7 @@ namespace Internal.TypeSystem.Ecma /// public sealed partial class EcmaType : MetadataType, EcmaModule.IEntityHandleObject { + private const TypeAttributes TypeAttributesExtendedLayout = (TypeAttributes)0x00000018; private EcmaModule _module; private TypeDefinitionHandle _handle; @@ -578,7 +579,7 @@ public override bool IsExplicitLayout { get { - return (_typeDefinition.Attributes & TypeAttributes.ExplicitLayout) != 0; + return (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; } } @@ -586,10 +587,15 @@ public override bool IsSequentialLayout { get { - return (_typeDefinition.Attributes & TypeAttributes.SequentialLayout) != 0; + return (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; } } + public override bool IsExtendedLayout + { + get => (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributesExtendedLayout; + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index b52b12a868bd1c..9e2907631941f1 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -91,6 +91,14 @@ public override bool IsSequentialLayout } } + public override bool IsExtendedLayout + { + get + { + return false; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs index 3e0c35c0ae9210..e5c60a53335ef5 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs @@ -83,6 +83,14 @@ public override bool IsSequentialLayout } } + public override bool IsExtendedLayout + { + get + { + return ManagedStructType.IsExtendedLayout; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index 3708dff16c7d17..a713f4cac5a471 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -82,6 +82,11 @@ public override bool IsSequentialLayout } } + public override bool IsExtendedLayout + { + get => false; + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 85e9f484f44b8d..98e9fbed6fde49 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -264,6 +264,7 @@ private sealed partial class BoxedValueType : MetadataType, INonEmittableType public override PInvokeStringFormat PInvokeStringFormat => PInvokeStringFormat.AutoClass; public override bool IsExplicitLayout => false; public override bool IsSequentialLayout => true; + public override bool IsExtendedLayout => true; public override bool IsBeforeFieldInit => false; public override MetadataType MetadataBaseType => (MetadataType)Context.GetWellKnownType(WellKnownType.Object); public override DefType BaseType => MetadataBaseType; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs index ba9801349625c4..91c2a84dbc47dd 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs @@ -212,6 +212,14 @@ public override bool IsSequentialLayout } } + public override bool IsExtendedLayout + { + get + { + return false; + } + } + public override int GetInlineArrayLength() { Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); diff --git a/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs b/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs index 4ab76e79005da8..84f5ce29c66c16 100644 --- a/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs +++ b/src/coreclr/tools/aot/ILCompiler.MetadataTransform/ILCompiler/Metadata/Transform.Type.cs @@ -15,6 +15,8 @@ namespace ILCompiler.Metadata { internal partial class Transform { + private const TypeAttributes TypeAttributesExtendedLayout = (TypeAttributes)0x00000018; + internal EntityMap _types = new EntityMap(EqualityComparer.Default); @@ -538,6 +540,8 @@ private static TypeAttributes GetTypeAttributes(Cts.MetadataType type) result |= TypeAttributes.ExplicitLayout; if (type.IsSequentialLayout) result |= TypeAttributes.SequentialLayout; + if (type.IsExtendedLayout) + result |= TypeAttributesExtendedLayout; if (type.IsInterface) result |= TypeAttributes.Interface; if (type.IsSealed) diff --git a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs index 2f600a506325c1..6ea18153440cfa 100644 --- a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs +++ b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs @@ -257,5 +257,7 @@ public override int GetInlineArrayLength() Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); throw new InvalidOperationException(); } + + public override bool IsExtendedLayout => IsExplicitLayout || IsSequentialLayout; } } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs index 230c52dd304cf4..139fa79d090b92 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs @@ -1303,6 +1303,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, ReadOnlySpan LayoutKind.Auto => TypeAttributes.AutoLayout, LayoutKind.Explicit => TypeAttributes.ExplicitLayout, LayoutKind.Sequential => TypeAttributes.SequentialLayout, + LayoutKind.Extended => TypeAttributes.ExtendedLayout, _ => throw new Exception(SR.Argument_InvalidKindOfTypeForCA), // we should ignore it since it can be any value anyway... }; diff --git a/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs b/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs index facb38aada7135..bc7adfdf93c698 100644 --- a/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs @@ -2575,6 +2575,7 @@ public override bool IsSubclassOf(Type type) case TypeAttributes.ExplicitLayout: layoutKind = LayoutKind.Explicit; break; case TypeAttributes.AutoLayout: layoutKind = LayoutKind.Auto; break; case TypeAttributes.SequentialLayout: layoutKind = LayoutKind.Sequential; break; + case TypeAttributes.ExtendedLayout: layoutKind = LayoutKind.Extended; break; default: break; } From b066bd68f7c5240b27dfaa8137bc2bd37250286c Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 10:49:45 -0700 Subject: [PATCH 06/34] Implement CStruct layout support in NAOT --- .../TypeSystem/Canon/CanonTypes.Metadata.cs | 5 + .../Common/InstantiatedType.Metadata.cs | 5 + .../Common/MetadataFieldLayoutAlgorithm.cs | 95 +++++++++++++++++++ .../Common/TypeSystem/Common/MetadataType.cs | 13 +++ .../TypeSystem/Common/TypeSystemHelpers.cs | 2 +- .../Common/TypeWithRepeatedFields.cs | 2 + .../tools/Common/TypeSystem/Ecma/EcmaType.cs | 17 ++++ .../TypeSystem/Interop/IL/InlineArrayType.cs | 5 + .../TypeSystem/Interop/IL/MarshalUtils.cs | 6 ++ .../TypeSystem/Interop/IL/NativeStructType.cs | 16 ++-- .../Interop/IL/PInvokeDelegateWrapper.cs | 5 + .../CompilerMetadataFieldLayoutAlgorithm.cs | 6 +- .../CompilerTypeSystemContext.BoxedTypes.cs | 5 + ...ilerTypeSystemContext.GeneratedAssembly.cs | 11 ++- .../ReadyToRunMetadataFieldLayoutAlgorithm.cs | 6 +- .../TypeRefTypeSystemType.cs | 4 +- 16 files changed, 184 insertions(+), 19 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs index 6db13322372948..7b73670f77286e 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs @@ -65,6 +65,11 @@ public override int GetInlineArrayLength() Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); throw new InvalidOperationException(); } + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; + } } internal sealed partial class CanonType diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index db73637bc05f59..5539958b626678 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -45,6 +45,11 @@ public override bool IsExtendedLayout get => _typeDef.IsExtendedLayout; } + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return _typeDef.GetExtendedLayoutInfo(); + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 107d8dbffb87c4..04cfd8c825dc15 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -63,8 +63,15 @@ public override ComputedInstanceFieldLayout ComputeInstanceLayout(DefType defTyp // hierarchy); otherwise, from System.Object // If the current type isn't ValueType or System.Object and has a layout and the parent type isn't // ValueType or System.Object then both need to have layout. + // + // ExtendedLayout is not supported on non value-types. if (!type.IsValueType && type.HasLayout()) { + if (type.IsExtendedLayout) + { + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + } + MetadataType baseType = type.MetadataBaseType; if (!baseType.IsObject && !baseType.HasLayout()) { @@ -492,6 +499,94 @@ protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType return computedLayout; } + private static ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType type, int numInstanceFields) + { + if (type.ContainsGCPointers || !type.IsValueType) + { + // CStruct layout algorithm does not support GC pointers. + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + } + + var offsets = new FieldAndOffset[numInstanceFields]; + + LayoutInt cumulativeInstanceFieldPos = LayoutInt.Zero; + LayoutInt largestAlignmentRequirement = LayoutInt.One; + int fieldOrdinal = 0; + int packingSize = type.Context.Target.MaximumAlignment; + bool layoutAbiStable = true; + bool hasAutoLayoutField = false; + bool hasInt128Field = false; + bool hasVectorTField = false; + + foreach (var field in type.GetFields()) + { + if (field.IsStatic) + continue; + + var fieldSizeAndAlignment = ComputeFieldSizeAndAlignment(field.FieldType.UnderlyingType, hasLayout: true, packingSize, out ComputedFieldData fieldData); + if (!fieldData.LayoutAbiStable) + layoutAbiStable = false; + if (fieldData.HasAutoLayout) + hasAutoLayoutField = true; + if (fieldData.HasInt128Field) + hasInt128Field = true; + if (fieldData.HasVectorTField) + hasVectorTField = true; + + largestAlignmentRequirement = LayoutInt.Max(fieldSizeAndAlignment.Alignment, largestAlignmentRequirement); + + cumulativeInstanceFieldPos = AlignUpInstanceFieldOffset(cumulativeInstanceFieldPos, fieldSizeAndAlignment.Alignment, type.Context.Target); + offsets[fieldOrdinal] = new FieldAndOffset(field, cumulativeInstanceFieldPos); + cumulativeInstanceFieldPos = LayoutInt.AddThrowing(cumulativeInstanceFieldPos, fieldSizeAndAlignment.Size, type); + + fieldOrdinal++; + } + + if (hasAutoLayoutField) + { + // CStruct does not support auto layout fields, Int128 or VectorT fields. + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + } + + SizeAndAlignment instanceByteSizeAndAlignment; + var instanceSizeAndAlignment = ComputeInstanceSize( + type, + cumulativeInstanceFieldPos, + largestAlignmentRequirement, + classLayoutSize: 0, // CStruct does not use the size from metadata. + out instanceByteSizeAndAlignment); + + ComputedInstanceFieldLayout computedLayout = new ComputedInstanceFieldLayout + { + IsAutoLayoutOrHasAutoLayoutFields = false, + IsInt128OrHasInt128Fields = hasInt128Field, + IsVectorTOrHasVectorTFields = hasVectorTField, + FieldAlignment = instanceSizeAndAlignment.Alignment, + FieldSize = instanceSizeAndAlignment.Size, + ByteCountUnaligned = instanceByteSizeAndAlignment.Size, + ByteCountAlignment = instanceByteSizeAndAlignment.Alignment, + Offsets = offsets, + LayoutAbiStable = layoutAbiStable + }; + + return computedLayout; + } + + protected ComputedInstanceFieldLayout ComputeExtendedFieldLayout(MetadataType type, int numInstanceFields) + { + ExtendedLayoutInfo extendedLayoutInfo = type.GetExtendedLayoutInfo(); + + if (extendedLayoutInfo.Kind == ExtendedLayoutKind.CStruct) + { + return ComputeCStructFieldLayout(type, numInstanceFields); + } + else + { + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + return default; + } + } + private static void AdjustForInlineArray( MetadataType type, int instanceFieldCount, diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs index 9529396e7a21d9..7bcf03d798b3b9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs @@ -110,6 +110,8 @@ public bool IsInlineArray } public abstract int GetInlineArrayLength(); + + public abstract ExtendedLayoutInfo GetExtendedLayoutInfo(); } public struct ClassLayoutMetadata @@ -117,4 +119,15 @@ public struct ClassLayoutMetadata public int PackingSize; public int Size; } + + public struct ExtendedLayoutInfo + { + public ExtendedLayoutKind Kind; + } + + public enum ExtendedLayoutKind + { + None = -1, + CStruct = 0 + } } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs index 27a0ce99541da9..e856e59f324bda 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs @@ -67,7 +67,7 @@ public static TypeDesc GetParameterType(this TypeDesc type) public static bool HasLayout(this MetadataType mdType) { - return mdType.IsSequentialLayout || mdType.IsExplicitLayout; + return mdType.IsSequentialLayout || mdType.IsExplicitLayout || mdType.IsExtendedLayout; } public static LayoutInt GetElementSize(this TypeDesc type) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs index a164fd37cea630..490873aef7dee4 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs @@ -123,5 +123,7 @@ public override IEnumerable GetFields() public override TypeSystemContext Context => MetadataType.Context; public override IEnumerable GetMethods() => MethodDesc.EmptyMethods; + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() => MetadataType.GetExtendedLayoutInfo(); } } diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 6ce11a7715f3cc..3df6a78517a1b1 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -575,6 +575,23 @@ public override ClassLayoutMetadata GetClassLayout() }; } + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + Debug.Assert(this.IsExtendedLayout); + + var attr = MetadataReader.GetCustomAttribute(MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), + "System.Runtime.InteropServices", "ExtendedLayoutAttribute")); + + var value = attr.DecodeValue(new CustomAttributeTypeProvider(_module)).FixedArguments[0].Value; + + ExtendedLayoutKind extendedLayoutKind = value is int intValue ? (ExtendedLayoutKind)intValue : ExtendedLayoutKind.None; + + return new ExtendedLayoutInfo + { + Kind = extendedLayoutKind + }; + } + public override bool IsExplicitLayout { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index 9e2907631941f1..a948b221577c3d 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -187,6 +187,11 @@ public override ClassLayoutMetadata GetClassLayout() return result; } + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; + } + public override bool HasCustomAttribute(string attributeNamespace, string attributeName) { return false; diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs index fcc954bc8f9846..79589538404c15 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs @@ -29,6 +29,12 @@ public static bool IsBlittableType(TypeDesc type) var mdType = (MetadataType)type; + if (mdType.IsExtendedLayout && mdType.GetExtendedLayoutInfo() is { Kind: ExtendedLayoutKind.CStruct }) + { + // CStruct layout is always blittable (non-blittable CStruct layout is blocked during type layout). + return true; + } + if (!mdType.IsSequentialLayout && !mdType.IsExplicitLayout) { return false; diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs index e5c60a53335ef5..cfd4fa417ad3e7 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs @@ -75,6 +75,11 @@ public override int GetInlineArrayLength() throw new InvalidOperationException(); } + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return ManagedStructType.GetExtendedLayoutInfo(); + } + public override bool IsSequentialLayout { get @@ -249,16 +254,7 @@ private void CalculateFields() } } - public override ClassLayoutMetadata GetClassLayout() - { - ClassLayoutMetadata layout = ManagedStructType.GetClassLayout(); - - ClassLayoutMetadata result; - result.PackingSize = layout.PackingSize; - result.Size = layout.Size; - - return result; - } + public override ClassLayoutMetadata GetClassLayout() => ManagedStructType.GetClassLayout(); public override bool HasCustomAttribute(string attributeNamespace, string attributeName) { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index a713f4cac5a471..2766dcb772930f 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -275,6 +275,11 @@ public MethodDesc GetPInvokeDelegateWrapperMethod(PInvokeDelegateWrapperMethodKi return _methods[(int)kind]; } + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; + } } public enum PInvokeDelegateWrapperMethodKind : byte diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs index 1bb77e03eeb97a..d63ccfc8f14490 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs @@ -41,7 +41,11 @@ protected override void FinalizeRuntimeSpecificStaticFieldLayout(TypeSystemConte protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - if (type.IsExplicitLayout) + if (type.IsExtendedLayout) + { + return ComputeExtendedFieldLayout(type, numInstanceFields); + } + else if (type.IsExplicitLayout) { return ComputeExplicitFieldLayout(type, numInstanceFields); } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 98e9fbed6fde49..96e548be27f307 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -347,6 +347,11 @@ public override IEnumerable GetFields() { return Array.Empty(); } + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; + } } /// diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs index 91c2a84dbc47dd..db21ab0189c93b 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs @@ -151,11 +151,12 @@ protected override TypeFlags ComputeTypeFlags(TypeFlags mask) public override ClassLayoutMetadata GetClassLayout() { - return new ClassLayoutMetadata - { - PackingSize = 0, - Size = 0, - }; + return default; + } + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() + { + return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; } public override bool HasCustomAttribute(string attributeNamespace, string attributeName) diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs index ceee825d5e4aa3..db71e8c3ab8a26 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs @@ -606,7 +606,11 @@ public FieldAndOffset[] GetOrAddDynamicLayout(DefType instantiatedType, FieldAnd protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - if (type.IsExplicitLayout) + if (type.IsExtendedLayout) + { + return ComputeExtendedFieldLayout(type, numInstanceFields); + } + else if (type.IsExplicitLayout) { // Works around https://github.com/dotnet/runtime/issues/102868 if (!type.IsValueType && diff --git a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs index 6ea18153440cfa..f7f79d1f1605d7 100644 --- a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs +++ b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs @@ -258,6 +258,8 @@ public override int GetInlineArrayLength() throw new InvalidOperationException(); } - public override bool IsExtendedLayout => IsExplicitLayout || IsSequentialLayout; + public override bool IsExtendedLayout => throw new NotImplementedException(); + + public override ExtendedLayoutInfo GetExtendedLayoutInfo() => throw new NotImplementedException(); } } From 858a9a8b39aeb96bb4cddef19cc31ff556642d62 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 11:35:23 -0700 Subject: [PATCH 07/34] Implement CStruct in CoreCLR --- src/coreclr/inc/corhdr.h | 4 ++ src/coreclr/vm/class.h | 9 ++- src/coreclr/vm/classlayoutinfo.cpp | 29 +++++++++ src/coreclr/vm/methodtablebuilder.cpp | 93 ++++++++++++++++++++++----- src/coreclr/vm/methodtablebuilder.h | 3 + src/coreclr/vm/wellknownattributes.h | 4 ++ 6 files changed, 125 insertions(+), 17 deletions(-) diff --git a/src/coreclr/inc/corhdr.h b/src/coreclr/inc/corhdr.h index 4435cfb2123d32..b4f6b403211e77 100644 --- a/src/coreclr/inc/corhdr.h +++ b/src/coreclr/inc/corhdr.h @@ -326,6 +326,10 @@ typedef enum CorTypeAttr tdHasSecurity = 0x00040000, // Class has security associate with it. } CorTypeAttr; +enum class CorExtendedLayoutKind +{ + CStruct = 0, // C-style struct +}; // Macros for accessing the members of the CorTypeAttr. #define IsTdNotPublic(x) (((x) & tdVisibilityMask) == tdNotPublic) diff --git a/src/coreclr/vm/class.h b/src/coreclr/vm/class.h index 3bf8417ef0cb0d..3572fd73b93536 100644 --- a/src/coreclr/vm/class.h +++ b/src/coreclr/vm/class.h @@ -338,7 +338,8 @@ class EEClassLayoutInfo { Auto = 0, // Make sure Auto is the default value as the default-constructed value represents the "auto layout" case Sequential, - Explicit + Explicit, + CStruct }; private: enum { @@ -480,6 +481,12 @@ class EEClassLayoutInfo mdTypeDef cl ); + ULONG InitializeCStructFieldLayout( + FieldDesc* pFields, + MethodTable** pByValueClassCache, + ULONG cFields + ); + private: void SetIsZeroSized(BOOL isZeroSized) { diff --git a/src/coreclr/vm/classlayoutinfo.cpp b/src/coreclr/vm/classlayoutinfo.cpp index 766f364e49c63b..9e5e54f365d5f8 100644 --- a/src/coreclr/vm/classlayoutinfo.cpp +++ b/src/coreclr/vm/classlayoutinfo.cpp @@ -607,6 +607,35 @@ ULONG EEClassLayoutInfo::InitializeExplicitFieldLayout( return SetInstanceBytesSize(managedSize); } +ULONG EEClassLayoutInfo::InitializeCStructFieldLayout( + FieldDesc* pFields, + MethodTable** pByValueClassCache, + ULONG cFields +) +{ + STANDARD_VM_CONTRACT; + + SetLayoutType(LayoutType::CStruct); + + NewArrayHolder pInfoArray = new LayoutRawFieldInfo[cFields + 1]; + UINT32 numInstanceFields; + BYTE fieldsAlignmentRequirement; + InitializeLayoutFieldInfoArray(pFields, cFields, pByValueClassCache, DEFAULT_PACKING_SIZE, pInfoArray, &numInstanceFields, &fieldsAlignmentRequirement); + + BYTE alignmentRequirement = max(max(1, DEFAULT_PACKING_SIZE), fieldsAlignmentRequirement); + + SetAlignmentRequirement(alignmentRequirement); + SetPackingSize(DEFAULT_PACKING_SIZE); + + UINT32 lastFieldEnd = CalculateOffsetsForSequentialLayout(pInfoArray, numInstanceFields, 0, DEFAULT_PACKING_SIZE); + + SetFieldOffsets(pFields, cFields, pInfoArray, numInstanceFields); + + UINT32 managedSize = AlignSize(lastFieldEnd, alignmentRequirement); + + return SetInstanceBytesSize(managedSize); +} + namespace { #ifdef UNIX_AMD64_ABI diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 312699542c95c8..2cd231e07cd647 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -8273,6 +8273,27 @@ VOID MethodTableBuilder::PlaceInstanceFields(MethodTable** pByValueClassCache) case EEClassLayoutInfo::LayoutType::Explicit: HandleExplicitLayout(pByValueClassCache); break; + + case EEClassLayoutInfo::LayoutType::CStruct: + { + if (!pParentMT->IsValueTypeClass() + || hasGCFields + || isAutoLayoutOrHasAutoLayoutField) + { + // CStruct layout types can't have a parent type, GC fields + // or auto layout fields. + BuildMethodTableThrowException(IDS_CLASSLOAD_BADFORMAT); + } + + // Explicit size is not used for CStruct layout. + pLayoutInfo->SetHasExplicitSize(FALSE); + // CStruct layouts are always blittable + pLayoutInfo->SetIsBlittable(TRUE); + + HandleCStructLayout(pByValueClassCache); + break; + } + default: UNREACHABLE(); break; @@ -8736,6 +8757,26 @@ VOID MethodTableBuilder::HandleExplicitLayout(MethodTable** pByValueClassCache) } } +VOID MethodTableBuilder::HandleCStructLayout(MethodTable** pByValueClassCache) +{ + STANDARD_VM_CONTRACT; + + _ASSERTE(HasLayout()); + + EEClassLayoutInfo* pLayoutInfo = GetLayoutInfo(); + + CONSISTENCY_CHECK(pLayoutInfo != nullptr); + + bmtFP->NumInstanceFieldBytes = pLayoutInfo->InitializeSequentialFieldLayout( + GetHalfBakedClass()->GetFieldDescList(), + pByValueClassCache, + bmtEnumFields->dwNumDeclaredFields, + bmtLayout->packingSize, + bmtLayout->classSize, + GetParentMethodTable() + ); +} + //******************************************************************************* // this accesses the field size which is temporarily stored in m_pMTOfEnclosingClass // during class loading. Don't use any other time @@ -12412,7 +12453,7 @@ MethodTableBuilder::GatherGenericsInfo( // *pPackingSize declared packing size // *pfExplicitoffsets offsets explicit in metadata or computed? //======================================================================= -BOOL HasLayoutMetadata(Assembly* pAssembly, IMDInternalImport* pInternalImport, mdTypeDef cl, MethodTable* pParentMT, BYTE* pPackingSize, ULONG* pClassSize, CorNativeLinkType* pNLTType, BOOL* pfExplicitOffsets) +BOOL HasLayoutMetadata(Assembly* pAssembly, IMDInternalImport* pInternalImport, mdTypeDef cl, MethodTable* pParentMT, BYTE* pPackingSize, ULONG* pClassSize, CorNativeLinkType* pNLTType, EEClassLayoutInfo::LayoutType* pLayoutType) { CONTRACTL { @@ -12423,7 +12464,7 @@ BOOL HasLayoutMetadata(Assembly* pAssembly, IMDInternalImport* pInternalImport, PRECONDITION(CheckPointer(pPackingSize)); PRECONDITION(CheckPointer(pClassSize)); PRECONDITION(CheckPointer(pNLTType)); - PRECONDITION(CheckPointer(pfExplicitOffsets)); + PRECONDITION(CheckPointer(pLayoutType)); } CONTRACTL_END; @@ -12436,15 +12477,46 @@ BOOL HasLayoutMetadata(Assembly* pAssembly, IMDInternalImport* pInternalImport, if (IsTdAutoLayout(clFlags)) { + *pLayoutType = EEClassLayoutInfo::LayoutType::Auto; return FALSE; } else if (IsTdSequentialLayout(clFlags)) { - *pfExplicitOffsets = FALSE; + *pLayoutType = EEClassLayoutInfo::LayoutType::Sequential; } else if (IsTdExplicitLayout(clFlags)) { - *pfExplicitOffsets = TRUE; + *pLayoutType = EEClassLayoutInfo::LayoutType::Explicit; + } + else if (IsTdExtendedLayout(clFlags)) + { + const void* pVal; // The custom value. + ULONG cbVal; // Size of the custom value. + HRESULT hr = pInternalImport->GetCustomAttributeByName( + cl, + GetWellKnownAttributeName(WellKnownAttribute::ExtendedLayoutAttribute), + &pVal, &cbVal); + + if (hr == S_FALSE) + { + pAssembly->ThrowTypeLoadException(pInternalImport, cl, IDS_CLASSLOAD_BADFORMAT); + } + + if (cbVal < (sizeof(INT32) + 2)) + { + pAssembly->ThrowTypeLoadException(pInternalImport, cl, IDS_CLASSLOAD_BADFORMAT); + } + + CorExtendedLayoutKind kind = (CorExtendedLayoutKind)GET_UNALIGNED_VAL32((byte*)pVal + 2); + + if (kind == CorExtendedLayoutKind::CStruct) + { + *pLayoutType = EEClassLayoutInfo::LayoutType::CStruct; + } + else + { + pAssembly->ThrowTypeLoadException(pInternalImport, cl, IDS_CLASSLOAD_BADFORMAT); + } } else { @@ -12592,7 +12664,6 @@ ClassLoader::CreateTypeHandleForTypeDefThrowing( GetEnclosingClassThrowing(pInternalImport, pModule, cl, &tdEnclosing); - BOOL fExplicitOffsets = FALSE; MethodTableBuilder::bmtLayoutInfo layoutInfo; // NOTE: HasLayoutMetadata does not load classes BOOL fHasLayout = @@ -12605,18 +12676,8 @@ ClassLoader::CreateTypeHandleForTypeDefThrowing( &layoutInfo.packingSize, &layoutInfo.classSize, &layoutInfo.nlFlags, - &fExplicitOffsets); + &layoutInfo.layoutType); - if (fHasLayout) - { - layoutInfo.layoutType = fExplicitOffsets - ? EEClassLayoutInfo::LayoutType::Explicit - : EEClassLayoutInfo::LayoutType::Sequential; - } - else - { - layoutInfo.layoutType = EEClassLayoutInfo::LayoutType::Auto; - } BOOL fIsEnum = ((g_pEnumClass != NULL) && (pParentMethodTable == g_pEnumClass)); diff --git a/src/coreclr/vm/methodtablebuilder.h b/src/coreclr/vm/methodtablebuilder.h index ebd987467d9c61..93e86eec2463df 100644 --- a/src/coreclr/vm/methodtablebuilder.h +++ b/src/coreclr/vm/methodtablebuilder.h @@ -3001,6 +3001,9 @@ class MethodTableBuilder VOID HandleGCForExplicitLayout(); + VOID HandleCStructLayout( + MethodTable **); + VOID CheckForHFA(MethodTable ** pByValueClassCache); VOID CheckForNativeHFA(); diff --git a/src/coreclr/vm/wellknownattributes.h b/src/coreclr/vm/wellknownattributes.h index 3f7496ac1b68a9..df72f546c95bae 100644 --- a/src/coreclr/vm/wellknownattributes.h +++ b/src/coreclr/vm/wellknownattributes.h @@ -37,6 +37,7 @@ enum class WellKnownAttribute : DWORD InlineArrayAttribute, UnsafeAccessorAttribute, UnsafeAccessorTypeAttribute, + ExtendedLayoutAttribute, CountOfWellKnownAttributes }; @@ -141,6 +142,9 @@ inline const char *GetWellKnownAttributeName(WellKnownAttribute attribute) case WellKnownAttribute::UnsafeAccessorTypeAttribute: ret = "System.Runtime.CompilerServices.UnsafeAccessorTypeAttribute"; break; + case WellKnownAttribute::ExtendedLayoutAttribute: + ret = "System.Runtime.InteropServices.ExtendedLayoutAttribute"; + break; case WellKnownAttribute::CountOfWellKnownAttributes: default: ret = nullptr; From 106f5900a4e1719b1f2ecea4b67367e086a74041 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 13:00:24 -0700 Subject: [PATCH 08/34] Implement CStruct in Mono --- src/mono/mono/metadata/class-accessors.c | 17 ++++ src/mono/mono/metadata/class-init.c | 108 +++++++++++++++++++++++ src/mono/mono/metadata/class-internals.h | 6 ++ 3 files changed, 131 insertions(+) diff --git a/src/mono/mono/metadata/class-accessors.c b/src/mono/mono/metadata/class-accessors.c index c71a5073fafe7f..68f43f216eabb8 100644 --- a/src/mono/mono/metadata/class-accessors.c +++ b/src/mono/mono/metadata/class-accessors.c @@ -31,6 +31,7 @@ typedef enum { PROP_FIELD_DEF_VALUES_8BYTESWIZZLE = 13, /* MonoFieldDefaultValue* with default values swizzled at 8 byte boundaries*/ PROP_METADATA_UPDATE_INFO = 14, /* MonoClassMetadataUpdateInfo* */ PROP_INLINEARRAY_VALUE = 15, /* System.Runtime.CompilerServices.InlineArrayAttribute length value */ + PROP_EXTENDEDLAYOUT_VALUE = 16, /* System.Runtime.CompilerServices.ExtendedLayoutAttribute value */ } InfrequentDataKind; /* Accessors based on class kind*/ @@ -701,6 +702,22 @@ mono_class_set_inlinearray_value (MonoClass *klass, gint32 value) mono_property_bag_add (m_class_get_infrequent_data (klass), prop); } +gint32 +mono_class_get_extendedlayout_value (MonoClass *klass) +{ + Uint32Property *prop = (Uint32Property*)mono_property_bag_get (m_class_get_infrequent_data (klass), PROP_EXTENDEDLAYOUT_VALUE); + return prop ? prop->value : 0; +} + +void +mono_class_set_extendedlayout_value (MonoClass *klass, gint32 kind) +{ + Uint32Property *prop = (Uint32Property*)mono_class_alloc (klass, sizeof (Uint32Property)); + prop->head.tag = PROP_EXTENDEDLAYOUT_VALUE; + prop->value = kind; + mono_property_bag_add (m_class_get_infrequent_data (klass), prop); +} + #ifdef MONO_CLASS_DEF_PRIVATE #define MONO_CLASS_GETTER(funcname, rettype, optref, argtype, fieldname) rettype funcname (argtype *klass) { return optref klass-> fieldname ; } #define MONO_CLASS_OFFSET(funcname, argtype, fieldname) intptr_t funcname (void) { return MONO_STRUCT_OFFSET (argtype, fieldname); } diff --git a/src/mono/mono/metadata/class-init.c b/src/mono/mono/metadata/class-init.c index 6b8daf900f7494..fc53278835a162 100644 --- a/src/mono/mono/metadata/class-init.c +++ b/src/mono/mono/metadata/class-init.c @@ -67,6 +67,7 @@ static int generic_array_methods (MonoClass *klass); static void setup_generic_array_ifaces (MonoClass *klass, MonoClass *iface, MonoMethod **methods, int pos, GHashTable *cache); static FoundAttrUD class_has_isbyreflike_attribute (MonoClass *klass); static FoundAttrUD class_has_inlinearray_attribute (MonoClass *klass); +static FoundAttrUD class_has_extendedlayout_attribute (MonoClass *klass); static GENERATE_TRY_GET_CLASS_WITH_CACHE(icollection, "System.Collections.Generic", "ICollection`1"); @@ -737,6 +738,17 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError klass->is_inlinearray = 1; mono_class_set_inlinearray_value(klass, GPOINTER_TO_INT32 (attr.value)); } + if ((mono_class_get_flags (klass) & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXTENDED_LAYOUT) { + attr = class_has_extendedlayout_attribute (klass); + if (attr.has_attr) { + mono_class_set_extendedlayout_value (klass, GPOINTER_TO_INT32 (attr.value)); + } else { + mono_class_set_type_load_failure (klass, "Extended layout attribute not found for %s", m_class_get_name (klass)); + mono_loader_unlock (); + MONO_PROFILER_RAISE (class_failed, (klass)); + return NULL; + } + } } // compute is_exception_class, used by interp to avoid inlining exception handling code @@ -831,6 +843,25 @@ has_inline_array_attribute_value_func (MonoImage *image, uint32_t method_token, } } +static void +has_extended_layout_attribute_value_func (MonoImage *image, uint32_t method_token, uint32_t *cols, gpointer user_data) +{ + FoundAttrUD *attr = (FoundAttrUD *)user_data; + MonoError error; + MonoMethod *ctor = mono_get_method_checked (image, method_token, NULL, NULL, &error); + if (ctor) { + const char *data = mono_metadata_blob_heap (image, cols [MONO_CUSTOM_ATTR_VALUE]); + uint32_t data_size = mono_metadata_decode_value (data, &data); + MonoDecodeCustomAttr *decoded_attr = mono_reflection_create_custom_attr_data_args_noalloc (image, ctor, (guchar*)data, data_size, &error); + mono_error_assert_ok (&error); + g_assert (decoded_attr->named_args_num == 0 && decoded_attr->typed_args_num == 1); + attr->value = GUINT_TO_POINTER (*(guint32 *)decoded_attr->typed_args [0]->value.primitive); + g_free (decoded_attr); + } else { + g_warning ("Can't find custom attr constructor image: %s mtoken: 0x%08x due to: %s", image->name, method_token, mono_error_get_message (&error)); + } +} + static FoundAttrUD class_has_wellknown_attribute (MonoClass *klass, const char *nspace, const char *name, gboolean in_corlib, gboolean has_value, MonoHasValueCallback callback) { @@ -876,6 +907,11 @@ class_has_inlinearray_attribute (MonoClass *klass) return class_has_wellknown_attribute (klass, "System.Runtime.CompilerServices", "InlineArrayAttribute", TRUE, TRUE, has_inline_array_attribute_value_func); } +static FoundAttrUD +class_has_extendedlayout_attribute (MonoClass *klass) +{ + return class_has_wellknown_attribute (klass, "System.Runtime.InteropServices", "ExtendedLayoutAttribute", TRUE, TRUE, has_extended_layout_attribute_value_func); +} gboolean mono_class_setup_method_has_preserve_base_overrides_attribute (MonoMethod *method) @@ -2056,6 +2092,10 @@ validate_struct_fields_overlaps (guint8 *layout_check, int layout_size, MonoClas return TRUE; } +typedef enum _ExtendedLayoutKind { + EXTENDED_LAYOUT_KIND_CSTRUCT = 0 +} ExtendedLayoutKind; + /* * mono_class_layout_fields: * @class: a class @@ -2425,6 +2465,74 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_ } break; } + case TYPE_ATTRIBUTE_EXTENDED_LAYOUT: { + ExtendedLayoutKind extended_layout_kind = (ExtendedLayoutKind)mono_class_get_extendedlayout_value (klass); + if (extended_layout_kind == EXTENDED_LAYOUT_KIND_CSTRUCT) { + if (!m_class_is_valuetype(klass)) { + if (mono_class_set_type_load_failure (klass, "CStruct type must be value type.")) + return; + } + + mono_class_setup_fields (klass->parent); + if (mono_class_set_type_load_failure_causedby_class (klass, klass->parent, "Cannot initialize parent class")) + return; + + real_size = klass->parent->instance_size; + + for (i = 0; i < top; i++){ + gint32 align; + guint32 size; + MonoType *ftype; + + field = &klass->fields [i]; + + if (mono_field_is_deleted (field)) + continue; + if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) + continue; + + ftype = mono_type_get_underlying_type (field->type); + ftype = mono_type_get_basic_type_from_generic (ftype); + + if ((top == 1) && (instance_size == MONO_ABI_SIZEOF (MonoObject)) && + (strcmp (mono_field_get_name (field), "$PRIVATE$") == 0)) { + /* This field is a hack inserted by MCS to empty structures */ + continue; + } + + size = mono_type_size (field->type, &align); + + if (type_has_references (klass, ftype)) + if (mono_class_set_type_load_failure (klass, "CStruct type must not have reference fields.")) + return; + + min_align = MAX (align, min_align); + field_offsets [i] = real_size; + if (align) { + field_offsets [i] += align - 1; + field_offsets [i] &= ~(align - 1); + } + /*TypeBuilders produce all sort of weird things*/ + g_assert (image_is_dynamic (klass->image) || field_offsets [i] > 0); + + gint64 raw_real_size = (gint64)field_offsets [i] + size; + real_size = (gint32)raw_real_size; + + if (real_size != raw_real_size) + mono_class_set_type_load_failure (klass, "Can't load type %s. The size is too big.", m_class_get_name (klass)); + } + + if (instance_size & (min_align - 1)) { + instance_size += min_align - 1; + instance_size &= ~(min_align - 1); + } + break; + } + else { + mono_class_set_type_load_failure (klass, "Unknown extended layout kind '%d'.", extended_layout_kind); + return; + } + } } if (layout != TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) { diff --git a/src/mono/mono/metadata/class-internals.h b/src/mono/mono/metadata/class-internals.h index 5fa79bcca9c6e7..e7c1426f7a7dee 100644 --- a/src/mono/mono/metadata/class-internals.h +++ b/src/mono/mono/metadata/class-internals.h @@ -1357,6 +1357,12 @@ mono_class_get_inlinearray_value (MonoClass *klass); void mono_class_set_inlinearray_value (MonoClass *klass, gint32 value); +MONO_COMPONENT_API gint32 +mono_class_get_extendedlayout_value (MonoClass *klass); + +void +mono_class_set_extendedlayout_value (MonoClass *klass, gint32 value); + void mono_class_set_weak_bitmap (MonoClass *klass, int nbits, gsize *bits); From f4c7fc79f112192dd57bb00d1fd60eea20f99883 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 15:36:40 -0700 Subject: [PATCH 09/34] Add tests for ExtendedLayout(CStruct) --- .../System.Runtime/ref/System.Runtime.cs | 2 + .../classloader/ExtendedLayout/CStruct.cs | 110 ++++++++++++ .../ExtendedLayout/ExtendedLayout.cs | 36 ++++ .../ExtendedLayout/ExtendedLayout.csproj | 13 ++ .../ExtendedLayout/ExtendedLayoutTypes.il | 160 ++++++++++++++++++ .../ExtendedLayout/ExtendedLayoutTypes.ilproj | 8 + 6 files changed, 329 insertions(+) create mode 100644 src/tests/Loader/classloader/ExtendedLayout/CStruct.cs create mode 100644 src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs create mode 100644 src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.csproj create mode 100644 src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il create mode 100644 src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.ilproj diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index 89a5c81e868e40..277d75cda79e8e 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -12777,6 +12777,7 @@ public enum TypeAttributes VisibilityMask = 7, SequentialLayout = 8, ExplicitLayout = 16, + ExtendedLayout = 24, LayoutMask = 24, ClassSemanticsMask = 32, Interface = 32, @@ -14269,6 +14270,7 @@ public InAttribute() { } public enum LayoutKind { Sequential = 0, + Extended = 1, Explicit = 2, Auto = 3, } diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs new file mode 100644 index 00000000000000..cbba8c10010fb4 --- /dev/null +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -0,0 +1,110 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Xunit; + +namespace ExtendedLayoutTests; + +public static class CStructTests +{ + [Fact] + public static void BlittablePrimitiveFieldsLayout() + { + var c = default(CStructBlittablePrimitiveFields); + + Assert.Equal(12, Unsafe.SizeOf()); + Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); + Assert.Equal(4, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); + Assert.Equal(8, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref c.c)); + } + + [Fact] + public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() + { + Assert.Equal(Unsafe.SizeOf(), Marshal.SizeOf()); + } + + [Fact] + public static void ReferenceFields_ThrowTypeLoadException() + { + Assert.Throws(() => + { + _ = new CStructWithReferenceFields(); + }); + + Assert.Throws(() => + { + _ = new CStructWithMixedFields(); + }); + } + + [Fact] + public static void NestedCStruct() + { + var nested = new CStructCustomCStructField + { + y = new NestedCStructType + { + x = 42 + } + }; + + Assert.Equal(4, Unsafe.SizeOf()); + } + + [Fact] + public static void NestedNonCStructNonAuto() + { + var nested = new CStructCustomSeqStructField + { + y = new NestedSequentialType + { + x = 42 + } + }; + + Assert.Equal(4, Unsafe.SizeOf()); + } + + [Fact] + public static void NestedAutoLayout_ThrowTypeLoadException() + { + Assert.Throws(() => + { + _ = new CStructCustomAutoStructField(); + }); + } + + [Fact] + public static void EmptyStruct() + { + Assert.Equal(1, Unsafe.SizeOf()); + } + + [Fact] + public static void ExplicitOffsets_Ignored() + { + CStructWithOffsets c = default; + + Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); + } + + [Fact] + public static void ExplicitSize_Ignored() + { + Assert.Equal(4, Unsafe.SizeOf()); + } + + [Fact] + public static void Pack_Ignored() + { + Assert.Equal(8, Unsafe.SizeOf()); + + CStructWithPack c = default; + + Assert.Equal(4, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); + } +} diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs new file mode 100644 index 00000000000000..50fbe31c7cce41 --- /dev/null +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs @@ -0,0 +1,36 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Xunit; + +namespace ExtendedLayoutTests; + +public static class ExtendedLayout +{ + [Fact] + public static void ExtendedLayout_NoExtendedLayoutAttribute() + { + Assert.Throws(() => + { + _ = new NoExtendedAttributeOnType(); + }); + } + + [Fact] + public static void ExtendedLayout_InvalidKind() + { + Assert.Throws(() => + { + _ = new ExtendedLayoutInvalidKind(); + }); + } + + [Fact] + public static void ExtendedLayout_InlineArray_Ignored() + { + Assert.Equal(sizeof(int), Unsafe.SizeOf()); + } +} diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.csproj b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.csproj new file mode 100644 index 00000000000000..240e2a01fe99ca --- /dev/null +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.csproj @@ -0,0 +1,13 @@ + + + true + + + + + + + + + + diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il new file mode 100644 index 00000000000000..b2c9e588a50f0a --- /dev/null +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il @@ -0,0 +1,160 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) } + +.assembly ExtendedLayoutTypes { } + +// Invalid type examples +.class flags(0x18) public value beforefieldinit NoExtendedAttributeOnType +{ + .field public int32 a +} + +.class flags(0x18) public value beforefieldinit InlineArrayOnExtendedLayout +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .custom instance void [System.Runtime]System.Runtime.CompilerServices.InlineArrayAttribute::.ctor(int32) = { + int32(0x00000004) + } + + .field public int32 a +} + +.class flags(0x18) public value beforefieldinit ExtendedLayoutInvalidKind +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(-2) // Unknown kind + } + + .field public int32 a +} + +// CStruct types below (can be moved to C# once we have ExtendedLayout support in the C# compiler) + +.class flags(0x18) public value beforefieldinit CStructBlittablePrimitiveFields +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public int32 a + .field public float32 b + .field public uint8 c +} + +.class flags(0x18) public value beforefieldinit CStructNonBlittablePrimitiveFields +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public bool b + .field public char c +} + +.class flags(0x18) public value beforefieldinit CStructWithReferenceFields +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public class [System.Runtime]System.String a +} + +.class flags(0x18) public value beforefieldinit CStructWithMixedFields +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public int32 a + .field public class [System.Runtime]System.String b +} + +.class flags(0x18) public value beforefieldinit NestedCStructType +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + .field public int32 x +} + +.class flags(0x18) public value beforefieldinit CStructCustomCStructField +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public valuetype NestedCStructType y +} + +.class public sequential value beforefieldinit NestedSequentialType +{ + .field public int32 x +} + +.class flags(0x18) public value beforefieldinit CStructCustomSeqStructField +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public valuetype NestedSequentialType y +} + +.class public auto value beforefieldinit NestedAutoLayoutType +{ + .field public int32 x +} + +.class flags(0x18) public value beforefieldinit CStructCustomAutoStructField +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public valuetype NestedSequentialType y +} + +.class flags(0x18) public value beforefieldinit EmptyCStruct +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } +} + +.class flags(0x18) public value beforefieldinit CStructWithOffsets +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field [4] public int32 a +} + +.class flags(0x18) public value beforefieldinit CStructWithSize +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public int32 a + + .size 12 +} + +.class flags(0x18) public value beforefieldinit CStructWithPack +{ + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + int32(0x00000000) // CStruct + } + + .field public int8 a + .field public int32 b + + .pack 1 +} diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.ilproj b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.ilproj new file mode 100644 index 00000000000000..3810a2df0cfd2e --- /dev/null +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.ilproj @@ -0,0 +1,8 @@ + + + Library + + + + + From 19c4a60db9cc66b0ec4f8c0be19b793c6e25dccf Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 16:13:32 -0700 Subject: [PATCH 10/34] Get tests passing on CoreCLR --- src/coreclr/vm/classlayoutinfo.cpp | 2 +- src/coreclr/vm/methodtablebuilder.cpp | 7 ++----- .../Loader/classloader/ExtendedLayout/CStruct.cs | 15 +++------------ .../classloader/ExtendedLayout/ExtendedLayout.cs | 10 ++-------- .../ExtendedLayout/ExtendedLayoutTypes.il | 2 +- 5 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/coreclr/vm/classlayoutinfo.cpp b/src/coreclr/vm/classlayoutinfo.cpp index 9e5e54f365d5f8..b739feeee0d6e7 100644 --- a/src/coreclr/vm/classlayoutinfo.cpp +++ b/src/coreclr/vm/classlayoutinfo.cpp @@ -622,7 +622,7 @@ ULONG EEClassLayoutInfo::InitializeCStructFieldLayout( BYTE fieldsAlignmentRequirement; InitializeLayoutFieldInfoArray(pFields, cFields, pByValueClassCache, DEFAULT_PACKING_SIZE, pInfoArray, &numInstanceFields, &fieldsAlignmentRequirement); - BYTE alignmentRequirement = max(max(1, DEFAULT_PACKING_SIZE), fieldsAlignmentRequirement); + BYTE alignmentRequirement = max(1, fieldsAlignmentRequirement); SetAlignmentRequirement(alignmentRequirement); SetPackingSize(DEFAULT_PACKING_SIZE); diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 2cd231e07cd647..0e4ca748877714 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -8767,13 +8767,10 @@ VOID MethodTableBuilder::HandleCStructLayout(MethodTable** pByValueClassCache) CONSISTENCY_CHECK(pLayoutInfo != nullptr); - bmtFP->NumInstanceFieldBytes = pLayoutInfo->InitializeSequentialFieldLayout( + bmtFP->NumInstanceFieldBytes = pLayoutInfo->InitializeCStructFieldLayout( GetHalfBakedClass()->GetFieldDescList(), pByValueClassCache, - bmtEnumFields->dwNumDeclaredFields, - bmtLayout->packingSize, - bmtLayout->classSize, - GetParentMethodTable() + bmtEnumFields->dwNumDeclaredFields ); } diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs index cbba8c10010fb4..149a3cae744a7e 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -30,15 +30,9 @@ public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() [Fact] public static void ReferenceFields_ThrowTypeLoadException() { - Assert.Throws(() => - { - _ = new CStructWithReferenceFields(); - }); + Assert.Throws(() => typeof(CStructWithReferenceFields)); - Assert.Throws(() => - { - _ = new CStructWithMixedFields(); - }); + Assert.Throws(() => typeof(CStructWithMixedFields)); } [Fact] @@ -72,10 +66,7 @@ public static void NestedNonCStructNonAuto() [Fact] public static void NestedAutoLayout_ThrowTypeLoadException() { - Assert.Throws(() => - { - _ = new CStructCustomAutoStructField(); - }); + Assert.Throws(() => typeof(CStructCustomAutoStructField)); } [Fact] diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs index 50fbe31c7cce41..f3214e20c28c18 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs @@ -13,19 +13,13 @@ public static class ExtendedLayout [Fact] public static void ExtendedLayout_NoExtendedLayoutAttribute() { - Assert.Throws(() => - { - _ = new NoExtendedAttributeOnType(); - }); + Assert.Throws(() => typeof(NoExtendedAttributeOnType)); } [Fact] public static void ExtendedLayout_InvalidKind() { - Assert.Throws(() => - { - _ = new ExtendedLayoutInvalidKind(); - }); + Assert.Throws(() => typeof(ExtendedLayoutInvalidKind)); } [Fact] diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il index b2c9e588a50f0a..f5bd99493d9b72 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il @@ -117,7 +117,7 @@ int32(0x00000000) // CStruct } - .field public valuetype NestedSequentialType y + .field public valuetype NestedAutoLayoutType y } .class flags(0x18) public value beforefieldinit EmptyCStruct From 0db4b1d1620988a9385f9a0ddb1bbd4a911c40ca Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 16:35:43 -0700 Subject: [PATCH 11/34] Fix handling for type without ExtendedLayoutAttribute --- .../tools/Common/TypeSystem/Ecma/EcmaType.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 3df6a78517a1b1..44cdfe8e8aedf0 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -579,12 +579,25 @@ public override ExtendedLayoutInfo GetExtendedLayoutInfo() { Debug.Assert(this.IsExtendedLayout); - var attr = MetadataReader.GetCustomAttribute(MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), - "System.Runtime.InteropServices", "ExtendedLayoutAttribute")); + var attrHandle = MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), + "System.Runtime.InteropServices", "ExtendedLayoutAttribute"); - var value = attr.DecodeValue(new CustomAttributeTypeProvider(_module)).FixedArguments[0].Value; + if (attrHandle.IsNil) + { + ThrowHelper.ThrowTypeLoadException(this); + } + + var attr = MetadataReader.GetCustomAttribute(attrHandle); + + var attrValue = attr.DecodeValue(new CustomAttributeTypeProvider(_module)); + + if (attrValue.FixedArguments is not [{ Value: int kind }]) + { + ThrowHelper.ThrowTypeLoadException(this); + return default; + } - ExtendedLayoutKind extendedLayoutKind = value is int intValue ? (ExtendedLayoutKind)intValue : ExtendedLayoutKind.None; + ExtendedLayoutKind extendedLayoutKind = kind is int intValue ? (ExtendedLayoutKind)intValue : ExtendedLayoutKind.None; return new ExtendedLayoutInfo { From 82119fc30d9c50526ddbb97eba5957a76b43adba Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 28 May 2025 16:38:21 -0700 Subject: [PATCH 12/34] Remove preamble emitted into grammar file --- src/coreclr/ilasm/prebuilt/asmparse.grammar | 1637 +++++++++---------- 1 file changed, 813 insertions(+), 824 deletions(-) diff --git a/src/coreclr/ilasm/prebuilt/asmparse.grammar b/src/coreclr/ilasm/prebuilt/asmparse.grammar index 2fe322733fde76..3e6d56e5549c88 100644 --- a/src/coreclr/ilasm/prebuilt/asmparse.grammar +++ b/src/coreclr/ilasm/prebuilt/asmparse.grammar @@ -1,14 +1,3 @@ -E:\source\runtime\.dotnet - - Determining projects to restore... - Restored E:\source\runtime\src\coreclr\ilasm\GrammarExtractor\GrammarExtractor.csproj (in 595 ms). - 7 of 8 projects are up-to-date for restore. - ILLink.RoslynAnalyzer -> E:\source\runtime\artifacts\bin\ILLink.RoslynAnalyzer\Debug\netstandard2.0\ILLink.RoslynAnalyzer.dll - ILLink.CodeFixProvider -> E:\source\runtime\artifacts\bin\ILLink.CodeFixProvider\Debug\netstandard2.0\ILLink.CodeFixProvider.dll - Mono.Linker -> E:\source\runtime\artifacts\bin\Mono.Linker\ref\Debug\net10.0\illink.dll - Mono.Linker -> E:\source\runtime\artifacts\bin\Mono.Linker\Debug\net10.0\illink.dll - ILLink.Tasks -> E:\source\runtime\artifacts\bin\ILLink.Tasks\Debug\net\ILLink.Tasks.dll - GrammarExtractor -> E:\source\runtime\artifacts\bin\GrammarExtractor\x64\Debug\GrammarExtractor.dll // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. @@ -37,232 +26,232 @@ decls : /* EMPTY */ | decls decl ; /* Module-level declarations */ -decl : classHead '{' classDecls '}' - | nameSpaceHead '{' decls '}' - | methodHead methodDecls '}' +decl : classHead '{' classDecls '}' + | nameSpaceHead '{' decls '}' + | methodHead methodDecls '}' | fieldDecl | dataDecl | vtableDecl | vtfixupDecl | extSourceSpec | fileDecl - | assemblyHead '{' assemblyDecls '}' - | assemblyRefHead '{' assemblyRefDecls '}' - | exptypeHead '{' exptypeDecls '}' - | manifestResHead '{' manifestResDecls '}' + | assemblyHead '{' assemblyDecls '}' + | assemblyRefHead '{' assemblyRefDecls '}' + | exptypeHead '{' exptypeDecls '}' + | manifestResHead '{' manifestResDecls '}' | moduleHead | secDecl | customAttrDecl - | '.subsystem' int32 - | '.corflags' int32 - | '.file' 'alignment' int32 - | '.imagebase' int64 - | '.stackreserve' int64 + | '.subsystem' int32 + | '.corflags' int32 + | '.file' 'alignment' int32 + | '.imagebase' int64 + | '.stackreserve' int64 | languageDecl | typedefDecl | compControl | '.typelist' '{' classNameSeq '}' - | '.mscorlib' + | '.mscorlib' ; classNameSeq : /* EMPTY */ | className classNameSeq ; -compQstring : QSTRING - | compQstring '+' QSTRING +compQstring : QSTRING + | compQstring '+' QSTRING ; -languageDecl : '.language' SQSTRING - | '.language' SQSTRING ',' SQSTRING - | '.language' SQSTRING ',' SQSTRING ',' SQSTRING +languageDecl : '.language' SQSTRING + | '.language' SQSTRING ',' SQSTRING + | '.language' SQSTRING ',' SQSTRING ',' SQSTRING ; /* Basic tokens */ -id : ID +id : ID /* Allow methodImpl attributes to be used as identifiers */ - | 'native' - | 'cil' - | 'optil' - | 'managed' - | 'unmanaged' - | 'forwardref' - | 'preservesig' - | 'runtime' - | 'internalcall' - | 'synchronized' - | 'noinlining' - | 'aggressiveinlining' - | 'nooptimization' - | 'aggressiveoptimization' - | 'async' - | 'extended' - | SQSTRING + | 'native' + | 'cil' + | 'optil' + | 'managed' + | 'unmanaged' + | 'forwardref' + | 'preservesig' + | 'runtime' + | 'internalcall' + | 'synchronized' + | 'noinlining' + | 'aggressiveinlining' + | 'nooptimization' + | 'aggressiveoptimization' + | 'async' + | 'extended' + | SQSTRING ; -dottedName : id - | DOTTEDNAME - | dottedName '.' dottedName +dottedName : id + | DOTTEDNAME + | dottedName '.' dottedName ; -int32 : INT32_V +int32 : INT32_V ; -int64 : INT64_V - | INT32_V +int64 : INT64_V + | INT32_V ; -float64 : FLOAT64 - | 'float32' '(' int32 ')' - | 'float64' '(' int64 ')' +float64 : FLOAT64 + | 'float32' '(' int32 ')' + | 'float64' '(' int64 ')' ; /* Aliasing of types, type specs, methods, fields and custom attributes */ -typedefDecl : '.typedef' type 'as' dottedName - | '.typedef' className 'as' dottedName - | '.typedef' memberRef 'as' dottedName - | '.typedef' customDescr 'as' dottedName - | '.typedef' customDescrWithOwner 'as' dottedName +typedefDecl : '.typedef' type 'as' dottedName + | '.typedef' className 'as' dottedName + | '.typedef' memberRef 'as' dottedName + | '.typedef' customDescr 'as' dottedName + | '.typedef' customDescrWithOwner 'as' dottedName ; /* Compilation control directives are processed within yylex(), displayed here just for grammar completeness */ -compControl : P_DEFINE dottedName - | P_DEFINE dottedName compQstring - | P_UNDEF dottedName - | P_IFDEF dottedName - | P_IFNDEF dottedName - | P_ELSE - | P_ENDIF - | P_INCLUDE QSTRING - | ';' +compControl : P_DEFINE dottedName + | P_DEFINE dottedName compQstring + | P_UNDEF dottedName + | P_IFDEF dottedName + | P_IFNDEF dottedName + | P_ELSE + | P_ENDIF + | P_INCLUDE QSTRING + | ';' ; /* Custom attribute declarations */ -customDescr : '.custom' customType - | '.custom' customType '=' compQstring - | '.custom' customType '=' '{' customBlobDescr '}' - | customHead bytes ')' +customDescr : '.custom' customType + | '.custom' customType '=' compQstring + | '.custom' customType '=' '{' customBlobDescr '}' + | customHead bytes ')' ; -customDescrWithOwner : '.custom' '(' ownerType ')' customType - | '.custom' '(' ownerType ')' customType '=' compQstring - | '.custom' '(' ownerType ')' customType '=' '{' customBlobDescr '}' - | customHeadWithOwner bytes ')' +customDescrWithOwner : '.custom' '(' ownerType ')' customType + | '.custom' '(' ownerType ')' customType '=' compQstring + | '.custom' '(' ownerType ')' customType '=' '{' customBlobDescr '}' + | customHeadWithOwner bytes ')' ; -customHead : '.custom' customType '=' '(' +customHead : '.custom' customType '=' '(' ; -customHeadWithOwner : '.custom' '(' ownerType ')' customType '=' '(' +customHeadWithOwner : '.custom' '(' ownerType ')' customType '=' '(' ; -customType : methodRef +customType : methodRef ; -ownerType : typeSpec - | memberRef +ownerType : typeSpec + | memberRef ; /* Verbal description of custom attribute initialization blob */ -customBlobDescr : customBlobArgs customBlobNVPairs +customBlobDescr : customBlobArgs customBlobNVPairs ; -customBlobArgs : /* EMPTY */ - | customBlobArgs serInit - | customBlobArgs compControl +customBlobArgs : /* EMPTY */ + | customBlobArgs serInit + | customBlobArgs compControl ; -customBlobNVPairs : /* EMPTY */ - | customBlobNVPairs fieldOrProp serializType dottedName '=' serInit - | customBlobNVPairs compControl +customBlobNVPairs : /* EMPTY */ + | customBlobNVPairs fieldOrProp serializType dottedName '=' serInit + | customBlobNVPairs compControl ; -fieldOrProp : 'field' - | 'property' +fieldOrProp : 'field' + | 'property' ; -customAttrDecl : customDescr - | customDescrWithOwner - | TYPEDEF_CA +customAttrDecl : customDescr + | customDescrWithOwner + | TYPEDEF_CA ; -serializType : simpleType - | 'type' - | 'object' - | 'enum' 'class' SQSTRING - | 'enum' className - | serializType '[' ']' +serializType : simpleType + | 'type' + | 'object' + | 'enum' 'class' SQSTRING + | 'enum' className + | serializType '[' ']' ; /* Module declaration */ -moduleHead : '.module' - | '.module' dottedName - | '.module' 'extern' dottedName +moduleHead : '.module' + | '.module' dottedName + | '.module' 'extern' dottedName ; /* VTable Fixup table declaration */ -vtfixupDecl : '.vtfixup' '[' int32 ']' vtfixupAttr 'at' id +vtfixupDecl : '.vtfixup' '[' int32 ']' vtfixupAttr 'at' id ; -vtfixupAttr : /* EMPTY */ - | vtfixupAttr 'int32' - | vtfixupAttr 'int64' - | vtfixupAttr 'fromunmanaged' - | vtfixupAttr 'callmostderived' - | vtfixupAttr 'retainappdomain' +vtfixupAttr : /* EMPTY */ + | vtfixupAttr 'int32' + | vtfixupAttr 'int64' + | vtfixupAttr 'fromunmanaged' + | vtfixupAttr 'callmostderived' + | vtfixupAttr 'retainappdomain' ; -vtableDecl : vtableHead bytes ')' /* deprecated */ +vtableDecl : vtableHead bytes ')' /* deprecated */ ; -vtableHead : '.vtable' '=' '(' /* deprecated */ +vtableHead : '.vtable' '=' '(' /* deprecated */ ; /* Namespace and class declaration */ -nameSpaceHead : '.namespace' dottedName - ; - -_class : '.class' - ; - -classHeadBegin : _class classAttr dottedName typarsClause - ; -classHead : classHeadBegin extendsClause implClause - ; - -classAttr : /* EMPTY */ - | classAttr 'public' - | classAttr 'private' - | classAttr 'value' - | classAttr 'enum' - | classAttr 'interface' - | classAttr 'sealed' - | classAttr 'abstract' - | classAttr 'auto' - | classAttr 'sequential' - | classAttr 'explicit' - | classAttr 'extended' - | classAttr 'ansi' - | classAttr 'unicode' - | classAttr 'autochar' - | classAttr 'import' - | classAttr 'serializable' - | classAttr 'windowsruntime' - | classAttr 'nested' 'public' - | classAttr 'nested' 'private' - | classAttr 'nested' 'family' - | classAttr 'nested' 'assembly' - | classAttr 'nested' 'famandassem' - | classAttr 'nested' 'famorassem' - | classAttr 'beforefieldinit' - | classAttr 'specialname' - | classAttr 'rtspecialname' - | classAttr 'flags' '(' int32 ')' +nameSpaceHead : '.namespace' dottedName + ; + +_class : '.class' + ; + +classHeadBegin : _class classAttr dottedName typarsClause + ; +classHead : classHeadBegin extendsClause implClause + ; + +classAttr : /* EMPTY */ + | classAttr 'public' + | classAttr 'private' + | classAttr 'value' + | classAttr 'enum' + | classAttr 'interface' + | classAttr 'sealed' + | classAttr 'abstract' + | classAttr 'auto' + | classAttr 'sequential' + | classAttr 'explicit' + | classAttr 'extended' + | classAttr 'ansi' + | classAttr 'unicode' + | classAttr 'autochar' + | classAttr 'import' + | classAttr 'serializable' + | classAttr 'windowsruntime' + | classAttr 'nested' 'public' + | classAttr 'nested' 'private' + | classAttr 'nested' 'family' + | classAttr 'nested' 'assembly' + | classAttr 'nested' 'famandassem' + | classAttr 'nested' 'famorassem' + | classAttr 'beforefieldinit' + | classAttr 'specialname' + | classAttr 'rtspecialname' + | classAttr 'flags' '(' int32 ')' ; extendsClause : /* EMPTY */ - | 'extends' typeSpec + | 'extends' typeSpec ; implClause : /* EMPTY */ @@ -273,173 +262,173 @@ classDecls : /* EMPTY */ | classDecls classDecl ; -implList : implList ',' typeSpec - | typeSpec +implList : implList ',' typeSpec + | typeSpec ; /* Generic type parameters declaration */ -typeList : /* EMPTY */ - | typeListNotEmpty +typeList : /* EMPTY */ + | typeListNotEmpty ; -typeListNotEmpty : typeSpec - | typeListNotEmpty ',' typeSpec +typeListNotEmpty : typeSpec + | typeListNotEmpty ',' typeSpec ; -typarsClause : /* EMPTY */ - | '<' typars '>' +typarsClause : /* EMPTY */ + | '<' typars '>' ; -typarAttrib : '+' - | '-' - | 'class' - | 'valuetype' - | 'byreflike' - | '.ctor' - | 'flags' '(' int32 ')' +typarAttrib : '+' + | '-' + | 'class' + | 'valuetype' + | 'byreflike' + | '.ctor' + | 'flags' '(' int32 ')' ; -typarAttribs : /* EMPTY */ - | typarAttrib typarAttribs +typarAttribs : /* EMPTY */ + | typarAttrib typarAttribs ; -typars : typarAttribs tyBound dottedName typarsRest - | typarAttribs dottedName typarsRest +typars : typarAttribs tyBound dottedName typarsRest + | typarAttribs dottedName typarsRest ; -typarsRest : /* EMPTY */ - | ',' typars +typarsRest : /* EMPTY */ + | ',' typars ; -tyBound : '(' typeList ')' +tyBound : '(' typeList ')' ; -genArity : /* EMPTY */ - | genArityNotEmpty +genArity : /* EMPTY */ + | genArityNotEmpty ; -genArityNotEmpty : '<' '[' int32 ']' '>' +genArityNotEmpty : '<' '[' int32 ']' '>' ; /* Class body declarations */ -classDecl : methodHead methodDecls '}' - | classHead '{' classDecls '}' - | eventHead '{' eventDecls '}' - | propHead '{' propDecls '}' +classDecl : methodHead methodDecls '}' + | classHead '{' classDecls '}' + | eventHead '{' eventDecls '}' + | propHead '{' propDecls '}' | fieldDecl | dataDecl | secDecl | extSourceSpec | customAttrDecl - | '.size' int32 - | '.pack' int32 - | exportHead '{' exptypeDecls '}' - | '.override' typeSpec '::' methodName 'with' callConv type typeSpec '::' methodName '(' sigArgs0 ')' - | '.override' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' 'with' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' + | '.size' int32 + | '.pack' int32 + | exportHead '{' exptypeDecls '}' + | '.override' typeSpec '::' methodName 'with' callConv type typeSpec '::' methodName '(' sigArgs0 ')' + | '.override' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' 'with' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' | languageDecl | compControl - | '.param' 'type' '[' int32 ']' - | '.param' 'type' dottedName - | '.param' 'constraint' '[' int32 ']' ',' typeSpec - | '.param' 'constraint' dottedName ',' typeSpec - | '.interfaceimpl' 'type' typeSpec customDescr + | '.param' 'type' '[' int32 ']' + | '.param' 'type' dottedName + | '.param' 'constraint' '[' int32 ']' ',' typeSpec + | '.param' 'constraint' dottedName ',' typeSpec + | '.interfaceimpl' 'type' typeSpec customDescr ; /* Field declaration */ -fieldDecl : '.field' repeatOpt fieldAttr type dottedName atOpt initOpt +fieldDecl : '.field' repeatOpt fieldAttr type dottedName atOpt initOpt ; -fieldAttr : /* EMPTY */ - | fieldAttr 'static' - | fieldAttr 'public' - | fieldAttr 'private' - | fieldAttr 'family' - | fieldAttr 'initonly' +fieldAttr : /* EMPTY */ + | fieldAttr 'static' + | fieldAttr 'public' + | fieldAttr 'private' + | fieldAttr 'family' + | fieldAttr 'initonly' | fieldAttr 'rtspecialname' /**/ - | fieldAttr 'specialname' + | fieldAttr 'specialname' /* commented out because PInvoke for fields is not supported by EE - | fieldAttr 'pinvokeimpl' '(' compQstring 'as' compQstring pinvAttr ')' - | fieldAttr 'pinvokeimpl' '(' compQstring pinvAttr ')' - | fieldAttr 'pinvokeimpl' '(' pinvAttr ')' + | fieldAttr 'pinvokeimpl' '(' compQstring 'as' compQstring pinvAttr ')' + | fieldAttr 'pinvokeimpl' '(' compQstring pinvAttr ')' + | fieldAttr 'pinvokeimpl' '(' pinvAttr ')' */ - | fieldAttr 'marshal' '(' marshalBlob ')' - | fieldAttr 'assembly' - | fieldAttr 'famandassem' - | fieldAttr 'famorassem' - | fieldAttr 'privatescope' - | fieldAttr 'literal' - | fieldAttr 'notserialized' - | fieldAttr 'flags' '(' int32 ')' + | fieldAttr 'marshal' '(' marshalBlob ')' + | fieldAttr 'assembly' + | fieldAttr 'famandassem' + | fieldAttr 'famorassem' + | fieldAttr 'privatescope' + | fieldAttr 'literal' + | fieldAttr 'notserialized' + | fieldAttr 'flags' '(' int32 ')' ; -atOpt : /* EMPTY */ - | 'at' id +atOpt : /* EMPTY */ + | 'at' id ; -initOpt : /* EMPTY */ - | '=' fieldInit +initOpt : /* EMPTY */ + | '=' fieldInit ; -repeatOpt : /* EMPTY */ - | '[' int32 ']' +repeatOpt : /* EMPTY */ + | '[' int32 ']' ; /* Method referencing */ -methodRef : callConv type typeSpec '::' methodName tyArgs0 '(' sigArgs0 ')' - | callConv type typeSpec '::' methodName genArityNotEmpty '(' sigArgs0 ')' - | callConv type methodName tyArgs0 '(' sigArgs0 ')' - | callConv type methodName genArityNotEmpty '(' sigArgs0 ')' - | mdtoken - | TYPEDEF_M - | TYPEDEF_MR +methodRef : callConv type typeSpec '::' methodName tyArgs0 '(' sigArgs0 ')' + | callConv type typeSpec '::' methodName genArityNotEmpty '(' sigArgs0 ')' + | callConv type methodName tyArgs0 '(' sigArgs0 ')' + | callConv type methodName genArityNotEmpty '(' sigArgs0 ')' + | mdtoken + | TYPEDEF_M + | TYPEDEF_MR ; -callConv : 'instance' callConv - | 'explicit' callConv - | callKind - | 'callconv' '(' int32 ')' +callConv : 'instance' callConv + | 'explicit' callConv + | callKind + | 'callconv' '(' int32 ')' ; -callKind : /* EMPTY */ - | 'default' - | 'vararg' - | 'unmanaged' 'cdecl' - | 'unmanaged' 'stdcall' - | 'unmanaged' 'thiscall' - | 'unmanaged' 'fastcall' - | 'unmanaged' +callKind : /* EMPTY */ + | 'default' + | 'vararg' + | 'unmanaged' 'cdecl' + | 'unmanaged' 'stdcall' + | 'unmanaged' 'thiscall' + | 'unmanaged' 'fastcall' + | 'unmanaged' ; -mdtoken : 'mdtoken' '(' int32 ')' +mdtoken : 'mdtoken' '(' int32 ')' ; -memberRef : methodSpec methodRef - | 'field' type typeSpec '::' dottedName - | 'field' type dottedName - | 'field' TYPEDEF_F - | 'field' TYPEDEF_MR - | mdtoken +memberRef : methodSpec methodRef + | 'field' type typeSpec '::' dottedName + | 'field' type dottedName + | 'field' TYPEDEF_F + | 'field' TYPEDEF_MR + | mdtoken ; /* Event declaration */ -eventHead : '.event' eventAttr typeSpec dottedName - | '.event' eventAttr dottedName +eventHead : '.event' eventAttr typeSpec dottedName + | '.event' eventAttr dottedName ; -eventAttr : /* EMPTY */ +eventAttr : /* EMPTY */ | eventAttr 'rtspecialname' /**/ - | eventAttr 'specialname' + | eventAttr 'specialname' ; eventDecls : /* EMPTY */ | eventDecls eventDecl ; -eventDecl : '.addon' methodRef - | '.removeon' methodRef - | '.fire' methodRef - | '.other' methodRef +eventDecl : '.addon' methodRef + | '.removeon' methodRef + | '.fire' methodRef + | '.other' methodRef | extSourceSpec | customAttrDecl | languageDecl @@ -447,12 +436,12 @@ eventDecl : '.addon' methodRef ; /* Property declaration */ -propHead : '.property' propAttr callConv type dottedName '(' sigArgs0 ')' initOpt +propHead : '.property' propAttr callConv type dottedName '(' sigArgs0 ')' initOpt ; -propAttr : /* EMPTY */ +propAttr : /* EMPTY */ | propAttr 'rtspecialname' /**/ - | propAttr 'specialname' + | propAttr 'specialname' ; propDecls : /* EMPTY */ @@ -460,9 +449,9 @@ propDecls : /* EMPTY */ ; -propDecl : '.set' methodRef - | '.get' methodRef - | '.other' methodRef +propDecl : '.set' methodRef + | '.get' methodRef + | '.other' methodRef | customAttrDecl | extSourceSpec | languageDecl @@ -470,138 +459,138 @@ propDecl : '.set' methodRef ; /* Method declaration */ -methodHeadPart1 : '.method' +methodHeadPart1 : '.method' ; -marshalClause : /* EMPTY */ - | 'marshal' '(' marshalBlob ')' +marshalClause : /* EMPTY */ + | 'marshal' '(' marshalBlob ')' ; -marshalBlob : nativeType - | marshalBlobHead hexbytes '}' +marshalBlob : nativeType + | marshalBlobHead hexbytes '}' ; -marshalBlobHead : '{' +marshalBlobHead : '{' ; -methodHead : methodHeadPart1 methAttr callConv paramAttr type marshalClause methodName typarsClause'(' sigArgs0 ')' implAttr '{' +methodHead : methodHeadPart1 methAttr callConv paramAttr type marshalClause methodName typarsClause'(' sigArgs0 ')' implAttr '{' ; -methAttr : /* EMPTY */ - | methAttr 'static' - | methAttr 'public' - | methAttr 'private' - | methAttr 'family' - | methAttr 'final' - | methAttr 'specialname' - | methAttr 'virtual' - | methAttr 'strict' - | methAttr 'abstract' - | methAttr 'assembly' - | methAttr 'famandassem' - | methAttr 'famorassem' - | methAttr 'privatescope' - | methAttr 'hidebysig' - | methAttr 'newslot' +methAttr : /* EMPTY */ + | methAttr 'static' + | methAttr 'public' + | methAttr 'private' + | methAttr 'family' + | methAttr 'final' + | methAttr 'specialname' + | methAttr 'virtual' + | methAttr 'strict' + | methAttr 'abstract' + | methAttr 'assembly' + | methAttr 'famandassem' + | methAttr 'famorassem' + | methAttr 'privatescope' + | methAttr 'hidebysig' + | methAttr 'newslot' | methAttr 'rtspecialname' /**/ - | methAttr 'unmanagedexp' - | methAttr 'reqsecobj' - | methAttr 'flags' '(' int32 ')' - | methAttr 'pinvokeimpl' '(' compQstring 'as' compQstring pinvAttr ')' - | methAttr 'pinvokeimpl' '(' compQstring pinvAttr ')' - | methAttr 'pinvokeimpl' '(' pinvAttr ')' - ; - -pinvAttr : /* EMPTY */ - | pinvAttr 'nomangle' - | pinvAttr 'ansi' - | pinvAttr 'unicode' - | pinvAttr 'autochar' - | pinvAttr 'lasterr' - | pinvAttr 'winapi' - | pinvAttr 'cdecl' - | pinvAttr 'stdcall' - | pinvAttr 'thiscall' - | pinvAttr 'fastcall' - | pinvAttr 'bestfit' ':' 'on' - | pinvAttr 'bestfit' ':' 'off' - | pinvAttr 'charmaperror' ':' 'on' - | pinvAttr 'charmaperror' ':' 'off' - | pinvAttr 'flags' '(' int32 ')' - ; - -methodName : '.ctor' - | '.cctor' - | dottedName - ; - -paramAttr : /* EMPTY */ - | paramAttr '[' 'in' ']' - | paramAttr '[' 'out' ']' - | paramAttr '[' 'opt' ']' - | paramAttr '[' int32 ']' - ; - -implAttr : /* EMPTY */ - | implAttr 'native' - | implAttr 'cil' - | implAttr 'optil' - | implAttr 'managed' - | implAttr 'unmanaged' - | implAttr 'forwardref' - | implAttr 'preservesig' - | implAttr 'runtime' - | implAttr 'internalcall' - | implAttr 'synchronized' - | implAttr 'noinlining' - | implAttr 'aggressiveinlining' - | implAttr 'nooptimization' - | implAttr 'aggressiveoptimization' - | implAttr 'async' - | implAttr 'flags' '(' int32 ')' - ; - -localsHead : '.locals' + | methAttr 'unmanagedexp' + | methAttr 'reqsecobj' + | methAttr 'flags' '(' int32 ')' + | methAttr 'pinvokeimpl' '(' compQstring 'as' compQstring pinvAttr ')' + | methAttr 'pinvokeimpl' '(' compQstring pinvAttr ')' + | methAttr 'pinvokeimpl' '(' pinvAttr ')' + ; + +pinvAttr : /* EMPTY */ + | pinvAttr 'nomangle' + | pinvAttr 'ansi' + | pinvAttr 'unicode' + | pinvAttr 'autochar' + | pinvAttr 'lasterr' + | pinvAttr 'winapi' + | pinvAttr 'cdecl' + | pinvAttr 'stdcall' + | pinvAttr 'thiscall' + | pinvAttr 'fastcall' + | pinvAttr 'bestfit' ':' 'on' + | pinvAttr 'bestfit' ':' 'off' + | pinvAttr 'charmaperror' ':' 'on' + | pinvAttr 'charmaperror' ':' 'off' + | pinvAttr 'flags' '(' int32 ')' + ; + +methodName : '.ctor' + | '.cctor' + | dottedName + ; + +paramAttr : /* EMPTY */ + | paramAttr '[' 'in' ']' + | paramAttr '[' 'out' ']' + | paramAttr '[' 'opt' ']' + | paramAttr '[' int32 ']' + ; + +implAttr : /* EMPTY */ + | implAttr 'native' + | implAttr 'cil' + | implAttr 'optil' + | implAttr 'managed' + | implAttr 'unmanaged' + | implAttr 'forwardref' + | implAttr 'preservesig' + | implAttr 'runtime' + | implAttr 'internalcall' + | implAttr 'synchronized' + | implAttr 'noinlining' + | implAttr 'aggressiveinlining' + | implAttr 'nooptimization' + | implAttr 'aggressiveoptimization' + | implAttr 'async' + | implAttr 'flags' '(' int32 ')' + ; + +localsHead : '.locals' ; methodDecls : /* EMPTY */ | methodDecls methodDecl ; -methodDecl : '.emitbyte' int32 - | sehBlock - | '.maxstack' int32 - | localsHead '(' sigArgs0 ')' - | localsHead 'init' '(' sigArgs0 ')' - | '.entrypoint' - | '.zeroinit' +methodDecl : '.emitbyte' int32 + | sehBlock + | '.maxstack' int32 + | localsHead '(' sigArgs0 ')' + | localsHead 'init' '(' sigArgs0 ')' + | '.entrypoint' + | '.zeroinit' | dataDecl | instr - | id ':' + | id ':' | secDecl | extSourceSpec | languageDecl | customAttrDecl | compControl - | '.export' '[' int32 ']' - | '.export' '[' int32 ']' 'as' id - | '.vtentry' int32 ':' int32 - | '.override' typeSpec '::' methodName + | '.export' '[' int32 ']' + | '.export' '[' int32 ']' 'as' id + | '.vtentry' int32 ':' int32 + | '.override' typeSpec '::' methodName - | '.override' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' + | '.override' 'method' callConv type typeSpec '::' methodName genArity '(' sigArgs0 ')' | scopeBlock - | '.param' 'type' '[' int32 ']' - | '.param' 'type' dottedName - | '.param' 'constraint' '[' int32 ']' ',' typeSpec - | '.param' 'constraint' dottedName ',' typeSpec + | '.param' 'type' '[' int32 ']' + | '.param' 'type' dottedName + | '.param' 'constraint' '[' int32 ']' ',' typeSpec + | '.param' 'constraint' dottedName ',' typeSpec - | '.param' '[' int32 ']' initOpt + | '.param' '[' int32 ']' initOpt ; -scopeBlock : scopeOpen methodDecls '}' +scopeBlock : scopeOpen methodDecls '}' ; -scopeOpen : '{' +scopeOpen : '{' ; /* Structured exception handling directives */ @@ -612,55 +601,55 @@ sehClauses : sehClause sehClauses | sehClause ; -tryBlock : tryHead scopeBlock - | tryHead id 'to' id - | tryHead int32 'to' int32 +tryBlock : tryHead scopeBlock + | tryHead id 'to' id + | tryHead int32 'to' int32 ; -tryHead : '.try' +tryHead : '.try' ; -sehClause : catchClause handlerBlock - | filterClause handlerBlock - | finallyClause handlerBlock - | faultClause handlerBlock +sehClause : catchClause handlerBlock + | filterClause handlerBlock + | finallyClause handlerBlock + | faultClause handlerBlock ; -filterClause : filterHead scopeBlock - | filterHead id - | filterHead int32 +filterClause : filterHead scopeBlock + | filterHead id + | filterHead int32 ; -filterHead : 'filter' +filterHead : 'filter' ; -catchClause : 'catch' typeSpec +catchClause : 'catch' typeSpec ; -finallyClause : 'finally' +finallyClause : 'finally' ; -faultClause : 'fault' +faultClause : 'fault' ; -handlerBlock : scopeBlock - | 'handler' id 'to' id - | 'handler' int32 'to' int32 +handlerBlock : scopeBlock + | 'handler' id 'to' id + | 'handler' int32 'to' int32 ; /* Data declaration */ dataDecl : ddHead ddBody ; -ddHead : '.data' tls id '=' +ddHead : '.data' tls id '=' | '.data' tls ; -tls : /* EMPTY */ - | 'tls' - | 'cil' +tls : /* EMPTY */ + | 'tls' + | 'cil' ; ddBody : '{' ddItemList '}' @@ -671,641 +660,641 @@ ddItemList : ddItem ',' ddItemList | ddItem ; -ddItemCount : /* EMPTY */ - | '[' int32 ']' +ddItemCount : /* EMPTY */ + | '[' int32 ']' ; -ddItem : 'char' '*' '(' compQstring ')' - | '&' '(' id ')' - | bytearrayhead bytes ')' - | 'float32' '(' float64 ')' ddItemCount - | 'float64' '(' float64 ')' ddItemCount - | 'int64' '(' int64 ')' ddItemCount - | 'int32' '(' int32 ')' ddItemCount - | 'int16' '(' int32 ')' ddItemCount - | 'int8' '(' int32 ')' ddItemCount - | 'float32' ddItemCount - | 'float64' ddItemCount - | 'int64' ddItemCount - | 'int32' ddItemCount - | 'int16' ddItemCount - | 'int8' ddItemCount +ddItem : 'char' '*' '(' compQstring ')' + | '&' '(' id ')' + | bytearrayhead bytes ')' + | 'float32' '(' float64 ')' ddItemCount + | 'float64' '(' float64 ')' ddItemCount + | 'int64' '(' int64 ')' ddItemCount + | 'int32' '(' int32 ')' ddItemCount + | 'int16' '(' int32 ')' ddItemCount + | 'int8' '(' int32 ')' ddItemCount + | 'float32' ddItemCount + | 'float64' ddItemCount + | 'int64' ddItemCount + | 'int32' ddItemCount + | 'int16' ddItemCount + | 'int8' ddItemCount ; /* Default values declaration for fields, parameters and verbal form of CA blob description */ -fieldSerInit : 'float32' '(' float64 ')' - | 'float64' '(' float64 ')' - | 'float32' '(' int32 ')' - | 'float64' '(' int64 ')' - | 'int64' '(' int64 ')' - | 'int32' '(' int32 ')' - | 'int16' '(' int32 ')' - | 'int8' '(' int32 ')' - | 'unsigned' 'int64' '(' int64 ')' - | 'unsigned' 'int32' '(' int32 ')' - | 'unsigned' 'int16' '(' int32 ')' - | 'unsigned' 'int8' '(' int32 ')' - | 'uint64' '(' int64 ')' - | 'uint32' '(' int32 ')' - | 'uint16' '(' int32 ')' - | 'uint8' '(' int32 ')' - | 'char' '(' int32 ')' - | 'bool' '(' truefalse ')' - | bytearrayhead bytes ')' +fieldSerInit : 'float32' '(' float64 ')' + | 'float64' '(' float64 ')' + | 'float32' '(' int32 ')' + | 'float64' '(' int64 ')' + | 'int64' '(' int64 ')' + | 'int32' '(' int32 ')' + | 'int16' '(' int32 ')' + | 'int8' '(' int32 ')' + | 'unsigned' 'int64' '(' int64 ')' + | 'unsigned' 'int32' '(' int32 ')' + | 'unsigned' 'int16' '(' int32 ')' + | 'unsigned' 'int8' '(' int32 ')' + | 'uint64' '(' int64 ')' + | 'uint32' '(' int32 ')' + | 'uint16' '(' int32 ')' + | 'uint8' '(' int32 ')' + | 'char' '(' int32 ')' + | 'bool' '(' truefalse ')' + | bytearrayhead bytes ')' ; -bytearrayhead : 'bytearray' '(' +bytearrayhead : 'bytearray' '(' ; -bytes : /* EMPTY */ - | hexbytes +bytes : /* EMPTY */ + | hexbytes ; -hexbytes : HEXBYTE - | hexbytes HEXBYTE +hexbytes : HEXBYTE + | hexbytes HEXBYTE ; /* Field/parameter initialization */ -fieldInit : fieldSerInit - | compQstring - | 'nullref' +fieldInit : fieldSerInit + | compQstring + | 'nullref' ; /* Values for verbal form of CA blob description */ -serInit : fieldSerInit - | 'string' '(' 'nullref' ')' - | 'string' '(' SQSTRING ')' - | 'type' '(' 'class' SQSTRING ')' - | 'type' '(' className ')' - | 'type' '(' 'nullref' ')' - | 'object' '(' serInit ')' - | 'float32' '[' int32 ']' '(' f32seq ')' - | 'float64' '[' int32 ']' '(' f64seq ')' - | 'int64' '[' int32 ']' '(' i64seq ')' - | 'int32' '[' int32 ']' '(' i32seq ')' - | 'int16' '[' int32 ']' '(' i16seq ')' - | 'int8' '[' int32 ']' '(' i8seq ')' - | 'uint64' '[' int32 ']' '(' i64seq ')' - | 'uint32' '[' int32 ']' '(' i32seq ')' - | 'uint16' '[' int32 ']' '(' i16seq ')' - | 'uint8' '[' int32 ']' '(' i8seq ')' - | 'unsigned' 'int64' '[' int32 ']' '(' i64seq ')' - | 'unsigned' 'int32' '[' int32 ']' '(' i32seq ')' - | 'unsigned' 'int16' '[' int32 ']' '(' i16seq ')' - | 'unsigned' 'int8' '[' int32 ']' '(' i8seq ')' - | 'char' '[' int32 ']' '(' i16seq ')' - | 'bool' '[' int32 ']' '(' boolSeq ')' - | 'string' '[' int32 ']' '(' sqstringSeq ')' - | 'type' '[' int32 ']' '(' classSeq ')' - | 'object' '[' int32 ']' '(' objSeq ')' +serInit : fieldSerInit + | 'string' '(' 'nullref' ')' + | 'string' '(' SQSTRING ')' + | 'type' '(' 'class' SQSTRING ')' + | 'type' '(' className ')' + | 'type' '(' 'nullref' ')' + | 'object' '(' serInit ')' + | 'float32' '[' int32 ']' '(' f32seq ')' + | 'float64' '[' int32 ']' '(' f64seq ')' + | 'int64' '[' int32 ']' '(' i64seq ')' + | 'int32' '[' int32 ']' '(' i32seq ')' + | 'int16' '[' int32 ']' '(' i16seq ')' + | 'int8' '[' int32 ']' '(' i8seq ')' + | 'uint64' '[' int32 ']' '(' i64seq ')' + | 'uint32' '[' int32 ']' '(' i32seq ')' + | 'uint16' '[' int32 ']' '(' i16seq ')' + | 'uint8' '[' int32 ']' '(' i8seq ')' + | 'unsigned' 'int64' '[' int32 ']' '(' i64seq ')' + | 'unsigned' 'int32' '[' int32 ']' '(' i32seq ')' + | 'unsigned' 'int16' '[' int32 ']' '(' i16seq ')' + | 'unsigned' 'int8' '[' int32 ']' '(' i8seq ')' + | 'char' '[' int32 ']' '(' i16seq ')' + | 'bool' '[' int32 ']' '(' boolSeq ')' + | 'string' '[' int32 ']' '(' sqstringSeq ')' + | 'type' '[' int32 ']' '(' classSeq ')' + | 'object' '[' int32 ']' '(' objSeq ')' ; -f32seq : /* EMPTY */ - | f32seq float64 - | f32seq int32 +f32seq : /* EMPTY */ + | f32seq float64 + | f32seq int32 ; -f64seq : /* EMPTY */ - | f64seq float64 - | f64seq int64 +f64seq : /* EMPTY */ + | f64seq float64 + | f64seq int64 ; -i64seq : /* EMPTY */ - | i64seq int64 +i64seq : /* EMPTY */ + | i64seq int64 ; -i32seq : /* EMPTY */ - | i32seq int32 +i32seq : /* EMPTY */ + | i32seq int32 ; -i16seq : /* EMPTY */ - | i16seq int32 +i16seq : /* EMPTY */ + | i16seq int32 ; -i8seq : /* EMPTY */ - | i8seq int32 +i8seq : /* EMPTY */ + | i8seq int32 ; -boolSeq : /* EMPTY */ - | boolSeq truefalse +boolSeq : /* EMPTY */ + | boolSeq truefalse ; -sqstringSeq : /* EMPTY */ - | sqstringSeq 'nullref' - | sqstringSeq SQSTRING +sqstringSeq : /* EMPTY */ + | sqstringSeq 'nullref' + | sqstringSeq SQSTRING ; -classSeq : /* EMPTY */ - | classSeq 'nullref' - | classSeq 'class' SQSTRING - | classSeq className +classSeq : /* EMPTY */ + | classSeq 'nullref' + | classSeq 'class' SQSTRING + | classSeq className ; -objSeq : /* EMPTY */ - | objSeq serInit +objSeq : /* EMPTY */ + | objSeq serInit ; /* IL instructions and associated definitions */ -methodSpec : 'method' +methodSpec : 'method' ; -instr_none : INSTR_NONE +instr_none : INSTR_NONE ; -instr_var : INSTR_VAR +instr_var : INSTR_VAR ; -instr_i : INSTR_I +instr_i : INSTR_I ; -instr_i8 : INSTR_I8 +instr_i8 : INSTR_I8 ; -instr_r : INSTR_R +instr_r : INSTR_R ; -instr_brtarget : INSTR_BRTARGET +instr_brtarget : INSTR_BRTARGET ; -instr_method : INSTR_METHOD +instr_method : INSTR_METHOD ; -instr_field : INSTR_FIELD +instr_field : INSTR_FIELD ; -instr_type : INSTR_TYPE +instr_type : INSTR_TYPE ; -instr_string : INSTR_STRING +instr_string : INSTR_STRING ; -instr_sig : INSTR_SIG +instr_sig : INSTR_SIG ; -instr_tok : INSTR_TOK +instr_tok : INSTR_TOK ; -instr_switch : INSTR_SWITCH +instr_switch : INSTR_SWITCH ; -instr_r_head : instr_r '(' +instr_r_head : instr_r '(' ; -instr : instr_none - | instr_var int32 - | instr_var id - | instr_i int32 - | instr_i8 int64 - | instr_r float64 - | instr_r int64 - | instr_r_head bytes ')' - | instr_brtarget int32 - | instr_brtarget id - | instr_method methodRef - | instr_field type typeSpec '::' dottedName - | instr_field type dottedName - | instr_field mdtoken - | instr_field TYPEDEF_F - | instr_field TYPEDEF_MR - | instr_type typeSpec - | instr_string compQstring - | instr_string 'ansi' '(' compQstring ')' - | instr_string bytearrayhead bytes ')' - | instr_sig callConv type '(' sigArgs0 ')' - | instr_tok ownerType /* ownerType ::= memberRef | typeSpec */ - | instr_switch '(' labels ')' +instr : instr_none + | instr_var int32 + | instr_var id + | instr_i int32 + | instr_i8 int64 + | instr_r float64 + | instr_r int64 + | instr_r_head bytes ')' + | instr_brtarget int32 + | instr_brtarget id + | instr_method methodRef + | instr_field type typeSpec '::' dottedName + | instr_field type dottedName + | instr_field mdtoken + | instr_field TYPEDEF_F + | instr_field TYPEDEF_MR + | instr_type typeSpec + | instr_string compQstring + | instr_string 'ansi' '(' compQstring ')' + | instr_string bytearrayhead bytes ')' + | instr_sig callConv type '(' sigArgs0 ')' + | instr_tok ownerType /* ownerType ::= memberRef | typeSpec */ + | instr_switch '(' labels ')' ; -labels : /* empty */ - | id ',' labels - | int32 ',' labels - | id - | int32 +labels : /* empty */ + | id ',' labels + | int32 ',' labels + | id + | int32 ; /* Signatures */ -tyArgs0 : /* EMPTY */ - | '<' tyArgs1 '>' +tyArgs0 : /* EMPTY */ + | '<' tyArgs1 '>' ; -tyArgs1 : /* EMPTY */ - | tyArgs2 +tyArgs1 : /* EMPTY */ + | tyArgs2 ; -tyArgs2 : type - | tyArgs2 ',' type +tyArgs2 : type + | tyArgs2 ',' type ; -sigArgs0 : /* EMPTY */ - | sigArgs1 +sigArgs0 : /* EMPTY */ + | sigArgs1 ; -sigArgs1 : sigArg - | sigArgs1 ',' sigArg +sigArgs1 : sigArg + | sigArgs1 ',' sigArg ; -sigArg : '...' - | paramAttr type marshalClause - | paramAttr type marshalClause id +sigArg : '...' + | paramAttr type marshalClause + | paramAttr type marshalClause id ; /* Class referencing */ -className : '[' dottedName ']' slashedName - | '[' mdtoken ']' slashedName - | '[' '*' ']' slashedName - | '[' '.module' dottedName ']' slashedName - | slashedName - | mdtoken - | TYPEDEF_T - | '.this' - | '.base' - | '.nester' +className : '[' dottedName ']' slashedName + | '[' mdtoken ']' slashedName + | '[' '*' ']' slashedName + | '[' '.module' dottedName ']' slashedName + | slashedName + | mdtoken + | TYPEDEF_T + | '.this' + | '.base' + | '.nester' ; -slashedName : dottedName - | slashedName '/' dottedName +slashedName : dottedName + | slashedName '/' dottedName ; -typeSpec : className - | '[' dottedName ']' - | '[' '.module' dottedName ']' - | type +typeSpec : className + | '[' dottedName ']' + | '[' '.module' dottedName ']' + | type ; /* Native types for marshaling signatures */ -nativeType : /* EMPTY */ - | 'custom' '(' compQstring ',' compQstring ',' compQstring ',' compQstring ')' - | 'custom' '(' compQstring ',' compQstring ')' - | 'fixed' 'sysstring' '[' int32 ']' - | 'fixed' 'array' '[' int32 ']' nativeType - | 'variant' - | 'currency' - | 'syschar' - | 'void' - | 'bool' - | 'int8' - | 'int16' - | 'int32' - | 'int64' - | 'float32' - | 'float64' - | 'error' - | 'unsigned' 'int8' - | 'unsigned' 'int16' - | 'unsigned' 'int32' - | 'unsigned' 'int64' - | 'uint8' - | 'uint16' - | 'uint32' - | 'uint64' - | nativeType '*' - | nativeType '[' ']' - | nativeType '[' int32 ']' - | nativeType '[' int32 '+' int32 ']' - | nativeType '[' '+' int32 ']' - | 'decimal' - | 'date' - | 'bstr' - | 'lpstr' - | 'lpwstr' - | 'lptstr' - | 'objectref' - | 'iunknown' iidParamIndex - | 'idispatch' iidParamIndex - | 'struct' - | 'interface' iidParamIndex - | 'safearray' variantType - | 'safearray' variantType ',' compQstring - - | 'int' - | 'unsigned' 'int' - | 'uint' - | 'nested' 'struct' - | 'byvalstr' - | 'ansi' 'bstr' - | 'tbstr' - | 'variant' 'bool' - | 'method' - | 'as' 'any' - | 'lpstruct' - | TYPEDEF_TS - ; - -iidParamIndex : /* EMPTY */ - | '(' 'iidparam' '=' int32 ')' - ; - -variantType : /* EMPTY */ - | 'null' - | 'variant' - | 'currency' - | 'void' - | 'bool' - | 'int8' - | 'int16' - | 'int32' - | 'int64' - | 'float32' - | 'float64' - | 'unsigned' 'int8' - | 'unsigned' 'int16' - | 'unsigned' 'int32' - | 'unsigned' 'int64' - | 'uint8' - | 'uint16' - | 'uint32' - | 'uint64' - | '*' - | variantType '[' ']' - | variantType 'vector' - | variantType '&' - | 'decimal' - | 'date' - | 'bstr' - | 'lpstr' - | 'lpwstr' - | 'iunknown' - | 'idispatch' - | 'safearray' - | 'int' - | 'unsigned' 'int' - | 'uint' - | 'error' - | 'hresult' - | 'carray' - | 'userdefined' - | 'record' - | 'filetime' - | 'blob' - | 'stream' - | 'storage' - | 'streamed_object' - | 'stored_object' - | 'blob_object' - | 'cf' - | 'clsid' +nativeType : /* EMPTY */ + | 'custom' '(' compQstring ',' compQstring ',' compQstring ',' compQstring ')' + | 'custom' '(' compQstring ',' compQstring ')' + | 'fixed' 'sysstring' '[' int32 ']' + | 'fixed' 'array' '[' int32 ']' nativeType + | 'variant' + | 'currency' + | 'syschar' + | 'void' + | 'bool' + | 'int8' + | 'int16' + | 'int32' + | 'int64' + | 'float32' + | 'float64' + | 'error' + | 'unsigned' 'int8' + | 'unsigned' 'int16' + | 'unsigned' 'int32' + | 'unsigned' 'int64' + | 'uint8' + | 'uint16' + | 'uint32' + | 'uint64' + | nativeType '*' + | nativeType '[' ']' + | nativeType '[' int32 ']' + | nativeType '[' int32 '+' int32 ']' + | nativeType '[' '+' int32 ']' + | 'decimal' + | 'date' + | 'bstr' + | 'lpstr' + | 'lpwstr' + | 'lptstr' + | 'objectref' + | 'iunknown' iidParamIndex + | 'idispatch' iidParamIndex + | 'struct' + | 'interface' iidParamIndex + | 'safearray' variantType + | 'safearray' variantType ',' compQstring + + | 'int' + | 'unsigned' 'int' + | 'uint' + | 'nested' 'struct' + | 'byvalstr' + | 'ansi' 'bstr' + | 'tbstr' + | 'variant' 'bool' + | 'method' + | 'as' 'any' + | 'lpstruct' + | TYPEDEF_TS + ; + +iidParamIndex : /* EMPTY */ + | '(' 'iidparam' '=' int32 ')' + ; + +variantType : /* EMPTY */ + | 'null' + | 'variant' + | 'currency' + | 'void' + | 'bool' + | 'int8' + | 'int16' + | 'int32' + | 'int64' + | 'float32' + | 'float64' + | 'unsigned' 'int8' + | 'unsigned' 'int16' + | 'unsigned' 'int32' + | 'unsigned' 'int64' + | 'uint8' + | 'uint16' + | 'uint32' + | 'uint64' + | '*' + | variantType '[' ']' + | variantType 'vector' + | variantType '&' + | 'decimal' + | 'date' + | 'bstr' + | 'lpstr' + | 'lpwstr' + | 'iunknown' + | 'idispatch' + | 'safearray' + | 'int' + | 'unsigned' 'int' + | 'uint' + | 'error' + | 'hresult' + | 'carray' + | 'userdefined' + | 'record' + | 'filetime' + | 'blob' + | 'stream' + | 'storage' + | 'streamed_object' + | 'stored_object' + | 'blob_object' + | 'cf' + | 'clsid' ; /* Managed types for signatures */ -type : 'class' className - | 'object' - | 'value' 'class' className - | 'valuetype' className - | type '[' ']' - | type '[' bounds1 ']' - | type '&' - | type '*' - | type 'pinned' - | type 'modreq' '(' typeSpec ')' - | type 'modopt' '(' typeSpec ')' - | methodSpec callConv type '*' '(' sigArgs0 ')' - | type '<' tyArgs1 '>' - | '!' '!' int32 - | '!' int32 - | '!' '!' dottedName - | '!' dottedName - | 'typedref' - | 'void' - | 'native' 'int' - | 'native' 'unsigned' 'int' - | 'native' 'uint' - | simpleType - | '...' type - ; - -simpleType : 'char' - | 'string' - | 'bool' - | 'int8' - | 'int16' - | 'int32' - | 'int64' - | 'float32' - | 'float64' - | 'unsigned' 'int8' - | 'unsigned' 'int16' - | 'unsigned' 'int32' - | 'unsigned' 'int64' - | 'uint8' - | 'uint16' - | 'uint32' - | 'uint64' - | TYPEDEF_TS - ; - -bounds1 : bound - | bounds1 ',' bound - ; - -bound : /* EMPTY */ - | '...' - | int32 - | int32 '...' int32 - | int32 '...' +type : 'class' className + | 'object' + | 'value' 'class' className + | 'valuetype' className + | type '[' ']' + | type '[' bounds1 ']' + | type '&' + | type '*' + | type 'pinned' + | type 'modreq' '(' typeSpec ')' + | type 'modopt' '(' typeSpec ')' + | methodSpec callConv type '*' '(' sigArgs0 ')' + | type '<' tyArgs1 '>' + | '!' '!' int32 + | '!' int32 + | '!' '!' dottedName + | '!' dottedName + | 'typedref' + | 'void' + | 'native' 'int' + | 'native' 'unsigned' 'int' + | 'native' 'uint' + | simpleType + | '...' type + ; + +simpleType : 'char' + | 'string' + | 'bool' + | 'int8' + | 'int16' + | 'int32' + | 'int64' + | 'float32' + | 'float64' + | 'unsigned' 'int8' + | 'unsigned' 'int16' + | 'unsigned' 'int32' + | 'unsigned' 'int64' + | 'uint8' + | 'uint16' + | 'uint32' + | 'uint64' + | TYPEDEF_TS + ; + +bounds1 : bound + | bounds1 ',' bound + ; + +bound : /* EMPTY */ + | '...' + | int32 + | int32 '...' int32 + | int32 '...' ; /* Security declarations */ -secDecl : '.permission' secAction typeSpec '(' nameValPairs ')' - | '.permission' secAction typeSpec '=' '{' customBlobDescr '}' - | '.permission' secAction typeSpec - | psetHead bytes ')' - | '.permissionset' secAction compQstring - | '.permissionset' secAction '=' '{' secAttrSetBlob '}' +secDecl : '.permission' secAction typeSpec '(' nameValPairs ')' + | '.permission' secAction typeSpec '=' '{' customBlobDescr '}' + | '.permission' secAction typeSpec + | psetHead bytes ')' + | '.permissionset' secAction compQstring + | '.permissionset' secAction '=' '{' secAttrSetBlob '}' ; -secAttrSetBlob : /* EMPTY */ - | secAttrBlob - | secAttrBlob ',' secAttrSetBlob +secAttrSetBlob : /* EMPTY */ + | secAttrBlob + | secAttrBlob ',' secAttrSetBlob ; -secAttrBlob : typeSpec '=' '{' customBlobNVPairs '}' - | 'class' SQSTRING '=' '{' customBlobNVPairs '}' +secAttrBlob : typeSpec '=' '{' customBlobNVPairs '}' + | 'class' SQSTRING '=' '{' customBlobNVPairs '}' ; -psetHead : '.permissionset' secAction '=' '(' - | '.permissionset' secAction 'bytearray' '(' +psetHead : '.permissionset' secAction '=' '(' + | '.permissionset' secAction 'bytearray' '(' ; -nameValPairs : nameValPair - | nameValPair ',' nameValPairs +nameValPairs : nameValPair + | nameValPair ',' nameValPairs ; -nameValPair : compQstring '=' caValue +nameValPair : compQstring '=' caValue ; -truefalse : 'true' - | 'false' +truefalse : 'true' + | 'false' ; -caValue : truefalse - | int32 - | 'int32' '(' int32 ')' - | compQstring - | className '(' 'int8' ':' int32 ')' - | className '(' 'int16' ':' int32 ')' - | className '(' 'int32' ':' int32 ')' - | className '(' int32 ')' +caValue : truefalse + | int32 + | 'int32' '(' int32 ')' + | compQstring + | className '(' 'int8' ':' int32 ')' + | className '(' 'int16' ':' int32 ')' + | className '(' 'int32' ':' int32 ')' + | className '(' int32 ')' ; -secAction : 'request' - | 'demand' - | 'assert' - | 'deny' - | 'permitonly' - | 'linkcheck' - | 'inheritcheck' - | 'reqmin' - | 'reqopt' - | 'reqrefuse' - | 'prejitgrant' - | 'prejitdeny' - | 'noncasdemand' - | 'noncaslinkdemand' - | 'noncasinheritance' +secAction : 'request' + | 'demand' + | 'assert' + | 'deny' + | 'permitonly' + | 'linkcheck' + | 'inheritcheck' + | 'reqmin' + | 'reqopt' + | 'reqrefuse' + | 'prejitgrant' + | 'prejitdeny' + | 'noncasdemand' + | 'noncaslinkdemand' + | 'noncasinheritance' ; /* External source declarations */ -esHead : '.line' - | P_LINE +esHead : '.line' + | P_LINE ; -extSourceSpec : esHead int32 SQSTRING - | esHead int32 - | esHead int32 ':' int32 SQSTRING - | esHead int32 ':' int32 - | esHead int32 ':' int32 ',' int32 SQSTRING - | esHead int32 ':' int32 ',' int32 - | esHead int32 ',' int32 ':' int32 SQSTRING - | esHead int32 ',' int32 ':' int32 - | esHead int32 ',' int32 ':' int32 ',' int32 SQSTRING - | esHead int32 ',' int32 ':' int32 ',' int32 - | esHead int32 QSTRING +extSourceSpec : esHead int32 SQSTRING + | esHead int32 + | esHead int32 ':' int32 SQSTRING + | esHead int32 ':' int32 + | esHead int32 ':' int32 ',' int32 SQSTRING + | esHead int32 ':' int32 ',' int32 + | esHead int32 ',' int32 ':' int32 SQSTRING + | esHead int32 ',' int32 ':' int32 + | esHead int32 ',' int32 ':' int32 ',' int32 SQSTRING + | esHead int32 ',' int32 ':' int32 ',' int32 + | esHead int32 QSTRING ; /* Manifest declarations */ -fileDecl : '.file' fileAttr dottedName fileEntry hashHead bytes ')' fileEntry - | '.file' fileAttr dottedName fileEntry +fileDecl : '.file' fileAttr dottedName fileEntry hashHead bytes ')' fileEntry + | '.file' fileAttr dottedName fileEntry ; -fileAttr : /* EMPTY */ - | fileAttr 'nometadata' +fileAttr : /* EMPTY */ + | fileAttr 'nometadata' ; -fileEntry : /* EMPTY */ - | '.entrypoint' +fileEntry : /* EMPTY */ + | '.entrypoint' ; -hashHead : '.hash' '=' '(' +hashHead : '.hash' '=' '(' ; -assemblyHead : '.assembly' asmAttr dottedName +assemblyHead : '.assembly' asmAttr dottedName ; -asmAttr : /* EMPTY */ - | asmAttr 'retargetable' - | asmAttr 'windowsruntime' - | asmAttr 'noplatform' - | asmAttr 'legacy' 'library' - | asmAttr 'cil' - | asmAttr 'x86' - | asmAttr 'amd64' - | asmAttr 'arm' - | asmAttr 'arm64' +asmAttr : /* EMPTY */ + | asmAttr 'retargetable' + | asmAttr 'windowsruntime' + | asmAttr 'noplatform' + | asmAttr 'legacy' 'library' + | asmAttr 'cil' + | asmAttr 'x86' + | asmAttr 'amd64' + | asmAttr 'arm' + | asmAttr 'arm64' ; assemblyDecls : /* EMPTY */ | assemblyDecls assemblyDecl ; -assemblyDecl : '.hash' 'algorithm' int32 +assemblyDecl : '.hash' 'algorithm' int32 | secDecl | asmOrRefDecl ; -intOrWildcard : int32 - | '*' +intOrWildcard : int32 + | '*' ; -asmOrRefDecl : publicKeyHead bytes ')' - | '.ver' intOrWildcard ':' intOrWildcard ':' intOrWildcard ':' intOrWildcard - | '.locale' compQstring - | localeHead bytes ')' +asmOrRefDecl : publicKeyHead bytes ')' + | '.ver' intOrWildcard ':' intOrWildcard ':' intOrWildcard ':' intOrWildcard + | '.locale' compQstring + | localeHead bytes ')' | customAttrDecl | compControl ; -publicKeyHead : '.publickey' '=' '(' +publicKeyHead : '.publickey' '=' '(' ; -publicKeyTokenHead : '.publickeytoken' '=' '(' +publicKeyTokenHead : '.publickeytoken' '=' '(' ; -localeHead : '.locale' '=' '(' +localeHead : '.locale' '=' '(' ; -assemblyRefHead : '.assembly' 'extern' asmAttr dottedName - | '.assembly' 'extern' asmAttr dottedName 'as' dottedName +assemblyRefHead : '.assembly' 'extern' asmAttr dottedName + | '.assembly' 'extern' asmAttr dottedName 'as' dottedName ; assemblyRefDecls : /* EMPTY */ | assemblyRefDecls assemblyRefDecl ; -assemblyRefDecl : hashHead bytes ')' +assemblyRefDecl : hashHead bytes ')' | asmOrRefDecl - | publicKeyTokenHead bytes ')' - | 'auto' + | publicKeyTokenHead bytes ')' + | 'auto' ; -exptypeHead : '.class' 'extern' exptAttr dottedName +exptypeHead : '.class' 'extern' exptAttr dottedName ; -exportHead : '.export' exptAttr dottedName /* deprecated */ +exportHead : '.export' exptAttr dottedName /* deprecated */ ; -exptAttr : /* EMPTY */ - | exptAttr 'private' - | exptAttr 'public' - | exptAttr 'forwarder' - | exptAttr 'nested' 'public' - | exptAttr 'nested' 'private' - | exptAttr 'nested' 'family' - | exptAttr 'nested' 'assembly' - | exptAttr 'nested' 'famandassem' - | exptAttr 'nested' 'famorassem' +exptAttr : /* EMPTY */ + | exptAttr 'private' + | exptAttr 'public' + | exptAttr 'forwarder' + | exptAttr 'nested' 'public' + | exptAttr 'nested' 'private' + | exptAttr 'nested' 'family' + | exptAttr 'nested' 'assembly' + | exptAttr 'nested' 'famandassem' + | exptAttr 'nested' 'famorassem' ; exptypeDecls : /* EMPTY */ | exptypeDecls exptypeDecl ; -exptypeDecl : '.file' dottedName - | '.class' 'extern' slashedName - | '.assembly' 'extern' dottedName - | 'mdtoken' '(' int32 ')' - | '.class' int32 +exptypeDecl : '.file' dottedName + | '.class' 'extern' slashedName + | '.assembly' 'extern' dottedName + | 'mdtoken' '(' int32 ')' + | '.class' int32 | customAttrDecl | compControl ; -manifestResHead : '.mresource' manresAttr dottedName - | '.mresource' manresAttr dottedName 'as' dottedName +manifestResHead : '.mresource' manresAttr dottedName + | '.mresource' manresAttr dottedName 'as' dottedName ; -manresAttr : /* EMPTY */ - | manresAttr 'public' - | manresAttr 'private' +manresAttr : /* EMPTY */ + | manresAttr 'public' + | manresAttr 'private' ; manifestResDecls : /* EMPTY */ | manifestResDecls manifestResDecl ; -manifestResDecl : '.file' dottedName 'at' int32 - | '.assembly' 'extern' dottedName +manifestResDecl : '.file' dottedName 'at' int32 + | '.assembly' 'extern' dottedName | customAttrDecl | compControl ; From 62d70831ba8c84cb4dfdd5b951a4e99e53e8b28e Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 29 May 2025 10:52:10 -0700 Subject: [PATCH 13/34] Define ExtendedLayoutAttribute in corelib --- .../System.Private.CoreLib.Shared.projitems | 4 +++- .../ExtendedLayoutAttribute.cs | 20 +++++++++++++++++++ .../InteropServices/ExtendedLayoutKind.cs | 16 +++++++++++++++ .../System.Runtime/ref/System.Runtime.cs | 12 ++++++++++- 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutAttribute.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutKind.cs diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index cea0562929595a..72f6d05b7b8744 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -976,6 +976,8 @@ + + @@ -2859,4 +2861,4 @@ - \ No newline at end of file + diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutAttribute.cs new file mode 100644 index 00000000000000..0237688df04872 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutAttribute.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Runtime.InteropServices +{ + /// + /// Indicates the layout rules for a value type at runtime. + /// + [AttributeUsage(AttributeTargets.Struct, Inherited = false)] + public sealed class ExtendedLayoutAttribute : Attribute + { + /// + /// Initializes a new instance of the class with the specified layout kind. + /// + /// The layout algorithm to use for this value type. + public ExtendedLayoutAttribute(ExtendedLayoutKind layoutKind) + { + } + } +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutKind.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutKind.cs new file mode 100644 index 00000000000000..3dc246f0c8427c --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ExtendedLayoutKind.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Runtime.InteropServices +{ + /// + /// Indicates the layout kind of a struct when using extended layout. + /// + public enum ExtendedLayoutKind + { + /// + /// The value type should have its fields laid out in accordance with the C language struct layout rules. + /// + CStruct = 0, + } +} diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index 277d75cda79e8e..897d376938140c 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -14189,11 +14189,21 @@ protected virtual void Dispose(bool disposing) { } protected void SetHandle(System.IntPtr handle) { } public void SetHandleAsInvalid() { } } + + [System.AttributeUsageAttribute(System.AttributeTargets.Struct, Inherited = false)] + public sealed class ExtendedLayoutAttribute : System.Attribute + { + public ExtendedLayoutAttribute(System.Runtime.InteropServices.ExtendedLayoutKind layoutKind) { } + } + public enum ExtendedLayoutKind + { + CStruct = 0, + } public partial class ExternalException : System.SystemException { public ExternalException() { } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")] + [System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId = "SYSLIB0051", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] protected ExternalException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } public ExternalException(string? message) { } public ExternalException(string? message, System.Exception? inner) { } From 0e58822885f396b2b9792417163ee99b37da8c95 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 29 May 2025 10:55:42 -0700 Subject: [PATCH 14/34] Add reference to Microsoft.Bcl.Memory for ILVerification.csproj --- eng/Versions.props | 1 + src/coreclr/tools/ILVerification/ILVerification.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/eng/Versions.props b/eng/Versions.props index 475faf04c60921..4961592e2feece 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -122,6 +122,7 @@ 4.6.1 6.0.0 + 9.0.5 5.0.0 1.2.0-beta.556 5.0.0 diff --git a/src/coreclr/tools/ILVerification/ILVerification.csproj b/src/coreclr/tools/ILVerification/ILVerification.csproj index 0c6514f07d5851..15f67a7c070a4c 100644 --- a/src/coreclr/tools/ILVerification/ILVerification.csproj +++ b/src/coreclr/tools/ILVerification/ILVerification.csproj @@ -16,5 +16,6 @@ + From a6e5f24527c534036171794c3b8f511eff3bb765 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 29 May 2025 11:01:37 -0700 Subject: [PATCH 15/34] Don't allow empty CStruct types. --- .../TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs | 6 ++++++ src/coreclr/vm/methodtablebuilder.cpp | 5 +++++ src/mono/mono/metadata/class-init.c | 6 ++++++ src/tests/Loader/classloader/ExtendedLayout/CStruct.cs | 5 ++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 04cfd8c825dc15..41969f2bb388e4 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -548,6 +548,12 @@ private static ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataTyp ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } + if (cumulativeInstanceFieldPos == LayoutInt.Zero) + { + // CStruct cannot have zero size. + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + } + SizeAndAlignment instanceByteSizeAndAlignment; var instanceSizeAndAlignment = ComputeInstanceSize( type, diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 0e4ca748877714..047a5bd55fecdf 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -8772,6 +8772,11 @@ VOID MethodTableBuilder::HandleCStructLayout(MethodTable** pByValueClassCache) pByValueClassCache, bmtEnumFields->dwNumDeclaredFields ); + + if (pLayoutInfo->IsZeroSized()) + { + BuildMethodTableThrowException(IDS_CLASSLOAD_BADFORMAT); + } } //******************************************************************************* diff --git a/src/mono/mono/metadata/class-init.c b/src/mono/mono/metadata/class-init.c index fc53278835a162..3d12064aa34810 100644 --- a/src/mono/mono/metadata/class-init.c +++ b/src/mono/mono/metadata/class-init.c @@ -2479,6 +2479,12 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_ real_size = klass->parent->instance_size; + if (top == 0) { + /* Empty structs are not allowed */ + if (mono_class_set_type_load_failure (klass, "CStruct type cannot be empty.")) + return; + } + for (i = 0; i < top; i++){ gint32 align; guint32 size; diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs index 149a3cae744a7e..73a210c614d946 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -25,6 +25,9 @@ public static void BlittablePrimitiveFieldsLayout() public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() { Assert.Equal(Unsafe.SizeOf(), Marshal.SizeOf()); + Assert.Equal(4, Unsafe.SizeOf()); + Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); + Assert.Equal(2, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); } [Fact] @@ -72,7 +75,7 @@ public static void NestedAutoLayout_ThrowTypeLoadException() [Fact] public static void EmptyStruct() { - Assert.Equal(1, Unsafe.SizeOf()); + Assert.Throws(() => typeof(EmptyStruct)); } [Fact] From a8bc97e6e8b4e9a39986518bb91471d225607164 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 30 May 2025 14:45:29 -0700 Subject: [PATCH 16/34] Add missing var --- src/tests/Loader/classloader/ExtendedLayout/CStruct.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs index 73a210c614d946..39c07a0f2e256d 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -24,6 +24,7 @@ public static void BlittablePrimitiveFieldsLayout() [Fact] public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() { + var c = default(CStructNonBlittablePrimitiveFields); Assert.Equal(Unsafe.SizeOf(), Marshal.SizeOf()); Assert.Equal(4, Unsafe.SizeOf()); Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); From 5d86388d2c9c72449319eeb1d18f8fd056d19cd4 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 4 Jun 2025 14:31:58 -0700 Subject: [PATCH 17/34] Collapse together the different "get class layout related info" methods into GetClassLayout --- .../TypeSystem/Canon/CanonTypes.Metadata.cs | 11 --- .../Common/InstantiatedType.Metadata.cs | 10 --- .../Common/MetadataFieldLayoutAlgorithm.cs | 24 ++---- .../Common/TypeSystem/Common/MetadataType.cs | 19 ++--- .../TypeSystem/Common/TypeSystemHelpers.cs | 2 +- .../Common/TypeWithRepeatedFields.cs | 3 - .../Utilities/GCPointerMap.Algorithm.cs | 2 +- .../tools/Common/TypeSystem/Ecma/EcmaType.cs | 79 +++++++++++-------- .../TypeSystem/Interop/IL/InlineArrayType.cs | 11 --- .../TypeSystem/Interop/IL/MarshalUtils.cs | 6 -- .../TypeSystem/Interop/IL/NativeStructType.cs | 11 --- .../Interop/IL/PInvokeDelegateWrapper.cs | 11 --- .../CompilerMetadataFieldLayoutAlgorithm.cs | 25 ++---- .../CompilerTypeSystemContext.BoxedTypes.cs | 11 --- ...ilerTypeSystemContext.GeneratedAssembly.cs | 12 --- .../ReadyToRunMetadataFieldLayoutAlgorithm.cs | 9 ++- 16 files changed, 72 insertions(+), 174 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs index 7b73670f77286e..b5b385ae58aae9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs @@ -59,17 +59,6 @@ public override bool HasCustomAttribute(string attributeNamespace, string attrib { return false; } - - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; - } } internal sealed partial class CanonType diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index 5539958b626678..c7972d1f8cb9ac 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -45,11 +45,6 @@ public override bool IsExtendedLayout get => _typeDef.IsExtendedLayout; } - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return _typeDef.GetExtendedLayoutInfo(); - } - public override bool IsBeforeFieldInit { get @@ -96,11 +91,6 @@ public override bool HasCustomAttribute(string attributeNamespace, string attrib return _typeDef.HasCustomAttribute(attributeNamespace, attributeName); } - public override int GetInlineArrayLength() - { - return _typeDef.GetInlineArrayLength(); - } - public override MetadataType GetNestedType(string name) { // Return the result from the typical type definition. diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 41969f2bb388e4..99e2ffafccdaca 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -480,7 +480,7 @@ protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType if (type.IsInlineArray) { - AdjustForInlineArray(type, numInstanceFields, ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); + AdjustForInlineArray(type, numInstanceFields, layoutMetadata, ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); } ComputedInstanceFieldLayout computedLayout = new ComputedInstanceFieldLayout @@ -499,7 +499,7 @@ protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType return computedLayout; } - private static ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType type, int numInstanceFields) + protected ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType type, int numInstanceFields) { if (type.ContainsGCPointers || !type.IsValueType) { @@ -578,28 +578,14 @@ private static ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataTyp return computedLayout; } - protected ComputedInstanceFieldLayout ComputeExtendedFieldLayout(MetadataType type, int numInstanceFields) - { - ExtendedLayoutInfo extendedLayoutInfo = type.GetExtendedLayoutInfo(); - - if (extendedLayoutInfo.Kind == ExtendedLayoutKind.CStruct) - { - return ComputeCStructFieldLayout(type, numInstanceFields); - } - else - { - ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); - return default; - } - } - private static void AdjustForInlineArray( MetadataType type, int instanceFieldCount, + ClassLayoutMetadata layoutMetadata, ref SizeAndAlignment instanceByteSizeAndAlignment, ref SizeAndAlignment instanceSizeAndAlignment) { - int repeat = type.GetInlineArrayLength(); + int repeat = layoutMetadata.InlineArrayLength; if (repeat <= 0) { @@ -939,7 +925,7 @@ protected ComputedInstanceFieldLayout ComputeAutoFieldLayout(MetadataType type, if (type.IsInlineArray) { - AdjustForInlineArray(type, numInstanceFields, ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); + AdjustForInlineArray(type, numInstanceFields, type.GetClassLayout(), ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); } ComputedInstanceFieldLayout computedLayout = new ComputedInstanceFieldLayout diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs index 7bcf03d798b3b9..633b0453db71a8 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs @@ -108,26 +108,21 @@ public bool IsInlineArray return (GetTypeFlags(TypeFlags.IsInlineArray | TypeFlags.AttributeCacheComputed) & TypeFlags.IsInlineArray) != 0; } } - - public abstract int GetInlineArrayLength(); - - public abstract ExtendedLayoutInfo GetExtendedLayoutInfo(); } public struct ClassLayoutMetadata { + public MetadataLayoutKind Kind; + public int InlineArrayLength; public int PackingSize; public int Size; } - public struct ExtendedLayoutInfo - { - public ExtendedLayoutKind Kind; - } - - public enum ExtendedLayoutKind + public enum MetadataLayoutKind { - None = -1, - CStruct = 0 + Auto, + Sequential, + Explicit, + CStruct } } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs index e856e59f324bda..8136512e29ffcd 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs @@ -67,7 +67,7 @@ public static TypeDesc GetParameterType(this TypeDesc type) public static bool HasLayout(this MetadataType mdType) { - return mdType.IsSequentialLayout || mdType.IsExplicitLayout || mdType.IsExtendedLayout; + return mdType.GetClassLayout().Kind != MetadataLayoutKind.Auto; } public static LayoutInt GetElementSize(this TypeDesc type) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs index 490873aef7dee4..a62f4438cf3309 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs @@ -85,7 +85,6 @@ public override IEnumerable GetFields() public override bool HasCustomAttribute(string attributeNamespace, string attributeName) => MetadataType.HasCustomAttribute(attributeNamespace, attributeName); public override IEnumerable GetNestedTypes() => (IEnumerable)EmptyTypes; public override MetadataType GetNestedType(string name) => null; - public override int GetInlineArrayLength() => MetadataType.GetInlineArrayLength(); public override MethodImplRecord[] FindMethodsImplWithMatchingDeclName(string name) => MetadataType.FindMethodsImplWithMatchingDeclName(name); public override int GetHashCode() => MetadataType.GetHashCode(); protected override MethodImplRecord[] ComputeVirtualMethodImplsForType() => Array.Empty(); @@ -123,7 +122,5 @@ public override IEnumerable GetFields() public override TypeSystemContext Context => MetadataType.Context; public override IEnumerable GetMethods() => MethodDesc.EmptyMethods; - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() => MetadataType.GetExtendedLayoutInfo(); } } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/Utilities/GCPointerMap.Algorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/Utilities/GCPointerMap.Algorithm.cs index 2907ba26b6cf27..a8d0d7fed6832e 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/Utilities/GCPointerMap.Algorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/Utilities/GCPointerMap.Algorithm.cs @@ -33,7 +33,7 @@ private static void FromInstanceLayoutHelper(ref GCPointerMapBuilder builder, Me int repeat = 1; if (type.IsInlineArray) { - repeat = ((MetadataType)type).GetInlineArrayLength(); + repeat = type.GetClassLayout().InlineArrayLength; } foreach (FieldDesc field in type.GetFields()) diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 44cdfe8e8aedf0..2dd0c7cc84b7e9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -552,56 +552,67 @@ public override bool HasCustomAttribute(string attributeNamespace, string attrib attributeNamespace, attributeName).IsNil; } - public override int GetInlineArrayLength() - { - Debug.Assert(this.IsInlineArray); - - var attr = MetadataReader.GetCustomAttribute(MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), - "System.Runtime.CompilerServices", "InlineArrayAttribute")); - - var value = attr.DecodeValue(new CustomAttributeTypeProvider(_module)).FixedArguments[0].Value; - - return value is int intValue ? intValue : 0; - } - public override ClassLayoutMetadata GetClassLayout() { TypeLayout layout = _typeDefinition.GetLayout(); + int inlineArrayLength = 0; - return new ClassLayoutMetadata + if (IsInlineArray) { - PackingSize = layout.PackingSize, - Size = layout.Size - }; - } + var attr = MetadataReader.GetCustomAttribute(MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), + "System.Runtime.CompilerServices", "InlineArrayAttribute")); - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - Debug.Assert(this.IsExtendedLayout); + var value = attr.DecodeValue(new CustomAttributeTypeProvider(_module)).FixedArguments[0].Value; - var attrHandle = MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), - "System.Runtime.InteropServices", "ExtendedLayoutAttribute"); + inlineArrayLength = value is int intValue ? intValue : 0; + } - if (attrHandle.IsNil) + MetadataLayoutKind layoutKind = MetadataLayoutKind.Auto; + if (IsSequentialLayout) + { + layoutKind = MetadataLayoutKind.Sequential; + } + else if (IsExplicitLayout) { - ThrowHelper.ThrowTypeLoadException(this); + layoutKind = MetadataLayoutKind.Explicit; } + else if (IsExtendedLayout) + { + var attrHandle = MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), + "System.Runtime.InteropServices", "ExtendedLayoutAttribute"); - var attr = MetadataReader.GetCustomAttribute(attrHandle); + if (attrHandle.IsNil) + { + ThrowHelper.ThrowTypeLoadException(this); + } - var attrValue = attr.DecodeValue(new CustomAttributeTypeProvider(_module)); + var attr = MetadataReader.GetCustomAttribute(attrHandle); - if (attrValue.FixedArguments is not [{ Value: int kind }]) - { - ThrowHelper.ThrowTypeLoadException(this); - return default; - } + var attrValue = attr.DecodeValue(new CustomAttributeTypeProvider(_module)); + + if (attrValue.FixedArguments is not [{ Value: int kind }]) + { + ThrowHelper.ThrowTypeLoadException(this); + return default; + } - ExtendedLayoutKind extendedLayoutKind = kind is int intValue ? (ExtendedLayoutKind)intValue : ExtendedLayoutKind.None; + switch (kind) + { + case 0: + layoutKind = MetadataLayoutKind.CStruct; + break; + default: + ThrowHelper.ThrowTypeLoadException(this); + return default; // Invalid kind value + } + } - return new ExtendedLayoutInfo + return new ClassLayoutMetadata { - Kind = extendedLayoutKind + Kind = layoutKind, + PackingSize = layout.PackingSize, + Size = layout.Size, + InlineArrayLength = inlineArrayLength, }; } diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index a948b221577c3d..4eef6883b23415 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -187,11 +187,6 @@ public override ClassLayoutMetadata GetClassLayout() return result; } - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; - } - public override bool HasCustomAttribute(string attributeNamespace, string attributeName) { return false; @@ -261,12 +256,6 @@ protected override TypeFlags ComputeTypeFlags(TypeFlags mask) return flags; } - public override int GetInlineArrayLength() - { - Debug.Fail("when this is backed by an actual inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - private void InitializeMethods() { MethodDesc[] methods = new MethodDesc[] { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs index 79589538404c15..fcc954bc8f9846 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs @@ -29,12 +29,6 @@ public static bool IsBlittableType(TypeDesc type) var mdType = (MetadataType)type; - if (mdType.IsExtendedLayout && mdType.GetExtendedLayoutInfo() is { Kind: ExtendedLayoutKind.CStruct }) - { - // CStruct layout is always blittable (non-blittable CStruct layout is blocked during type layout). - return true; - } - if (!mdType.IsSequentialLayout && !mdType.IsExplicitLayout) { return false; diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs index cfd4fa417ad3e7..14621ec299a435 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs @@ -69,17 +69,6 @@ public override bool IsExplicitLayout } } - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return ManagedStructType.GetExtendedLayoutInfo(); - } - public override bool IsSequentialLayout { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index 2766dcb772930f..eccca35eb8969d 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -236,12 +236,6 @@ protected override TypeFlags ComputeTypeFlags(TypeFlags mask) return flags; } - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - private MethodDesc[] _methods; private void InitializeMethods() @@ -275,11 +269,6 @@ public MethodDesc GetPInvokeDelegateWrapperMethod(PInvokeDelegateWrapperMethodKi return _methods[(int)kind]; } - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; - } } public enum PInvokeDelegateWrapperMethodKind : byte diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs index d63ccfc8f14490..06dc07f3227b3a 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs @@ -41,24 +41,15 @@ protected override void FinalizeRuntimeSpecificStaticFieldLayout(TypeSystemConte protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - if (type.IsExtendedLayout) + return type.GetClassLayout().Kind switch { - return ComputeExtendedFieldLayout(type, numInstanceFields); - } - else if (type.IsExplicitLayout) - { - return ComputeExplicitFieldLayout(type, numInstanceFields); - } - // Sequential layout has to be respected for blittable types only. We use approximation and respect it for - // all types without GC references (ie C# unmanaged types). - else if (type.IsSequentialLayout && !type.ContainsGCPointers) - { - return ComputeSequentialFieldLayout(type, numInstanceFields); - } - else - { - return ComputeAutoFieldLayout(type, numInstanceFields); - } + MetadataLayoutKind.Explicit => ComputeExplicitFieldLayout(type, numInstanceFields), + // Sequential layout has to be respected for blittable types only. We use approximation and respect it for + // all types without GC references (ie C# unmanaged types). + MetadataLayoutKind.Sequential when !type.ContainsGCPointers => ComputeSequentialFieldLayout(type, numInstanceFields), + MetadataLayoutKind.CStruct => ComputeCStructFieldLayout(type, numInstanceFields), + _ => ComputeAutoFieldLayout(type, numInstanceFields), + }; } } } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 96e548be27f307..42ee4a1b7a1053 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -274,12 +274,6 @@ private sealed partial class BoxedValueType : MetadataType, INonEmittableType public override DefType[] ExplicitlyImplementedInterfaces => Array.Empty(); public override TypeSystemContext Context => ValueTypeRepresented.Context; - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - public BoxedValueType(ModuleDesc owningModule, MetadataType valuetype) { // BoxedValueType has the same genericness as the valuetype it's wrapping. @@ -347,11 +341,6 @@ public override IEnumerable GetFields() { return Array.Empty(); } - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; - } } /// diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs index db21ab0189c93b..88b73476a2513f 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs @@ -154,11 +154,6 @@ public override ClassLayoutMetadata GetClassLayout() return default; } - public override ExtendedLayoutInfo GetExtendedLayoutInfo() - { - return new ExtendedLayoutInfo { Kind = ExtendedLayoutKind.None }; - } - public override bool HasCustomAttribute(string attributeNamespace, string attributeName) { return false; @@ -221,12 +216,6 @@ public override bool IsExtendedLayout } } - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - public override bool IsBeforeFieldInit { get @@ -235,7 +224,6 @@ public override bool IsBeforeFieldInit } } - public override DefType BaseType { get diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs index db71e8c3ab8a26..5f371307987bb5 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs @@ -606,11 +606,12 @@ public FieldAndOffset[] GetOrAddDynamicLayout(DefType instantiatedType, FieldAnd protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - if (type.IsExtendedLayout) + MetadataLayoutKind layoutKind = type.GetClassLayout().Kind; + if (layoutKind == MetadataLayoutKind.CStruct) { - return ComputeExtendedFieldLayout(type, numInstanceFields); + return ComputeCStructFieldLayout(type, numInstanceFields); } - else if (type.IsExplicitLayout) + else if (layoutKind == MetadataLayoutKind.Explicit) { // Works around https://github.com/dotnet/runtime/issues/102868 if (!type.IsValueType && @@ -621,7 +622,7 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada return ComputeExplicitFieldLayout(type, numInstanceFields); } - else if (type.IsSequentialLayout && !type.ContainsGCPointers) + else if (layoutKind == MetadataLayoutKind.Sequential && !type.ContainsGCPointers) { // Works around https://github.com/dotnet/runtime/issues/102868 if (!type.IsValueType && From d028beaa05043394565bc4abf22d5fb9e4758703 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 11 Jun 2025 10:42:54 -0700 Subject: [PATCH 18/34] PR feedback --- .../tools/Common/JitInterface/CorInfoImpl.cs | 2 +- .../Common/TypeSystem/Canon/CanonTypes.Metadata.cs | 2 ++ .../TypeSystem/Common/InstantiatedType.Metadata.cs | 8 ++++++++ .../Common/MetadataFieldLayoutAlgorithm.cs | 10 +++++----- .../tools/Common/TypeSystem/Common/MetadataType.cs | 6 ++++++ .../Common/TypeSystem/Common/TypeSystemHelpers.cs | 4 ---- .../tools/Common/TypeSystem/Ecma/EcmaType.cs | 14 +++++++++++--- .../TypeSystem/Interop/IL/InlineArrayType.cs | 8 ++++++++ .../TypeSystem/Interop/IL/MarshalHelpers.Aot.cs | 6 +++--- .../Common/TypeSystem/Interop/IL/MarshalHelpers.cs | 4 ++-- .../TypeSystem/Interop/IL/NativeStructType.cs | 10 +++++++++- .../Interop/IL/PInvokeDelegateWrapper.cs | 8 ++++++++ .../CompilerTypeSystemContext.BoxedTypes.cs | 1 + .../CompilerTypeSystemContext.GeneratedAssembly.cs | 8 ++++++++ .../TypeRefTypeSystem/TypeRefTypeSystemType.cs | 14 ++++---------- 15 files changed, 76 insertions(+), 29 deletions(-) diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs index d5974dd014f03a..e727d0d7b698fb 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs @@ -2226,7 +2226,7 @@ public static int GetClassAlignmentRequirementStatic(DefType type) { int alignment = type.Context.Target.PointerSize; - if (type is MetadataType metadataType && metadataType.HasLayout()) + if (type is MetadataType metadataType && !metadataType.IsAutoLayout) { if (metadataType.IsSequentialLayout || MarshalUtils.IsBlittableType(metadataType)) { diff --git a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs index b5b385ae58aae9..64e0b308c66276 100644 --- a/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Canon/CanonTypes.Metadata.cs @@ -31,6 +31,8 @@ protected override MethodImplRecord[] ComputeVirtualMethodImplsForType() public override bool IsExtendedLayout => false; + public override bool IsAutoLayout => true; + public override ModuleDesc Module => _context.SystemModule; public override bool IsModuleType => false; diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index c7972d1f8cb9ac..9119eb811e4492 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -45,6 +45,14 @@ public override bool IsExtendedLayout get => _typeDef.IsExtendedLayout; } + public override bool IsAutoLayout + { + get + { + return _typeDef.IsAutoLayout; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 99e2ffafccdaca..033503c7f1b440 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -64,8 +64,8 @@ public override ComputedInstanceFieldLayout ComputeInstanceLayout(DefType defTyp // If the current type isn't ValueType or System.Object and has a layout and the parent type isn't // ValueType or System.Object then both need to have layout. // - // ExtendedLayout is not supported on non value-types. - if (!type.IsValueType && type.HasLayout()) + // ExtendedLayout is not supported on non-value types. + if (!type.IsValueType && !type.IsAutoLayout) { if (type.IsExtendedLayout) { @@ -73,7 +73,7 @@ public override ComputedInstanceFieldLayout ComputeInstanceLayout(DefType defTyp } MetadataType baseType = type.MetadataBaseType; - if (!baseType.IsObject && !baseType.HasLayout()) + if (!baseType.IsObject && !baseType.IsAutoLayout) { ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } @@ -626,7 +626,7 @@ protected ComputedInstanceFieldLayout ComputeAutoFieldLayout(MetadataType type, { TypeSystemContext context = type.Context; - bool hasLayout = type.HasLayout(); + bool hasLayout = !type.IsAutoLayout; // Auto-layout in CoreCLR does not respect packing size. int packingSize = type.Context.Target.MaximumAlignment; @@ -995,7 +995,7 @@ public LayoutInt CalculateFieldBaseOffset(MetadataType type, bool requiresAlign8 cumulativeInstanceFieldPos = type.BaseType.InstanceByteCountUnaligned; if (!cumulativeInstanceFieldPos.IsIndeterminate) { - if (requiresAlignedBase && type.BaseType.IsZeroSizedReferenceType && ((MetadataType)type.BaseType).HasLayout()) + if (requiresAlignedBase && type.BaseType.IsZeroSizedReferenceType && !((MetadataType)type.BaseType).IsAutoLayout) { cumulativeInstanceFieldPos += LayoutInt.One; } diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs index 633b0453db71a8..f1e2d388ebb9f3 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataType.cs @@ -39,6 +39,12 @@ public abstract partial class MetadataType : DefType /// public abstract bool IsExtendedLayout { get; } + /// + /// If true, the type layout is dictated by the auto layout rules provided by the runtime. + /// Corresponds to the definition of autolayout semantic defined in the ECMA-335 specification. + /// + public abstract bool IsAutoLayout { get; } + /// /// If true, the type initializer of this type has a relaxed semantic. Corresponds /// to the definition of beforefieldinit semantic defined in the ECMA-335 specification. diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs index 8136512e29ffcd..440c606ac75d77 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeSystemHelpers.cs @@ -65,10 +65,6 @@ public static TypeDesc GetParameterType(this TypeDesc type) return paramType.ParameterType; } - public static bool HasLayout(this MetadataType mdType) - { - return mdType.GetClassLayout().Kind != MetadataLayoutKind.Auto; - } public static LayoutInt GetElementSize(this TypeDesc type) { diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 2dd0c7cc84b7e9..8a1d8af43f189b 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -568,15 +568,15 @@ public override ClassLayoutMetadata GetClassLayout() } MetadataLayoutKind layoutKind = MetadataLayoutKind.Auto; - if (IsSequentialLayout) + if ((Attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout) { layoutKind = MetadataLayoutKind.Sequential; } - else if (IsExplicitLayout) + else if ((Attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout) { layoutKind = MetadataLayoutKind.Explicit; } - else if (IsExtendedLayout) + else if ((Attributes & TypeAttributes.LayoutMask) == TypeAttributesExtendedLayout) { var attrHandle = MetadataReader.GetCustomAttributeHandle(_typeDefinition.GetCustomAttributes(), "System.Runtime.InteropServices", "ExtendedLayoutAttribute"); @@ -637,6 +637,14 @@ public override bool IsExtendedLayout get => (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributesExtendedLayout; } + public override bool IsAutoLayout + { + get + { + return (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index 4eef6883b23415..e10f5a5233cdcb 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -99,6 +99,14 @@ public override bool IsExtendedLayout } } + public override bool IsAutoLayout + { + get + { + return false; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.Aot.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.Aot.cs index b5e9d32dff01ce..a143624f710d14 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.Aot.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.Aot.cs @@ -31,11 +31,11 @@ public static bool IsStructMarshallingRequired(TypeDesc typeDesc) } // - // For struct marshalling it is required to have either Sequential - // or Explicit layout. For Auto layout the P/Invoke marshalling code + // For struct marshalling it is required to not have Auto layout. + // For Auto layout the P/Invoke marshalling code // will throw appropriate error message. // - if (!type.HasLayout()) + if (type.IsAutoLayout) return false; if (!type.IsValueType) diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs index 565a890b2de7b3..6e0d4f5838b585 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs @@ -436,7 +436,7 @@ internal static MarshallerKind GetMarshallerKind( return MarshallerKind.BlittableStruct; } - else if (((MetadataType)type).HasLayout()) + else if (!((MetadataType)type).IsAutoLayout) { if (nativeType != NativeTypeKind.Default && nativeType != NativeTypeKind.Struct) return MarshallerKind.Invalid; @@ -642,7 +642,7 @@ internal static MarshallerKind GetMarshallerKind( else return MarshallerKind.Invalid; } - else if (type is MetadataType mdType && mdType.HasLayout()) + else if (type is MetadataType mdType && !mdType.IsAutoLayout) { if (type.HasInstantiation) { diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs index 14621ec299a435..4df0e469b80549 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/NativeStructType.cs @@ -85,6 +85,14 @@ public override bool IsExtendedLayout } } + public override bool IsAutoLayout + { + get + { + return ManagedStructType.IsAutoLayout; + } + } + public override bool IsBeforeFieldInit { get @@ -180,7 +188,7 @@ public NativeStructType(ModuleDesc owningModule, MetadataType managedStructType, Module = owningModule; ManagedStructType = managedStructType; _interopStateManager = interopStateManager; - _hasInvalidLayout = !managedStructType.HasLayout(); + _hasInvalidLayout = managedStructType.IsAutoLayout; _typeForFieldIteration = managedStructType.IsInlineArray ? new TypeWithRepeatedFields(managedStructType) : managedStructType; Stack typesBeingLookedAt = (s_typesBeingLookedAt ??= new Stack()); diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index eccca35eb8969d..6c9de1cbe69662 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -87,6 +87,14 @@ public override bool IsExtendedLayout get => false; } + public override bool IsAutoLayout + { + get + { + return true; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 42ee4a1b7a1053..5cfb19f98d6d68 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -265,6 +265,7 @@ private sealed partial class BoxedValueType : MetadataType, INonEmittableType public override bool IsExplicitLayout => false; public override bool IsSequentialLayout => true; public override bool IsExtendedLayout => true; + public override bool IsAutoLayout => false; public override bool IsBeforeFieldInit => false; public override MetadataType MetadataBaseType => (MetadataType)Context.GetWellKnownType(WellKnownType.Object); public override DefType BaseType => MetadataBaseType; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs index 88b73476a2513f..03a114105df368 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.GeneratedAssembly.cs @@ -216,6 +216,14 @@ public override bool IsExtendedLayout } } + public override bool IsAutoLayout + { + get + { + return true; + } + } + public override bool IsBeforeFieldInit { get diff --git a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs index f7f79d1f1605d7..8144c28cf136b3 100644 --- a/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs +++ b/src/coreclr/tools/dotnet-pgo/TypeRefTypeSystem/TypeRefTypeSystemType.cs @@ -148,6 +148,10 @@ public FieldDesc GetOrAddField(string name, TypeDesc fieldType, EmbeddedSignatur public override bool IsSequentialLayout => throw new NotImplementedException(); + public override bool IsExtendedLayout => throw new NotImplementedException(); + + public override bool IsAutoLayout => throw new NotImplementedException(); + public override bool IsBeforeFieldInit => throw new NotImplementedException(); public override ModuleDesc Module => _module; @@ -251,15 +255,5 @@ protected override TypeFlags ComputeTypeFlags(TypeFlags mask) } protected override MethodImplRecord[] ComputeVirtualMethodImplsForType() => throw new NotImplementedException(); - - public override int GetInlineArrayLength() - { - Debug.Fail("if this can be an inline array, implement GetInlineArrayLength"); - throw new InvalidOperationException(); - } - - public override bool IsExtendedLayout => throw new NotImplementedException(); - - public override ExtendedLayoutInfo GetExtendedLayoutInfo() => throw new NotImplementedException(); } } From 05085e33a6d2b359cb42b29ff2d5cc5407e7c2a7 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 12 Jun 2025 14:56:21 -0700 Subject: [PATCH 19/34] Add missing impl --- .../tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs index a62f4438cf3309..7f5be414774bad 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/TypeWithRepeatedFields.cs @@ -103,6 +103,8 @@ public override IEnumerable GetFields() public override bool IsExtendedLayout => MetadataType.IsExtendedLayout; + public override bool IsAutoLayout => MetadataType.IsAutoLayout; + public override bool IsBeforeFieldInit => MetadataType.IsBeforeFieldInit; public override ModuleDesc Module => MetadataType.Module; From e941e1e5164d35bb42c371c3ba2e351b4153e4ce Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Mon, 16 Jun 2025 16:45:13 -0700 Subject: [PATCH 20/34] PR feedback --- .../Common/MetadataFieldLayoutAlgorithm.cs | 19 +++++++++++-------- .../CompilerMetadataFieldLayoutAlgorithm.cs | 9 +++++---- .../ReadyToRunMetadataFieldLayoutAlgorithm.cs | 9 +++++---- .../System.Runtime/ref/System.Runtime.cs | 4 ++-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index 033503c7f1b440..fb3b51c398ed52 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -308,7 +308,7 @@ protected virtual void FinalizeRuntimeSpecificStaticFieldLayout(TypeSystemContex { } - protected ComputedInstanceFieldLayout ComputeExplicitFieldLayout(MetadataType type, int numInstanceFields) + protected ComputedInstanceFieldLayout ComputeExplicitFieldLayout(MetadataType type, int numInstanceFields, in ClassLayoutMetadata layoutMetadata) { // Instance slice size is the total size of instance not including the base type. // It is calculated as the field whose offset and size add to the greatest value. @@ -316,7 +316,6 @@ protected ComputedInstanceFieldLayout ComputeExplicitFieldLayout(MetadataType ty LayoutInt cumulativeInstanceFieldPos = CalculateFieldBaseOffset(type, requiresAlign8: false, requiresAlignedBase: false) - offsetBias; LayoutInt instanceSize = cumulativeInstanceFieldPos + offsetBias; - ClassLayoutMetadata layoutMetadata = type.GetClassLayout(); int packingSize = ComputePackingSize(type, layoutMetadata); LayoutInt largestAlignmentRequired = LayoutInt.One; @@ -420,7 +419,7 @@ private static LayoutInt AlignUpInstanceFieldOffset(LayoutInt cumulativeInstance return LayoutInt.AlignUp(cumulativeInstanceFieldPos, alignment, target); } - protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType type, int numInstanceFields) + protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType type, int numInstanceFields, in ClassLayoutMetadata layoutMetadata) { var offsets = new FieldAndOffset[numInstanceFields]; @@ -430,8 +429,6 @@ protected ComputedInstanceFieldLayout ComputeSequentialFieldLayout(MetadataType LayoutInt offsetBias = !type.IsValueType ? new LayoutInt(type.Context.Target.PointerSize) : LayoutInt.Zero; LayoutInt cumulativeInstanceFieldPos = CalculateFieldBaseOffset(type, requiresAlign8: false, requiresAlignedBase: false) - offsetBias; - var layoutMetadata = type.GetClassLayout(); - LayoutInt largestAlignmentRequirement = LayoutInt.One; int fieldOrdinal = 0; int packingSize = ComputePackingSize(type, layoutMetadata); @@ -544,7 +541,7 @@ protected ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType typ if (hasAutoLayoutField) { - // CStruct does not support auto layout fields, Int128 or VectorT fields. + // CStruct does not support auto layout fields ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } @@ -554,6 +551,12 @@ protected ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType typ ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } + if (type.IsInlineArray) + { + // CStruct types cannot be inline arrays + ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); + } + SizeAndAlignment instanceByteSizeAndAlignment; var instanceSizeAndAlignment = ComputeInstanceSize( type, @@ -622,7 +625,7 @@ protected virtual void AlignBaseOffsetIfNecessary(MetadataType type, ref LayoutI { } - protected ComputedInstanceFieldLayout ComputeAutoFieldLayout(MetadataType type, int numInstanceFields) + protected ComputedInstanceFieldLayout ComputeAutoFieldLayout(MetadataType type, int numInstanceFields, in ClassLayoutMetadata layoutMetadata) { TypeSystemContext context = type.Context; @@ -925,7 +928,7 @@ protected ComputedInstanceFieldLayout ComputeAutoFieldLayout(MetadataType type, if (type.IsInlineArray) { - AdjustForInlineArray(type, numInstanceFields, type.GetClassLayout(), ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); + AdjustForInlineArray(type, numInstanceFields, layoutMetadata, ref instanceByteSizeAndAlignment, ref instanceSizeAndAlignment); } ComputedInstanceFieldLayout computedLayout = new ComputedInstanceFieldLayout diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs index 06dc07f3227b3a..4e869b4a647a51 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerMetadataFieldLayoutAlgorithm.cs @@ -41,14 +41,15 @@ protected override void FinalizeRuntimeSpecificStaticFieldLayout(TypeSystemConte protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - return type.GetClassLayout().Kind switch + ClassLayoutMetadata layoutMetadata = type.GetClassLayout(); + return layoutMetadata.Kind switch { - MetadataLayoutKind.Explicit => ComputeExplicitFieldLayout(type, numInstanceFields), + MetadataLayoutKind.Explicit => ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata), // Sequential layout has to be respected for blittable types only. We use approximation and respect it for // all types without GC references (ie C# unmanaged types). - MetadataLayoutKind.Sequential when !type.ContainsGCPointers => ComputeSequentialFieldLayout(type, numInstanceFields), + MetadataLayoutKind.Sequential when !type.ContainsGCPointers => ComputeSequentialFieldLayout(type, numInstanceFields, layoutMetadata), MetadataLayoutKind.CStruct => ComputeCStructFieldLayout(type, numInstanceFields), - _ => ComputeAutoFieldLayout(type, numInstanceFields), + _ => ComputeAutoFieldLayout(type, numInstanceFields, layoutMetadata), }; } } diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs index 5f371307987bb5..3541316ffd412e 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs @@ -606,7 +606,8 @@ public FieldAndOffset[] GetOrAddDynamicLayout(DefType instantiatedType, FieldAnd protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - MetadataLayoutKind layoutKind = type.GetClassLayout().Kind; + ClassLayoutMetadata layoutMetadata = type.GetClassLayout(); + MetadataLayoutKind layoutKind = layoutMetadata.Kind; if (layoutKind == MetadataLayoutKind.CStruct) { return ComputeCStructFieldLayout(type, numInstanceFields); @@ -620,7 +621,7 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada ThrowHelper.ThrowTypeLoadException(type); } - return ComputeExplicitFieldLayout(type, numInstanceFields); + return ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata); } else if (layoutKind == MetadataLayoutKind.Sequential && !type.ContainsGCPointers) { @@ -631,11 +632,11 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada ThrowHelper.ThrowTypeLoadException(type); } - return ComputeSequentialFieldLayout(type, numInstanceFields); + return ComputeSequentialFieldLayout(type, numInstanceFields, layoutMetadata); } else { - return ComputeAutoFieldLayout(type, numInstanceFields); + return ComputeAutoFieldLayout(type, numInstanceFields, layoutMetadata); } } diff --git a/src/libraries/System.Runtime/ref/System.Runtime.cs b/src/libraries/System.Runtime/ref/System.Runtime.cs index d83a233a492b41..d6f17ba5e05890 100644 --- a/src/libraries/System.Runtime/ref/System.Runtime.cs +++ b/src/libraries/System.Runtime/ref/System.Runtime.cs @@ -14204,7 +14204,7 @@ protected void SetHandle(System.IntPtr handle) { } public void SetHandleAsInvalid() { } } - [System.AttributeUsageAttribute(System.AttributeTargets.Struct, Inherited = false)] + [System.AttributeUsageAttribute(System.AttributeTargets.Struct, Inherited=false)] public sealed class ExtendedLayoutAttribute : System.Attribute { public ExtendedLayoutAttribute(System.Runtime.InteropServices.ExtendedLayoutKind layoutKind) { } @@ -14217,7 +14217,7 @@ public partial class ExternalException : System.SystemException { public ExternalException() { } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - [System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId = "SYSLIB0051", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] + [System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")] protected ExternalException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } public ExternalException(string? message) { } public ExternalException(string? message, System.Exception? inner) { } From f6933cac0738f056769fa5b4cd8fc296c183f2e7 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 17 Jun 2025 14:10:44 -0700 Subject: [PATCH 21/34] Add more `in` --- .../Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index fb3b51c398ed52..cc43aeed588e97 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -584,7 +584,7 @@ protected ComputedInstanceFieldLayout ComputeCStructFieldLayout(MetadataType typ private static void AdjustForInlineArray( MetadataType type, int instanceFieldCount, - ClassLayoutMetadata layoutMetadata, + in ClassLayoutMetadata layoutMetadata, ref SizeAndAlignment instanceByteSizeAndAlignment, ref SizeAndAlignment instanceSizeAndAlignment) { @@ -1072,7 +1072,7 @@ private static SizeAndAlignment ComputeFieldSizeAndAlignment(TypeDesc fieldType, return result; } - private static int ComputePackingSize(MetadataType type, ClassLayoutMetadata layoutMetadata) + private static int ComputePackingSize(MetadataType type, in ClassLayoutMetadata layoutMetadata) { if (layoutMetadata.PackingSize == 0) return type.Context.Target.MaximumAlignment; From ad7c1caa52a31617aa7a5afe4c7f76dff34a38d6 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 17 Jun 2025 14:12:09 -0700 Subject: [PATCH 22/34] Adjust test --- src/tests/Loader/classloader/ExtendedLayout/CStruct.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs index 39c07a0f2e256d..d4bb0566e0b595 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -27,8 +27,8 @@ public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() var c = default(CStructNonBlittablePrimitiveFields); Assert.Equal(Unsafe.SizeOf(), Marshal.SizeOf()); Assert.Equal(4, Unsafe.SizeOf()); - Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); - Assert.Equal(2, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); + Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); + Assert.Equal(2, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); } [Fact] @@ -76,7 +76,7 @@ public static void NestedAutoLayout_ThrowTypeLoadException() [Fact] public static void EmptyStruct() { - Assert.Throws(() => typeof(EmptyStruct)); + Assert.Throws(() => typeof(EmptyCStruct)); } [Fact] From 26627ba1d0fa815b75fa204c3cf55cf2625bed4a Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 18 Jun 2025 14:58:24 -0700 Subject: [PATCH 23/34] Fix test build and asserts. Adjust SRE tests and NativeAOT --- src/coreclr/md/compiler/regmeta_emit.cpp | 2 +- .../Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs | 1 + .../tests/TypeBuilder/TypeBuilderCreateType.cs | 1 - .../tests/TypeBuilder/TypeBuilderCreateTypeInfo.cs | 1 - .../tests/TypeBuilder/TypeBuilderDefineNestedType.cs | 2 -- .../System/Reflection/TypeLoading/Types/RoDefinitionType.cs | 1 + src/tests/Loader/classloader/ExtendedLayout/CStruct.cs | 4 ++-- 7 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/coreclr/md/compiler/regmeta_emit.cpp b/src/coreclr/md/compiler/regmeta_emit.cpp index 34942c408b59d9..6c080048e37fbb 100644 --- a/src/coreclr/md/compiler/regmeta_emit.cpp +++ b/src/coreclr/md/compiler/regmeta_emit.cpp @@ -1818,7 +1818,7 @@ HRESULT RegMeta::_DefineTypeDef( // S_OK or error. - _ASSERTE(IsTdAutoLayout(dwTypeDefFlags) || IsTdSequentialLayout(dwTypeDefFlags) || IsTdExplicitLayout(dwTypeDefFlags)); + _ASSERTE(IsTdAutoLayout(dwTypeDefFlags) || IsTdSequentialLayout(dwTypeDefFlags) || IsTdExplicitLayout(dwTypeDefFlags) || IsTdExtendedLayout(dwTypeDefFlags)); _ASSERTE(ptd); _ASSERTE(TypeFromToken(tkExtends) == mdtTypeRef || TypeFromToken(tkExtends) == mdtTypeDef || TypeFromToken(tkExtends) == mdtTypeSpec diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs index 253caeb810871d..1ff251930498b4 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs @@ -128,6 +128,7 @@ public sealed override StructLayoutAttribute StructLayoutAttribute case TypeAttributes.ExplicitLayout: layoutKind = LayoutKind.Explicit; break; case TypeAttributes.AutoLayout: layoutKind = LayoutKind.Auto; break; case TypeAttributes.SequentialLayout: layoutKind = LayoutKind.Sequential; break; + case TypeAttributes.ExtendedLayout: layoutKind = LayoutKind.Extended; break; default: layoutKind = LayoutKind.Auto; break; } diff --git a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateType.cs b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateType.cs index e80c32061c479a..1954341b5a185a 100644 --- a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateType.cs +++ b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateType.cs @@ -40,7 +40,6 @@ public void CreateType(TypeAttributes attributes) [ActiveIssue("https://github.com/dotnet/runtime/issues/2389", TestRuntimes.Mono)] [InlineData(TypeAttributes.ClassSemanticsMask)] [InlineData(TypeAttributes.HasSecurity)] - [InlineData(TypeAttributes.LayoutMask)] [InlineData(TypeAttributes.NestedAssembly)] [InlineData(TypeAttributes.NestedFamANDAssem)] [InlineData(TypeAttributes.NestedFamily)] diff --git a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateTypeInfo.cs b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateTypeInfo.cs index 4cd639152480c6..43bf870b3015bc 100644 --- a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateTypeInfo.cs +++ b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderCreateTypeInfo.cs @@ -53,7 +53,6 @@ public void CreateType_GenericType() [ActiveIssue("https://github.com/dotnet/runtime/issues/2389", TestRuntimes.Mono)] [InlineData(TypeAttributes.ClassSemanticsMask, typeof(InvalidOperationException))] [InlineData(TypeAttributes.HasSecurity, typeof(ArgumentException))] - [InlineData(TypeAttributes.LayoutMask, typeof(ArgumentException))] [InlineData(TypeAttributes.NestedAssembly, typeof(ArgumentException))] [InlineData(TypeAttributes.NestedFamANDAssem, typeof(ArgumentException))] [InlineData(TypeAttributes.NestedFamily, typeof(ArgumentException))] diff --git a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs index 188d273a558389..d79eb65f96eab5 100644 --- a/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs +++ b/src/libraries/System.Reflection.Emit/tests/TypeBuilder/TypeBuilderDefineNestedType.cs @@ -155,8 +155,6 @@ public void DefineNestedType_LongName_ThrowsArgumentException() [InlineData(TypeAttributes.Public, "attr")] [InlineData(TypeAttributes.NotPublic, "attr")] [InlineData(TypeAttributes.Interface, "attr")] - [InlineData(TypeAttributes.LayoutMask, "attr")] - [InlineData(TypeAttributes.LayoutMask | TypeAttributes.Public, "attr")] [InlineData((TypeAttributes)0x00040800, "attr")] [InlineData((TypeAttributes)(-1), null)] [InlineData((TypeAttributes)(-5000), "attr")] diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs index f868de5f8584a3..d5087ac6eb41e1 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs @@ -158,6 +158,7 @@ public sealed override StructLayoutAttribute? StructLayoutAttribute TypeAttributes.ExplicitLayout => LayoutKind.Explicit, TypeAttributes.AutoLayout => LayoutKind.Auto, TypeAttributes.SequentialLayout => LayoutKind.Sequential, + TypeAttributes.ExtendedLayout => LayoutKind.Extended, _ => LayoutKind.Auto, }; CharSet charSet = (attributes & TypeAttributes.StringFormatMask) switch diff --git a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs index d4bb0566e0b595..8aa59110e4f0f7 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/CStruct.cs @@ -27,8 +27,8 @@ public static void NonBlittableUnmanagedPrimitiveFields_TreatedAsBlittable() var c = default(CStructNonBlittablePrimitiveFields); Assert.Equal(Unsafe.SizeOf(), Marshal.SizeOf()); Assert.Equal(4, Unsafe.SizeOf()); - Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.a))); - Assert.Equal(2, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); + Assert.Equal(0, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.b))); + Assert.Equal(2, Unsafe.ByteOffset(ref Unsafe.As(ref c), ref Unsafe.As(ref c.c))); } [Fact] From f6de91b51cd68616e5dd8cc06bb007671285f279 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 18 Jun 2025 19:14:24 -0700 Subject: [PATCH 24/34] PR feedback --- src/coreclr/md/compiler/regmeta_emit.cpp | 4 ---- .../src/System/Reflection/Emit/TypeBuilderImpl.cs | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/coreclr/md/compiler/regmeta_emit.cpp b/src/coreclr/md/compiler/regmeta_emit.cpp index 6c080048e37fbb..9f8926267cf12c 100644 --- a/src/coreclr/md/compiler/regmeta_emit.cpp +++ b/src/coreclr/md/compiler/regmeta_emit.cpp @@ -1816,10 +1816,6 @@ HRESULT RegMeta::_DefineTypeDef( // S_OK or error. ULONG ulStringLen; // Length of the TypeDef string. int bSuccess; // Return value for SplitPath(). - - - _ASSERTE(IsTdAutoLayout(dwTypeDefFlags) || IsTdSequentialLayout(dwTypeDefFlags) || IsTdExplicitLayout(dwTypeDefFlags) || IsTdExtendedLayout(dwTypeDefFlags)); - _ASSERTE(ptd); _ASSERTE(TypeFromToken(tkExtends) == mdtTypeRef || TypeFromToken(tkExtends) == mdtTypeDef || TypeFromToken(tkExtends) == mdtTypeSpec || IsNilToken(tkExtends)); diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs index 3e187d080f5d92..f4d1a339b0b1a4 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/TypeBuilderImpl.cs @@ -515,6 +515,7 @@ private void ParseStructLayoutAttribute(ConstructorInfo con, ReadOnlySpan LayoutKind.Auto => TypeAttributes.AutoLayout, LayoutKind.Explicit => TypeAttributes.ExplicitLayout, LayoutKind.Sequential => TypeAttributes.SequentialLayout, + LayoutKind.Extended => TypeAttributes.ExtendedLayout, _ => TypeAttributes.AutoLayout, }; From a6533bace663b3d1f1e15fb92d85eff59b82c6fb Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 18 Jun 2025 19:22:47 -0700 Subject: [PATCH 25/34] A few more adjustments --- .../Common/TypeSystem/Interop/IL/InlineArrayType.cs | 10 ++++++---- .../Reflection/TypeLoading/Types/RoDefinitionType.cs | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index e10f5a5233cdcb..5ee7b347bfe919 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -189,10 +189,12 @@ public InlineArrayType(ModuleDesc owningModule, MetadataType elementType, uint l public override ClassLayoutMetadata GetClassLayout() { - ClassLayoutMetadata result = default(ClassLayoutMetadata); - result.PackingSize = 0; - result.Size = checked((int)Length * ElementType.GetElementSize().AsInt); - return result; + return new ClassLayoutMetadata() + { + LayoutKind = MetadataLayoutKind.Sequential, + PackingSize = 0, + Size = checked((int)Length * ElementType.GetElementSize().AsInt), + }; } public override bool HasCustomAttribute(string attributeNamespace, string attributeName) diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs index d5087ac6eb41e1..4dfccfa5cd539f 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs @@ -143,6 +143,8 @@ public sealed override Guid GUID } } + private const LayoutKind LayoutKindExtended = (LayoutKind)1; + public sealed override StructLayoutAttribute? StructLayoutAttribute { get @@ -158,7 +160,7 @@ public sealed override StructLayoutAttribute? StructLayoutAttribute TypeAttributes.ExplicitLayout => LayoutKind.Explicit, TypeAttributes.AutoLayout => LayoutKind.Auto, TypeAttributes.SequentialLayout => LayoutKind.Sequential, - TypeAttributes.ExtendedLayout => LayoutKind.Extended, + TypeAttributes.ExtendedLayout => LayoutKindExtended, _ => LayoutKind.Auto, }; CharSet charSet = (attributes & TypeAttributes.StringFormatMask) switch From 608877212cdfd978636d0f3ebff6d7e7319afe0d Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 19 Jun 2025 10:10:17 -0700 Subject: [PATCH 26/34] More adjustments --- .../tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs | 2 +- .../src/System/Reflection/TypeAttributes.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs index 5ee7b347bfe919..e2e79e04917fc7 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/InlineArrayType.cs @@ -191,7 +191,7 @@ public override ClassLayoutMetadata GetClassLayout() { return new ClassLayoutMetadata() { - LayoutKind = MetadataLayoutKind.Sequential, + Kind = MetadataLayoutKind.Sequential, PackingSize = 0, Size = checked((int)Length * ElementType.GetElementSize().AsInt), }; diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs index d3ceede6cd5d71..555654de79739b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeAttributes.cs @@ -18,7 +18,6 @@ public enum TypeAttributes NestedFamORAssem = 0x00000007, // Class is nested with family or assembly visibility. // Use this mask to retrieve class layout information - // 0 is AutoLayout, 0x2 is SequentialLayout, 4 is ExplicitLayout LayoutMask = 0x00000018, AutoLayout = 0x00000000, // Class fields are auto-laid out SequentialLayout = 0x00000008, // Class fields are laid out sequentially From 9de3904fc9ffca172c22c5e1e90d7461171d8409 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 19 Jun 2025 14:34:25 -0700 Subject: [PATCH 27/34] Fix build failures. Add ildasm support for extended layout. --- src/coreclr/ildasm/dasm.cpp | 2 ++ .../TestMetadataFieldLayoutAlgorithm.cs | 15 ++++++++++----- .../TypeLoading/Types/RoDefinitionType.cs | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/coreclr/ildasm/dasm.cpp b/src/coreclr/ildasm/dasm.cpp index f6a9be411edea4..e8e7bfe0a7d52d 100644 --- a/src/coreclr/ildasm/dasm.cpp +++ b/src/coreclr/ildasm/dasm.cpp @@ -1133,6 +1133,7 @@ BOOL PrintClassList() if (IsTdAbstract(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(abstract) "); if (IsTdAutoLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(auto) "); if (IsTdSequentialLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(sequential) "); + if (IsTdExtendedLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(extended) "); if (IsTdExplicitLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(explicit) "); if (IsTdAnsiClass(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(ansi) "); if (IsTdUnicodeClass(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"(unicode) "); @@ -4684,6 +4685,7 @@ BOOL DumpClass(mdTypeDef cl, DWORD dwEntryPointToken, void* GUICookie, ULONG Wha if (IsTdAutoLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"auto "); if (IsTdSequentialLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"sequential "); if (IsTdExplicitLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"explicit "); + if (IsTdExtendedLayout(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"extended "); if (IsTdAnsiClass(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"ansi "); if (IsTdUnicodeClass(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"unicode "); if (IsTdAutoClass(dwClassAttrs)) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"autochar "); diff --git a/src/coreclr/tools/aot/ILCompiler.TypeSystem.Tests/TestMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.TypeSystem.Tests/TestMetadataFieldLayoutAlgorithm.cs index da423b43cb2803..737ff9ecdf2bdb 100644 --- a/src/coreclr/tools/aot/ILCompiler.TypeSystem.Tests/TestMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.TypeSystem.Tests/TestMetadataFieldLayoutAlgorithm.cs @@ -30,17 +30,22 @@ protected override void FinalizeRuntimeSpecificStaticFieldLayout(TypeSystemConte protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(MetadataType type, int numInstanceFields) { - if (type.IsExplicitLayout) + ClassLayoutMetadata layoutMetadata = type.GetClassLayout(); + if (layoutMetadata.Kind == MetadataLayoutKind.Explicit) { - return ComputeExplicitFieldLayout(type, numInstanceFields); + return ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata); } - else if (type.IsSequentialLayout || type.IsEnum) + else if (layoutMetadata.Kind == MetadataLayoutKind.Sequential || type.IsEnum) { - return ComputeSequentialFieldLayout(type, numInstanceFields); + return ComputeSequentialFieldLayout(type, numInstanceFields, layoutMetadata); + } + else if (layoutMetadata.Kind == MetadataLayoutKind.CStruct) + { + return ComputeCStructFieldLayout(type, numInstanceFields); } else { - return ComputeAutoFieldLayout(type, numInstanceFields); + return ComputeAutoFieldLayout(type, numInstanceFields, layoutMetadata); } } } diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs index 4dfccfa5cd539f..66a241e4eda1e2 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs @@ -143,6 +143,7 @@ public sealed override Guid GUID } } + private const TypeAttributes TypeAttributesExtendedLayout = (TypeAttributes)0x00000018; // TypeAttributes.ExtendedLayout private const LayoutKind LayoutKindExtended = (LayoutKind)1; public sealed override StructLayoutAttribute? StructLayoutAttribute @@ -160,7 +161,7 @@ public sealed override StructLayoutAttribute? StructLayoutAttribute TypeAttributes.ExplicitLayout => LayoutKind.Explicit, TypeAttributes.AutoLayout => LayoutKind.Auto, TypeAttributes.SequentialLayout => LayoutKind.Sequential, - TypeAttributes.ExtendedLayout => LayoutKindExtended, + TypeAttributesExtendedLayout => LayoutKindExtended, _ => LayoutKind.Auto, }; CharSet charSet = (attributes & TypeAttributes.StringFormatMask) switch From 50b4bfeb71eabcbbace9afad2192f5a3e75069a3 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 19 Jun 2025 16:53:13 -0700 Subject: [PATCH 28/34] Fix inherited layout types in NativeAOT --- .../Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs index cc43aeed588e97..37b69d2b117142 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/MetadataFieldLayoutAlgorithm.cs @@ -73,7 +73,7 @@ public override ComputedInstanceFieldLayout ComputeInstanceLayout(DefType defTyp } MetadataType baseType = type.MetadataBaseType; - if (!baseType.IsObject && !baseType.IsAutoLayout) + if (!baseType.IsObject && baseType.IsAutoLayout) { ThrowHelper.ThrowTypeLoadException(ExceptionStringID.ClassLoadBadFormat, type); } From 58cde8057bdddea55d22d56ae633f441ba7ee050 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 20 Jun 2025 02:05:54 +0000 Subject: [PATCH 29/34] Fix mono tests and align behavior for InlineArray+ExtendedLayout --- src/coreclr/vm/methodtablebuilder.cpp | 5 + src/mono/mono/metadata/class-init.c | 16 +++ src/mono/mono/metadata/marshal.c | 129 ++++++++++++------ .../ExtendedLayout/ExtendedLayout.cs | 4 +- .../ExtendedLayout/ExtendedLayoutTypes.il | 28 ++-- 5 files changed, 122 insertions(+), 60 deletions(-) diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 35c80c81e7509c..43349e4f907733 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -8766,6 +8766,11 @@ VOID MethodTableBuilder::HandleCStructLayout(MethodTable** pByValueClassCache) pByValueClassCache, bmtEnumFields->dwNumDeclaredFields ); + + if (bmtFP->NumInlineArrayElements != 0) + { + BuildMethodTableThrowException(IDS_CLASSLOAD_BADFORMAT); + } if (pLayoutInfo->IsZeroSized()) { diff --git a/src/mono/mono/metadata/class-init.c b/src/mono/mono/metadata/class-init.c index 3d12064aa34810..862414078a2003 100644 --- a/src/mono/mono/metadata/class-init.c +++ b/src/mono/mono/metadata/class-init.c @@ -748,6 +748,13 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError MONO_PROFILER_RAISE (class_failed, (klass)); return NULL; } + + if (klass->is_inlinearray) { + mono_class_set_type_load_failure (klass, "InlineArray type %s cannot have extended layout.", m_class_get_name (klass)); + mono_loader_unlock (); + MONO_PROFILER_RAISE (class_failed, (klass)); + return NULL; + } } } @@ -2485,6 +2492,13 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_ return; } + if (any_field_has_auto_layout) { + if (mono_class_set_type_load_failure (klass, "CStruct type cannot have AutoLayout fields.")) + return; + } + + klass->blittable = TRUE; + for (i = 0; i < top; i++){ gint32 align; guint32 size; @@ -2528,6 +2542,8 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_ mono_class_set_type_load_failure (klass, "Can't load type %s. The size is too big.", m_class_get_name (klass)); } + instance_size = real_size; + if (instance_size & (min_align - 1)) { instance_size += min_align - 1; instance_size &= ~(min_align - 1); diff --git a/src/mono/mono/metadata/marshal.c b/src/mono/mono/metadata/marshal.c index e6d7f80d8e7365..de74c6075888e5 100644 --- a/src/mono/mono/metadata/marshal.c +++ b/src/mono/mono/metadata/marshal.c @@ -5943,61 +5943,38 @@ mono_marshal_is_loading_type_info (MonoClass *klass) return g_slist_find (loads_list, klass) != NULL; } -/** - * mono_marshal_load_type_info: - * - * Initialize \c klass::marshal_info using information from metadata. This function can - * recursively call itself, and the caller is responsible to avoid that by calling - * \c mono_marshal_is_loading_type_info beforehand. - * - * LOCKING: Acquires the loader lock. - */ -MonoMarshalType * -mono_marshal_load_type_info (MonoClass* klass) +static void +mono_marshal_load_extended_layout_type_info(MonoClass* klass, MonoMarshalType* info) { - int j, count = 0; - guint32 native_size = 0, min_align = 1, packing, explicit_size = 0; - MonoMarshalType *info; + int j = 0; + gpointer iter = NULL; MonoClassField* field; - gpointer iter; - guint32 layout; - GSList *loads_list; - - g_assert (klass != NULL); - - info = mono_class_get_marshal_info (klass); - if (info) - return info; - - if (!m_class_is_inited (klass)) - mono_class_init_internal (klass); - - info = mono_class_get_marshal_info (klass); - if (info) - return info; - /* - * This function can recursively call itself, so we keep the list of classes which are - * under initialization in a TLS list. - */ - g_assert (!mono_marshal_is_loading_type_info (klass)); - loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id); - loads_list = g_slist_prepend (loads_list, klass); - mono_native_tls_set_value (load_type_info_tls_id, loads_list); - - iter = NULL; + info->native_size = mono_class_instance_size(klass) - MONO_ABI_SIZEOF (MonoObject); + info->min_align = mono_class_min_align(klass); + while ((field = mono_class_get_fields_internal (klass, &iter))) { if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) continue; + if (mono_field_is_deleted (field)) continue; - count++; + + info->fields [j].field = field; + info->fields [j].offset = mono_field_get_offset (field); } +} - layout = mono_class_get_flags (klass) & TYPE_ATTRIBUTE_LAYOUT_MASK; +static void +mono_marshal_load_standard_layout_type_info(MonoClass* klass, MonoMarshalType* info) +{ + int j; + guint32 native_size = 0, min_align = 1, packing, explicit_size = 0; + MonoClassField* field; + gpointer iter; + guint32 layout; - info = (MonoMarshalType *)mono_image_alloc0 (m_class_get_image (klass), MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count); - info->num_fields = count; + layout = mono_class_get_flags (klass) & TYPE_ATTRIBUTE_LAYOUT_MASK; /* Try to find a size for this type in metadata */ explicit_size = mono_metadata_packing_from_typedef (m_class_get_image (klass), m_class_get_type_token (klass), NULL, &native_size); @@ -6108,6 +6085,70 @@ mono_marshal_load_type_info (MonoClass* klass) if (m_class_get_rank (klass) && !mono_marshal_is_loading_type_info (m_class_get_element_class (klass))) { mono_marshal_load_type_info (m_class_get_element_class (klass)); } +} + +/** + * mono_marshal_load_type_info: + * + * Initialize \c klass::marshal_info using information from metadata. This function can + * recursively call itself, and the caller is responsible to avoid that by calling + * \c mono_marshal_is_loading_type_info beforehand. + * + * LOCKING: Acquires the loader lock. + */ +MonoMarshalType * +mono_marshal_load_type_info (MonoClass* klass) +{ + int count = 0; + MonoMarshalType *info; + MonoClassField* field; + gpointer iter; + guint32 layout; + GSList *loads_list; + + g_assert (klass != NULL); + + info = mono_class_get_marshal_info (klass); + if (info) + return info; + + if (!m_class_is_inited (klass)) + mono_class_init_internal (klass); + + info = mono_class_get_marshal_info (klass); + if (info) + return info; + + /* + * This function can recursively call itself, so we keep the list of classes which are + * under initialization in a TLS list. + */ + g_assert (!mono_marshal_is_loading_type_info (klass)); + loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id); + loads_list = g_slist_prepend (loads_list, klass); + mono_native_tls_set_value (load_type_info_tls_id, loads_list); + + iter = NULL; + while ((field = mono_class_get_fields_internal (klass, &iter))) { + if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) + continue; + if (mono_field_is_deleted (field)) + continue; + count++; + } + + info = (MonoMarshalType *)mono_image_alloc0 (m_class_get_image (klass), MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count); + info->num_fields = count; + + + layout = mono_class_get_flags (klass) & TYPE_ATTRIBUTE_LAYOUT_MASK; + + if (layout == TYPE_ATTRIBUTE_EXTENDED_LAYOUT) { + mono_marshal_load_extended_layout_type_info(klass, info); + } else { + mono_marshal_load_standard_layout_type_info(klass, info); + } + loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id); loads_list = g_slist_remove (loads_list, klass); diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs index f3214e20c28c18..f0d792564ee601 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayout.cs @@ -23,8 +23,8 @@ public static void ExtendedLayout_InvalidKind() } [Fact] - public static void ExtendedLayout_InlineArray_Ignored() + public static void ExtendedLayout_InlineArray_Invalid() { - Assert.Equal(sizeof(int), Unsafe.SizeOf()); + Assert.Throws(() => typeof(InlineArrayOnExtendedLayout)); } } diff --git a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il index f5bd99493d9b72..9e732db94a45c1 100644 --- a/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il +++ b/src/tests/Loader/classloader/ExtendedLayout/ExtendedLayoutTypes.il @@ -13,7 +13,7 @@ .class flags(0x18) public value beforefieldinit InlineArrayOnExtendedLayout { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -26,7 +26,7 @@ .class flags(0x18) public value beforefieldinit ExtendedLayoutInvalidKind { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(-2) // Unknown kind } @@ -37,7 +37,7 @@ .class flags(0x18) public value beforefieldinit CStructBlittablePrimitiveFields { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -48,7 +48,7 @@ .class flags(0x18) public value beforefieldinit CStructNonBlittablePrimitiveFields { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -58,7 +58,7 @@ .class flags(0x18) public value beforefieldinit CStructWithReferenceFields { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -67,7 +67,7 @@ .class flags(0x18) public value beforefieldinit CStructWithMixedFields { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -77,7 +77,7 @@ .class flags(0x18) public value beforefieldinit NestedCStructType { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } .field public int32 x @@ -85,7 +85,7 @@ .class flags(0x18) public value beforefieldinit CStructCustomCStructField { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -99,7 +99,7 @@ .class flags(0x18) public value beforefieldinit CStructCustomSeqStructField { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -113,7 +113,7 @@ .class flags(0x18) public value beforefieldinit CStructCustomAutoStructField { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -122,14 +122,14 @@ .class flags(0x18) public value beforefieldinit EmptyCStruct { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } } .class flags(0x18) public value beforefieldinit CStructWithOffsets { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -138,7 +138,7 @@ .class flags(0x18) public value beforefieldinit CStructWithSize { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } @@ -149,7 +149,7 @@ .class flags(0x18) public value beforefieldinit CStructWithPack { - .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(int32) = { + .custom instance void [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutAttribute::.ctor(valuetype [System.Runtime]System.Runtime.InteropServices.ExtendedLayoutKind) = { int32(0x00000000) // CStruct } From e3cea2359eb75c762d848db9bbc3bdd8774a2469 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 20 Jun 2025 04:40:04 +0000 Subject: [PATCH 30/34] Make CStruct types blittable in NAOT --- .../tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs index fcc954bc8f9846..7260d94abf7a27 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs @@ -29,6 +29,11 @@ public static bool IsBlittableType(TypeDesc type) var mdType = (MetadataType)type; + if (mdType.IsExtendedLayout) + { + return mdType.GetClassLayout().Kind is MetadataLayoutKind.CStruct; + } + if (!mdType.IsSequentialLayout && !mdType.IsExplicitLayout) { return false; From 1d3f493b816eb99c51a4fd27b6b609d193593220 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 19 Jun 2025 22:12:46 -0700 Subject: [PATCH 31/34] Update MarshalUtils.cs Co-authored-by: Jan Kotas --- src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs index 7260d94abf7a27..5abdfa1b65466a 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalUtils.cs @@ -34,7 +34,7 @@ public static bool IsBlittableType(TypeDesc type) return mdType.GetClassLayout().Kind is MetadataLayoutKind.CStruct; } - if (!mdType.IsSequentialLayout && !mdType.IsExplicitLayout) + if (mdType.IsAutoLayout) { return false; } From 21fbccfd6bed5a7ecbc28fafcc420df4b1b2a22f Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 1 Jul 2025 15:27:37 -0700 Subject: [PATCH 32/34] PR feedback and update augments doc --- docs/design/specs/Ecma-335-Augments.md | 43 ++++++++++++++++++ .../Common/InstantiatedType.Metadata.cs | 5 ++- .../tools/Common/TypeSystem/Ecma/EcmaType.cs | 5 ++- .../Interop/IL/PInvokeDelegateWrapper.cs | 5 ++- .../ReadyToRunMetadataFieldLayoutAlgorithm.cs | 45 ++++++++----------- src/coreclr/vm/methodtablebuilder.cpp | 11 ++++- 6 files changed, 83 insertions(+), 31 deletions(-) diff --git a/docs/design/specs/Ecma-335-Augments.md b/docs/design/specs/Ecma-335-Augments.md index 2f9ae5cb995cf8..1ad892d9a4b1f8 100644 --- a/docs/design/specs/Ecma-335-Augments.md +++ b/docs/design/specs/Ecma-335-Augments.md @@ -24,6 +24,7 @@ This is a list of additions and edits to be made in ECMA-335 specifications. It - [Creating arrays using newobj](#creating-arrays-using-newobj) - [API documentation](#api-documentation) - [Debug Interchange Format](#debug-interchange-format) +- [Extended layout](#extended-layout) ## Signatures @@ -1147,3 +1148,45 @@ The incorrect description of `System.Array.Initialize` API in section "II.13.2 I ## Debug Interchange Format The Debug Interchange Format described in partition V is superseded by the [Portable PDB Format](PortablePdb-Metadata.md). + +## Extended Layout + +In section I.9.5, the following layout rule is added: + +- **extendedlayout**: A class marked `extendedlayout` guides the loader to use a set of rules indicated by the first parameter to a custom attribute of type `System.Runtime.InteropServices.ExtendedLayoutAttribute` on the type. Each of these layouts may have restrictions on valid layouts. + +In section II.10.1, `extended` is added as a possible value for `ClassAttr`. + +In section II.10.1.2, `extended` is added as a type layout attribute, and the following entry is added in the list of layout attributes: + +- **extended**: The CLI shal lay out the files based on the rules indicated by the first parameter to a custom attribute of type `System.Runtime.InteropServices.ExtendedLayoutAttribute` on the type. + +In section II.10.7, the following clause is appended: + +The **.pack** and **.size** directives are not valid on a type marked with `extended`. + +In section II.22.8, the following diffs are applied: + +```diff +- The information held in the ClassLayout table depends upon the Flags value for {AutoLayout, SequentialLayout, ExplicitLayout} in the owner class or value type. +- A type has layout if it is marked SequentialLayout or ExplicitLayout. If any type within an inheritance chain has layout, then so shall all its base classes, up to the one that descends immediately from System.ValueType (if it exists in the type’s hierarchy); otherwise, from System.Object. ++ The information held in the ClassLayout table depends upon the Flags value for {AutoLayout, SequentialLayout, ExplicitLayout, ExtendedLayout} in the owner class or value type. ++ A type has layout if it is marked SequentialLayout or ExplicitLayout or ExtendedLayout. ++ A type with ExtendedLayout must immediately inherit from System.ValueType. ++ If any type within an inheritance chain has layout, then so shall all its base classes, up to the one that descends immediately from System.ValueType (if it exists in the type’s hierarchy); otherwise, from System.Object. +``` + +```diff +- 3. The Class or ValueType indexed by Parent shall be SequentialLayout or ExplicitLayout (§II.23.1.15). (That is, AutoLayout types shall not own any rows in the ClassLayout table.) [ERROR] ++ 3. The Class or ValueType indexed by Parent shall be SequentialLayout or ExplicitLayout (§II.23.1.15). (That is, AutoLayout and ExtendedLayout types shall not own any rows in the ClassLayout table.) [ERROR] +``` + +In section II.22.37, the following clause is removed: + +b. can set 0 or 1 of `SequentialLayout` and `ExplicitLayout` (if none set, then defaults to `AutoLayout`) [ERROR] + +In section II.23.1.15, the following row is added to the table: + +|-----|------|------| +| `ExtendedLayout` | 0x00000018 | Layout is supplied by a `System.Runtime.InteropServices.ExtendedLayoutAttribute` custom attribute | + diff --git a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs index 9119eb811e4492..296b8d2589fd36 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/InstantiatedType.Metadata.cs @@ -42,7 +42,10 @@ public override bool IsSequentialLayout public override bool IsExtendedLayout { - get => _typeDef.IsExtendedLayout; + get + { + return _typeDef.IsExtendedLayout; + } } public override bool IsAutoLayout diff --git a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs index 8a1d8af43f189b..c7f188fe4a39c9 100644 --- a/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs +++ b/src/coreclr/tools/Common/TypeSystem/Ecma/EcmaType.cs @@ -634,7 +634,10 @@ public override bool IsSequentialLayout public override bool IsExtendedLayout { - get => (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributesExtendedLayout; + get + { + return (_typeDefinition.Attributes & TypeAttributes.LayoutMask) == TypeAttributesExtendedLayout; + } } public override bool IsAutoLayout diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs index 6c9de1cbe69662..31c96e007e626d 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/PInvokeDelegateWrapper.cs @@ -84,7 +84,10 @@ public override bool IsSequentialLayout public override bool IsExtendedLayout { - get => false; + get + { + return false; + } } public override bool IsAutoLayout diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs index 3541316ffd412e..8b343e0b2d565e 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunMetadataFieldLayoutAlgorithm.cs @@ -608,35 +608,28 @@ protected override ComputedInstanceFieldLayout ComputeInstanceFieldLayout(Metada { ClassLayoutMetadata layoutMetadata = type.GetClassLayout(); MetadataLayoutKind layoutKind = layoutMetadata.Kind; - if (layoutKind == MetadataLayoutKind.CStruct) + switch (layoutKind) { - return ComputeCStructFieldLayout(type, numInstanceFields); - } - else if (layoutKind == MetadataLayoutKind.Explicit) - { - // Works around https://github.com/dotnet/runtime/issues/102868 - if (!type.IsValueType && - (type.MetadataBaseType is MetadataType baseType && baseType.IsSequentialLayout)) - { - ThrowHelper.ThrowTypeLoadException(type); - } + case MetadataLayoutKind.CStruct: + return ComputeCStructFieldLayout(type, numInstanceFields); + case MetadataLayoutKind.Explicit: + // Works around https://github.com/dotnet/runtime/issues/102868 + if (type is { IsValueType: false, MetadataBaseType.IsSequentialLayout: true }) + { + ThrowHelper.ThrowTypeLoadException(type); + } - return ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata); - } - else if (layoutKind == MetadataLayoutKind.Sequential && !type.ContainsGCPointers) - { - // Works around https://github.com/dotnet/runtime/issues/102868 - if (!type.IsValueType && - (type.MetadataBaseType is MetadataType baseType && baseType.IsExplicitLayout)) - { - ThrowHelper.ThrowTypeLoadException(type); - } + return ComputeExplicitFieldLayout(type, numInstanceFields, layoutMetadata); + case MetadataLayoutKind.Sequential when !type.ContainsGCPointers: + // Works around https://github.com/dotnet/runtime/issues/102868 + if (type is { IsValueType: false, MetadataBaseType.IsExplicitLayout: true }) + { + ThrowHelper.ThrowTypeLoadException(type); + } - return ComputeSequentialFieldLayout(type, numInstanceFields, layoutMetadata); - } - else - { - return ComputeAutoFieldLayout(type, numInstanceFields, layoutMetadata); + return ComputeSequentialFieldLayout(type, numInstanceFields, layoutMetadata); + default: + return ComputeAutoFieldLayout(type, numInstanceFields, layoutMetadata); } } diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 43349e4f907733..cb10952778ae67 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -8766,7 +8766,7 @@ VOID MethodTableBuilder::HandleCStructLayout(MethodTable** pByValueClassCache) pByValueClassCache, bmtEnumFields->dwNumDeclaredFields ); - + if (bmtFP->NumInlineArrayElements != 0) { BuildMethodTableThrowException(IDS_CLASSLOAD_BADFORMAT); @@ -12508,7 +12508,14 @@ BOOL HasLayoutMetadata(Assembly* pAssembly, IMDInternalImport* pInternalImport, pAssembly->ThrowTypeLoadException(pInternalImport, cl, IDS_CLASSLOAD_BADFORMAT); } - CorExtendedLayoutKind kind = (CorExtendedLayoutKind)GET_UNALIGNED_VAL32((byte*)pVal + 2); + CustomAttributeParser parser(pVal, cbVal); + + IfFailThrow(parser.ValidateProlog()); + + int32_t kindValue; + IfFailThrow(parser.GetI4(&kindValue)); + + CorExtendedLayoutKind kind = (CorExtendedLayoutKind)kindValue; if (kind == CorExtendedLayoutKind::CStruct) { From 7e78c1204ff80434d5cf482c139e7ffd1f7ccc84 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 2 Jul 2025 10:23:57 -0700 Subject: [PATCH 33/34] Update TFM to match NetCoreAppToolCurrent --- eng/Versions.props | 1 - src/coreclr/tools/ILVerification/ILVerification.csproj | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 66a896669bb0dc..5cf906a95e6daa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -122,7 +122,6 @@ 4.6.1 6.0.0 - 9.0.5 5.0.0 1.2.0-beta.556 5.0.0 diff --git a/src/coreclr/tools/ILVerification/ILVerification.csproj b/src/coreclr/tools/ILVerification/ILVerification.csproj index 15f67a7c070a4c..89687645741e3f 100644 --- a/src/coreclr/tools/ILVerification/ILVerification.csproj +++ b/src/coreclr/tools/ILVerification/ILVerification.csproj @@ -6,7 +6,7 @@ true false false - netstandard2.0 + $(NetCoreAppToolCurrent) true Open false @@ -16,6 +16,5 @@ - From 62ca1b5d63834c9458bdd76f5ab3ed496bd3a6cf Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 2 Jul 2025 15:58:09 -0700 Subject: [PATCH 34/34] Update pkgproj --- .../Microsoft.ILVerification.pkgproj | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/coreclr/.nuget/Microsoft.ILVerification/Microsoft.ILVerification.pkgproj b/src/coreclr/.nuget/Microsoft.ILVerification/Microsoft.ILVerification.pkgproj index c12b37b7745d5b..ff6db5d6b424d6 100644 --- a/src/coreclr/.nuget/Microsoft.ILVerification/Microsoft.ILVerification.pkgproj +++ b/src/coreclr/.nuget/Microsoft.ILVerification/Microsoft.ILVerification.pkgproj @@ -6,6 +6,7 @@ IL verification library. 9.0.0 - In the ILVerify.IResolver interface, the type of the first parameter of each method is now System.Reflection.Metadata.AssemblyNameInfo rather than System.Reflection.AssemblyName. + 10.0.0 - The ILVerification package now targets .NET 10.0 and later. @@ -15,13 +16,8 @@ - lib\netstandard2.0\ILVerification.dll + lib\$(NetCoreAppToolCurrent)\ILVerification.dll - - $(SystemReflectionMetadataVersion) - netstandard2.0 - Build,Analyzers -