diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index d586a3f13..63fe6f664 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -7,6 +7,7 @@ on:
- main
- dev/ruby31
- dev/ruby32
+ - dev/ruby34
- dev/actions
pull_request:
diff --git a/Build/SURubyDebugger.xcodeproj/project.pbxproj b/Build/SURubyDebugger.xcodeproj/project.pbxproj
index 6d52e1bb8..7cad197ea 100644
--- a/Build/SURubyDebugger.xcodeproj/project.pbxproj
+++ b/Build/SURubyDebugger.xcodeproj/project.pbxproj
@@ -29,7 +29,7 @@
F9D3F8552912B1E700BE62A9 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
- dstPath = "/Applications/SketchUp 2094/SketchUp.app/Contents/Frameworks";
+ dstPath = "$(SKETCHUP_APP_PATH)/Contents/Frameworks";
dstSubfolderSpec = 0;
files = (
F9D3F8562912B20000BE62A9 /* SURubyDebugger.dylib in CopyFiles */,
@@ -313,6 +313,7 @@
33CC241618D57AB80079FC3E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ARCHS = arm64;
CLANG_ENABLE_OBJC_WEAK = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -323,14 +324,16 @@
"$(SRCROOT)/../ThirdParty/include",
"$(SRCROOT)/../ThirdParty/include/ruby/mac",
);
- OTHER_CFLAGS = "-fdeclspec";
+ OTHER_CFLAGS = "-fdeclspec -Wno-enum-constexpr-conversion";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SKETCHUP_APP_PATH = "/Applications/SketchUp 2027/SketchUp.app";
};
name = Debug;
};
33CC241718D57AB80079FC3E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ARCHS = arm64;
CLANG_ENABLE_OBJC_WEAK = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -341,8 +344,9 @@
"$(SRCROOT)/../ThirdParty/include",
"$(SRCROOT)/../ThirdParty/include/ruby/mac",
);
- OTHER_CFLAGS = "-fdeclspec";
+ OTHER_CFLAGS = "-fdeclspec -Wno-enum-constexpr-conversion";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SKETCHUP_APP_PATH = "/Applications/SketchUp 2027/SketchUp.app";
};
name = Release;
};
diff --git a/DebugServer/DebugServer.vcxproj b/DebugServer/DebugServer.vcxproj
index df6344c8a..de79d167e 100644
--- a/DebugServer/DebugServer.vcxproj
+++ b/DebugServer/DebugServer.vcxproj
@@ -62,7 +62,7 @@
Windows
true
$(SolutionDir)../ThirdParty/lib/Debug/x64
- x64-ucrt-ruby320.lib;%(AdditionalDependencies)
+ x64-ucrt-ruby340.lib;%(AdditionalDependencies)
set TARGETDIR=$(TargetDir)
@@ -89,7 +89,7 @@ call $(SolutionDir)postbuild.bat
true
true
$(SolutionDir)../ThirdParty/lib/Release/x64
- x64-ucrt-ruby320.lib;%(AdditionalDependencies)
+ x64-ucrt-ruby340.lib;%(AdditionalDependencies)
set TARGETDIR=$(TargetDir)
diff --git a/DebugServer/Resource.rc b/DebugServer/Resource.rc
index 59ee0d09f..10ae9a8aa 100644
Binary files a/DebugServer/Resource.rc and b/DebugServer/Resource.rc differ
diff --git a/Development.md b/Development.md
index 32dde15e7..9d8dce28b 100644
--- a/Development.md
+++ b/Development.md
@@ -9,6 +9,12 @@
The binary will be located under: `Build/output/Build/Products/Release/SURubyDebugger.dylib`
+After building, the dylib is copied into the `Contents/Frameworks` directory of
+`SKETCHUP_APP_PATH`, which defaults to `/Applications/SketchUp 2027/SketchUp.app`.
+Override it to install into a different SketchUp, such as a local build:
+
+ xcodebuild -scheme SURubyDebugger -configuration Release SKETCHUP_APP_PATH="/path/to/SketchUp.app"
+
### Windows
TODO:
diff --git a/README.md b/README.md
index 36a102ee3..b047e2157 100644
--- a/README.md
+++ b/README.md
@@ -3,17 +3,17 @@ SketchUp Ruby API Debugger
This is a Ruby debugger framework for SketchUp 2014 and later. The `ruby-debug-ide` protocol has been mostly implemented so any Ruby IDE that supports this protocol should work.
-| IDE | Stable (1.2.0) | Stable (1.3.0) | Stable (1.4.0) | Stable (1.5.0) |
-| --- | --- | --- | --- | --- |
-| [RubyMine](https://github.com/SketchUp/sketchup-ruby-api-tutorials/wiki/RubyMine-Debugger-Setup) | *Untested* | Good | Good | Good |
-| [VS Code](https://github.com/SketchUp/sketchup-ruby-api-tutorials/wiki/VSCode-Debugger-Setup) (with `vscode-ruby` extension) | Not supported | Good | Good | Good |
+| IDE | Stable (1.2.0) | Stable (1.3.0) | Stable (1.4.0) | Stable (1.5.0) | Stable (1.6.0) |
+| --- | --- | --- | --- | --- | --- |
+| [RubyMine](https://github.com/SketchUp/sketchup-ruby-api-tutorials/wiki/RubyMine-Debugger-Setup) | *Untested* | Good | Good | Good | Good |
+| [VS Code](https://github.com/SketchUp/sketchup-ruby-api-tutorials/wiki/VSCode-Debugger-Setup) (with `vscode-ruby` extension) | Not supported | Good | Good | Good | *Untested* |
## Instructions for Windows:
- Download the pre-built dynamic library (SURubyDebugger.dll) from the [latest release](https://github.com/SketchUp/sketchup-ruby-debugger/releases) or build from the sources.
- Copy the DLL into the SketchUp installation directory. As the exact path will depend on the version of SketchUp you have installed, look for a folder similar to the following:
```
-C:\Program Files\SketchUp\SketchUp 2024\
+C:\Program Files\SketchUp\SketchUp 2027\
C:\Program Files (x86)\SketchUp\SketchUp 2015\
```
@@ -27,15 +27,15 @@ SketchUp.exe -rdebug "ide port=6123"
- Install SketchUp 2014 Maintenance 1 Release (version 14.1.1283) or later.
- Download `SURubyDebugger.dylib` into the Frameworks directory of the app bundle:
```
-curl -L https://github.com/SketchUp/sketchup-ruby-debugger/releases/download/1.5.0.0/SURubyDebugger.dylib -o /Applications/SketchUp\ 2024/SketchUp.app/Contents/Frameworks/SURubyDebugger.dylib
+curl -L https://github.com/SketchUp/sketchup-ruby-debugger/releases/download/1.6.0.0/SURubyDebugger.dylib -o /Applications/SketchUp\ 2027/SketchUp.app/Contents/Frameworks/SURubyDebugger.dylib
```
- Run SketchUp from the command line:
```
-/Applications/SketchUp\ 2024/SketchUp.app/Contents/MacOS/SketchUp -rdebug "ide port=6123"
+/Applications/SketchUp\ 2027/SketchUp.app/Contents/MacOS/SketchUp -rdebug "ide port=6123"
```
Alternatively:
```
-open -a /Applications/SketchUp\ 2024/SketchUp.app --args -rdebug "ide port=6123"
+open -a /Applications/SketchUp\ 2027/SketchUp.app --args -rdebug "ide port=6123"
```
## Known Issues
diff --git a/ThirdParty/include/ruby/mac/arm64-darwin/rb_mjit_min_header-3.2.2.h b/ThirdParty/include/ruby/mac/arm64-darwin/rb_mjit_min_header-3.2.2.h
deleted file mode 100644
index c6776a7f3..000000000
--- a/ThirdParty/include/ruby/mac/arm64-darwin/rb_mjit_min_header-3.2.2.h
+++ /dev/null
@@ -1,24734 +0,0 @@
-#ifdef __GNUC__
-# pragma GCC system_header
-#endif
-
-
-
-
-#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
-
-
-
-
-
-
-
-
-
-
-typedef __builtin_va_list va_list;
-typedef __builtin_va_list __gnuc_va_list;
-
-
-
-
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef short __int16_t;
-typedef unsigned short __uint16_t;
-typedef int __int32_t;
-typedef unsigned int __uint32_t;
-typedef long long __int64_t;
-typedef unsigned long long __uint64_t;
-typedef long __darwin_intptr_t;
-typedef unsigned int __darwin_natural_t;
-typedef int __darwin_ct_rune_t;
-typedef union {
- char __mbstate8[128];
- long long _mbstateL;
-} __mbstate_t;
-typedef __mbstate_t __darwin_mbstate_t;
-typedef long int __darwin_ptrdiff_t;
-typedef long unsigned int __darwin_size_t;
-typedef __builtin_va_list __darwin_va_list;
-typedef int __darwin_wchar_t;
-typedef __darwin_wchar_t __darwin_rune_t;
-typedef int __darwin_wint_t;
-typedef unsigned long __darwin_clock_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef long __darwin_ssize_t;
-typedef long __darwin_time_t;
-typedef __int64_t __darwin_blkcnt_t;
-typedef __int32_t __darwin_blksize_t;
-typedef __int32_t __darwin_dev_t;
-typedef unsigned int __darwin_fsblkcnt_t;
-typedef unsigned int __darwin_fsfilcnt_t;
-typedef __uint32_t __darwin_gid_t;
-typedef __uint32_t __darwin_id_t;
-typedef __uint64_t __darwin_ino64_t;
-typedef __darwin_ino64_t __darwin_ino_t;
-typedef __darwin_natural_t __darwin_mach_port_name_t;
-typedef __darwin_mach_port_name_t __darwin_mach_port_t;
-typedef __uint16_t __darwin_mode_t;
-typedef __int64_t __darwin_off_t;
-typedef __int32_t __darwin_pid_t;
-typedef __uint32_t __darwin_sigset_t;
-typedef __int32_t __darwin_suseconds_t;
-typedef __uint32_t __darwin_uid_t;
-typedef __uint32_t __darwin_useconds_t;
-typedef unsigned char __darwin_uuid_t[16];
-typedef char __darwin_uuid_string_t[37];
-struct __darwin_pthread_handler_rec {
- void (*__routine)(void *);
- void *__arg;
- struct __darwin_pthread_handler_rec *__next;
-};
-struct _opaque_pthread_attr_t {
- long __sig;
- char __opaque[56];
-};
-struct _opaque_pthread_cond_t {
- long __sig;
- char __opaque[40];
-};
-struct _opaque_pthread_condattr_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_mutex_t {
- long __sig;
- char __opaque[56];
-};
-struct _opaque_pthread_mutexattr_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_once_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_rwlock_t {
- long __sig;
- char __opaque[192];
-};
-struct _opaque_pthread_rwlockattr_t {
- long __sig;
- char __opaque[16];
-};
-struct _opaque_pthread_t {
- long __sig;
- struct __darwin_pthread_handler_rec *__cleanup_stack;
- char __opaque[8176];
-};
-typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t;
-typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t;
-typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t;
-typedef unsigned long __darwin_pthread_key_t;
-typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t;
-typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t;
-typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
-typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t;
-typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t;
-typedef struct _opaque_pthread_t *__darwin_pthread_t;
-typedef int __darwin_nl_item;
-typedef int __darwin_wctrans_t;
-typedef __uint32_t __darwin_wctype_t;
-typedef signed char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-
-typedef unsigned char u_int8_t;
-typedef unsigned short u_int16_t;
-typedef unsigned int u_int32_t;
-typedef unsigned long long u_int64_t;
-typedef int64_t register_t;
-
-typedef __darwin_intptr_t intptr_t;
-typedef unsigned long uintptr_t;
-typedef u_int64_t user_addr_t;
-typedef u_int64_t user_size_t;
-typedef int64_t user_ssize_t;
-typedef int64_t user_long_t;
-typedef u_int64_t user_ulong_t;
-typedef int64_t user_time_t;
-typedef int64_t user_off_t;
-typedef u_int64_t syscall_arg_t;
-typedef __darwin_va_list va_list;
-typedef __darwin_size_t size_t;
-
-int renameat(int, const char *, int, const char *) __attribute__((availability(macosx,introduced=10.10)));
-int renamex_np(const char *, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int renameatx_np(int, const char *, int, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-
-typedef __darwin_off_t fpos_t;
-struct __sbuf {
- unsigned char *_base;
- int _size;
-};
-struct __sFILEX;
-typedef struct __sFILE {
- unsigned char *_p;
- int _r;
- int _w;
- short _flags;
- short _file;
- struct __sbuf _bf;
- int _lbfsize;
- void *_cookie;
- int (* _Nullable _close)(void *);
- int (* _Nullable _read) (void *, char *, int);
- fpos_t (* _Nullable _seek) (void *, fpos_t, int);
- int (* _Nullable _write)(void *, const char *, int);
- struct __sbuf _ub;
- struct __sFILEX *_extra;
- int _ur;
- unsigned char _ubuf[3];
- unsigned char _nbuf[1];
- struct __sbuf _lb;
- int _blksize;
- fpos_t _offset;
-} FILE;
-extern FILE *__stdinp;
-extern FILE *__stdoutp;
-extern FILE *__stderrp;
-void clearerr(FILE *);
-int fclose(FILE *);
-int feof(FILE *);
-int ferror(FILE *);
-int fflush(FILE *);
-int fgetc(FILE *);
-int fgetpos(FILE * __restrict__, fpos_t *);
-char *fgets(char * __restrict__, int, FILE *);
-FILE *fopen(const char * __restrict__ __filename, const char * __restrict__ __mode) __asm("_" "fopen" "$DARWIN_EXTSN");
-int fprintf(FILE * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-int fputc(int, FILE *);
-int fputs(const char * __restrict__, FILE * __restrict__) __asm("_" "fputs" );
-size_t fread(void * __restrict__ __ptr, size_t __size, size_t __nitems, FILE * __restrict__ __stream);
-FILE *freopen(const char * __restrict__, const char * __restrict__,
- FILE * __restrict__) __asm("_" "freopen" );
-int fscanf(FILE * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 2, 3)));
-int fseek(FILE *, long, int);
-int fsetpos(FILE *, const fpos_t *);
-long ftell(FILE *);
-size_t fwrite(const void * __restrict__ __ptr, size_t __size, size_t __nitems, FILE * __restrict__ __stream) __asm("_" "fwrite" );
-int getc(FILE *);
-int getchar(void);
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of gets(3), it is highly recommended that you use fgets(3) instead.")))
-char *gets(char *);
-void perror(const char *) __attribute__((__cold__));
-int printf(const char * __restrict__, ...) __attribute__((__format__ (__printf__, 1, 2)));
-int putc(int, FILE *);
-int putchar(int);
-int puts(const char *);
-int remove(const char *);
-int rename (const char *__old, const char *__new);
-void rewind(FILE *);
-int scanf(const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 1, 2)));
-void setbuf(FILE * __restrict__, char * __restrict__);
-int setvbuf(FILE * __restrict__, char * __restrict__, int, size_t);
-__attribute__((__availability__(swift, unavailable, message="Use snprintf instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")))
-int sprintf(char * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-int sscanf(const char * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 2, 3)));
-FILE *tmpfile(void);
-__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *tmpnam(char *);
-int ungetc(int, FILE *);
-int vfprintf(FILE * __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-int vprintf(const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 1, 0)));
-__attribute__((__availability__(swift, unavailable, message="Use vsnprintf instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use vsnprintf(3) instead.")))
-int vsprintf(char * __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-char *ctermid(char *);
-FILE *fdopen(int, const char *) __asm("_" "fdopen" "$DARWIN_EXTSN");
-int fileno(FILE *);
-int pclose(FILE *) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")));
-FILE *popen(const char *, const char *) __asm("_" "popen" "$DARWIN_EXTSN") __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")));
-int __srget(FILE *);
-int __svfscanf(FILE *, const char *, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-int __swbuf(int, FILE *);
-inline __attribute__ ((__always_inline__)) int __sputc(int _c, FILE *_p) {
- if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
- return (*_p->_p++ = _c);
- else
- return (__swbuf(_c, _p));
-}
-void flockfile(FILE *);
-int ftrylockfile(FILE *);
-void funlockfile(FILE *);
-int getc_unlocked(FILE *);
-int getchar_unlocked(void);
-int putc_unlocked(int, FILE *);
-int putchar_unlocked(int);
-int getw(FILE *);
-int putw(int, FILE *);
-__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *tempnam(const char *__dir, const char *__prefix) __asm("_" "tempnam" );
-typedef __darwin_off_t off_t;
-int fseeko(FILE * __stream, off_t __offset, int __whence);
-off_t ftello(FILE * __stream);
-int snprintf(char * __restrict__ __str, size_t __size, const char * __restrict__ __format, ...) __attribute__((__format__ (__printf__, 3, 4)));
-int vfscanf(FILE * __restrict__ __stream, const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-int vscanf(const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 1, 0)));
-int vsnprintf(char * __restrict__ __str, size_t __size, const char * __restrict__ __format, va_list) __attribute__((__format__ (__printf__, 3, 0)));
-int vsscanf(const char * __restrict__ __str, const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-typedef __darwin_ssize_t ssize_t;
-int dprintf(int, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((availability(macosx,introduced=10.7)));
-int vdprintf(int, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((availability(macosx,introduced=10.7)));
-ssize_t getdelim(char ** __restrict__ __linep, size_t * __restrict__ __linecapp, int __delimiter, FILE * __restrict__ __stream) __attribute__((availability(macosx,introduced=10.7)));
-ssize_t getline(char ** __restrict__ __linep, size_t * __restrict__ __linecapp, FILE * __restrict__ __stream) __attribute__((availability(macosx,introduced=10.7)));
-FILE *fmemopen(void * __restrict__ __buf, size_t __size, const char * __restrict__ __mode) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-FILE *open_memstream(char **__bufp, size_t *__sizep) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-extern const int sys_nerr;
-extern const char *const sys_errlist[];
-int asprintf(char ** __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-char *ctermid_r(char *);
-char *fgetln(FILE *, size_t *);
-const char *fmtcheck(const char *, const char *) __attribute__((format_arg(2)));
-int fpurge(FILE *);
-void setbuffer(FILE *, char *, int);
-int setlinebuf(FILE *);
-int vasprintf(char ** __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-FILE *funopen(const void *,
- int (* _Nullable)(void *, char *, int),
- int (* _Nullable)(void *, const char *, int),
- fpos_t (* _Nullable)(void *, fpos_t, int),
- int (* _Nullable)(void *));
-extern int __sprintf_chk (char * __restrict__, int, size_t,
- const char * __restrict__, ...);
-extern int __snprintf_chk (char * __restrict__, size_t, int, size_t,
- const char * __restrict__, ...);
-extern int __vsprintf_chk (char * __restrict__, int, size_t,
- const char * __restrict__, va_list);
-extern int __vsnprintf_chk (char * __restrict__, size_t, int, size_t,
- const char * __restrict__, va_list);
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef int8_t int_least8_t;
-typedef int16_t int_least16_t;
-typedef int32_t int_least32_t;
-typedef int64_t int_least64_t;
-typedef uint8_t uint_least8_t;
-typedef uint16_t uint_least16_t;
-typedef uint32_t uint_least32_t;
-typedef uint64_t uint_least64_t;
-typedef int8_t int_fast8_t;
-typedef int16_t int_fast16_t;
-typedef int32_t int_fast32_t;
-typedef int64_t int_fast64_t;
-typedef uint8_t uint_fast8_t;
-typedef uint16_t uint_fast16_t;
-typedef uint32_t uint_fast32_t;
-typedef uint64_t uint_fast64_t;
-typedef long int intmax_t;
-typedef long unsigned int uintmax_t;
-static inline
-uint16_t
-_OSSwapInt16(
- uint16_t _data
- )
-{
- return (uint16_t)(_data << 8 | _data >> 8);
-}
-static inline
-uint32_t
-_OSSwapInt32(
- uint32_t _data
- )
-{
- _data = __builtin_bswap32(_data);
- return _data;
-}
-static inline
-uint64_t
-_OSSwapInt64(
- uint64_t _data
- )
-{
- return __builtin_bswap64(_data);
-}
-struct _OSUnalignedU16 {
- volatile uint16_t __val;
-} __attribute__((__packed__));
-struct _OSUnalignedU32 {
- volatile uint32_t __val;
-} __attribute__((__packed__));
-struct _OSUnalignedU64 {
- volatile uint64_t __val;
-} __attribute__((__packed__));
-static inline
-uint16_t
-_OSReadSwapInt16(
- const volatile void * _base,
- uintptr_t _offset
- )
-{
- return _OSSwapInt16(((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val);
-}
-static inline
-uint32_t
-_OSReadSwapInt32(
- const volatile void * _base,
- uintptr_t _offset
- )
-{
- return _OSSwapInt32(((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val);
-}
-static inline
-uint64_t
-_OSReadSwapInt64(
- const volatile void * _base,
- uintptr_t _offset
- )
-{
- return _OSSwapInt64(((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val);
-}
-static inline
-void
-_OSWriteSwapInt16(
- volatile void * _base,
- uintptr_t _offset,
- uint16_t _data
- )
-{
- ((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt16(_data);
-}
-static inline
-void
-_OSWriteSwapInt32(
- volatile void * _base,
- uintptr_t _offset,
- uint32_t _data
- )
-{
- ((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt32(_data);
-}
-static inline
-void
-_OSWriteSwapInt64(
- volatile void * _base,
- uintptr_t _offset,
- uint64_t _data
- )
-{
- ((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt64(_data);
-}
-
-typedef unsigned char u_char;
-typedef unsigned short u_short;
-typedef unsigned int u_int;
-
-typedef unsigned long u_long;
-typedef unsigned short ushort;
-typedef unsigned int uint;
-typedef u_int64_t u_quad_t;
-typedef int64_t quad_t;
-typedef quad_t * qaddr_t;
-typedef char * caddr_t;
-
-typedef int32_t daddr_t;
-typedef __darwin_dev_t dev_t;
-
-typedef u_int32_t fixpt_t;
-typedef __darwin_blkcnt_t blkcnt_t;
-typedef __darwin_blksize_t blksize_t;
-typedef __darwin_gid_t gid_t;
-typedef __uint32_t in_addr_t;
-typedef __uint16_t in_port_t;
-typedef __darwin_ino_t ino_t;
-typedef __darwin_ino64_t ino64_t;
-typedef __int32_t key_t;
-typedef __darwin_mode_t mode_t;
-typedef __uint16_t nlink_t;
-typedef __darwin_id_t id_t;
-typedef __darwin_pid_t pid_t;
-typedef int32_t segsz_t;
-typedef int32_t swblk_t;
-typedef __darwin_uid_t uid_t;
-typedef __darwin_clock_t clock_t;
-typedef __darwin_time_t time_t;
-
-typedef __darwin_useconds_t useconds_t;
-typedef __darwin_suseconds_t suseconds_t;
-typedef __darwin_size_t rsize_t;
-typedef int errno_t;
-typedef struct fd_set {
- __int32_t fds_bits[((((1024) % ((sizeof(__int32_t) * 8))) == 0) ? ((1024) / ((sizeof(__int32_t) * 8))) : (((1024) / ((sizeof(__int32_t) * 8))) + 1))];
-} fd_set;
-int __darwin_check_fd_set_overflow(int, const void *, int) __attribute__((availability(macosx,introduced=11.0))) __attribute__((availability(ios,introduced=14.0))) __attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) int
-__darwin_check_fd_set(int _a, const void *_b)
-{
- if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) {
- return __darwin_check_fd_set_overflow(_a, _b, 1);
- } else {
- return 1;
- }
-}
-inline __attribute__ ((__always_inline__)) int
-__darwin_fd_isset(int _fd, const struct fd_set *_p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- return _p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] & ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8))));
- }
- return 0;
-}
-inline __attribute__ ((__always_inline__)) void
-__darwin_fd_set(int _fd, struct fd_set *const _p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] |= ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8)))));
- }
-}
-inline __attribute__ ((__always_inline__)) void
-__darwin_fd_clr(int _fd, struct fd_set *const _p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] &= ~((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8)))));
- }
-}
-
-typedef __int32_t fd_mask;
-typedef __darwin_pthread_attr_t pthread_attr_t;
-typedef __darwin_pthread_cond_t pthread_cond_t;
-typedef __darwin_pthread_condattr_t pthread_condattr_t;
-typedef __darwin_pthread_mutex_t pthread_mutex_t;
-typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;
-typedef __darwin_pthread_once_t pthread_once_t;
-typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
-typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
-typedef __darwin_pthread_t pthread_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-typedef __darwin_fsblkcnt_t fsblkcnt_t;
-typedef __darwin_fsfilcnt_t fsfilcnt_t;
-struct timespec
-{
- __darwin_time_t tv_sec;
- long tv_nsec;
-};
-struct ostat {
- __uint16_t st_dev;
- ino_t st_ino;
- mode_t st_mode;
- nlink_t st_nlink;
- __uint16_t st_uid;
- __uint16_t st_gid;
- __uint16_t st_rdev;
- __int32_t st_size;
- struct timespec st_atimespec;
- struct timespec st_mtimespec;
- struct timespec st_ctimespec;
- __int32_t st_blksize;
- __int32_t st_blocks;
- __uint32_t st_flags;
- __uint32_t st_gen;
-};
-struct stat { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };
-int chmod(const char *, mode_t) __asm("_" "chmod" );
-int fchmod(int, mode_t) __asm("_" "fchmod" );
-int fstat(int, struct stat *) __asm("_" "fstat" );
-int lstat(const char *, struct stat *) __asm("_" "lstat" );
-int mkdir(const char *, mode_t);
-int mkfifo(const char *, mode_t);
-int stat(const char *, struct stat *) __asm("_" "stat" );
-int mknod(const char *, mode_t, dev_t);
-mode_t umask(mode_t);
-int fchmodat(int, const char *, mode_t, int) __attribute__((availability(macosx,introduced=10.10)));
-int fstatat(int, const char *, struct stat *, int) __asm("_" "fstatat" ) __attribute__((availability(macosx,introduced=10.10)));
-int mkdirat(int, const char *, mode_t) __attribute__((availability(macosx,introduced=10.10)));
-int mkfifoat(int, const char *, mode_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int mknodat(int, const char *, mode_t, dev_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int futimens(int __fd, const struct timespec __times[2]) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int utimensat(int __fd, const char *__path, const struct timespec __times[2],
- int __flag) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-struct _filesec;
-typedef struct _filesec *filesec_t;
-
-int chflags(const char *, __uint32_t);
-int chmodx_np(const char *, filesec_t);
-int fchflags(int, __uint32_t);
-int fchmodx_np(int, filesec_t);
-int fstatx_np(int, struct stat *, filesec_t) __asm("_" "fstatx_np" );
-int lchflags(const char *, __uint32_t) __attribute__((availability(macosx,introduced=10.5)));
-int lchmod(const char *, mode_t) __attribute__((availability(macosx,introduced=10.5)));
-int lstatx_np(const char *, struct stat *, filesec_t) __asm("_" "lstatx_np" );
-int mkdirx_np(const char *, filesec_t);
-int mkfifox_np(const char *, filesec_t);
-int statx_np(const char *, struct stat *, filesec_t) __asm("_" "statx_np" );
-int umaskx_np(filesec_t) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)));
-typedef enum {
- P_ALL,
- P_PID,
- P_PGID
-} idtype_t;
-typedef int sig_atomic_t;
-
-struct __darwin_arm_exception_state
-{
- __uint32_t __exception;
- __uint32_t __fsr;
- __uint32_t __far;
-};
-struct __darwin_arm_exception_state64
-{
- __uint64_t __far;
- __uint32_t __esr;
- __uint32_t __exception;
-};
-struct __darwin_arm_thread_state
-{
- __uint32_t __r[13];
- __uint32_t __sp;
- __uint32_t __lr;
- __uint32_t __pc;
- __uint32_t __cpsr;
-};
-struct __darwin_arm_thread_state64
-{
- __uint64_t __x[29];
- __uint64_t __fp;
- __uint64_t __lr;
- __uint64_t __sp;
- __uint64_t __pc;
- __uint32_t __cpsr;
- __uint32_t __pad;
-};
-struct __darwin_arm_vfp_state
-{
- __uint32_t __r[64];
- __uint32_t __fpscr;
-};
-struct __darwin_arm_neon_state64
-{
- __uint128_t __v[32];
- __uint32_t __fpsr;
- __uint32_t __fpcr;
-};
-struct __darwin_arm_neon_state
-{
- __uint128_t __v[16];
- __uint32_t __fpsr;
- __uint32_t __fpcr;
-};
-struct __arm_pagein_state
-{
- int __pagein_error;
-};
-struct __arm_legacy_debug_state
-{
- __uint32_t __bvr[16];
- __uint32_t __bcr[16];
- __uint32_t __wvr[16];
- __uint32_t __wcr[16];
-};
-struct __darwin_arm_debug_state32
-{
- __uint32_t __bvr[16];
- __uint32_t __bcr[16];
- __uint32_t __wvr[16];
- __uint32_t __wcr[16];
- __uint64_t __mdscr_el1;
-};
-struct __darwin_arm_debug_state64
-{
- __uint64_t __bvr[16];
- __uint64_t __bcr[16];
- __uint64_t __wvr[16];
- __uint64_t __wcr[16];
- __uint64_t __mdscr_el1;
-};
-struct __darwin_arm_cpmu_state64
-{
- __uint64_t __ctrs[16];
-};
-struct __darwin_mcontext32
-{
- struct __darwin_arm_exception_state __es;
- struct __darwin_arm_thread_state __ss;
- struct __darwin_arm_vfp_state __fs;
-};
-struct __darwin_mcontext64
-{
- struct __darwin_arm_exception_state64 __es;
- struct __darwin_arm_thread_state64 __ss;
- struct __darwin_arm_neon_state64 __ns;
-};
-typedef struct __darwin_mcontext64 *mcontext_t;
-struct __darwin_sigaltstack
-{
- void *ss_sp;
- __darwin_size_t ss_size;
- int ss_flags;
-};
-typedef struct __darwin_sigaltstack stack_t;
-struct __darwin_ucontext
-{
- int uc_onstack;
- __darwin_sigset_t uc_sigmask;
- struct __darwin_sigaltstack uc_stack;
- struct __darwin_ucontext *uc_link;
- __darwin_size_t uc_mcsize;
- struct __darwin_mcontext64 *uc_mcontext;
- struct __darwin_mcontext64 __mcontext_data;
-};
-typedef struct __darwin_ucontext ucontext_t;
-typedef __darwin_sigset_t sigset_t;
-union sigval {
- int sival_int;
- void *sival_ptr;
-};
-struct sigevent {
- int sigev_notify;
- int sigev_signo;
- union sigval sigev_value;
- void (*sigev_notify_function)(union sigval);
- pthread_attr_t *sigev_notify_attributes;
-};
-typedef struct __siginfo {
- int si_signo;
- int si_errno;
- int si_code;
- pid_t si_pid;
- uid_t si_uid;
- int si_status;
- void *si_addr;
- union sigval si_value;
- long si_band;
- unsigned long __pad[7];
-} siginfo_t;
-union __sigaction_u {
- void (*__sa_handler)(int);
- void (*__sa_sigaction)(int, struct __siginfo *,
- void *);
-};
-struct __sigaction {
- union __sigaction_u __sigaction_u;
- void (*sa_tramp)(void *, int, int, siginfo_t *, void *);
- sigset_t sa_mask;
- int sa_flags;
-};
-struct sigaction {
- union __sigaction_u __sigaction_u;
- sigset_t sa_mask;
- int sa_flags;
-};
-typedef void (*sig_t)(int);
-struct sigvec {
- void (*sv_handler)(int);
- int sv_mask;
- int sv_flags;
-};
-struct sigstack {
- char *ss_sp;
- int ss_onstack;
-};
- void(*signal(int, void (*)(int)))(int);
-struct timeval
-{
- __darwin_time_t tv_sec;
- __darwin_suseconds_t tv_usec;
-};
-typedef __uint64_t rlim_t;
-struct rusage {
- struct timeval ru_utime;
- struct timeval ru_stime;
- long ru_maxrss;
- long ru_ixrss;
- long ru_idrss;
- long ru_isrss;
- long ru_minflt;
- long ru_majflt;
- long ru_nswap;
- long ru_inblock;
- long ru_oublock;
- long ru_msgsnd;
- long ru_msgrcv;
- long ru_nsignals;
- long ru_nvcsw;
- long ru_nivcsw;
-};
-typedef void *rusage_info_t;
-struct rusage_info_v0 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
-};
-struct rusage_info_v1 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
-};
-struct rusage_info_v2 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
-};
-struct rusage_info_v3 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
-};
-struct rusage_info_v4 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
-};
-struct rusage_info_v5 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
- uint64_t ri_flags;
-};
-struct rusage_info_v6 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
- uint64_t ri_flags;
- uint64_t ri_user_ptime;
- uint64_t ri_system_ptime;
- uint64_t ri_pinstructions;
- uint64_t ri_pcycles;
- uint64_t ri_energy_nj;
- uint64_t ri_penergy_nj;
- uint64_t ri_reserved[14];
-};
-typedef struct rusage_info_v6 rusage_info_current;
-struct rlimit {
- rlim_t rlim_cur;
- rlim_t rlim_max;
-};
-struct proc_rlimit_control_wakeupmon {
- uint32_t wm_flags;
- int32_t wm_rate;
-};
-int getpriority(int, id_t);
-int getiopolicy_np(int, int) __attribute__((availability(macosx,introduced=10.5)));
-int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" );
-int getrusage(int, struct rusage *);
-int setpriority(int, id_t, int);
-int setiopolicy_np(int, int, int) __attribute__((availability(macosx,introduced=10.5)));
-int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" );
-union wait {
- int w_status;
- struct {
- unsigned int w_Termsig:7,
- w_Coredump:1,
- w_Retcode:8,
- w_Filler:16;
- } w_T;
- struct {
- unsigned int w_Stopval:8,
- w_Stopsig:8,
- w_Filler:16;
- } w_S;
-};
-pid_t wait(int *) __asm("_" "wait" );
-pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" );
-int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" );
-pid_t wait3(int *, int, struct rusage *);
-pid_t wait4(pid_t, int *, int, struct rusage *);
-
-void *alloca(size_t);
-typedef __darwin_ct_rune_t ct_rune_t;
-typedef __darwin_rune_t rune_t;
-typedef __darwin_wchar_t wchar_t;
-
-typedef struct {
- int quot;
- int rem;
-} div_t;
-typedef struct {
- long quot;
- long rem;
-} ldiv_t;
-typedef struct {
- long long quot;
- long long rem;
-} lldiv_t;
-extern int __mb_cur_max;
-void *malloc(size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1)));
-void *calloc(size_t __count, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1,2)));
-void free(void *);
-void *realloc(void *__ptr, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(2)));
-void *valloc(size_t) __attribute__((alloc_size(1)));
-void *aligned_alloc(size_t __alignment, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(2))) __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)));
-int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((availability(macosx,introduced=10.6)));
-void abort(void) __attribute__((__cold__)) __attribute__((__noreturn__));
-int abs(int) __attribute__((__const__));
-int atexit(void (* _Nonnull)(void));
-double atof(const char *);
-int atoi(const char *);
-long atol(const char *);
-long long
- atoll(const char *);
-void *bsearch(const void *__key, const void *__base, size_t __nel,
- size_t __width, int (* _Nonnull __compar)(const void *, const void *));
-div_t div(int, int) __attribute__((__const__));
-void exit(int) __attribute__((__noreturn__));
-char *getenv(const char *);
-long labs(long) __attribute__((__const__));
-ldiv_t ldiv(long, long) __attribute__((__const__));
-long long
- llabs(long long);
-lldiv_t lldiv(long long, long long);
-int mblen(const char *__s, size_t __n);
-size_t mbstowcs(wchar_t * __restrict__ , const char * __restrict__, size_t);
-int mbtowc(wchar_t * __restrict__, const char * __restrict__, size_t);
-void qsort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int rand(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-void srand(unsigned) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-double strtod(const char *, char **) __asm("_" "strtod" );
-float strtof(const char *, char **) __asm("_" "strtof" );
-long strtol(const char *__str, char **__endptr, int __base);
-long double
- strtold(const char *, char **);
-long long
- strtoll(const char *__str, char **__endptr, int __base);
-unsigned long
- strtoul(const char *__str, char **__endptr, int __base);
-unsigned long long
- strtoull(const char *__str, char **__endptr, int __base);
-__attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")))
-__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable)))
-__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-int system(const char *) __asm("_" "system" );
-size_t wcstombs(char * __restrict__, const wchar_t * __restrict__, size_t);
-int wctomb(char *, wchar_t);
-void _Exit(int) __attribute__((__noreturn__));
-long a64l(const char *);
-double drand48(void);
-char *ecvt(double, int, int *__restrict__, int *__restrict__);
-double erand48(unsigned short[3]);
-char *fcvt(double, int, int *__restrict__, int *__restrict__);
-char *gcvt(double, int, char *);
-int getsubopt(char **, char * const *, char **);
-int grantpt(int);
-char *initstate(unsigned, char *, size_t);
-long jrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-char *l64a(long);
-void lcong48(unsigned short[7]);
-long lrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of mktemp(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *mktemp(char *);
-int mkstemp(char *);
-long mrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-long nrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-int posix_openpt(int);
-char *ptsname(int);
-int ptsname_r(int fildes, char *buffer, size_t buflen) __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(tvos,introduced=11.3))) __attribute__((availability(watchos,introduced=4.3)));
-int putenv(char *) __asm("_" "putenv" );
-long random(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-int rand_r(unsigned *) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-char *realpath(const char * __restrict__, char * __restrict__) __asm("_" "realpath" "$DARWIN_EXTSN");
-unsigned short
- *seed48(unsigned short[3]);
-int setenv(const char * __name, const char * __value, int __overwrite) __asm("_" "setenv" );
-void setkey(const char *) __asm("_" "setkey" );
-char *setstate(const char *);
-void srand48(long);
-void srandom(unsigned);
-int unlockpt(int);
-int unsetenv(const char *) __asm("_" "unsetenv" );
-uint32_t arc4random(void);
-void arc4random_addrandom(unsigned char * , int )
- __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(macosx,deprecated=10.12,message="use arc4random_stir")))
- __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=10.0,message="use arc4random_stir")))
- __attribute__((availability(tvos,introduced=2.0))) __attribute__((availability(tvos,deprecated=10.0,message="use arc4random_stir")))
- __attribute__((availability(watchos,introduced=1.0))) __attribute__((availability(watchos,deprecated=3.0,message="use arc4random_stir")));
-void arc4random_buf(void * __buf, size_t __nbytes) __attribute__((availability(macosx,introduced=10.7)));
-void arc4random_stir(void);
-uint32_t
- arc4random_uniform(uint32_t __upper_bound) __attribute__((availability(macosx,introduced=10.7)));
-int atexit_b(void (^ _Nonnull)(void)) __attribute__((availability(macosx,introduced=10.6)));
-void *bsearch_b(const void *__key, const void *__base, size_t __nel,
- size_t __width, int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-char *cgetcap(char *, const char *, int);
-int cgetclose(void);
-int cgetent(char **, char **, const char *);
-int cgetfirst(char **, char **);
-int cgetmatch(const char *, const char *);
-int cgetnext(char **, char **);
-int cgetnum(char *, const char *, long *);
-int cgetset(const char *);
-int cgetstr(char *, const char *, char **);
-int cgetustr(char *, const char *, char **);
-int daemon(int, int) __asm("_" "daemon" ) __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message="Use posix_spawn APIs instead."))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-char *devname(dev_t, mode_t);
-char *devname_r(dev_t, mode_t, char *buf, int len);
-char *getbsize(int *, long *);
-int getloadavg(double [], int);
-const char
- *getprogname(void);
-void setprogname(const char *);
-int heapsort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int heapsort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-int mergesort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int mergesort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort_r(void *__base, size_t __nel, size_t __width, void *,
- int (* _Nonnull __compar)(void *, const void *, const void *))
- __attribute__((availability(macosx,introduced=10.6)));
-void qsort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void qsort_r(void *__base, size_t __nel, size_t __width, void *,
- int (* _Nonnull __compar)(void *, const void *, const void *));
-int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
- unsigned __endbyte);
-int rpmatch(const char *)
- __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)));
-int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
- unsigned __endbyte);
-void sranddev(void);
-void srandomdev(void);
-void *reallocf(void *__ptr, size_t __size) __attribute__((alloc_size(2)));
-long long
- strtonum(const char *__numstr, long long __minval, long long __maxval, const char **__errstrp)
- __attribute__((availability(macos,introduced=11.0))) __attribute__((availability(ios,introduced=14.0))) __attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)));
-long long
- strtoq(const char *__str, char **__endptr, int __base);
-unsigned long long
- strtouq(const char *__str, char **__endptr, int __base);
-extern char *suboptarg;
-typedef long int ptrdiff_t;
-typedef long double max_align_t;
-
-void *memchr(const void *__s, int __c, size_t __n);
-int memcmp(const void *__s1, const void *__s2, size_t __n);
-void *memcpy(void *__dst, const void *__src, size_t __n);
-void *memmove(void *__dst, const void *__src, size_t __len);
-void *memset(void *__b, int __c, size_t __len);
-char *strcat(char *__s1, const char *__s2);
-char *strchr(const char *__s, int __c);
-int strcmp(const char *__s1, const char *__s2);
-int strcoll(const char *__s1, const char *__s2);
-char *strcpy(char *__dst, const char *__src);
-size_t strcspn(const char *__s, const char *__charset);
-char *strerror(int __errnum) __asm("_" "strerror" );
-size_t strlen(const char *__s);
-char *strncat(char *__s1, const char *__s2, size_t __n);
-int strncmp(const char *__s1, const char *__s2, size_t __n);
-char *strncpy(char *__dst, const char *__src, size_t __n);
-char *strpbrk(const char *__s, const char *__charset);
-char *strrchr(const char *__s, int __c);
-size_t strspn(const char *__s, const char *__charset);
-char *strstr(const char *__big, const char *__little);
-char *strtok(char *__str, const char *__sep);
-size_t strxfrm(char *__s1, const char *__s2, size_t __n);
-char *strtok_r(char *__str, const char *__sep, char **__lasts);
-int strerror_r(int __errnum, char *__strerrbuf, size_t __buflen);
-char *strdup(const char *__s1);
-void *memccpy(void *__dst, const void *__src, int __c, size_t __n);
-char *stpcpy(char *__dst, const char *__src);
-char *stpncpy(char *__dst, const char *__src, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-char *strndup(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-size_t strnlen(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-char *strsignal(int __sig);
-errno_t memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __attribute__((availability(macosx,introduced=10.9)));
-void *memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __attribute__((availability(macosx,introduced=10.7)));
-void memset_pattern4(void *__b, const void *__pattern4, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-void memset_pattern8(void *__b, const void *__pattern8, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-void memset_pattern16(void *__b, const void *__pattern16, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-char *strcasestr(const char *__big, const char *__little);
-char *strnstr(const char *__big, const char *__little, size_t __len);
-size_t strlcat(char *__dst, const char *__source, size_t __size);
-size_t strlcpy(char *__dst, const char *__source, size_t __size);
-void strmode(int __mode, char *__bp);
-char *strsep(char **__stringp, const char *__delim);
-void swab(const void * __restrict__, void * __restrict__, ssize_t);
-__attribute__((availability(macosx,introduced=10.12.1))) __attribute__((availability(ios,introduced=10.1)))
-__attribute__((availability(tvos,introduced=10.0.1))) __attribute__((availability(watchos,introduced=3.1)))
-int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len);
-__attribute__((availability(macosx,introduced=11.0))) __attribute__((availability(ios,introduced=14.0)))
-__attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)))
-int strsignal_r(int __sig, char *__strsignalbuf, size_t __buflen);
-int bcmp(const void *, const void *, size_t) ;
-void bcopy(const void *, void *, size_t) ;
-void bzero(void *, size_t) ;
-char *index(const char *, int) ;
-char *rindex(const char *, int) ;
-int ffs(int);
-int strcasecmp(const char *, const char *);
-int strncasecmp(const char *, const char *, size_t);
-int ffsl(long) __attribute__((availability(macosx,introduced=10.5)));
-int ffsll(long long) __attribute__((availability(macosx,introduced=10.9)));
-int fls(int) __attribute__((availability(macosx,introduced=10.5)));
-int flsl(long) __attribute__((availability(macosx,introduced=10.5)));
-int flsll(long long) __attribute__((availability(macosx,introduced=10.9)));
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-imaxabs(intmax_t j);
-typedef struct {
- intmax_t quot;
- intmax_t rem;
-} imaxdiv_t;
-__attribute__((availability(macosx,introduced=10.4)))
-extern imaxdiv_t
-imaxdiv(intmax_t __numer, intmax_t __denom);
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-strtoimax(const char * __restrict__ __nptr,
- char ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern uintmax_t
-strtoumax(const char * __restrict__ __nptr,
- char ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-wcstoimax(const wchar_t * __restrict__ __nptr,
- wchar_t ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern uintmax_t
-wcstoumax(const wchar_t * __restrict__ __nptr,
- wchar_t ** __restrict__ __endptr,
- int __base);
-
-struct accessx_descriptor {
- unsigned int ad_name_offset;
- int ad_flags;
- int ad_pad[2];
-};
-int getattrlistbulk(int, void *, void *, size_t, uint64_t) __attribute__((availability(macosx,introduced=10.10)));
-int getattrlistat(int, const char *, void *, void *, size_t, unsigned long) __attribute__((availability(macosx,introduced=10.10)));
-int setattrlistat(int, const char *, void *, void *, size_t, uint32_t) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-ssize_t freadlink(int, char * __restrict__, size_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int faccessat(int, const char *, int, int) __attribute__((availability(macosx,introduced=10.10)));
-int fchownat(int, const char *, uid_t, gid_t, int) __attribute__((availability(macosx,introduced=10.10)));
-int linkat(int, const char *, int, const char *, int) __attribute__((availability(macosx,introduced=10.10)));
-ssize_t readlinkat(int, const char *, char *, size_t) __attribute__((availability(macosx,introduced=10.10)));
-int symlinkat(const char *, int, const char *) __attribute__((availability(macosx,introduced=10.10)));
-int unlinkat(int, const char *, int) __attribute__((availability(macosx,introduced=10.10)));
-void _exit(int) __attribute__((__noreturn__));
-int access(const char *, int);
-unsigned int
- alarm(unsigned int);
-int chdir(const char *);
-int chown(const char *, uid_t, gid_t);
-int close(int) __asm("_" "close" );
-int dup(int);
-int dup2(int, int);
-int execl(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execle(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execlp(const char * __file, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execv(const char * __path, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execve(const char * __file, char * const * __argv, char * const * __envp) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execvp(const char * __file, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-pid_t fork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-long fpathconf(int, int);
-char *getcwd(char *, size_t);
-gid_t getegid(void);
-uid_t geteuid(void);
-gid_t getgid(void);
-int getgroups(int, gid_t []) __asm("_" "getgroups" "$DARWIN_EXTSN");
-char *getlogin(void);
-pid_t getpgrp(void);
-pid_t getpid(void);
-pid_t getppid(void);
-uid_t getuid(void);
-int isatty(int);
-int link(const char *, const char *);
-off_t lseek(int, off_t, int);
-long pathconf(const char *, int);
-int pause(void) __asm("_" "pause" );
-int pipe(int [2]);
-ssize_t read(int, void *, size_t) __asm("_" "read" );
-int rmdir(const char *);
-int setgid(gid_t);
-int setpgid(pid_t, pid_t);
-pid_t setsid(void);
-int setuid(uid_t);
-unsigned int
- sleep(unsigned int) __asm("_" "sleep" );
-long sysconf(int);
-pid_t tcgetpgrp(int);
-int tcsetpgrp(int, pid_t);
-char *ttyname(int);
-int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" );
-int unlink(const char *);
-ssize_t write(int __fd, const void * __buf, size_t __nbyte) __asm("_" "write" );
-size_t confstr(int, char *, size_t) __asm("_" "confstr" );
-int getopt(int, char * const [], const char *) __asm("_" "getopt" );
-extern char *optarg;
-extern int optind, opterr, optopt;
-__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-void *brk(const void *);
-int chroot(const char *) ;
-char *crypt(const char *, const char *);
-void encrypt(char *, int) __asm("_" "encrypt" );
-int fchdir(int);
-long gethostid(void);
-pid_t getpgid(pid_t);
-pid_t getsid(pid_t);
-int getdtablesize(void) ;
-int getpagesize(void) __attribute__((__const__)) ;
-char *getpass(const char *) ;
-char *getwd(char *) ;
-int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" );
-int lockf(int, int, off_t) __asm("_" "lockf" );
-int nice(int) __asm("_" "nice" );
-ssize_t pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pread" );
-ssize_t pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pwrite" );
-__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-void *sbrk(int);
-pid_t setpgrp(void) __asm("_" "setpgrp" );
-int setregid(gid_t, gid_t) __asm("_" "setregid" );
-int setreuid(uid_t, uid_t) __asm("_" "setreuid" );
-void swab(const void * __restrict__, void * __restrict__, ssize_t);
-void sync(void);
-int truncate(const char *, off_t);
-useconds_t ualarm(useconds_t, useconds_t);
-int usleep(useconds_t) __asm("_" "usleep" );
-__attribute__((__deprecated__("Use posix_spawn or fork")))
-pid_t fork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int fsync(int) __asm("_" "fsync" );
-int ftruncate(int, off_t);
-int getlogin_r(char *, size_t);
-int fchown(int, uid_t, gid_t);
-int gethostname(char *, size_t);
-ssize_t readlink(const char * __restrict__, char * __restrict__, size_t);
-int setegid(gid_t);
-int seteuid(uid_t);
-int symlink(const char *, const char *);
-int pselect(int, fd_set * __restrict__, fd_set * __restrict__,
- fd_set * __restrict__, const struct timespec * __restrict__,
- const sigset_t * __restrict__)
-__asm("_" "pselect" "$DARWIN_EXTSN" )
-;
-int select(int, fd_set * __restrict__, fd_set * __restrict__,
- fd_set * __restrict__, struct timeval * __restrict__)
-__asm("_" "select" "$DARWIN_EXTSN" )
-;
-typedef __darwin_uuid_t uuid_t;
-void _Exit(int) __attribute__((__noreturn__));
-int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
-int acct(const char *);
-int add_profil(char *, size_t, unsigned long, unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-void endusershell(void);
-int execvP(const char * __file, const char * __searchpath, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-char *fflagstostr(unsigned long);
-int getdomainname(char *, int);
-int getgrouplist(const char *, int, int *, int *);
-int gethostuuid(uuid_t, const struct timespec *) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable)));
-mode_t getmode(const void *, mode_t);
-int getpeereid(int, uid_t *, gid_t *);
-int getsgroups_np(int *, uuid_t);
-char *getusershell(void);
-int getwgroups_np(int *, uuid_t);
-int initgroups(const char *, int);
-int issetugid(void);
-char *mkdtemp(char *);
-int mknod(const char *, mode_t, dev_t);
-int mkpath_np(const char *path, mode_t omode) __attribute__((availability(macosx,introduced=10.8)));
-int mkpathat_np(int dfd, const char *path, mode_t omode)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkstemp(char *);
-int mkstemps(char *, int);
-char *mktemp(char *);
-int mkostemp(char *path, int oflags)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkostemps(char *path, int slen, int oflags)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkstemp_dprotected_np(char *path, int dpclass, int dpflags)
- __attribute__((availability(macosx,unavailable))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-char *mkdtempat_np(int dfd, char *path)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int mkstempsat_np(int dfd, char *path, int slen)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int mkostempsat_np(int dfd, char *path, int slen, int oflags)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int nfssvc(int, void *);
-int profil(char *, size_t, unsigned long, unsigned int);
-__attribute__((__deprecated__("Use of per-thread security contexts is error-prone and discouraged.")))
-int pthread_setugid_np(uid_t, gid_t);
-int pthread_getugid_np( uid_t *, gid_t *);
-int reboot(int);
-int revoke(const char *);
-__attribute__((__deprecated__)) int rcmd(char **, int, const char *, const char *, const char *, int *);
-__attribute__((__deprecated__)) int rcmd_af(char **, int, const char *, const char *, const char *, int *,
- int);
-__attribute__((__deprecated__)) int rresvport(int *);
-__attribute__((__deprecated__)) int rresvport_af(int *, int);
-__attribute__((__deprecated__)) int iruserok(unsigned long, int, const char *, const char *);
-__attribute__((__deprecated__)) int iruserok_sa(const void *, int, int, const char *, const char *);
-__attribute__((__deprecated__)) int ruserok(const char *, int, const char *, const char *);
-int setdomainname(const char *, int);
-int setgroups(int, const gid_t *);
-void sethostid(long);
-int sethostname(const char *, int);
-void setkey(const char *) __asm("_" "setkey" );
-int setlogin(const char *);
-void *setmode(const char *) __asm("_" "setmode" );
-int setrgid(gid_t);
-int setruid(uid_t);
-int setsgroups_np(int, const uuid_t);
-void setusershell(void);
-int setwgroups_np(int, const uuid_t);
-int strtofflags(char **, unsigned long *, unsigned long *);
-int swapon(const char *);
-int ttyslot(void);
-int undelete(const char *);
-int unwhiteout(const char *);
-void *valloc(size_t);
-__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-__attribute__((availability(ios,deprecated=10.0,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")))
-__attribute__((availability(macosx,deprecated=10.12,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")))
-int syscall(int, ...);
-extern char *suboptarg;
-int getsubopt(char **, char * const *, char **);
-int fgetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int fsetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int getattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "getattrlist" );
-int setattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "setattrlist" );
-int exchangedata(const char*,const char*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-struct fssearchblock;
-struct searchstate;
-int searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int fsctl(const char *,unsigned long,void*,unsigned int);
-int ffsctl(int,unsigned long,void*,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int fsync_volume_np(int, int) __attribute__((availability(macosx,introduced=10.8)));
-int sync_volume_np(const char *, int) __attribute__((availability(macosx,introduced=10.8)));
-extern int optreset;
-
-
-
-
-
-
-
-
-
-
-
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1)))
-void *ruby_xmalloc(size_t size)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1,2)))
-void *ruby_xmalloc2(size_t nelems, size_t elemsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1,2)))
-void *ruby_xcalloc(size_t nelems, size_t elemsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2)))
-void *ruby_xrealloc(void *ptr, size_t newsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2,3)))
-void *ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
-;
-void ruby_xfree(void *ptr)
-;
-
-
-
-
-
-
-
-
-
-#define RBIMPL_ATTR_COLD_H
-#define RBIMPL_ATTR_COLD() __attribute__((__cold__))
-
-
-
-
-
-
-
-
-
-
-
-
-
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_assert_failure(const char *file, int line, const char *name, const char *expr);
-
-#define COLDFUNC RBIMPL_ATTR_COLD()
-
-
-
-
-
-
-
-
-
- typedef float float_t;
- typedef double double_t;
-extern int __math_errhandling(void);
-extern int __fpclassifyf(float);
-extern int __fpclassifyd(double);
-extern int __fpclassifyl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float);
-inline __attribute__ ((__always_inline__)) int __inline_isfinited(double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isinff(float);
-inline __attribute__ ((__always_inline__)) int __inline_isinfd(double);
-inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isnanf(float);
-inline __attribute__ ((__always_inline__)) int __inline_isnand(double);
-inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float);
-inline __attribute__ ((__always_inline__)) int __inline_isnormald(double);
-inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double);
-inline __attribute__ ((__always_inline__)) int __inline_signbitf(float);
-inline __attribute__ ((__always_inline__)) int __inline_signbitd(double);
-inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float __x) {
- return __x == __x && __builtin_fabsf(__x) != __builtin_inff();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isfinited(double __x) {
- return __x == __x && __builtin_fabs(__x) != __builtin_inf();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double __x) {
- return __x == __x && __builtin_fabsl(__x) != __builtin_infl();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinff(float __x) {
- return __builtin_fabsf(__x) == __builtin_inff();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinfd(double __x) {
- return __builtin_fabs(__x) == __builtin_inf();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double __x) {
- return __builtin_fabsl(__x) == __builtin_infl();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnanf(float __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnand(double __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitf(float __x) {
- union { float __f; unsigned int __u; } __u;
- __u.__f = __x;
- return (int)(__u.__u >> 31);
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitd(double __x) {
- union { double __f; unsigned long long __u; } __u;
- __u.__f = __x;
- return (int)(__u.__u >> 63);
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double __x) {
- union { long double __f; unsigned long long __u;} __u;
- __u.__f = __x;
- return (int)(__u.__u >> 63);
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float __x) {
- return __inline_isfinitef(__x) && __builtin_fabsf(__x) >= 1.17549435e-38F;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormald(double __x) {
- return __inline_isfinited(__x) && __builtin_fabs(__x) >= 2.2250738585072014e-308;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double __x) {
- return __inline_isfinitel(__x) && __builtin_fabsl(__x) >= 2.2250738585072014e-308L;
-}
-extern float acosf(float);
-extern double acos(double);
-extern long double acosl(long double);
-extern float asinf(float);
-extern double asin(double);
-extern long double asinl(long double);
-extern float atanf(float);
-extern double atan(double);
-extern long double atanl(long double);
-extern float atan2f(float, float);
-extern double atan2(double, double);
-extern long double atan2l(long double, long double);
-extern float cosf(float);
-extern double cos(double);
-extern long double cosl(long double);
-extern float sinf(float);
-extern double sin(double);
-extern long double sinl(long double);
-extern float tanf(float);
-extern double tan(double);
-extern long double tanl(long double);
-extern float acoshf(float);
-extern double acosh(double);
-extern long double acoshl(long double);
-extern float asinhf(float);
-extern double asinh(double);
-extern long double asinhl(long double);
-extern float atanhf(float);
-extern double atanh(double);
-extern long double atanhl(long double);
-extern float coshf(float);
-extern double cosh(double);
-extern long double coshl(long double);
-extern float sinhf(float);
-extern double sinh(double);
-extern long double sinhl(long double);
-extern float tanhf(float);
-extern double tanh(double);
-extern long double tanhl(long double);
-extern float expf(float);
-extern double exp(double);
-extern long double expl(long double);
-extern float exp2f(float);
-extern double exp2(double);
-extern long double exp2l(long double);
-extern float expm1f(float);
-extern double expm1(double);
-extern long double expm1l(long double);
-extern float logf(float);
-extern double log(double);
-extern long double logl(long double);
-extern float log10f(float);
-extern double log10(double);
-extern long double log10l(long double);
-extern float log2f(float);
-extern double log2(double);
-extern long double log2l(long double);
-extern float log1pf(float);
-extern double log1p(double);
-extern long double log1pl(long double);
-extern float logbf(float);
-extern double logb(double);
-extern long double logbl(long double);
-extern float modff(float, float *);
-extern double modf(double, double *);
-extern long double modfl(long double, long double *);
-extern float ldexpf(float, int);
-extern double ldexp(double, int);
-extern long double ldexpl(long double, int);
-extern float frexpf(float, int *);
-extern double frexp(double, int *);
-extern long double frexpl(long double, int *);
-extern int ilogbf(float);
-extern int ilogb(double);
-extern int ilogbl(long double);
-extern float scalbnf(float, int);
-extern double scalbn(double, int);
-extern long double scalbnl(long double, int);
-extern float scalblnf(float, long int);
-extern double scalbln(double, long int);
-extern long double scalblnl(long double, long int);
-extern float fabsf(float);
-extern double fabs(double);
-extern long double fabsl(long double);
-extern float cbrtf(float);
-extern double cbrt(double);
-extern long double cbrtl(long double);
-extern float hypotf(float, float);
-extern double hypot(double, double);
-extern long double hypotl(long double, long double);
-extern float powf(float, float);
-extern double pow(double, double);
-extern long double powl(long double, long double);
-extern float sqrtf(float);
-extern double sqrt(double);
-extern long double sqrtl(long double);
-extern float erff(float);
-extern double erf(double);
-extern long double erfl(long double);
-extern float erfcf(float);
-extern double erfc(double);
-extern long double erfcl(long double);
-extern float lgammaf(float);
-extern double lgamma(double);
-extern long double lgammal(long double);
-extern float tgammaf(float);
-extern double tgamma(double);
-extern long double tgammal(long double);
-extern float ceilf(float);
-extern double ceil(double);
-extern long double ceill(long double);
-extern float floorf(float);
-extern double floor(double);
-extern long double floorl(long double);
-extern float nearbyintf(float);
-extern double nearbyint(double);
-extern long double nearbyintl(long double);
-extern float rintf(float);
-extern double rint(double);
-extern long double rintl(long double);
-extern long int lrintf(float);
-extern long int lrint(double);
-extern long int lrintl(long double);
-extern float roundf(float);
-extern double round(double);
-extern long double roundl(long double);
-extern long int lroundf(float);
-extern long int lround(double);
-extern long int lroundl(long double);
-extern long long int llrintf(float);
-extern long long int llrint(double);
-extern long long int llrintl(long double);
-extern long long int llroundf(float);
-extern long long int llround(double);
-extern long long int llroundl(long double);
-extern float truncf(float);
-extern double trunc(double);
-extern long double truncl(long double);
-extern float fmodf(float, float);
-extern double fmod(double, double);
-extern long double fmodl(long double, long double);
-extern float remainderf(float, float);
-extern double remainder(double, double);
-extern long double remainderl(long double, long double);
-extern float remquof(float, float, int *);
-extern double remquo(double, double, int *);
-extern long double remquol(long double, long double, int *);
-extern float copysignf(float, float);
-extern double copysign(double, double);
-extern long double copysignl(long double, long double);
-extern float nanf(const char *);
-extern double nan(const char *);
-extern long double nanl(const char *);
-extern float nextafterf(float, float);
-extern double nextafter(double, double);
-extern long double nextafterl(long double, long double);
-extern double nexttoward(double, long double);
-extern float nexttowardf(float, long double);
-extern long double nexttowardl(long double, long double);
-extern float fdimf(float, float);
-extern double fdim(double, double);
-extern long double fdiml(long double, long double);
-extern float fmaxf(float, float);
-extern double fmax(double, double);
-extern long double fmaxl(long double, long double);
-extern float fminf(float, float);
-extern double fmin(double, double);
-extern long double fminl(long double, long double);
-extern float fmaf(float, float, float);
-extern double fma(double, double, double);
-extern long double fmal(long double, long double, long double);
-extern float lgammaf_r(float, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern double lgamma_r(double, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern long double lgammal_r(long double, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern float __exp10f(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __exp10(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp);
-inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp);
-extern float __cospif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __cospi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern float __sinpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __sinpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern float __tanpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __tanpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp);
-inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp);
-struct __float2 { float __sinval; float __cosval; };
-struct __double2 { double __sinval; double __cosval; };
-extern struct __float2 __sincosf_stret(float);
-extern struct __double2 __sincos_stret(double);
-extern struct __float2 __sincospif_stret(float);
-extern struct __double2 __sincospi_stret(double);
-inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp) {
- const struct __float2 __stret = __sincosf_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp) {
- const struct __double2 __stret = __sincos_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp) {
- const struct __float2 __stret = __sincospif_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp) {
- const struct __double2 __stret = __sincospi_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-extern double j0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double j1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double jn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double y0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double y1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double yn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double scalb(double, double);
-extern int signgam;
-struct exception {
- int type;
- char *name;
- double arg1;
- double arg2;
- double retval;
-};
-struct tm {
- int tm_sec;
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
- long tm_gmtoff;
- char *tm_zone;
-};
-extern char *tzname[];
-extern int getdate_err;
-extern long timezone __asm("_" "timezone" );
-extern int daylight;
-char *asctime(const struct tm *);
-clock_t clock(void) __asm("_" "clock" );
-char *ctime(const time_t *);
-double difftime(time_t, time_t);
-struct tm *getdate(const char *);
-struct tm *gmtime(const time_t *);
-struct tm *localtime(const time_t *);
-time_t mktime(struct tm *) __asm("_" "mktime" );
-size_t strftime(char * __restrict__, size_t, const char * __restrict__, const struct tm * __restrict__) __asm("_" "strftime" );
-char *strptime(const char * __restrict__, const char * __restrict__, struct tm * __restrict__) __asm("_" "strptime" );
-time_t time(time_t *);
-void tzset(void);
-char *asctime_r(const struct tm * __restrict__, char * __restrict__);
-char *ctime_r(const time_t *, char *);
-struct tm *gmtime_r(const time_t * __restrict__, struct tm * __restrict__);
-struct tm *localtime_r(const time_t * __restrict__, struct tm * __restrict__);
-time_t posix2time(time_t);
-void tzsetwall(void);
-time_t time2posix(time_t);
-time_t timelocal(struct tm * const);
-time_t timegm(struct tm * const);
-int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) __asm("_" "nanosleep" );
-typedef enum {
-_CLOCK_REALTIME __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 0,
-_CLOCK_MONOTONIC __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 6,
-_CLOCK_MONOTONIC_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 4,
-_CLOCK_MONOTONIC_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 5,
-_CLOCK_UPTIME_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 8,
-_CLOCK_UPTIME_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 9,
-_CLOCK_PROCESS_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 12,
-_CLOCK_THREAD_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 16
-} clockid_t;
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-int clock_getres(clockid_t __clock_id, struct timespec *__res);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-int clock_gettime(clockid_t __clock_id, struct timespec *__tp);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-__uint64_t clock_gettime_nsec_np(clockid_t __clock_id);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable)))
-__attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable)))
-int clock_settime(clockid_t __clock_id, const struct timespec *__tp);
-__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)))
-int timespec_get(struct timespec *ts, int base);
-struct timeval64 {
- __int64_t tv_sec;
- __int64_t tv_usec;
-};
-struct itimerval {
- struct timeval it_interval;
- struct timeval it_value;
-};
-struct timezone {
- int tz_minuteswest;
- int tz_dsttime;
-};
-struct clockinfo {
- int hz;
- int tick;
- int tickadj;
- int stathz;
- int profhz;
-};
-int adjtime(const struct timeval *, struct timeval *);
-int futimes(int, const struct timeval *);
-int lutimes(const char *, const struct timeval *) __attribute__((availability(macosx,introduced=10.5)));
-int settimeofday(const struct timeval *, const struct timezone *);
-int getitimer(int, struct itimerval *);
-int gettimeofday(struct timeval * __restrict__, void * __restrict__);
-int setitimer(int, const struct itimerval * __restrict__,
- struct itimerval * __restrict__);
-int utimes(const char *, const struct timeval *);
-extern int eaccess(const char*, int);
-__attribute__((__format__(__printf__, 1, 2)))
-extern void setproctitle(const char *fmt, ...);
-extern void explicit_bzero(void *b, size_t len);
-
-
-
-
-
-
-
-
-
-typedef unsigned long VALUE;
-typedef unsigned long ID;
-__extension__ _Static_assert(4 == sizeof(int), "sizeof_int" ": " "SIZEOF_INT == sizeof(int)");
-__extension__ _Static_assert(8 == sizeof(long), "sizeof_long" ": " "SIZEOF_LONG == sizeof(long)");
-__extension__ _Static_assert(8 == sizeof(
- long long
-), "sizeof_long_long" ": " "SIZEOF_LONG_LONG == sizeof(LONG_LONG)");
-__extension__ _Static_assert(8 == sizeof(void *), "sizeof_voidp" ": " "SIZEOF_VOIDP == sizeof(void *)");
-VALUE rb_class_new(VALUE super);
-VALUE rb_mod_init_copy(VALUE clone, VALUE orig);
-void rb_check_inheritable(VALUE super);
-VALUE rb_define_class_id(ID id, VALUE super);
-VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super);
-VALUE rb_module_new(void);
-VALUE rb_refinement_new(void);
-VALUE rb_define_module_id(ID id);
-VALUE rb_define_module_id_under(VALUE outer, ID id);
-VALUE rb_mod_included_modules(VALUE mod);
-VALUE rb_mod_include_p(VALUE child, VALUE parent);
-VALUE rb_mod_ancestors(VALUE mod);
-VALUE rb_class_descendants(VALUE klass);
-VALUE rb_class_subclasses(VALUE klass);
-VALUE rb_class_attached_object(VALUE klass);
-VALUE rb_class_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_protected_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_private_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj);
-void rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(), int arity);
-void rb_undef(VALUE mod, ID mid);
-__attribute__((__nonnull__ ()))
-void rb_define_protected_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_private_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_singleton_method(VALUE obj, const char *mid, VALUE(*func)(), int arity);
-VALUE rb_singleton_class(VALUE obj);
-
-int rb_sourceline(void);
-const char *rb_sourcefile(void);
-int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
-VALUE rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat);
-VALUE rb_apply(VALUE recv, ID mid, VALUE args);
-VALUE rb_obj_instance_eval(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_obj_instance_exec(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod);
-typedef VALUE (*rb_alloc_func_t)(VALUE klass);
-void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func);
-void rb_undef_alloc_func(VALUE klass);
-rb_alloc_func_t rb_get_alloc_func(VALUE klass);
-void rb_clear_constant_cache_for_id(ID id);
-void rb_alias(VALUE klass, ID dst, ID src);
-void rb_attr(VALUE klass, ID name, int need_reader, int need_writer, int honour_visibility);
-__attribute__((__nonnull__ ()))
-void rb_remove_method(VALUE klass, const char *name);
-void rb_remove_method_id(VALUE klass, ID mid);
-int rb_method_boundp(VALUE klass, ID id, int ex);
-int rb_method_basic_definition_p(VALUE klass, ID mid);
-int rb_obj_respond_to(VALUE obj, ID mid, int private_p);
-int rb_respond_to(VALUE obj, ID mid);
-__declspec(noreturn)
-VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker);
-void rb_backtrace(void);
-VALUE rb_make_backtrace(void);
-
-__attribute__((__nonnull__ ()))
-void rb_define_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_module_function(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_global_function(const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_undef_method(VALUE klass, const char *name);
-__attribute__((__nonnull__ ()))
-void rb_define_alias(VALUE klass, const char *dst, const char *src);
-__attribute__((__nonnull__ ()))
-void rb_define_attr(VALUE klass, const char *name, int read, int write);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_notimpl(const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m3(const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m2(const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m1(const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_00(const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_01(const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_02(const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_03(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_04(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_05(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_06(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_07(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_08(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_09(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_10(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_11(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_12(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_13(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_14(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_15(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_notimpl(VALUE, ID, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m3(VALUE, ID, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m2(VALUE, ID, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m1(VALUE, ID, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_00(VALUE, ID, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_01(VALUE, ID, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_02(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_03(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_04(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_05(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_06(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_07(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_08(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_09(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_10(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_11(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_12(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_13(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_14(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_15(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-
-
-
-
-
-VALUE rb_int2big(intptr_t i);
-VALUE rb_int2inum(intptr_t i);
-VALUE rb_uint2big(uintptr_t i);
-VALUE rb_uint2inum(uintptr_t i);
-
-
-
-
-
-enum
-__attribute__((__enum_extensibility__(closed)))
-ruby_special_consts {
- RUBY_Qfalse = 0x00,
- RUBY_Qnil = 0x04,
- RUBY_Qtrue = 0x14,
- RUBY_Qundef = 0x24,
- RUBY_IMMEDIATE_MASK = 0x07,
- RUBY_FIXNUM_FLAG = 0x01,
- RUBY_FLONUM_MASK = 0x03,
- RUBY_FLONUM_FLAG = 0x02,
- RUBY_SYMBOL_FLAG = 0x0c,
- RUBY_SPECIAL_SHIFT = 8
-};
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_TEST(VALUE obj)
-{
- return obj & ~RUBY_Qnil;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_NIL_P(VALUE obj)
-{
- return obj == RUBY_Qnil;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_UNDEF_P(VALUE obj)
-{
- return obj == RUBY_Qundef;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_NIL_OR_UNDEF_P(VALUE obj)
-{
- const VALUE mask = ~(RUBY_Qundef ^ RUBY_Qnil);
- const VALUE common_bits = RUBY_Qundef & RUBY_Qnil;
- return (obj & mask) == common_bits;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FIXNUM_P(VALUE obj)
-{
- return obj & RUBY_FIXNUM_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_STATIC_SYM_P(VALUE obj)
-{
- const VALUE mask = ~((9223372036854775807L *2UL+1UL) << RUBY_SPECIAL_SHIFT);
- return (obj & mask) == RUBY_SYMBOL_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FLONUM_P(VALUE obj)
-{
- return (obj & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_IMMEDIATE_P(VALUE obj)
-{
- return obj & RUBY_IMMEDIATE_MASK;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_SPECIAL_CONST_P(VALUE obj)
-{
- return RB_IMMEDIATE_P(obj) || obj == RUBY_Qfalse;
-}
-__attribute__((__const__))
-static inline VALUE
-rb_special_const_p(VALUE obj)
-{
- return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
-}
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_out_of_int(long num);
-long rb_num2long(VALUE num);
-unsigned long rb_num2ulong(VALUE num);
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_INT2FIX(long i)
-{
- ((void)0);
- const unsigned long j = i;
- const unsigned long k = (j << 1) + RUBY_FIXNUM_FLAG;
- const long l = k;
- const long m = l;
- const VALUE n = m;
- ((void)0);
- return n;
-}
-static inline int
-rb_long2int_inline(long n)
-{
- int i = ((int)n);
- if (sizeof(long) <= sizeof(int)) {
- __builtin_assume(i == n);
- }
- if (i != n)
- rb_out_of_int(n);
- return i;
-}
-__attribute__((__const__))
-static inline long
-rbimpl_fix2long_by_idiv(VALUE x)
-{
- ((void)0);
- const long y = x - RUBY_FIXNUM_FLAG;
- const long z = y / 2;
- const long w = ((long)z);
- ((void)0);
- return w;
-}
-__attribute__((__const__))
-static inline long
-rbimpl_fix2long_by_shift(VALUE x)
-{
- ((void)0);
- const long y = x;
- const long z = y >> 1;
- const long w = ((long)z);
- ((void)0);
- return w;
-}
-__attribute__((__const__))
-static inline _Bool
-rbimpl_right_shift_is_arithmetic_p(void)
-{
- return (-1 >> 1) == -1;
-}
-__attribute__((__const__))
-static inline long
-rb_fix2long(VALUE x)
-{
- if (rbimpl_right_shift_is_arithmetic_p()) {
- return rbimpl_fix2long_by_shift(x);
- }
- else {
- return rbimpl_fix2long_by_idiv(x);
- }
-}
-__attribute__((__const__))
-static inline unsigned long
-rb_fix2ulong(VALUE x)
-{
- ((void)0);
- return rb_fix2long(x);
-}
-static inline long
-rb_num2long_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2long(x);
-}
-static inline unsigned long
-rb_num2ulong_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2ulong(x);
- else
- return rb_num2ulong(x);
-}
-static inline VALUE
-rb_long2num_inline(long v)
-{
- if ((((v) < (9223372036854775807L / 2) + 1) && ((v) >= ((-9223372036854775807L -1L) / 2))))
- return RB_INT2FIX(v);
- else
- return rb_int2big(v);
-}
-static inline VALUE
-rb_ulong2num_inline(unsigned long v)
-{
- if (((v) < (9223372036854775807L / 2) + 1))
- return RB_INT2FIX(v);
- else
- return rb_uint2big(v);
-}
-long rb_num2int(VALUE num);
-long rb_fix2int(VALUE num);
-unsigned long rb_num2uint(VALUE num);
-unsigned long rb_fix2uint(VALUE num);
-__attribute__((__artificial__))
-static inline int
-RB_FIX2INT(VALUE x)
-{
- long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_fix2int(x);
- }
- else {
- ret = rb_fix2long(x);
- }
- return ((int)ret);
-}
-static inline int
-rb_num2int_inline(VALUE x)
-{
- long ret;
- if (sizeof(int) == sizeof(long)) {
- ret = rb_num2long_inline(x);
- }
- else if (RB_FIXNUM_P(x)) {
- ret = rb_fix2int(x);
- }
- else {
- ret = rb_num2int(x);
- }
- return ((int)ret);
-}
-__attribute__((__artificial__))
-static inline unsigned int
-RB_NUM2UINT(VALUE x)
-{
- unsigned long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_num2uint(x);
- }
- else {
- ret = rb_num2ulong_inline(x);
- }
- return ((unsigned int)ret);
-}
-__attribute__((__artificial__))
-static inline unsigned int
-RB_FIX2UINT(VALUE x)
-{
- unsigned long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_fix2uint(x);
- }
- else {
- ret = rb_fix2ulong(x);
- }
- return ((unsigned int)ret);
-}
-static inline VALUE
-rb_int2num_inline(int v)
-{
- if ((((v) < (9223372036854775807L / 2) + 1) && ((v) >= ((-9223372036854775807L -1L) / 2))))
- return RB_INT2FIX(v);
- else
- return rb_int2big(v);
-}
-static inline VALUE
-rb_uint2num_inline(unsigned int v)
-{
- if (((v) < (9223372036854775807L / 2) + 1))
- return RB_INT2FIX(v);
- else
- return rb_uint2big(v);
-}
-
-
-
-enum ruby_rvalue_flags {
- RVALUE_EMBED_LEN_MAX = 3
-};
-struct
-__declspec(align(8))
-RBasic {
- VALUE flags;
- const VALUE klass;
-};
-VALUE rb_obj_hide(VALUE obj);
-VALUE rb_obj_reveal(VALUE obj, VALUE klass);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RBASIC_CLASS(VALUE obj)
-{
- ((void)0);
- return ((struct RBasic *)(obj))->klass;
-}
-
-
-
-
-
-
-typedef enum {
- RB_WARN_CATEGORY_NONE,
- RB_WARN_CATEGORY_DEPRECATED,
- RB_WARN_CATEGORY_EXPERIMENTAL,
- RB_WARN_CATEGORY_ALL_BITS = 0x6
-} rb_warning_category_t;
-enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
-VALUE rb_errinfo(void);
-void rb_set_errinfo(VALUE err);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_raise(VALUE exc, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_fatal(const char *fmt, ...);
-__attribute__((__cold__))
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_bug(const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_bug_errno(const char *msg, int err);
-__declspec(noreturn)
-void rb_sys_fail(const char *msg);
-__declspec(noreturn)
-void rb_sys_fail_str(VALUE msg);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-void rb_mod_sys_fail(VALUE mod, const char *msg);
-__declspec(noreturn)
-void rb_mod_sys_fail_str(VALUE mod, VALUE msg);
-__declspec(noreturn)
-void rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *msg);
-__declspec(noreturn)
-void rb_iter_break(void);
-__declspec(noreturn)
-void rb_iter_break_value(VALUE val);
-__declspec(noreturn)
-void rb_exit(int status);
-__declspec(noreturn)
-void rb_notimplement(void);
-VALUE rb_syserr_new(int err, const char * msg);
-VALUE rb_syserr_new_str(int n, VALUE arg);
-__declspec(noreturn)
-void rb_syserr_fail(int err, const char *msg);
-__declspec(noreturn)
-void rb_syserr_fail_str(int err, VALUE msg);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_mod_syserr_fail(VALUE mod, int err, const char *msg);
-__declspec(noreturn)
-void rb_mod_syserr_fail_str(VALUE mod, int err, VALUE msg);
-__declspec(noreturn)
-void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int err, const char *msg);
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_unexpected_type(VALUE self, int t);
-VALUE *rb_ruby_verbose_ptr(void);
-VALUE *rb_ruby_debug_ptr(void);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_warning(const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_category_warning(rb_warning_category_t cat, const char *fmt, ...);
-__attribute__((__nonnull__ (1, 3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_compile_warning(const char *file, int line, const char *fmt, ...);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_sys_warning(const char *fmt, ...);
-__attribute__((__cold__))
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_warn(const char *fmt, ...);
-__attribute__((__cold__))
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...);
-__attribute__((__nonnull__ (1, 3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_compile_warn(const char *file, int line, const char *fmt, ...);
-__attribute__((__nonnull__ (2, 4)))
-__attribute__((__format__(__printf__, 4, 5)))
-void rb_category_compile_warn(rb_warning_category_t cat, const char *file, int line, const char *fmt, ...);
-enum
-__attribute__((__enum_extensibility__(closed)))
-ruby_value_type {
- RUBY_T_NONE = 0x00,
- RUBY_T_OBJECT = 0x01,
- RUBY_T_CLASS = 0x02,
- RUBY_T_MODULE = 0x03,
- RUBY_T_FLOAT = 0x04,
- RUBY_T_STRING = 0x05,
- RUBY_T_REGEXP = 0x06,
- RUBY_T_ARRAY = 0x07,
- RUBY_T_HASH = 0x08,
- RUBY_T_STRUCT = 0x09,
- RUBY_T_BIGNUM = 0x0a,
- RUBY_T_FILE = 0x0b,
- RUBY_T_DATA = 0x0c,
- RUBY_T_MATCH = 0x0d,
- RUBY_T_COMPLEX = 0x0e,
- RUBY_T_RATIONAL = 0x0f,
- RUBY_T_NIL = 0x11,
- RUBY_T_TRUE = 0x12,
- RUBY_T_FALSE = 0x13,
- RUBY_T_SYMBOL = 0x14,
- RUBY_T_FIXNUM = 0x15,
- RUBY_T_UNDEF = 0x16,
- RUBY_T_IMEMO = 0x1a,
- RUBY_T_NODE = 0x1b,
- RUBY_T_ICLASS = 0x1c,
- RUBY_T_ZOMBIE = 0x1d,
- RUBY_T_MOVED = 0x1e,
- RUBY_T_MASK = 0x1f
-};
-__attribute__((__cold__))
-void rb_check_type(VALUE obj, int t);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline enum ruby_value_type
-RB_BUILTIN_TYPE(VALUE obj)
-{
- ((void)0);
- VALUE ret = ((struct RBasic *)(obj))->flags & RUBY_T_MASK;
- return ((enum ruby_value_type)ret);
-}
-__attribute__((__pure__))
-static inline _Bool
-rb_integer_type_p(VALUE obj)
-{
- if (RB_FIXNUM_P(obj)) {
- return 1;
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_BIGNUM;
- }
-}
-__attribute__((__pure__))
-static inline enum ruby_value_type
-rb_type(VALUE obj)
-{
- if (! RB_SPECIAL_CONST_P(obj)) {
- return RB_BUILTIN_TYPE(obj);
- }
- else if (obj == ((VALUE)RUBY_Qfalse)) {
- return RUBY_T_FALSE;
- }
- else if (obj == ((VALUE)RUBY_Qnil)) {
- return RUBY_T_NIL;
- }
- else if (obj == ((VALUE)RUBY_Qtrue)) {
- return RUBY_T_TRUE;
- }
- else if (obj == ((VALUE)RUBY_Qundef)) {
- return RUBY_T_UNDEF;
- }
- else if (RB_FIXNUM_P(obj)) {
- return RUBY_T_FIXNUM;
- }
- else if (RB_STATIC_SYM_P(obj)) {
- return RUBY_T_SYMBOL;
- }
- else {
- __builtin_assume(RB_FLONUM_P(obj));
- return RUBY_T_FLOAT;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FLOAT_TYPE_P(VALUE obj)
-{
- if (RB_FLONUM_P(obj)) {
- return 1;
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_DYNAMIC_SYM_P(VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_SYMBOL;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_SYMBOL_P(VALUE obj)
-{
- return RB_STATIC_SYM_P(obj) || RB_DYNAMIC_SYM_P(obj);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__always_inline__)) inline
-static _Bool
-rbimpl_RB_TYPE_P_fastpath(VALUE obj, enum ruby_value_type t)
-{
- if (t == RUBY_T_TRUE) {
- return obj == ((VALUE)RUBY_Qtrue);
- }
- else if (t == RUBY_T_FALSE) {
- return obj == ((VALUE)RUBY_Qfalse);
- }
- else if (t == RUBY_T_NIL) {
- return obj == ((VALUE)RUBY_Qnil);
- }
- else if (t == RUBY_T_UNDEF) {
- return obj == ((VALUE)RUBY_Qundef);
- }
- else if (t == RUBY_T_FIXNUM) {
- return RB_FIXNUM_P(obj);
- }
- else if (t == RUBY_T_SYMBOL) {
- return RB_SYMBOL_P(obj);
- }
- else if (t == RUBY_T_FLOAT) {
- return RB_FLOAT_TYPE_P(obj);
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else if (t == RB_BUILTIN_TYPE(obj)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_TYPE_P(VALUE obj, enum ruby_value_type t)
-{
- if (__builtin_constant_p(t)) {
- return rbimpl_RB_TYPE_P_fastpath(obj, t);
- }
- else {
- return t == rb_type(obj);
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool rbimpl_rtypeddata_p(VALUE obj);
-__attribute__((__artificial__))
-static inline void
-Check_Type(VALUE v, enum ruby_value_type t)
-{
- if ((__builtin_expect(!!(! (__builtin_constant_p(t) ? rbimpl_RB_TYPE_P_fastpath((v), (t)) : (RB_TYPE_P)((v), (t)))), 0))) {
- goto unexpected_type;
- }
- else if (t == RUBY_T_DATA && rbimpl_rtypeddata_p(v)) {
- goto unexpected_type;
- }
- else {
- return;
- }
- unexpected_type:
- rb_unexpected_type(v, t);
-}
-enum ruby_fl_ushift {
- RUBY_FL_USHIFT = 12
-};
-__extension__
-enum
-__attribute__((__flag_enum__))
-ruby_fl_type {
- RUBY_FL_WB_PROTECTED = (1<<5),
- RUBY_FL_PROMOTED0 = (1<<5),
- RUBY_FL_PROMOTED1 = (1<<6),
- RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1,
- RUBY_FL_FINALIZE = (1<<7),
- RUBY_FL_TAINT
- __attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
- = (1<<8),
- RUBY_FL_SHAREABLE = (1<<8),
- RUBY_FL_UNTRUSTED
- __attribute__((__deprecated__ ("trustedness turned out to be a wrong idea.")))
- = (1<<8),
- RUBY_FL_SEEN_OBJ_ID = (1<<9),
- RUBY_FL_EXIVAR = (1<<10),
- RUBY_FL_FREEZE = (1<<11),
- RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
- RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
- RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
- RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
- RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
- RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
- RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
- RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
- RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
- RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
- RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
- RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
- RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
- RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
- RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
- RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
- RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
- RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
- RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
- RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
- RUBY_ELTS_SHARED = RUBY_FL_USER2,
- RUBY_FL_SINGLETON = RUBY_FL_USER0,
-};
-enum {
- RUBY_FL_DUPPED
- __attribute__((__deprecated__ ("It seems there is no actual usage of this enum.")))
- = (int)RUBY_T_MASK | (int)RUBY_FL_EXIVAR
-};
-void rb_freeze_singleton_class(VALUE klass);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__always_inline__)) inline
-static _Bool
-RB_FL_ABLE(VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else if ((__builtin_constant_p(RUBY_T_NODE) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_NODE)) : (RB_TYPE_P)((obj), (RUBY_T_NODE)))) {
- return 0;
- }
- else {
- return 1;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_FL_TEST_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- return ((struct RBasic *)(obj))->flags & flags;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_FL_TEST(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- return RB_FL_TEST_RAW(obj, flags);
- }
- else {
- return 0UL;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ANY_RAW(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST_RAW(obj, flags);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ANY(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST(obj, flags);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ALL_RAW(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST_RAW(obj, flags) == flags;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ALL(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST(obj, flags) == flags;
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags |= flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_SET_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_set_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_SET(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_SET_RAW(obj, flags);
- }
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags &= ~flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_UNSET_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_unset_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_UNSET(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_UNSET_RAW(obj, flags);
- }
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags ^= flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_REVERSE_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_reverse_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_REVERSE(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_REVERSE_RAW(obj, flags);
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline _Bool
-RB_OBJ_TAINTABLE(VALUE obj)
-{
- return 0;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline VALUE
-RB_OBJ_TAINTED_RAW(VALUE obj)
-{
- return 0;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline _Bool
-RB_OBJ_TAINTED(VALUE obj)
-{
- return 0;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_TAINT_RAW(VALUE obj)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_TAINT(VALUE obj)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_INFECT_RAW(VALUE dst, VALUE src)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_INFECT(VALUE dst, VALUE src)
-{
- return;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_OBJ_FROZEN_RAW(VALUE obj)
-{
- return RB_FL_TEST_RAW(obj, RUBY_FL_FREEZE);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_FROZEN(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return 1;
- }
- else {
- return RB_OBJ_FROZEN_RAW(obj);
- }
-}
-__attribute__((__artificial__))
-static inline void
-RB_OBJ_FREEZE_RAW(VALUE obj)
-{
- RB_FL_SET_RAW(obj, RUBY_FL_FREEZE);
-}
-void rb_obj_freeze_inline(VALUE obj);
-enum ruby_rstring_flags {
- RSTRING_NOEMBED = RUBY_FL_USER1,
- RSTRING_FSTR = RUBY_FL_USER17
-};
-struct RString {
- struct RBasic basic;
- union {
- struct {
- long len;
- char *ptr;
- union {
- long capa;
- VALUE shared;
- } aux;
- } heap;
- struct {
- long len;
- char ary[1];
- } embed;
- } as;
-};
-VALUE rb_str_to_str(VALUE obj);
-VALUE rb_string_value(volatile VALUE *ptr);
-char *rb_string_value_ptr(volatile VALUE *ptr);
-char *rb_string_value_cstr(volatile VALUE *ptr);
-VALUE rb_str_export(VALUE obj);
-VALUE rb_str_export_locale(VALUE obj);
-__attribute__((__error__ ("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")))
-void rb_check_safe_str(VALUE);
-void rb_debug_rstring_null_ptr(const char *func);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RSTRING_EMBED_LEN(VALUE str)
-{
- ((void)0);
- ((void)0);
- long f = ((struct RString *)(str))->as.embed.len;
- return f;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline struct RString
-rbimpl_rstring_getmem(VALUE str)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) {
- return *((struct RString *)(str));
- }
- else {
- struct RString retval;
- retval.as.heap.len = RSTRING_EMBED_LEN(str);
- retval.as.heap.ptr = ((struct RString *)(str))->as.embed.ary;
- return retval;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RSTRING_LEN(VALUE str)
-{
- return rbimpl_rstring_getmem(str).as.heap.len;
-}
-__attribute__((__artificial__))
-static inline char *
-RSTRING_PTR(VALUE str)
-{
- char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr;
- if ((__builtin_expect(!!(! ptr), 0))) {
- rb_debug_rstring_null_ptr("RSTRING_PTR");
- }
- return ptr;
-}
-__attribute__((__artificial__))
-static inline char *
-RSTRING_END(VALUE str)
-{
- struct RString buf = rbimpl_rstring_getmem(str);
- if ((__builtin_expect(!!(! buf.as.heap.ptr), 0))) {
- rb_debug_rstring_null_ptr("RSTRING_END");
- }
- return &buf.as.heap.ptr[buf.as.heap.len];
-}
-__attribute__((__artificial__))
-static inline int
-RSTRING_LENINT(VALUE str)
-{
- return rb_long2int_inline(RSTRING_LEN(str));
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_CHR2FIX(unsigned char c)
-{
- return RB_INT2FIX(c);
-}
-static inline char
-rb_num2char_inline(VALUE x)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((x), (RUBY_T_STRING)) : (RB_TYPE_P)((x), (RUBY_T_STRING))) && (RSTRING_LEN(x)>=1))
- return RSTRING_PTR(x)[0];
- else
- return ((char)rb_num2int_inline(x));
-}
-
-double rb_num2dbl(VALUE num);
-__attribute__((__pure__))
-double rb_float_value(VALUE num);
-VALUE rb_float_new(double d);
-VALUE rb_float_new_in_heap(double d);
-
-
-
-VALUE rb_ll2inum(
- long long
- num);
-VALUE rb_ull2inum(unsigned
- long long
- num);
- long long
- rb_num2ll(VALUE num);
-unsigned
- long long
- rb_num2ull(VALUE num);
-static inline VALUE
-rb_ll2num_inline(
- long long
- n)
-{
- if ((((n) < (9223372036854775807L / 2) + 1) && ((n) >= ((-9223372036854775807L -1L) / 2)))) return RB_INT2FIX((long)n);
- return rb_ll2inum(n);
-}
-static inline VALUE
-rb_ull2num_inline(unsigned
- long long
- n)
-{
- if (((n) < (9223372036854775807L / 2) + 1)) return RB_INT2FIX((long)n);
- return rb_ull2inum(n);
-}
-static inline
- long long
-rb_num2ll_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2ll(x);
-}
-static inline unsigned
- long long
-rb_num2ull_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2ull(x);
-}
-
-
-
-
-short rb_num2short(VALUE num);
-unsigned short rb_num2ushort(VALUE num);
-short rb_fix2short(VALUE num);
-unsigned short rb_fix2ushort(VALUE num);
-static inline short
-rb_num2short_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2short(x);
- else
- return rb_num2short(x);
-}
-
-
-typedef unsigned long st_data_t;
-typedef struct st_table st_table;
-typedef st_data_t st_index_t;
-typedef int st_compare_func(st_data_t, st_data_t);
-typedef st_index_t st_hash_func(st_data_t);
-typedef char st_check_for_sizeof_st_index_t[8 == (int)sizeof(st_index_t) ? 1 : -1];
-struct st_hash_type {
- int (*compare)(st_data_t, st_data_t);
- st_index_t (*hash)(st_data_t);
-};
-typedef struct st_table_entry st_table_entry;
-struct st_table_entry;
-struct st_table {
- unsigned char entry_power, bin_power, size_ind;
- unsigned int rebuilds_num;
- const struct st_hash_type *type;
- st_index_t num_entries;
- st_index_t *bins;
- st_index_t entries_start, entries_bound;
- st_table_entry *entries;
-};
-enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
-st_table *rb_st_init_table(const struct st_hash_type *);
-st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t);
-st_table *rb_st_init_numtable(void);
-st_table *rb_st_init_numtable_with_size(st_index_t);
-st_table *rb_st_init_strtable(void);
-st_table *rb_st_init_strtable_with_size(st_index_t);
-st_table *rb_st_init_strcasetable(void);
-st_table *rb_st_init_strcasetable_with_size(st_index_t);
-int rb_st_delete(st_table *, st_data_t *, st_data_t *);
-int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
-int rb_st_shift(st_table *, st_data_t *, st_data_t *);
-int rb_st_insert(st_table *, st_data_t, st_data_t);
-int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
-int rb_st_lookup(st_table *, st_data_t, st_data_t *);
-int rb_st_get_key(st_table *, st_data_t, st_data_t *);
-typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
-int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
-typedef int st_foreach_callback_func(st_data_t, st_data_t, st_data_t);
-typedef int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int);
-int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
-int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t);
-int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t);
-st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size);
-st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
-st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size);
-st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never);
-void rb_st_add_direct(st_table *, st_data_t, st_data_t);
-void rb_st_free_table(st_table *);
-void rb_st_cleanup_safe(st_table *, st_data_t);
-void rb_st_clear(st_table *);
-st_table *rb_st_copy(st_table *);
-__attribute__((__const__)) int rb_st_numcmp(st_data_t, st_data_t);
-__attribute__((__const__)) st_index_t rb_st_numhash(st_data_t);
-__attribute__((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
-__attribute__((__pure__)) int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
-__attribute__((__pure__)) size_t rb_st_memsize(const st_table *);
-__attribute__((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h);
-__attribute__((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
-__attribute__((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
-__attribute__((__const__)) st_index_t rb_st_hash_end(st_index_t h);
-__attribute__((__const__)) st_index_t rb_st_hash_start(st_index_t h);
-void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);
-
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_ST2FIX(st_data_t i)
-{
- long x = i;
- if (x >= 0) {
- x &= (9223372036854775807L / 2);
- }
- else {
- x |= ((-9223372036854775807L -1L) / 2);
- }
- ((void)0);
- unsigned long y = ((unsigned long)x);
- return RB_INT2FIX(y);
-}
-
-
-
-
-void rb_gc_writebarrier(VALUE old, VALUE young);
-void rb_gc_writebarrier_unprotect(VALUE obj);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_PROMOTED_RAW(VALUE obj)
-{
- ((void)0);
- return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_PROMOTED(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return 0;
- }
- else {
- return RB_OBJ_PROMOTED_RAW(obj);
- }
-}
-static inline VALUE
-rb_obj_wb_unprotect(
- VALUE x,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- rb_gc_writebarrier_unprotect(x);
- return x;
-}
-static inline VALUE
-rb_obj_written(
- VALUE a,
- __attribute__((__unused__))
- VALUE oldv,
- VALUE b,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- if (!RB_SPECIAL_CONST_P(b)) {
- rb_gc_writebarrier(a, b);
- }
- return a;
-}
-static inline VALUE
-rb_obj_write(
- VALUE a, VALUE *slot, VALUE b,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- *slot = b;
- rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
- return a;
-}
-enum ruby_rarray_flags {
- RARRAY_EMBED_FLAG = RUBY_FL_USER1,
- RARRAY_EMBED_LEN_MASK = RUBY_FL_USER9 | RUBY_FL_USER8 | RUBY_FL_USER7 | RUBY_FL_USER6 |
- RUBY_FL_USER5 | RUBY_FL_USER4 | RUBY_FL_USER3
- ,
- RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13
-};
-enum ruby_rarray_consts {
- RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3
-};
-struct RArray {
- struct RBasic basic;
- union {
- struct {
- long len;
- union {
- long capa;
- const
- VALUE shared_root;
- } aux;
- const VALUE *ptr;
- } heap;
- const VALUE ary[1];
- } as;
-};
-VALUE *rb_ary_ptr_use_start(VALUE ary);
-void rb_ary_ptr_use_end(VALUE a);
-void rb_ary_detransient(VALUE a);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RARRAY_EMBED_LEN(VALUE ary)
-{
- ((void)0);
- ((void)0);
- VALUE f = ((struct RBasic *)(ary))->flags;
- f &= RARRAY_EMBED_LEN_MASK;
- f >>= RARRAY_EMBED_LEN_SHIFT;
- return ((long)f);
-}
-__attribute__((__pure__))
-static inline long
-rb_array_len(VALUE a)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) {
- return RARRAY_EMBED_LEN(a);
- }
- else {
- return ((struct RArray *)(a))->as.heap.len;
- }
-}
-__attribute__((__artificial__))
-static inline int
-RARRAY_LENINT(VALUE ary)
-{
- return rb_long2int_inline(rb_array_len(ary));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RARRAY_TRANSIENT_P(VALUE ary)
-{
- ((void)0);
- return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-__attribute__((__pure__))
-static inline const VALUE *
-rb_array_const_ptr_transient(VALUE a)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) {
- return (((struct RArray *)(a))->as.ary);
- }
- else {
- return (((struct RArray *)(a))->as.heap.ptr);
- }
-}
-static inline const VALUE *
-rb_array_const_ptr(VALUE a)
-{
- ((void)0);
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- return rb_array_const_ptr_transient(a);
-}
-static inline VALUE *
-rb_array_ptr_use_start(VALUE a,
- __attribute__((__unused__))
- int allow_transient)
-{
- ((void)0);
- if (!allow_transient) {
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- }
- return rb_ary_ptr_use_start(a);
-}
-static inline void
-rb_array_ptr_use_end(VALUE a,
- __attribute__((__unused__))
- int allow_transient)
-{
- ((void)0);
- rb_ary_ptr_use_end(a);
-}
-static inline VALUE *
-RARRAY_PTR(VALUE ary)
-{
- ((void)0);
- VALUE tmp = (1 ? rb_obj_wb_unprotect(ary, "./include/ruby/internal/core/rarray.h", 550) : ary);
- return ((VALUE *)rb_array_const_ptr(tmp));
-}
-static inline void
-RARRAY_ASET(VALUE ary, long i, VALUE v)
-{
- do { ((void)0); const VALUE rbimpl_ary = (ary); VALUE *ptr = rb_array_ptr_use_start(rbimpl_ary, (1)); (rb_obj_write((VALUE)(ary), (VALUE *)(&ptr[i]), (VALUE)(v), "./include/ruby/internal/core/rarray.h", 569)); rb_array_ptr_use_end(rbimpl_ary, (1)); } while (0);
-}
-
-
-int rb_big_sign(VALUE num);
-static inline _Bool
-RBIGNUM_POSITIVE_P(VALUE b)
-{
- ((void)0);
- return rb_big_sign(b);
-}
-static inline _Bool
-RBIGNUM_NEGATIVE_P(VALUE b)
-{
- ((void)0);
- return ! RBIGNUM_POSITIVE_P(b);
-}
-
-enum ruby_rmodule_flags {
- RMODULE_IS_REFINEMENT = RUBY_FL_USER3
-};
-struct RClass;
-VALUE rb_class_get_superclass(VALUE klass);
-
-typedef void (*RUBY_DATA_FUNC)(void*);
-struct RData {
- struct RBasic basic;
- RUBY_DATA_FUNC dmark;
- RUBY_DATA_FUNC dfree;
- void *data;
-};
-VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree);
-VALUE rb_data_object_zalloc(VALUE klass, size_t size, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree);
-extern VALUE rb_cObject;
-__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
-static inline VALUE
-rb_data_object_wrap_warning(VALUE klass, void *ptr, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free)
-{
- return rb_data_object_wrap(klass, ptr, mark, free);
-}
-static inline void *
-rb_data_object_get(VALUE obj)
-{
- Check_Type(obj, RUBY_T_DATA);
- return ((struct RData *)(obj))->data;
-}
-__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
-static inline void *
-rb_data_object_get_warning(VALUE obj)
-{
- return rb_data_object_get(obj);
-}
-static inline VALUE
-rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
-{
- VALUE result = rb_data_object_zalloc( (klass), (size), ((void (*)(void *))(mark_func)), ((void (*)(void *))(free_func))); (*datap) = ((void *)((struct RData *)(result))->data); ((void)(*datap));
- return result;
-}
-__attribute__((__deprecated__ ("by: rb_data_object_wrap")))
-static inline VALUE
-rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
-{
- return rb_data_object_wrap(klass, data, dmark, dfree);
-}
-
-struct rb_io_t;
-struct RFile {
- struct RBasic basic;
- struct rb_io_t *fptr;
-};
-
-struct st_table;
-size_t rb_hash_size_num(VALUE hash);
-struct st_table *rb_hash_tbl(VALUE hash, const char *file, int line);
-VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
-
-enum ruby_robject_flags {
- ROBJECT_EMBED = RUBY_FL_USER1
-};
-struct st_table;
-struct RObject {
- struct RBasic basic;
- union {
- struct {
- VALUE *ivptr;
- struct rb_id_table *iv_index_tbl;
- } heap;
- VALUE ary[1];
- } as;
-};
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IVPTR = __builtin_offsetof(struct RObject, as.heap.ivptr);
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IV_INDEX_TBL = __builtin_offsetof(struct RObject, as.heap.iv_index_tbl);
-static const int32_t ROBJECT_OFFSET_AS_ARY = __builtin_offsetof(struct RObject, as.ary);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE *
-ROBJECT_IVPTR(VALUE obj)
-{
- ((void)0);
- struct RObject *const ptr = ((struct RObject *)(obj));
- if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) {
- return ptr->as.ary;
- }
- else {
- return ptr->as.heap.ivptr;
- }
-}
-
-struct re_patter_buffer;
-struct RRegexp {
- struct RBasic basic;
- struct re_pattern_buffer *ptr;
- const VALUE src;
- unsigned long usecnt;
-};
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RREGEXP_SRC(VALUE rexp)
-{
- ((void)0);
- VALUE ret = ((struct RRegexp *)(rexp))->src;
- ((void)0);
- return ret;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline char *
-RREGEXP_SRC_PTR(VALUE rexp)
-{
- return RSTRING_PTR(RREGEXP_SRC(rexp));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RREGEXP_SRC_LEN(VALUE rexp)
-{
- return RSTRING_LEN(RREGEXP_SRC(rexp));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline char *
-RREGEXP_SRC_END(VALUE rexp)
-{
- return RSTRING_END(RREGEXP_SRC(rexp));
-}
-
-
-VALUE rb_struct_size(VALUE st);
-VALUE rb_struct_aref(VALUE st, VALUE k);
-VALUE rb_struct_aset(VALUE st, VALUE k, VALUE v);
-__attribute__((__artificial__))
-static inline long
-RSTRUCT_LEN(VALUE st)
-{
- ((void)0);
- return rb_num2long_inline(rb_struct_size(st));
-}
-__attribute__((__artificial__))
-static inline VALUE
-RSTRUCT_SET(VALUE st, int k, VALUE v)
-{
- ((void)0);
- return rb_struct_aset(st, rb_int2num_inline(k), (v));
-}
-__attribute__((__artificial__))
-static inline VALUE
-RSTRUCT_GET(VALUE st, int k)
-{
- ((void)0);
- return rb_struct_aref(st, rb_int2num_inline(k));
-}
-
-enum
-__attribute__((__flag_enum__))
-rbimpl_typeddata_flags {
- RUBY_TYPED_FREE_IMMEDIATELY = 1,
- RUBY_TYPED_FROZEN_SHAREABLE = RUBY_FL_SHAREABLE,
- RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED,
- RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1
-};
-typedef struct rb_data_type_struct rb_data_type_t;
-struct rb_data_type_struct {
- const char *wrap_struct_name;
- struct {
- RUBY_DATA_FUNC dmark;
- RUBY_DATA_FUNC dfree;
- size_t (*dsize)(const void *);
- RUBY_DATA_FUNC dcompact;
- void *reserved[1];
- } function;
- const rb_data_type_t *parent;
- void *data;
- VALUE flags;
-};
-struct RTypedData {
- struct RBasic basic;
- const rb_data_type_t *type;
- VALUE typed_flag;
- void *data;
-};
-__attribute__((__nonnull__ (3)))
-VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type);
-VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type);
-int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
-int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type);
-void *rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-rbimpl_rtypeddata_p(VALUE obj)
-{
- return ((struct RTypedData *)(obj))->typed_flag == 1;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RTYPEDDATA_P(VALUE obj)
-{
- return rbimpl_rtypeddata_p(obj);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline const struct rb_data_type_struct *
-RTYPEDDATA_TYPE(VALUE obj)
-{
- return ((struct RTypedData *)(obj))->type;
-}
-static inline VALUE
-rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
-{
- VALUE result = rb_data_typed_object_zalloc(klass, size, type); (*datap) = ((void *)(((struct RTypedData *)(result))->data)); ((void)(*datap));
- return result;
-}
-__attribute__((__deprecated__ ("by: rb_data_typed_object_wrap")))
-static inline VALUE
-rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type)
-{
- return rb_data_typed_object_wrap(klass, datap, type);
-}
-
-typedef __darwin_wint_t wint_t;
-typedef struct {
- __darwin_rune_t __min;
- __darwin_rune_t __max;
- __darwin_rune_t __map;
- __uint32_t *__types;
-} _RuneEntry;
-typedef struct {
- int __nranges;
- _RuneEntry *__ranges;
-} _RuneRange;
-typedef struct {
- char __name[14];
- __uint32_t __mask;
-} _RuneCharClass;
-typedef struct {
- char __magic[8];
- char __encoding[32];
- __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **);
- int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **);
- __darwin_rune_t __invalid_rune;
- __uint32_t __runetype[(1 <<8 )];
- __darwin_rune_t __maplower[(1 <<8 )];
- __darwin_rune_t __mapupper[(1 <<8 )];
- _RuneRange __runetype_ext;
- _RuneRange __maplower_ext;
- _RuneRange __mapupper_ext;
- void *__variable;
- int __variable_len;
- int __ncharclasses;
- _RuneCharClass *__charclasses;
-} _RuneLocale;
-extern _RuneLocale _DefaultRuneLocale;
-extern _RuneLocale *_CurrentRuneLocale;
-
-unsigned long ___runetype(__darwin_ct_rune_t);
-__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t);
-__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t);
-inline int
-isascii(int _c)
-{
- return ((_c & ~0x7F) == 0);
-}
-int __maskrune(__darwin_ct_rune_t, unsigned long);
-inline int
-__istype(__darwin_ct_rune_t _c, unsigned long _f)
-{
- return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f)
- : !!__maskrune(_c, _f));
-}
-inline __darwin_ct_rune_t
-__isctype(__darwin_ct_rune_t _c, unsigned long _f)
-{
- return (_c < 0 || _c >= (1 <<8 )) ? 0 :
- !!(_DefaultRuneLocale.__runetype[_c] & _f);
-}
-__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);
-__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);
-inline int
-__wcwidth(__darwin_ct_rune_t _c)
-{
- unsigned int _x;
- if (_c == 0)
- return (0);
- _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L);
- if ((_x & 0xe0000000L) != 0)
- return ((_x & 0xe0000000L) >> 30);
- return ((_x & 0x00040000L) != 0 ? 1 : -1);
-}
-inline int
-isalnum(int _c)
-{
- return (__istype(_c, 0x00000100L|0x00000400L));
-}
-inline int
-isalpha(int _c)
-{
- return (__istype(_c, 0x00000100L));
-}
-inline int
-isblank(int _c)
-{
- return (__istype(_c, 0x00020000L));
-}
-inline int
-iscntrl(int _c)
-{
- return (__istype(_c, 0x00000200L));
-}
-inline int
-isdigit(int _c)
-{
- return (__isctype(_c, 0x00000400L));
-}
-inline int
-isgraph(int _c)
-{
- return (__istype(_c, 0x00000800L));
-}
-inline int
-islower(int _c)
-{
- return (__istype(_c, 0x00001000L));
-}
-inline int
-isprint(int _c)
-{
- return (__istype(_c, 0x00040000L));
-}
-inline int
-ispunct(int _c)
-{
- return (__istype(_c, 0x00002000L));
-}
-inline int
-isspace(int _c)
-{
- return (__istype(_c, 0x00004000L));
-}
-inline int
-isupper(int _c)
-{
- return (__istype(_c, 0x00008000L));
-}
-inline int
-isxdigit(int _c)
-{
- return (__isctype(_c, 0x00010000L));
-}
-inline int
-toascii(int _c)
-{
- return (_c & 0x7F);
-}
-inline int
-tolower(int _c)
-{
- return (__tolower(_c));
-}
-inline int
-toupper(int _c)
-{
- return (__toupper(_c));
-}
-inline int
-digittoint(int _c)
-{
- return (__maskrune(_c, 0x0F));
-}
-inline int
-ishexnumber(int _c)
-{
- return (__istype(_c, 0x00010000L));
-}
-inline int
-isideogram(int _c)
-{
- return (__istype(_c, 0x00080000L));
-}
-inline int
-isnumber(int _c)
-{
- return (__istype(_c, 0x00000400L));
-}
-inline int
-isphonogram(int _c)
-{
- return (__istype(_c, 0x00200000L));
-}
-inline int
-isrune(int _c)
-{
- return (__istype(_c, 0xFFFFFFF0L));
-}
-inline int
-isspecial(int _c)
-{
- return (__istype(_c, 0x00100000L));
-}
-__attribute__((__nonnull__ ()))
-int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
-__attribute__((__nonnull__ ()))
-int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
-__attribute__((__nonnull__ (1)))
-unsigned long ruby_strtoul(const char *str, char **endptr, int base);
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isascii(int c)
-{
- return '\0' <= c && c <= '\x7f';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isupper(int c)
-{
- return 'A' <= c && c <= 'Z';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_islower(int c)
-{
- return 'a' <= c && c <= 'z';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isalpha(int c)
-{
- return rb_isupper(c) || rb_islower(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isdigit(int c)
-{
- return '0' <= c && c <= '9';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isalnum(int c)
-{
- return rb_isalpha(c) || rb_isdigit(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isxdigit(int c)
-{
- return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f');
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isblank(int c)
-{
- return c == ' ' || c == '\t';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isspace(int c)
-{
- return c == ' ' || ('\t' <= c && c <= '\r');
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_iscntrl(int c)
-{
- return ('\0' <= c && c < ' ') || c == '\x7f';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isprint(int c)
-{
- return ' ' <= c && c <= '\x7e';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_ispunct(int c)
-{
- return !rb_isalnum(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isgraph(int c)
-{
- return '!' <= c && c <= '\x7e';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_tolower(int c)
-{
- return rb_isupper(c) ? (c|0x20) : c;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_toupper(int c)
-{
- return rb_islower(c) ? (c&0x5f) : c;
-}
-
-__attribute__((__nonnull__ ()))
-VALUE rb_eval_string(const char *str);
-__attribute__((__nonnull__ (1)))
-VALUE rb_eval_string_protect(const char *str, int *state);
-__attribute__((__nonnull__ (1)))
-VALUE rb_eval_string_wrap(const char *str, int *state);
-VALUE rb_funcall(VALUE recv, ID mid, int n, ...);
-VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcallv_public_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcall_passing_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcall_with_block(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval);
-VALUE rb_funcall_with_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval, int kw_splat);
-VALUE rb_call_super(int argc, const VALUE *argv);
-VALUE rb_call_super_kw(int argc, const VALUE *argv, int kw_splat);
-VALUE rb_current_receiver(void);
-__attribute__((__nonnull__ (2)))
-int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values);
-__attribute__((__nonnull__ ()))
-VALUE rb_extract_keywords(VALUE *orighash);
-
-typedef uint32_t rb_event_flag_t;
-typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
-void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
-int rb_remove_event_hook(rb_event_hook_func_t func);
-
-
-void rb_gc_register_address(VALUE *valptr);
-void rb_global_variable(VALUE *);
-void rb_gc_unregister_address(VALUE *valptr);
-void rb_gc_register_mark_object(VALUE object);
-
-typedef int ruby_glob_func(const char *path, VALUE arg, void *enc);
-__attribute__((__nonnull__ ()))
-void rb_glob(const char *pattern, void (*func)(const char *path, VALUE arg, void *enc), VALUE arg);
-__attribute__((__nonnull__ ()))
-int ruby_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg);
-__attribute__((__nonnull__ ()))
-int ruby_brace_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg);
-
-extern VALUE rb_mKernel;
-extern VALUE rb_mComparable;
-extern VALUE rb_mEnumerable;
-extern VALUE rb_mErrno;
-extern VALUE rb_mFileTest;
-extern VALUE rb_mGC;
-extern VALUE rb_mMath;
-extern VALUE rb_mProcess;
-extern VALUE rb_mWaitReadable;
-extern VALUE rb_mWaitWritable;
-extern VALUE rb_cBasicObject;
-extern VALUE rb_cObject;
-extern VALUE rb_cArray;
-extern VALUE rb_cBinding;
-extern VALUE rb_cClass;
-extern VALUE rb_cDir;
-extern VALUE rb_cEncoding;
-extern VALUE rb_cEnumerator;
-extern VALUE rb_cFalseClass;
-extern VALUE rb_cFile;
-extern VALUE rb_cComplex;
-extern VALUE rb_cFloat;
-extern VALUE rb_cHash;
-extern VALUE rb_cIO;
-extern VALUE rb_cInteger;
-extern VALUE rb_cMatch;
-extern VALUE rb_cMethod;
-extern VALUE rb_cModule;
-extern VALUE rb_cRefinement;
-extern VALUE rb_cNameErrorMesg;
-extern VALUE rb_cNilClass;
-extern VALUE rb_cNumeric;
-extern VALUE rb_cProc;
-extern VALUE rb_cRandom;
-extern VALUE rb_cRange;
-extern VALUE rb_cRational;
-extern VALUE rb_cRegexp;
-extern VALUE rb_cStat;
-extern VALUE rb_cString;
-extern VALUE rb_cStruct;
-extern VALUE rb_cSymbol;
-extern VALUE rb_cThread;
-extern VALUE rb_cTime;
-extern VALUE rb_cTrueClass;
-extern VALUE rb_cUnboundMethod;
-extern VALUE rb_eException;
-extern VALUE rb_eStandardError;
-extern VALUE rb_eSystemExit;
-extern VALUE rb_eInterrupt;
-extern VALUE rb_eSignal;
-extern VALUE rb_eFatal;
-extern VALUE rb_eArgError;
-extern VALUE rb_eEOFError;
-extern VALUE rb_eIndexError;
-extern VALUE rb_eStopIteration;
-extern VALUE rb_eKeyError;
-extern VALUE rb_eRangeError;
-extern VALUE rb_eIOError;
-extern VALUE rb_eRuntimeError;
-extern VALUE rb_eFrozenError;
-extern VALUE rb_eSecurityError;
-extern VALUE rb_eSystemCallError;
-extern VALUE rb_eThreadError;
-extern VALUE rb_eTypeError;
-extern VALUE rb_eZeroDivError;
-extern VALUE rb_eNotImpError;
-extern VALUE rb_eNoMemError;
-extern VALUE rb_eNoMethodError;
-extern VALUE rb_eFloatDomainError;
-extern VALUE rb_eLocalJumpError;
-extern VALUE rb_eSysStackError;
-extern VALUE rb_eRegexpError;
-extern VALUE rb_eEncodingError;
-extern VALUE rb_eEncCompatError;
-extern VALUE rb_eNoMatchingPatternError;
-extern VALUE rb_eNoMatchingPatternKeyError;
-extern VALUE rb_eScriptError;
-extern VALUE rb_eNameError;
-extern VALUE rb_eSyntaxError;
-extern VALUE rb_eLoadError;
-extern VALUE rb_eMathDomainError;
-extern VALUE rb_stdin;
-extern VALUE rb_stdout;
-extern VALUE rb_stderr;
-__attribute__((__pure__))
-static inline VALUE
-rb_class_of(VALUE obj)
-{
- if (! RB_SPECIAL_CONST_P(obj)) {
- return RBASIC_CLASS(obj);
- }
- else if (obj == ((VALUE)RUBY_Qfalse)) {
- return rb_cFalseClass;
- }
- else if (obj == ((VALUE)RUBY_Qnil)) {
- return rb_cNilClass;
- }
- else if (obj == ((VALUE)RUBY_Qtrue)) {
- return rb_cTrueClass;
- }
- else if (RB_FIXNUM_P(obj)) {
- return rb_cInteger;
- }
- else if (RB_STATIC_SYM_P(obj)) {
- return rb_cSymbol;
- }
- else if (RB_FLONUM_P(obj)) {
- return rb_cFloat;
- }
- __builtin_unreachable();
-}
-
-
-__attribute__((__nonnull__ ()))
-void ruby_sysinit(int *argc, char ***argv);
-void ruby_init(void);
-void* ruby_options(int argc, char** argv);
-int ruby_executable_node(void *n, int *status);
-int ruby_run_node(void *n);
-void ruby_show_version(void);
-void ruby_show_copyright(void);
-void ruby_init_stack(volatile VALUE *addr);
-int ruby_setup(void);
-int ruby_cleanup(int ex);
-void ruby_finalize(void);
-__declspec(noreturn)
-void ruby_stop(int);
-int ruby_stack_check(void);
-size_t ruby_stack_length(VALUE **topnotch);
-int ruby_exec_node(void *n);
-void ruby_script(const char* name);
-void ruby_set_script_name(VALUE name);
-void ruby_prog_init(void);
-void ruby_set_argv(int argc, char **argv);
-void *ruby_process_options(int argc, char **argv);
-void ruby_init_loadpath(void);
-void ruby_incpush(const char *path);
-void ruby_sig_finalize(void);
-
-typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
-typedef rb_block_call_func *rb_block_call_func_t;
-VALUE rb_each(VALUE obj);
-VALUE rb_yield(VALUE val);
-VALUE rb_yield_values(int n, ...);
-VALUE rb_yield_values2(int n, const VALUE *argv);
-VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat);
-VALUE rb_yield_splat(VALUE ary);
-VALUE rb_yield_splat_kw(VALUE ary, int kw_splat);
-VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
-int rb_keyword_given_p(void);
-int rb_block_given_p(void);
-void rb_need_block(void);
-__attribute__((__deprecated__ ("by: rb_block_call since 1.9")))
-VALUE rb_iterate(VALUE (*func1)(VALUE), VALUE data1, rb_block_call_func_t proc, VALUE data2);
-VALUE rb_block_call(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2);
-VALUE rb_block_call_kw(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2, int kw_splat);
-VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
-VALUE rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...);
-VALUE rb_vrescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, va_list ap);
-VALUE rb_ensure(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*e_proc)(VALUE), VALUE data2);
-VALUE rb_catch(const char *tag, rb_block_call_func_t func, VALUE data);
-VALUE rb_catch_obj(VALUE tag, rb_block_call_func_t func, VALUE data);
-__declspec(noreturn)
-void rb_throw(const char *tag, VALUE val);
-__declspec(noreturn)
-void rb_throw_obj(VALUE tag, VALUE val);
-
-struct rbimpl_size_mul_overflow_tag {
- _Bool left;
- size_t right;
-};
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2)))
-__attribute__((__nonnull__ ()))
-void *rb_alloc_tmp_buffer(volatile VALUE *store, long len);
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2,3)))
-__attribute__((__nonnull__ ()))
-void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count);
-void rb_free_tmp_buffer(volatile VALUE *store);
-__declspec(noreturn)
-void ruby_malloc_size_overflow(size_t x, size_t y);
-static inline int
-rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
-{
- __extension__ unsigned __int128 da, db, c2;
- da = a;
- db = b;
- c2 = da * db;
- if (c2 > max) return 1;
- *c = ((size_t)c2);
- return 0;
-}
-__attribute__((__const__))
-static inline struct rbimpl_size_mul_overflow_tag
-rbimpl_size_mul_overflow(size_t x, size_t y)
-{
- struct rbimpl_size_mul_overflow_tag ret = { 0, 0, };
- ret.left = __builtin_mul_overflow(x, y, &ret.right);
- return ret;
-}
-static inline size_t
-rbimpl_size_mul_or_raise(size_t x, size_t y)
-{
- struct rbimpl_size_mul_overflow_tag size =
- rbimpl_size_mul_overflow(x, y);
- if ((__builtin_expect(!!(! size.left), 1))) {
- return size.right;
- }
- else {
- ruby_malloc_size_overflow(x, y);
- __builtin_unreachable();
- }
-}
-static inline void *
-rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
-{
- const size_t total_size = rbimpl_size_mul_or_raise(count, elsize);
- const size_t cnt = (total_size + sizeof(VALUE) - 1) / sizeof(VALUE);
- return rb_alloc_tmp_buffer_with_count(store, total_size, cnt);
-}
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-__attribute__((__returns_nonnull__))
-static inline void *
-ruby_nonempty_memcpy(void *dest, const void *src, size_t n)
-{
- if (n) {
- return __builtin___memcpy_chk (dest, src, n, __builtin_object_size (dest, 0));
- }
- else {
- return dest;
- }
-}
-
-
-__attribute__((__nonnull__ ()))
-VALUE rb_define_class(const char *name, VALUE super);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_module(const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_module_under(VALUE outer, const char *name);
-void rb_include_module(VALUE klass, VALUE module);
-void rb_extend_object(VALUE obj, VALUE mod);
-void rb_prepend_module(VALUE klass, VALUE module);
-
-VALUE rb_newobj(void);
-VALUE rb_newobj_of(VALUE klass, VALUE flags);
-VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type);
-VALUE rb_obj_class(VALUE obj);
-VALUE rb_singleton_class_clone(VALUE obj);
-void rb_singleton_class_attached(VALUE klass, VALUE obj);
-void rb_copy_generic_ivar(VALUE clone, VALUE obj);
-__attribute__((__deprecated__ ("This is no longer how Object#clone works.")))
-static inline void
-rb_clone_setup(VALUE clone, VALUE obj)
-{
- return;
-}
-__attribute__((__deprecated__ ("This is no longer how Object#dup works.")))
-static inline void
-rb_dup_setup(VALUE dup, VALUE obj)
-{
- return;
-}
-
-
-
-
-__attribute__((__nonnull__ ()))
-__declspec(noalias)
-void rb_mem_clear(VALUE *buf, long len)
- ;
-VALUE rb_assoc_new(VALUE car, VALUE cdr);
-VALUE rb_check_array_type(VALUE obj);
-VALUE rb_ary_new(void);
-VALUE rb_ary_new_capa(long capa);
-VALUE rb_ary_new_from_args(long n, ...);
-VALUE rb_ary_new_from_values(long n, const VALUE *elts);
-VALUE rb_ary_hidden_new(long capa);
-void rb_ary_free(VALUE ary);
-void rb_ary_modify(VALUE ary);
-VALUE rb_ary_freeze(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs);
-VALUE rb_ary_aref(int argc, const VALUE *argv, VALUE ary);
-VALUE rb_ary_subseq(VALUE ary, long beg, long len);
-void rb_ary_store(VALUE ary, long key, VALUE val);
-VALUE rb_ary_dup(VALUE ary);
-VALUE rb_ary_resurrect(VALUE ary);
-VALUE rb_ary_to_ary(VALUE obj);
-VALUE rb_ary_to_s(VALUE ary);
-VALUE rb_ary_cat(VALUE ary, const VALUE *train, long len);
-VALUE rb_ary_push(VALUE ary, VALUE elem);
-VALUE rb_ary_pop(VALUE ary);
-VALUE rb_ary_shift(VALUE ary);
-VALUE rb_ary_unshift(VALUE ary, VALUE elem);
-__attribute__((__pure__))
-VALUE rb_ary_entry(VALUE ary, long off);
-VALUE rb_ary_each(VALUE ary);
-VALUE rb_ary_join(VALUE ary, VALUE sep);
-VALUE rb_ary_reverse(VALUE ary);
-VALUE rb_ary_rotate(VALUE ary, long rot);
-VALUE rb_ary_sort(VALUE ary);
-VALUE rb_ary_sort_bang(VALUE ary);
-VALUE rb_ary_delete(VALUE ary, VALUE elem);
-VALUE rb_ary_delete_at(VALUE ary, long pos);
-VALUE rb_ary_clear(VALUE ary);
-VALUE rb_ary_plus(VALUE lhs, VALUE rhs);
-VALUE rb_ary_concat(VALUE lhs, VALUE rhs);
-VALUE rb_ary_assoc(VALUE alist, VALUE key);
-VALUE rb_ary_rassoc(VALUE alist, VALUE key);
-VALUE rb_ary_includes(VALUE ary, VALUE elem);
-VALUE rb_ary_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_ary_replace(VALUE copy, VALUE orig);
-VALUE rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func)(VALUE obj, long oidx));
-VALUE rb_ary_resize(VALUE ary, long len);
-
-VALUE rb_exc_new(VALUE etype, const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_exc_new_cstr(VALUE etype, const char *str);
-VALUE rb_exc_new_str(VALUE etype, VALUE str);
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_loaderror(const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_loaderror_with_path(VALUE path, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_name_error(ID name, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_name_error_str(VALUE name, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_frozen_error_raise(VALUE recv, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_invalid_str(const char *str, const char *type);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_error_frozen(const char *what);
-__declspec(noreturn)
-void rb_error_frozen_object(VALUE what);
-void rb_check_frozen(VALUE obj);
-void rb_check_copyable(VALUE obj, VALUE orig);
-__declspec(noreturn)
-static void rb_error_arity(int argc, int min, int max);
-static inline void
-rb_check_frozen_inline(VALUE obj)
-{
- if ((__builtin_expect(!!(RB_OBJ_FROZEN(obj)), 0))) {
- rb_error_frozen_object(obj);
- }
-}
-static inline int
-rb_check_arity(int argc, int min, int max)
-{
- if ((argc < min) || (max != (-1) && argc > max))
- rb_error_arity(argc, min, max);
- return argc;
-}
-
-__attribute__((__nonnull__ ()))
-void rb_st_foreach_safe(struct st_table *st, st_foreach_callback_func *func, st_data_t arg);
-VALUE rb_check_hash_type(VALUE obj);
-__attribute__((__nonnull__ ()))
-void rb_hash_foreach(VALUE hash, int (*func)(VALUE key, VALUE val, VALUE arg), VALUE arg);
-VALUE rb_hash(VALUE obj);
-VALUE rb_hash_new(void);
-VALUE rb_hash_new_capa(long capa);
-VALUE rb_hash_dup(VALUE hash);
-VALUE rb_hash_freeze(VALUE obj);
-VALUE rb_hash_aref(VALUE hash, VALUE key);
-VALUE rb_hash_lookup(VALUE hash, VALUE key);
-VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE def);
-VALUE rb_hash_fetch(VALUE hash, VALUE key);
-VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val);
-VALUE rb_hash_clear(VALUE hash);
-VALUE rb_hash_delete_if(VALUE hash);
-VALUE rb_hash_delete(VALUE hash, VALUE key);
-void rb_hash_bulk_insert(long argc, const VALUE *argv, VALUE hash);
-typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
-VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func);
-int rb_path_check(const char *path);
-VALUE rb_env_clear(void);
-VALUE rb_hash_size(VALUE hash);
-
-VALUE rb_block_proc(void);
-VALUE rb_block_lambda(void);
-VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg);
-VALUE rb_obj_is_proc(VALUE recv);
-VALUE rb_proc_call(VALUE recv, VALUE args);
-VALUE rb_proc_call_kw(VALUE recv, VALUE args, int kw_splat);
-VALUE rb_proc_call_with_block(VALUE recv, int argc, const VALUE *argv, VALUE proc);
-VALUE rb_proc_call_with_block_kw(VALUE recv, int argc, const VALUE *argv, VALUE proc, int kw_splat);
-int rb_proc_arity(VALUE recv);
-VALUE rb_proc_lambda_p(VALUE recv);
-VALUE rb_binding_new(void);
-VALUE rb_obj_method(VALUE recv, VALUE mid);
-VALUE rb_obj_is_method(VALUE recv);
-VALUE rb_method_call(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_method_call_kw(int argc, const VALUE *argv, VALUE recv, int kw_splat);
-VALUE rb_method_call_with_block(int argc, const VALUE *argv, VALUE recv, VALUE proc);
-VALUE rb_method_call_with_block_kw(int argc, const VALUE *argv, VALUE recv, VALUE proc, int kw_splat);
-int rb_mod_method_arity(VALUE mod, ID mid);
-int rb_obj_method_arity(VALUE obj, ID mid);
-__attribute__((__nonnull__ (1)))
-VALUE rb_protect(VALUE (*func)(VALUE args), VALUE args, int *state);
-__attribute__((__nonnull__ (2, 3)))
-int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...);
-__attribute__((__nonnull__ (3, 4)))
-int rb_scan_args_kw(int kw_splat, int argc, const VALUE *argv, const char *fmt, ...);
-__attribute__((__error__ ("bad scan arg format")))
-void rb_scan_args_bad_format(const char*);
-__attribute__((__error__ ("variable argument length doesn't match")))
-void rb_scan_args_length_mismatch(const char*,int);
-static inline _Bool
-rb_scan_args_keyword_p(int kw_flag, VALUE last)
-{
- switch (kw_flag) {
- case 0:
- return !! rb_keyword_given_p();
- case 1:
- return 1;
- case 3:
- return (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((last), (RUBY_T_HASH)) : (RB_TYPE_P)((last), (RUBY_T_HASH)));
- default:
- return 0;
- }
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_lead_p(const char *fmt)
-{
- return (((unsigned char)((fmt[0])-'0'))<10);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_lead(const char *fmt)
-{
- return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_opt_p(const char *fmt)
-{
- return (rb_scan_args_lead_p(fmt) && (((unsigned char)((fmt[1])-'0'))<10));
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_opt(const char *fmt)
-{
- return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_var_idx(const char *fmt)
-{
- return (!rb_scan_args_lead_p(fmt) ? 0 : !(((unsigned char)((fmt[1])-'0'))<10) ? 1 : 2);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_var(const char *fmt)
-{
- return (fmt[rb_scan_args_var_idx(fmt)]=='*');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_trail_idx(const char *fmt)
-{
- const int idx = rb_scan_args_var_idx(fmt);
- return idx+(fmt[idx]=='*');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_trail(const char *fmt)
-{
- const int idx = rb_scan_args_trail_idx(fmt);
- return ((((unsigned char)((fmt[idx])-'0'))<10) ? fmt[idx]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_hash_idx(const char *fmt)
-{
- const int idx = rb_scan_args_trail_idx(fmt);
- return idx+(((unsigned char)((fmt[idx])-'0'))<10);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_hash(const char *fmt)
-{
- return (fmt[rb_scan_args_hash_idx(fmt)]==':');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_block_idx(const char *fmt)
-{
- const int idx = rb_scan_args_hash_idx(fmt);
- return idx+(fmt[idx]==':');
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_block(const char *fmt)
-{
- return (fmt[rb_scan_args_block_idx(fmt)]=='&');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_set(int kw_flag, int argc, const VALUE *argv,
- int n_lead, int n_opt, int n_trail,
- _Bool f_var, _Bool f_hash, _Bool f_block,
- VALUE *vars[], const char *fmt __attribute__((__unused__)), int varc __attribute__((__unused__)))
- __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) < 0, "bad scan arg format", "error")))
- __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) != varc, "variable argument length doesn't match", "error")))
-{
- int i, argi = 0, vari = 0;
- VALUE *var, hash = ((VALUE)RUBY_Qnil);
- const int n_mand = n_lead + n_trail;
- if (f_hash && argc > 0) {
- VALUE last = argv[argc - 1];
- if (rb_scan_args_keyword_p(kw_flag, last)) {
- hash = rb_hash_dup(last);
- argc--;
- }
- }
- if (argc < n_mand) {
- goto argc_error;
- }
- for (i = 0; i < n_lead; i++) {
- var = vars[vari++];
- if (var) *var = argv[argi];
- argi++;
- }
- for (i = 0; i < n_opt; i++) {
- var = vars[vari++];
- if (argi < argc - n_trail) {
- if (var) *var = argv[argi];
- argi++;
- }
- else {
- if (var) *var = ((VALUE)RUBY_Qnil);
- }
- }
- if (f_var) {
- int n_var = argc - argi - n_trail;
- var = vars[vari++];
- if (0 < n_var) {
- if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]);
- argi += n_var;
- }
- else {
- if (var) *var = rb_ary_new();
- }
- }
- for (i = 0; i < n_trail; i++) {
- var = vars[vari++];
- if (var) *var = argv[argi];
- argi++;
- }
- if (f_hash) {
- var = vars[vari++];
- if (var) *var = hash;
- }
- if (f_block) {
- var = vars[vari++];
- if (rb_block_given_p()) {
- *var = rb_block_proc();
- }
- else {
- *var = ((VALUE)RUBY_Qnil);
- }
- }
- if (argi == argc) {
- return argc;
- }
- argc_error:
- rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
- __builtin_unreachable();
-}
-
-
-ID rb_sym2id(VALUE obj);
-VALUE rb_id2sym(ID id);
-__attribute__((__nonnull__ ()))
-ID rb_intern(const char *name);
-ID rb_intern2(const char *name, long len);
-ID rb_intern_str(VALUE str);
-const char *rb_id2name(ID id);
-__attribute__((__nonnull__ ()))
-ID rb_check_id(volatile VALUE *namep);
-ID rb_to_id(VALUE str);
-VALUE rb_id2str(ID id);
-VALUE rb_sym2str(VALUE id);
-VALUE rb_to_symbol(VALUE name);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_symbol(volatile VALUE *namep);
-__attribute__((__pure__))
-__attribute__((__nonnull__ ()))
-static inline ID
-rb_intern_const(const char *str)
-{
- size_t len = strlen(str);
- return rb_intern2(str, ((long)len));
-}
-__declspec(noalias)
-__attribute__((__nonnull__ ()))
-static inline ID
-rbimpl_intern_const(ID *ptr, const char *str)
-{
- while (! *ptr) {
- *ptr = rb_intern_const(str);
- }
- return *ptr;
-}
-
-typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
-typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
-typedef void rb_gvar_marker_t(VALUE *var);
-rb_gvar_getter_t rb_gvar_undef_getter;
-rb_gvar_setter_t rb_gvar_undef_setter;
-rb_gvar_marker_t rb_gvar_undef_marker;
-rb_gvar_getter_t rb_gvar_val_getter;
-rb_gvar_setter_t rb_gvar_val_setter;
-rb_gvar_marker_t rb_gvar_val_marker;
-rb_gvar_getter_t rb_gvar_var_getter;
-rb_gvar_setter_t rb_gvar_var_setter;
-rb_gvar_marker_t rb_gvar_var_marker;
-__declspec(noreturn)
-rb_gvar_setter_t rb_gvar_readonly_setter;
-__attribute__((__nonnull__ ()))
-void rb_define_variable(const char *name, VALUE *var);
-__attribute__((__nonnull__ (1)))
-void rb_define_virtual_variable(const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
-__attribute__((__nonnull__ (1)))
-void rb_define_hooked_variable(const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
-__attribute__((__nonnull__ ()))
-void rb_define_readonly_variable(const char *name, const VALUE *var);
-__attribute__((__nonnull__ ()))
-void rb_define_const(VALUE klass, const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-void rb_define_global_const(const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-void rb_deprecate_constant(VALUE mod, const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_gv_set(const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-VALUE rb_gv_get(const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_iv_get(VALUE obj, const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val);
-
-VALUE rb_get_path(VALUE obj);
-VALUE rb_get_path_no_checksafe(VALUE);
-__attribute__((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
-const char *rb_class2name(VALUE klass);
-const char *rb_obj_classname(VALUE obj);
-void rb_p(VALUE obj);
-VALUE rb_equal(VALUE lhs, VALUE rhs);
-VALUE rb_require(const char *feature);
-
-
-VALUE rb_big_new(size_t len, int sign);
-int rb_bigzero_p(VALUE x);
-VALUE rb_big_clone(VALUE num);
-void rb_big_2comp(VALUE num);
-VALUE rb_big_norm(VALUE x);
-void rb_big_resize(VALUE big, size_t len);
-__attribute__((__nonnull__ ()))
-VALUE rb_cstr_to_inum(const char *str, int base, int badcheck);
-VALUE rb_str_to_inum(VALUE str, int base, int badcheck);
-__attribute__((__nonnull__ ()))
-VALUE rb_cstr2inum(const char *str, int base);
-VALUE rb_str2inum(VALUE str, int base);
-VALUE rb_big2str(VALUE x, int base);
-long rb_big2long(VALUE x);
-unsigned long rb_big2ulong(VALUE x);
- long long
- rb_big2ll(VALUE);
-unsigned
- long long
- rb_big2ull(VALUE);
-__attribute__((__nonnull__ ()))
-void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
-__attribute__((__nonnull__ ()))
-VALUE rb_big_unpack(unsigned long *buf, long num_longs);
-__attribute__((__nonnull__ ()))
-int rb_uv_to_utf8(char buf[6], unsigned long uv);
-VALUE rb_dbl2big(double d);
-double rb_big2dbl(VALUE x);
-VALUE rb_big_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_big_eq(VALUE lhs, VALUE rhs);
-VALUE rb_big_eql(VALUE lhs, VALUE rhs);
-VALUE rb_big_plus(VALUE x, VALUE y);
-VALUE rb_big_minus(VALUE x, VALUE y);
-VALUE rb_big_mul(VALUE x, VALUE y);
-VALUE rb_big_div(VALUE x, VALUE y);
-VALUE rb_big_idiv(VALUE x, VALUE y);
-VALUE rb_big_modulo(VALUE x, VALUE y);
-VALUE rb_big_divmod(VALUE x, VALUE y);
-VALUE rb_big_pow(VALUE x, VALUE y);
-VALUE rb_big_and(VALUE x, VALUE y);
-VALUE rb_big_or(VALUE x, VALUE y);
-VALUE rb_big_xor(VALUE x, VALUE y);
-VALUE rb_big_lshift(VALUE x, VALUE y);
-VALUE rb_big_rshift(VALUE x, VALUE y);
-__attribute__((__nonnull__ ()))
-int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
-__attribute__((__nonnull__ ()))
-VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
-size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
-size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
-int rb_absint_singlebit_p(VALUE val);
-
-
-int rb_cmpint(VALUE val, VALUE a, VALUE b);
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_cmperr(VALUE a, VALUE b);
-
-VALUE rb_complex_raw(VALUE real, VALUE imag);
-VALUE rb_complex_new(VALUE real, VALUE imag);
-VALUE rb_complex_new_polar(VALUE abs, VALUE arg);
-__attribute__((__deprecated__ ("by: rb_complex_new_polar")))
-VALUE rb_complex_polar(VALUE abs, VALUE arg);
-__attribute__((__pure__))
-VALUE rb_complex_real(VALUE z);
-__attribute__((__pure__))
-VALUE rb_complex_imag(VALUE z);
-VALUE rb_complex_plus(VALUE x, VALUE y);
-VALUE rb_complex_minus(VALUE x, VALUE y);
-VALUE rb_complex_mul(VALUE x, VALUE y);
-VALUE rb_complex_div(VALUE x, VALUE y);
-VALUE rb_complex_uminus(VALUE z);
-VALUE rb_complex_conjugate(VALUE z);
-VALUE rb_complex_abs(VALUE z);
-VALUE rb_complex_arg(VALUE z);
-VALUE rb_complex_pow(VALUE base, VALUE exp);
-VALUE rb_dbl_complex_new(double real, double imag);
-VALUE rb_Complex(VALUE real, VALUE imag);
-
-VALUE rb_fiber_new(rb_block_call_func_t func, VALUE callback_obj);
-VALUE rb_fiber_new_storage(rb_block_call_func_t func, VALUE callback_obj, VALUE storage);
-VALUE rb_fiber_current(void);
-VALUE rb_fiber_alive_p(VALUE fiber);
-VALUE rb_obj_is_fiber(VALUE obj);
-VALUE rb_fiber_resume(VALUE fiber, int argc, const VALUE *argv);
-VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_yield(int argc, const VALUE *argv);
-VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv);
-VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv);
-
-VALUE rb_dir_getwd(void);
-
-VALUE rb_enum_values_pack(int argc, const VALUE *argv);
-
-
-__declspec(noreturn)
-void rb_exc_raise(VALUE exc);
-__declspec(noreturn)
-void rb_exc_fatal(VALUE exc);
-__declspec(noreturn)
-VALUE rb_f_exit(int argc, const VALUE *argv);
-__declspec(noreturn)
-VALUE rb_f_abort(int argc, const VALUE *argv);
-__declspec(noreturn)
-void rb_interrupt(void);
-ID rb_frame_this_func(void);
-__declspec(noreturn)
-void rb_jump_tag(int state);
-void rb_obj_call_init(VALUE obj, int argc, const VALUE *argv);
-void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
-ID rb_frame_callee(void);
-VALUE rb_make_exception(int argc, const VALUE *argv);
-void rb_set_end_proc(void (*func)(VALUE arg), VALUE arg);
-typedef VALUE rb_enumerator_size_func(VALUE recv, VALUE argv, VALUE eobj);
-typedef struct {
- VALUE begin;
- VALUE end;
- VALUE step;
- int exclude_end;
-} rb_arithmetic_sequence_components_t;
-VALUE rb_enumeratorize(VALUE recv, VALUE meth, int argc, const VALUE *argv);
-VALUE rb_enumeratorize_with_size(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func);
-VALUE rb_enumeratorize_with_size_kw(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func, int kw_splat);
-__attribute__((__nonnull__ ()))
-int rb_arithmetic_sequence_extract(VALUE as, rb_arithmetic_sequence_components_t *buf);
-__attribute__((__nonnull__ ()))
-VALUE rb_arithmetic_sequence_beg_len_step(VALUE as, long *begp, long *lenp, long *stepp, long len, int err);
-
-__attribute__((__nonnull__ ()))
-VALUE rb_file_s_expand_path(int argc, const VALUE *argv);
-VALUE rb_file_expand_path(VALUE fname, VALUE dname);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_s_absolute_path(int argc, const VALUE *argv);
-VALUE rb_file_absolute_path(VALUE fname, VALUE dname);
-VALUE rb_file_dirname(VALUE fname);
-__attribute__((__nonnull__ ()))
-int rb_find_file_ext(VALUE *feature, const char *const *exts);
-VALUE rb_find_file(VALUE path);
-VALUE rb_file_directory_p(VALUE _, VALUE path);
-VALUE rb_str_encode_ospath(VALUE path);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-int rb_is_absolute_path(const char *path);
-off_t rb_file_size(VALUE file);
-
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_memerror(void);
-__attribute__((__pure__))
-int rb_during_gc(void);
-__attribute__((__nonnull__ (1)))
-void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
-void rb_mark_tbl(struct st_table *tbl);
-void rb_mark_tbl_no_pin(struct st_table *tbl);
-void rb_mark_set(struct st_table *tbl);
-void rb_mark_hash(struct st_table *tbl);
-void rb_gc_update_tbl_refs(st_table *ptr);
-void rb_gc_mark_maybe(VALUE obj);
-void rb_gc_mark(VALUE obj);
-void rb_gc_mark_movable(VALUE obj);
-VALUE rb_gc_location(VALUE obj);
-__attribute__((__deprecated__ ("this is now a no-op function")))
-void rb_gc_force_recycle(VALUE obj);
-void rb_gc(void);
-void rb_gc_copy_finalizer(VALUE dst, VALUE src);
-VALUE rb_gc_enable(void);
-VALUE rb_gc_disable(void);
-VALUE rb_gc_start(void);
-VALUE rb_define_finalizer(VALUE obj, VALUE block);
-VALUE rb_undefine_finalizer(VALUE obj);
-size_t rb_gc_count(void);
-size_t rb_gc_stat(VALUE key_or_buf);
-VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
-void rb_gc_adjust_memory_usage(ssize_t diff);
-
-
-extern VALUE rb_fs;
-extern VALUE rb_output_fs;
-extern VALUE rb_rs;
-extern VALUE rb_default_rs;
-extern VALUE rb_output_rs;
-VALUE rb_io_write(VALUE io, VALUE str);
-VALUE rb_io_gets(VALUE io);
-VALUE rb_io_getbyte(VALUE io);
-VALUE rb_io_ungetc(VALUE io, VALUE c);
-VALUE rb_io_ungetbyte(VALUE io, VALUE b);
-VALUE rb_io_close(VALUE io);
-VALUE rb_io_flush(VALUE io);
-VALUE rb_io_eof(VALUE io);
-VALUE rb_io_binmode(VALUE io);
-VALUE rb_io_ascii8bit_binmode(VALUE io);
-VALUE rb_io_addstr(VALUE io, VALUE str);
-VALUE rb_io_printf(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_print(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_fdopen(int fd, int flags, const char *path);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_open(const char *fname, const char *fmode);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_open_str(VALUE fname, const char *fmode);
-VALUE rb_gets(void);
-__attribute__((__nonnull__ ()))
-void rb_write_error(const char *str);
-void rb_write_error2(const char *str, long len);
-void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
-__attribute__((__nonnull__ ()))
-int rb_pipe(int *pipes);
-int rb_reserved_fd_p(int fd);
-int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
-int rb_cloexec_dup(int oldfd);
-int rb_cloexec_dup2(int oldfd, int newfd);
-__attribute__((__nonnull__ ()))
-int rb_cloexec_pipe(int fildes[2]);
-int rb_cloexec_fcntl_dupfd(int fd, int minfd);
-void rb_update_max_fd(int fd);
-void rb_fd_fix_cloexec(int fd);
-
-void rb_load(VALUE path, int wrap);
-void rb_load_protect(VALUE path, int wrap, int *state);
-__attribute__((__nonnull__ ()))
-int rb_provided(const char *feature);
-__attribute__((__nonnull__ (1)))
-int rb_feature_provided(const char *feature, const char **loading);
-__attribute__((__nonnull__ ()))
-void rb_provide(const char *feature);
-VALUE rb_f_require(VALUE self, VALUE feature);
-VALUE rb_require_string(VALUE feature);
-void rb_ext_ractor_safe(_Bool flag);
-
-VALUE rb_marshal_dump(VALUE obj, VALUE port);
-VALUE rb_marshal_load(VALUE port);
-void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
-
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_num_zerodiv(void);
-VALUE rb_num_coerce_bin(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_cmp(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_relop(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_bit(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num2fix(VALUE val);
-VALUE rb_fix2str(VALUE val, int base);
-__attribute__((__const__))
-VALUE rb_dbl_cmp(double lhs, double rhs);
-extern VALUE rb_int_positive_pow(long x, unsigned long y);
-
-VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass);
-VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass);
-VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat);
-int rb_eql(VALUE lhs, VALUE rhs);
-VALUE rb_any_to_s(VALUE obj);
-VALUE rb_inspect(VALUE obj);
-VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass);
-VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
-VALUE rb_obj_alloc(VALUE klass);
-VALUE rb_obj_clone(VALUE obj);
-VALUE rb_obj_dup(VALUE obj);
-VALUE rb_obj_init_copy(VALUE src, VALUE dst);
-VALUE rb_obj_freeze(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_obj_frozen_p(VALUE obj);
-VALUE rb_obj_id(VALUE obj);
-__attribute__((__const__))
-VALUE rb_memory_id(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_class_real(VALUE klass);
-__attribute__((__pure__))
-VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant);
-__attribute__((__pure__))
-VALUE rb_class_superclass(VALUE klass);
-__attribute__((__nonnull__ ()))
-VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_to_integer(VALUE val, const char *mid);
-VALUE rb_check_to_float(VALUE val);
-VALUE rb_to_int(VALUE val);
-VALUE rb_check_to_int(VALUE val);
-VALUE rb_Integer(VALUE val);
-VALUE rb_to_float(VALUE val);
-VALUE rb_Float(VALUE val);
-VALUE rb_String(VALUE val);
-VALUE rb_Array(VALUE val);
-VALUE rb_Hash(VALUE val);
-__attribute__((__nonnull__ ()))
-double rb_cstr_to_dbl(const char *str, int mode);
-double rb_str_to_dbl(VALUE str, int mode);
-
-ID rb_id_attrset(ID id);
-__attribute__((__const__))
-int rb_is_const_id(ID id);
-__attribute__((__const__))
-int rb_is_global_id(ID id);
-__attribute__((__const__))
-int rb_is_instance_id(ID id);
-__attribute__((__const__))
-int rb_is_attrset_id(ID id);
-__attribute__((__const__))
-int rb_is_class_id(ID id);
-__attribute__((__const__))
-int rb_is_local_id(ID id);
-__attribute__((__const__))
-int rb_is_junk_id(ID);
-__attribute__((__nonnull__ ()))
-int rb_symname_p(const char *str);
-VALUE rb_backref_get(void);
-void rb_backref_set(VALUE md);
-VALUE rb_lastline_get(void);
-void rb_lastline_set(VALUE str);
-VALUE rb_sym_all_symbols(void);
-
-
-void rb_last_status_set(int status, pid_t pid);
-VALUE rb_last_status_get(void);
-__attribute__((__nonnull__ ()))
-int rb_proc_exec(const char *cmd);
-__declspec(noreturn)
-VALUE rb_f_exec(int argc, const VALUE *argv);
-pid_t rb_waitpid(pid_t pid, int *status, int flags);
-void rb_syswait(pid_t pid);
-pid_t rb_spawn(int argc, const VALUE *argv);
-pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen);
-VALUE rb_proc_times(VALUE _);
-VALUE rb_detach_process(pid_t pid);
-
-unsigned int rb_genrand_int32(void);
-double rb_genrand_real(void);
-void rb_reset_random_seed(void);
-VALUE rb_random_bytes(VALUE rnd, long n);
-unsigned int rb_random_int32(VALUE rnd);
-double rb_random_real(VALUE rnd);
-unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
-unsigned long rb_genrand_ulong_limited(unsigned long i);
-
-VALUE rb_range_new(VALUE beg, VALUE end, int excl);
-__attribute__((__nonnull__ ()))
-VALUE rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err);
-__attribute__((__nonnull__ ()))
-int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
-
-VALUE rb_rational_raw(VALUE num, VALUE den);
-VALUE rb_rational_new(VALUE num, VALUE den);
-VALUE rb_Rational(VALUE num, VALUE den);
-__attribute__((__pure__))
-VALUE rb_rational_num(VALUE rat);
-__attribute__((__pure__))
-VALUE rb_rational_den(VALUE rat);
-VALUE rb_flt_rationalize_with_prec(VALUE flt, VALUE prec);
-VALUE rb_flt_rationalize(VALUE flt);
-
-int rb_memcicmp(const void *s1,const void *s2, long n);
-void rb_match_busy(VALUE md);
-VALUE rb_reg_nth_defined(int n, VALUE md);
-VALUE rb_reg_nth_match(int n, VALUE md);
-int rb_reg_backref_number(VALUE match, VALUE backref);
-VALUE rb_reg_last_match(VALUE md);
-VALUE rb_reg_match_pre(VALUE md);
-VALUE rb_reg_match_post(VALUE md);
-VALUE rb_reg_match_last(VALUE md);
-VALUE rb_reg_new_str(VALUE src, int opts);
-__attribute__((__nonnull__ ()))
-VALUE rb_reg_new(const char *src, long len, int opts);
-VALUE rb_reg_alloc(void);
-VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
-VALUE rb_reg_match(VALUE re, VALUE str);
-VALUE rb_reg_match2(VALUE re);
-int rb_reg_options(VALUE re);
-
-extern VALUE rb_argv0;
-VALUE rb_get_argv(void);
-__attribute__((__nonnull__ ()))
-void *rb_load_file(const char *file);
-void *rb_load_file_str(VALUE file);
-
-
-struct timeval;
-typedef struct {
- int maxfd;
- fd_set *fdset;
-} rb_fdset_t;
-__attribute__((__nonnull__ ()))
-void rb_fd_init(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_term(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_zero(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_set(int fd, rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_clr(int fd, rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-int rb_fd_isset(int fd, const rb_fdset_t *f);
-void rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max);
-void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
-int rb_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-static inline fd_set *
-rb_fd_ptr(const rb_fdset_t *f)
-{
- return f->fdset;
-}
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-static inline int
-rb_fd_max(const rb_fdset_t *f)
-{
- return f->maxfd;
-}
-struct timeval;
-int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
-
-__attribute__((__nonnull__ ()))
-VALUE rb_f_kill(int argc, const VALUE *argv);
-void (*ruby_posix_signal(int, void (*)(int)))(int);
-__attribute__((__pure__))
-const char *ruby_signal_name(int signo);
-void ruby_default_signal(int sig);
-
-VALUE rb_f_sprintf(int argc, const VALUE *argv);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-VALUE rb_sprintf(const char *fmt, ...);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 0)))
-VALUE rb_vsprintf(const char *fmt, va_list ap);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-VALUE rb_str_catf(VALUE dst, const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 0)))
-VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap);
-VALUE rb_str_format(int argc, const VALUE *argv, VALUE fmt);
-
-VALUE rb_str_new(const char *ptr, long len);
-VALUE rb_str_new_cstr(const char *ptr);
-VALUE rb_str_new_shared(VALUE str);
-VALUE rb_str_new_frozen(VALUE str);
-VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len);
-VALUE rb_external_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_external_str_new_cstr(const char *ptr);
-VALUE rb_locale_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_locale_str_new_cstr(const char *ptr);
-VALUE rb_filesystem_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_filesystem_str_new_cstr(const char *ptr);
-VALUE rb_str_buf_new(long capa);
-__attribute__((__nonnull__ ()))
-VALUE rb_str_buf_new_cstr(const char *ptr);
-VALUE rb_str_tmp_new(long len);
-VALUE rb_usascii_str_new(const char *ptr, long len);
-VALUE rb_usascii_str_new_cstr(const char *ptr);
-VALUE rb_utf8_str_new(const char *ptr, long len);
-VALUE rb_utf8_str_new_cstr(const char *ptr);
-VALUE rb_str_new_static(const char *ptr, long len);
-VALUE rb_usascii_str_new_static(const char *ptr, long len);
-VALUE rb_utf8_str_new_static(const char *ptr, long len);
-VALUE rb_str_to_interned_str(VALUE str);
-VALUE rb_interned_str(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_interned_str_cstr(const char *ptr);
-void rb_str_free(VALUE str);
-void rb_str_shared_replace(VALUE dst, VALUE src);
-VALUE rb_str_buf_append(VALUE dst, VALUE src);
-VALUE rb_str_buf_cat(VALUE, const char*, long);
-VALUE rb_str_buf_cat2(VALUE, const char*);
-__attribute__((__nonnull__ ()))
-VALUE rb_str_buf_cat_ascii(VALUE dst, const char *src);
-VALUE rb_obj_as_string(VALUE obj);
-VALUE rb_check_string_type(VALUE obj);
-void rb_must_asciicompat(VALUE obj);
-VALUE rb_str_dup(VALUE str);
-VALUE rb_str_resurrect(VALUE str);
-VALUE rb_str_locktmp(VALUE str);
-VALUE rb_str_unlocktmp(VALUE str);
-VALUE rb_str_dup_frozen(VALUE);
-VALUE rb_str_plus(VALUE lhs, VALUE rhs);
-VALUE rb_str_times(VALUE str, VALUE num);
-long rb_str_sublen(VALUE str, long pos);
-VALUE rb_str_substr(VALUE str, long beg, long len);
-VALUE rb_str_subseq(VALUE str, long beg, long len);
-char *rb_str_subpos(VALUE str, long beg, long *len);
-void rb_str_modify(VALUE str);
-void rb_str_modify_expand(VALUE str, long capa);
-VALUE rb_str_freeze(VALUE str);
-void rb_str_set_len(VALUE str, long len);
-VALUE rb_str_resize(VALUE str, long len);
-VALUE rb_str_cat(VALUE dst, const char *src, long srclen);
-VALUE rb_str_cat_cstr(VALUE dst, const char *src);
-VALUE rb_str_cat2(VALUE, const char*);
-VALUE rb_str_append(VALUE dst, VALUE src);
-VALUE rb_str_concat(VALUE dst, VALUE src);
-st_index_t rb_memhash(const void *ptr, long len);
-st_index_t rb_hash_start(st_index_t i);
-st_index_t rb_str_hash(VALUE str);
-int rb_str_hash_cmp(VALUE str1, VALUE str2);
-int rb_str_comparable(VALUE str1, VALUE str2);
-int rb_str_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_str_equal(VALUE str1, VALUE str2);
-VALUE rb_str_drop_bytes(VALUE str, long len);
-void rb_str_update(VALUE dst, long beg, long len, VALUE src);
-VALUE rb_str_replace(VALUE dst, VALUE src);
-VALUE rb_str_inspect(VALUE str);
-VALUE rb_str_dump(VALUE str);
-VALUE rb_str_split(VALUE str, const char *delim);
-rb_gvar_setter_t rb_str_setter;
-VALUE rb_str_intern(VALUE str);
-VALUE rb_sym_to_s(VALUE sym);
-long rb_str_strlen(VALUE str);
-VALUE rb_str_length(VALUE);
-long rb_str_offset(VALUE str, long pos);
-__attribute__((__pure__))
-size_t rb_str_capacity(VALUE str);
-VALUE rb_str_ellipsize(VALUE str, long len);
-VALUE rb_str_scrub(VALUE str, VALUE repl);
-VALUE rb_str_succ(VALUE orig);
-__attribute__((__nonnull__ ()))
-static inline long
-rbimpl_strlen(const char *str)
-{
- return ((long)strlen(str));
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_usascii_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_usascii_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_utf8_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_utf8_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_external_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_external_str_new(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_locale_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_locale_str_new(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_buf_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- VALUE buf = rb_str_buf_new(len);
- return rb_str_buf_cat(buf, str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_cat_cstr(VALUE buf, const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_str_cat(buf, str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_exc_new_cstr(VALUE exc, const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_exc_new(exc, str, len);
-}
-
-VALUE rb_struct_new(VALUE klass, ...);
-VALUE rb_struct_define(const char *name, ...);
-__attribute__((__nonnull__ (2)))
-VALUE rb_struct_define_under(VALUE space, const char *name, ...);
-VALUE rb_struct_alloc(VALUE klass, VALUE values);
-VALUE rb_struct_initialize(VALUE self, VALUE values);
-VALUE rb_struct_getmember(VALUE self, ID key);
-VALUE rb_struct_s_members(VALUE klass);
-VALUE rb_struct_members(VALUE self);
-VALUE rb_struct_alloc_noinit(VALUE klass);
-VALUE rb_struct_define_without_accessor(const char *name, VALUE super, rb_alloc_func_t func, ...);
-__attribute__((__nonnull__ (2)))
-VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
-
-struct timeval;
-void rb_thread_schedule(void);
-int rb_thread_wait_fd(int fd);
-int rb_thread_fd_writable(int fd);
-void rb_thread_fd_close(int fd);
-int rb_thread_alone(void);
-void rb_thread_sleep(int sec);
-void rb_thread_sleep_forever(void);
-void rb_thread_sleep_deadly(void);
-VALUE rb_thread_stop(void);
-VALUE rb_thread_wakeup(VALUE thread);
-VALUE rb_thread_wakeup_alive(VALUE thread);
-VALUE rb_thread_run(VALUE thread);
-VALUE rb_thread_kill(VALUE thread);
-__attribute__((__nonnull__ (1)))
-VALUE rb_thread_create(VALUE (*f)(void *g), void *g);
-void rb_thread_wait_for(struct timeval time);
-VALUE rb_thread_current(void);
-VALUE rb_thread_main(void);
-VALUE rb_thread_local_aref(VALUE thread, ID key);
-VALUE rb_thread_local_aset(VALUE thread, ID key, VALUE val);
-void rb_thread_atfork(void);
-void rb_thread_atfork_before_exec(void);
-VALUE rb_exec_recursive(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
-VALUE rb_exec_recursive_paired(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
-VALUE rb_exec_recursive_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
-VALUE rb_exec_recursive_paired_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
-typedef void rb_unblock_function_t(void *);
-typedef VALUE rb_blocking_function_t(void *);
-void rb_thread_check_ints(void);
-int rb_thread_interrupted(VALUE thval);
-VALUE rb_mutex_new(void);
-VALUE rb_mutex_locked_p(VALUE mutex);
-VALUE rb_mutex_trylock(VALUE mutex);
-VALUE rb_mutex_lock(VALUE mutex);
-VALUE rb_mutex_unlock(VALUE mutex);
-VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
-VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
-
-struct timespec;
-struct timeval;
-__attribute__((__nonnull__ ()))
-void rb_timespec_now(struct timespec *ts);
-VALUE rb_time_new(time_t sec, long usec);
-VALUE rb_time_nano_new(time_t sec, long nsec);
-__attribute__((__nonnull__ ()))
-VALUE rb_time_timespec_new(const struct timespec *ts, int offset);
-VALUE rb_time_num_new(VALUE timev, VALUE off);
-struct timeval rb_time_interval(VALUE num);
-struct timeval rb_time_timeval(VALUE time);
-struct timespec rb_time_timespec(VALUE time);
-struct timespec rb_time_timespec_interval(VALUE num);
-VALUE rb_time_utc_offset(VALUE time);
-
-VALUE rb_mod_name(VALUE mod);
-VALUE rb_class_path(VALUE mod);
-VALUE rb_class_path_cached(VALUE mod);
-__attribute__((__nonnull__ ()))
-void rb_set_class_path(VALUE klass, VALUE space, const char *name);
-void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name);
-VALUE rb_path_to_class(VALUE path);
-__attribute__((__nonnull__ ()))
-VALUE rb_path2class(const char *path);
-VALUE rb_class_name(VALUE obj);
-VALUE rb_autoload_load(VALUE space, ID name);
-VALUE rb_autoload_p(VALUE space, ID name);
-VALUE rb_f_trace_var(int argc, const VALUE *argv);
-VALUE rb_f_untrace_var(int argc, const VALUE *argv);
-VALUE rb_f_global_variables(void);
-void rb_alias_variable(ID dst, ID src);
-void rb_free_generic_ivar(VALUE obj);
-VALUE rb_ivar_get(VALUE obj, ID name);
-VALUE rb_ivar_set(VALUE obj, ID name, VALUE val);
-VALUE rb_ivar_defined(VALUE obj, ID name);
-void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg);
-st_index_t rb_ivar_count(VALUE obj);
-VALUE rb_attr_get(VALUE obj, ID name);
-VALUE rb_obj_instance_variables(VALUE obj);
-VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name);
-void *rb_mod_const_at(VALUE, void*);
-void *rb_mod_const_of(VALUE, void*);
-VALUE rb_const_list(void*);
-VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_remove_const(VALUE space, VALUE name);
-int rb_const_defined(VALUE space, ID name);
-int rb_const_defined_at(VALUE space, ID name);
-int rb_const_defined_from(VALUE space, ID name);
-VALUE rb_const_get(VALUE space, ID name);
-VALUE rb_const_get_at(VALUE space, ID name);
-VALUE rb_const_get_from(VALUE space, ID name);
-void rb_const_set(VALUE space, ID name, VALUE val);
-VALUE rb_const_remove(VALUE space, ID name);
-VALUE rb_cvar_defined(VALUE klass, ID name);
-void rb_cvar_set(VALUE klass, ID name, VALUE val);
-VALUE rb_cvar_get(VALUE klass, ID name);
-__attribute__((__nonnull__ ()))
-VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front);
-__attribute__((__nonnull__ ()))
-void rb_cv_set(VALUE klass, const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-VALUE rb_cv_get(VALUE klass, const char *name);
-__attribute__((__nonnull__ ()))
-void rb_define_class_variable(VALUE, const char*, VALUE);
-VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_remove_cvar(VALUE mod, VALUE name);
-int ruby_native_thread_p(void);
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 4)))
-int ruby_snprintf(char *str, size_t n, char const *fmt, ...);
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 0)))
-int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
-
-
-extern const char *const sys_signame[32];
-extern const char *const sys_siglist[32];
-int raise(int);
-void (* _Nullable bsd_signal(int, void (* _Nullable)(int)))(int);
-int kill(pid_t, int) __asm("_" "kill" );
-int killpg(pid_t, int) __asm("_" "killpg" );
-int pthread_kill(pthread_t, int);
-int pthread_sigmask(int, const sigset_t *, sigset_t *) __asm("_" "pthread_sigmask" );
-int sigaction(int, const struct sigaction * __restrict__,
- struct sigaction * __restrict__);
-int sigaddset(sigset_t *, int);
-int sigaltstack(const stack_t * __restrict__, stack_t * __restrict__) __asm("_" "sigaltstack" ) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int sigdelset(sigset_t *, int);
-int sigemptyset(sigset_t *);
-int sigfillset(sigset_t *);
-int sighold(int);
-int sigignore(int);
-int siginterrupt(int, int);
-int sigismember(const sigset_t *, int);
-int sigpause(int) __asm("_" "sigpause" );
-int sigpending(sigset_t *);
-int sigprocmask(int, const sigset_t * __restrict__, sigset_t * __restrict__);
-int sigrelse(int);
-void (* _Nullable sigset(int, void (* _Nullable)(int)))(int);
-int sigsuspend(const sigset_t *) __asm("_" "sigsuspend" );
-int sigwait(const sigset_t * __restrict__, int * __restrict__) __asm("_" "sigwait" );
-void psignal(unsigned int, const char *);
-int sigblock(int);
-int sigsetmask(int);
-int sigvec(int, struct sigvec *, struct sigvec *);
-inline __attribute__ ((__always_inline__)) int
-__sigbits(int __signo)
-{
- return __signo > 32 ? 0 : (1 << (__signo - 1));
-}
-
-typedef int jmp_buf[((14 + 8 + 2) * 2)];
-typedef int sigjmp_buf[((14 + 8 + 2) * 2) + 1];
-extern int setjmp(jmp_buf);
-extern void longjmp(jmp_buf, int) __attribute__((__noreturn__));
-int _setjmp(jmp_buf);
-void _longjmp(jmp_buf, int) __attribute__((__noreturn__));
-int sigsetjmp(sigjmp_buf, int);
-void siglongjmp(sigjmp_buf, int) __attribute__((__noreturn__));
-void longjmperror(void);
-static inline char *container_of_or_null_(void *member_ptr, size_t offset)
-{
- return member_ptr ? (char *)member_ptr - offset : ((void*)0);
-}
-struct ccan_list_node
-{
- struct ccan_list_node *next, *prev;
-};
-struct ccan_list_head
-{
- struct ccan_list_node n;
-};
-static inline void ccan_list_head_init(struct ccan_list_head *h)
-{
- h->n.next = h->n.prev = &h->n;
-}
-static inline void ccan_list_node_init(struct ccan_list_node *n)
-{
- n->next = n->prev = n;
-}
-static inline void ccan_list_add_after_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- n->next = p->next;
- n->prev = p;
- p->next->prev = n;
- p->next = n;
- (void)((void)abortstr, h);
-}
-static inline void ccan_list_add_(struct ccan_list_head *h,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- ccan_list_add_after_(h, &h->n, n, abortstr);
-}
-static inline void ccan_list_add_before_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- n->next = p;
- n->prev = p->prev;
- p->prev->next = n;
- p->prev = n;
- (void)((void)abortstr, h);
-}
-static inline void ccan_list_add_tail_(struct ccan_list_head *h,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- ccan_list_add_before_(h, &h->n, n, abortstr);
-}
-static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* abortstr)
-{
- (void)((void)abortstr, h);
- return h->n.next == &h->n;
-}
-static inline _Bool ccan_list_empty_nocheck(const struct ccan_list_head *h)
-{
- return h->n.next == &h->n;
-}
-static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr)
-{
- (void)((void)abortstr, n);
- n->next->prev = n->prev;
- n->prev->next = n->next;
-}
-static inline void ccan_list_del_init_(struct ccan_list_node *n, const char *abortstr)
-{
- ccan_list_del_(n, abortstr);
- ccan_list_node_init(n);
-}
-static inline void ccan_list_del_from(struct ccan_list_head *h, struct ccan_list_node *n)
-{
- ((void)0);
- ccan_list_del_(n, "./ccan/list/list.h" ":" "329");
-}
-static inline void ccan_list_swap_(struct ccan_list_node *o,
- struct ccan_list_node *n,
- const char* abortstr)
-{
- (void)((void)abortstr, o);
- *n = *o;
- n->next->prev = n;
- n->prev->next = n;
-}
-static inline const void *ccan_list_top_(const struct ccan_list_head *h, size_t off)
-{
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "399"))
- return ((void*)0);
- return (const char *)h->n.next - off;
-}
-static inline const void *ccan_list_pop_(const struct ccan_list_head *h, size_t off)
-{
- struct ccan_list_node *n;
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "425"))
- return ((void*)0);
- n = h->n.next;
- ccan_list_del_(n, "./ccan/list/list.h" ":" "428");
- return (const char *)n - off;
-}
-static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t off)
-{
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "451"))
- return ((void*)0);
- return (const char *)h->n.prev - off;
-}
-static inline void ccan_list_append_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
- const char *abortstr)
-{
- struct ccan_list_node *from_tail = ((void)abortstr, from)->n.prev;
- struct ccan_list_node *to_tail = ((void)abortstr, to)->n.prev;
- to->n.prev = from_tail;
- from_tail->next = &to->n;
- to_tail->next = &from->n;
- from->n.prev = to_tail;
- ccan_list_del_(&from->n, "./ccan/list/list.h" ":" "600");
- ccan_list_head_init(from);
-}
-static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
- const char *abortstr)
-{
- struct ccan_list_node *from_tail = ((void)abortstr, from)->n.prev;
- struct ccan_list_node *to_head = ((void)abortstr, to)->n.next;
- to->n.next = &from->n;
- from->n.prev = &to->n;
- to_head->prev = from_tail;
- from_tail->next = to_head;
- ccan_list_del_(&from->n, "./ccan/list/list.h" ":" "632");
- ccan_list_head_init(from);
-}
-static inline void *ccan_list_node_to_off_(struct ccan_list_node *node, size_t off)
-{
- return (void *)((char *)node - off);
-}
-static inline struct ccan_list_node *ccan_list_node_from_off_(void *ptr, size_t off)
-{
- return (struct ccan_list_node *)((char *)ptr + off);
-}
-static inline void *ccan_list_entry_or_null(const struct ccan_list_head *h,
- const struct ccan_list_node *n,
- size_t off)
-{
- if (n == &h->n)
- return ((void*)0);
- return (char *)n - off;
-}
-enum ruby_id_types {
- RUBY_ID_STATIC_SYM = 0x01,
- RUBY_ID_LOCAL = 0x00,
- RUBY_ID_INSTANCE = (0x01<<1),
- RUBY_ID_GLOBAL = (0x03<<1),
- RUBY_ID_ATTRSET = (0x04<<1),
- RUBY_ID_CONST = (0x05<<1),
- RUBY_ID_CLASS = (0x06<<1),
- RUBY_ID_JUNK = (0x07<<1),
- RUBY_ID_INTERNAL = RUBY_ID_JUNK,
- RUBY_ID_SCOPE_SHIFT = 4,
- RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
-};
-enum ruby_method_ids {
- idDot2 = 128,
- idDot3 = 129,
- idUPlus = 132,
- idUMinus = 133,
- idPow = 134,
- idCmp = 135,
- idPLUS = '+',
- idMINUS = '-',
- idMULT = '*',
- idDIV = '/',
- idMOD = '%',
- idLTLT = 136,
- idGTGT = 137,
- idLT = '<',
- idLE = 138,
- idGT = '>',
- idGE = 139,
- idEq = 140,
- idEqq = 141,
- idNeq = 142,
- idNot = '!',
- idAnd = '&',
- idOr = '|',
- idBackquote = '`',
- idEqTilde = 143,
- idNeqTilde = 144,
- idAREF = 145,
- idASET = 146,
- idCOLON2 = 147,
- idANDOP = 148,
- idOROP = 149,
- idANDDOT = 150,
- tPRESERVED_ID_BEGIN = 150,
- idNilP,
- idNULL,
- idEmptyP,
- idEqlP,
- idRespond_to,
- idRespond_to_missing,
- idIFUNC,
- idCFUNC,
- id_core_set_method_alias,
- id_core_set_variable_alias,
- id_core_undef_method,
- id_core_define_method,
- id_core_define_singleton_method,
- id_core_set_postexe,
- id_core_hash_merge_ptr,
- id_core_hash_merge_kwd,
- id_core_raise,
- id_core_sprintf,
- id_debug_created_info,
- tPRESERVED_ID_END,
- tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
- tMax,
- tMin,
- tFreeze,
- tInspect,
- tIntern,
- tObject_id,
- tConst_added,
- tConst_missing,
- tMethodMissing,
- tMethod_added,
- tSingleton_method_added,
- tMethod_removed,
- tSingleton_method_removed,
- tMethod_undefined,
- tSingleton_method_undefined,
- tLength,
- tSize,
- tGets,
- tSucc,
- tEach,
- tProc,
- tLambda,
- tSend,
- t__send__,
- t__attached__,
- t__recursive_key__,
- tInitialize,
- tInitialize_copy,
- tInitialize_clone,
- tInitialize_dup,
- tTo_int,
- tTo_ary,
- tTo_str,
- tTo_sym,
- tTo_hash,
- tTo_proc,
- tTo_io,
- tTo_a,
- tTo_s,
- tTo_i,
- tTo_f,
- tTo_r,
- tBt,
- tBt_locations,
- tCall,
- tMesg,
- tException,
- tLocals,
- tNOT,
- tAND,
- tOR,
- tDiv,
- tDivmod,
- tFdiv,
- tQuo,
- tName,
- tNil,
- tPath,
- tUScore,
- tNUMPARAM_1,
- tNUMPARAM_2,
- tNUMPARAM_3,
- tNUMPARAM_4,
- tNUMPARAM_5,
- tNUMPARAM_6,
- tNUMPARAM_7,
- tNUMPARAM_8,
- tNUMPARAM_9,
- tDefault,
- tTOKEN_LOCAL_END,
- tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
- tTOKEN_INSTANCE_END,
- tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
- tLASTLINE,
- tBACKREF,
- tERROR_INFO,
- tTOKEN_GLOBAL_END,
- tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
- tTOKEN_CONST_END,
- tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
- tTOKEN_CLASS_END,
- tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
- tTOKEN_ATTRSET_END,
- tNEXT_ID = tTOKEN_ATTRSET_END,
- idMax = ((tMax<> RUBY_ID_SCOPE_SHIFT
-};
-
-void rb_obj_info_dump(VALUE obj);
-void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
-void ruby_debug_breakpoint(void);
-__attribute__((__format__(__printf__, (1), (2)))) void ruby_debug_printf(const char*, ...);
-
-
-VALUE rb_ary_last(int, const VALUE *, VALUE);
-void rb_ary_set_len(VALUE, long);
-void rb_ary_delete_same(VALUE, VALUE);
-VALUE rb_ary_hidden_new_fill(long capa);
-VALUE rb_ary_at(VALUE, VALUE);
-size_t rb_ary_memsize(VALUE);
-VALUE rb_to_array_type(VALUE obj);
-VALUE rb_to_array(VALUE obj);
-void rb_ary_cancel_sharing(VALUE ary);
-size_t rb_ary_size_as_embedded(VALUE ary);
-void rb_ary_make_embedded(VALUE ary);
-_Bool rb_ary_embeddable_p(VALUE ary);
-VALUE rb_ary_diff(VALUE ary1, VALUE ary2);
-static inline VALUE rb_ary_entry_internal(VALUE ary, long offset);
-static inline _Bool ARY_PTR_USING_P(VALUE ary);
-static inline void RARY_TRANSIENT_SET(VALUE ary);
-static inline void RARY_TRANSIENT_UNSET(VALUE ary);
-VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
-VALUE rb_check_to_array(VALUE ary);
-VALUE rb_ary_behead(VALUE, long);
-VALUE rb_ary_aref1(VALUE ary, VALUE i);
-struct rb_execution_context_struct;
-VALUE rb_ec_ary_new_from_values(struct rb_execution_context_struct *ec, long n, const VALUE *elts);
-static inline VALUE
-rb_ary_entry_internal(VALUE ary, long offset)
-{
- long len = rb_array_len(ary);
- const VALUE *ptr = rb_array_const_ptr_transient(ary);
- if (len == 0) return ((VALUE)RUBY_Qnil);
- if (offset < 0) {
- offset += len;
- if (offset < 0) return ((VALUE)RUBY_Qnil);
- }
- else if (len <= offset) {
- return ((VALUE)RUBY_Qnil);
- }
- return ptr[offset];
-}
-static inline _Bool
-ARY_PTR_USING_P(VALUE ary)
-{
- return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER14));
-}
-__attribute__((__unused__))
-static inline int
-ary_should_not_be_shared_and_embedded(VALUE ary)
-{
- return !RB_FL_ALL_RAW(ary, RUBY_ELTS_SHARED|RARRAY_EMBED_FLAG);
-}
-static inline _Bool
-ARY_SHARED_P(VALUE ary)
-{
- ((void)0);
- ((void)0);
- return RB_FL_TEST_RAW(ary, RUBY_ELTS_SHARED);
-}
-static inline _Bool
-ARY_EMBED_P(VALUE ary)
-{
- ((void)0);
- ((void)0);
- return RB_FL_TEST_RAW(ary, RARRAY_EMBED_FLAG);
-}
-static inline VALUE
-ARY_SHARED_ROOT(VALUE ary)
-{
- ((void)0);
- return ((struct RArray *)(ary))->as.heap.aux.shared_root;
-}
-static inline _Bool
-ARY_SHARED_ROOT_P(VALUE ary)
-{
- ((void)0);
- return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER12));
-}
-static inline long
-ARY_SHARED_ROOT_REFCNT(VALUE ary)
-{
- ((void)0);
- return ((struct RArray *)(ary))->as.heap.aux.capa;
-}
-static inline void
-RARY_TRANSIENT_SET(VALUE ary)
-{
- RB_FL_SET_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-static inline void
-RARY_TRANSIENT_UNSET(VALUE ary)
-{
- RB_FL_UNSET_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RARRAY_AREF(VALUE ary, long i)
-{
- ((void)0);
- return rb_array_const_ptr_transient(ary)[i];
-}
-
-enum ruby_basic_operators {
- BOP_PLUS,
- BOP_MINUS,
- BOP_MULT,
- BOP_DIV,
- BOP_MOD,
- BOP_EQ,
- BOP_EQQ,
- BOP_LT,
- BOP_LE,
- BOP_LTLT,
- BOP_AREF,
- BOP_ASET,
- BOP_LENGTH,
- BOP_SIZE,
- BOP_EMPTY_P,
- BOP_NIL_P,
- BOP_SUCC,
- BOP_GT,
- BOP_GE,
- BOP_NOT,
- BOP_NEQ,
- BOP_MATCH,
- BOP_FREEZE,
- BOP_UMINUS,
- BOP_MAX,
- BOP_MIN,
- BOP_CALL,
- BOP_AND,
- BOP_OR,
- BOP_CMP,
- BOP_DEFAULT,
- BOP_LAST_
-};
-extern short ruby_vm_redefined_flag[BOP_LAST_];
-
-typedef unsigned
- long long
- rb_serial_t;
-
-struct rb_callable_method_entry_struct;
-struct rb_method_definition_struct;
-struct rb_execution_context_struct;
-struct rb_control_frame_struct;
-struct rb_callinfo;
-enum method_missing_reason {
- MISSING_NOENTRY = 0x00,
- MISSING_PRIVATE = 0x01,
- MISSING_PROTECTED = 0x02,
- MISSING_FCALL = 0x04,
- MISSING_VCALL = 0x08,
- MISSING_SUPER = 0x10,
- MISSING_MISSING = 0x20,
- MISSING_NONE = 0x40
-};static inline
-VALUE rb_vm_push_frame_fname(struct rb_execution_context_struct *ec, VALUE fname);
-VALUE rb_obj_is_thread(VALUE obj);
-void rb_vm_mark(void *ptr);
-void rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx);
-__attribute__((__pure__)) VALUE rb_vm_top_self(void);
-const void **rb_vm_get_insns_address_table(void);
-VALUE rb_source_location(int *pline);
-const char *rb_source_location_cstr(int *pline);
-static void rb_vm_pop_cfunc_frame(void);
-int rb_vm_add_root_module(VALUE module);
-void rb_vm_check_redefinition_by_prepend(VALUE klass);
-int rb_vm_check_optimizable_mid(VALUE mid);
-VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
-static VALUE ruby_vm_special_exception_copy(VALUE);
-__attribute__((__pure__)) st_table *rb_vm_fstring_table(void);
-VALUE rb_vm_exec(struct rb_execution_context_struct *, _Bool);
-VALUE rb_current_realfilepath(void);
-VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
-typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
-VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
- rb_check_funcall_hook *hook, VALUE arg);
-VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv,
- rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
-const char *rb_type_str(enum ruby_value_type type);
-VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
-VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE, int, const VALUE*, int);
-VALUE rb_yield_1(VALUE val);
-VALUE rb_yield_force_blockarg(VALUE values);
-VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
- rb_block_call_func_t bl_proc, int min_argc, int max_argc,
- VALUE data2);
-void rb_check_stack_overflow(void);
-VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
-VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
-struct rb_iseq_struct;
-const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
-struct rb_execution_context_struct;
-int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
-void rb_clear_constant_cache(void);
-void rb_print_backtrace(void);
-VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
-VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval);
-VALUE rb_vm_backtrace(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
-VALUE rb_vm_backtrace_locations(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
-VALUE rb_make_backtrace(void);
-void rb_backtrace_print_as_bugreport(void);
-int rb_backtrace_p(VALUE obj);
-VALUE rb_backtrace_to_str_ary(VALUE obj);
-VALUE rb_backtrace_to_location_ary(VALUE obj);
-void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
-int rb_frame_info_p(VALUE obj);
-int rb_get_node_id_from_frame_info(VALUE obj);
-const struct rb_iseq_struct *rb_get_iseq_from_frame_info(VALUE obj);
-VALUE rb_ec_backtrace_object(const struct rb_execution_context_struct *ec);
-void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self);
-
-
-
-
-
-
-
-
-struct rb_execution_context_struct;
-struct rb_objspace;
-
-typedef struct ractor_newobj_size_pool_cache {
- struct RVALUE *freelist;
- struct heap_page *using_page;
-} rb_ractor_newobj_size_pool_cache_t;
-typedef struct ractor_newobj_cache {
- size_t incremental_mark_step_allocated_slots;
- rb_ractor_newobj_size_pool_cache_t size_pool_caches[5];
-} rb_ractor_newobj_cache_t;
-extern VALUE *ruby_initial_gc_stress_ptr;
-extern int ruby_disable_gc;
-__attribute__((__malloc__)) void *ruby_mimmalloc(size_t size);
-void ruby_mimfree(void *ptr);
-void rb_objspace_set_event_hook(const rb_event_flag_t event);
-VALUE rb_objspace_gc_enable(struct rb_objspace *);
-VALUE rb_objspace_gc_disable(struct rb_objspace *);
-void ruby_gc_set_params(void);
-void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
-__attribute__((__alloc_align__(1)))
-__attribute__((__malloc__)) void *rb_aligned_malloc(size_t, size_t) __attribute__((__alloc_size__ (2)));
-size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
-size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
-__attribute__((__malloc__)) void *rb_xmalloc_mul_add(size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xcalloc_mul_add(size_t, size_t, size_t);
-void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t);
-static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
-static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
-static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
-VALUE rb_class_allocate_instance(VALUE klass);
-void rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache);
-size_t rb_gc_obj_slot_size(VALUE obj);
-_Bool rb_gc_size_allocatable_p(size_t size);
-int rb_objspace_garbage_object_p(VALUE obj);
-const char *rb_objspace_data_type_name(VALUE obj);
-VALUE rb_wb_protected_newobj_of(VALUE, VALUE, size_t);
-VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t);
-VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags, size_t);
-size_t rb_obj_memsize_of(VALUE);
-void rb_gc_verify_internal_consistency(void);
-size_t rb_obj_gc_flags(VALUE, ID[], size_t);
-void rb_gc_mark_values(long n, const VALUE *values);
-void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
-void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
-void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
-void ruby_sized_xfree(void *x, size_t size);
-int rb_ec_stack_check(struct rb_execution_context_struct *ec);
-void rb_gc_writebarrier_remember(VALUE obj);
-const char *rb_obj_info(VALUE obj);
-static inline void *
-ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
-{
- return ruby_xrealloc(ptr, new_size);
-}
-static inline void *
-ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
-{
- return ruby_xrealloc2(ptr, new_count, elemsiz);
-}
-static inline void
-ruby_sized_xfree_inlined(void *ptr, size_t size)
-{
- ruby_xfree(ptr);
-}
-enum imemo_type {
- imemo_env = 0,
- imemo_cref = 1,
- imemo_svar = 2,
- imemo_throw_data = 3,
- imemo_ifunc = 4,
- imemo_memo = 5,
- imemo_ment = 6,
- imemo_iseq = 7,
- imemo_tmpbuf = 8,
- imemo_ast = 9,
- imemo_parser_strterm = 10,
- imemo_callinfo = 11,
- imemo_callcache = 12,
- imemo_constcache = 13,
-};
-struct vm_svar {
- VALUE flags;
- const VALUE cref_or_me;
- const VALUE lastline;
- const VALUE backref;
- const VALUE others;
-};
-struct vm_throw_data {
- VALUE flags;
- VALUE reserved;
- const VALUE throw_obj;
- const struct rb_control_frame_struct *catch_frame;
- int throw_state;
-};
-struct vm_ifunc_argc {
- int min, max;
-};
-struct vm_ifunc {
- VALUE flags;
- VALUE reserved;
- rb_block_call_func_t func;
- const void *data;
- struct vm_ifunc_argc argc;
-};
-struct rb_imemo_tmpbuf_struct {
- VALUE flags;
- VALUE reserved;
- VALUE *ptr;
- struct rb_imemo_tmpbuf_struct *next;
- size_t cnt;
-};
-struct MEMO {
- VALUE flags;
- VALUE reserved;
- const VALUE v1;
- const VALUE v2;
- union {
- long cnt;
- long state;
- const VALUE value;
- void (*func)(void);
- } u3;
-};
-typedef struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t;
-rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
-struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
-void rb_strterm_mark(VALUE obj);
-static inline enum imemo_type imemo_type(VALUE imemo);
-static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type);
-static inline _Bool imemo_throw_data_p(VALUE imemo);
-static inline struct vm_ifunc *rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data);
-static inline VALUE rb_imemo_tmpbuf_auto_free_pointer(void);
-static inline void *RB_IMEMO_TMPBUF_PTR(VALUE v);
-static inline void *rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr);
-static inline VALUE rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str);
-static inline void MEMO_V1_SET(struct MEMO *m, VALUE v);
-static inline void MEMO_V2_SET(struct MEMO *m, VALUE v);
-VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
-const char *rb_imemo_name(enum imemo_type type);
-static inline enum imemo_type
-imemo_type(VALUE imemo)
-{
- return (((struct RBasic *)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
-}
-static inline int
-imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
-{
- if ((__builtin_expect(!!(!RB_SPECIAL_CONST_P(imemo)), 1))) {
- const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
- const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
- return expected_type == (((struct RBasic *)(imemo))->flags & mask);
- }
- else {
- return 0;
- }
-}
-static inline _Bool
-imemo_throw_data_p(VALUE imemo)
-{
- return (__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((imemo), (RUBY_T_IMEMO)) : (RB_TYPE_P)((imemo), (RUBY_T_IMEMO)));
-}
-static inline struct vm_ifunc *
-rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
-{
- return rb_vm_ifunc_new(func, data, 0, (-1));
-}
-static inline VALUE
-rb_imemo_tmpbuf_auto_free_pointer(void)
-{
- return rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
-}
-static inline void *
-RB_IMEMO_TMPBUF_PTR(VALUE v)
-{
- const struct rb_imemo_tmpbuf_struct *p = (const void *)v;
- return p->ptr;
-}
-static inline void *
-rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
-{
- return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
-}
-static inline VALUE
-rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
-{
- const void *src;
- VALUE imemo;
- rb_imemo_tmpbuf_t *tmpbuf;
- void *dst;
- size_t len;
- rb_string_value(&(str));
- imemo = rb_imemo_tmpbuf_auto_free_pointer();
- tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
- len = RSTRING_LEN(str);
- src = RSTRING_PTR(str);
- dst = ruby_xmalloc(len);
- ruby_nonempty_memcpy(dst, src, len);
- tmpbuf->ptr = dst;
- return imemo;
-}
-static inline void
-MEMO_V1_SET(struct MEMO *m, VALUE v)
-{
- rb_obj_write((VALUE)(m), __extension__({
- ;
- ; __typeof__((VALUE *)(&m->v1)) unaligned_member_access_result = ((VALUE *)(&m->v1));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 233);
-}
-static inline void
-MEMO_V2_SET(struct MEMO *m, VALUE v)
-{
- rb_obj_write((VALUE)(m), __extension__({
- ;
- ; __typeof__((VALUE *)(&m->v2)) unaligned_member_access_result = ((VALUE *)(&m->v2));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 239);
-}
-typedef enum {
- METHOD_VISI_UNDEF = 0x00,
- METHOD_VISI_PUBLIC = 0x01,
- METHOD_VISI_PRIVATE = 0x02,
- METHOD_VISI_PROTECTED = 0x03,
- METHOD_VISI_MASK = 0x03
-} rb_method_visibility_t;
-typedef struct rb_scope_visi_struct {
- rb_method_visibility_t method_visi : 3;
- unsigned int module_func : 1;
-} rb_scope_visibility_t;
-typedef struct rb_cref_struct {
- VALUE flags;
- VALUE refinements;
- VALUE klass_or_self;
- struct rb_cref_struct * next;
- const rb_scope_visibility_t scope_visi;
-} rb_cref_t;
-typedef struct rb_method_entry_struct {
- VALUE flags;
- VALUE defined_class;
- struct rb_method_definition_struct * const def;
- ID called_id;
- VALUE owner;
-} rb_method_entry_t;
-typedef struct rb_callable_method_entry_struct {
- VALUE flags;
- const VALUE defined_class;
- struct rb_method_definition_struct * const def;
- ID called_id;
- const VALUE owner;
-} rb_callable_method_entry_t;
-static inline void
-METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
-{
- ((void)0);
- me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
-}
-static inline void
-METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
-{
- ((void)0);
- me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
-}
-static inline void
-METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
-{
- ((void)0);
- ((void)0);
- me->flags =
- (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
- ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
-}
-static inline void
-METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
-{
- dst->flags =
- (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
- (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
-}
-typedef enum {
- VM_METHOD_TYPE_ISEQ,
- VM_METHOD_TYPE_CFUNC,
- VM_METHOD_TYPE_ATTRSET,
- VM_METHOD_TYPE_IVAR,
- VM_METHOD_TYPE_BMETHOD,
- VM_METHOD_TYPE_ZSUPER,
- VM_METHOD_TYPE_ALIAS,
- VM_METHOD_TYPE_UNDEF,
- VM_METHOD_TYPE_NOTIMPLEMENTED,
- VM_METHOD_TYPE_OPTIMIZED,
- VM_METHOD_TYPE_MISSING,
- VM_METHOD_TYPE_REFINED,
-} rb_method_type_t;
-__extension__ _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<beg_pos;
- loc.end_pos = loc2->end_pos;
- return loc;
-}
-typedef struct rb_ast_id_table {
- int size;
- ID ids[];
-} rb_ast_id_table_t;
-typedef struct RNode {
- VALUE flags;
- union {
- struct RNode *node;
- ID id;
- VALUE value;
- rb_ast_id_table_t *tbl;
- } u1;
- union {
- struct RNode *node;
- ID id;
- long argc;
- VALUE value;
- } u2;
- union {
- struct RNode *node;
- ID id;
- long state;
- struct rb_args_info *args;
- struct rb_ary_pattern_info *apinfo;
- struct rb_fnd_pattern_info *fpinfo;
- VALUE value;
- } u3;
- rb_code_location_t nd_loc;
- int node_id;
-} NODE;
-VALUE rb_node_case_when_optimizable_literal(const NODE *const node);
-typedef struct node_buffer_struct node_buffer_t;
-typedef struct rb_ast_body_struct {
- const NODE *root;
- VALUE compile_option;
- VALUE script_lines;
-} rb_ast_body_t;
-typedef struct rb_ast_struct {
- VALUE flags;
- node_buffer_t *node_buffer;
- rb_ast_body_t body;
-} rb_ast_t;
-rb_ast_t *rb_ast_new(void);
-void rb_ast_mark(rb_ast_t*);
-void rb_ast_update_references(rb_ast_t*);
-void rb_ast_dispose(rb_ast_t*);
-void rb_ast_free(rb_ast_t*);
-size_t rb_ast_memsize(const rb_ast_t*);
-void rb_ast_add_mark_object(rb_ast_t*, VALUE);
-void rb_ast_set_tokens(rb_ast_t*, VALUE);
-VALUE rb_ast_tokens(rb_ast_t *ast);
-NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
-void rb_ast_delete_node(rb_ast_t*, NODE *n);
-rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int);
-rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int);
-VALUE rb_parser_new(void);
-VALUE rb_parser_end_seen_p(VALUE);
-VALUE rb_parser_encoding(VALUE);
-VALUE rb_parser_set_yydebug(VALUE, VALUE);
-VALUE rb_parser_dump_tree(const NODE *node, int comment);
-void rb_parser_set_options(VALUE, int, int, int, int);
-rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
-rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
-rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
-rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
-void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
-const char *ruby_node_name(int node);
-const struct kwtable *rb_reserved_word(const char *, unsigned int);
-struct rb_args_info {
- NODE *pre_init;
- NODE *post_init;
- int pre_args_num;
- int post_args_num;
- ID first_post_arg;
- ID rest_arg;
- ID block_arg;
- NODE *kw_args;
- NODE *kw_rest_arg;
- NODE *opt_args;
- unsigned int no_kwarg: 1;
- unsigned int ruby2_keywords: 1;
- unsigned int forwarding: 1;
- VALUE imemo;
-};
-struct rb_ary_pattern_info {
- NODE *pre_args;
- NODE *rest_arg;
- NODE *post_args;
-};
-struct rb_fnd_pattern_info {
- NODE *pre_rest_arg;
- NODE *args;
- NODE *post_rest_arg;
-};
-struct parser_params;
-void *rb_parser_malloc(struct parser_params *, size_t);
-void *rb_parser_realloc(struct parser_params *, void *, size_t);
-void *rb_parser_calloc(struct parser_params *, size_t, size_t);
-void rb_parser_free(struct parser_params *, void *);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_parser_printf(struct parser_params *parser, const char *fmt, ...);
-void rb_ast_node_type_change(NODE *n, enum node_type type);
-static inline VALUE
-rb_node_set_type(NODE *n, enum node_type t)
-{
- return (n)->flags=(((n)->flags&~(((VALUE)0x7f)<<8))|((((unsigned long)(t))<<8)&(((VALUE)0x7f)<<8)));
-}
-static inline _Bool
-nd_type_p(const NODE *n, enum node_type t)
-{
- return (enum node_type)((int) (((n)->flags & (((VALUE)0x7f)<<8))>>8)) == t;
-}
-
-typedef unsigned int rb_atomic_t;
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_fetch_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_fetch_add(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_add_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_add(volatile size_t *ptr, size_t val)
-{
- __atomic_add_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_inc(volatile rb_atomic_t *ptr)
-{
- rbimpl_atomic_add(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_inc(volatile size_t *ptr)
-{
- rbimpl_atomic_size_add(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_fetch_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_fetch_sub(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_sub_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val)
-{
- __atomic_sub_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_dec(volatile rb_atomic_t *ptr)
-{
- rbimpl_atomic_sub(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_dec(volatile size_t *ptr)
-{
- rbimpl_atomic_size_sub(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_or(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_or_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_exchange(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_exchange_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline size_t
-rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val)
-{
- return __atomic_exchange_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void *
-rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t sval = ((size_t)val);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
- return ((void *)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t sval = ((size_t)val);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
- return ((VALUE)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_set(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_store_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_cas(volatile rb_atomic_t *ptr, rb_atomic_t oldval, rb_atomic_t newval)
-{
- __atomic_compare_exchange_n(
- ptr, &oldval, newval, 0, 5, 5);
- return oldval;
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline size_t
-rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval)
-{
- __atomic_compare_exchange_n(
- ptr, &oldval, newval, 0, 5, 5);
- return oldval;
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void *
-rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t snew = ((size_t)newval);
- const size_t sold = ((size_t)oldval);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
- return ((void *)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-rbimpl_atomic_value_cas(volatile VALUE *ptr, VALUE oldval, VALUE newval)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t snew = ((size_t)newval);
- const size_t sold = ((size_t)oldval);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
- return ((VALUE)sret);
-}
-
-
-typedef uint32_t attr_index_t;
-typedef uint32_t shape_id_t;
-struct rb_shape {
- struct rb_id_table * edges;
- ID edge_name;
- attr_index_t next_iv_index;
- uint32_t capacity;
- uint8_t type;
- uint8_t size_pool_index;
- shape_id_t parent_id;
-};
-typedef struct rb_shape rb_shape_t;
-enum shape_type {
- SHAPE_ROOT,
- SHAPE_IVAR,
- SHAPE_FROZEN,
- SHAPE_CAPACITY_CHANGE,
- SHAPE_INITIAL_CAPACITY,
- SHAPE_T_OBJECT,
- SHAPE_OBJ_TOO_COMPLEX,
-};
-static inline shape_id_t
-RBASIC_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return (shape_id_t)((((uintptr_t)1 << 32) - 1) & ((((struct RBasic *)(obj))->flags) >> ((8 * 8) - 32)));
-}
-static inline void
-RBASIC_SET_SHAPE_ID(VALUE obj, shape_id_t shape_id)
-{
- ((struct RBasic *)(obj))->flags &= (((VALUE)-1) >> 32);
- ((struct RBasic *)(obj))->flags |= ((VALUE)(shape_id) << ((8 * 8) - 32));
-}
-static inline shape_id_t
-ROBJECT_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return RBASIC_SHAPE_ID(obj);
-}
-static inline void
-ROBJECT_SET_SHAPE_ID(VALUE obj, shape_id_t shape_id)
-{
- ((void)0);
- RBASIC_SET_SHAPE_ID(obj, shape_id);
-}
-static inline shape_id_t
-RCLASS_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return RBASIC_SHAPE_ID(obj);
-}
-_Bool rb_shape_root_shape_p(rb_shape_t* shape);
-rb_shape_t * rb_shape_get_root_shape(void);
-uint8_t rb_shape_id_num_bits(void);
-int32_t rb_shape_id_offset(void);
-rb_shape_t* rb_shape_get_shape_by_id_without_assertion(shape_id_t shape_id);
-rb_shape_t * rb_shape_get_parent(rb_shape_t * shape);
-rb_shape_t* rb_shape_get_shape_by_id(shape_id_t shape_id);
-shape_id_t rb_shape_get_shape_id(VALUE obj);
-rb_shape_t * rb_shape_get_next_iv_shape(rb_shape_t * shape, ID id);
-_Bool rb_shape_get_iv_index(rb_shape_t * shape, ID id, attr_index_t * value);
-_Bool rb_shape_obj_too_complex(VALUE obj);
-void rb_shape_set_shape(VALUE obj, rb_shape_t* shape);
-rb_shape_t* rb_shape_get_shape(VALUE obj);
-int rb_shape_frozen_shape_p(rb_shape_t* shape);
-void rb_shape_transition_shape_frozen(VALUE obj);
-void rb_shape_transition_shape_remove_ivar(VALUE obj, ID id, rb_shape_t *shape, VALUE * removed);
-rb_shape_t * rb_shape_transition_shape_capa(rb_shape_t * shape, uint32_t new_capacity);
-rb_shape_t* rb_shape_get_next(rb_shape_t* shape, VALUE obj, ID id);
-rb_shape_t * rb_shape_rebuild_shape(rb_shape_t * initial_shape, rb_shape_t * dest_shape);
-static inline uint32_t
-ROBJECT_IV_CAPACITY(VALUE obj)
-{
- ((void)0);
- ((void)0);
- return rb_shape_get_shape_by_id(ROBJECT_SHAPE_ID(obj))->capacity;
-}
-static inline struct rb_id_table *
-ROBJECT_IV_HASH(VALUE obj)
-{
- ((void)0);
- ((void)0);
- return (struct rb_id_table *)((struct RObject *)(obj))->as.heap.ivptr;
-}
-static inline void
-ROBJECT_SET_IV_HASH(VALUE obj, const struct rb_id_table *tbl)
-{
- ((void)0);
- ((void)0);
- ((struct RObject *)(obj))->as.heap.ivptr = (VALUE *)tbl;
-}
-size_t rb_id_table_size(const struct rb_id_table *tbl);
-static inline uint32_t
-ROBJECT_IV_COUNT(VALUE obj)
-{
- if (ROBJECT_SHAPE_ID(obj) == ((5 * 2) + 1)) {
- return (uint32_t)rb_id_table_size(ROBJECT_IV_HASH(obj));
- }
- else {
- ((void)0);
- ((void)0);
- return rb_shape_get_shape_by_id(ROBJECT_SHAPE_ID(obj))->next_iv_index;
- }
-}
-static inline uint32_t
-RBASIC_IV_COUNT(VALUE obj)
-{
- return rb_shape_get_shape_by_id(rb_shape_get_shape_id(obj))->next_iv_index;
-}
-static inline uint32_t
-RCLASS_IV_COUNT(VALUE obj)
-{
- ((void)0);
- uint32_t ivc = rb_shape_get_shape_by_id(RCLASS_SHAPE_ID(obj))->next_iv_index;
- return ivc;
-}
-rb_shape_t * rb_shape_alloc(ID edge_name, rb_shape_t * parent);
-rb_shape_t * rb_shape_alloc_with_size_pool_index(ID edge_name, rb_shape_t * parent, uint8_t size_pool_index);
-rb_shape_t * rb_shape_alloc_with_parent_id(ID edge_name, shape_id_t parent_id);
-rb_shape_t *rb_shape_traverse_from_new_root(rb_shape_t *initial_shape, rb_shape_t *orig_shape);
-_Bool rb_shape_set_shape_id(VALUE obj, shape_id_t shape_id);
-VALUE rb_obj_debug_shape(VALUE self, VALUE obj);
-VALUE rb_shape_flags_mask(void);
-void rb_shape_set_too_complex(VALUE obj);
-typedef void each_shape_callback(rb_shape_t * shape, void *data);
-void rb_shape_each_shape(each_shape_callback callback, void *data);
-size_t rb_shape_memsize(rb_shape_t *shape);
-size_t rb_shape_edges_count(rb_shape_t *shape);
-size_t rb_shape_depth(rb_shape_t *shape);
-shape_id_t rb_shape_id(rb_shape_t * shape);
-
-
-struct sched_param { int sched_priority; char __opaque[4]; };
-extern int sched_yield(void);
-extern int sched_get_priority_min(int);
-extern int sched_get_priority_max(int);
-enum { QOS_CLASS_USER_INTERACTIVE __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x21, QOS_CLASS_USER_INITIATED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x19, QOS_CLASS_DEFAULT __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x15, QOS_CLASS_UTILITY __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x11, QOS_CLASS_BACKGROUND __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x09, QOS_CLASS_UNSPECIFIED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x00, }; typedef unsigned int qos_class_t;
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-qos_class_t
-qos_class_self(void);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-qos_class_t
-qos_class_main(void);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_attr_set_qos_class_np(pthread_attr_t *__attr,
- qos_class_t __qos_class, int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_attr_get_qos_class_np(pthread_attr_t * __restrict__ __attr,
- qos_class_t * _Nullable __restrict__ __qos_class,
- int * _Nullable __restrict__ __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_set_qos_class_self_np(qos_class_t __qos_class,
- int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_get_qos_class_np(pthread_t __pthread,
- qos_class_t * _Nullable __restrict__ __qos_class,
- int * _Nullable __restrict__ __relative_priority);
-typedef struct pthread_override_s* pthread_override_t;
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-pthread_override_t
-pthread_override_qos_class_start_np(pthread_t __pthread,
- qos_class_t __qos_class, int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_override_qos_class_end_np(pthread_override_t __override);
-typedef __darwin_mach_port_t mach_port_t;
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_atfork(void (* _Nullable)(void), void (* _Nullable)(void),
- void (* _Nullable)(void));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_destroy(pthread_attr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getguardsize(const pthread_attr_t * __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getinheritsched(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getschedparam(const pthread_attr_t * __restrict__,
- struct sched_param * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getschedpolicy(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getscope(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstack(const pthread_attr_t * __restrict__,
- void * _Nullable * _Nonnull __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstackaddr(const pthread_attr_t * __restrict__,
- void * _Nullable * _Nonnull __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstacksize(const pthread_attr_t * __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_init(pthread_attr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setdetachstate(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setguardsize(pthread_attr_t *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setinheritsched(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setschedparam(pthread_attr_t * __restrict__,
- const struct sched_param * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setschedpolicy(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setscope(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstackaddr(pthread_attr_t *, void *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstacksize(pthread_attr_t *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cancel(pthread_t) __asm("_" "pthread_cancel" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_broadcast(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_destroy(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_init(
- pthread_cond_t * __restrict__,
- const pthread_condattr_t * _Nullable __restrict__)
- __asm("_" "pthread_cond_init" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_signal(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_timedwait(
- pthread_cond_t * __restrict__, pthread_mutex_t * __restrict__,
- const struct timespec * _Nullable __restrict__)
- __asm("_" "pthread_cond_timedwait" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_wait(pthread_cond_t * __restrict__,
- pthread_mutex_t * __restrict__) __asm("_" "pthread_cond_wait" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_destroy(pthread_condattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_init(pthread_condattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_getpshared(const pthread_condattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_setpshared(pthread_condattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_create(pthread_t _Nullable * _Nonnull __restrict__,
- const pthread_attr_t * _Nullable __restrict__,
- void * _Nullable (* _Nonnull)(void * _Nullable),
- void * _Nullable __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_detach(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_equal(pthread_t _Nullable, pthread_t _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Thread lifecycle is owned by Swift Concurrency runtime" "\")")))
-void pthread_exit(void * _Nullable) __attribute__((__noreturn__));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_getconcurrency(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_getschedparam(pthread_t , int * _Nullable __restrict__,
- struct sched_param * _Nullable __restrict__);
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task Local Values instead" "\")")))
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-void* _Nullable pthread_getspecific(pthread_key_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_join(pthread_t , void * _Nullable * _Nullable)
- __asm("_" "pthread_join" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_key_create(pthread_key_t *, void (* _Nullable)(void *));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_key_delete(pthread_key_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_destroy(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_getprioceiling(const pthread_mutex_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_init(pthread_mutex_t * __restrict__,
- const pthread_mutexattr_t * _Nullable __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLock or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_lock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_setprioceiling(pthread_mutex_t * __restrict__, int,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLockIfAvailable or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_trylock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLock or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_unlock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_destroy(pthread_mutexattr_t *) __asm("_" "pthread_mutexattr_destroy" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getprotocol(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getpshared(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_gettype(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(watchos,introduced=4.3))) __attribute__((availability(tvos,introduced=11.3)))
-int pthread_mutexattr_getpolicy_np(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_init(pthread_mutexattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0)))
-int pthread_mutexattr_setpolicy_np(pthread_mutexattr_t *, int);
-__attribute__((availability(swift,unavailable,message="Use lazily initialized globals instead")))
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_once(pthread_once_t *, void (* _Nonnull)(void));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlock_destroy(pthread_rwlock_t * ) __asm("_" "pthread_rwlock_destroy" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlock_init(pthread_rwlock_t * __restrict__,
- const pthread_rwlockattr_t * _Nullable __restrict__)
- __asm("_" "pthread_rwlock_init" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_rdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_rdlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_tryrdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_tryrdlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_trywrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_trywrlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_wrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_wrlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_unlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_unlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_init(pthread_rwlockattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-pthread_t pthread_self(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-int pthread_setcancelstate(int , int * _Nullable)
- __asm("_" "pthread_setcancelstate" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-int pthread_setcanceltype(int , int * _Nullable)
- __asm("_" "pthread_setcanceltype" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_setconcurrency(int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_setschedparam(pthread_t, int, const struct sched_param *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task Local Values instead" "\")")))
-int pthread_setspecific(pthread_key_t , const void * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-void pthread_testcancel(void) __asm("_" "pthread_testcancel" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_is_threaded_np(void);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-int pthread_threadid_np(pthread_t _Nullable,__uint64_t* _Nullable);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-int pthread_getname_np(pthread_t,char*,size_t);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Thread lifecycle is owned by Swift Concurrency runtime" "\")")))
-int pthread_setname_np(const char*);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_main_np(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-mach_port_t pthread_mach_thread_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-size_t pthread_get_stacksize_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-void* pthread_get_stackaddr_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_signal_thread_np(pthread_cond_t *, pthread_t _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_timedwait_relative_np(pthread_cond_t *, pthread_mutex_t *,
- const struct timespec * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_create_suspended_np(
- pthread_t _Nullable * _Nonnull, const pthread_attr_t * _Nullable,
- void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_kill(pthread_t, int);
-__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0)))
-_Nullable pthread_t pthread_from_mach_thread_np(mach_port_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_sigmask(int, const sigset_t * _Nullable, sigset_t * _Nullable)
- __asm("_" "pthread_sigmask" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task.yield(), or await a condition instead of spinning" "\")")))
-void pthread_yield_np(void);
-__attribute__((availability(macos,introduced=11.0)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-void pthread_jit_write_protect_np(int enabled);
-__attribute__((availability(macos,introduced=11.0)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-int pthread_jit_write_protect_supported_np(void);
-typedef int (*pthread_jit_write_callback_t)(void * _Nullable ctx);
-__attribute__((availability(macos,introduced=11.4)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-__attribute__((availability(swift,unavailable,message="This interface cannot be safely used from Swift")))
-int pthread_jit_write_with_callback_np(
- pthread_jit_write_callback_t _Nonnull callback, void * _Nullable ctx);
-__attribute__((availability(macos,introduced=12.1)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-void pthread_jit_write_freeze_callbacks_np(void);
-__attribute__((availability(macos,introduced=11.0))) __attribute__((availability(ios,introduced=14.2))) __attribute__((availability(tvos,introduced=14.2))) __attribute__((availability(watchos,introduced=7.1)))
-int
-pthread_cpu_number_np(size_t *cpu_number_out);
-typedef pthread_t rb_nativethread_id_t;
-typedef pthread_mutex_t rb_nativethread_lock_t;
-typedef pthread_cond_t rb_nativethread_cond_t;
-rb_nativethread_id_t rb_nativethread_self(void);
-void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_lock(rb_nativethread_lock_t *lock);
-int rb_native_mutex_trylock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_unlock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_initialize(rb_nativethread_lock_t *lock);
-void rb_native_mutex_destroy(rb_nativethread_lock_t *lock);
-void rb_native_cond_signal(rb_nativethread_cond_t *cond);
-void rb_native_cond_broadcast(rb_nativethread_cond_t *cond);
-void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex);
-void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec);
-void rb_native_cond_initialize(rb_nativethread_cond_t *cond);
-void rb_native_cond_destroy(rb_nativethread_cond_t *cond);
-void *rb_allocate_sigaltstack(void);
-void *rb_register_sigaltstack(void *);
-
-struct rb_thread_sched_item {
- union {
- struct ccan_list_node ubf;
- struct ccan_list_node readyq;
- } node;
-};
-struct rb_native_thread {
- int id;
- rb_nativethread_id_t thread_id;
- struct rb_thread_struct *running_thread;
- struct
- {
- rb_nativethread_cond_t intr;
- rb_nativethread_cond_t readyq;
- } cond;
- void *altstack;
-};
-struct rb_thread_sched {
- const struct rb_thread_struct *running;
- rb_nativethread_lock_t lock;
- struct ccan_list_head readyq;
- const struct rb_thread_struct *timer;
- int timer_err;
- rb_nativethread_cond_t switch_cond;
- rb_nativethread_cond_t switch_wait_cond;
- int need_yield;
- int wait_yield;
-};
-struct rb_execution_context_struct *rb_current_ec(void);
-void rb_current_ec_set(struct rb_execution_context_struct *);
-void rb_vm_encoded_insn_data_table_init(void);
-typedef unsigned long rb_num_t;
-typedef signed long rb_snum_t;
-enum ruby_tag_type {
- RUBY_TAG_NONE = 0x0,
- RUBY_TAG_RETURN = 0x1,
- RUBY_TAG_BREAK = 0x2,
- RUBY_TAG_NEXT = 0x3,
- RUBY_TAG_RETRY = 0x4,
- RUBY_TAG_REDO = 0x5,
- RUBY_TAG_RAISE = 0x6,
- RUBY_TAG_THROW = 0x7,
- RUBY_TAG_FATAL = 0x8,
- RUBY_TAG_MASK = 0xf
-};
-enum ruby_vm_throw_flags {
- VM_THROW_NO_ESCAPE_FLAG = 0x8000,
- VM_THROW_STATE_MASK = 0xff
-};
-struct rb_thread_struct;
-struct rb_control_frame_struct;
-typedef struct rb_compile_option_struct rb_compile_option_t;
-union ic_serial_entry {
- rb_serial_t raw;
- VALUE data[2];
-};
-struct iseq_inline_constant_cache_entry {
- VALUE flags;
- VALUE value;
- VALUE _unused1;
- VALUE _unused2;
- const rb_cref_t *ic_cref;
-};
-__extension__ _Static_assert((__builtin_offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= (sizeof(struct RBasic) + sizeof(VALUE[3])), "sizeof_iseq_inline_constant_cache_entry" ": " "(offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= RVALUE_SIZE");
-struct iseq_inline_constant_cache {
- struct iseq_inline_constant_cache_entry *entry;
- const ID *segments;
-};
-struct iseq_inline_iv_cache_entry {
- uintptr_t value;
- ID iv_set_name;
-};
-struct iseq_inline_cvar_cache_entry {
- struct rb_cvar_class_tbl_entry *entry;
-};
-union iseq_inline_storage_entry {
- struct {
- struct rb_thread_struct *running_thread;
- VALUE value;
- } once;
- struct iseq_inline_constant_cache ic_cache;
- struct iseq_inline_iv_cache_entry iv_cache;
-};
-struct rb_calling_info {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
- VALUE block_handler;
- VALUE recv;
- int argc;
- int kw_splat;
-};
-struct rb_execution_context_struct;
-typedef struct rb_iseq_location_struct {
- VALUE pathobj;
- VALUE base_label;
- VALUE label;
- int first_lineno;
- int node_id;
- rb_code_location_t code_location;
-} rb_iseq_location_t;
-static inline VALUE
-pathobj_path(VALUE pathobj)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) {
- return pathobj;
- }
- else {
- ((void)0);
- return RARRAY_AREF(pathobj, 0);
- }
-}
-static inline VALUE
-pathobj_realpath(VALUE pathobj)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) {
- return pathobj;
- }
- else {
- ((void)0);
- return RARRAY_AREF(pathobj, 1);
- }
-}
-struct rb_mjit_unit;
-typedef uintptr_t iseq_bits_t;
-enum rb_iseq_type {
- ISEQ_TYPE_TOP,
- ISEQ_TYPE_METHOD,
- ISEQ_TYPE_BLOCK,
- ISEQ_TYPE_CLASS,
- ISEQ_TYPE_RESCUE,
- ISEQ_TYPE_ENSURE,
- ISEQ_TYPE_EVAL,
- ISEQ_TYPE_MAIN,
- ISEQ_TYPE_PLAIN
-};
-struct rb_iseq_constant_body {
- enum rb_iseq_type type;
- unsigned int iseq_size;
- VALUE *iseq_encoded;
- struct {
- struct {
- unsigned int has_lead : 1;
- unsigned int has_opt : 1;
- unsigned int has_rest : 1;
- unsigned int has_post : 1;
- unsigned int has_kw : 1;
- unsigned int has_kwrest : 1;
- unsigned int has_block : 1;
- unsigned int ambiguous_param0 : 1;
- unsigned int accepts_no_kwarg : 1;
- unsigned int ruby2_keywords: 1;
- } flags;
- unsigned int size;
- int lead_num;
- int opt_num;
- int rest_start;
- int post_start;
- int post_num;
- int block_start;
- const VALUE *opt_table;
- const struct rb_iseq_param_keyword {
- int num;
- int required_num;
- int bits_start;
- int rest_start;
- const ID *table;
- VALUE *default_values;
- } *keyword;
- } param;
- rb_iseq_location_t location;
- struct iseq_insn_info {
- const struct iseq_insn_info_entry *body;
- unsigned int *positions;
- unsigned int size;
- struct succ_index_table *succ_index_table;
- } insns_info;
- const ID *local_table;
- struct iseq_catch_table *catch_table;
- const struct rb_iseq_struct *parent_iseq;
- struct rb_iseq_struct *local_iseq;
- union iseq_inline_storage_entry *is_entries;
- struct rb_call_data *call_data;
- struct {
- rb_snum_t flip_count;
- VALUE script_lines;
- VALUE coverage;
- VALUE pc2branchindex;
- VALUE *original_iseq;
- } variable;
- unsigned int local_table_size;
- unsigned int ic_size;
- unsigned int ise_size;
- unsigned int ivc_size;
- unsigned int icvarc_size;
- unsigned int ci_size;
- unsigned int stack_max;
- _Bool catch_except_p;
- _Bool builtin_inline_p;
- union {
- iseq_bits_t * list;
- iseq_bits_t single;
- } mark_bits;
- struct rb_id_table *outer_variables;
- const rb_iseq_t *mandatory_only_iseq;
- VALUE (*jit_func)(struct rb_execution_context_struct *, struct rb_control_frame_struct *);
- long unsigned total_calls;
- struct rb_mjit_unit *mjit_unit;
-};
-struct rb_iseq_struct {
- VALUE flags;
- VALUE wrapper;
- struct rb_iseq_constant_body *body;
- union {
- struct iseq_compile_data *compile_data;
- struct {
- VALUE obj;
- int index;
- } loader;
- struct {
- struct rb_hook_list_struct *local_hooks;
- rb_event_flag_t global_trace_events;
- } exec;
- } aux;
-};
-static inline const rb_iseq_t *
-rb_iseq_check(const rb_iseq_t *iseq)
-{
- return iseq;
-}
-static inline const rb_iseq_t *
-def_iseq_ptr(rb_method_definition_t *def)
-{
- return rb_iseq_check(def->body.iseq.iseqptr);
-}
-enum ruby_special_exceptions {
- ruby_error_reenter,
- ruby_error_nomemory,
- ruby_error_sysstack,
- ruby_error_stackfatal,
- ruby_error_stream_closed,
- ruby_special_error_count
-};
-struct rb_vm_struct;
-typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
-typedef struct rb_at_exit_list {
- rb_vm_at_exit_func *func;
- struct rb_at_exit_list *next;
-} rb_at_exit_list;
-struct rb_objspace;
-struct rb_objspace *rb_objspace_alloc(void);
-void rb_objspace_free(struct rb_objspace *);
-void rb_objspace_call_finalizer(struct rb_objspace *);
-typedef struct rb_hook_list_struct {
- struct rb_event_hook_struct *hooks;
- rb_event_flag_t events;
- unsigned int running;
- _Bool need_clean;
- _Bool is_local;
-} rb_hook_list_t;
-typedef const struct rb_builtin_function *RB_BUILTIN;
-typedef struct rb_vm_struct {
- VALUE self;
- struct {
- struct ccan_list_head set;
- unsigned int cnt;
- unsigned int blocking_cnt;
- struct rb_ractor_struct *main_ractor;
- struct rb_thread_struct *main_thread;
- struct {
- rb_nativethread_lock_t lock;
- struct rb_ractor_struct *lock_owner;
- unsigned int lock_rec;
- _Bool barrier_waiting;
- unsigned int barrier_cnt;
- rb_nativethread_cond_t barrier_cond;
- rb_nativethread_cond_t terminate_cond;
- _Bool terminate_waiting;
- } sync;
- } ractor;
- void *main_altstack;
- rb_serial_t fork_gen;
- rb_nativethread_lock_t waitpid_lock;
- struct ccan_list_head waiting_pids;
- struct ccan_list_head waiting_grps;
- struct ccan_list_head waiting_fds;
- volatile int ubf_async_safe;
- unsigned int running: 1;
- unsigned int thread_abort_on_exception: 1;
- unsigned int thread_report_on_exception: 1;
- unsigned int thread_ignore_deadlock: 1;
- VALUE mark_object_ary;
- const VALUE special_exceptions[ruby_special_error_count];
- rb_shape_t *shape_list;
- rb_shape_t *root_shape;
- shape_id_t next_shape_id;
- VALUE top_self;
- VALUE load_path;
- VALUE load_path_snapshot;
- VALUE load_path_check_cache;
- VALUE expanded_load_path;
- VALUE loaded_features;
- VALUE loaded_features_snapshot;
- VALUE loaded_features_realpaths;
- VALUE loaded_features_realpath_map;
- struct st_table *loaded_features_index;
- struct st_table *loading_table;
- struct st_table *static_ext_inits;
- struct {
- VALUE cmd[32];
- } trap_list;
- struct st_table *ensure_rollback_table;
- struct rb_postponed_job_struct *postponed_job_buffer;
- rb_atomic_t postponed_job_index;
- int src_encoding_index;
- struct ccan_list_head workqueue;
- rb_nativethread_lock_t workqueue_lock;
- VALUE orig_progname, progname;
- VALUE coverages, me2counter;
- int coverage_mode;
- st_table * defined_module_hash;
- struct rb_objspace *objspace;
- rb_at_exit_list *at_exit;
- st_table *frozen_strings;
- const struct rb_builtin_function *builtin_function_table;
- int builtin_inline_index;
- struct rb_id_table *negative_cme_table;
- st_table *overloaded_cme_table;
- struct rb_id_table *constant_cache;
- const struct rb_callcache *global_cc_cache_table[1023];
- struct {
- size_t thread_vm_stack_size;
- size_t thread_machine_stack_size;
- size_t fiber_vm_stack_size;
- size_t fiber_machine_stack_size;
- } default_params;
-} rb_vm_t;
-struct rb_captured_block {
- VALUE self;
- const VALUE *ep;
- union {
- const rb_iseq_t *iseq;
- const struct vm_ifunc *ifunc;
- VALUE val;
- } code;
-};
-enum rb_block_handler_type {
- block_handler_type_iseq,
- block_handler_type_ifunc,
- block_handler_type_symbol,
- block_handler_type_proc
-};
-enum rb_block_type {
- block_type_iseq,
- block_type_ifunc,
- block_type_symbol,
- block_type_proc
-};
-struct rb_block {
- union {
- struct rb_captured_block captured;
- VALUE symbol;
- VALUE proc;
- } as;
- enum rb_block_type type;
-};
-typedef struct rb_control_frame_struct {
- const VALUE *pc;
- VALUE *sp;
- const rb_iseq_t *iseq;
- VALUE self;
- const VALUE *ep;
- const void *block_code;
- VALUE *__bp__;
- void *jit_return;
-} rb_control_frame_t;
-extern const rb_data_type_t ruby_threadptr_data_type;
-static inline struct rb_thread_struct *
-rb_thread_ptr(VALUE thval)
-{
- return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type);
-}
-enum rb_thread_status {
- THREAD_RUNNABLE,
- THREAD_STOPPED,
- THREAD_STOPPED_FOREVER,
- THREAD_KILLED
-};
-typedef sigjmp_buf rb_jmpbuf_t;
-struct rb_vm_tag {
- VALUE tag;
- VALUE retval;
- rb_jmpbuf_t buf;
- struct rb_vm_tag *prev;
- enum ruby_tag_type state;
- unsigned int lock_rec;
-};
-__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
-__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)");
-struct rb_unblock_callback {
- rb_unblock_function_t *func;
- void *arg;
-};
-struct rb_mutex_struct;
-typedef struct rb_ensure_entry {
- VALUE marker;
- VALUE (*e_proc)(VALUE);
- VALUE data2;
-} rb_ensure_entry_t;
-typedef struct rb_ensure_list {
- struct rb_ensure_list *next;
- struct rb_ensure_entry entry;
-} rb_ensure_list_t;
-typedef struct rb_fiber_struct rb_fiber_t;
-struct rb_waiting_list {
- struct rb_waiting_list *next;
- struct rb_thread_struct *thread;
- struct rb_fiber_struct *fiber;
-};
-struct rb_execution_context_struct {
- VALUE *vm_stack;
- size_t vm_stack_size;
- rb_control_frame_t *cfp;
- struct rb_vm_tag *tag;
- rb_atomic_t interrupt_flag;
- rb_atomic_t interrupt_mask;
- rb_fiber_t *fiber_ptr;
- struct rb_thread_struct *thread_ptr;
- struct rb_id_table *local_storage;
- VALUE local_storage_recursive_hash;
- VALUE local_storage_recursive_hash_for_trace;
- VALUE storage;
- const VALUE *root_lep;
- VALUE root_svar;
- rb_ensure_list_t *ensure_list;
- struct rb_trace_arg_struct *trace_arg;
- VALUE errinfo;
- VALUE passed_block_handler;
- uint8_t raised_flag;
- enum method_missing_reason method_missing_reason : 8;
- VALUE private_const_reference;
- struct {
- VALUE *stack_start;
- VALUE *stack_end;
- size_t stack_maxsize;
- __declspec(align(8)) jmp_buf regs;
- } machine;
-};
-typedef struct rb_execution_context_struct rb_execution_context_t;
-void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
-void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
-void rb_ec_clear_vm_stack(rb_execution_context_t *ec);
-struct rb_ext_config {
- _Bool ractor_safe;
-};
-typedef struct rb_ractor_struct rb_ractor_t;
-struct rb_native_thread;
-typedef struct rb_thread_struct {
- struct ccan_list_node lt_node;
- VALUE self;
- rb_ractor_t *ractor;
- rb_vm_t *vm;
- struct rb_native_thread *nt;
- rb_execution_context_t *ec;
- struct rb_thread_sched_item sched;
- rb_atomic_t serial;
- VALUE last_status;
- struct rb_calling_info *calling;
- VALUE top_self;
- VALUE top_wrapper;
- enum rb_thread_status status : 2;
- unsigned int locking_native_thread : 1;
- unsigned int to_kill : 1;
- unsigned int abort_on_exception: 1;
- unsigned int report_on_exception: 1;
- unsigned int pending_interrupt_queue_checked: 1;
- int8_t priority;
- uint32_t running_time_us;
- void *blocking_region_buffer;
- VALUE thgroup;
- VALUE value;
- VALUE pending_interrupt_queue;
- VALUE pending_interrupt_mask_stack;
- rb_nativethread_lock_t interrupt_lock;
- struct rb_unblock_callback unblock;
- VALUE locking_mutex;
- struct rb_mutex_struct *keeping_mutexes;
- struct rb_waiting_list *join_list;
- union {
- struct {
- VALUE proc;
- VALUE args;
- int kw_splat;
- } proc;
- struct {
- VALUE (*func)(void *);
- void *arg;
- } func;
- } invoke_arg;
- enum thread_invoke_type {
- thread_invoke_type_none = 0,
- thread_invoke_type_proc,
- thread_invoke_type_ractor_proc,
- thread_invoke_type_func
- } invoke_type;
- VALUE stat_insn_usage;
- rb_fiber_t *root_fiber;
- VALUE scheduler;
- unsigned int blocking;
- VALUE name;
- struct rb_ext_config ext_config;
-} rb_thread_t;
-static inline unsigned int
-rb_th_serial(const rb_thread_t *th)
-{
- return (unsigned int)th->serial;
-}
-typedef enum {
- VM_DEFINECLASS_TYPE_CLASS = 0x00,
- VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01,
- VM_DEFINECLASS_TYPE_MODULE = 0x02,
- VM_DEFINECLASS_TYPE_MASK = 0x07
-} rb_vm_defineclass_type_t;
-rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum rb_iseq_type);
-rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent);
-rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent, int opt);
-rb_iseq_t *rb_iseq_new_eval (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, int first_lineno, const rb_iseq_t *parent, int isolated_depth);
-rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, int first_lineno, const rb_iseq_t *parent, int isolated_depth,
- enum rb_iseq_type, const rb_compile_option_t*);
-struct iseq_link_anchor;
-struct rb_iseq_new_with_callback_callback_func {
- VALUE flags;
- VALUE reserved;
- void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
- const void *data;
-};
-static inline struct rb_iseq_new_with_callback_callback_func *
-rb_iseq_new_with_callback_new_callback(
- void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
-{
- VALUE memo = rb_imemo_new(imemo_ifunc, (VALUE)func, (VALUE)ptr, ((VALUE)RUBY_Qundef), ((VALUE)RUBY_Qfalse));
- return (struct rb_iseq_new_with_callback_callback_func *)memo;
-}
-rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func * ifunc,
- VALUE name, VALUE path, VALUE realpath, int first_lineno,
- const rb_iseq_t *parent, enum rb_iseq_type, const rb_compile_option_t*);
-VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
-int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
-attr_index_t rb_estimate_iv_count(VALUE klass, const rb_iseq_t * initialize_iseq);
-VALUE rb_iseq_coverage(const rb_iseq_t *iseq);
-extern VALUE rb_cISeq;
-extern VALUE rb_cRubyVM;
-extern VALUE rb_mRubyVMFrozenCore;
-extern VALUE rb_block_param_proxy;
-typedef struct {
- const struct rb_block block;
- unsigned int is_from_method: 1;
- unsigned int is_lambda: 1;
- unsigned int is_isolated: 1;
-} rb_proc_t;
-VALUE rb_proc_isolate(VALUE self);
-VALUE rb_proc_isolate_bang(VALUE self);
-VALUE rb_proc_ractor_make_shareable(VALUE self);
-typedef struct {
- VALUE flags;
- rb_iseq_t *iseq;
- const VALUE *ep;
- const VALUE *env;
- unsigned int env_size;
-} rb_env_t;
-extern const rb_data_type_t ruby_binding_data_type;
-typedef struct {
- const struct rb_block block;
- const VALUE pathobj;
- int first_lineno;
-} rb_binding_t;
-enum vm_check_match_type {
- VM_CHECKMATCH_TYPE_WHEN = 1,
- VM_CHECKMATCH_TYPE_CASE = 2,
- VM_CHECKMATCH_TYPE_RESCUE = 3
-};
-enum vm_special_object_type {
- VM_SPECIAL_OBJECT_VMCORE = 1,
- VM_SPECIAL_OBJECT_CBASE,
- VM_SPECIAL_OBJECT_CONST_BASE
-};
-enum vm_svar_index {
- VM_SVAR_LASTLINE = 0,
- VM_SVAR_BACKREF = 1,
- VM_SVAR_EXTRA_START = 2,
- VM_SVAR_FLIPFLOP_START = 2
-};
-typedef struct iseq_inline_constant_cache *IC;
-typedef struct iseq_inline_iv_cache_entry *IVC;
-typedef struct iseq_inline_cvar_cache_entry *ICVARC;
-typedef union iseq_inline_storage_entry *ISE;
-typedef const struct rb_callinfo *CALL_INFO;
-typedef const struct rb_callcache *CALL_CACHE;
-typedef struct rb_call_data *CALL_DATA;
-typedef VALUE CDHASH;
-typedef rb_control_frame_t *
- (*rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *);
-enum vm_frame_env_flags {
- VM_FRAME_MAGIC_METHOD = 0x11110001,
- VM_FRAME_MAGIC_BLOCK = 0x22220001,
- VM_FRAME_MAGIC_CLASS = 0x33330001,
- VM_FRAME_MAGIC_TOP = 0x44440001,
- VM_FRAME_MAGIC_CFUNC = 0x55550001,
- VM_FRAME_MAGIC_IFUNC = 0x66660001,
- VM_FRAME_MAGIC_EVAL = 0x77770001,
- VM_FRAME_MAGIC_RESCUE = 0x78880001,
- VM_FRAME_MAGIC_DUMMY = 0x79990001,
- VM_FRAME_MAGIC_MASK = 0x7fff0001,
- VM_FRAME_FLAG_FINISH = 0x0020,
- VM_FRAME_FLAG_BMETHOD = 0x0040,
- VM_FRAME_FLAG_CFRAME = 0x0080,
- VM_FRAME_FLAG_LAMBDA = 0x0100,
- VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
- VM_FRAME_FLAG_CFRAME_KW = 0x0400,
- VM_FRAME_FLAG_PASSED = 0x0800,
- VM_ENV_FLAG_LOCAL = 0x0002,
- VM_ENV_FLAG_ESCAPED = 0x0004,
- VM_ENV_FLAG_WB_REQUIRED = 0x0008,
- VM_ENV_FLAG_ISOLATED = 0x0010,
-};
-static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
-static inline void
-VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
-}
-static inline void
-VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
-}
-static inline unsigned long
-VM_ENV_FLAGS(const VALUE *ep, long flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- return flags & flag;
-}
-static inline unsigned long
-VM_FRAME_TYPE(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
-}
-static inline int
-VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
-}
-static inline int
-VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
-}
-static inline int
-VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
-}
-static inline int
-VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
-}
-static inline int
-rb_obj_is_iseq(VALUE iseq)
-{
- return imemo_type_p(iseq, imemo_iseq);
-}
-static inline int
-VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
-{
- int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
- ((void)0);
- return cframe_p;
-}
-static inline int
-VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
-{
- return !VM_FRAME_CFRAME_P(cfp);
-}
-static inline int
-VM_ENV_LOCAL_P(const VALUE *ep)
-{
- return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
-}
-static inline const VALUE *
-VM_ENV_PREV_EP(const VALUE *ep)
-{
- ((void)0);
- return ((void *)(((ep[(-1)])) & ~0x03));
-}
-static inline VALUE
-VM_ENV_BLOCK_HANDLER(const VALUE *ep)
-{
- ((void)0);
- return ep[(-1)];
-}
-static inline int
-VM_ENV_ESCAPED_P(const VALUE *ep)
-{
- ((void)0);
- return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
-}
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-VM_ENV_ENVVAL(const VALUE *ep)
-{
- VALUE envval = ep[( 1)];
- ((void)0);
- ((void)0);
- return envval;
-}
-__attribute__((__nonnull__ (1)))
-static inline const rb_env_t *
-VM_ENV_ENVVAL_PTR(const VALUE *ep)
-{
- return (const rb_env_t *)VM_ENV_ENVVAL(ep);
-}
-static inline const rb_env_t *
-vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
-{
- rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
- env->env_size = env_size;
- env_ep[( 1)] = (VALUE)env;
- return env;
-}
-static inline void
-VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
-{
- *((VALUE *)ptr) = v;
-}
-static inline void
-VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
-{
- ((void)0);
- VM_FORCE_WRITE(ptr, special_const_value);
-}
-static inline void
-VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
-{
- ((void)0);
- VM_FORCE_WRITE(&ep[index], v);
-}static inline
-const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
-const VALUE *rb_vm_proc_local_ep(VALUE proc);static inline
-void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
-void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);static inline
-VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
-static inline const rb_control_frame_t *
-RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
-{
- return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
-}
-static inline int
-RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
-{
- return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
-}
-static inline int
-VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
-{
- if ((block_handler & 0x03) == 0x01) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline VALUE
-VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
-{
- VALUE block_handler = ((VALUE)(captured) | (0x01));
- ((void)0);
- return block_handler;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline int
-VM_BH_IFUNC_P(VALUE block_handler)
-{
- if ((block_handler & 0x03) == 0x03) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline VALUE
-VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
-{
- VALUE block_handler = ((VALUE)(captured) | (0x03));
- ((void)0);
- return block_handler;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline enum rb_block_handler_type
-vm_block_handler_type(VALUE block_handler)
-{
- if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
- return block_handler_type_iseq;
- }
- else if (VM_BH_IFUNC_P(block_handler)) {
- return block_handler_type_ifunc;
- }
- else if (RB_SYMBOL_P(block_handler)) {
- return block_handler_type_symbol;
- }
- else {
- ((void)0);
- return block_handler_type_proc;
- }
-}
-static inline void
-vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
-{
- ((void)0);
-}
-static inline int
-vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
-{
- return ((VALUE) cfp->block_code) == block_handler;
-}
-static inline enum rb_block_type
-vm_block_type(const struct rb_block *block)
-{
- return block->type;
-}
-static inline void
-vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
-{
- struct rb_block *mb = (struct rb_block *)block;
- mb->type = type;
-}
-static inline const struct rb_block *
-vm_proc_block(VALUE procval)
-{
- ((void)0);
- return &((rb_proc_t *)(((struct RTypedData *)(procval))->data))->block;
-}
-static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
-static inline const VALUE *vm_block_ep(const struct rb_block *block);
-static inline const rb_iseq_t *
-vm_proc_iseq(VALUE procval)
-{
- return vm_block_iseq(vm_proc_block(procval));
-}
-static inline const VALUE *
-vm_proc_ep(VALUE procval)
-{
- return vm_block_ep(vm_proc_block(procval));
-}
-static inline const rb_iseq_t *
-vm_block_iseq(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
- case block_type_proc: return vm_proc_iseq(block->as.proc);
- case block_type_ifunc:
- case block_type_symbol: return ((void*)0);
- }
- __builtin_unreachable();
- return ((void*)0);
-}
-static inline const VALUE *
-vm_block_ep(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq:
- case block_type_ifunc: return block->as.captured.ep;
- case block_type_proc: return vm_proc_ep(block->as.proc);
- case block_type_symbol: return ((void*)0);
- }
- __builtin_unreachable();
- return ((void*)0);
-}
-static inline VALUE
-vm_block_self(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq:
- case block_type_ifunc:
- return block->as.captured.self;
- case block_type_proc:
- return vm_block_self(vm_proc_block(block->as.proc));
- case block_type_symbol:
- return ((VALUE)RUBY_Qundef);
- }
- __builtin_unreachable();
- return ((VALUE)RUBY_Qundef);
-}
-static inline VALUE
-VM_BH_TO_SYMBOL(VALUE block_handler)
-{
- ((void)0);
- return block_handler;
-}
-static inline VALUE
-VM_BH_FROM_SYMBOL(VALUE symbol)
-{
- ((void)0);
- return symbol;
-}
-static inline VALUE
-VM_BH_TO_PROC(VALUE block_handler)
-{
- ((void)0);
- return block_handler;
-}
-static inline VALUE
-VM_BH_FROM_PROC(VALUE procval)
-{
- ((void)0);
- return procval;
-}
-VALUE rb_thread_alloc(VALUE klass);
-VALUE rb_binding_alloc(VALUE klass);
-VALUE rb_proc_alloc(VALUE klass);
-VALUE rb_proc_dup(VALUE self);
-extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
-extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp
-);
-void rb_vm_bugreport(const void *);
-typedef void (*ruby_sighandler_t)(int);
-__attribute__((__format__(__printf__, 4, 5)))
-__declspec(noreturn) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
-VALUE rb_iseq_eval(const rb_iseq_t *iseq);
-VALUE rb_iseq_eval_main(const rb_iseq_t *iseq);
-VALUE rb_iseq_path(const rb_iseq_t *iseq);
-VALUE rb_iseq_realpath(const rb_iseq_t *iseq);
-VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
-void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
-int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
-void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
-VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
-VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
-static inline VALUE
-rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
-{
- return rb_vm_make_proc_lambda(ec, captured, klass, 0);
-}
-static inline VALUE
-rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
-{
- return rb_vm_make_proc_lambda(ec, captured, klass, 1);
-}
-VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp);
-VALUE rb_vm_env_local_variables(const rb_env_t *env);
-const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
-const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
-void rb_vm_inc_const_missing_count(void);
-VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
- const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);static inline
-void rb_vm_pop_frame_no_int(rb_execution_context_t *ec);
-static void rb_vm_pop_frame(rb_execution_context_t *ec);
-void rb_thread_start_timer_thread(void);
-void rb_thread_stop_timer_thread(void);
-void rb_thread_reset_timer_thread(void);
-void rb_thread_wakeup_timer_thread(int);
-static inline void
-rb_vm_living_threads_init(rb_vm_t *vm)
-{
- ccan_list_head_init(&vm->waiting_fds);
- ccan_list_head_init(&vm->waiting_pids);
- ccan_list_head_init(&vm->workqueue);
- ccan_list_head_init(&vm->waiting_grps);
- ccan_list_head_init(&vm->ractor.set);
-}
-typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
-rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-int rb_vm_get_sourceline(const rb_control_frame_t *);
-void rb_vm_stack_to_heap(rb_execution_context_t *ec);
-void ruby_thread_init_stack(rb_thread_t *th);
-rb_thread_t * ruby_thread_from_native(void);
-int ruby_thread_set_native(rb_thread_t *th);
-int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
-void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
-static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
-void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
-void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);static inline
-void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
-static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
-VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
-rb_execution_context_t *rb_vm_main_ractor_ec(rb_vm_t *vm);
-extern struct rb_ractor_struct *ruby_single_main_ractor;
-extern rb_vm_t *ruby_current_vm_ptr;
-extern rb_event_flag_t ruby_vm_event_flags;
-extern rb_event_flag_t ruby_vm_event_enabled_global_flags;
-extern unsigned int ruby_vm_event_local_num;
-static inline rb_thread_t *
-rb_ec_thread_ptr(const rb_execution_context_t *ec)
-{
- return ec->thread_ptr;
-}
-static inline rb_ractor_t *
-rb_ec_ractor_ptr(const rb_execution_context_t *ec)
-{
- const rb_thread_t *th = rb_ec_thread_ptr(ec);
- if (th) {
- ((void)0);
- return th->ractor;
- }
- else {
- return ((void*)0);
- }
-}
-static inline rb_vm_t *
-rb_ec_vm_ptr(const rb_execution_context_t *ec)
-{
- const rb_thread_t *th = rb_ec_thread_ptr(ec);
- if (th) {
- return th->vm;
- }
- else {
- return ((void*)0);
- }
-}
-static inline rb_execution_context_t *
-rb_current_execution_context(_Bool expect_ec)
-{
- rb_execution_context_t *ec = rb_current_ec();
- ((void)0);
- return ec;
-}
-static inline rb_thread_t *
-rb_current_thread(void)
-{
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- return rb_ec_thread_ptr(ec);
-}
-static inline rb_ractor_t *
-rb_current_ractor(void)
-{
- if (ruby_single_main_ractor) {
- return ruby_single_main_ractor;
- }
- else {
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- return rb_ec_ractor_ptr(ec);
- }
-}
-static inline rb_vm_t *
-rb_current_vm(void)
-{
- return ruby_current_vm_ptr;
-}
-void rb_ec_vm_lock_rec_release(const rb_execution_context_t *ec,
- unsigned int recorded_lock_rec,
- unsigned int current_lock_rec);
-static inline unsigned int
-rb_ec_vm_lock_rec(const rb_execution_context_t *ec)
-{
- rb_vm_t *vm = rb_ec_vm_ptr(ec);
- if (vm->ractor.sync.lock_owner != rb_ec_ractor_ptr(ec)) {
- return 0;
- }
- else {
- return vm->ractor.sync.lock_rec;
- }
-}
-enum {
- TIMER_INTERRUPT_MASK = 0x01,
- PENDING_INTERRUPT_MASK = 0x02,
- POSTPONED_JOB_INTERRUPT_MASK = 0x04,
- TRAP_INTERRUPT_MASK = 0x08,
- TERMINATE_INTERRUPT_MASK = 0x10,
- VM_BARRIER_INTERRUPT_MASK = 0x20,
-};
-static inline _Bool
-RUBY_VM_INTERRUPTED_ANY(rb_execution_context_t *ec)
-{
- return ec->interrupt_flag & ~(ec)->interrupt_mask;
-}
-VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
-int rb_signal_buff_size(void);
-int rb_signal_exec(rb_thread_t *th, int sig);
-void rb_threadptr_check_signal(rb_thread_t *mth);
-void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
-void rb_threadptr_signal_exit(rb_thread_t *th);
-int rb_threadptr_execute_interrupts(rb_thread_t *, int);
-void rb_threadptr_interrupt(rb_thread_t *th);
-void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
-void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
-void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
-VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
-void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
-void rb_execution_context_update(rb_execution_context_t *ec);
-void rb_execution_context_mark(const rb_execution_context_t *ec);
-void rb_fiber_close(rb_fiber_t *fib);
-void Init_native_thread(rb_thread_t *th);
-int rb_vm_check_ints_blocking(rb_execution_context_t *ec);
-void rb_vm_cond_wait(rb_vm_t *vm, rb_nativethread_cond_t *cond);
-void rb_vm_cond_timedwait(rb_vm_t *vm, rb_nativethread_cond_t *cond, unsigned long msec);
-static inline void
-rb_vm_check_ints(rb_execution_context_t *ec)
-{
- ((void)0);
- if ((__builtin_expect(!!(RUBY_VM_INTERRUPTED_ANY(ec)), 0))) {
- rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
- }
-}
-struct rb_trace_arg_struct {
- rb_event_flag_t event;
- rb_execution_context_t *ec;
- const rb_control_frame_t *cfp;
- VALUE self;
- ID id;
- ID called_id;
- VALUE klass;
- VALUE data;
- int klass_solved;
- int lineno;
- VALUE path;
-};
-void rb_hook_list_mark(rb_hook_list_t *hooks);
-void rb_hook_list_free(rb_hook_list_t *hooks);
-void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
-void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval);
-void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
-static inline void
-rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
- VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
-{
- struct rb_trace_arg_struct trace_arg;
- ((void)0);
- trace_arg.event = flag;
- trace_arg.ec = ec;
- trace_arg.cfp = ec->cfp;
- trace_arg.self = self;
- trace_arg.id = id;
- trace_arg.called_id = called_id;
- trace_arg.klass = klass;
- trace_arg.data = data;
- trace_arg.path = ((VALUE)RUBY_Qundef);
- trace_arg.klass_solved = 0;
- rb_exec_event_hooks(&trace_arg, hooks, pop_p);
-}
-struct rb_ractor_pub {
- VALUE self;
- uint32_t id;
- rb_hook_list_t hooks;
-};
-static inline rb_hook_list_t *
-rb_ec_ractor_hooks(const rb_execution_context_t *ec)
-{
- struct rb_ractor_pub *cr_pub = (struct rb_ractor_pub *)rb_ec_ractor_ptr(ec);
- return &cr_pub->hooks;
-}
-static inline void
-rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
-{
- do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, ec->cfp->self, 0, 0, 0, RB_NIL_P(eval_script) ? (VALUE)iseq : rb_ary_new_from_args(2, eval_script, (VALUE)iseq), 0); } } while (0);
-}
-void rb_vm_trap_exit(rb_vm_t *vm);
-int rb_thread_check_trap_pending(void);
-extern VALUE rb_get_coverages(void);
-extern void rb_set_coverages(VALUE, int, VALUE);
-extern void rb_clear_coverages(void);
-extern void rb_reset_coverages(void);
-extern void rb_resume_coverages(void);
-extern void rb_suspend_coverages(void);
-void rb_postponed_job_flush(rb_vm_t *vm);
-extern VALUE rb_eRactorUnsafeError;
-extern VALUE rb_eRactorIsolationError;
-
-static inline void
-vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
-{
- vm_block_handler_verify(block_handler);
- ec->passed_block_handler = block_handler;
-}
-static inline void
-pass_passed_block_handler(rb_execution_context_t *ec)
-{
- VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
- vm_passed_block_handler_set(ec, block_handler);
- VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
-}
-extern char ***_NSGetArgv(void);
-extern int *_NSGetArgc(void);
-extern char ***_NSGetEnviron(void);
-extern char **_NSGetProgname(void);
-extern struct mach_header_64 *
- _NSGetMachExecuteHeader(void);
-extern int * __error(void);
-static inline void
-rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec)
-{
- unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec);
- if (current_lock_rec != recorded_lock_rec) {
- rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec);
- }
-}
-static inline int
-rb_ec_tag_state(const rb_execution_context_t *ec)
-{
- struct rb_vm_tag *tag = ec->tag;
- enum ruby_tag_type state = tag->state;
- tag->state = RUBY_TAG_NONE;
- rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
- return state;
-}
-__declspec(noreturn) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
-static inline void
-rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
-{
- ec->tag->state = st;
- siglongjmp(((ec->tag->buf)),(1));
-}
-static inline int CREF_SINGLETON(const rb_cref_t *cref);
-static inline VALUE
-CREF_CLASS(const rb_cref_t *cref)
-{
- if (CREF_SINGLETON(cref)) {
- return rb_class_of(cref->klass_or_self);
- }
- else {
- return cref->klass_or_self;
- }
-}
-static inline VALUE
-CREF_CLASS_FOR_DEFINITION(const rb_cref_t *cref)
-{
- if (CREF_SINGLETON(cref)) {
- return rb_singleton_class(cref->klass_or_self);
- }
- else {
- return cref->klass_or_self;
- }
-}
-static inline rb_cref_t *
-CREF_NEXT(const rb_cref_t *cref)
-{
- return cref->next;
-}
-static inline const rb_scope_visibility_t *
-CREF_SCOPE_VISI(const rb_cref_t *cref)
-{
- return &cref->scope_visi;
-}
-static inline VALUE
-CREF_REFINEMENTS(const rb_cref_t *cref)
-{
- return cref->refinements;
-}
-static inline void
-CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
-{
- rb_obj_write((VALUE)(cref), __extension__({
- ;
- ; __typeof__((VALUE *)(&cref->refinements)) unaligned_member_access_result = ((VALUE *)(&cref->refinements));
- ; unaligned_member_access_result; }), (VALUE)(refs), "./eval_intern.h", 227);
-}
-static inline int
-CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER5);
-}
-static inline void
-CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER5);
-}
-static inline int
-CREF_SINGLETON(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER7);
-}
-static inline void
-CREF_SINGLETON_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER7);
-}
-static inline int
-CREF_OMOD_SHARED(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-CREF_OMOD_SHARED_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
-{
- cref->flags &= ~((VALUE)RUBY_FL_USER6);
-}
-enum {
- RAISED_EXCEPTION = 1,
- RAISED_STACKOVERFLOW = 2,
- RAISED_NOMEMORY = 4
-};
-int rb_ec_set_raised(rb_execution_context_t *ec);
-int rb_ec_reset_raised(rb_execution_context_t *ec);
-int rb_ec_stack_check(rb_execution_context_t *ec);
-VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
-VALUE rb_make_exception(int argc, const VALUE *argv);
-__declspec(noreturn) void rb_method_name_error(VALUE, VALUE);
-__declspec(noreturn) void rb_fiber_start(rb_fiber_t*);
-__declspec(noreturn) void rb_print_undef(VALUE, ID, rb_method_visibility_t);
-__declspec(noreturn) void rb_print_undef_str(VALUE, VALUE);
-__declspec(noreturn) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t);
-__declspec(noreturn) void rb_vm_localjump_error(const char *,VALUE, int);
-__declspec(noreturn) void rb_vm_jump_tag_but_local_jump(int);
-VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
-rb_cref_t *rb_vm_cref(void);
-rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
-VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
-void rb_vm_set_progname(VALUE filename);
-VALUE rb_vm_cbase(void);
-VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
-VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
-VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, _Bool skip_internal);
-static inline char *
-rb_char_next(const char *p)
-{
- if (p) {
- int len = mblen(p, 2147483647);
- p += len > 0 ? len : 1;
- }
- return (char *)p;
-}
-
-const char *rb_obj_info(VALUE obj);
-const char *rb_raw_obj_info(char *const buff, const size_t buff_size, VALUE obj);
-VALUE rb_gc_disable_no_rest(void);
-struct rb_thread_struct;
-size_t rb_size_pool_slot_size(unsigned char pool_id);
-size_t rb_objspace_data_type_memsize(VALUE obj);
-void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
-void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
-int rb_objspace_markable_object_p(VALUE obj);
-int rb_objspace_internal_object_p(VALUE obj);
-int rb_objspace_marked_object_p(VALUE obj);
-void rb_objspace_each_objects(
- int (*callback)(void *start, void *end, size_t stride, void *data),
- void *data);
-void rb_objspace_each_objects_without_setup(
- int (*callback)(void *, void *, size_t, void *),
- void *data);
-size_t rb_gc_obj_slot_size(VALUE obj);
-
-
-struct rb_iseq_struct;
-int rb_dvar_defined(ID, const struct rb_iseq_struct *);
-int rb_local_defined(ID, const struct rb_iseq_struct *);
-const char *rb_insns_name(int i);
-VALUE rb_insns_name_array(void);
-int rb_iseq_cdhash_cmp(VALUE val, VALUE lit);
-st_index_t rb_iseq_cdhash_hash(VALUE a);
-int rb_vm_insn_addr2insn(const void *);
-int rb_vm_insn_decode(const VALUE encoded);
-extern _Bool ruby_vm_keep_script_lines;
-rb_event_flag_t rb_iseq_event_flags(const struct rb_iseq_struct *iseq, size_t pos);
-
-
-extern const int ruby_api_version[];
-typedef void (*rb_iseq_callback)(const rb_iseq_t *, void *);
-extern const ID rb_iseq_shared_exc_local_tbl[];
-static inline rb_snum_t
-ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
-{
- rb_snum_t cnt = ((iseq)->body)->variable.flip_count;
- ((iseq)->body)->variable.flip_count += 1;
- return cnt;
-}
-static inline VALUE *
-ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->variable.original_iseq;
-}
-static inline void
-ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
-{
- void *ptr = ((iseq)->body)->variable.original_iseq;
- ((iseq)->body)->variable.original_iseq = ((void*)0);
- if (ptr) {
- ruby_xfree(ptr);
- }
-}
-static inline VALUE *
-ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
-{
- return ((iseq)->body)->variable.original_iseq =
- ((VALUE *)ruby_xmalloc2((size), sizeof(VALUE)));
-}
-struct iseq_compile_data {
- const VALUE err_info;
- const VALUE catch_table_ary;
- struct iseq_label_data *start_label;
- struct iseq_label_data *end_label;
- struct iseq_label_data *redo_label;
- const rb_iseq_t *current_block;
- struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
- struct {
- struct iseq_compile_data_storage *storage_head;
- struct iseq_compile_data_storage *storage_current;
- } node;
- struct {
- struct iseq_compile_data_storage *storage_head;
- struct iseq_compile_data_storage *storage_current;
- } insn;
- _Bool in_rescue;
- int loopval_popped;
- int last_line;
- int label_no;
- int node_level;
- int isolated_depth;
- unsigned int ci_index;
- unsigned int ic_index;
- const rb_compile_option_t *option;
- struct rb_id_table *ivar_cache_table;
- const struct rb_builtin_function *builtin_function_table;
- const NODE *root_node;
-};
-static inline struct iseq_compile_data *
-ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
-{
- if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
- return iseq->aux.compile_data;
- }
- else {
- return ((void*)0);
- }
-}
-static inline void
-ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
-{
- iseq->aux.compile_data = (((struct iseq_compile_data *)ruby_xcalloc((1), sizeof(struct iseq_compile_data))));
- iseq->flags |= ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
-{
- iseq->flags &= ~((VALUE)RUBY_FL_USER6);
- iseq->aux.compile_data = ((void*)0);
-}
-static inline rb_iseq_t *
-iseq_imemo_alloc(void)
-{
- return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
-}
-VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt);
-void rb_ibf_load_iseq_complete(rb_iseq_t *iseq);
-const rb_iseq_t *rb_iseq_ibf_load(VALUE str);
-const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
-VALUE rb_iseq_ibf_load_extra_data(VALUE str);
-void rb_iseq_init_trace(rb_iseq_t *iseq);
-int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, _Bool target_bmethod);
-int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
-const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
-unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
-int rb_vm_insn_addr2opcode(const void *addr);
-VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
-VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc);
-VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
-void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
- VALUE locals, VALUE args,
- VALUE exception, VALUE body);
-void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena);
-VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
-VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
-unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
-int rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos);
-void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
-void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
-void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq);
-struct rb_iseq_constant_body *rb_iseq_constant_body_alloc(void);
-VALUE rb_iseqw_new(const rb_iseq_t *iseq);
-const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
-VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq);
-int rb_iseq_from_eval_p(const rb_iseq_t *iseq);
-VALUE rb_iseq_type(const rb_iseq_t *iseq);
-VALUE rb_iseq_label(const rb_iseq_t *iseq);
-VALUE rb_iseq_base_label(const rb_iseq_t *iseq);
-VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq);
-VALUE rb_iseq_method_name(const rb_iseq_t *iseq);
-void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
-void rb_iseq_remove_coverage_all(void);
-const rb_iseq_t *rb_method_iseq(VALUE body);
-const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
-struct rb_compile_option_struct {
- unsigned int inline_const_cache: 1;
- unsigned int peephole_optimization: 1;
- unsigned int tailcall_optimization: 1;
- unsigned int specialized_instruction: 1;
- unsigned int operands_unification: 1;
- unsigned int instructions_unification: 1;
- unsigned int stack_caching: 1;
- unsigned int frozen_string_literal: 1;
- unsigned int debug_frozen_string_literal: 1;
- unsigned int coverage_enabled: 1;
- int debug_level;
-};
-struct iseq_insn_info_entry {
- int line_no;
- int node_id;
- rb_event_flag_t events;
-};
-enum rb_catch_type {
- CATCH_TYPE_RESCUE = __builtin_choose_expr( __builtin_constant_p(1), ((VALUE)(1)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(1)),
- CATCH_TYPE_ENSURE = __builtin_choose_expr( __builtin_constant_p(2), ((VALUE)(2)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(2)),
- CATCH_TYPE_RETRY = __builtin_choose_expr( __builtin_constant_p(3), ((VALUE)(3)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(3)),
- CATCH_TYPE_BREAK = __builtin_choose_expr( __builtin_constant_p(4), ((VALUE)(4)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(4)),
- CATCH_TYPE_REDO = __builtin_choose_expr( __builtin_constant_p(5), ((VALUE)(5)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(5)),
- CATCH_TYPE_NEXT = __builtin_choose_expr( __builtin_constant_p(6), ((VALUE)(6)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(6))
-};
-struct iseq_catch_table_entry {
- enum rb_catch_type type;
- rb_iseq_t *iseq;
- unsigned int start;
- unsigned int end;
- unsigned int cont;
- unsigned int sp;
-};
-struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[];} __attribute__((packed));
-static inline int
-iseq_catch_table_bytes(int n)
-{
- enum {
- catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
- catch_table_entries_max = (2147483647 - __builtin_offsetof(struct iseq_catch_table, entries)) / catch_table_entry_size
- };
- if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
- return (int)(__builtin_offsetof(struct iseq_catch_table, entries) +
- n * catch_table_entry_size);
-}
-struct iseq_compile_data_storage {
- struct iseq_compile_data_storage *next;
- unsigned int pos;
- unsigned int size;
- char buff[];
-};
-enum defined_type {
- DEFINED_NOT_DEFINED,
- DEFINED_NIL = 1,
- DEFINED_IVAR,
- DEFINED_LVAR,
- DEFINED_GVAR,
- DEFINED_CVAR,
- DEFINED_CONST,
- DEFINED_METHOD,
- DEFINED_YIELD,
- DEFINED_ZSUPER,
- DEFINED_SELF,
- DEFINED_TRUE,
- DEFINED_FALSE,
- DEFINED_ASGN,
- DEFINED_EXPR,
- DEFINED_REF,
- DEFINED_FUNC,
- DEFINED_CONST_FROM
-};
-VALUE rb_iseq_defined_string(enum defined_type type);
-VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
-
-struct rb_thread_struct;
-struct rb_fiber_struct;
-struct rb_execution_context_struct;
-void rb_fiber_reset_root_local_storage(struct rb_thread_struct *);
-void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
-void rb_jit_cont_init(void);
-void rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data);
-void rb_jit_cont_finish(void);
-VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber);
-VALUE rb_fiberptr_self(struct rb_fiber_struct *fiber);
-unsigned int rb_fiberptr_blocking(struct rb_fiber_struct *fiber);
-struct rb_execution_context_struct * rb_fiberptr_get_ec(struct rb_fiber_struct *fiber);
-
-
-
-
-enum ruby_coderange_type {
- RUBY_ENC_CODERANGE_UNKNOWN = 0,
- RUBY_ENC_CODERANGE_7BIT = ((int)RUBY_FL_USER8),
- RUBY_ENC_CODERANGE_VALID = ((int)RUBY_FL_USER9),
- RUBY_ENC_CODERANGE_BROKEN = ((int)(RUBY_FL_USER8|RUBY_FL_USER9)),
- RUBY_ENC_CODERANGE_MASK = (RUBY_ENC_CODERANGE_7BIT|
- RUBY_ENC_CODERANGE_VALID|
- RUBY_ENC_CODERANGE_BROKEN)
-};
-__attribute__((__const__))
-static inline int
-rb_enc_coderange_clean_p(int cr)
-{
- return (cr ^ (cr >> 1)) & RUBY_ENC_CODERANGE_7BIT;
-}
-__attribute__((__const__))
-static inline _Bool
-RB_ENC_CODERANGE_CLEAN_P(enum ruby_coderange_type cr)
-{
- return rb_enc_coderange_clean_p(cr);
-}
-__attribute__((__pure__))
-static inline enum ruby_coderange_type
-RB_ENC_CODERANGE(VALUE obj)
-{
- VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENC_CODERANGE_MASK);
- return ((enum ruby_coderange_type)ret);
-}
-__attribute__((__pure__))
-static inline _Bool
-RB_ENC_CODERANGE_ASCIIONLY(VALUE obj)
-{
- return RB_ENC_CODERANGE(obj) == RUBY_ENC_CODERANGE_7BIT;
-}
-static inline void
-RB_ENC_CODERANGE_SET(VALUE obj, enum ruby_coderange_type cr)
-{
- RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
- RB_FL_SET_RAW(obj, cr);
-}
-static inline void
-RB_ENC_CODERANGE_CLEAR(VALUE obj)
-{
- RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
-}
-__attribute__((__const__))
-static inline enum ruby_coderange_type
-RB_ENC_CODERANGE_AND(enum ruby_coderange_type a, enum ruby_coderange_type b)
-{
- if (a == RUBY_ENC_CODERANGE_7BIT) {
- return b;
- }
- else if (a != RUBY_ENC_CODERANGE_VALID) {
- return RUBY_ENC_CODERANGE_UNKNOWN;
- }
- else if (b == RUBY_ENC_CODERANGE_7BIT) {
- return RUBY_ENC_CODERANGE_VALID;
- }
- else {
- return b;
- }
-}
-
-
-typedef unsigned char OnigUChar;
-typedef unsigned int OnigCodePoint;
-typedef unsigned int OnigCtype;
-typedef size_t OnigDistance;
-typedef ptrdiff_t OnigPosition;
-typedef unsigned int OnigCaseFoldType;
-extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
-typedef struct {
- int byte_len;
- int code_len;
- OnigCodePoint code[3];
-} OnigCaseFoldCodeItem;
-typedef struct {
- OnigCodePoint esc;
- OnigCodePoint anychar;
- OnigCodePoint anytime;
- OnigCodePoint zero_or_one_time;
- OnigCodePoint one_or_more_time;
- OnigCodePoint anychar_anytime;
-} OnigMetaCharTableType;
-typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
-typedef struct OnigEncodingTypeST {
- int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
- const char* name;
- int max_enc_len;
- int min_enc_len;
- int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc);
- int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc);
- int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc);
- int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc);
- int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc);
- int (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end);
- int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc);
- int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc);
- OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
- int ruby_encoding_index;
- unsigned int flags;
-} OnigEncodingType;
-typedef const OnigEncodingType* OnigEncoding;
-extern const OnigEncodingType OnigEncodingASCII;
-extern
-int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
-extern
-int onigenc_mbclen(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
-extern
-OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
-extern
-int onigenc_init(void);
-extern
-int onigenc_set_default_encoding(OnigEncoding enc);
-extern
-OnigEncoding onigenc_get_default_encoding(void);
-extern
-OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
-extern
-OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
-extern
-int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p);
-extern
-int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p);
-typedef unsigned int OnigOptionType;
-typedef struct {
- unsigned int op;
- unsigned int op2;
- unsigned int behavior;
- OnigOptionType options;
- OnigMetaCharTableType meta_char_table;
-} OnigSyntaxType;
-extern const OnigSyntaxType OnigSyntaxASIS;
-extern const OnigSyntaxType OnigSyntaxPosixBasic;
-extern const OnigSyntaxType OnigSyntaxPosixExtended;
-extern const OnigSyntaxType OnigSyntaxEmacs;
-extern const OnigSyntaxType OnigSyntaxGrep;
-extern const OnigSyntaxType OnigSyntaxGnuRegex;
-extern const OnigSyntaxType OnigSyntaxJava;
-extern const OnigSyntaxType OnigSyntaxPerl58;
-extern const OnigSyntaxType OnigSyntaxPerl58_NG;
-extern const OnigSyntaxType OnigSyntaxPerl;
-extern const OnigSyntaxType OnigSyntaxRuby;
-extern const OnigSyntaxType OnigSyntaxPython;
-extern const OnigSyntaxType* OnigDefaultSyntax;
-struct re_registers {
- int allocated;
- int num_regs;
- OnigPosition* beg;
- OnigPosition* end;
-};
-typedef struct re_registers OnigRegion;
-typedef struct {
- OnigEncoding enc;
- OnigUChar* par;
- OnigUChar* par_end;
-} OnigErrorInfo;
-typedef struct {
- int lower;
- int upper;
- long base_num;
- long inner_num;
-} OnigRepeatRange;
-typedef void (*OnigWarnFunc)(const char* s);
-extern void onig_null_warn(const char* s);
-typedef struct re_pattern_buffer {
- unsigned char* p;
- unsigned int used;
- unsigned int alloc;
- int num_mem;
- int num_repeat;
- int num_null_check;
- int num_comb_exp_check;
- int num_call;
- unsigned int capture_history;
- unsigned int bt_mem_start;
- unsigned int bt_mem_end;
- int stack_pop_level;
- int repeat_range_alloc;
- OnigOptionType options;
- OnigRepeatRange* repeat_range;
- OnigEncoding enc;
- const OnigSyntaxType* syntax;
- void* name_table;
- OnigCaseFoldType case_fold_flag;
- int optimize;
- int threshold_len;
- int anchor;
- OnigDistance anchor_dmin;
- OnigDistance anchor_dmax;
- int sub_anchor;
- unsigned char *exact;
- unsigned char *exact_end;
- unsigned char map[256];
- int *int_map;
- int *int_map_backward;
- OnigDistance dmin;
- OnigDistance dmax;
- uint64_t timelimit;
- struct re_pattern_buffer* chain;
-} OnigRegexType;
-typedef OnigRegexType* OnigRegex;
-typedef OnigRegexType regex_t;
-typedef struct {
- int num_of_elements;
- OnigEncoding pattern_enc;
- OnigEncoding target_enc;
- const OnigSyntaxType* syntax;
- OnigOptionType option;
- OnigCaseFoldType case_fold_flag;
-} OnigCompileInfo;
-extern
-int onig_initialize(OnigEncoding encodings[], int n);
-extern
-int onig_init(void);
-extern
-int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...);
-extern
-void onig_set_warn_func(OnigWarnFunc f);
-extern
-void onig_set_verb_warn_func(OnigWarnFunc f);
-extern
-int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
-extern
-int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax);
-extern
-int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
-extern
-int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
-extern
-void onig_free(OnigRegex);
-extern
-void onig_free_body(OnigRegex);
-extern
-OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
-extern
-OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
-extern
-OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
-extern
-OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
-extern
-int onig_check_linear_time(OnigRegex reg);
-extern
-OnigRegion* onig_region_new(void);
-extern
-void onig_region_init(OnigRegion* region);
-extern
-void onig_region_free(OnigRegion* region, int free_self);
-extern
-void onig_region_copy(OnigRegion* to, const OnigRegion* from);
-extern
-void onig_region_clear(OnigRegion* region);
-extern
-int onig_region_resize(OnigRegion* region, int n);
-extern
-int onig_region_set(OnigRegion* region, int at, int beg, int end);
-extern
-int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
-extern
-int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region);
-extern
-int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
-extern
-int onig_number_of_names(const OnigRegexType *reg);
-extern
-int onig_number_of_captures(const OnigRegexType *reg);
-extern
-int onig_number_of_capture_histories(const OnigRegexType *reg);
-extern
-int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg);
-extern
-int onig_noname_group_capture_is_active(const OnigRegexType *reg);
-extern
-OnigEncoding onig_get_encoding(const OnigRegexType *reg);
-extern
-OnigOptionType onig_get_options(const OnigRegexType *reg);
-extern
-OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg);
-extern
-const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg);
-extern
-int onig_set_default_syntax(const OnigSyntaxType* syntax);
-extern
-void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from);
-extern
-unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax);
-extern
-unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax);
-extern
-unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax);
-extern
-OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax);
-extern
-void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op);
-extern
-void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2);
-extern
-void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior);
-extern
-void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options);
-extern
-int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
-extern
-void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from);
-extern
-OnigCaseFoldType onig_get_default_case_fold_flag(void);
-extern
-int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag);
-extern
-unsigned int onig_get_match_stack_limit_size(void);
-extern
-int onig_set_match_stack_limit_size(unsigned int size);
-extern
-unsigned int onig_get_parse_depth_limit(void);
-extern
-int onig_set_parse_depth_limit(unsigned int depth);
-extern
-int onig_end(void);
-extern
-const char* onig_version(void);
-extern
-const char* onig_copyright(void);
-
-
-extern VALUE rb_cEncoding;
-enum ruby_encoding_consts {
- RUBY_ENCODING_INLINE_MAX = 127,
- RUBY_ENCODING_SHIFT = (RUBY_FL_USHIFT+10),
- RUBY_ENCODING_MASK = (RUBY_ENCODING_INLINE_MAX<> RUBY_ENCODING_SHIFT;
- return ((int)ret);
-}
-typedef const OnigEncodingType rb_encoding;
-__declspec(noalias)
-int rb_char_to_option_kcode(int c, int *option, int *kcode);
-int rb_enc_replicate(const char *name, rb_encoding *src);
-int rb_define_dummy_encoding(const char *name);
-__attribute__((__pure__))
-int rb_enc_dummy_p(rb_encoding *enc);
-__attribute__((__pure__))
-int rb_enc_to_index(rb_encoding *enc);
-int rb_enc_get_index(VALUE obj);
-static inline int
-RB_ENCODING_GET(VALUE obj)
-{
- int encindex = RB_ENCODING_GET_INLINED(obj);
- if (encindex == RUBY_ENCODING_INLINE_MAX) {
- return rb_enc_get_index(obj);
- }
- else {
- return encindex;
- }
-}
-void rb_enc_set_index(VALUE obj, int encindex);
-static inline void
-RB_ENCODING_SET(VALUE obj, int encindex)
-{
- rb_enc_set_index(obj, encindex);
-}
-static inline void
-RB_ENCODING_CODERANGE_SET(VALUE obj, int encindex, enum ruby_coderange_type cr)
-{
- RB_ENCODING_SET(obj, encindex);
- RB_ENC_CODERANGE_SET(obj, cr);
-}
-__attribute__((__pure__))
-int rb_enc_capable(VALUE obj);
-int rb_enc_find_index(const char *name);
-int rb_enc_alias(const char *alias, const char *orig);
-int rb_to_encoding_index(VALUE obj);
-rb_encoding *rb_to_encoding(VALUE obj);
-rb_encoding *rb_find_encoding(VALUE obj);
-rb_encoding *rb_enc_get(VALUE obj);
-rb_encoding *rb_enc_compatible(VALUE str1, VALUE str2);
-rb_encoding *rb_enc_check(VALUE str1,VALUE str2);
-VALUE rb_enc_associate_index(VALUE obj, int encindex);
-VALUE rb_enc_associate(VALUE obj, rb_encoding *enc);
-void rb_enc_copy(VALUE dst, VALUE src);
-rb_encoding *rb_enc_from_index(int idx);
-rb_encoding *rb_enc_find(const char *name);
-static inline const char *
-rb_enc_name(rb_encoding *enc)
-{
- return enc->name;
-}
-static inline int
-rb_enc_mbminlen(rb_encoding *enc)
-{
- return enc->min_enc_len;
-}
-static inline int
-rb_enc_mbmaxlen(rb_encoding *enc)
-{
- return enc->max_enc_len;
-}
-int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
-unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc);
-static inline unsigned int
-rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc)
-{
- return rb_enc_codepoint_len(p, e, 0, enc);
-}
-static inline OnigCodePoint
-rb_enc_mbc_to_codepoint(const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- return (enc)->mbc_to_code((up),(ue),enc);
-}
-int rb_enc_codelen(int code, rb_encoding *enc);
-static inline int
-rb_enc_code_to_mbclen(int c, rb_encoding *enc)
-{
- OnigCodePoint uc = ((OnigCodePoint)c);
- return (enc)->code_to_mbclen(uc,enc);
-}
-static inline int
-rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
-{
- OnigCodePoint uc = ((OnigCodePoint)c);
- OnigUChar *ubuf = ((OnigUChar *)buf);
- return (enc)->code_to_mbc(uc,ubuf,enc);
-}
-static inline char *
-rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_prev_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_left_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_left_adjust_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_right_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_right_adjust_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_step_back(const char *s, const char *p, const char *e, int n, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- const OnigUChar *ur = onigenc_step_back(enc, us, up, ue, n);
- return ((char *)ur);
-}
-static inline int
-rb_enc_asciicompat_inline(rb_encoding *enc)
-{
- return rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc);
-}
-static inline _Bool
-rb_enc_asciicompat(rb_encoding *enc)
-{
- if (rb_enc_mbminlen(enc) != 1) {
- return 0;
- }
- else if (rb_enc_dummy_p(enc)) {
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline _Bool
-rb_enc_str_asciicompat_p(VALUE str)
-{
- rb_encoding *enc = rb_enc_get(str);
- return rb_enc_asciicompat(enc);
-}
-VALUE rb_enc_from_encoding(rb_encoding *enc);
-__attribute__((__pure__))
-int rb_enc_unicode_p(rb_encoding *enc);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_ascii8bit_encoding(void);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_utf8_encoding(void);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_usascii_encoding(void);
-rb_encoding *rb_locale_encoding(void);
-rb_encoding *rb_filesystem_encoding(void);
-rb_encoding *rb_default_external_encoding(void);
-rb_encoding *rb_default_internal_encoding(void);
-__attribute__((__const__))
-int rb_ascii8bit_encindex(void);
-static inline _Bool
-RB_ENCODING_IS_ASCII8BIT(VALUE obj)
-{
- return RB_ENCODING_GET_INLINED(obj) == rb_ascii8bit_encindex();
-}
-__attribute__((__const__))
-int rb_utf8_encindex(void);
-__attribute__((__const__))
-int rb_usascii_encindex(void);
-int rb_locale_encindex(void);
-int rb_filesystem_encindex(void);
-VALUE rb_enc_default_external(void);
-VALUE rb_enc_default_internal(void);
-void rb_enc_set_default_external(VALUE encoding);
-void rb_enc_set_default_internal(VALUE encoding);
-VALUE rb_locale_charmap(VALUE klass);
-static inline _Bool
-rb_enc_is_newline(const char *p, const char *e, rb_encoding *enc)
-{
- OnigUChar *up = ((OnigUChar *)p);
- OnigUChar *ue = ((OnigUChar *)e);
- return (enc)->is_mbc_newline((up),(ue),enc);
-}
-static inline _Bool
-rb_enc_isctype(OnigCodePoint c, OnigCtype t, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,t,enc);
-}
-static inline _Bool
-rb_enc_isascii(OnigCodePoint c, rb_encoding *enc)
-{
- return ((c) < 128);
-}
-static inline _Bool
-rb_enc_isalpha(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,1,enc);
-}
-static inline _Bool
-rb_enc_islower(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,6,enc);
-}
-static inline _Bool
-rb_enc_isupper(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,10,enc);
-}
-static inline _Bool
-rb_enc_iscntrl(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,3,enc);
-}
-static inline _Bool
-rb_enc_ispunct(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,8,enc);
-}
-static inline _Bool
-rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,13,enc);
-}
-static inline _Bool
-rb_enc_isprint(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,7,enc);
-}
-static inline _Bool
-rb_enc_isspace(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,9,enc);
-}
-static inline _Bool
-rb_enc_isdigit(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,4,enc);
-}
-__attribute__((__const__))
-int rb_enc_toupper(int c, rb_encoding *enc);
-__attribute__((__const__))
-int rb_enc_tolower(int c, rb_encoding *enc);
-
-
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_next(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_skip_prefix(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_last_separator(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_end(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ (1, 4)))
-const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc);
-__attribute__((__nonnull__ (1, 3)))
-const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc);
-
-VALUE rb_enc_reg_new(const char *ptr, long len, rb_encoding *enc, int opts);
-
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-VALUE rb_enc_sprintf(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 0)))
-VALUE rb_enc_vsprintf(rb_encoding *enc, const char *fmt, va_list ap);
-__declspec(noreturn)
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...);
-
-VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc);
-__attribute__((__nonnull__ (1)))
-VALUE rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc);
-VALUE rb_enc_str_new_static(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc);
-__attribute__((__nonnull__ (1)))
-VALUE rb_enc_interned_str_cstr(const char *ptr, rb_encoding *enc);
-long rb_enc_strlen(const char *head, const char *tail, rb_encoding *enc);
-char *rb_enc_nth(const char *head, const char *tail, long nth, rb_encoding *enc);
-VALUE rb_obj_encoding(VALUE obj);
-VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
-VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc);
-VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_str_export_to_enc(VALUE obj, rb_encoding *enc);
-VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
-VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts);
-int rb_enc_str_coderange(VALUE str);
-long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr);
-int rb_enc_str_asciionly_p(VALUE str);
-__attribute__((__nonnull__ ()))
-long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_enc_str_new_cstr(const char *str, rb_encoding *enc)
-{
- long len = rbimpl_strlen(str);
- return rb_enc_str_new_static(str, len, enc);
-}
-
-ID rb_intern3(const char *name, long len, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-int rb_enc_symname_p(const char *str, rb_encoding *enc);
-int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc);
-ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc);
-
-typedef enum {
- econv_invalid_byte_sequence,
- econv_undefined_conversion,
- econv_destination_buffer_full,
- econv_source_buffer_empty,
- econv_finished,
- econv_after_output,
- econv_incomplete_input
-} rb_econv_result_t;
-typedef struct rb_econv_t rb_econv_t;
-VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
-int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
-int rb_econv_prepare_options(VALUE opthash, VALUE *ecopts, int ecflags);
-int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
-rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
-rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
-rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
- const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
- unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
- int flags);
-void rb_econv_close(rb_econv_t *ec);
-int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
-int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
-int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
-VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
-int rb_econv_insert_output(rb_econv_t *ec,
- const unsigned char *str, size_t len, const char *str_encoding);
-const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
-void rb_econv_check_error(rb_econv_t *ec);
-VALUE rb_econv_make_exception(rb_econv_t *ec);
-int rb_econv_putbackable(rb_econv_t *ec);
-void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
-const char *rb_econv_asciicompat_encoding(const char *encname);
-VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
-VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
-VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
-VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
-VALUE rb_econv_append(rb_econv_t *ec, const char *bytesrc, long bytesize, VALUE dst, int flags);
-void rb_econv_binmode(rb_econv_t *ec);
-enum ruby_econv_flag_type {
- RUBY_ECONV_ERROR_HANDLER_MASK = 0x000000ff,
- RUBY_ECONV_INVALID_MASK = 0x0000000f,
- RUBY_ECONV_INVALID_REPLACE = 0x00000002,
- RUBY_ECONV_UNDEF_MASK = 0x000000f0,
- RUBY_ECONV_UNDEF_REPLACE = 0x00000020,
- RUBY_ECONV_UNDEF_HEX_CHARREF = 0x00000030,
- RUBY_ECONV_DECORATOR_MASK = 0x0001ff00,
- RUBY_ECONV_NEWLINE_DECORATOR_MASK = 0x00007f00,
- RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK = 0x00000f00,
- RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK = 0x00007000,
- RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR = 0x00000100,
- RUBY_ECONV_CRLF_NEWLINE_DECORATOR = 0x00001000,
- RUBY_ECONV_CR_NEWLINE_DECORATOR = 0x00002000,
- RUBY_ECONV_LF_NEWLINE_DECORATOR = 0x00004000,
- RUBY_ECONV_XML_TEXT_DECORATOR = 0x00008000,
- RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR = 0x00010000,
- RUBY_ECONV_STATEFUL_DECORATOR_MASK = 0x00f00000,
- RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR = 0x00100000,
- RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR =
- 0,
- RUBY_ECONV_PARTIAL_INPUT = 0x00020000,
- RUBY_ECONV_AFTER_OUTPUT = 0x00040000,
- RUBY_ECONV_FLAGS_PLACEHOLDER
-};
-VALUE rb_fstring(VALUE);
-VALUE rb_fstring_cstr(const char *str);
-VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc);
-int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
-int rb_str_symname_p(VALUE);
-VALUE rb_str_quote_unprintable(VALUE);
-char *rb_str_fill_terminator(VALUE str, const int termlen);
-void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
-VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
-VALUE rb_str_chomp_string(VALUE str, VALUE chomp);
-VALUE rb_external_str_with_enc(VALUE str, rb_encoding *eenc);
-VALUE rb_str_cat_conv_enc_opts(VALUE newstr, long ofs, const char *ptr, long len,
- rb_encoding *from, int ecflags, VALUE ecopts);
-VALUE rb_enc_str_scrub(rb_encoding *enc, VALUE str, VALUE repl);
-VALUE rb_str_escape(VALUE str);
-size_t rb_str_memsize(VALUE);
-char *rb_str_to_cstr(VALUE str);
-const char *ruby_escaped_char(int c);
-void rb_str_make_independent(VALUE str);
-int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
-int rb_ascii8bit_appendable_encoding_index(rb_encoding *enc, unsigned int code);
-VALUE rb_str_include(VALUE str, VALUE arg);
-static inline _Bool STR_EMBED_P(VALUE str);
-static inline _Bool STR_SHARED_P(VALUE str);
-static inline VALUE QUOTE(VALUE v);
-static inline VALUE QUOTE_ID(ID v);
-static inline _Bool is_ascii_string(VALUE str);
-static inline _Bool is_broken_string(VALUE str);
-static inline VALUE rb_str_eql_internal(const VALUE str1, const VALUE str2);
-VALUE rb_str_tmp_frozen_acquire(VALUE str);
-void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
-VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
-VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
-VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
-void rb_str_make_embedded(VALUE);
-size_t rb_str_size_as_embedded(VALUE);
-_Bool rb_str_reembeddable_p(VALUE);
-void rb_str_update_shared_ary(VALUE str, VALUE old_root, VALUE new_root);
-VALUE rb_fstring_new(const char *ptr, long len);
-VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
-VALUE rb_str_opt_plus(VALUE x, VALUE y);
-VALUE rb_str_concat_literals(size_t num, const VALUE *strary);
-VALUE rb_str_eql(VALUE str1, VALUE str2);
-VALUE rb_id_quote_unprintable(ID);
-VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
-struct rb_execution_context_struct;
-VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str);
-static inline VALUE
-QUOTE(VALUE v)
-{
- return rb_str_quote_unprintable(v);
-}
-static inline VALUE
-QUOTE_ID(ID i)
-{
- return rb_id_quote_unprintable(i);
-}
-static inline _Bool
-STR_EMBED_P(VALUE str)
-{
- return ! RB_FL_TEST_RAW(str, ((VALUE)RUBY_FL_USER1));
-}
-static inline _Bool
-STR_SHARED_P(VALUE str)
-{
- return RB_FL_ALL_RAW(str, ((VALUE)RUBY_FL_USER1) | ((VALUE)RUBY_FL_USER2));
-}
-static inline _Bool
-is_ascii_string(VALUE str)
-{
- return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_7BIT;
-}
-static inline _Bool
-is_broken_string(VALUE str)
-{
- return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_BROKEN;
-}
-static inline VALUE
-rb_str_eql_internal(const VALUE str1, const VALUE str2)
-{
- const long len = RSTRING_LEN(str1);
- const char *ptr1, *ptr2;
- if (len != RSTRING_LEN(str2)) return ((VALUE)RUBY_Qfalse);
- if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
- if ((ptr1 = RSTRING_PTR(str1)) == (ptr2 = RSTRING_PTR(str2)))
- return ((VALUE)RUBY_Qtrue);
- if (memcmp(ptr1, ptr2, len) == 0)
- return ((VALUE)RUBY_Qtrue);
- return ((VALUE)RUBY_Qfalse);
-}
-extern long rb_backtrace_length_limit;
-extern VALUE rb_eEAGAIN;
-extern VALUE rb_eEWOULDBLOCK;
-extern VALUE rb_eEINPROGRESS;
-__attribute__((__format__(__printf__, 3, 0)))
-void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
-__declspec(noreturn) void rb_async_bug_errno(const char *,int);
-const char *rb_builtin_type_name(int t);
-const char *rb_builtin_class_name(VALUE x);
-__attribute__((__format__(__printf__, (1), (3)))) void rb_warn_deprecated(const char *fmt, const char *suggest, ...);
-__attribute__((__format__(__printf__, (2), (4)))) void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...);
-__attribute__((__format__(__printf__, 6, 0)))
-VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_enc_warn(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__format__(__printf__, (3), (4)))) void rb_syserr_enc_warning(int err, rb_encoding *enc, const char *fmt, ...);
-rb_warning_category_t rb_warning_category_from_name(VALUE category);
-_Bool rb_warning_category_enabled_p(rb_warning_category_t category);
-VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
-VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
-VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
-__attribute__((__format__(__printf__, (1), (2)))) VALUE rb_warning_string(const char *fmt, ...);
-__attribute__((__format__(__printf__, 2, 0)))
-__declspec(noreturn) void rb_vraise(VALUE, const char *, va_list);
-__declspec(noreturn) static inline void rb_raise_cstr(VALUE etype, const char *mesg);
-__declspec(noreturn) static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg);
-__declspec(noreturn) static inline void rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name);
-__declspec(noreturn) static inline void rb_name_err_raise(const char *mesg, VALUE recv, VALUE name);
-__declspec(noreturn) static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name);
-static inline void Check_Type(VALUE v, enum ruby_value_type t);
-static inline _Bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type);
-int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
-__declspec(noreturn) void rb_sys_fail_path_in(const char *func_name, VALUE path);
-__declspec(noreturn) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
-VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path);
-static inline void
-rb_raise_cstr_i(VALUE etype, VALUE mesg)
-{
- VALUE exc = rb_exc_new_str(etype, mesg);
- rb_exc_raise(exc);
-}
-static inline void
-rb_raise_cstr(VALUE etype, const char *mesg)
-{
- VALUE str = ((__builtin_constant_p(mesg) ? rbimpl_str_new_cstr : rb_str_new_cstr) (mesg));
- rb_raise_cstr_i(etype, str);
-}
-static inline void
-rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name)
-{
- VALUE exc = rb_name_err_new(mesg, recv, name);
- rb_exc_raise(exc);
-}
-static inline void
-rb_name_err_raise(const char *mesg, VALUE recv, VALUE name)
-{
- VALUE str = (__builtin_constant_p(mesg) ? rb_fstring_new((mesg), (long)strlen(mesg)) : (rb_fstring_cstr)(mesg));
- rb_name_err_raise_str(str, recv, name);
-}
-static inline void
-rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name)
-{
- VALUE exc = rb_key_err_new(mesg, recv, name);
- rb_exc_raise(exc);
-}
-static inline _Bool
-rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
-{
- return (__builtin_constant_p(RUBY_T_DATA) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_DATA)) : (RB_TYPE_P)((obj), (RUBY_T_DATA))) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type);
-}
-
-extern ID ruby_static_id_signo;
-extern ID ruby_static_id_status;
-VALUE rb_refinement_module_get_refined_class(VALUE module);
-void rb_class_modify_check(VALUE);
-__declspec(noreturn) VALUE rb_f_raise(int argc, VALUE *argv);
-VALUE rb_get_backtrace(VALUE info);
-void rb_call_end_proc(VALUE data);
-void rb_mark_end_proc(void);
-
-void Init_class_hierarchy(void);
-void Init_enc(void);
-void Init_ext(void);
-void Init_File(void);
-void Init_heap(void);
-int Init_enc_set_filesystem_encoding(void);
-void Init_newline(void);
-void Init_BareVM(void);
-void Init_vm_objects(void);
-void Init_vm_backtrace(void);
-void Init_vm_eval(void);static inline
-void Init_vm_stack_canary(void);
-void Init_eval_method(void);
-void rb_call_inits(void);
-
-VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
-__declspec(noreturn) void rb_undefined_alloc(VALUE klass);
-double rb_num_to_dbl(VALUE val);
-VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
-VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
-VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
-int rb_bool_expected(VALUE, const char *, int raise);
-static inline void RBASIC_CLEAR_CLASS(VALUE obj);
-static inline void RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass);
-static inline void RBASIC_SET_CLASS(VALUE obj, VALUE klass);
-int rb_opts_exception_p(VALUE opts, int default_value);
-__attribute__((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
-__attribute__((__const__)) VALUE rb_obj_not(VALUE obj);
-VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
-void rb_obj_copy_ivar(VALUE dest, VALUE obj);
-VALUE rb_false(VALUE obj);
-VALUE rb_convert_type_with_id(VALUE v, int t, const char* nam, ID mid);
-VALUE rb_obj_size(VALUE self, VALUE args, VALUE obj);
-VALUE rb_get_freeze_opt(int argc, VALUE *argv);
-static inline void
-RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass)
-{
- const VALUE *ptr = &((struct RBasic *)(obj))->klass;
- *(VALUE *)ptr = klass;
-}
-static inline void
-RBASIC_CLEAR_CLASS(VALUE obj)
-{
- RBASIC_SET_CLASS_RAW(obj, 0);
-}
-static inline void
-RBASIC_SET_CLASS(VALUE obj, VALUE klass)
-{
- VALUE oldv = RBASIC_CLASS(obj);
- RBASIC_SET_CLASS_RAW(obj, klass);
- (rb_obj_written((VALUE)(obj), (VALUE)(oldv), (VALUE)(klass), "./internal/object.h", 59));
-}
-
-struct rb_iseq_struct;
-VALUE rb_parser_set_yydebug(VALUE, VALUE);
-void *rb_parser_load_file(VALUE parser, VALUE name);
-void rb_parser_keep_script_lines(VALUE vparser);
-void rb_parser_error_tolerant(VALUE vparser);
-void rb_parser_keep_tokens(VALUE vparser);
-VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
-
-struct rb_block;
-struct rb_iseq_struct;
-VALUE rb_proc_location(VALUE self);
-st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
-int rb_block_pair_yield_optimizable(void);
-int rb_block_arity(void);
-int rb_block_min_max_arity(int *max);
-VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
-VALUE rb_callable_receiver(VALUE);
-VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
-VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
-VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
-VALUE rb_sym_to_proc(VALUE sym);
-
-VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
-VALUE rb_reg_check_preprocess(VALUE);
-long rb_reg_search0(VALUE, VALUE, long, int, int);
-VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
-_Bool rb_reg_start_with_p(VALUE re, VALUE str);
-VALUE rb_reg_hash(VALUE re);
-VALUE rb_reg_equal(VALUE re1, VALUE re2);
-void rb_backref_set_string(VALUE string, long pos, long len);
-void rb_match_unbusy(VALUE);
-int rb_match_count(VALUE match);
-int rb_match_nth_defined(int nth, VALUE match);
-VALUE rb_reg_new_ary(VALUE ary, int options);
-
-VALUE rb_to_symbol_type(VALUE obj);
-VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_sym_intern_ascii(const char *ptr, long len);
-VALUE rb_sym_intern_ascii_cstr(const char *ptr);
-int rb_is_const_name(VALUE name);
-int rb_is_class_name(VALUE name);
-int rb_is_instance_name(VALUE name);
-int rb_is_local_name(VALUE name);
-__attribute__((__pure__)) int rb_is_const_sym(VALUE sym);
-__attribute__((__pure__)) int rb_is_attrset_sym(VALUE sym);
-ID rb_make_internal_id(void);
-ID rb_make_temporary_id(size_t n);
-void rb_gc_free_dsymbol(VALUE);
-int rb_static_id_valid_p(ID id);
-
-struct rb_thread_struct;
-VALUE rb_obj_is_mutex(VALUE obj);
-VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
-void rb_thread_execute_interrupts(VALUE th);
-VALUE rb_get_coverages(void);
-int rb_get_coverage_mode(void);
-VALUE rb_default_coverage(int);
-VALUE rb_thread_shield_new(void);
-_Bool rb_thread_shield_owned(VALUE self);
-VALUE rb_thread_shield_wait(VALUE self);
-VALUE rb_thread_shield_release(VALUE self);
-VALUE rb_thread_shield_destroy(VALUE self);
-int rb_thread_to_be_killed(VALUE thread);
-void rb_mutex_allow_trap(VALUE self, int val);
-VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
-VALUE rb_mutex_owned_p(VALUE self);
-VALUE rb_exec_recursive_outer_mid(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h, ID mid);
-int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
-VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
-int ruby_thread_has_gvl_p(void);
-int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
-
-
-typedef struct {
- int coverage_sandboxed;
- intptr_t coverage_fd;
- unsigned int coverage_max_block_size;
-} __sanitizer_sandbox_arguments;
-void __sanitizer_set_report_path(const char *path);
-void __sanitizer_set_report_fd(void *fd);
-const char *__sanitizer_get_report_path();
-void __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);
-void __sanitizer_report_error_summary(const char *error_summary);
-uint16_t __sanitizer_unaligned_load16(const void *p);
-uint32_t __sanitizer_unaligned_load32(const void *p);
-uint64_t __sanitizer_unaligned_load64(const void *p);
-void __sanitizer_unaligned_store16(void *p, uint16_t x);
-void __sanitizer_unaligned_store32(void *p, uint32_t x);
-void __sanitizer_unaligned_store64(void *p, uint64_t x);
-int __sanitizer_acquire_crash_state();
-void __sanitizer_annotate_contiguous_container(const void *beg,
- const void *end,
- const void *old_mid,
- const void *new_mid);
-int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
- const void *end);
-const void *__sanitizer_contiguous_container_find_bad_address(const void *beg,
- const void *mid,
- const void *end);
-void __sanitizer_print_stack_trace(void);
-void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
- size_t out_buf_size);
-void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
- char *out_buf, size_t out_buf_size);
-void __sanitizer_set_death_callback(void (*callback)(void));
-void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
- const void *s2, size_t n, int result);
-void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
- const char *s2, size_t n, int result);
-void __sanitizer_weak_hook_strncasecmp(void *called_pc, const char *s1,
- const char *s2, size_t n, int result);
-void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
- const char *s2, int result);
-void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1,
- const char *s2, int result);
-void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1,
- const char *s2, char *result);
-void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1,
- const char *s2, char *result);
-void __sanitizer_weak_hook_memmem(void *called_pc,
- const void *s1, size_t len1,
- const void *s2, size_t len2, void *result);
-void __sanitizer_print_memory_profile(size_t top_percent,
- size_t max_number_of_contexts);
-void __sanitizer_start_switch_fiber(void **fake_stack_save,
- const void *bottom, size_t size);
-void __sanitizer_finish_switch_fiber(void *fake_stack_save,
- const void **bottom_old,
- size_t *size_old);
-int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
- size_t module_path_len,
- void **pc_offset);
-void __asan_poison_memory_region(void const volatile *addr, size_t size);
-void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
-int __asan_address_is_poisoned(void const volatile *addr);
-void *__asan_region_is_poisoned(void *beg, size_t size);
-void __asan_describe_address(void *addr);
-int __asan_report_present(void);
-void *__asan_get_report_pc(void);
-void *__asan_get_report_bp(void);
-void *__asan_get_report_sp(void);
-void *__asan_get_report_address(void);
-int __asan_get_report_access_type(void);
-size_t __asan_get_report_access_size(void);
-const char *__asan_get_report_description(void);
-const char *__asan_locate_address(void *addr, char *name, size_t name_size,
- void **region_address, size_t *region_size);
-size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size,
- int *thread_id);
-size_t __asan_get_free_stack(void *addr, void **trace, size_t size,
- int *thread_id);
-void __asan_get_shadow_mapping(size_t *shadow_scale, size_t *shadow_offset);
-void __asan_report_error(void *pc, void *bp, void *sp,
- void *addr, int is_write, size_t access_size);
-void __asan_set_death_callback(void (*callback)(void));
-void __asan_set_error_report_callback(void (*callback)(const char *));
-void __asan_on_error(void);
-void __asan_print_accumulated_stats(void);
-const char* __asan_default_options(void);
-void *__asan_get_current_fake_stack(void);
-void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
- void **end);
-void __asan_handle_no_return(void);
-int __asan_update_allocation_context(void* addr);
-
-
-
-struct rb_id_table;
-enum rb_id_table_iterator_result {
- ID_TABLE_CONTINUE = ST_CONTINUE,
- ID_TABLE_STOP = ST_STOP,
- ID_TABLE_DELETE = ST_DELETE,
- ID_TABLE_REPLACE = ST_REPLACE,
- ID_TABLE_ITERATOR_RESULT_END
-};
-struct rb_id_table *rb_id_table_create(size_t size);
-void rb_id_table_free(struct rb_id_table *tbl);
-void rb_id_table_clear(struct rb_id_table *tbl);
-size_t rb_id_table_memsize(const struct rb_id_table *tbl);
-int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val);
-int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp);
-int rb_id_table_delete(struct rb_id_table *tbl, ID id);
-typedef enum rb_id_table_iterator_result rb_id_table_update_value_callback_func_t(VALUE *val, void *data, int existing);
-typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data);
-typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data);
-void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data);
-void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data);
-void rb_id_table_foreach_values_with_replace(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, rb_id_table_update_value_callback_func_t *replace, void *data);
-size_t rb_id_table_size(const struct rb_id_table *tbl);
-
-typedef enum {
- CONST_DEPRECATED = 0x100,
- CONST_VISIBILITY_MASK = 0xff,
- CONST_PUBLIC = 0x00,
- CONST_PRIVATE,
- CONST_VISIBILITY_MAX
-} rb_const_flag_t;
-typedef struct rb_const_entry_struct {
- rb_const_flag_t flag;
- int line;
- VALUE value;
- VALUE file;
-} rb_const_entry_t;
-VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
-void rb_free_const_table(struct rb_id_table *tbl);
-VALUE rb_const_source_location(VALUE, ID);
-int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
-rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
-VALUE rb_public_const_get_at(VALUE klass, ID id);
-VALUE rb_public_const_get_from(VALUE klass, ID id);
-int rb_public_const_defined_from(VALUE klass, ID id);
-VALUE rb_const_source_location_at(VALUE, ID);
-void rb_gc_mark_global_tbl(void);
-void rb_gc_update_global_tbl(void);
-size_t rb_generic_ivar_memsize(VALUE);
-VALUE rb_search_class_path(VALUE);
-VALUE rb_attr_delete(VALUE, ID);
-void rb_autoload_str(VALUE mod, ID id, VALUE file);
-VALUE rb_autoload_at_p(VALUE, ID, int);
-__declspec(noreturn) VALUE rb_mod_const_missing(VALUE,VALUE);
-rb_gvar_getter_t *rb_gvar_getter_function_of(ID);
-rb_gvar_setter_t *rb_gvar_setter_function_of(ID);
-void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
-void rb_gvar_ractor_local(const char *name);
-static inline _Bool ROBJ_TRANSIENT_P(VALUE obj);
-static inline void ROBJ_TRANSIENT_SET(VALUE obj);
-static inline void ROBJ_TRANSIENT_UNSET(VALUE obj);
-struct gen_ivtbl;
-int rb_gen_ivtbl_get(VALUE obj, ID id, struct gen_ivtbl **ivtbl);
-int rb_obj_evacuate_ivs_to_hash_table(ID key, VALUE val, st_data_t arg);
-void rb_mark_generic_ivar(VALUE);
-void rb_mv_generic_ivar(VALUE src, VALUE dst);
-VALUE rb_const_missing(VALUE klass, VALUE name);
-int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
-void rb_iv_tbl_copy(VALUE dst, VALUE src);
-VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
-VALUE rb_gvar_get(ID);
-VALUE rb_gvar_set(ID, VALUE);
-VALUE rb_gvar_defined(ID);
-void rb_const_warn_if_deprecated(const rb_const_entry_t *, VALUE, ID);
-rb_shape_t * rb_grow_iv_list(VALUE obj);
-void rb_ensure_iv_list_size(VALUE obj, uint32_t len, uint32_t newsize);
-struct gen_ivtbl *rb_ensure_generic_iv_list_size(VALUE obj, rb_shape_t *shape, uint32_t newsize);
-attr_index_t rb_obj_ivar_set(VALUE obj, ID id, VALUE val);
-static inline _Bool
-ROBJ_TRANSIENT_P(VALUE obj)
-{
- return RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-static inline void
-ROBJ_TRANSIENT_SET(VALUE obj)
-{
- RB_FL_SET_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-static inline void
-ROBJ_TRANSIENT_UNSET(VALUE obj)
-{
- RB_FL_UNSET_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-
-
-
-enum rb_mjit_func_state {
- MJIT_FUNC_NOT_COMPILED = 0,
- MJIT_FUNC_COMPILING = 1,
- MJIT_FUNC_FAILED = 2,
-};
-struct mjit_options {
- _Bool on;
- _Bool save_temps;
- _Bool warnings;
- _Bool debug;
- char* debug_flags;
- _Bool wait;
- unsigned int call_threshold;
- int verbose;
- int max_cache_size;
- _Bool pause;
- _Bool custom;
-};
-struct rb_mjit_compile_info {
- _Bool disable_ivar_cache;
- _Bool disable_exivar_cache;
- _Bool disable_send_cache;
- _Bool disable_inlining;
- _Bool disable_const_cache;
-};
-typedef VALUE (*jit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
-extern struct mjit_options mjit_opts;
-extern _Bool mjit_call_p;
-extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
-extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
-extern void rb_mjit_recompile_send(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_const(const rb_iseq_t *iseq);
-extern void mjit_cancel_all(const char *reason);
-extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id);
-extern void mjit_init(const struct mjit_options *opts);
-extern void mjit_free_iseq(const rb_iseq_t *iseq);
-extern void mjit_update_references(const rb_iseq_t *iseq);
-extern void mjit_mark(void);
-extern void mjit_mark_cc_entries(const struct rb_iseq_constant_body *const body);
-extern void mjit_notify_waitpid(int exit_code);
-extern void rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop);
-extern void rb_mjit_cme_invalidate(rb_callable_method_entry_t *cme);
-extern void rb_mjit_before_ractor_spawn(void);
-extern void rb_mjit_constant_state_changed(ID id);
-extern void rb_mjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic, unsigned insn_idx);
-extern void rb_mjit_tracing_invalidate_all(rb_event_flag_t new_iseq_events);
-void mjit_child_after_fork(void);
-VALUE mjit_pause(_Bool wait_p);
-VALUE mjit_resume(void);
-void mjit_finish(_Bool close_handle_p);
-
-static inline _Bool rb_yjit_enabled_p(void) { return 0; }
-static inline unsigned rb_yjit_call_threshold(void) { return (2147483647 *2U +1U); }
-static inline void rb_yjit_invalidate_all_method_lookup_assumptions(void) {}
-static inline void rb_yjit_cme_invalidate(rb_callable_method_entry_t *cme) {}
-static inline void rb_yjit_collect_vm_usage_insn(int insn) {}
-static inline void rb_yjit_collect_binding_alloc(void) {}
-static inline void rb_yjit_collect_binding_set(void) {}
-static inline _Bool rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec) { return 0; }
-static inline void rb_yjit_init(void) {}
-static inline void rb_yjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop) {}
-static inline void rb_yjit_constant_state_changed(ID id) {}
-static inline void rb_yjit_iseq_mark(void *payload) {}
-static inline void rb_yjit_iseq_update_references(void *payload) {}
-static inline void rb_yjit_iseq_free(void *payload) {}
-static inline void rb_yjit_before_ractor_spawn(void) {}
-static inline void rb_yjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic, unsigned insn_idx) {}
-static inline void rb_yjit_tracing_invalidate_all(void) {}
-
-
-typedef struct rb_vm_struct ruby_vm_t;
-int ruby_vm_destruct(ruby_vm_t *vm);
-void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
-
-
-enum rb_debug_counter_type {
-RB_DEBUG_COUNTER_mc_inline_hit,
-RB_DEBUG_COUNTER_mc_inline_miss_klass,
-RB_DEBUG_COUNTER_mc_inline_miss_invalidated,
-RB_DEBUG_COUNTER_mc_inline_miss_empty,
-RB_DEBUG_COUNTER_mc_inline_miss_same_cc,
-RB_DEBUG_COUNTER_mc_inline_miss_same_cme,
-RB_DEBUG_COUNTER_mc_inline_miss_same_def,
-RB_DEBUG_COUNTER_mc_inline_miss_diff,
-RB_DEBUG_COUNTER_cvar_write_inline_hit,
-RB_DEBUG_COUNTER_cvar_read_inline_hit,
-RB_DEBUG_COUNTER_cvar_inline_miss,
-RB_DEBUG_COUNTER_cvar_class_invalidate,
-RB_DEBUG_COUNTER_cvar_include_invalidate,
-RB_DEBUG_COUNTER_mc_cme_complement,
-RB_DEBUG_COUNTER_mc_cme_complement_hit,
-RB_DEBUG_COUNTER_mc_search,
-RB_DEBUG_COUNTER_mc_search_notfound,
-RB_DEBUG_COUNTER_mc_search_super,
-RB_DEBUG_COUNTER_ci_packed,
-RB_DEBUG_COUNTER_ci_kw,
-RB_DEBUG_COUNTER_ci_nokw,
-RB_DEBUG_COUNTER_ci_runtime,
-RB_DEBUG_COUNTER_cc_new,
-RB_DEBUG_COUNTER_cc_temp,
-RB_DEBUG_COUNTER_cc_found_in_ccs,
-RB_DEBUG_COUNTER_cc_not_found_in_ccs,
-RB_DEBUG_COUNTER_cc_ent_invalidate,
-RB_DEBUG_COUNTER_cc_cme_invalidate,
-RB_DEBUG_COUNTER_cc_invalidate_leaf,
-RB_DEBUG_COUNTER_cc_invalidate_leaf_ccs,
-RB_DEBUG_COUNTER_cc_invalidate_leaf_callable,
-RB_DEBUG_COUNTER_cc_invalidate_tree,
-RB_DEBUG_COUNTER_cc_invalidate_tree_cme,
-RB_DEBUG_COUNTER_cc_invalidate_tree_callable,
-RB_DEBUG_COUNTER_cc_invalidate_negative,
-RB_DEBUG_COUNTER_ccs_free,
-RB_DEBUG_COUNTER_ccs_maxlen,
-RB_DEBUG_COUNTER_ccs_found,
-RB_DEBUG_COUNTER_ccs_not_found,
-RB_DEBUG_COUNTER_call0_public,
-RB_DEBUG_COUNTER_call0_other,
-RB_DEBUG_COUNTER_gccct_hit,
-RB_DEBUG_COUNTER_gccct_miss,
-RB_DEBUG_COUNTER_gccct_null,
-RB_DEBUG_COUNTER_iseq_num,
-RB_DEBUG_COUNTER_iseq_cd_num,
-RB_DEBUG_COUNTER_ccf_general,
-RB_DEBUG_COUNTER_ccf_iseq_setup,
-RB_DEBUG_COUNTER_ccf_iseq_setup_0start,
-RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start,
-RB_DEBUG_COUNTER_ccf_iseq_fix,
-RB_DEBUG_COUNTER_ccf_iseq_opt,
-RB_DEBUG_COUNTER_ccf_iseq_kw1,
-RB_DEBUG_COUNTER_ccf_iseq_kw2,
-RB_DEBUG_COUNTER_ccf_cfunc,
-RB_DEBUG_COUNTER_ccf_cfunc_with_frame,
-RB_DEBUG_COUNTER_ccf_ivar,
-RB_DEBUG_COUNTER_ccf_attrset,
-RB_DEBUG_COUNTER_ccf_method_missing,
-RB_DEBUG_COUNTER_ccf_zsuper,
-RB_DEBUG_COUNTER_ccf_bmethod,
-RB_DEBUG_COUNTER_ccf_opt_send,
-RB_DEBUG_COUNTER_ccf_opt_call,
-RB_DEBUG_COUNTER_ccf_opt_block_call,
-RB_DEBUG_COUNTER_ccf_opt_struct_aref,
-RB_DEBUG_COUNTER_ccf_opt_struct_aset,
-RB_DEBUG_COUNTER_ccf_super_method,
-RB_DEBUG_COUNTER_frame_push,
-RB_DEBUG_COUNTER_frame_push_method,
-RB_DEBUG_COUNTER_frame_push_block,
-RB_DEBUG_COUNTER_frame_push_class,
-RB_DEBUG_COUNTER_frame_push_top,
-RB_DEBUG_COUNTER_frame_push_cfunc,
-RB_DEBUG_COUNTER_frame_push_ifunc,
-RB_DEBUG_COUNTER_frame_push_eval,
-RB_DEBUG_COUNTER_frame_push_rescue,
-RB_DEBUG_COUNTER_frame_push_dummy,
-RB_DEBUG_COUNTER_frame_R2R,
-RB_DEBUG_COUNTER_frame_R2C,
-RB_DEBUG_COUNTER_frame_C2C,
-RB_DEBUG_COUNTER_frame_C2R,
-RB_DEBUG_COUNTER_ivar_get_ic_hit,
-RB_DEBUG_COUNTER_ivar_get_ic_miss,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject,
-RB_DEBUG_COUNTER_ivar_set_ic_hit,
-RB_DEBUG_COUNTER_ivar_set_ic_miss,
-RB_DEBUG_COUNTER_ivar_set_ic_miss_iv_hit,
-RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject,
-RB_DEBUG_COUNTER_ivar_get_base,
-RB_DEBUG_COUNTER_ivar_set_base,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_set,
-RB_DEBUG_COUNTER_ivar_get_cc_miss_set,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_unset,
-RB_DEBUG_COUNTER_ivar_get_cc_miss_unset,
-RB_DEBUG_COUNTER_lvar_get,
-RB_DEBUG_COUNTER_lvar_get_dynamic,
-RB_DEBUG_COUNTER_lvar_set,
-RB_DEBUG_COUNTER_lvar_set_dynamic,
-RB_DEBUG_COUNTER_lvar_set_slowpath,
-RB_DEBUG_COUNTER_gc_count,
-RB_DEBUG_COUNTER_gc_minor_newobj,
-RB_DEBUG_COUNTER_gc_minor_malloc,
-RB_DEBUG_COUNTER_gc_minor_method,
-RB_DEBUG_COUNTER_gc_minor_capi,
-RB_DEBUG_COUNTER_gc_minor_stress,
-RB_DEBUG_COUNTER_gc_major_nofree,
-RB_DEBUG_COUNTER_gc_major_oldgen,
-RB_DEBUG_COUNTER_gc_major_shady,
-RB_DEBUG_COUNTER_gc_major_force,
-RB_DEBUG_COUNTER_gc_major_oldmalloc,
-RB_DEBUG_COUNTER_gc_enter_start,
-RB_DEBUG_COUNTER_gc_enter_mark_continue,
-RB_DEBUG_COUNTER_gc_enter_sweep_continue,
-RB_DEBUG_COUNTER_gc_enter_rest,
-RB_DEBUG_COUNTER_gc_enter_finalizer,
-RB_DEBUG_COUNTER_gc_isptr_trial,
-RB_DEBUG_COUNTER_gc_isptr_range,
-RB_DEBUG_COUNTER_gc_isptr_align,
-RB_DEBUG_COUNTER_gc_isptr_maybe,
-RB_DEBUG_COUNTER_obj_newobj,
-RB_DEBUG_COUNTER_obj_newobj_slowpath,
-RB_DEBUG_COUNTER_obj_newobj_wb_unprotected,
-RB_DEBUG_COUNTER_obj_free,
-RB_DEBUG_COUNTER_obj_promote,
-RB_DEBUG_COUNTER_obj_wb_unprotect,
-RB_DEBUG_COUNTER_obj_obj_embed,
-RB_DEBUG_COUNTER_obj_obj_transient,
-RB_DEBUG_COUNTER_obj_obj_ptr,
-RB_DEBUG_COUNTER_obj_obj_too_complex,
-RB_DEBUG_COUNTER_obj_str_ptr,
-RB_DEBUG_COUNTER_obj_str_embed,
-RB_DEBUG_COUNTER_obj_str_shared,
-RB_DEBUG_COUNTER_obj_str_nofree,
-RB_DEBUG_COUNTER_obj_str_fstr,
-RB_DEBUG_COUNTER_obj_ary_embed,
-RB_DEBUG_COUNTER_obj_ary_transient,
-RB_DEBUG_COUNTER_obj_ary_ptr,
-RB_DEBUG_COUNTER_obj_ary_extracapa,
-RB_DEBUG_COUNTER_obj_ary_shared_create,
-RB_DEBUG_COUNTER_obj_ary_shared,
-RB_DEBUG_COUNTER_obj_ary_shared_root_occupied,
-RB_DEBUG_COUNTER_obj_hash_empty,
-RB_DEBUG_COUNTER_obj_hash_1,
-RB_DEBUG_COUNTER_obj_hash_2,
-RB_DEBUG_COUNTER_obj_hash_3,
-RB_DEBUG_COUNTER_obj_hash_4,
-RB_DEBUG_COUNTER_obj_hash_5_8,
-RB_DEBUG_COUNTER_obj_hash_g8,
-RB_DEBUG_COUNTER_obj_hash_null,
-RB_DEBUG_COUNTER_obj_hash_ar,
-RB_DEBUG_COUNTER_obj_hash_st,
-RB_DEBUG_COUNTER_obj_hash_transient,
-RB_DEBUG_COUNTER_obj_hash_force_convert,
-RB_DEBUG_COUNTER_obj_struct_embed,
-RB_DEBUG_COUNTER_obj_struct_transient,
-RB_DEBUG_COUNTER_obj_struct_ptr,
-RB_DEBUG_COUNTER_obj_data_empty,
-RB_DEBUG_COUNTER_obj_data_xfree,
-RB_DEBUG_COUNTER_obj_data_imm_free,
-RB_DEBUG_COUNTER_obj_data_zombie,
-RB_DEBUG_COUNTER_obj_match_under4,
-RB_DEBUG_COUNTER_obj_match_ge4,
-RB_DEBUG_COUNTER_obj_match_ge8,
-RB_DEBUG_COUNTER_obj_match_ptr,
-RB_DEBUG_COUNTER_obj_iclass_ptr,
-RB_DEBUG_COUNTER_obj_class_ptr,
-RB_DEBUG_COUNTER_obj_module_ptr,
-RB_DEBUG_COUNTER_obj_bignum_ptr,
-RB_DEBUG_COUNTER_obj_bignum_embed,
-RB_DEBUG_COUNTER_obj_float,
-RB_DEBUG_COUNTER_obj_complex,
-RB_DEBUG_COUNTER_obj_rational,
-RB_DEBUG_COUNTER_obj_regexp_ptr,
-RB_DEBUG_COUNTER_obj_file_ptr,
-RB_DEBUG_COUNTER_obj_symbol,
-RB_DEBUG_COUNTER_obj_imemo_ment,
-RB_DEBUG_COUNTER_obj_imemo_iseq,
-RB_DEBUG_COUNTER_obj_imemo_env,
-RB_DEBUG_COUNTER_obj_imemo_tmpbuf,
-RB_DEBUG_COUNTER_obj_imemo_ast,
-RB_DEBUG_COUNTER_obj_imemo_cref,
-RB_DEBUG_COUNTER_obj_imemo_svar,
-RB_DEBUG_COUNTER_obj_imemo_throw_data,
-RB_DEBUG_COUNTER_obj_imemo_ifunc,
-RB_DEBUG_COUNTER_obj_imemo_memo,
-RB_DEBUG_COUNTER_obj_imemo_parser_strterm,
-RB_DEBUG_COUNTER_obj_imemo_callinfo,
-RB_DEBUG_COUNTER_obj_imemo_callcache,
-RB_DEBUG_COUNTER_obj_imemo_constcache,
-RB_DEBUG_COUNTER_artable_hint_hit,
-RB_DEBUG_COUNTER_artable_hint_miss,
-RB_DEBUG_COUNTER_artable_hint_notfound,
-RB_DEBUG_COUNTER_heap_xmalloc,
-RB_DEBUG_COUNTER_heap_xrealloc,
-RB_DEBUG_COUNTER_heap_xfree,
-RB_DEBUG_COUNTER_theap_alloc,
-RB_DEBUG_COUNTER_theap_alloc_fail,
-RB_DEBUG_COUNTER_theap_evacuate,
-RB_DEBUG_COUNTER_vm_sync_lock,
-RB_DEBUG_COUNTER_vm_sync_lock_enter,
-RB_DEBUG_COUNTER_vm_sync_lock_enter_nb,
-RB_DEBUG_COUNTER_vm_sync_lock_enter_cr,
-RB_DEBUG_COUNTER_vm_sync_barrier,
- RB_DEBUG_COUNTER_MAX
-};
-void rb_debug_counter_show_results(const char *msg);
-size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
-void ruby_debug_counter_reset(void);
-void ruby_debug_counter_show_at_exit(int enable);
-
-struct rb_subclass_entry {
- VALUE klass;
- struct rb_subclass_entry *next;
- struct rb_subclass_entry *prev;
-};
-struct rb_cvar_class_tbl_entry {
- uint32_t index;
- rb_serial_t global_cvar_state;
- VALUE class_value;
-};
-struct rb_classext_struct {
- VALUE *iv_ptr;
- struct rb_id_table *const_tbl;
- struct rb_id_table *callable_m_tbl;
- struct rb_id_table *cc_tbl;
- struct rb_id_table *cvc_tbl;
- size_t superclass_depth;
- VALUE *superclasses;
- struct rb_subclass_entry *subclasses;
- struct rb_subclass_entry *subclass_entry;
- struct rb_subclass_entry *module_subclass_entry;
- const VALUE origin_;
- const VALUE refined_class;
- rb_alloc_func_t allocator;
- const VALUE includer;
- uint32_t max_iv_count;
- uint32_t variation_count;
-};
-struct RClass {
- struct RBasic basic;
- VALUE super;
- struct rb_id_table *m_tbl;
-};
-typedef struct rb_subclass_entry rb_subclass_entry_t;
-typedef struct rb_classext_struct rb_classext_t;
-void rb_class_subclass_add(VALUE super, VALUE klass);
-void rb_class_remove_from_super_subclasses(VALUE);
-void rb_class_update_superclasses(VALUE);
-size_t rb_class_superclasses_memsize(VALUE);
-void rb_class_remove_subclass_head(VALUE);
-int rb_singleton_class_internal_p(VALUE sklass);
-VALUE rb_class_boot(VALUE);
-VALUE rb_class_s_alloc(VALUE klass);
-VALUE rb_module_s_alloc(VALUE klass);
-void rb_module_set_initialized(VALUE module);
-void rb_module_check_initializable(VALUE module);
-VALUE rb_make_metaclass(VALUE, VALUE);
-VALUE rb_include_class_new(VALUE, VALUE);
-void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
-void rb_class_detach_subclasses(VALUE);
-void rb_class_detach_module_subclasses(VALUE);
-void rb_class_remove_from_module_subclasses(VALUE);
-VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_class_undefined_instance_methods(VALUE mod);
-VALUE rb_special_singleton_class(VALUE);
-VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
-VALUE rb_singleton_class_get(VALUE obj);
-void rb_undef_methods_from(VALUE klass, VALUE super);
-static inline void RCLASS_SET_ORIGIN(VALUE klass, VALUE origin);
-static inline void RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass);
-static inline VALUE RCLASS_SUPER(VALUE klass);
-static inline VALUE RCLASS_SET_SUPER(VALUE klass, VALUE super);
-static inline void RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass);
-VALUE rb_class_inherited(VALUE, VALUE);
-VALUE rb_keyword_error_new(const char *, VALUE);
-static inline void
-RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
-{
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&(((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_))) unaligned_member_access_result = ((VALUE *)(&(((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_)));
- ; unaligned_member_access_result; }), (VALUE)(origin), "./internal/class.h", 142);
- if (klass != origin) RB_FL_SET(origin, ((VALUE)RUBY_FL_USER0));
-}
-static inline void
-RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass)
-{
- RB_FL_SET(iclass, ((VALUE)RUBY_FL_USER3));
-}
-static inline _Bool
-RICLASS_OWNS_M_TBL_P(VALUE iclass)
-{
- return RB_FL_TEST_RAW(iclass, ((VALUE)RUBY_FL_USER0) | ((VALUE)RUBY_FL_USER3)) == ((VALUE)RUBY_FL_USER0);
-}
-static inline void
-RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
-{
- rb_obj_write((VALUE)(iclass), __extension__({
- ;
- ; __typeof__((VALUE *)(&(((rb_classext_t *)((char *)(iclass) + sizeof(struct RClass)))->includer))) unaligned_member_access_result = ((VALUE *)(&(((rb_classext_t *)((char *)(iclass) + sizeof(struct RClass)))->includer)));
- ; unaligned_member_access_result; }), (VALUE)(klass), "./internal/class.h", 161);
-}
-static inline VALUE
-RCLASS_SUPER(VALUE klass)
-{
- return ((struct RClass *)(klass))->super;
-}
-static inline VALUE
-RCLASS_SET_SUPER(VALUE klass, VALUE super)
-{
- if (super) {
- rb_class_remove_from_super_subclasses(klass);
- rb_class_subclass_add(super, klass);
- }
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&((struct RClass *)(klass))->super)) unaligned_member_access_result = ((VALUE *)(&((struct RClass *)(klass))->super));
- ; unaligned_member_access_result; }), (VALUE)(super), "./internal/class.h", 177);
- rb_class_update_superclasses(klass);
- return super;
-}
-enum vm_call_flag_bits {
- VM_CALL_ARGS_SPLAT_bit,
- VM_CALL_ARGS_BLOCKARG_bit,
- VM_CALL_FCALL_bit,
- VM_CALL_VCALL_bit,
- VM_CALL_ARGS_SIMPLE_bit,
- VM_CALL_BLOCKISEQ_bit,
- VM_CALL_KWARG_bit,
- VM_CALL_KW_SPLAT_bit,
- VM_CALL_TAILCALL_bit,
- VM_CALL_SUPER_bit,
- VM_CALL_ZSUPER_bit,
- VM_CALL_OPT_SEND_bit,
- VM_CALL_KW_SPLAT_MUT_bit,
- VM_CALL__END
-};
-struct rb_callinfo_kwarg {
- int keyword_len;
- VALUE keywords[];
-};
-static inline size_t
-rb_callinfo_kwarg_bytes(int keyword_len)
-{
- return rb_size_mul_add_or_raise(
- keyword_len,
- sizeof(VALUE),
- sizeof(struct rb_callinfo_kwarg),
- rb_eRuntimeError);
-}
-struct rb_callinfo {
- VALUE flags;
- const struct rb_callinfo_kwarg *kwarg;
- VALUE mid;
- VALUE flag;
- VALUE argc;
-};
-static inline _Bool
-vm_ci_packed_p(const struct rb_callinfo *ci)
-{
- if ((__builtin_expect(!!(((VALUE)ci) & 0x01), 1))) {
- return 1;
- }
- else {
- ((void)0);
- return 0;
- }
-}
-static inline _Bool
-vm_ci_p(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci) || imemo_type_p((VALUE)ci, imemo_callinfo)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline ID
-vm_ci_mid(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (((VALUE)ci) >> (1 + 15 + 16)) & ((((VALUE)1)<<32) - 1);
- }
- else {
- return (ID)ci->mid;
- }
-}
-static inline unsigned int
-vm_ci_flag(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (unsigned int)((((VALUE)ci) >> (1 + 15)) & ((((VALUE)1)<<16) - 1));
- }
- else {
- return (unsigned int)ci->flag;
- }
-}
-static inline unsigned int
-vm_ci_argc(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (unsigned int)((((VALUE)ci) >> (1)) & ((((VALUE)1)<<15) - 1));
- }
- else {
- return (unsigned int)ci->argc;
- }
-}
-static inline const struct rb_callinfo_kwarg *
-vm_ci_kwarg(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return ((void*)0);
- }
- else {
- return ci->kwarg;
- }
-}
-static inline void
-vm_ci_dump(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- ruby_debug_printf("packed_ci ID:%s flag:%x argc:%u\n",
- rb_id2name(vm_ci_mid(ci)), vm_ci_flag(ci), vm_ci_argc(ci));
- }
- else {
- rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 177, __func__);
- }
-}
-static inline const struct rb_callinfo *
-vm_ci_new_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
-{
- if ((((mid ) & ~((((VALUE)1)<<32) - 1)) ? 0 : ((flag) & ~((((VALUE)1)<<16) - 1)) ? 0 : ((argc) & ~((((VALUE)1)<<15) - 1)) ? 0 : (kwarg) ? 0 : 1)) {
- ((void)0);
- return ((const struct rb_callinfo *) ((((VALUE)(mid )) << (1 + 15 + 16)) | (((VALUE)(flag)) << (1 + 15)) | (((VALUE)(argc)) << (1)) | RUBY_FIXNUM_FLAG));
- }
- const _Bool debug = 0;
- if (debug) ruby_debug_printf("%s:%d ", file, line);
- const struct rb_callinfo *ci = (const struct rb_callinfo *)
- rb_imemo_new(imemo_callinfo,
- (VALUE)mid,
- (VALUE)flag,
- (VALUE)argc,
- (VALUE)kwarg);
- if (debug) rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 218, __func__);
- if (kwarg) {
- ((void)0);
- }
- else {
- ((void)0);
- }
- ((void)0);
- ((void)0);
- return ci;
-}
-static inline const struct rb_callinfo *
-vm_ci_new_runtime_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
-{
- ((void)0);
- return vm_ci_new_(mid, flag, argc, kwarg, file, line);
-}
-static inline _Bool
-vm_ci_markable(const struct rb_callinfo *ci)
-{
- if (! ci) {
- return 0;
- }
- else if (vm_ci_packed_p(ci)) {
- return 1;
- }
- else {
- ((void)0);
- return ! RB_FL_ANY_RAW((VALUE)ci, ((VALUE)RUBY_FL_USER4));
- }
-}
-typedef VALUE (*vm_call_handler)(
- struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *cfp,
- struct rb_calling_info *calling);
-struct rb_callcache {
- const VALUE flags;
- const VALUE klass;
- const struct rb_callable_method_entry_struct * const cme_;
- const vm_call_handler call_;
- union {
- struct {
- uintptr_t value;
- } attr;
- const enum method_missing_reason method_missing_reason;
- VALUE v;
- } aux_;
-};
-extern const struct rb_callcache *rb_vm_empty_cc(void);
-extern const struct rb_callcache *rb_vm_empty_cc_for_super(void);
-static inline void vm_cc_attr_index_set(const struct rb_callcache *cc, attr_index_t index, shape_id_t dest_shape_id);
-static inline void
-vm_cc_attr_index_initialize(const struct rb_callcache *cc, shape_id_t shape_id)
-{
- vm_cc_attr_index_set(cc, (attr_index_t)-1, shape_id);
-}
-static inline const struct rb_callcache *
-vm_cc_new(VALUE klass,
- const struct rb_callable_method_entry_struct *cme,
- vm_call_handler call)
-{
- const struct rb_callcache *cc = (const struct rb_callcache *)rb_imemo_new(imemo_callcache, (VALUE)cme, (VALUE)call, 0, klass);
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- ((void)0);
- return cc;
-}
-static inline _Bool
-vm_cc_class_check(const struct rb_callcache *cc, VALUE klass)
-{
- ((void)0);
- ((void)0);
- return cc->klass == klass;
-}
-static inline int
-vm_cc_markable(const struct rb_callcache *cc)
-{
- ((void)0);
- return RB_FL_TEST_RAW((VALUE)cc, ((VALUE)RUBY_FL_FREEZE)) == 0;
-}
-static inline const struct rb_callable_method_entry_struct *
-vm_cc_cme(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- return cc->cme_;
-}
-static inline vm_call_handler
-vm_cc_call(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- return cc->call_;
-}
-static inline attr_index_t
-vm_cc_attr_index(const struct rb_callcache *cc)
-{
- ((void)0);
- return (attr_index_t)((cc->aux_.attr.value & (((VALUE)-1) >> 32)) - 1);
-}
-static inline shape_id_t
-vm_cc_attr_index_dest_shape_id(const struct rb_callcache *cc)
-{
- ((void)0);
- return cc->aux_.attr.value >> ((8 * 8) - 32);
-}
-static inline void
-vm_cc_atomic_shape_and_index(const struct rb_callcache *cc, shape_id_t * shape_id, attr_index_t * index)
-{
- uintptr_t cache_value = cc->aux_.attr.value;
- *shape_id = (shape_id_t)(cache_value >> ((8 * 8) - 32));
- *index = (attr_index_t)(cache_value & (((VALUE)-1) >> 32)) - 1;
- return;
-}
-static inline void
-vm_ic_atomic_shape_and_index(const struct iseq_inline_iv_cache_entry *ic, shape_id_t * shape_id, attr_index_t * index)
-{
- uintptr_t cache_value = ic->value;
- *shape_id = (shape_id_t)(cache_value >> ((8 * 8) - 32));
- *index = (attr_index_t)(cache_value & (((VALUE)-1) >> 32)) - 1;
- return;
-}
-static inline shape_id_t
-vm_ic_attr_index_dest_shape_id(const struct iseq_inline_iv_cache_entry *ic)
-{
- return (shape_id_t)(ic->value >> ((8 * 8) - 32));
-}
-static inline unsigned int
-vm_cc_cmethod_missing_reason(const struct rb_callcache *cc)
-{
- ((void)0);
- return cc->aux_.method_missing_reason;
-}
-static inline _Bool
-vm_cc_invalidated_p(const struct rb_callcache *cc)
-{
- if (cc->klass && !((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))) {
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline _Bool
-vm_cc_valid_p(const struct rb_callcache *cc, const rb_callable_method_entry_t *cc_cme, VALUE klass)
-{
- ((void)0);
- if (cc->klass == klass && !((cc_cme)->flags & ((VALUE)RUBY_FL_USER9))) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline void
-vm_cc_call_set(const struct rb_callcache *cc, vm_call_handler call)
-{
- ((void)0);
- ((void)0);
- *(vm_call_handler *)&cc->call_ = call;
-}
-static inline void
-vm_cc_attr_index_set(const struct rb_callcache *cc, attr_index_t index, shape_id_t dest_shape_id)
-{
- uintptr_t *attr_value = (uintptr_t *)&cc->aux_.attr.value;
- if (!vm_cc_markable(cc)) {
- *attr_value = (uintptr_t)(((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32);
- return;
- }
- ((void)0);
- ((void)0);
- *attr_value = (attr_index_t)(index + 1) | ((uintptr_t)(dest_shape_id) << ((8 * 8) - 32));
-}
-static inline void
-vm_ic_attr_index_set(const rb_iseq_t *iseq, const struct iseq_inline_iv_cache_entry *ic, attr_index_t index, shape_id_t dest_shape_id)
-{
- *(uintptr_t *)&ic->value = ((uintptr_t)dest_shape_id << ((8 * 8) - 32)) | (attr_index_t)(index + 1);
-}
-static inline void
-vm_ic_attr_index_initialize(const struct iseq_inline_iv_cache_entry *ic, shape_id_t shape_id)
-{
- *(uintptr_t *)&ic->value = (uintptr_t)shape_id << ((8 * 8) - 32);
-}
-static inline void
-vm_cc_method_missing_reason_set(const struct rb_callcache *cc, enum method_missing_reason reason)
-{
- ((void)0);
- ((void)0);
- *(enum method_missing_reason *)&cc->aux_.method_missing_reason = reason;
-}
-static inline void
-vm_cc_invalidate(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- ((void)0);
- *(VALUE *)&cc->klass = 0;
- ((void)0);
-}
-struct rb_call_data {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
-};
-struct rb_class_cc_entries {
- int capa;
- int len;
- const struct rb_callable_method_entry_struct *cme;
- struct rb_class_cc_entries_entry {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
- } *entries;
-};
-void rb_vm_ccs_free(struct rb_class_cc_entries *ccs);
-
-struct RNode;
-VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
-ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
-struct RNode *ruby_debug_print_node(int level, int debug_level, const char *header, const struct RNode *node);
-int ruby_debug_print_indent(int level, int debug_level, int indent_level);
-void ruby_debug_gc_check_func(void);
-void ruby_set_debug_option(const char *str);
-extern enum ruby_debug_log_mode {
- ruby_debug_log_disabled = 0x00,
- ruby_debug_log_memory = 0x01,
- ruby_debug_log_stderr = 0x02,
- ruby_debug_log_file = 0x04,
-} ruby_debug_log_mode;
-__attribute__((__format__(__printf__, 4, 5)))
-void ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...);
-void ruby_debug_log_print(unsigned int n);
-_Bool ruby_debug_log_filter(const char *func_name, const char *file_name);
-
-typedef long OFFSET;
-typedef unsigned long lindex_t;
-typedef VALUE GENTRY;
-typedef rb_iseq_t *ISEQ;
-
-extern VALUE ruby_vm_const_missing_count;
-extern rb_serial_t ruby_vm_constant_cache_invalidations;
-extern rb_serial_t ruby_vm_constant_cache_misses;
-extern rb_serial_t ruby_vm_global_cvar_state;
-static inline void
-CC_SET_FASTPATH(const struct rb_callcache *cc, vm_call_handler func, _Bool enabled)
-{
- if ((__builtin_expect(!!(enabled), 1))) {
- vm_cc_call_set(cc, func);
- }
-}
-static inline struct vm_throw_data *
-THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
-{
- struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
- obj->throw_state = st;
- return obj;
-}
-static inline VALUE
-THROW_DATA_VAL(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->throw_obj;
-}
-static inline const rb_control_frame_t *
-THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->catch_frame;
-}
-static inline int
-THROW_DATA_STATE(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->throw_state;
-}
-static inline int
-THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->flags & ((VALUE)RUBY_FL_USER4);
-}
-static inline void
-THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
-{
- ((void)0);
- obj->catch_frame = cfp;
-}
-static inline void
-THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
-{
- ((void)0);
- obj->throw_state = st;
-}
-static inline void
-THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
-{
- if (imemo_throw_data_p((VALUE)obj) &&
- THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
- obj->flags |= ((VALUE)RUBY_FL_USER4);
- }
-}
-static inline _Bool
-vm_call_cacheable(const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- return (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) ||
- (rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) != METHOD_VISI_PROTECTED;
-}
-static inline _Bool
-vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- return !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) && vm_call_cacheable(ci, cc);
-}
-
-
-struct rb_ractor_local_storage_type {
- void (*mark)(void *ptr);
- void (*free)(void *ptr);
-};
-typedef struct rb_ractor_local_key_struct *rb_ractor_local_key_t;
-extern VALUE rb_cRactor;
-VALUE rb_ractor_stdin(void);
-VALUE rb_ractor_stdout(void);
-VALUE rb_ractor_stderr(void);
-void rb_ractor_stdin_set(VALUE io);
-void rb_ractor_stdout_set(VALUE io);
-void rb_ractor_stderr_set(VALUE io);
-rb_ractor_local_key_t rb_ractor_local_storage_value_newkey(void);
-VALUE rb_ractor_local_storage_value(rb_ractor_local_key_t key);
-_Bool rb_ractor_local_storage_value_lookup(rb_ractor_local_key_t key, VALUE *val);
-void rb_ractor_local_storage_value_set(rb_ractor_local_key_t key, VALUE val);
-extern const struct rb_ractor_local_storage_type rb_ractor_local_storage_type_free;
-rb_ractor_local_key_t rb_ractor_local_storage_ptr_newkey(const struct rb_ractor_local_storage_type *type);
-void *rb_ractor_local_storage_ptr(rb_ractor_local_key_t key);
-void rb_ractor_local_storage_ptr_set(rb_ractor_local_key_t key, void *ptr);
-VALUE rb_ractor_make_shareable(VALUE obj);
-VALUE rb_ractor_make_shareable_copy(VALUE obj);
-static inline _Bool
-rb_ractor_shareable_p(VALUE obj)
-{
- _Bool rb_ractor_shareable_p_continue(VALUE obj);
- if (RB_SPECIAL_CONST_P(obj)) {
- return 1;
- }
- else if (RB_FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)) {
- return 1;
- }
- else {
- return rb_ractor_shareable_p_continue(obj);
- }
-}
-enum rb_ractor_basket_type {
- basket_type_none,
- basket_type_ref,
- basket_type_copy,
- basket_type_move,
- basket_type_will,
- basket_type_deleted,
- basket_type_reserved,
-};
-struct rb_ractor_basket {
- _Bool exception;
- enum rb_ractor_basket_type type;
- VALUE v;
- VALUE sender;
-};
-struct rb_ractor_queue {
- struct rb_ractor_basket *baskets;
- int start;
- int cnt;
- int size;
- unsigned int serial;
- unsigned int reserved_cnt;
-};
-struct rb_ractor_waiting_list {
- int cnt;
- int size;
- rb_ractor_t **ractors;
-};
-enum rb_ractor_wait_status {
- wait_none = 0x00,
- wait_receiving = 0x01,
- wait_taking = 0x02,
- wait_yielding = 0x04,
- wait_moving = 0x08,
-};
-enum rb_ractor_wakeup_status {
- wakeup_none,
- wakeup_by_send,
- wakeup_by_yield,
- wakeup_by_take,
- wakeup_by_close,
- wakeup_by_interrupt,
- wakeup_by_retry,
-};
-struct rb_ractor_sync {
- rb_nativethread_lock_t lock;
- rb_nativethread_cond_t cond;
- struct rb_ractor_queue incoming_queue;
- struct rb_ractor_waiting_list taking_ractors;
- _Bool incoming_port_closed;
- _Bool outgoing_port_closed;
- struct ractor_wait {
- enum rb_ractor_wait_status status;
- enum rb_ractor_wakeup_status wakeup_status;
- struct rb_ractor_basket yielded_basket;
- struct rb_ractor_basket taken_basket;
- } wait;
-};
-enum ractor_status {
- ractor_created,
- ractor_running,
- ractor_blocking,
- ractor_terminated,
-};
-struct rb_ractor_struct {
- struct rb_ractor_pub pub;
- struct rb_ractor_sync sync;
- VALUE receiving_mutex;
- _Bool yield_atexit;
- rb_nativethread_cond_t barrier_wait_cond;
- struct {
- struct ccan_list_head set;
- unsigned int cnt;
- unsigned int blocking_cnt;
- unsigned int sleeper;
- struct rb_thread_sched sched;
- rb_execution_context_t *running_ec;
- rb_thread_t *main;
- } threads;
- VALUE thgroup_default;
- VALUE name;
- VALUE loc;
- enum ractor_status status_;
- struct ccan_list_node vmlr_node;
- st_table *local_storage;
- struct rb_id_table *idkey_local_storage;
- VALUE r_stdin;
- VALUE r_stdout;
- VALUE r_stderr;
- VALUE verbose;
- VALUE debug;
- rb_ractor_newobj_cache_t newobj_cache;
- struct gc_mark_func_data_struct {
- void *data;
- void (*mark_func)(VALUE v, void *data);
- } *mfd;
-};
-static inline VALUE
-rb_ractor_self(const rb_ractor_t *r)
-{
- return r->pub.self;
-}
-rb_ractor_t *rb_ractor_main_alloc(void);
-void rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *main_ractor, rb_thread_t *main_thread);
-void rb_ractor_atexit(rb_execution_context_t *ec, VALUE result);
-void rb_ractor_atexit_exception(rb_execution_context_t *ec);
-void rb_ractor_teardown(rb_execution_context_t *ec);
-void rb_ractor_receive_parameters(rb_execution_context_t *ec, rb_ractor_t *g, int len, VALUE *ptr);
-void rb_ractor_send_parameters(rb_execution_context_t *ec, rb_ractor_t *g, VALUE args);
-VALUE rb_thread_create_ractor(rb_ractor_t *g, VALUE args, VALUE proc);
-int rb_ractor_living_thread_num(const rb_ractor_t *);
-VALUE rb_ractor_thread_list(rb_ractor_t *r);
-_Bool rb_ractor_p(VALUE rv);
-void rb_ractor_living_threads_init(rb_ractor_t *r);
-void rb_ractor_living_threads_insert(rb_ractor_t *r, rb_thread_t *th);
-void rb_ractor_living_threads_remove(rb_ractor_t *r, rb_thread_t *th);
-void rb_ractor_blocking_threads_inc(rb_ractor_t *r, const char *file, int line);
-void rb_ractor_blocking_threads_dec(rb_ractor_t *r, const char *file, int line);
-void rb_ractor_vm_barrier_interrupt_running_thread(rb_ractor_t *r);
-void rb_ractor_terminate_interrupt_main_thread(rb_ractor_t *r);
-void rb_ractor_terminate_all(void);
-_Bool rb_ractor_main_p_(void);
-void rb_ractor_finish_marking(void);
-void rb_ractor_atfork(rb_vm_t *vm, rb_thread_t *th);
-VALUE rb_ractor_ensure_shareable(VALUE obj, VALUE name);
-_Bool rb_ractor_shareable_p_continue(VALUE obj);
-void rb_ractor_local_storage_delkey(rb_ractor_local_key_t key);
-static inline _Bool
-rb_ractor_main_p(void)
-{
- if (ruby_single_main_ractor) {
- return 1;
- }
- else {
- return rb_ractor_main_p_();
- }
-}
-static inline _Bool
-rb_ractor_status_p(rb_ractor_t *r, enum ractor_status status)
-{
- return r->status_ == status;
-}
-static inline void
-rb_ractor_sleeper_threads_inc(rb_ractor_t *r)
-{
- r->threads.sleeper++;
-}
-static inline void
-rb_ractor_sleeper_threads_dec(rb_ractor_t *r)
-{
- r->threads.sleeper--;
-}
-static inline void
-rb_ractor_sleeper_threads_clear(rb_ractor_t *r)
-{
- r->threads.sleeper = 0;
-}
-static inline int
-rb_ractor_sleeper_thread_num(rb_ractor_t *r)
-{
- return r->threads.sleeper;
-}
-static inline void
-rb_ractor_thread_switch(rb_ractor_t *cr, rb_thread_t *th)
-{
- if (cr->threads.running_ec != th->ec) {
- if (0) {
- ruby_debug_printf("rb_ractor_thread_switch ec:%p->%p\n",
- (void *)cr->threads.running_ec, (void *)th->ec);
- }
- }
- else {
- return;
- }
- if (cr->threads.running_ec != th->ec) {
- th->running_time_us = 0;
- }
- cr->threads.running_ec = th->ec;
- ((void)0);
-}
-static inline void
-rb_ractor_set_current_ec_(rb_ractor_t *cr, rb_execution_context_t *ec, const char *file, int line)
-{
- rb_current_ec_set(ec);
- ;
- ((void)0);
- cr->threads.running_ec = ec;
-}
-void rb_vm_ractor_blocking_cnt_inc(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
-void rb_vm_ractor_blocking_cnt_dec(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
-static inline uint32_t
-rb_ractor_id(const rb_ractor_t *r)
-{
- return r->pub.id;
-}
-
-_Bool rb_vm_locked_p(void);
-void rb_vm_lock_body(void);
-void rb_vm_unlock_body(void);
-struct rb_ractor_struct;
-void rb_vm_lock_enter_body_cr(struct rb_ractor_struct *cr, unsigned int *lev );
-void rb_vm_lock_enter_body_nb(unsigned int *lev );
-void rb_vm_lock_enter_body(unsigned int *lev );
-void rb_vm_lock_leave_body(unsigned int *lev );
-void rb_vm_barrier(void);
-extern struct rb_ractor_struct *ruby_single_main_ractor;
-static inline _Bool
-rb_multi_ractor_p(void)
-{
- if ((__builtin_expect(!!(ruby_single_main_ractor), 1))) {
- ((void)0);
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline void
-rb_vm_lock(const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_body();
- }
-}
-static inline void
-rb_vm_unlock(const char *file, int line)
-{
- if (rb_multi_ractor_p()) {
- rb_vm_unlock_body();
- }
-}
-static inline void
-rb_vm_lock_enter(unsigned int *lev, const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_enter_body(lev );
- }
-}
-static inline void
-rb_vm_lock_enter_nb(unsigned int *lev, const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_enter_body_nb(lev );
- }
-}
-static inline void
-rb_vm_lock_leave(unsigned int *lev, const char *file, int line)
-{
- if (rb_multi_ractor_p()) {
- rb_vm_lock_leave_body(lev );
- }
-}
-static inline void
-rb_vm_lock_enter_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
-{
- ((void)0);
- rb_vm_lock_enter_body_cr(cr, levp );
-}
-static inline void
-rb_vm_lock_leave_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
-{
- rb_vm_lock_leave_body(levp );
-}
-
-
-struct rb_builtin_function {
- const void * const func_ptr;
- const int argc;
- const int index;
- const char * const name;
- void (*compiler)(VALUE, long, unsigned, _Bool);
-};
-void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
-typedef VALUE (*rb_builtin_arity0_function_type)(rb_execution_context_t *ec, VALUE self);
-typedef VALUE (*rb_builtin_arity1_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE);
-typedef VALUE (*rb_builtin_arity2_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity3_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity4_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity5_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity6_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity7_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity8_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity9_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity10_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity11_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity12_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity13_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity14_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity15_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-static inline void rb_builtin_function_check_arity0(rb_builtin_arity0_function_type f){}
-static inline void rb_builtin_function_check_arity1(rb_builtin_arity1_function_type f){}
-static inline void rb_builtin_function_check_arity2(rb_builtin_arity2_function_type f){}
-static inline void rb_builtin_function_check_arity3(rb_builtin_arity3_function_type f){}
-static inline void rb_builtin_function_check_arity4(rb_builtin_arity4_function_type f){}
-static inline void rb_builtin_function_check_arity5(rb_builtin_arity5_function_type f){}
-static inline void rb_builtin_function_check_arity6(rb_builtin_arity6_function_type f){}
-static inline void rb_builtin_function_check_arity7(rb_builtin_arity7_function_type f){}
-static inline void rb_builtin_function_check_arity8(rb_builtin_arity8_function_type f){}
-static inline void rb_builtin_function_check_arity9(rb_builtin_arity9_function_type f){}
-static inline void rb_builtin_function_check_arity10(rb_builtin_arity10_function_type f){}
-static inline void rb_builtin_function_check_arity11(rb_builtin_arity11_function_type f){}
-static inline void rb_builtin_function_check_arity12(rb_builtin_arity12_function_type f){}
-static inline void rb_builtin_function_check_arity13(rb_builtin_arity13_function_type f){}
-static inline void rb_builtin_function_check_arity14(rb_builtin_arity14_function_type f){}
-static inline void rb_builtin_function_check_arity15(rb_builtin_arity15_function_type f){}static inline
-__attribute__((__pure__)) VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);static inline
-VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
-__attribute__((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
-static inline VALUE
-rb_vm_lvar(rb_execution_context_t *ec, int index)
-{
- return ec->cfp->ep[index];
-}
-struct builtin_binary {
- const char *feature;
- const unsigned char *bin;
- size_t bin_size;
-};
-
-
-struct ruby_dtrace_method_hook_args {
- const char *classname;
- const char *methodname;
- const char *filename;
- int line_no;
- volatile VALUE klass;
- volatile VALUE name;
-};
-__declspec(noinline) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *);
-VALUE rb_str_concat_literals(size_t, const VALUE*);
-__attribute__ ((__visibility__("default"))) extern
-VALUE rb_vm_exec(rb_execution_context_t *, _Bool);
-extern const char *const rb_debug_counter_names[];
-__attribute__((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
-static inline const VALUE *
-VM_EP_LEP(const VALUE *ep)
-{
- while (!VM_ENV_LOCAL_P(ep)) {
- ep = VM_ENV_PREV_EP(ep);
- }
- return ep;
-}
-static inline const rb_control_frame_t *
-rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
-{
- if (!ep) {
- return ((void*)0);
- }
- else {
- const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
- while (cfp < eocfp) {
- if (cfp->ep == ep) {
- return cfp;
- }
- cfp = ((cfp)+1);
- }
- return ((void*)0);
- }
-}static inline
-const VALUE *
-rb_vm_ep_local_ep(const VALUE *ep)
-{
- return VM_EP_LEP(ep);
-}
-__attribute__((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
-static inline const VALUE *
-VM_CF_LEP(const rb_control_frame_t * const cfp)
-{
- return VM_EP_LEP(cfp->ep);
-}
-static inline const VALUE *
-VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
-{
- return VM_ENV_PREV_EP(cfp->ep);
-}
-__attribute__((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
-static inline VALUE
-VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
-{
- const VALUE *ep = VM_CF_LEP(cfp);
- return VM_ENV_BLOCK_HANDLER(ep);
-}static inline
-int
-rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
-{
- return VM_FRAME_CFRAME_KW_P(cfp);
-}static inline
-VALUE
-rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
-{
- return VM_CF_BLOCK_HANDLER(cfp);
-}
-static struct rb_captured_block *
-VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
-{
- ((void)0);
- return (struct rb_captured_block *)&cfp->self;
-}
-static rb_control_frame_t *
-VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
-{
- rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
- ((void)0);
- ((void)0);
- return cfp;
-}
-static int
-VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
-{
- const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
- return ((void *)((block_handler) & ~0x03)) == captured;
-}
-static VALUE
-vm_passed_block_handler(rb_execution_context_t *ec)
-{
- VALUE block_handler = ec->passed_block_handler;
- ec->passed_block_handler = 0;
- vm_block_handler_verify(block_handler);
- return block_handler;
-}
-static rb_cref_t *
-vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev, int singleton)
-{
- VALUE refinements = ((VALUE)RUBY_Qnil);
- int omod_shared = 0;
- rb_cref_t *cref;
- union {
- rb_scope_visibility_t visi;
- VALUE value;
- } scope_visi;
- scope_visi.visi.method_visi = visi;
- scope_visi.visi.module_func = module_func;
- if (prev_cref != ((void*)0) && prev_cref != (void *)1 ) {
- refinements = CREF_REFINEMENTS(prev_cref);
- if (!RB_NIL_P(refinements)) {
- omod_shared = 1;
- CREF_OMOD_SHARED_SET(prev_cref);
- }
- }
- ((void)0);
- cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
- if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
- if (omod_shared) CREF_OMOD_SHARED_SET(cref);
- if (singleton) CREF_SINGLETON_SET(cref);
- return cref;
-}
-static rb_cref_t *
-vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int singleton)
-{
- return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0, singleton);
-}
-static rb_cref_t *
-vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
-{
- return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1, 0);
-}
-static int
-ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
-{
- return RB_SYMBOL_P(key) ? ST_DELETE : ST_CONTINUE;
-}
-static rb_cref_t *
-vm_cref_dup(const rb_cref_t *cref)
-{
- const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
- rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
- int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
- int singleton = CREF_SINGLETON(cref);
- new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
- if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
- VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
- rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
- CREF_REFINEMENTS_SET(new_cref, ref);
- CREF_OMOD_SHARED_UNSET(new_cref);
- }
- return new_cref;
-}static inline
-rb_cref_t *
-rb_vm_cref_dup_without_refinements(const rb_cref_t *cref)
-{
- const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
- rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
- int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
- int singleton = CREF_SINGLETON(cref);
- new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
- if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
- CREF_REFINEMENTS_SET(new_cref, ((VALUE)RUBY_Qnil));
- CREF_OMOD_SHARED_UNSET(new_cref);
- }
- return new_cref;
-}
-static rb_cref_t *
-vm_cref_new_toplevel(rb_execution_context_t *ec)
-{
- rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void*)0), 0, 0);
- VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
- if (top_wrapper) {
- cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0, 0);
- }
- return cref;
-}static inline
-rb_cref_t *
-rb_vm_cref_new_toplevel(void)
-{
- return vm_cref_new_toplevel(rb_current_execution_context(1));
-}
-static void
-vm_cref_dump(const char *mesg, const rb_cref_t *cref)
-{
- ruby_debug_printf("vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
- while (cref) {
- ruby_debug_printf("= cref| klass: %s\n", RSTRING_PTR(rb_class_path(CREF_CLASS(cref))));
- cref = CREF_NEXT(cref);
- }
-}static inline
-void
-rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
-{
- *((const VALUE **)&dst->as.captured.ep) = ep;
- (rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "./vm.c", 360));
-}
-static void
-vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
-{
- const rb_env_t *env = (rb_env_t *)envval;
- rb_obj_write((VALUE)(bindval), __extension__({
- ;
- ; __typeof__((VALUE *)(&bind->block.as.captured.code.iseq)) unaligned_member_access_result = ((VALUE *)(&bind->block.as.captured.code.iseq));
- ; unaligned_member_access_result; }), (VALUE)(env->iseq), "./vm.c", 367);
- rb_vm_block_ep_update(bindval, &bind->block, env->ep);
-}
-static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
-extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self,
- int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
- const rb_callable_method_entry_t *me);
-static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
-__declspec(noinline) static __attribute__((__cold__)) VALUE mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
-static VALUE
-mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
-{
- uintptr_t mjit_state = (uintptr_t)(body->jit_func);
- __builtin_assume(((uintptr_t)(mjit_state) <= (uintptr_t)MJIT_FUNC_FAILED));
- switch ((enum rb_mjit_func_state)mjit_state) {
- case MJIT_FUNC_NOT_COMPILED:
- if (body->total_calls == mjit_opts.call_threshold) {
- rb_mjit_add_iseq_to_process(iseq);
- if ((__builtin_expect(!!(mjit_opts.wait && !((uintptr_t)(body->jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)), 0))) {
- return body->jit_func(ec, ec->cfp);
- }
- }
- break;
- case MJIT_FUNC_COMPILING:
- case MJIT_FUNC_FAILED:
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static inline VALUE
-jit_exec(rb_execution_context_t *ec)
-{
- const rb_iseq_t *iseq = ec->cfp->iseq;
- struct rb_iseq_constant_body *body = ((iseq)->body);
- _Bool yjit_enabled = rb_yjit_enabled_p();
- if (yjit_enabled || mjit_call_p) {
- body->total_calls++;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- jit_func_t func;
- if (yjit_enabled) {
- if (body->total_calls == rb_yjit_call_threshold()) {
- if (!rb_yjit_compile_iseq(iseq, ec)) {
- return ((VALUE)RUBY_Qundef);
- }
- }
- if ((func = body->jit_func) == 0) {
- return ((VALUE)RUBY_Qundef);
- }
- }
- else if ((__builtin_expect(!!(((uintptr_t)(func = body->jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)), 0))) {
- return mjit_check_iseq(ec, iseq, body);
- }
- return func(ec, ec->cfp);
-}
-
-VALUE rb_invcmp(VALUE, VALUE);
-
-struct ar_table_struct;
-typedef unsigned char ar_hint_t;
-enum ruby_rhash_flags {
- RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
- RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
- RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
- RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
- RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4),
- RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
- RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8),
- RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
- RHASH_LEV_SHIFT = (((VALUE)RUBY_FL_USHIFT) + 13),
- RHASH_LEV_MAX = 127,
-};
-struct RHash {
- struct RBasic basic;
- union {
- st_table *st;
- struct ar_table_struct *ar;
- } as;
- const VALUE ifnone;
- union {
- ar_hint_t ary[8];
- VALUE word;
- } ar_hint;
-};
-void rb_hash_st_table_set(VALUE hash, st_table *st);
-VALUE rb_hash_default_value(VALUE hash, VALUE key);
-VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
-long rb_dbl_long_hash(double d);
-st_table *rb_init_identtable(void);
-VALUE rb_to_hash_type(VALUE obj);
-VALUE rb_hash_key_str(VALUE);
-VALUE rb_hash_values(VALUE hash);
-VALUE rb_hash_rehash(VALUE hash);
-int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
-VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
-int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
-int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
-int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
-extern st_table *rb_hash_st_table(VALUE hash);
-VALUE rb_ident_hash_new_with_size(st_index_t size);
-static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
-static inline VALUE RHASH_IFNONE(VALUE h);
-static inline size_t RHASH_SIZE(VALUE h);
-static inline _Bool RHASH_EMPTY_P(VALUE h);
-static inline _Bool RHASH_AR_TABLE_P(VALUE h);
-static inline _Bool RHASH_ST_TABLE_P(VALUE h);
-static inline struct ar_table_struct *RHASH_AR_TABLE(VALUE h);
-static inline st_table *RHASH_ST_TABLE(VALUE h);
-static inline size_t RHASH_ST_SIZE(VALUE h);
-static inline void RHASH_ST_CLEAR(VALUE h);
-static inline _Bool RHASH_TRANSIENT_P(VALUE h);
-static inline void RHASH_SET_TRANSIENT_FLAG(VALUE h);
-static inline void RHASH_UNSET_TRANSIENT_FLAG(VALUE h);
-VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
-VALUE rb_ident_hash_new(void);
-int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg);
-VALUE rb_hash_new_with_size(st_index_t size);
-VALUE rb_hash_resurrect(VALUE hash);
-int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
-VALUE rb_hash_keys(VALUE hash);
-VALUE rb_hash_has_key(VALUE hash, VALUE key);
-VALUE rb_hash_compare_by_id_p(VALUE hash);
-st_table *rb_hash_tbl_raw(VALUE hash, const char *file, int line);
-VALUE rb_hash_compare_by_id(VALUE hash);
-static inline _Bool
-RHASH_AR_TABLE_P(VALUE h)
-{
- return ! RB_FL_TEST_RAW(h, RHASH_ST_TABLE_FLAG);
-}
-static inline struct ar_table_struct *
-RHASH_AR_TABLE(VALUE h)
-{
- return ((struct RHash *)(h))->as.ar;
-}
-static inline st_table *
-RHASH_ST_TABLE(VALUE h)
-{
- return ((struct RHash *)(h))->as.st;
-}
-static inline VALUE
-RHASH_IFNONE(VALUE h)
-{
- return ((struct RHash *)(h))->ifnone;
-}
-static inline size_t
-RHASH_SIZE(VALUE h)
-{
- if (RHASH_AR_TABLE_P(h)) {
- return RHASH_AR_TABLE_SIZE_RAW(h);
- }
- else {
- return RHASH_ST_SIZE(h);
- }
-}
-static inline _Bool
-RHASH_EMPTY_P(VALUE h)
-{
- return RHASH_SIZE(h) == 0;
-}
-static inline _Bool
-RHASH_ST_TABLE_P(VALUE h)
-{
- return ! RHASH_AR_TABLE_P(h);
-}
-static inline size_t
-RHASH_ST_SIZE(VALUE h)
-{
- return RHASH_ST_TABLE(h)->num_entries;
-}
-static inline void
-RHASH_ST_CLEAR(VALUE h)
-{
- RB_FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG);
- ((struct RHash *)(h))->as.ar = ((void*)0);
-}
-static inline unsigned
-RHASH_AR_TABLE_SIZE_RAW(VALUE h)
-{
- VALUE ret = RB_FL_TEST_RAW(h, RHASH_AR_TABLE_SIZE_MASK);
- ret >>= RHASH_AR_TABLE_SIZE_SHIFT;
- return (unsigned)ret;
-}
-static inline _Bool
-RHASH_TRANSIENT_P(VALUE h)
-{
- return RB_FL_TEST_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-static inline void
-RHASH_SET_TRANSIENT_FLAG(VALUE h)
-{
- RB_FL_SET_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-static inline void
-RHASH_UNSET_TRANSIENT_FLAG(VALUE h)
-{
- RB_FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-
-
-enum rb_int_parse_flags {
- RB_INT_PARSE_SIGN = 0x01,
- RB_INT_PARSE_UNDERSCORE = 0x02,
- RB_INT_PARSE_PREFIX = 0x04,
- RB_INT_PARSE_ALL = 0x07,
- RB_INT_PARSE_DEFAULT = 0x07,
-};
-struct RBignum {
- struct RBasic basic;
- union {
- struct {
- size_t len;
- unsigned int *digits;
- } heap;
- unsigned int ary[(8*3/4)];
- } as;
-};
-extern const char ruby_digitmap[];
-double rb_big_fdiv_double(VALUE x, VALUE y);
-VALUE rb_big_uminus(VALUE x);
-VALUE rb_big_hash(VALUE);
-VALUE rb_big_odd_p(VALUE);
-VALUE rb_big_even_p(VALUE);
-size_t rb_big_size(VALUE);
-VALUE rb_integer_float_cmp(VALUE x, VALUE y);
-VALUE rb_integer_float_eq(VALUE x, VALUE y);
-VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
-VALUE rb_big_comp(VALUE x);
-VALUE rb_big_aref(VALUE x, VALUE y);
-VALUE rb_big_abs(VALUE x);
-VALUE rb_big_size_m(VALUE big);
-VALUE rb_big_bit_length(VALUE big);
-VALUE rb_big_remainder(VALUE x, VALUE y);
-VALUE rb_big_gt(VALUE x, VALUE y);
-VALUE rb_big_ge(VALUE x, VALUE y);
-VALUE rb_big_lt(VALUE x, VALUE y);
-VALUE rb_big_le(VALUE x, VALUE y);
-VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
-VALUE rb_big_isqrt(VALUE n);
-static inline _Bool BIGNUM_SIGN(VALUE b);
-static inline _Bool BIGNUM_POSITIVE_P(VALUE b);
-static inline _Bool BIGNUM_NEGATIVE_P(VALUE b);
-static inline void BIGNUM_SET_SIGN(VALUE b, _Bool sign);
-static inline void BIGNUM_NEGATE(VALUE b);
-static inline size_t BIGNUM_LEN(VALUE b);
-static inline unsigned int *BIGNUM_DIGITS(VALUE b);
-static inline int BIGNUM_LENINT(VALUE b);
-static inline _Bool BIGNUM_EMBED_P(VALUE b);
-VALUE rb_big_mul_normal(VALUE x, VALUE y);
-VALUE rb_big_mul_balance(VALUE x, VALUE y);
-VALUE rb_big_mul_karatsuba(VALUE x, VALUE y);
-VALUE rb_big_mul_toom3(VALUE x, VALUE y);
-VALUE rb_big_sq_fast(VALUE x);
-VALUE rb_big_divrem_normal(VALUE x, VALUE y);
-VALUE rb_big2str_poweroftwo(VALUE x, int base);
-VALUE rb_big2str_generic(VALUE x, int base);
-VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
-VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
-VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
-VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
-VALUE rb_int128t2big(__int128 n);
-static inline _Bool
-BIGNUM_SIGN(VALUE b)
-{
- return RB_FL_TEST_RAW(b, ((VALUE)RUBY_FL_USER1));
-}
-static inline _Bool
-BIGNUM_POSITIVE_P(VALUE b)
-{
- return BIGNUM_SIGN(b);
-}
-static inline _Bool
-BIGNUM_NEGATIVE_P(VALUE b)
-{
- return ! BIGNUM_POSITIVE_P(b);
-}
-static inline void
-BIGNUM_SET_SIGN(VALUE b, _Bool sign)
-{
- if (sign) {
- RB_FL_SET_RAW(b, ((VALUE)RUBY_FL_USER1));
- }
- else {
- RB_FL_UNSET_RAW(b, ((VALUE)RUBY_FL_USER1));
- }
-}
-static inline void
-BIGNUM_NEGATE(VALUE b)
-{
- RB_FL_REVERSE_RAW(b, ((VALUE)RUBY_FL_USER1));
-}
-static inline size_t
-BIGNUM_LEN(VALUE b)
-{
- if (! BIGNUM_EMBED_P(b)) {
- return ((struct RBignum *)(b))->as.heap.len;
- }
- else {
- size_t ret = ((struct RBasic *)(b))->flags;
- ret &= (~(~(VALUE)0U << 3) << (((VALUE)RUBY_FL_USHIFT)+3));
- ret >>= (((VALUE)RUBY_FL_USHIFT)+3);
- return ret;
- }
-}
-static inline int
-BIGNUM_LENINT(VALUE b)
-{
- return rb_long2int_inline(BIGNUM_LEN(b));
-}
-static inline unsigned int *
-BIGNUM_DIGITS(VALUE b)
-{
- if (BIGNUM_EMBED_P(b)) {
- return ((struct RBignum *)(b))->as.ary;
- }
- else {
- return ((struct RBignum *)(b))->as.heap.digits;
- }
-}
-static inline _Bool
-BIGNUM_EMBED_P(VALUE b)
-{
- return RB_FL_TEST_RAW(b, ((VALUE)((VALUE)RUBY_FL_USER2)));
-}
-
-static inline uint16_t ruby_swap16(uint16_t);
-static inline uint32_t ruby_swap32(uint32_t);
-static inline uint64_t ruby_swap64(uint64_t);
-static inline unsigned nlz_int(unsigned x);
-static inline unsigned nlz_long(unsigned long x);
-static inline unsigned nlz_long_long(unsigned long long x);
-static inline unsigned nlz_intptr(uintptr_t x);
-static inline unsigned nlz_int32(uint32_t x);
-static inline unsigned nlz_int64(uint64_t x);
-static inline unsigned nlz_int128(unsigned __int128 x);
-static inline unsigned rb_popcount32(uint32_t x);
-static inline unsigned rb_popcount64(uint64_t x);
-static inline unsigned rb_popcount_intptr(uintptr_t x);
-static inline int ntz_int32(uint32_t x);
-static inline int ntz_int64(uint64_t x);
-static inline int ntz_intptr(uintptr_t x);
-static inline VALUE RUBY_BIT_ROTL(VALUE, int);
-static inline VALUE RUBY_BIT_ROTR(VALUE, int);
-static inline uint16_t
-ruby_swap16(uint16_t x)
-{
- return __builtin_bswap16(x);
-}
-static inline uint32_t
-ruby_swap32(uint32_t x)
-{
- return __builtin_bswap32(x);
-}
-static inline uint64_t
-ruby_swap64(uint64_t x)
-{
- return __builtin_bswap64(x);
-}
-static inline unsigned int
-nlz_int32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
- return x ? (unsigned int)__builtin_clz(x) : 32;
-}
-static inline unsigned int
-nlz_int64(uint64_t x)
-{
- if (x == 0) {
- return 64;
- }
- else if (sizeof(long) * 8 == 64) {
- return (unsigned int)__builtin_clzl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned int)__builtin_clzll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_int128(unsigned __int128 x)
-{
- uint64_t y = (uint64_t)(x >> 64);
- if (x == 0) {
- return 128;
- }
- else if (y == 0) {
- return (unsigned int)nlz_int64(x) + 64;
- }
- else {
- return (unsigned int)nlz_int64(y);
- }
-}
-static inline unsigned int
-nlz_int(unsigned int x)
-{
- if (sizeof(unsigned int) * 8 == 32) {
- return nlz_int32((uint32_t)x);
- }
- else if (sizeof(unsigned int) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_long(unsigned long x)
-{
- if (sizeof(unsigned long) * 8 == 32) {
- return nlz_int32((uint32_t)x);
- }
- else if (sizeof(unsigned long) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_long_long(unsigned long long x)
-{
- if (sizeof(unsigned long long) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else if (sizeof(unsigned long long) * 8 == 128) {
- return nlz_int128((unsigned __int128)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) == sizeof(unsigned int)) {
- return nlz_int((unsigned int)x);
- }
- if (sizeof(uintptr_t) == sizeof(unsigned long)) {
- return nlz_long((unsigned long)x);
- }
- if (sizeof(uintptr_t) == sizeof(unsigned long long)) {
- return nlz_long_long((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-rb_popcount32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 >= 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT >= 32");
- return (unsigned int)__builtin_popcount(x);
-}
-static inline unsigned int
-rb_popcount64(uint64_t x)
-{
- if (sizeof(long) * 8 == 64) {
- return (unsigned int)__builtin_popcountl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned int)__builtin_popcountll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-rb_popcount_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) * 8 == 64) {
- return rb_popcount64((uint64_t)x);
- }
- else if (sizeof(uintptr_t) * 8 == 32) {
- return rb_popcount32((uint32_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline int
-ntz_int32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
- return x ? (unsigned)__builtin_ctz(x) : 32;
-}
-static inline int
-ntz_int64(uint64_t x)
-{
- if (x == 0) {
- return 64;
- }
- else if (sizeof(long) * 8 == 64) {
- return (unsigned)__builtin_ctzl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned)__builtin_ctzll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline int
-ntz_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) * 8 == 64) {
- return ntz_int64((uint64_t)x);
- }
- else if (sizeof(uintptr_t) * 8 == 32) {
- return ntz_int32((uint32_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline VALUE
-RUBY_BIT_ROTL(VALUE v, int n)
-{
- return __builtin_rotateleft64(v, n);
-}
-static inline VALUE
-RUBY_BIT_ROTR(VALUE v, int n)
-{
- return __builtin_rotateright64(v, n);
-}
-
-VALUE rb_int128t2big(__int128 n);
-static inline long rb_overflowed_fix_to_int(long x);
-static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y);
-static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp);
-static inline VALUE rb_fix_div_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y);
-static inline _Bool FIXNUM_POSITIVE_P(VALUE num);
-static inline _Bool FIXNUM_NEGATIVE_P(VALUE num);
-static inline _Bool FIXNUM_ZERO_P(VALUE num);
-static inline long
-rb_overflowed_fix_to_int(long x)
-{
- return (long)((unsigned long)(x >> 1) ^ (1LU << (8 * 8 - 1)));
-}
-static inline VALUE
-rb_fix_plus_fix(VALUE x, VALUE y)
-{
- long lz;
- if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
- return rb_int2big(rb_overflowed_fix_to_int(lz));
- }
- else {
- return (VALUE)lz;
- }
-}
-static inline VALUE
-rb_fix_minus_fix(VALUE x, VALUE y)
-{
- long lz;
- if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
- return rb_int2big(rb_overflowed_fix_to_int(lz));
- }
- else {
- return (VALUE)lz;
- }
-}
-static inline VALUE
-rb_fix_mul_fix(VALUE x, VALUE y)
-{
- long lx = rb_fix2long(x);
- long ly = rb_fix2long(y);
- return (((((__int128)lx * (__int128)ly) < (9223372036854775807L / 2) + 1) && (((__int128)lx * (__int128)ly) >= ((-9223372036854775807L -1L) / 2))) ? RB_INT2FIX((__int128)lx * (__int128)ly) : rb_int128t2big((__int128)lx * (__int128)ly));
-}
-static inline void
-rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
-{
- long x = rb_fix2long(a);
- long y = rb_fix2long(b);
- long div, mod;
- if (x == ((-9223372036854775807L -1L) / 2) && y == -1) {
- if (divp) *divp = rb_long2num_inline(-((-9223372036854775807L -1L) / 2));
- if (modp) *modp = RB_INT2FIX(0);
- return;
- }
- div = x / y;
- mod = x % y;
- if (y > 0 ? mod < 0 : mod > 0) {
- mod += y;
- div -= 1;
- }
- if (divp) *divp = RB_INT2FIX(div);
- if (modp) *modp = RB_INT2FIX(mod);
-}
-static inline VALUE
-rb_fix_div_fix(VALUE x, VALUE y)
-{
- VALUE div;
- rb_fix_divmod_fix(x, y, &div, ((void*)0));
- return div;
-}
-static inline VALUE
-rb_fix_mod_fix(VALUE x, VALUE y)
-{
- VALUE mod;
- rb_fix_divmod_fix(x, y, ((void*)0), &mod);
- return mod;
-}
-static inline _Bool
-FIXNUM_POSITIVE_P(VALUE num)
-{
- return (long)num > (long)__builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
-}
-static inline _Bool
-FIXNUM_NEGATIVE_P(VALUE num)
-{
- return (long)num < 0;
-}
-static inline _Bool
-FIXNUM_ZERO_P(VALUE num)
-{
- return num == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
-}
-enum ruby_num_rounding_mode {
- RUBY_NUM_ROUND_HALF_UP,
- RUBY_NUM_ROUND_HALF_EVEN,
- RUBY_NUM_ROUND_HALF_DOWN,
- RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP,
-};
-typedef double rb_float_value_type;
-struct RFloat {
- struct RBasic basic;
- rb_float_value_type float_value;
-};
-int rb_num_to_uint(VALUE val, unsigned int *ret);
-VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
-double ruby_float_step_size(double beg, double end, double unit, int excl);
-int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
-int rb_num_negative_p(VALUE);
-VALUE rb_int_succ(VALUE num);
-VALUE rb_float_uminus(VALUE num);
-VALUE rb_int_plus(VALUE x, VALUE y);
-VALUE rb_float_plus(VALUE x, VALUE y);
-VALUE rb_int_minus(VALUE x, VALUE y);
-VALUE rb_float_minus(VALUE x, VALUE y);
-VALUE rb_int_mul(VALUE x, VALUE y);
-VALUE rb_float_mul(VALUE x, VALUE y);
-VALUE rb_float_div(VALUE x, VALUE y);
-VALUE rb_int_idiv(VALUE x, VALUE y);
-VALUE rb_int_modulo(VALUE x, VALUE y);
-VALUE rb_int2str(VALUE num, int base);
-VALUE rb_fix_plus(VALUE x, VALUE y);
-VALUE rb_int_gt(VALUE x, VALUE y);
-VALUE rb_float_gt(VALUE x, VALUE y);
-VALUE rb_int_ge(VALUE x, VALUE y);
-enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
-double rb_int_fdiv_double(VALUE x, VALUE y);
-VALUE rb_int_pow(VALUE x, VALUE y);
-VALUE rb_float_pow(VALUE x, VALUE y);
-VALUE rb_int_cmp(VALUE x, VALUE y);
-VALUE rb_int_equal(VALUE x, VALUE y);
-VALUE rb_int_divmod(VALUE x, VALUE y);
-VALUE rb_int_and(VALUE x, VALUE y);
-VALUE rb_int_lshift(VALUE x, VALUE y);
-VALUE rb_int_div(VALUE x, VALUE y);
-int rb_int_positive_p(VALUE num);
-int rb_int_negative_p(VALUE num);
-VALUE rb_check_integer_type(VALUE);
-VALUE rb_num_pow(VALUE x, VALUE y);
-VALUE rb_float_ceil(VALUE num, int ndigits);
-VALUE rb_float_floor(VALUE x, int ndigits);
-VALUE rb_float_abs(VALUE flt);
-static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
-static inline int rb_num_positive_int_p(VALUE num);
-static inline int rb_num_negative_int_p(VALUE num);
-static inline double rb_float_flonum_value(VALUE v);
-static inline double rb_float_noflonum_value(VALUE v);
-static inline double rb_float_value_inline(VALUE v);
-static inline VALUE rb_float_new_inline(double d);
-static inline _Bool INT_POSITIVE_P(VALUE num);
-static inline _Bool INT_NEGATIVE_P(VALUE num);
-static inline _Bool FLOAT_ZERO_P(VALUE num);
-VALUE rb_flo_div_flo(VALUE x, VALUE y);
-double ruby_float_mod(double x, double y);
-VALUE rb_float_equal(VALUE x, VALUE y);
-int rb_float_cmp(VALUE x, VALUE y);
-VALUE rb_float_eql(VALUE x, VALUE y);
-VALUE rb_fix_aref(VALUE fix, VALUE idx);
-VALUE rb_int_zero_p(VALUE num);
-VALUE rb_int_even_p(VALUE num);
-VALUE rb_int_odd_p(VALUE num);
-VALUE rb_int_abs(VALUE num);
-VALUE rb_int_bit_length(VALUE num);
-VALUE rb_int_uminus(VALUE num);
-VALUE rb_int_comp(VALUE num);
-static inline _Bool
-INT_POSITIVE_P(VALUE num)
-{
- if (RB_FIXNUM_P(num)) {
- return FIXNUM_POSITIVE_P(num);
- }
- else {
- return BIGNUM_POSITIVE_P(num);
- }
-}
-static inline _Bool
-INT_NEGATIVE_P(VALUE num)
-{
- if (RB_FIXNUM_P(num)) {
- return FIXNUM_NEGATIVE_P(num);
- }
- else {
- return BIGNUM_NEGATIVE_P(num);
- }
-}
-static inline _Bool
-FLOAT_ZERO_P(VALUE num)
-{
- return rb_float_value_inline(num) == 0.0;
-}
-static inline VALUE
-rb_num_compare_with_zero(VALUE num, ID mid)
-{
- VALUE zero = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- VALUE r = rb_check_funcall(num, mid, 1, &zero);
- if (r == ((VALUE)RUBY_Qundef)) {
- rb_cmperr(num, zero);
- }
- return r;
-}
-static inline int
-rb_num_positive_int_p(VALUE num)
-{
- const ID mid = '>';
- if (RB_FIXNUM_P(num)) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return FIXNUM_POSITIVE_P(num);
- }
- else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return BIGNUM_POSITIVE_P(num);
- }
- return RB_TEST(rb_num_compare_with_zero(num, mid));
-}
-static inline int
-rb_num_negative_int_p(VALUE num)
-{
- const ID mid = '<';
- if (RB_FIXNUM_P(num)) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return FIXNUM_NEGATIVE_P(num);
- }
- else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return BIGNUM_NEGATIVE_P(num);
- }
- return RB_TEST(rb_num_compare_with_zero(num, mid));
-}
-static inline double
-rb_float_flonum_value(VALUE v)
-{
- if (v != (VALUE)0x8000000000000002) {
- union {
- double d;
- VALUE v;
- } t;
- VALUE b63 = (v >> 63);
- t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~(VALUE)0x03), 3);
- return t.d;
- }
- return 0.0;
-}
-static inline double
-rb_float_noflonum_value(VALUE v)
-{
- return ((struct RFloat *)(v))->float_value;
-}
-static inline double
-rb_float_value_inline(VALUE v)
-{
- if (RB_FLONUM_P(v)) {
- return rb_float_flonum_value(v);
- }
- return rb_float_noflonum_value(v);
-}
-static inline VALUE
-rb_float_new_inline(double d)
-{
- union {
- double d;
- VALUE v;
- } t;
- int bits;
- t.d = d;
- bits = (int)((VALUE)(t.v >> 60) & 0x7);
- if (t.v != 0x3000000000000000 &&
- !((bits-3) & ~0x01)) {
- return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02;
- }
- else if (t.v == (VALUE)0) {
- return 0x8000000000000002;
- }
- return rb_float_new_in_heap(d);
-}
-
-
-int ruby_fill_random_bytes(void *, size_t, int);
-
-
-enum {
- RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
- RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
- RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
- RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
-};
-struct RStruct {
- struct RBasic basic;
- union {
- struct {
- long len;
- const VALUE *ptr;
- } heap;
- const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
- } as;
-};
-VALUE rb_struct_init_copy(VALUE copy, VALUE s);
-VALUE rb_struct_lookup(VALUE s, VALUE idx);
-VALUE rb_struct_s_keyword_init(VALUE klass);
-static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
-static inline _Bool RSTRUCT_TRANSIENT_P(VALUE st);
-static inline void RSTRUCT_TRANSIENT_SET(VALUE st);
-static inline void RSTRUCT_TRANSIENT_UNSET(VALUE st);
-static inline long RSTRUCT_EMBED_LEN(VALUE st);
-static inline long internal_RSTRUCT_LEN(VALUE st);
-static inline int RSTRUCT_LENINT(VALUE st);
-static inline const VALUE *RSTRUCT_CONST_PTR(VALUE st);
-static inline void internal_RSTRUCT_SET(VALUE st, long k, VALUE v);
-static inline VALUE internal_RSTRUCT_GET(VALUE st, long k);
-static inline _Bool
-RSTRUCT_TRANSIENT_P(VALUE st)
-{
- return RB_FL_TEST_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline void
-RSTRUCT_TRANSIENT_SET(VALUE st)
-{
- RB_FL_SET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline void
-RSTRUCT_TRANSIENT_UNSET(VALUE st)
-{
- RB_FL_UNSET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline long
-RSTRUCT_EMBED_LEN(VALUE st)
-{
- long ret = RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK);
- ret >>= RSTRUCT_EMBED_LEN_SHIFT;
- return ret;
-}
-static inline long
-internal_RSTRUCT_LEN(VALUE st)
-{
- if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
- return RSTRUCT_EMBED_LEN(st);
- }
- else {
- return ((struct RStruct *)(st))->as.heap.len;
- }
-}
-static inline int
-RSTRUCT_LENINT(VALUE st)
-{
- return rb_long2int_inline(internal_RSTRUCT_LEN(st));
-}
-static inline const VALUE *
-RSTRUCT_CONST_PTR(VALUE st)
-{
- const struct RStruct *p = ((struct RStruct *)(st));
- if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
- return p->as.ary;
- }
- else {
- return p->as.heap.ptr;
- }
-}
-static inline void
-internal_RSTRUCT_SET(VALUE st, long k, VALUE v)
-{
- rb_obj_write((VALUE)(st), __extension__({
- ;
- ; __typeof__((VALUE *)(&RSTRUCT_CONST_PTR(st)[k])) unaligned_member_access_result = ((VALUE *)(&RSTRUCT_CONST_PTR(st)[k]));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/struct.h", 137);
-}
-static inline VALUE
-internal_RSTRUCT_GET(VALUE st, long k)
-{
- return RSTRUCT_CONST_PTR(st)[k];
-}
-static inline const VALUE *
-rb_struct_const_heap_ptr(VALUE st)
-{
- return ((struct RStruct *)(st))->as.heap.ptr;
-}
-
-struct gen_ivtbl {
- uint32_t numiv;
- VALUE ivptr[];
-};
-int rb_ivar_generic_ivtbl_lookup(VALUE obj, struct gen_ivtbl **);
-enum ruby_vminsn_type {
- YARVINSN_nop,
- YARVINSN_getlocal,
- YARVINSN_setlocal,
- YARVINSN_getblockparam,
- YARVINSN_setblockparam,
- YARVINSN_getblockparamproxy,
- YARVINSN_getspecial,
- YARVINSN_setspecial,
- YARVINSN_getinstancevariable,
- YARVINSN_setinstancevariable,
- YARVINSN_getclassvariable,
- YARVINSN_setclassvariable,
- YARVINSN_opt_getconstant_path,
- YARVINSN_getconstant,
- YARVINSN_setconstant,
- YARVINSN_getglobal,
- YARVINSN_setglobal,
- YARVINSN_putnil,
- YARVINSN_putself,
- YARVINSN_putobject,
- YARVINSN_putspecialobject,
- YARVINSN_putstring,
- YARVINSN_concatstrings,
- YARVINSN_anytostring,
- YARVINSN_toregexp,
- YARVINSN_intern,
- YARVINSN_newarray,
- YARVINSN_newarraykwsplat,
- YARVINSN_duparray,
- YARVINSN_duphash,
- YARVINSN_expandarray,
- YARVINSN_concatarray,
- YARVINSN_splatarray,
- YARVINSN_newhash,
- YARVINSN_newrange,
- YARVINSN_pop,
- YARVINSN_dup,
- YARVINSN_dupn,
- YARVINSN_swap,
- YARVINSN_opt_reverse,
- YARVINSN_topn,
- YARVINSN_setn,
- YARVINSN_adjuststack,
- YARVINSN_defined,
- YARVINSN_checkmatch,
- YARVINSN_checkkeyword,
- YARVINSN_checktype,
- YARVINSN_defineclass,
- YARVINSN_definemethod,
- YARVINSN_definesmethod,
- YARVINSN_send,
- YARVINSN_opt_send_without_block,
- YARVINSN_objtostring,
- YARVINSN_opt_str_freeze,
- YARVINSN_opt_nil_p,
- YARVINSN_opt_str_uminus,
- YARVINSN_opt_newarray_max,
- YARVINSN_opt_newarray_min,
- YARVINSN_invokesuper,
- YARVINSN_invokeblock,
- YARVINSN_leave,
- YARVINSN_throw,
- YARVINSN_jump,
- YARVINSN_branchif,
- YARVINSN_branchunless,
- YARVINSN_branchnil,
- YARVINSN_once,
- YARVINSN_opt_case_dispatch,
- YARVINSN_opt_plus,
- YARVINSN_opt_minus,
- YARVINSN_opt_mult,
- YARVINSN_opt_div,
- YARVINSN_opt_mod,
- YARVINSN_opt_eq,
- YARVINSN_opt_neq,
- YARVINSN_opt_lt,
- YARVINSN_opt_le,
- YARVINSN_opt_gt,
- YARVINSN_opt_ge,
- YARVINSN_opt_ltlt,
- YARVINSN_opt_and,
- YARVINSN_opt_or,
- YARVINSN_opt_aref,
- YARVINSN_opt_aset,
- YARVINSN_opt_aset_with,
- YARVINSN_opt_aref_with,
- YARVINSN_opt_length,
- YARVINSN_opt_size,
- YARVINSN_opt_empty_p,
- YARVINSN_opt_succ,
- YARVINSN_opt_not,
- YARVINSN_opt_regexpmatch2,
- YARVINSN_invokebuiltin,
- YARVINSN_opt_invokebuiltin_delegate,
- YARVINSN_opt_invokebuiltin_delegate_leave,
- YARVINSN_getlocal_WC_0,
- YARVINSN_getlocal_WC_1,
- YARVINSN_setlocal_WC_0,
- YARVINSN_setlocal_WC_1,
- YARVINSN_putobject_INT2FIX_0_,
- YARVINSN_putobject_INT2FIX_1_,
- YARVINSN_trace_nop,
- YARVINSN_trace_getlocal,
- YARVINSN_trace_setlocal,
- YARVINSN_trace_getblockparam,
- YARVINSN_trace_setblockparam,
- YARVINSN_trace_getblockparamproxy,
- YARVINSN_trace_getspecial,
- YARVINSN_trace_setspecial,
- YARVINSN_trace_getinstancevariable,
- YARVINSN_trace_setinstancevariable,
- YARVINSN_trace_getclassvariable,
- YARVINSN_trace_setclassvariable,
- YARVINSN_trace_opt_getconstant_path,
- YARVINSN_trace_getconstant,
- YARVINSN_trace_setconstant,
- YARVINSN_trace_getglobal,
- YARVINSN_trace_setglobal,
- YARVINSN_trace_putnil,
- YARVINSN_trace_putself,
- YARVINSN_trace_putobject,
- YARVINSN_trace_putspecialobject,
- YARVINSN_trace_putstring,
- YARVINSN_trace_concatstrings,
- YARVINSN_trace_anytostring,
- YARVINSN_trace_toregexp,
- YARVINSN_trace_intern,
- YARVINSN_trace_newarray,
- YARVINSN_trace_newarraykwsplat,
- YARVINSN_trace_duparray,
- YARVINSN_trace_duphash,
- YARVINSN_trace_expandarray,
- YARVINSN_trace_concatarray,
- YARVINSN_trace_splatarray,
- YARVINSN_trace_newhash,
- YARVINSN_trace_newrange,
- YARVINSN_trace_pop,
- YARVINSN_trace_dup,
- YARVINSN_trace_dupn,
- YARVINSN_trace_swap,
- YARVINSN_trace_opt_reverse,
- YARVINSN_trace_topn,
- YARVINSN_trace_setn,
- YARVINSN_trace_adjuststack,
- YARVINSN_trace_defined,
- YARVINSN_trace_checkmatch,
- YARVINSN_trace_checkkeyword,
- YARVINSN_trace_checktype,
- YARVINSN_trace_defineclass,
- YARVINSN_trace_definemethod,
- YARVINSN_trace_definesmethod,
- YARVINSN_trace_send,
- YARVINSN_trace_opt_send_without_block,
- YARVINSN_trace_objtostring,
- YARVINSN_trace_opt_str_freeze,
- YARVINSN_trace_opt_nil_p,
- YARVINSN_trace_opt_str_uminus,
- YARVINSN_trace_opt_newarray_max,
- YARVINSN_trace_opt_newarray_min,
- YARVINSN_trace_invokesuper,
- YARVINSN_trace_invokeblock,
- YARVINSN_trace_leave,
- YARVINSN_trace_throw,
- YARVINSN_trace_jump,
- YARVINSN_trace_branchif,
- YARVINSN_trace_branchunless,
- YARVINSN_trace_branchnil,
- YARVINSN_trace_once,
- YARVINSN_trace_opt_case_dispatch,
- YARVINSN_trace_opt_plus,
- YARVINSN_trace_opt_minus,
- YARVINSN_trace_opt_mult,
- YARVINSN_trace_opt_div,
- YARVINSN_trace_opt_mod,
- YARVINSN_trace_opt_eq,
- YARVINSN_trace_opt_neq,
- YARVINSN_trace_opt_lt,
- YARVINSN_trace_opt_le,
- YARVINSN_trace_opt_gt,
- YARVINSN_trace_opt_ge,
- YARVINSN_trace_opt_ltlt,
- YARVINSN_trace_opt_and,
- YARVINSN_trace_opt_or,
- YARVINSN_trace_opt_aref,
- YARVINSN_trace_opt_aset,
- YARVINSN_trace_opt_aset_with,
- YARVINSN_trace_opt_aref_with,
- YARVINSN_trace_opt_length,
- YARVINSN_trace_opt_size,
- YARVINSN_trace_opt_empty_p,
- YARVINSN_trace_opt_succ,
- YARVINSN_trace_opt_not,
- YARVINSN_trace_opt_regexpmatch2,
- YARVINSN_trace_invokebuiltin,
- YARVINSN_trace_opt_invokebuiltin_delegate,
- YARVINSN_trace_opt_invokebuiltin_delegate_leave,
- YARVINSN_trace_getlocal_WC_0,
- YARVINSN_trace_getlocal_WC_1,
- YARVINSN_trace_setlocal_WC_0,
- YARVINSN_trace_setlocal_WC_1,
- YARVINSN_trace_putobject_INT2FIX_0_,
- YARVINSN_trace_putobject_INT2FIX_1_,
- VM_INSTRUCTION_SIZE
-};
-extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid);
-extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
-extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2);
-extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
- int argc, const VALUE *argv, int priv);
-static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-static VALUE
-ruby_vm_special_exception_copy(VALUE exc)
-{
- VALUE e = rb_obj_alloc(rb_class_real(RBASIC_CLASS(exc)));
- rb_obj_copy_ivar(e, exc);
- return e;
-}
-__declspec(noreturn) static void ec_stack_overflow(rb_execution_context_t *ec, int);
-static void
-ec_stack_overflow(rb_execution_context_t *ec, int setup)
-{
- VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
- ec->raised_flag = RAISED_STACKOVERFLOW;
- if (setup) {
- VALUE at = rb_ec_backtrace_object(ec);
- mesg = ruby_vm_special_exception_copy(mesg);
- rb_ivar_set(mesg, idBt, at);
- rb_ivar_set(mesg, idBt_locations, at);
- }
- ec->errinfo = mesg;
- rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
-}
-__declspec(noreturn) static void vm_stackoverflow(void);
-__declspec(noinline) static __attribute__((__cold__)) void vm_stackoverflow(void);
-static void
-vm_stackoverflow(void)
-{
- ec_stack_overflow(rb_current_execution_context(1), 1);
-}
-__declspec(noreturn) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
-static void
-rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
-{
- if (rb_during_gc()) {
- rb_bug("system stack overflow during GC. Faulty native extension?");
- }
- if (crit) {
- ec->raised_flag = RAISED_STACKOVERFLOW;
- ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
- rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
- }
- ec_stack_overflow(ec, 1);
-}
-__extension__ _Static_assert((-2) == -2, "VM_ENV_DATA_INDEX_ME_CREF" ": " "VM_ENV_DATA_INDEX_ME_CREF == -2");
-__extension__ _Static_assert((-1) == -1, "VM_ENV_DATA_INDEX_SPECVAL" ": " "VM_ENV_DATA_INDEX_SPECVAL == -1");
-__extension__ _Static_assert(( 0) == -0, "VM_ENV_DATA_INDEX_FLAGS" ": " "VM_ENV_DATA_INDEX_FLAGS == -0");
-static void
-vm_push_frame(rb_execution_context_t *ec,
- const rb_iseq_t *iseq,
- VALUE type,
- VALUE self,
- VALUE specval,
- VALUE cref_or_me,
- const VALUE *pc,
- VALUE *sp,
- int local_size,
- int stack_max)
-{
- rb_control_frame_t *const cfp = ((ec->cfp)-1);
- ;
- ((void)0);
- do { __extension__ _Static_assert(sizeof(*(sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*(sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*(cfp)) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*(cfp)) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&(sp)[(local_size + stack_max)]; if ((__builtin_expect(!!((cfp) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- ;
- for (int i=0; i < local_size; i++) {
- *sp++ = ((VALUE)RUBY_Qnil);
- }
- *sp++ = cref_or_me;
- *sp++ = specval ;
- *sp++ = type;
- *cfp = (const struct rb_control_frame_struct) {
- .pc = pc,
- .sp = sp,
- .iseq = iseq,
- .self = self,
- .ep = sp - 1,
- .block_code = ((void*)0),
- .__bp__ = sp,
- .jit_return = ((void*)0)
- };
- ec->cfp = cfp;
- if (0 == 2) {
- rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- }
- ;
-}static inline
-void
-rb_vm_pop_frame_no_int(rb_execution_context_t *ec)
-{
- rb_control_frame_t *cfp = ec->cfp;
- if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
- if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- ec->cfp = ((cfp)+1);
-}
-static inline int
-vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
-{
- VALUE flags = ep[( 0)];
- if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
- if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- rb_vm_check_ints(ec);
- ec->cfp = ((cfp)+1);
- return flags & VM_FRAME_FLAG_FINISH;
-}
-static void
-rb_vm_pop_frame(rb_execution_context_t *ec)
-{
- vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
-}static inline
-VALUE
-rb_vm_push_frame_fname(rb_execution_context_t *ec, VALUE fname)
-{
- VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
- void *ptr = ruby_xcalloc(sizeof(struct rb_iseq_constant_body) + sizeof(struct rb_iseq_struct), 1);
- rb_imemo_tmpbuf_set_ptr(tmpbuf, ptr);
- struct rb_iseq_struct *dmy_iseq = (struct rb_iseq_struct *)ptr;
- struct rb_iseq_constant_body *dmy_body = (struct rb_iseq_constant_body *)&dmy_iseq[1];
- dmy_iseq->body = dmy_body;
- dmy_body->type = ISEQ_TYPE_TOP;
- dmy_body->location.pathobj = fname;
- vm_push_frame(ec,
- dmy_iseq,
- VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH,
- ec->cfp->self,
- 0,
- ((VALUE)RUBY_Qfalse),
- ((void*)0),
- ec->cfp->sp,
- 0,
- 0);
- return tmpbuf;
-}
-static inline VALUE
-rb_arity_error_new(int argc, int min, int max)
-{
- VALUE err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d", argc, min);
- if (min == max) {
- }
- else if (max == (-1)) {
- ((__builtin_constant_p("+") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((err_mess), ("+")));
- }
- else {
- rb_str_catf(err_mess, "..%d", max);
- }
- ((__builtin_constant_p(")") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((err_mess), (")")));
- return rb_exc_new_str(rb_eArgError, err_mess);
-}
-static void
-rb_error_arity(int argc, int min, int max)
-{
- rb_exc_raise(rb_arity_error_new(argc, min, max));
-}
-__declspec(noinline) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
-static void
-vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
-{
- rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
- VM_FORCE_WRITE(&ep[index], v);
- VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
- ((void)0);
-}
-static inline void
-vm_env_write(const VALUE *ep, int index, VALUE v)
-{
- VALUE flags = ep[( 0)];
- if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
- VM_STACK_ENV_WRITE(ep, index, v);
- }
- else {
- vm_env_write_slowpath(ep, index, v);
- }
-}
-static VALUE
-rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
-{
- if (block_handler == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- switch (vm_block_handler_type(block_handler)) {
- case block_handler_type_iseq:
- case block_handler_type_ifunc:
- return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
- case block_handler_type_symbol:
- return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
- case block_handler_type_proc:
- return VM_BH_TO_PROC(block_handler);
- default:
- __builtin_unreachable();
- }
- }
-}
-static inline struct vm_svar *
-lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
-{
- VALUE svar;
- if (lep && (ec == ((void*)0) || ec->root_lep != lep)) {
- svar = lep[(-2)];
- }
- else {
- svar = ec->root_svar;
- }
- ((void)0);
- return (struct vm_svar *)svar;
-}
-static inline void
-lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
-{
- ((void)0);
- if (lep && (ec == ((void*)0) || ec->root_lep != lep)) {
- vm_env_write(lep, (-2), (VALUE)svar);
- }
- else {
- rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), __extension__({
- ;
- ; __typeof__((VALUE *)(&ec->root_svar)) unaligned_member_access_result = ((VALUE *)(&ec->root_svar));
- ; unaligned_member_access_result; }), (VALUE)(svar), "./vm_insnhelper.c", 586);
- }
-}
-static VALUE
-lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
-{
- const struct vm_svar *svar = lep_svar(ec, lep);
- if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
- switch (key) {
- case VM_SVAR_LASTLINE:
- return svar->lastline;
- case VM_SVAR_BACKREF:
- return svar->backref;
- default: {
- const VALUE ary = svar->others;
- if (RB_NIL_P(ary)) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
- }
- }
- }
-}
-static struct vm_svar *
-svar_new(VALUE obj)
-{
- return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj);
-}
-static void
-lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
-{
- struct vm_svar *svar = lep_svar(ec, lep);
- if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
- lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
- }
- switch (key) {
- case VM_SVAR_LASTLINE:
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->lastline)) unaligned_member_access_result = ((VALUE *)(&svar->lastline));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 632);
- return;
- case VM_SVAR_BACKREF:
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->backref)) unaligned_member_access_result = ((VALUE *)(&svar->backref));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 635);
- return;
- default: {
- VALUE ary = svar->others;
- if (RB_NIL_P(ary)) {
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->others)) unaligned_member_access_result = ((VALUE *)(&svar->others));
- ; unaligned_member_access_result; }), (VALUE)(ary = rb_ary_new()), "./vm_insnhelper.c", 641);
- }
- rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
- }
- }
-}
-static inline VALUE
-vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
-{
- VALUE val;
- if (type == 0) {
- val = lep_svar_get(ec, lep, key);
- }
- else {
- VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
- if (type & 0x01) {
- switch (type >> 1) {
- case '&':
- val = rb_reg_last_match(backref);
- break;
- case '`':
- val = rb_reg_match_pre(backref);
- break;
- case '\'':
- val = rb_reg_match_post(backref);
- break;
- case '+':
- val = rb_reg_match_last(backref);
- break;
- default:
- rb_bug("unexpected back-ref");
- }
- }
- else {
- val = rb_reg_nth_match((int)(type >> 1), backref);
- }
- }
- return val;
-}
-__attribute__((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
-static rb_callable_method_entry_t *
-check_method_entry(VALUE obj, int can_be_svar)
-{
- if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0);
- switch (imemo_type(obj)) {
- case imemo_ment:
- return (rb_callable_method_entry_t *)obj;
- case imemo_cref:
- return ((void*)0);
- case imemo_svar:
- if (can_be_svar) {
- return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
- }
- default:
- return ((void*)0);
- }
-}
-static const rb_callable_method_entry_t *
-rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
-{
- const VALUE *ep = cfp->ep;
- rb_callable_method_entry_t *me;
- while (!VM_ENV_LOCAL_P(ep)) {
- if ((me = check_method_entry(ep[(-2)], 0)) != ((void*)0)) return me;
- ep = VM_ENV_PREV_EP(ep);
- }
- return check_method_entry(ep[(-2)], 1);
-}
-static const rb_iseq_t *
-method_entry_iseqptr(const rb_callable_method_entry_t *me)
-{
- switch (me->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- return me->def->body.iseq.iseqptr;
- default:
- return ((void*)0);
- }
-}
-static rb_cref_t *
-method_entry_cref(const rb_callable_method_entry_t *me)
-{
- switch (me->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- return me->def->body.iseq.cref;
- default:
- return ((void*)0);
- }
-}
-__attribute__((__pure__)) static rb_cref_t *check_cref(VALUE, int);
-static rb_cref_t *
-check_cref(VALUE obj, int can_be_svar)
-{
- if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0);
- switch (imemo_type(obj)) {
- case imemo_ment:
- return method_entry_cref((rb_callable_method_entry_t *)obj);
- case imemo_cref:
- return (rb_cref_t *)obj;
- case imemo_svar:
- if (can_be_svar) {
- return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
- }
- default:
- return ((void*)0);
- }
-}
-static inline rb_cref_t *
-vm_env_cref(const VALUE *ep)
-{
- rb_cref_t *cref;
- while (!VM_ENV_LOCAL_P(ep)) {
- if ((cref = check_cref(ep[(-2)], 0)) != ((void*)0)) return cref;
- ep = VM_ENV_PREV_EP(ep);
- }
- return check_cref(ep[(-2)], 1);
-}
-static int
-is_cref(const VALUE v, int can_be_svar)
-{
- if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) {
- switch (imemo_type(v)) {
- case imemo_cref:
- return 1;
- case imemo_svar:
- if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
- default:
- break;
- }
- }
- return 0;
-}
-static int
-vm_env_cref_by_cref(const VALUE *ep)
-{
- while (!VM_ENV_LOCAL_P(ep)) {
- if (is_cref(ep[(-2)], 0)) return 1;
- ep = VM_ENV_PREV_EP(ep);
- }
- return is_cref(ep[(-2)], 1);
-}
-static rb_cref_t *
-cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
-{
- const VALUE v = *vptr;
- rb_cref_t *cref, *new_cref;
- if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) {
- switch (imemo_type(v)) {
- case imemo_cref:
- cref = (rb_cref_t *)v;
- new_cref = vm_cref_dup(cref);
- if (parent) {
- rb_obj_write((VALUE)(parent), __extension__({
- ;
- ; __typeof__((VALUE *)(vptr)) unaligned_member_access_result = ((VALUE *)(vptr));
- ; unaligned_member_access_result; }), (VALUE)(new_cref), "./vm_insnhelper.c", 827);
- }
- else {
- VM_FORCE_WRITE(vptr, (VALUE)new_cref);
- }
- return (rb_cref_t *)new_cref;
- case imemo_svar:
- if (can_be_svar) {
- return cref_replace_with_duplicated_cref_each_frame(&((struct vm_svar *)v)->cref_or_me, 0, v);
- }
- case imemo_ment:
- rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
- default:
- break;
- }
- }
- return ((void*)0);
-}
-static rb_cref_t *
-vm_cref_replace_with_duplicated_cref(const VALUE *ep)
-{
- if (vm_env_cref_by_cref(ep)) {
- rb_cref_t *cref;
- VALUE envval;
- while (!VM_ENV_LOCAL_P(ep)) {
- envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
- if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void*)0)) {
- return cref;
- }
- ep = VM_ENV_PREV_EP(ep);
- }
- envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
- return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
- }
- else {
- rb_bug("vm_cref_dup: unreachable");
- }
-}
-static rb_cref_t *
-vm_get_cref(const VALUE *ep)
-{
- rb_cref_t *cref = vm_env_cref(ep);
- if (cref != ((void*)0)) {
- return cref;
- }
- else {
- rb_bug("vm_get_cref: unreachable");
- }
-}static inline
-rb_cref_t *
-rb_vm_get_cref(const VALUE *ep)
-{
- return vm_get_cref(ep);
-}
-static rb_cref_t *
-vm_ec_cref(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (cfp == ((void*)0)) {
- return ((void*)0);
- }
- return vm_get_cref(cfp->ep);
-}
-static const rb_cref_t *
-vm_get_const_key_cref(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- const rb_cref_t *key_cref = cref;
- while (cref) {
- if (RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
- RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_USER1))) {
- return key_cref;
- }
- cref = CREF_NEXT(cref);
- }
- return ((void*)0);
-}static inline
-void
-rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
-{
- rb_cref_t *new_cref;
- while (cref) {
- if (CREF_CLASS(cref) == old_klass) {
- new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
- *new_cref_ptr = new_cref;
- return;
- }
- new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
- cref = CREF_NEXT(cref);
- *new_cref_ptr = new_cref;
- new_cref_ptr = &new_cref->next;
- }
- *new_cref_ptr = ((void*)0);
-}
-static rb_cref_t *
-vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval, int singleton)
-{
- rb_cref_t *prev_cref = ((void*)0);
- if (ep) {
- prev_cref = vm_env_cref(ep);
- }
- else {
- rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
- if (cfp) {
- prev_cref = vm_env_cref(cfp->ep);
- }
- }
- return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval, singleton);
-}
-static inline VALUE
-vm_get_cbase(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- return CREF_CLASS_FOR_DEFINITION(cref);
-}
-static inline VALUE
-vm_get_const_base(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- while (cref) {
- if (!CREF_PUSHED_BY_EVAL(cref)) {
- return CREF_CLASS_FOR_DEFINITION(cref);
- }
- cref = CREF_NEXT(cref);
- }
- return ((VALUE)RUBY_Qundef);
-}
-static inline void
-vm_check_if_namespace(VALUE klass)
-{
- if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS))) && !(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_MODULE)) : (RB_TYPE_P)((klass), (RUBY_T_MODULE)))) {
- rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
- }
-}
-static inline void
-vm_ensure_not_refinement_module(VALUE self)
-{
- if ((__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((self), (RUBY_T_MODULE)) : (RB_TYPE_P)((self), (RUBY_T_MODULE))) && RB_FL_TEST(self, RMODULE_IS_REFINEMENT)) {
- rb_warn("not defined at the refinement, but at the outer class/module");
- }
-}
-static inline VALUE
-vm_get_iclass(const rb_control_frame_t *cfp, VALUE klass)
-{
- return klass;
-}
-static inline VALUE
-vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
-{
- void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id);
- VALUE val;
- if (RB_NIL_P(orig_klass) && allow_nil) {
- const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
- const rb_cref_t *cref;
- VALUE klass = ((VALUE)RUBY_Qnil);
- while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
- root_cref = CREF_NEXT(root_cref);
- }
- cref = root_cref;
- while (cref && CREF_NEXT(cref)) {
- if (CREF_PUSHED_BY_EVAL(cref)) {
- klass = ((VALUE)RUBY_Qnil);
- }
- else {
- klass = CREF_CLASS(cref);
- }
- cref = CREF_NEXT(cref);
- if (!RB_NIL_P(klass)) {
- VALUE av, am = 0;
- rb_const_entry_t *ce;
- search_continue:
- if ((ce = rb_const_lookup(klass, id))) {
- rb_const_warn_if_deprecated(ce, klass, id);
- val = ce->value;
- if (RB_UNDEF_P(val)) {
- if (am == klass) break;
- am = klass;
- if (is_defined) return 1;
- if (rb_autoloading_value(klass, id, &av, ((void*)0))) return av;
- rb_autoload_load(klass, id);
- goto search_continue;
- }
- else {
- if (is_defined) {
- return 1;
- }
- else {
- if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) {
- if (!rb_ractor_shareable_p(val)) {
- rb_raise(rb_eRactorIsolationError,
- "can not access non-shareable objects in constant %""l""i" "\v""::%s by non-main ractor.", rb_class_path(klass), rb_id2name(id));
- }
- }
- return val;
- }
- }
- }
- }
- }
- if (root_cref && !RB_NIL_P(CREF_CLASS(root_cref))) {
- klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
- }
- else {
- klass = rb_class_of(ec->cfp->self);
- }
- if (is_defined) {
- return rb_const_defined(klass, id);
- }
- else {
- return rb_const_get(klass, id);
- }
- }
- else {
- vm_check_if_namespace(orig_klass);
- if (is_defined) {
- return rb_public_const_defined_from(orig_klass, id);
- }
- else {
- return rb_public_const_get_from(orig_klass, id);
- }
- }
-}static inline
-VALUE
-rb_vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, VALUE allow_nil)
-{
- return vm_get_ev_const(ec, orig_klass, id, allow_nil == ((VALUE)RUBY_Qtrue), 0);
-}
-static inline VALUE
-vm_get_ev_const_chain(rb_execution_context_t *ec, const ID *segments)
-{
- VALUE val = ((VALUE)RUBY_Qnil);
- int idx = 0;
- int allow_nil = 1;
- if (segments[0] == idNULL) {
- val = rb_cObject;
- idx++;
- allow_nil = 0;
- }
- while (segments[idx]) {
- ID id = segments[idx++];
- val = vm_get_ev_const(ec, val, id, allow_nil, 0);
- allow_nil = 0;
- }
- return val;
-}
-static inline VALUE
-vm_get_cvar_base(const rb_cref_t *cref, const rb_control_frame_t *cfp, int top_level_raise)
-{
- VALUE klass;
- if (!cref) {
- rb_bug("vm_get_cvar_base: no cref");
- }
- while (CREF_NEXT(cref) &&
- (RB_NIL_P(CREF_CLASS(cref)) || RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
- CREF_PUSHED_BY_EVAL(cref) || CREF_SINGLETON(cref))) {
- cref = CREF_NEXT(cref);
- }
- if (top_level_raise && !CREF_NEXT(cref)) {
- rb_raise(rb_eRuntimeError, "class variable access from toplevel");
- }
- klass = vm_get_iclass(cfp, CREF_CLASS(cref));
- if (RB_NIL_P(klass)) {
- rb_raise(rb_eTypeError, "no class variables available");
- }
- return klass;
-}
-__attribute__ ((__always_inline__)) static void fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, attr_index_t index, shape_id_t shape_id);
-static inline void
-fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, attr_index_t index, shape_id_t shape_id)
-{
- if (is_attr) {
- vm_cc_attr_index_set(cc, index, shape_id);
- }
- else {
- vm_ic_attr_index_set(iseq, ic, index, shape_id);
- }
-}
-__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, const rb_iseq_t *, IVC, const struct rb_callcache *, int);
-static inline VALUE
-vm_getivar(VALUE obj, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
-{
- VALUE val = ((VALUE)RUBY_Qundef);
- shape_id_t shape_id;
- VALUE * ivar_list;
- if (RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qnil);
- }
- shape_id = RBASIC_SHAPE_ID(obj);
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- ivar_list = ROBJECT_IVPTR(obj);
- ((void)0);
- break;
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- {
- if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) {
- goto general_path;
- }
- ivar_list = (((rb_classext_t *)((char *)(obj) + sizeof(struct RClass)))->iv_ptr);
- break;
- }
- default:
- if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) {
- struct gen_ivtbl *ivtbl;
- rb_gen_ivtbl_get(obj, id, &ivtbl);
- ivar_list = ivtbl->ivptr;
- }
- else {
- return ((VALUE)RUBY_Qnil);
- }
- }
- shape_id_t cached_id;
- attr_index_t index;
- if (is_attr) {
- vm_cc_atomic_shape_and_index(cc, &cached_id, &index);
- }
- else {
- vm_ic_atomic_shape_and_index(ic, &cached_id, &index);
- }
- if ((__builtin_expect(!!(cached_id == shape_id), 1))) {
- ((void)0);
- if (index == (attr_index_t)-1) {
- return ((VALUE)RUBY_Qnil);
- }
- val = ivar_list[index];
- ((void)0);
- }
- else {
- rb_shape_t *shape = rb_shape_get_shape_by_id(shape_id);
- if (shape_id == ((5 * 2) + 1)) {
- if (!rb_id_table_lookup(ROBJECT_IV_HASH(obj), id, &val)) {
- val = ((VALUE)RUBY_Qnil);
- }
- }
- else {
- if (rb_shape_get_iv_index(shape, id, &index)) {
- fill_ivar_cache(iseq, ic, cc, is_attr, index, shape_id);
- val = ivar_list[index];
- ((void)0);
- }
- else {
- if (is_attr) {
- vm_cc_attr_index_initialize(cc, shape_id);
- }
- else {
- vm_ic_attr_index_initialize(ic, shape_id);
- }
- val = ((VALUE)RUBY_Qnil);
- }
- }
- }
- ((void)0);
- return val;
-general_path:
- ((void)0);
- if (is_attr) {
- return rb_attr_get(obj, id);
- }
- else {
- return rb_ivar_get(obj, id);
- }
-}
-static void
-populate_cache(attr_index_t index, shape_id_t next_shape_id, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, _Bool is_attr)
-{
- ((void)0);
- if (is_attr) {
- vm_cc_attr_index_set(cc, index, next_shape_id);
- }
- else {
- vm_ic_attr_index_set(iseq, ic, index, next_shape_id);
- }
-}
-__attribute__ ((__always_inline__)) static VALUE vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr);
-__declspec(noinline) static VALUE vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic);
-__declspec(noinline) static VALUE vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc);
-static VALUE
-vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
-{
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- {
- do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
- attr_index_t index = rb_obj_ivar_set(obj, id, val);
- shape_id_t next_shape_id = ROBJECT_SHAPE_ID(obj);
- if (next_shape_id != ((5 * 2) + 1)) {
- populate_cache(index, next_shape_id, id, iseq, ic, cc, is_attr);
- }
- ((void)0);
- return val;
- }
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- {
- rb_ivar_set(obj, id, val);
- shape_id_t next_shape_id = rb_shape_get_shape_id(obj);
- rb_shape_t *next_shape = rb_shape_get_shape_by_id(next_shape_id);
- attr_index_t index;
- if (rb_shape_get_iv_index(next_shape, id, &index)) {
- if (index >= (attr_index_t)(-1)) {
- rb_raise(rb_eArgError, "too many instance variables");
- }
- populate_cache(index, next_shape_id, id, iseq, ic, cc, is_attr);
- }
- else {
- rb_bug("didn't find the id\n");
- }
- return val;
- }
- }
- ((void)0);
- return rb_ivar_set(obj, id, val);
-}
-static VALUE
-vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic)
-{
- return vm_setivar_slowpath(obj, id, val, iseq, ic, ((void*)0), 0);
-}
-static VALUE
-vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc)
-{
- return vm_setivar_slowpath(obj, id, val, ((void*)0), ((void*)0), cc, 1);
-}
-__declspec(noinline) static VALUE vm_setivar_default(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index);
-static VALUE
-vm_setivar_default(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index)
-{
- shape_id_t shape_id = RBASIC_SHAPE_ID(obj);
- struct gen_ivtbl *ivtbl = 0;
- if (shape_id == dest_shape_id) {
- ((void)0);
- rb_gen_ivtbl_get(obj, 0, &ivtbl);
- }
- else if (dest_shape_id != (((uintptr_t)1 << 32) - 1)) {
- rb_shape_t * dest_shape = rb_shape_get_shape_by_id(dest_shape_id);
- shape_id_t source_shape_id = dest_shape->parent_id;
- if (shape_id == source_shape_id && dest_shape->edge_name == id && dest_shape->type == SHAPE_IVAR) {
- ivtbl = rb_ensure_generic_iv_list_size(obj, dest_shape, index + 1);
- RBASIC_SET_SHAPE_ID(obj, dest_shape_id);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- VALUE *ptr = ivtbl->ivptr;
- rb_obj_write((VALUE)(obj), __extension__({
- ;
- ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1423);
- ((void)0);
- return val;
-}
-static inline VALUE
-vm_setivar(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index)
-{
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- {
- ((void)0);
- shape_id_t shape_id = ROBJECT_SHAPE_ID(obj);
- ((void)0);
- if ((__builtin_expect(!!(shape_id == dest_shape_id), 1))) {
- ((void)0);
- ((void)0);
- }
- else if (dest_shape_id != (((uintptr_t)1 << 32) - 1)) {
- rb_shape_t *dest_shape = rb_shape_get_shape_by_id(dest_shape_id);
- shape_id_t source_shape_id = dest_shape->parent_id;
- if (shape_id == source_shape_id && dest_shape->edge_name == id) {
- ((void)0);
- ROBJECT_SET_SHAPE_ID(obj, dest_shape_id);
- ((void)0);
- ((void)0);
- }
- else {
- break;
- }
- }
- else {
- break;
- }
- VALUE *ptr = ROBJECT_IVPTR(obj);
- ((void)0);
- rb_obj_write((VALUE)(obj), __extension__({
- ;
- ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1469);
- ((void)0);
- return val;
- }
- break;
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- ((void)0);
- default:
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-update_classvariable_cache(const rb_iseq_t *iseq, VALUE klass, ID id, ICVARC ic)
-{
- VALUE defined_class = 0;
- VALUE cvar_value = rb_cvar_find(klass, id, &defined_class);
- if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((defined_class), (RUBY_T_ICLASS)))) {
- defined_class = ((struct RBasic *)(defined_class))->klass;
- }
- struct rb_id_table *rb_cvc_tbl = (((rb_classext_t *)((char *)(defined_class) + sizeof(struct RClass)))->cvc_tbl);
- if (!rb_cvc_tbl) {
- rb_bug("the cvc table should be set");
- }
- VALUE ent_data;
- if (!rb_id_table_lookup(rb_cvc_tbl, id, &ent_data)) {
- rb_bug("should have cvar cache entry");
- }
- struct rb_cvar_class_tbl_entry *ent = (void *)ent_data;
- ent->global_cvar_state = (ruby_vm_global_cvar_state);
- ic->entry = ent;
- (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "./vm_insnhelper.c", 1510));
- return cvar_value;
-}
-static inline VALUE
-vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, ICVARC ic)
-{
- const rb_cref_t *cref;
- if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state) && (__builtin_expect(!!(rb_ractor_main_p()), 1))) {
- ((void)0);
- VALUE v = rb_ivar_lookup(ic->entry->class_value, id, ((VALUE)RUBY_Qundef));
- ((void)0);
- return v;
- }
- cref = vm_get_cref(((((reg_cfp)->ep))));
- VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
- return update_classvariable_cache(iseq, klass, id, ic);
-}static inline
-VALUE
-rb_vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, ICVARC ic)
-{
- return vm_getclassvariable(iseq, cfp, id, ic);
-}
-static inline void
-vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, VALUE val, ICVARC ic)
-{
- const rb_cref_t *cref;
- if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state)) {
- ((void)0);
- rb_class_ivar_set(ic->entry->class_value, id, val);
- return;
- }
- cref = vm_get_cref(((((reg_cfp)->ep))));
- VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
- rb_cvar_set(klass, id, val);
- update_classvariable_cache(iseq, klass, id, ic);
-}static inline
-void
-rb_vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, VALUE val, ICVARC ic)
-{
- vm_setclassvariable(iseq, cfp, id, val, ic);
-}
-static inline VALUE
-vm_getinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, IVC ic)
-{
- return vm_getivar(obj, id, iseq, ic, ((void*)0), 0);
-}
-static inline void
-vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- rb_error_frozen_object(obj);
- return;
- }
- shape_id_t dest_shape_id;
- attr_index_t index;
- vm_ic_atomic_shape_and_index(ic, &dest_shape_id, &index);
- if ((__builtin_expect(!!(RB_UNDEF_P(vm_setivar(obj, id, val, dest_shape_id, index))), 0))) {
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- if (!RB_UNDEF_P(vm_setivar_default(obj, id, val, dest_shape_id, index))) {
- return;
- }
- }
- vm_setivar_slowpath_ivar(obj, id, val, iseq, ic);
- }
-}static inline
-void
-rb_vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
-{
- vm_setinstancevariable(iseq, obj, id, val, ic);
-}
-static VALUE
-vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
-{
- if (RB_FIXNUM_P(err)) {
- ec->tag->state = RB_FIX2INT(err);
- }
- else if (RB_SYMBOL_P(err)) {
- ec->tag->state = RUBY_TAG_THROW;
- }
- else if (imemo_throw_data_p((VALUE)err)) {
- ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
- }
- else {
- ec->tag->state = RUBY_TAG_RAISE;
- }
- return err;
-}
-static VALUE
-vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
- const int flag, const VALUE throwobj)
-{
- const rb_control_frame_t *escape_cfp = ((void*)0);
- const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
- if (flag != 0) {
- }
- else if (state == RUBY_TAG_BREAK) {
- int is_orphan = 1;
- const VALUE *ep = ((((reg_cfp)->ep)));
- const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
- escape_cfp = reg_cfp;
- while (((base_iseq)->body)->type != ISEQ_TYPE_BLOCK) {
- if (((escape_cfp->iseq)->body)->type == ISEQ_TYPE_CLASS) {
- escape_cfp = ((escape_cfp)+1);
- ep = escape_cfp->ep;
- base_iseq = escape_cfp->iseq;
- }
- else {
- ep = VM_ENV_PREV_EP(ep);
- base_iseq = ((base_iseq)->body)->parent_iseq;
- escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
- ((void)0);
- }
- }
- if (VM_FRAME_LAMBDA_P(escape_cfp)) {
- is_orphan = 0;
- state = RUBY_TAG_RETURN;
- }
- else {
- ep = VM_ENV_PREV_EP(ep);
- while (escape_cfp < eocfp) {
- if (escape_cfp->ep == ep) {
- const rb_iseq_t *const iseq = escape_cfp->iseq;
- const VALUE epc = escape_cfp->pc - ((iseq)->body)->iseq_encoded;
- const struct iseq_catch_table *const ct = ((iseq)->body)->catch_table;
- unsigned int i;
- if (!ct) break;
- for (i=0; i < ct->size; i++) {
- const struct iseq_catch_table_entry *const entry =
- __extension__({
- ;
- ; __typeof__(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]);
- ; unaligned_member_access_result; });
- if (entry->type == CATCH_TYPE_BREAK &&
- entry->iseq == base_iseq &&
- entry->start < epc && entry->end >= epc) {
- if (entry->cont == epc) {
- is_orphan = 0;
- }
- break;
- }
- }
- break;
- }
- escape_cfp = ((escape_cfp)+1);
- }
- }
- if (is_orphan) {
- rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
- }
- }
- else if (state == RUBY_TAG_RETRY) {
- const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
- escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
- }
- else if (state == RUBY_TAG_RETURN) {
- const VALUE *current_ep = ((((reg_cfp)->ep)));
- const VALUE *target_ep = ((void*)0), *target_lep, *ep = current_ep;
- int in_class_frame = 0;
- int toplevel = 1;
- escape_cfp = reg_cfp;
- while (!VM_ENV_LOCAL_P(ep)) {
- if (VM_ENV_FLAGS(ep, VM_FRAME_FLAG_LAMBDA) && target_ep == ((void*)0)) {
- target_ep = ep;
- }
- ep = VM_ENV_PREV_EP(ep);
- }
- target_lep = ep;
- while (escape_cfp < eocfp) {
- const VALUE *lep = VM_CF_LEP(escape_cfp);
- if (!target_lep) {
- target_lep = lep;
- }
- if (lep == target_lep &&
- VM_FRAME_RUBYFRAME_P(escape_cfp) &&
- ((escape_cfp->iseq)->body)->type == ISEQ_TYPE_CLASS) {
- in_class_frame = 1;
- target_lep = 0;
- }
- if (lep == target_lep) {
- if (VM_FRAME_LAMBDA_P(escape_cfp)) {
- toplevel = 0;
- if (in_class_frame) {
- goto valid_return;
- }
- else {
- const VALUE *tep = current_ep;
- while (target_lep != tep) {
- if (escape_cfp->ep == tep) {
- if (tep == target_ep) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- tep = VM_ENV_PREV_EP(tep);
- }
- }
- }
- else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
- switch (((escape_cfp->iseq)->body)->type) {
- case ISEQ_TYPE_TOP:
- case ISEQ_TYPE_MAIN:
- if (toplevel) {
- if (in_class_frame) goto unexpected_return;
- if (target_ep == ((void*)0)) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- break;
- case ISEQ_TYPE_EVAL:
- case ISEQ_TYPE_CLASS:
- toplevel = 0;
- break;
- default:
- break;
- }
- }
- }
- if (escape_cfp->ep == target_lep && ((escape_cfp->iseq)->body)->type == ISEQ_TYPE_METHOD) {
- if (target_ep == ((void*)0)) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- escape_cfp = ((escape_cfp)+1);
- }
- unexpected_return:;
- rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
- valid_return:;
- }
- else {
- rb_bug("isns(throw): unsupported throw type");
- }
- ec->tag->state = state;
- return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
-}
-static VALUE
-vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- rb_num_t throw_state, VALUE throwobj)
-{
- const int state = (int)(throw_state & VM_THROW_STATE_MASK);
- const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
- if (state != 0) {
- return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
- }
- else {
- return vm_throw_continue(ec, throwobj);
- }
-}
-static inline void
-vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
-{
- int is_splat = flag & 0x01;
- rb_num_t space_size = num + is_splat;
- VALUE *base = sp - 1;
- const VALUE *ptr;
- rb_num_t len;
- const VALUE obj = ary;
- if (!(__builtin_constant_p(RUBY_T_ARRAY) ? rbimpl_RB_TYPE_P_fastpath((ary), (RUBY_T_ARRAY)) : (RB_TYPE_P)((ary), (RUBY_T_ARRAY))) && RB_NIL_P(ary = rb_check_array_type(ary))) {
- ary = obj;
- ptr = &ary;
- len = 1;
- }
- else {
- ptr = rb_array_const_ptr_transient(ary);
- len = (rb_num_t)rb_array_len(ary);
- }
- if (space_size == 0) {
- }
- else if (flag & 0x02) {
- rb_num_t i = 0, j;
- if (len < num) {
- for (i=0; i len) {
- *bptr = rb_ary_new();
- }
- else {
- *bptr = rb_ary_new_from_values(len - num, ptr + num);
- }
- }
- }
- (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
-}
-static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE vm_mtbl_dump(VALUE klass, ID target_mid);
-static struct rb_class_cc_entries *
-vm_ccs_create(VALUE klass, const rb_callable_method_entry_t *cme)
-{
- struct rb_class_cc_entries *ccs = ((struct rb_class_cc_entries *)ruby_xmalloc(sizeof(struct rb_class_cc_entries)));
- ccs->capa = 0;
- ccs->len = 0;
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->cme)) unaligned_member_access_result = ((VALUE *)(&ccs->cme));
- ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 1898);
- (((rb_callable_method_entry_t *)cme)->flags |= ((VALUE)RUBY_FL_USER8));
- ccs->entries = ((void*)0);
- return ccs;
-}
-static void
-vm_ccs_push(VALUE klass, struct rb_class_cc_entries *ccs, const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- if (! vm_cc_markable(cc)) {
- return;
- }
- else if (! vm_ci_markable(ci)) {
- return;
- }
- if ((__builtin_expect(!!(ccs->len == ccs->capa), 0))) {
- if (ccs->capa == 0) {
- ccs->capa = 1;
- ccs->entries = ((struct rb_class_cc_entries_entry *)ruby_xmalloc2((ccs->capa), sizeof(struct rb_class_cc_entries_entry)));
- }
- else {
- ccs->capa *= 2;
- ((ccs->entries) = ((struct rb_class_cc_entries_entry *)ruby_xrealloc2((void *)(ccs->entries), (ccs->capa), sizeof(struct rb_class_cc_entries_entry))));
- }
- }
- ((void)0);
- const int pos = ccs->len++;
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->entries[pos].ci)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].ci));
- ; unaligned_member_access_result; }), (VALUE)(ci), "./vm_insnhelper.c", 1927);
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->entries[pos].cc)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 1928);
- if (0) {
- }
-}
-static const struct rb_callcache *
-vm_search_method_slowpath0(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
-{
- const struct rb_callcache *cc = rb_vm_search_method_slowpath(cd->ci, klass);
- cd->cc = cc;
- const struct rb_callcache *empty_cc =
- rb_vm_empty_cc();
- if (cd_owner && cc != empty_cc) (rb_obj_written((VALUE)(cd_owner), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cc), "./vm_insnhelper.c", 2110));
- ((void)0);
- return cc;
-}
-static const struct rb_callcache *
-vm_search_method_fastpath(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
-{
- const struct rb_callcache *cc = cd->cc;
- if ((__builtin_expect(!!(vm_cc_class_check(cc, klass)), 1))) {
- if ((__builtin_expect(!!(!((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))), 1))) {
- ((void)0);
- ((void)0);
- ((void)0);
- return cc;
- }
- ((void)0);
- }
- else {
- ((void)0);
- }
- return vm_search_method_slowpath0(cd_owner, cd, klass);
-}
-static const struct rb_callcache *
-vm_search_method(VALUE cd_owner, struct rb_call_data *cd, VALUE recv)
-{
- VALUE klass = rb_class_of(recv);
- ((void)0);
- ((void)0);
- return vm_search_method_fastpath(cd_owner, cd, klass);
-}
-typedef union {
- VALUE (*anyargs)();
- VALUE (*f00)(VALUE);
- VALUE (*f01)(VALUE, VALUE);
- VALUE (*f02)(VALUE, VALUE, VALUE);
- VALUE (*f03)(VALUE, VALUE, VALUE, VALUE);
- VALUE (*f04)(VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f05)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f06)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f07)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f08)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f09)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f10)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f11)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f12)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f13)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f14)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f15)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*fm1)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE);
-} __attribute__((__transparent_union__)) cfunc_type;
-static inline int
-check_cfunc(const rb_callable_method_entry_t *me, cfunc_type func)
-{
- if (! me) {
- return 0;
- }
- else {
- ((void)0);
- ((void)0);
- ((void)0);
- if (me->def->type != VM_METHOD_TYPE_CFUNC) {
- return 0;
- }
- else {
- return me->def->body.cfunc.func == func.anyargs;
- }
- }
-}
-static inline int
-vm_method_cfunc_is(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv, cfunc_type func)
-{
- ((void)0);
- const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
- return check_cfunc(vm_cc_cme(cc), func);
-}
-static inline _Bool
-FIXNUM_2_P(VALUE a, VALUE b)
-{
- long x = a;
- long y = b;
- long z = x & y & 1;
- return z == 1;
-}
-static inline _Bool
-FLONUM_2_P(VALUE a, VALUE b)
-{
- long x = a;
- long y = b;
- long z = ((x ^ 2) | (y ^ 2)) & 3;
- return !z;
-}
-static VALUE
-opt_equality_specialized(VALUE recv, VALUE obj)
-{
- if (FIXNUM_2_P(recv, obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (FLONUM_2_P(recv, obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (RB_STATIC_SYM_P(recv) && RB_STATIC_SYM_P(obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (RB_SPECIAL_CONST_P(recv)) {
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat && RB_FLOAT_TYPE_P(obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
- double a = rb_float_value_inline(recv);
- double b = rb_float_value_inline(obj);
- return ((a == b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RBASIC_CLASS(recv) == rb_cString && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
- if (recv == obj) {
- return ((VALUE)RUBY_Qtrue);
- }
- else if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_STRING)) : (RB_TYPE_P)((obj), (RUBY_T_STRING)))) {
- return rb_str_eql_internal(obj, recv);
- }
- }
- return ((VALUE)RUBY_Qundef);
- compare_by_identity:
- return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static VALUE
-opt_equality(const rb_iseq_t *cd_owner, VALUE recv, VALUE obj, CALL_DATA cd)
-{
- ((void)0);
- VALUE val = opt_equality_specialized(recv, obj);
- if (!RB_UNDEF_P(val)) return val;
- if (!vm_method_cfunc_is(cd_owner, cd, recv, rb_obj_equal)) {
- return ((VALUE)RUBY_Qundef);
- }
- else {
- return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
-}
-extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
-extern VALUE rb_vm_call_with_refinements(rb_execution_context_t *, VALUE, ID, int, const VALUE *, int);
-static VALUE
-check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
-{
- switch (type) {
- case VM_CHECKMATCH_TYPE_WHEN:
- return pattern;
- case VM_CHECKMATCH_TYPE_RESCUE:
- if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
- rb_raise(rb_eTypeError, "class or module required for rescue clause");
- }
- case VM_CHECKMATCH_TYPE_CASE: {
- return rb_vm_call_with_refinements(ec, pattern, idEqq, 1, &target, 0);
- }
- default:
- rb_bug("check_match: unreachable");
- }
-}
-static inline VALUE
-double_cmp_lt(double a, double b)
-{
- ;
- return ((a < b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_le(double a, double b)
-{
- ;
- return ((a <= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_gt(double a, double b)
-{
- ;
- return ((a > b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_ge(double a, double b)
-{
- ;
- return ((a >= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE *
-vm_base_ptr(const rb_control_frame_t *cfp)
-{
- return cfp->__bp__;
-}
-__declspec(noreturn) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
-__declspec(noreturn) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc);
-__declspec(noreturn) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
-VALUE rb_keyword_error_new(const char *error, VALUE keys);
-static VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv,
- enum method_missing_reason call_status, int kw_splat);
-__attribute__ ((__visibility__("default"))) extern
-const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
-struct args_info {
- VALUE *argv;
- int argc;
- int rest_index;
- int rest_dupped;
- const struct rb_callinfo_kwarg *kw_arg;
- VALUE *kw_argv;
- VALUE rest;
-};
-enum arg_setup_type {
- arg_setup_method,
- arg_setup_block
-};
-static inline void
-arg_rest_dup(struct args_info *args)
-{
- if (!args->rest_dupped) {
- args->rest = rb_ary_dup(args->rest);
- args->rest_dupped = 1;
- }
-}
-static inline int
-args_argc(struct args_info *args)
-{
- if (args->rest == ((VALUE)RUBY_Qfalse)) {
- return args->argc;
- }
- else {
- return args->argc + RARRAY_LENINT(args->rest) - args->rest_index;
- }
-}
-static inline void
-args_extend(struct args_info *args, const int min_argc)
-{
- int i;
- if (args->rest) {
- arg_rest_dup(args);
- ((void)0);
- for (i=args->argc + RARRAY_LENINT(args->rest); irest, ((VALUE)RUBY_Qnil));
- }
- }
- else {
- for (i=args->argc; iargv[args->argc++] = ((VALUE)RUBY_Qnil);
- }
- }
-}
-static inline void
-args_reduce(struct args_info *args, int over_argc)
-{
- if (args->rest) {
- const long len = rb_array_len(args->rest);
- if (len > over_argc) {
- arg_rest_dup(args);
- rb_ary_resize(args->rest, len - over_argc);
- return;
- }
- else {
- args->rest = ((VALUE)RUBY_Qfalse);
- over_argc -= len;
- }
- }
- ((void)0);
- args->argc -= over_argc;
-}
-static inline int
-args_check_block_arg0(struct args_info *args)
-{
- VALUE ary = ((VALUE)RUBY_Qnil);
- if (args->rest && rb_array_len(args->rest) == 1) {
- VALUE arg0 = RARRAY_AREF(args->rest, 0);
- ary = rb_check_array_type(arg0);
- }
- else if (args->argc == 1) {
- VALUE arg0 = args->argv[0];
- ary = rb_check_array_type(arg0);
- args->argv[0] = arg0;
- }
- if (!RB_NIL_P(ary)) {
- args->rest = ary;
- args->rest_index = 0;
- args->argc = 0;
- return 1;
- }
- return 0;
-}
-static inline void
-args_copy(struct args_info *args)
-{
- if (args->rest != ((VALUE)RUBY_Qfalse)) {
- int argc = args->argc;
- args->argc = 0;
- arg_rest_dup(args);
- while (args->rest_index > 0 && argc > 0) {
- RARRAY_ASET(args->rest, --args->rest_index, args->argv[--argc]);
- }
- while (argc > 0) {
- rb_ary_unshift(args->rest, args->argv[--argc]);
- }
- }
- else if (args->argc > 0) {
- args->rest = rb_ary_new_from_values(args->argc, args->argv);
- args->rest_index = 0;
- args->rest_dupped = 1;
- args->argc = 0;
- }
-}
-static inline const VALUE *
-args_rest_argv(struct args_info *args)
-{
- return rb_array_const_ptr_transient(args->rest) + args->rest_index;
-}
-static inline VALUE
-args_rest_array(struct args_info *args)
-{
- VALUE ary;
- if (args->rest) {
- ary = rb_ary_behead(args->rest, args->rest_index);
- args->rest_index = 0;
- args->rest = 0;
- }
- else {
- ary = rb_ary_new();
- }
- return ary;
-}
-static int
-args_kw_argv_to_hash(struct args_info *args)
-{
- const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
- const VALUE *const passed_keywords = kw_arg->keywords;
- const int kw_len = kw_arg->keyword_len;
- VALUE h = rb_hash_new_with_size(kw_len);
- const int kw_start = args->argc - kw_len;
- const VALUE * const kw_argv = args->argv + kw_start;
- int i;
- args->argc = kw_start + 1;
- for (i=0; iargv[args->argc - 1] = h;
- return args->argc;
-}
-static inline void
-args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
-{
- if (args->argc >= argc) {
- args->argc -= argc;
- args->argv += argc;
- }
- else {
- int i, j;
- const VALUE *argv = args_rest_argv(args);
- for (i=args->argc, j=0; irest_index += argc - args->argc;
- args->argc = 0;
- }
-}
-static inline void
-args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
-{
- long len;
- len = rb_array_len(args->rest);
- ruby_nonempty_memcpy((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- rb_ary_resize(args->rest, len - argc);
-}
-static inline int
-args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
-{
- int i;
- if (args->argc >= opt_max) {
- args->argc -= opt_max;
- args->argv += opt_max;
- i = opt_max;
- }
- else {
- int j;
- i = args->argc;
- args->argc = 0;
- if (args->rest) {
- int len = RARRAY_LENINT(args->rest);
- const VALUE *argv = rb_array_const_ptr_transient(args->rest);
- for (; irest_index < len; i++, args->rest_index++) {
- locals[i] = argv[args->rest_index];
- }
- }
- for (j=i; jbody)->param.keyword->table;
- const int req_key_num = ((iseq)->body)->param.keyword->required_num;
- const int key_num = ((iseq)->body)->param.keyword->num;
- const VALUE * const default_values = ((iseq)->body)->param.keyword->default_values;
- VALUE missing = 0;
- int i, di, found = 0;
- int unspecified_bits = 0;
- VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
- for (i=0; ibody)->param.flags.has_kwrest) {
- const int rest_hash_index = key_num + 1;
- locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
- }
- else {
- if (found != passed_keyword_len) {
- VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
- argument_kw_error(ec, iseq, "unknown", keys);
- }
- }
- if (RB_NIL_P(unspecified_bits_value)) {
- unspecified_bits_value = __builtin_choose_expr( __builtin_constant_p(unspecified_bits), ((VALUE)(unspecified_bits)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(unspecified_bits));
- }
- locals[key_num] = unspecified_bits_value;
-}
-static inline void
-args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals, int kw_flag)
-{
- if (RB_NIL_P(keyword_hash)) {
- keyword_hash = rb_hash_new();
- }
- else if (!(kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
- keyword_hash = rb_hash_dup(keyword_hash);
- }
- locals[0] = keyword_hash;
-}
-static inline void
-args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
-{
- VALUE block_handler = calling->block_handler;
- *locals = rb_vm_bh_to_procval(ec, block_handler);
-}
-struct fill_values_arg {
- VALUE *keys;
- VALUE *vals;
- int argc;
-};
-static int
-fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
-{
- struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
- int i = arg->argc++;
- arg->keys[i] = (VALUE)key;
- arg->vals[i] = (VALUE)val;
- return ST_CONTINUE;
-}
-static inline int
-ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq, unsigned int * kw_flag, VALUE * converted_keyword_hash)
-{
- if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) {
- keyword_hash = rb_to_hash_type(keyword_hash);
- }
- if (!(*kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit)) &&
- (((iseq)->body)->param.flags.has_kwrest ||
- ((iseq)->body)->param.flags.ruby2_keywords)) {
- *kw_flag |= (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- keyword_hash = rb_hash_dup(keyword_hash);
- }
- *converted_keyword_hash = keyword_hash;
- return !(((iseq)->body)->param.flags.has_kw) &&
- !(((iseq)->body)->param.flags.has_kwrest) &&
- RHASH_EMPTY_P(keyword_hash);
-}
-COLDFUNC static int
-setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
- struct rb_calling_info *const calling,
- const struct rb_callinfo *ci,
- VALUE * const locals, const enum arg_setup_type arg_setup_type) {
- const int min_argc = ((iseq)->body)->param.lead_num + ((iseq)->body)->param.post_num;
- const int max_argc = (((iseq)->body)->param.flags.has_rest == 0) ? min_argc + ((iseq)->body)->param.opt_num : (-1);
- int given_argc;
- unsigned int kw_flag = vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- int opt_pc = 0, allow_autosplat = !kw_flag;
- struct args_info args_body, *args;
- VALUE keyword_hash = ((VALUE)RUBY_Qnil);
- VALUE * const orig_sp = ec->cfp->sp;
- unsigned int i;
- VALUE flag_keyword_hash = 0;
- VALUE splat_flagged_keyword_hash = 0;
- VALUE converted_keyword_hash = 0;
- VALUE rest_last = 0;
- ;
- for (i=calling->argc; i<((iseq)->body)->param.size; i++) {
- locals[i] = ((VALUE)RUBY_Qnil);
- }
- ec->cfp->sp = &locals[i];
- args = &args_body;
- given_argc = args->argc = calling->argc;
- args->argv = locals;
- args->rest_dupped = 0;
- if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
- args->kw_arg = vm_ci_kwarg(ci);
- if (((iseq)->body)->param.flags.has_kw) {
- int kw_len = args->kw_arg->keyword_len;
- args->kw_argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len))));
- args->argc -= kw_len;
- given_argc -= kw_len;
- ruby_nonempty_memcpy((args->kw_argv), (locals + args->argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len)));
- }
- else {
- args->kw_argv = ((void*)0);
- given_argc = args_kw_argv_to_hash(args);
- kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- }
- }
- else {
- args->kw_arg = ((void*)0);
- args->kw_argv = ((void*)0);
- }
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
- int len;
- args->rest = locals[--args->argc];
- args->rest_index = 0;
- len = RARRAY_LENINT(args->rest);
- given_argc += len - 1;
- rest_last = RARRAY_AREF(args->rest, len - 1);
- if (!kw_flag && len > 0) {
- if ((__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((rest_last), (RUBY_T_HASH)) : (RB_TYPE_P)((rest_last), (RUBY_T_HASH))) &&
- (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
- splat_flagged_keyword_hash = rest_last;
- rest_last = rb_hash_dup(rest_last);
- kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- }
- else {
- rest_last = 0;
- }
- }
- if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
- if (ignore_keyword_hash_p(rest_last, iseq, &kw_flag, &converted_keyword_hash)) {
- arg_rest_dup(args);
- rb_ary_pop(args->rest);
- given_argc--;
- kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- }
- else {
- if (rest_last != converted_keyword_hash) {
- rest_last = converted_keyword_hash;
- arg_rest_dup(args);
- RARRAY_ASET(args->rest, len - 1, rest_last);
- }
- if (((iseq)->body)->param.flags.ruby2_keywords && rest_last) {
- flag_keyword_hash = rest_last;
- }
- else if (((iseq)->body)->param.flags.has_kw || ((iseq)->body)->param.flags.has_kwrest) {
- arg_rest_dup(args);
- rb_ary_pop(args->rest);
- given_argc--;
- keyword_hash = rest_last;
- }
- }
- }
- }
- else {
- if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
- VALUE last_arg = args->argv[args->argc-1];
- if (ignore_keyword_hash_p(last_arg, iseq, &kw_flag, &converted_keyword_hash)) {
- args->argc--;
- given_argc--;
- kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- }
- else {
- if (last_arg != converted_keyword_hash) {
- last_arg = converted_keyword_hash;
- args->argv[args->argc-1] = last_arg;
- }
- if (((iseq)->body)->param.flags.ruby2_keywords) {
- flag_keyword_hash = last_arg;
- }
- else if (((iseq)->body)->param.flags.has_kw || ((iseq)->body)->param.flags.has_kwrest) {
- args->argc--;
- given_argc--;
- keyword_hash = last_arg;
- }
- }
- }
- args->rest = ((VALUE)RUBY_Qfalse);
- }
- if (flag_keyword_hash && (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((flag_keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((flag_keyword_hash), (RUBY_T_HASH)))) {
- ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
- }
- if (kw_flag && ((iseq)->body)->param.flags.accepts_no_kwarg) {
- rb_raise(rb_eArgError, "no keywords accepted");
- }
- switch (arg_setup_type) {
- case arg_setup_method:
- break;
- case arg_setup_block:
- if (given_argc == (RB_NIL_P(keyword_hash) ? 1 : 2) &&
- allow_autosplat &&
- (min_argc > 0 || ((iseq)->body)->param.opt_num > 1) &&
- !((iseq)->body)->param.flags.ambiguous_param0 &&
- !((((iseq)->body)->param.flags.has_kw ||
- ((iseq)->body)->param.flags.has_kwrest)
- && max_argc == 1) &&
- args_check_block_arg0(args)) {
- given_argc = RARRAY_LENINT(args->rest);
- }
- break;
- }
- if (given_argc < min_argc) {
- if (arg_setup_type == arg_setup_block) {
- do { __extension__ _Static_assert(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((ec->cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((ec->cfp)->sp)[((min_argc))]; if ((__builtin_expect(!!(((ec->cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- given_argc = min_argc;
- args_extend(args, min_argc);
- }
- else {
- argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
- }
- }
- if (given_argc > max_argc && max_argc != (-1)) {
- if (arg_setup_type == arg_setup_block) {
- args_reduce(args, given_argc - max_argc);
- given_argc = max_argc;
- }
- else {
- argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
- }
- }
- if (((iseq)->body)->param.flags.has_lead) {
- args_setup_lead_parameters(args, ((iseq)->body)->param.lead_num, locals + 0);
- }
- if (((iseq)->body)->param.flags.has_rest || ((iseq)->body)->param.flags.has_post){
- args_copy(args);
- }
- if (((iseq)->body)->param.flags.has_post) {
- args_setup_post_parameters(args, ((iseq)->body)->param.post_num, locals + ((iseq)->body)->param.post_start);
- }
- if (((iseq)->body)->param.flags.has_opt) {
- int opt = args_setup_opt_parameters(args, ((iseq)->body)->param.opt_num, locals + ((iseq)->body)->param.lead_num);
- opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- }
- if (((iseq)->body)->param.flags.has_rest) {
- args_setup_rest_parameter(args, locals + ((iseq)->body)->param.rest_start);
- VALUE ary = *(locals + ((iseq)->body)->param.rest_start);
- VALUE index = rb_array_len(ary) - 1;
- if (splat_flagged_keyword_hash &&
- !((iseq)->body)->param.flags.ruby2_keywords &&
- !((iseq)->body)->param.flags.has_kw &&
- !((iseq)->body)->param.flags.has_kwrest &&
- RARRAY_AREF(ary, index) == splat_flagged_keyword_hash) {
- ((struct RHash *)rest_last)->basic.flags &= ~RHASH_PASS_AS_KEYWORDS;
- RARRAY_ASET(ary, index, rest_last);
- }
- }
- if (((iseq)->body)->param.flags.has_kw) {
- VALUE * const klocals = locals + ((iseq)->body)->param.keyword->bits_start - ((iseq)->body)->param.keyword->num;
- if (args->kw_argv != ((void*)0)) {
- const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
- args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
- }
- else if (!RB_NIL_P(keyword_hash)) {
- int kw_len = rb_long2int_inline(RHASH_SIZE(keyword_hash));
- struct fill_values_arg arg;
- arg.keys = args->kw_argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len * 2))));
- arg.vals = arg.keys + kw_len;
- arg.argc = 0;
- rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
- ((void)0);
- args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
- }
- else {
- ((void)0);
- args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals);
- }
- }
- else if (((iseq)->body)->param.flags.has_kwrest) {
- args_setup_kw_rest_parameter(keyword_hash, locals + ((iseq)->body)->param.keyword->rest_start, kw_flag);
- }
- else if (!RB_NIL_P(keyword_hash) && RHASH_SIZE(keyword_hash) > 0 && arg_setup_type == arg_setup_method) {
- argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
- }
- if (((iseq)->body)->param.flags.has_block) {
- if (((iseq)->body)->local_iseq == iseq) {
- }
- else {
- args_setup_block_parameter(ec, calling, locals + ((iseq)->body)->param.block_start);
- }
- }
- ec->cfp->sp = orig_sp;
- return opt_pc;
-}
-static void
-raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
-{
- VALUE at;
- if (iseq) {
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
- 0 , ((VALUE)RUBY_Qfalse) ,
- ((iseq)->body)->iseq_encoded,
- ec->cfp->sp, 0, 0 );
- at = rb_ec_backtrace_object(ec);
- rb_backtrace_use_iseq_first_lineno_for_last_location(at);
- rb_vm_pop_frame(ec);
- }
- else {
- at = rb_ec_backtrace_object(ec);
- }
- rb_ivar_set(exc, idBt_locations, at);
- rb_exc_set_backtrace(exc, at);
- rb_exc_raise(exc);
-}
-static void
-argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
-{
- VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
- if (((iseq)->body)->param.flags.has_kw) {
- const struct rb_iseq_param_keyword *const kw = ((iseq)->body)->param.keyword;
- const ID *keywords = kw->table;
- int req_key_num = kw->required_num;
- if (req_key_num > 0) {
- static const char required[] = "; required keywords";
- VALUE mesg = rb_attr_get(exc, idMesg);
- rb_str_resize(mesg, RSTRING_LEN(mesg)-1);
- rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
- ((__builtin_constant_p(":") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (":")));
- do {
- ((__builtin_constant_p(" ") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (" ")));
- rb_str_append(mesg, rb_id2str(*keywords++));
- ((__builtin_constant_p(",") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (",")));
- } while (--req_key_num);
- RSTRING_PTR(mesg)[RSTRING_LEN(mesg)-1] = ')';
- }
- }
- raise_argument_error(ec, iseq, exc);
-}
-static void
-argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
-{
- raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
-}
-static inline void
-vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- int argc = calling->argc;
- VALUE *argv = cfp->sp - argc;
- VALUE ary = argv[argc-1];
- ;
- cfp->sp--;
- if (!RB_NIL_P(ary)) {
- const VALUE *ptr = rb_array_const_ptr_transient(ary);
- long len = rb_array_len(ary), i;
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((len))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i = 0; i < len; i++) {
- *cfp->sp++ = ptr[i];
- }
- calling->argc += i - 1;
- }
-}
-static inline void
-vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci)
-{
- const VALUE *const passed_keywords = vm_ci_kwarg(ci)->keywords;
- const int kw_len = vm_ci_kwarg(ci)->keyword_len;
- const VALUE h = rb_hash_new_with_size(kw_len);
- VALUE *sp = cfp->sp;
- int i;
- for (i=0; isp -= kw_len - 1;
- calling->argc -= kw_len - 1;
- calling->kw_splat = 1;
-}
-static VALUE
-vm_to_proc(VALUE proc)
-{
- if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
- VALUE b;
- const rb_callable_method_entry_t *me =
- rb_callable_method_entry_with_refinements(rb_class_of(proc), idTo_proc, ((void*)0));
- if (me) {
- b = rb_vm_call0(rb_current_execution_context(1), proc, idTo_proc, 0, ((void*)0), me, 0);
- }
- else {
- b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc);
- }
- if (RB_NIL_P(b) || !rb_obj_is_proc(b)) {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (expected Proc)",
- rb_obj_classname(proc));
- }
- return b;
- }
- else {
- return proc;
- }
-}
-static VALUE
-refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
-{
- VALUE obj;
- ID mid;
- const rb_callable_method_entry_t *me = 0;
- rb_execution_context_t *ec;
- const VALUE symbol = RARRAY_AREF(callback_arg, 0);
- const VALUE refinements = RARRAY_AREF(callback_arg, 1);
- int kw_splat = rb_keyword_given_p();
- VALUE klass;
- if (argc-- < 1) {
- rb_raise(rb_eArgError, "no receiver given");
- }
- obj = *argv++;
- mid = rb_sym2id(symbol);
- for (klass = rb_class_of(obj); klass; klass = RCLASS_SUPER(klass)) {
- me = rb_callable_method_entry(klass, mid);
- if (me) {
- me = rb_resolve_refined_method_callable(refinements, me);
- if (me) break;
- }
- }
- ec = rb_current_execution_context(1);
- if (!RB_NIL_P(blockarg)) {
- vm_passed_block_handler_set(ec, blockarg);
- }
- if (!me) {
- return method_missing(ec, obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
- }
- return rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
-}
-static VALUE
-vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- const struct rb_callinfo *ci, const rb_iseq_t *blockiseq, const int is_super)
-{
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
- VALUE block_code = *(--reg_cfp->sp);
- if (RB_NIL_P(block_code)) {
- return 0;
- }
- else if (block_code == rb_block_param_proxy) {
- ((void)0);
- VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
- reg_cfp->block_code = (const void *) handler;
- return handler;
- }
- else if (RB_SYMBOL_P(block_code) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) {
- const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
- if (cref && !RB_NIL_P(cref->refinements)) {
- VALUE ref = cref->refinements;
- VALUE func = rb_hash_lookup(ref, block_code);
- if (RB_NIL_P(func)) {
- VALUE callback_arg = rb_ary_hidden_new(2);
- rb_ary_push(callback_arg, block_code);
- rb_ary_push(callback_arg, ref);
- RB_OBJ_FREEZE_RAW(callback_arg);
- func = rb_func_lambda_new(refine_sym_proc_call, callback_arg, 1, (-1));
- rb_hash_aset(ref, block_code, func);
- }
- block_code = func;
- }
- return block_code;
- }
- else {
- return vm_to_proc(block_code);
- }
- }
- else if (blockiseq != ((void*)0)) {
- struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
- captured->code.iseq = blockiseq;
- return VM_BH_FROM_ISEQ_BLOCK(captured);
- }
- else {
- if (is_super) {
- return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
- }
- else {
- return 0;
- }
- }
-}
-
-static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc, int param_size, int local_size);
-__attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size);
-static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc);
-static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static vm_call_handler vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size);
-static VALUE
-vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static _Bool
-rb_simple_iseq_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 0 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 0 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.accepts_no_kwarg == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}static inline
-__attribute__ ((__visibility__("default"))) _Bool
-rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 1 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 0 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.accepts_no_kwarg == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}static inline
-__attribute__ ((__visibility__("default"))) _Bool
-rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 0 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 1 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}
-static _Bool
-rb_splat_or_kwargs_p(const struct rb_callinfo *__restrict__ ci)
-{
- return (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)));
-}
-static inline void
-CALLER_SETUP_ARG(struct rb_control_frame_struct *__restrict__ cfp,
- struct rb_calling_info *__restrict__ calling,
- const struct rb_callinfo *__restrict__ ci)
-{
- if ((__builtin_expect(!!((vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
- VALUE final_hash;
- vm_caller_setup_arg_splat(cfp, calling);
- if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
- calling->argc > 0 &&
- (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH)) : (RB_TYPE_P)(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH))) &&
- (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
- *(cfp->sp - 1) = rb_hash_dup(final_hash);
- calling->kw_splat = 1;
- }
- }
- if ((__builtin_expect(!!((vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)))), 0))) {
- if ((vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit))) {
- vm_caller_setup_arg_kw(cfp, calling, ci);
- }
- else {
- VALUE keyword_hash = cfp->sp[-1];
- if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) {
- cfp->sp[-1] = rb_hash_dup(rb_to_hash_type(keyword_hash));
- }
- else if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
- cfp->sp[-1] = rb_hash_dup(keyword_hash);
- }
- }
- }
-}
-static inline void
-CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *__restrict__ cfp,
- struct rb_calling_info *__restrict__ calling,
- const struct rb_callinfo *__restrict__ ci)
-{
- if ((__builtin_expect(!!(calling->kw_splat), 0))) {
- if (RHASH_EMPTY_P(cfp->sp[-1])) {
- cfp->sp--;
- calling->argc--;
- calling->kw_splat = 0;
- }
- }
-}
-static VALUE
-vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt = calling->argc - lead_num;
- const int opt_num = ((iseq)->body)->param.opt_num;
- const int opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- const int param = ((iseq)->body)->param.size;
- const int local = ((iseq)->body)->local_table_size;
- const int delta = opt_num - opt;
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param - delta, local);
-}
-static VALUE
-vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt = calling->argc - lead_num;
- const int opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- ((void)0);
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
-}
-static void
-args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
- VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
- VALUE *const locals);
-static VALUE
-vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- ((void)0);
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
- const int ci_kw_len = kw_arg->keyword_len;
- const VALUE * const ci_keywords = kw_arg->keywords;
- VALUE *argv = cfp->sp - calling->argc;
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- const int lead_num = ((iseq)->body)->param.lead_num;
- VALUE * const ci_kws = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
- ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
- args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static VALUE
-vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *__attribute__ ((__unused__)) ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- ((void)0);
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- VALUE * const argv = cfp->sp - calling->argc;
- VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
- int i;
- for (i=0; inum; i++) {
- klocals[i] = kw_param->default_values[i];
- }
- klocals[i] = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static inline int
-vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
- const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- _Bool cacheable_ci = vm_ci_markable(ci);
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
- if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
- rb_control_frame_t *cfp = ec->cfp;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- if (calling->argc != ((iseq)->body)->param.lead_num) {
- argument_arity_error(ec, iseq, calling->argc, ((iseq)->body)->param.lead_num, ((iseq)->body)->param.lead_num);
- }
- ((void)0);
- ((void)0);
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), cacheable_ci && vm_call_iseq_optimizable_p(ci, cc));
- return 0;
- }
- else if (rb_iseq_only_optparam_p(iseq)) {
- rb_control_frame_t *cfp = ec->cfp;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt_num = ((iseq)->body)->param.opt_num;
- const int argc = calling->argc;
- const int opt = argc - lead_num;
- if (opt < 0 || opt > opt_num) {
- argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num);
- }
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
- !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- else {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
- !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- ((void)0);
- for (int i=argc; ibody)->param.opt_table[opt];
- }
- else if (rb_iseq_only_kwparam_p(iseq) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int argc = calling->argc;
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) {
- const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
- if (argc - kw_arg->keyword_len == lead_num) {
- const int ci_kw_len = kw_arg->keyword_len;
- const VALUE * const ci_keywords = kw_arg->keywords;
- VALUE * const ci_kws = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
- ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
- cacheable_ci && vm_call_cacheable(ci, cc));
- return 0;
- }
- }
- else if (argc == lead_num) {
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals);
- if (klocals[kw_param->num] == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0))) {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- return 0;
- }
- }
- }
- return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
- ((void)0);
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int param_size = ((iseq)->body)->param.size;
- const int local_size = ((iseq)->body)->local_table_size;
- const int opt_pc = vm_callee_setup_arg(ec, calling, def_iseq_ptr(vm_cc_cme(cc)->def), cfp->sp - calling->argc, param_size, local_size);
- return vm_call_iseq_setup_2(ec, cfp, calling, opt_pc, param_size, local_size);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
- int opt_pc, int param_size, int local_size) {
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param_size, local_size);
- }
- else {
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
- }
-}
-static inline VALUE
-vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me,
- int opt_pc, int param_size, int local_size)
-{
- const rb_iseq_t *iseq = def_iseq_ptr(me->def);
- VALUE *argv = cfp->sp - calling->argc;
- VALUE *sp = argv + param_size;
- cfp->sp = argv - 1 ;
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
- calling->block_handler, (VALUE)me,
- ((iseq)->body)->iseq_encoded + opt_pc, sp,
- local_size - param_size,
- ((iseq)->body)->stack_max);
- return ((VALUE)RUBY_Qundef);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc) {
- const struct rb_callcache *cc = calling->cc;
- unsigned int i;
- VALUE *argv = cfp->sp - calling->argc;
- const rb_callable_method_entry_t *me = vm_cc_cme(cc);
- const rb_iseq_t *iseq = def_iseq_ptr(me->def);
- VALUE *src_argv = argv;
- VALUE *sp_orig, *sp;
- VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
- if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
- struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
- const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
- dst_captured->code.val = src_captured->code.val;
- if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
- calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
- }
- else {
- calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
- }
- }
- vm_pop_frame(ec, cfp, cfp->ep);
- cfp = ec->cfp;
- sp_orig = sp = cfp->sp;
- sp[0] = calling->recv;
- sp++;
- for (i=0; i < ((iseq)->body)->param.size; i++) {
- *sp++ = src_argv[i];
- }
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
- calling->recv, calling->block_handler, (VALUE)me,
- ((iseq)->body)->iseq_encoded + opt_pc, sp,
- ((iseq)->body)->local_table_size - ((iseq)->body)->param.size,
- ((iseq)->body)->stack_max);
- cfp->sp = sp_orig;
- return ((VALUE)RUBY_Qundef);
-}
-static void
-ractor_unsafe_check(void)
-{
- if (!rb_ractor_main_p()) {
- rb_raise(rb_eRactorUnsafeError, "ractor unsafe method called from not main ractor");
- }
-}
-static VALUE
-call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, rb_ary_new_from_values(argc, argv));
-}
-static VALUE
-call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(int, const VALUE *, VALUE) = (VALUE(*)(int, const VALUE *, VALUE))func;
- return (*f)(argc, argv, recv);
-}
-static VALUE
-call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
- return (*f)(recv);
-}
-static VALUE
-call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, argv[0]);
-}
-static VALUE
-call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1]);
-}
-static VALUE
-call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2]);
-}
-static VALUE
-call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-static VALUE
-ractor_safe_call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, rb_ary_new_from_values(argc, argv));
-}
-static VALUE
-ractor_safe_call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(int, const VALUE *, VALUE) = (VALUE(*)(int, const VALUE *, VALUE))func;
- return (*f)(argc, argv, recv);
-}
-static VALUE
-ractor_safe_call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
- return (*f)(recv);
-}
-static VALUE
-ractor_safe_call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, argv[0]);
-}
-static VALUE
-ractor_safe_call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1]);
-}
-static VALUE
-ractor_safe_call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2]);
-}
-static VALUE
-ractor_safe_call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-ractor_safe_call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-ractor_safe_call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-ractor_safe_call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-ractor_safe_call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-ractor_safe_call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-ractor_safe_call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-ractor_safe_call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-ractor_safe_call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-ractor_safe_call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-ractor_safe_call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-ractor_safe_call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-static inline int
-vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
-{
- const int ov_flags = RAISED_STACKOVERFLOW;
- if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
- if ((((ec)->raised_flag & (ov_flags)) != 0)) {
- ((ec)->raised_flag &= ~(ov_flags));
- return 1;
- }
- return 0;
-}
-static inline
-const rb_method_cfunc_t *
-vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
-{
- return __extension__({
- ;
- ; __typeof__(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc);
- ; unaligned_member_access_result; });
-}
-static VALUE
-vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- VALUE val;
- const rb_callable_method_entry_t *me = vm_cc_cme(cc);
- const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
- int len = cfunc->argc;
- VALUE recv = calling->recv;
- VALUE block_handler = calling->block_handler;
- VALUE frame_type = VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL;
- int argc = calling->argc;
- int orig_argc = argc;
- if ((__builtin_expect(!!(calling->kw_splat), 0))) {
- frame_type |= VM_FRAME_FLAG_CFRAME_KW;
- }
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
- vm_push_frame(ec, ((void*)0), frame_type, recv,
- block_handler, (VALUE)me,
- 0, ec->cfp->sp, 0, 0);
- if (len >= 0) rb_check_arity(argc, len, len);
- reg_cfp->sp -= orig_argc + 1;
- val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
- ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)));
- rb_vm_pop_frame(ec);
- do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, val, 0); } } while (0);
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- return val;
-}
-static VALUE
-vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- ((void)0);
- CALLER_SETUP_ARG(reg_cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
- CC_SET_FASTPATH(calling->cc, vm_call_cfunc_with_frame, !rb_splat_or_kwargs_p(ci) && !calling->kw_splat);
- return vm_call_cfunc_with_frame(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- cfp->sp -= 1;
- VALUE ivar = vm_getivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, ((void*)0), ((void*)0), cc, 1);
- return ivar;
-}
-static VALUE
-vm_call_attrset_direct(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_callcache *cc, VALUE obj)
-{
- ((void)0);
- VALUE val = *(cfp->sp - 1);
- cfp->sp -= 2;
- attr_index_t index = vm_cc_attr_index(cc);
- shape_id_t dest_shape_id = vm_cc_attr_index_dest_shape_id(cc);
- ID id = vm_cc_cme(cc)->def->body.attr.id;
- do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
- VALUE res = vm_setivar(obj, id, val, dest_shape_id, index);
- if (RB_UNDEF_P(res)) {
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- {
- res = vm_setivar_default(obj, id, val, dest_shape_id, index);
- if (!RB_UNDEF_P(res)) {
- return res;
- }
- }
- }
- res = vm_setivar_slowpath_attr(obj, id, val, cc);
- }
- return res;
-}
-static VALUE
-vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- return vm_call_attrset_direct(ec, cfp, calling->cc, calling->recv);
-}static inline
-_Bool
-rb_vm_call_ivar_attrset_p(const vm_call_handler ch)
-{
- return (ch == vm_call_ivar || ch == vm_call_attrset);
-}
-static inline VALUE
-vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const VALUE *argv)
-{
- rb_proc_t *proc;
- VALUE val;
- const struct rb_callcache *cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- VALUE procv = cme->def->body.bmethod.proc;
- if (!RB_FL_TEST_RAW((procv), RUBY_FL_SHAREABLE) &&
- cme->def->body.bmethod.defined_ractor != rb_ractor_self(rb_ec_ractor_ptr(ec))) {
- rb_raise(rb_eRuntimeError, "defined with an un-shareable Proc in a different Ractor");
- }
- (((proc)) = (rb_proc_t*)((struct RData *)(((procv))))->data);
- val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, vm_cc_cme(cc));
- return val;
-}
-static VALUE
-vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE *argv;
- int argc;
- const struct rb_callinfo *ci = calling->ci;
- CALLER_SETUP_ARG(cfp, calling, ci);
- argc = calling->argc;
- argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))));
- ruby_nonempty_memcpy((argv), (cfp->sp - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- cfp->sp += - argc - 1;
- return vm_call_bmethod_body(ec, calling, argv);
-}static inline
-__attribute__ ((__visibility__("default"))) VALUE
-rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
-{
- VALUE klass = current_class;
- if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) && RB_FL_TEST(klass, ((VALUE)RUBY_FL_USER0)) &&
- (__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((RBASIC_CLASS(klass)), (RUBY_T_CLASS)) : (RB_TYPE_P)((RBASIC_CLASS(klass)), (RUBY_T_CLASS)))) {
- klass = RBASIC_CLASS(klass);
- }
- while (RB_TEST(klass)) {
- VALUE owner = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) ? RBASIC_CLASS(klass) : klass;
- if (owner == target_owner) {
- return klass;
- }
- klass = RCLASS_SUPER(klass);
- }
- return current_class;
-}
-static const rb_callable_method_entry_t *
-aliased_callable_method_entry(const rb_callable_method_entry_t *me)
-{
- const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
- const rb_callable_method_entry_t *cme;
- if (orig_me->defined_class == 0) {
- VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner);
- ((void)0);
- cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
- if (me->def->alias_count + me->def->complemented_count == 0) {
- rb_obj_write((VALUE)(me), __extension__({
- ;
- ; __typeof__((VALUE *)(&me->def->body.alias.original_me)) unaligned_member_access_result = ((VALUE *)(&me->def->body.alias.original_me));
- ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 3417);
- }
- else {
- rb_method_definition_t *def =
- rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id);
- rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
- }
- }
- else {
- cme = (const rb_callable_method_entry_t *)orig_me;
- }
- ((void)0);
- return cme;
-}static inline
-const rb_callable_method_entry_t *
-rb_aliased_callable_method_entry(const rb_callable_method_entry_t *me)
-{
- return aliased_callable_method_entry(me);
-}
-static VALUE
-vm_call_alias(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = aliased_callable_method_entry(vm_cc_cme(calling->cc)), .call_ = vm_call_general, .aux_ = {{0}}, };
- return vm_call_method_each_type(ec, cfp, calling);
-}
-static enum method_missing_reason
-ci_missing_reason(const struct rb_callinfo *ci)
-{
- enum method_missing_reason stat = MISSING_NOENTRY;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
- return stat;
-}
-static VALUE vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE
-vm_call_symbol(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE symbol, int flags)
-{
- __builtin_assume(calling->argc >= 0);
- enum method_missing_reason missing_reason = MISSING_NOENTRY;
- int argc = calling->argc;
- VALUE recv = calling->recv;
- VALUE klass = rb_class_of(recv);
- ID mid = rb_check_id(&symbol);
- flags |= (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
- if ((__builtin_expect(!!(! mid), 0))) {
- mid = idMethodMissing;
- missing_reason = ci_missing_reason(ci);
- ec->method_missing_reason = missing_reason;
- int i = argc;
- do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- (((reg_cfp)->sp) += (((1))));
- __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), (&(*(((((reg_cfp)->sp)))-(i)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), 0));
- argc = ++calling->argc;
- if (rb_method_basic_definition_p(klass, idMethodMissing)) {
- (*(((((reg_cfp)->sp)))-(i)-1)) = symbol;
- int priv = vm_ci_flag(ci) & ((0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_VCALL_bit));
- const VALUE *argv = (((((reg_cfp)->sp)))-(argc));
- VALUE exc = rb_make_no_method_exception(
- rb_eNoMethodError, 0, recv, argc, argv, priv);
- rb_exc_raise(exc);
- }
- else {
- (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(symbol);
- }
- }
- calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = mid, .flag = flags, .argc = argc, .kwarg = vm_ci_kwarg(ci), };
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = klass, .cme_ = rb_callable_method_entry_with_refinements(klass, mid, ((void*)0)), .call_ = vm_call_general, .aux_ = { .method_missing_reason = missing_reason }, };
- if (flags & (0x01 << VM_CALL_FCALL_bit)) {
- return vm_call_method(ec, reg_cfp, calling);
- }
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- if (vm_cc_cme(cc) != ((void*)0)) {
- switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PUBLIC:
- return vm_call_method_each_type(ec, reg_cfp, calling);
- case METHOD_VISI_PRIVATE:
- vm_cc_method_missing_reason_set(cc, MISSING_PRIVATE);
- break;
- case METHOD_VISI_PROTECTED:
- vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
- break;
- default:
- __builtin_unreachable();
- }
- return vm_call_method_missing(ec, reg_cfp, calling);
- }
- return vm_call_method_nome(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- int i;
- VALUE sym;
- CALLER_SETUP_ARG(reg_cfp, calling, calling->ci);
- i = calling->argc - 1;
- if (calling->argc == 0) {
- rb_raise(rb_eArgError, "no method name given");
- }
- else {
- sym = (*(((((reg_cfp)->sp)))-(i)-1));
- if (i > 0) {
- __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(i)-1))), 0));
- }
- calling->argc -= 1;
- (((reg_cfp)->sp) -= (((1))));
- return vm_call_symbol(ec, reg_cfp, calling, calling->ci, sym, (0x01 << VM_CALL_FCALL_bit));
- }
-}
-static VALUE
-vm_call_method_missing_body(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling,
- const struct rb_callinfo *orig_ci, enum method_missing_reason reason)
-{
- ((void)0);
- VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
- unsigned int argc;
- CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
- argc = calling->argc + 1;
- unsigned int flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
- calling->argc = argc;
- do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- ;
- if (argc > 1) {
- __builtin___memmove_chk ((argv+1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc-1)), __builtin_object_size ((argv+1), 0));
- }
- argv[0] = rb_id2sym(vm_ci_mid(orig_ci));
- (((reg_cfp)->sp) += (((1))));
- ec->method_missing_reason = reason;
- calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = idMethodMissing, .flag = flag, .argc = argc, .kwarg = vm_ci_kwarg(orig_ci), };
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = rb_callable_method_entry_without_refinements(rb_class_of(calling->recv), idMethodMissing, ((void*)0)), .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- return vm_call_method(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- return vm_call_method_missing_body(ec, reg_cfp, calling, calling->ci, vm_cc_cmethod_missing_reason(calling->cc));
-}
-static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
-static VALUE
-vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, VALUE klass)
-{
- klass = RCLASS_SUPER(klass);
- const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, vm_ci_mid(calling->ci)) : ((void*)0);
- if (cme == ((void*)0)) {
- return vm_call_method_nome(ec, cfp, calling);
- }
- if (cme->def->type == VM_METHOD_TYPE_REFINED &&
- cme->def->body.refined.orig_me) {
- cme = refined_method_callable_without_refinement(cme);
- }
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = cme, .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- return vm_call_method_each_type(ec, cfp, calling);
-}
-static inline VALUE
-find_refinement(VALUE refinements, VALUE klass)
-{
- if (RB_NIL_P(refinements)) {
- return ((VALUE)RUBY_Qnil);
- }
- return rb_hash_lookup(refinements, klass);
-}
-__attribute__((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
-static rb_control_frame_t *
-current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
-{
- rb_control_frame_t *top_cfp = cfp;
- if (cfp->iseq && ((cfp->iseq)->body)->type == ISEQ_TYPE_BLOCK) {
- const rb_iseq_t *local_iseq = ((cfp->iseq)->body)->local_iseq;
- do {
- cfp = ((cfp)+1);
- if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
- return top_cfp;
- }
- } while (cfp->iseq != local_iseq);
- }
- return cfp;
-}
-static const rb_callable_method_entry_t *
-refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
-{
- const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
- const rb_callable_method_entry_t *cme;
- if (orig_me->defined_class == 0) {
- cme = ((void*)0);
- rb_notimplement();
- }
- else {
- cme = (const rb_callable_method_entry_t *)orig_me;
- }
- ((void)0);
- if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
- cme = ((void*)0);
- }
- return cme;
-}
-static const rb_callable_method_entry_t *
-search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ID mid = vm_ci_mid(calling->ci);
- const rb_cref_t *cref = vm_get_cref(cfp->ep);
- const struct rb_callcache * const cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- for (; cref; cref = CREF_NEXT(cref)) {
- const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), vm_cc_cme(cc)->owner);
- if (RB_NIL_P(refinement)) continue;
- const rb_callable_method_entry_t *const ref_me =
- rb_callable_method_entry(refinement, mid);
- if (ref_me) {
- if (vm_cc_call(cc) == vm_call_super_method) {
- const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
- const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
- if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
- continue;
- }
- }
- if (cme->def->type != VM_METHOD_TYPE_REFINED ||
- cme->def != ref_me->def) {
- cme = ref_me;
- }
- if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
- return cme;
- }
- }
- else {
- return ((void*)0);
- }
- }
- if (vm_cc_cme(cc)->def->body.refined.orig_me) {
- return refined_method_callable_without_refinement(vm_cc_cme(cc));
- }
- else {
- VALUE klass = RCLASS_SUPER(vm_cc_cme(cc)->defined_class);
- const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, mid) : ((void*)0);
- return cme;
- }
-}
-static VALUE
-vm_call_refined(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- struct rb_callcache *ref_cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = search_refined_method(ec, cfp, calling), .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- if (vm_cc_cme(ref_cc)) {
- calling->cc= ref_cc;
- return vm_call_method(ec, cfp, calling);
- }
- else {
- return vm_call_method_nome(ec, cfp, calling);
- }
-}
-static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, _Bool is_lambda, VALUE block_handler);
-__declspec(noinline) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler);
-static VALUE
-vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler)
-{
- int argc = calling->argc;
- if (argc > 0) __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0));
- (((reg_cfp)->sp) -= (((1))));
- return vm_invoke_block(ec, reg_cfp, calling, ci, 0, block_handler);
-}
-static VALUE
-vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callinfo *ci = calling->ci;
- VALUE procval = calling->recv;
- return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
-}
-static VALUE
-vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
- const struct rb_callinfo *ci = calling->ci;
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
- return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
- }
- else {
- calling->recv = rb_vm_bh_to_procval(ec, block_handler);
- calling->cc = rb_vm_search_method_slowpath(ci, rb_class_of(calling->recv));
- return vm_call_general(ec, reg_cfp, calling);
- }
-}
-static VALUE
-vm_call_opt_struct_aref0(rb_execution_context_t *ec, struct rb_calling_info *calling)
-{
- VALUE recv = calling->recv;
- ((void)0);
- ((void)0);
- ((void)0);
- const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
- return internal_RSTRUCT_GET(recv, off);
-}
-static VALUE
-vm_call_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE ret = vm_call_opt_struct_aref0(ec, calling);
- reg_cfp->sp -= 1;
- return ret;
-}
-static VALUE
-vm_call_opt_struct_aset0(rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE val)
-{
- VALUE recv = calling->recv;
- ((void)0);
- ((void)0);
- ((void)0);
- rb_check_frozen_inline(recv);
- const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
- internal_RSTRUCT_SET(recv, off, val);
- return val;
-}
-static VALUE
-vm_call_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE ret = vm_call_opt_struct_aset0(ec, calling, *(reg_cfp->sp - 1));
- reg_cfp->sp -= 2;
- return ret;
-}
-__declspec(noinline) static VALUE vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, const struct rb_callcache *cc);
-static VALUE
-vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
- const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- switch (vm_cc_cme(cc)->def->body.optimized.type) {
- case OPTIMIZED_METHOD_TYPE_SEND:
- CC_SET_FASTPATH(cc, vm_call_opt_send, 1);
- return vm_call_opt_send(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_CALL:
- CC_SET_FASTPATH(cc, vm_call_opt_call, 1);
- return vm_call_opt_call(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
- CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1);
- return vm_call_opt_block_call(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_STRUCT_AREF:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 0, 0);
- CC_SET_FASTPATH(cc, vm_call_opt_struct_aref, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
- return vm_call_opt_struct_aref(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_STRUCT_ASET:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 1, 1);
- CC_SET_FASTPATH(cc, vm_call_opt_struct_aset, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
- return vm_call_opt_struct_aset(ec, cfp, calling);
- default:
- rb_bug("vm_call_method: unsupported optimized method type (%d)", vm_cc_cme(cc)->def->body.optimized.type);
- }
-}
-COLDFUNC static VALUE
-vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- VALUE v;
- switch (cme->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
- return vm_call_iseq_setup(ec, cfp, calling);
- case VM_METHOD_TYPE_NOTIMPLEMENTED:
- case VM_METHOD_TYPE_CFUNC:
- CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
- return vm_call_cfunc(ec, cfp, calling);
- case VM_METHOD_TYPE_ATTRSET:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 1, 1);
- const unsigned int aset_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KWARG_bit));
- if (vm_cc_markable(cc)) {
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); };
- }
- else {
- cc = &((struct rb_callcache) {
- .flags = RUBY_T_IMEMO |
- (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) |
- ((VALUE)RUBY_FL_FREEZE) |
- ((VALUE)(((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32)) |
- ((VALUE)RUBY_FL_EXIVAR),
- .klass = cc->klass,
- .cme_ = cc->cme_,
- .call_ = cc->call_,
- .aux_ = {
- .attr = {
- .value = (((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32),
- }
- },
- });
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); };
- }
- return v;
- case VM_METHOD_TYPE_IVAR:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 0, 0);
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- const unsigned int ivar_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_ivar(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_ivar, !(vm_ci_flag(ci) & ivar_mask)); v = vm_call_ivar(ec, cfp, calling); };
- return v;
- case VM_METHOD_TYPE_MISSING:
- vm_cc_method_missing_reason_set(cc, 0);
- CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
- return vm_call_method_missing(ec, cfp, calling);
- case VM_METHOD_TYPE_BMETHOD:
- CC_SET_FASTPATH(cc, vm_call_bmethod, 1);
- return vm_call_bmethod(ec, cfp, calling);
- case VM_METHOD_TYPE_ALIAS:
- CC_SET_FASTPATH(cc, vm_call_alias, 1);
- return vm_call_alias(ec, cfp, calling);
- case VM_METHOD_TYPE_OPTIMIZED:
- return vm_call_optimized(ec, cfp, calling, ci, cc);
- case VM_METHOD_TYPE_UNDEF:
- break;
- case VM_METHOD_TYPE_ZSUPER:
- return vm_call_zsuper(ec, cfp, calling, (((rb_classext_t *)((char *)(vm_cc_cme(cc)->defined_class) + sizeof(struct RClass)))->origin_));
- case VM_METHOD_TYPE_REFINED:
- return vm_call_refined(ec, cfp, calling);
- }
- rb_bug("vm_call_method: unsupported method type (%d)", vm_cc_cme(cc)->def->type);
-}
-__declspec(noreturn) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
-static VALUE
-vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const int stat = ci_missing_reason(ci);
- if (vm_ci_mid(ci) == idMethodMissing) {
- rb_control_frame_t *reg_cfp = cfp;
- VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
- vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
- }
- else {
- return vm_call_method_missing_body(ec, cfp, calling, ci, stat);
- }
-}
-static VALUE
-vm_defined_class_for_protected_call(const rb_callable_method_entry_t *me)
-{
- VALUE defined_class = me->defined_class;
- VALUE refined_class = (((rb_classext_t *)((char *)(defined_class) + sizeof(struct RClass)))->refined_class);
- return RB_NIL_P(refined_class) ? defined_class : refined_class;
-}
-static inline VALUE
-vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- if (vm_cc_cme(cc) != ((void*)0)) {
- switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PUBLIC:
- return vm_call_method_each_type(ec, cfp, calling);
- case METHOD_VISI_PRIVATE:
- if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit))) {
- enum method_missing_reason stat = MISSING_PRIVATE;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
- vm_cc_method_missing_reason_set(cc, stat);
- CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
- return vm_call_method_missing(ec, cfp, calling);
- }
- return vm_call_method_each_type(ec, cfp, calling);
- case METHOD_VISI_PROTECTED:
- if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_OPT_SEND_bit) | (0x01 << VM_CALL_FCALL_bit)))) {
- VALUE defined_class = vm_defined_class_for_protected_call(vm_cc_cme(cc));
- if (!rb_obj_is_kind_of(cfp->self, defined_class)) {
- vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
- return vm_call_method_missing(ec, cfp, calling);
- }
- else {
- ((void)0);
- struct rb_callcache cc_on_stack = *cc;
- RB_FL_SET_RAW((VALUE)&cc_on_stack, ((VALUE)RUBY_FL_FREEZE));
- calling->cc = &cc_on_stack;
- return vm_call_method_each_type(ec, cfp, calling);
- }
- }
- return vm_call_method_each_type(ec, cfp, calling);
- default:
- rb_bug("unreachable");
- }
- }
- else {
- return vm_call_method_nome(ec, cfp, calling);
- }
-}
-static VALUE
-vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_method(ec, reg_cfp, calling);
-}static inline
-void
-rb_vm_cc_general(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- *(vm_call_handler *)&cc->call_ = vm_call_general;
-}
-static VALUE
-vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- if (ec == ((void*)0)) rb_bug("unreachable");
- ((void)0);
- return vm_call_method(ec, reg_cfp, calling);
-}
-static inline VALUE
-vm_search_normal_superclass(VALUE klass)
-{
- if (RB_BUILTIN_TYPE(klass) == RUBY_T_ICLASS &&
- (__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((((struct RBasic *)(klass))->klass), (RUBY_T_MODULE)) : (RB_TYPE_P)((((struct RBasic *)(klass))->klass), (RUBY_T_MODULE))) &&
- RB_FL_TEST_RAW(((struct RBasic *)(klass))->klass, RMODULE_IS_REFINEMENT)) {
- klass = ((struct RBasic *)(klass))->klass;
- }
- klass = (((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_);
- return RCLASS_SUPER(klass);
-}
-__declspec(noreturn) static void vm_super_outside(void);
-static void
-vm_super_outside(void)
-{
- rb_raise(rb_eNoMethodError, "super called outside of method");
-}
-static const struct rb_callcache *
-empty_cc_for_super(void)
-{
- return rb_vm_empty_cc_for_super();
-}
-static const struct rb_callcache *
-vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- VALUE current_defined_class;
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
- if (!me) {
- vm_super_outside();
- }
- current_defined_class = vm_defined_class_for_protected_call(me);
- if (RB_BUILTIN_TYPE(current_defined_class) != RUBY_T_MODULE &&
- reg_cfp->iseq != method_entry_iseqptr(me) &&
- !rb_obj_is_kind_of(recv, current_defined_class)) {
- VALUE m = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((current_defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((current_defined_class), (RUBY_T_ICLASS))) ?
- (((rb_classext_t *)((char *)(current_defined_class) + sizeof(struct RClass)))->includer) : current_defined_class;
- if (m) {
- rb_raise(rb_eTypeError,
- "self has wrong type to call super in this context: "
- "%""l""i" "\v"" (expected %""l""i" "\v"")",
- rb_obj_class(recv), m);
- }
- }
- if (me->def->type == VM_METHOD_TYPE_BMETHOD && (vm_ci_flag(cd->ci) & (0x01 << VM_CALL_ZSUPER_bit))) {
- rb_raise(rb_eRuntimeError,
- "implicit argument passing of super from method defined"
- " by define_method() is not supported."
- " Specify all arguments explicitly.");
- }
- ID mid = me->def->original_id;
- cd->ci = vm_ci_new_runtime_(mid, vm_ci_flag(cd->ci), vm_ci_argc(cd->ci), vm_ci_kwarg(cd->ci), "./vm_insnhelper.c", 4186);
- (rb_obj_written((VALUE)(reg_cfp->iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cd->ci), "./vm_insnhelper.c", 4188));
- const struct rb_callcache *cc;
- VALUE klass = vm_search_normal_superclass(me->defined_class);
- if (!klass) {
- cc = vm_cc_new(klass, ((void*)0), vm_call_method_missing);
- rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 4197);
- }
- else {
- cc = vm_search_method_fastpath((VALUE)reg_cfp->iseq, cd, klass);
- const rb_callable_method_entry_t *cached_cme = vm_cc_cme(cc);
- if (cached_cme == ((void*)0)) {
- cd->cc = empty_cc_for_super();
- }
- else if (cached_cme->called_id != mid) {
- const rb_callable_method_entry_t *cme = rb_callable_method_entry(klass, mid);
- if (cme) {
- cc = vm_cc_new(klass, cme, vm_call_super_method);
- rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 4212);
- }
- else {
- cd->cc = cc = empty_cc_for_super();
- }
- }
- else {
- switch (cached_cme->def->type) {
- case VM_METHOD_TYPE_REFINED:
- case VM_METHOD_TYPE_ATTRSET:
- case VM_METHOD_TYPE_IVAR:
- vm_cc_call_set(cc, vm_call_super_method);
- break;
- default:
- break;
- }
- }
- }
- ((void)0);
- return cc;
-}
-static inline int
-block_proc_is_lambda(const VALUE procval)
-{
- rb_proc_t *proc;
- if (procval) {
- (((proc)) = (rb_proc_t*)((struct RData *)(((procval))))->data);
- return proc->is_lambda;
- }
- else {
- return 0;
- }
-}
-static VALUE
-vm_yield_with_cfunc(rb_execution_context_t *ec,
- const struct rb_captured_block *captured,
- VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
- const rb_callable_method_entry_t *me)
-{
- int is_lambda = 0;
- VALUE val, arg, blockarg;
- int frame_flag;
- const struct vm_ifunc *ifunc = captured->code.ifunc;
- if (is_lambda) {
- arg = rb_ary_new_from_values(argc, argv);
- }
- else if (argc == 0) {
- arg = ((VALUE)RUBY_Qnil);
- }
- else {
- arg = argv[0];
- }
- blockarg = rb_vm_bh_to_procval(ec, block_handler);
- frame_flag = VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME | (me ? VM_FRAME_FLAG_BMETHOD : 0);
- if (kw_splat) {
- frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
- }
- vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
- frame_flag,
- self,
- ((VALUE)((captured->ep)) | (0x01)),
- (VALUE)me,
- 0, ec->cfp->sp, 0, 0);
- val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
- rb_vm_pop_frame(ec);
- return val;
-}
-static VALUE
-vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
-{
- return rb_sym_proc_call(rb_sym2id(symbol), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
-}
-static inline int
-vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
-{
- int i;
- long len = rb_array_len(ary);
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((((iseq)->body)->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i=0; ibody)->param.lead_num; i++) {
- argv[i] = RARRAY_AREF(ary, i);
- }
- return i;
-}
-static inline VALUE
-vm_callee_setup_block_arg_arg0_check(VALUE *argv)
-{
- VALUE ary, arg0 = argv[0];
- ary = rb_check_array_type(arg0);
- ((void)0);
- return ary;
-}
-static int
-vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_callinfo *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
-{
- if (rb_simple_iseq_p(iseq)) {
- rb_control_frame_t *cfp = ec->cfp;
- VALUE arg0;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- if (arg_setup_type == arg_setup_block &&
- calling->argc == 1 &&
- ((iseq)->body)->param.flags.has_lead &&
- !((iseq)->body)->param.flags.ambiguous_param0 &&
- !RB_NIL_P(arg0 = vm_callee_setup_block_arg_arg0_check(argv))) {
- calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
- }
- if (calling->argc != ((iseq)->body)->param.lead_num) {
- if (arg_setup_type == arg_setup_block) {
- if (calling->argc < ((iseq)->body)->param.lead_num) {
- int i;
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((((iseq)->body)->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i=calling->argc; i<((iseq)->body)->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
- calling->argc = ((iseq)->body)->param.lead_num;
- }
- else if (calling->argc > ((iseq)->body)->param.lead_num) {
- calling->argc = ((iseq)->body)->param.lead_num;
- }
- }
- else {
- argument_arity_error(ec, iseq, calling->argc, ((iseq)->body)->param.lead_num, ((iseq)->body)->param.lead_num);
- }
- }
- return 0;
- }
- else {
- return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
- }
-}
-static int
-vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, int kw_splat, VALUE block_handler, enum arg_setup_type arg_setup_type)
-{
- struct rb_calling_info calling_entry, *calling;
- calling = &calling_entry;
- calling->argc = argc;
- calling->block_handler = block_handler;
- calling->kw_splat = kw_splat;
- calling->recv = ((VALUE)RUBY_Qundef);
- struct rb_callinfo dummy_ci = (struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = 0, .flag = (kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0), .argc = 0, .kwarg = 0, };
- return vm_callee_setup_block_arg(ec, calling, &dummy_ci, iseq, argv, arg_setup_type);
-}
-static VALUE
-vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
- const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
- const int arg_size = ((iseq)->body)->param.size;
- VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
- int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
- (((reg_cfp)->sp) = (((rsp))));
- vm_push_frame(ec, iseq,
- VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
- captured->self,
- ((VALUE)((captured->ep)) | (0x01)), 0,
- ((iseq)->body)->iseq_encoded + opt_pc,
- rsp + arg_size,
- ((iseq)->body)->local_table_size - arg_size, ((iseq)->body)->stack_max);
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
-{
- if (calling->argc < 1) {
- rb_raise(rb_eArgError, "no receiver given");
- }
- else {
- VALUE symbol = VM_BH_TO_SYMBOL(block_handler);
- CALLER_SETUP_ARG(reg_cfp, calling, ci);
- calling->recv = (*(((((reg_cfp)->sp)))-(--calling->argc)-1));
- return vm_call_symbol(ec, reg_cfp, calling, ci, symbol, 0);
- }
-}
-static VALUE
-vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
-{
- VALUE val;
- int argc;
- const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
- CALLER_SETUP_ARG(ec->cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
- argc = calling->argc;
- val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler, ((void*)0));
- ((((reg_cfp)->sp) -= (((argc)))));
- return val;
-}
-static VALUE
-vm_proc_to_block_handler(VALUE procval)
-{
- const struct rb_block *block = vm_proc_block(procval);
- switch (vm_block_type(block)) {
- case block_type_iseq:
- return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
- case block_type_ifunc:
- return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
- case block_type_symbol:
- return VM_BH_FROM_SYMBOL(block->as.symbol);
- case block_type_proc:
- return VM_BH_FROM_PROC(block->as.proc);
- }
- __builtin_unreachable();
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_invoke_proc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- while (vm_block_handler_type(block_handler) == block_handler_type_proc) {
- VALUE proc = VM_BH_TO_PROC(block_handler);
- is_lambda = block_proc_is_lambda(proc);
- block_handler = vm_proc_to_block_handler(proc);
- }
- return vm_invoke_block(ec, reg_cfp, calling, ci, is_lambda, block_handler);
-}
-static inline VALUE
-vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- VALUE (*func)(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler);
- switch (vm_block_handler_type(block_handler)) {
- case block_handler_type_iseq: func = vm_invoke_iseq_block; break;
- case block_handler_type_ifunc: func = vm_invoke_ifunc_block; break;
- case block_handler_type_proc: func = vm_invoke_proc_block; break;
- case block_handler_type_symbol: func = vm_invoke_symbol_block; break;
- default: rb_bug("vm_invoke_block: unreachable");
- }
- return func(ec, reg_cfp, calling, ci, is_lambda, block_handler);
-}
-static VALUE
-vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
-{
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- struct rb_captured_block *captured;
- if (cfp == 0) {
- rb_bug("vm_make_proc_with_iseq: unreachable");
- }
- captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
- captured->code.iseq = blockiseq;
- return rb_vm_make_proc(ec, captured, rb_cProc);
-}
-static VALUE
-vm_once_exec(VALUE iseq)
-{
- VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
- return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
-}
-static VALUE
-vm_once_clear(VALUE data)
-{
- union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
- is->once.running_thread = ((void*)0);
- return ((VALUE)RUBY_Qnil);
-}
-static _Bool
-check_respond_to_missing(VALUE obj, VALUE v)
-{
- VALUE args[2];
- VALUE r;
- args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
- r = rb_check_funcall(v, idRespond_to_missing, 2, args);
- if (!RB_UNDEF_P(r) && RB_TEST(r)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static _Bool
-vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
-{
- VALUE klass;
- enum defined_type type = (enum defined_type)op_type;
- switch (type) {
- case DEFINED_IVAR:
- return rb_ivar_defined((((((reg_cfp)))->self)), rb_sym2id(obj));
- break;
- case DEFINED_GVAR:
- return rb_gvar_defined(rb_sym2id(obj));
- break;
- case DEFINED_CVAR: {
- const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
- klass = vm_get_cvar_base(cref, (((reg_cfp))), 0);
- return rb_cvar_defined(klass, rb_sym2id(obj));
- break;
- }
- case DEFINED_CONST:
- case DEFINED_CONST_FROM: {
- _Bool allow_nil = type == DEFINED_CONST;
- klass = v;
- return vm_get_ev_const(ec, klass, rb_sym2id(obj), allow_nil, 1);
- break;
- }
- case DEFINED_FUNC:
- klass = rb_class_of(v);
- return rb_ec_obj_respond_to(ec, v, rb_sym2id(obj), 1);
- break;
- case DEFINED_METHOD:{
- VALUE klass = rb_class_of(v);
- const rb_method_entry_t *me = rb_method_entry_with_refinements(klass, rb_sym2id(obj), ((void*)0));
- if (me) {
- switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PRIVATE:
- break;
- case METHOD_VISI_PROTECTED:
- if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
- break;
- }
- case METHOD_VISI_PUBLIC:
- return 1;
- break;
- default:
- rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)));
- }
- }
- else {
- return check_respond_to_missing(obj, v);
- }
- break;
- }
- case DEFINED_YIELD:
- if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
- return 1;
- }
- break;
- case DEFINED_ZSUPER:
- {
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
- if (me) {
- VALUE klass = vm_search_normal_superclass(me->defined_class);
- ID id = me->def->original_id;
- return rb_method_boundp(klass, id, 0);
- }
- }
- break;
- case DEFINED_REF:{
- return vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), RB_FIX2INT(obj)) != ((VALUE)RUBY_Qnil);
- break;
- }
- default:
- rb_bug("unimplemented defined? type (VM)");
- break;
- }
- return 0;
-}static inline
-_Bool
-rb_vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
-{
- return vm_defined(ec, reg_cfp, op_type, obj, v);
-}
-static const VALUE *
-vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
-{
- rb_num_t i;
- const VALUE *ep = reg_ep;
- for (i = 0; i < lv; i++) {
- ep = ((VALUE *)((ep)[(-1)] & ~0x03));
- }
- return ep;
-}
-static VALUE
-vm_get_special_object(const VALUE *const reg_ep,
- enum vm_special_object_type type)
-{
- switch (type) {
- case VM_SPECIAL_OBJECT_VMCORE:
- return rb_mRubyVMFrozenCore;
- case VM_SPECIAL_OBJECT_CBASE:
- return vm_get_cbase(reg_ep);
- case VM_SPECIAL_OBJECT_CONST_BASE:
- return vm_get_const_base(reg_ep);
- default:
- rb_bug("putspecialobject insn: unknown value_type %d", type);
- }
-}
-static VALUE
-vm_concat_array(VALUE ary1, VALUE ary2st)
-{
- const VALUE ary2 = ary2st;
- VALUE tmp1 = rb_check_to_array(ary1);
- VALUE tmp2 = rb_check_to_array(ary2);
- if (RB_NIL_P(tmp1)) {
- tmp1 = rb_ary_new_from_args(1, ary1);
- }
- if (RB_NIL_P(tmp2)) {
- tmp2 = rb_ary_new_from_args(1, ary2);
- }
- if (tmp1 == ary1) {
- tmp1 = rb_ary_dup(ary1);
- }
- return rb_ary_concat(tmp1, tmp2);
-}static inline
-VALUE
-rb_vm_concat_array(VALUE ary1, VALUE ary2st)
-{
- return vm_concat_array(ary1, ary2st);
-}
-static VALUE
-vm_splat_array(VALUE flag, VALUE ary)
-{
- VALUE tmp = rb_check_to_array(ary);
- if (RB_NIL_P(tmp)) {
- return rb_ary_new_from_args(1, ary);
- }
- else if (RB_TEST(flag)) {
- return rb_ary_dup(tmp);
- }
- else {
- return tmp;
- }
-}static inline
-VALUE
-rb_vm_splat_array(VALUE flag, VALUE ary)
-{
- return vm_splat_array(flag, ary);
-}
-static VALUE
-vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
-{
- enum vm_check_match_type type = ((int)flag) & 0x03;
- if (flag & 0x04) {
- long i;
- const long n = rb_array_len(pattern);
- for (i = 0; i < n; i++) {
- VALUE v = RARRAY_AREF(pattern, i);
- VALUE c = check_match(ec, v, target, type);
- if (RB_TEST(c)) {
- return c;
- }
- }
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- return check_match(ec, pattern, target, type);
- }
-}
-static VALUE
-vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
-{
- const VALUE kw_bits = *(ep - bits);
- if (RB_FIXNUM_P(kw_bits)) {
- unsigned int b = (unsigned int)rb_fix2ulong(kw_bits);
- if ((idx < (32-1)) && (b & (0x01 << idx)))
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- ((void)0);
- if (rb_hash_has_key(kw_bits, __builtin_choose_expr( __builtin_constant_p(idx), ((VALUE)(idx)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(idx)))) return ((VALUE)RUBY_Qfalse);
- }
- return ((VALUE)RUBY_Qtrue);
-}
-static void
-vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
-{
- if (0 ||
- 0 ||
- 0 ||
- 0) {
- switch (flag) {
- case 0x0008:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0020:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0010:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0040:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- }
- }
-}
-static VALUE
-vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
-{
- if (!rb_const_defined_at(cbase, id)) {
- return 0;
- }
- else if (((flags) & 0x08)) {
- return rb_public_const_get_at(cbase, id);
- }
- else {
- return rb_const_get_at(cbase, id);
- }
-}
-static VALUE
-vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
-{
- if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS)))) {
- return 0;
- }
- else if (((flags) & 0x10)) {
- VALUE tmp = rb_class_real(RCLASS_SUPER(klass));
- if (tmp != super) {
- rb_raise(rb_eTypeError,
- "superclass mismatch for class %""l""i" "\v""",
- rb_id2str(id));
- }
- else {
- return klass;
- }
- }
- else {
- return klass;
- }
-}
-static VALUE
-vm_check_if_module(ID id, VALUE mod)
-{
- if (!(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((mod), (RUBY_T_MODULE)) : (RB_TYPE_P)((mod), (RUBY_T_MODULE)))) {
- return 0;
- }
- else {
- return mod;
- }
-}
-static VALUE
-declare_under(ID id, VALUE cbase, VALUE c)
-{
- rb_set_class_path_string(c, cbase, rb_id2str(id));
- rb_const_set(cbase, id, c);
- return c;
-}
-static VALUE
-vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
-{
- VALUE s = ((flags) & 0x10) ? super : rb_cObject;
- VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
- rb_define_alloc_func(c, rb_get_alloc_func(c));
- rb_class_inherited(s, c);
- return c;
-}
-static VALUE
-vm_declare_module(ID id, VALUE cbase)
-{
- return declare_under(id, cbase, rb_module_new());
-}
-__declspec(noreturn) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
-static void
-unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
-{
- VALUE name = rb_id2str(id);
- VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
- name, type);
- VALUE location = rb_const_source_location_at(cbase, id);
- if (!RB_NIL_P(location)) {
- rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
- " previous definition of %""l""i" "\v"" was here",
- rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
- }
- rb_exc_raise(rb_exc_new_str(rb_eTypeError, message));
-}
-static VALUE
-vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
-{
- VALUE klass;
- if (((flags) & 0x10) && !(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((super), (RUBY_T_CLASS)) : (RB_TYPE_P)((super), (RUBY_T_CLASS)))) {
- rb_raise(rb_eTypeError,
- "superclass must be an instance of Class (given an instance of %""l""i" "\v"")",
- rb_obj_class(super));
- }
- vm_check_if_namespace(cbase);
- rb_autoload_load(cbase, id);
- if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
- if (!vm_check_if_class(id, flags, super, klass))
- unmatched_redefinition("class", cbase, id, klass);
- return klass;
- }
- else {
- return vm_declare_class(id, flags, cbase, super);
- }
-}
-static VALUE
-vm_define_module(ID id, rb_num_t flags, VALUE cbase)
-{
- VALUE mod;
- vm_check_if_namespace(cbase);
- if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
- if (!vm_check_if_module(id, mod))
- unmatched_redefinition("module", cbase, id, mod);
- return mod;
- }
- else {
- return vm_declare_module(id, cbase);
- }
-}
-static VALUE
-vm_find_or_create_class_by_id(ID id,
- rb_num_t flags,
- VALUE cbase,
- VALUE super)
-{
- rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK);
- switch (type) {
- case VM_DEFINECLASS_TYPE_CLASS:
- return vm_define_class(id, flags, cbase, super);
- case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
- return rb_singleton_class(cbase);
- case VM_DEFINECLASS_TYPE_MODULE:
- return vm_define_module(id, flags, cbase);
- default:
- rb_bug("unknown defineclass type: %d", (int)type);
- }
-}
-static rb_method_visibility_t
-vm_scope_visibility_get(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (!vm_env_cref_by_cref(cfp->ep)) {
- return METHOD_VISI_PUBLIC;
- }
- else {
- return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
- }
-}
-static int
-vm_scope_module_func_check(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (!vm_env_cref_by_cref(cfp->ep)) {
- return 0;
- }
- else {
- return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
- }
-}
-static void
-vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
-{
- VALUE klass;
- rb_method_visibility_t visi;
- rb_cref_t *cref = vm_ec_cref(ec);
- if (is_singleton) {
- klass = rb_singleton_class(obj);
- visi = METHOD_VISI_PUBLIC;
- }
- else {
- klass = CREF_CLASS_FOR_DEFINITION(cref);
- visi = vm_scope_visibility_get(ec);
- }
- if (RB_NIL_P(klass)) {
- rb_raise(rb_eTypeError, "no class/module to add method");
- }
- rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
- if (id == (__builtin_constant_p("initialize") ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, ("initialize")); }) : (rb_intern)("initialize")) && klass != rb_cObject && (__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS))) && (rb_get_alloc_func(klass) == rb_class_allocate_instance)) {
- ((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->max_iv_count = rb_estimate_iv_count(klass, (const rb_iseq_t *)iseqval);
- }
- if (!is_singleton && vm_scope_module_func_check(ec)) {
- klass = rb_singleton_class(klass);
- rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
- }
-}
-static VALUE
-vm_invokeblock_i(struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *reg_cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
- if (block_handler == 0) {
- rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
- }
- else {
- return vm_invoke_block(ec, (((reg_cfp))), calling, ci, 0, block_handler);
- }
-}
-static const struct rb_callcache *
-vm_search_method_wrap(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- return vm_search_method((VALUE)reg_cfp->iseq, cd, recv);
-}
-static const struct rb_callcache *
-vm_search_invokeblock(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- static const struct rb_callcache cc = {
- .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE),
- .klass = 0,
- .cme_ = 0,
- .call_ = vm_invokeblock_i,
- .aux_ = {0},
- };
- return &cc;
-}
-static
-VALUE
-vm_sendish(
- struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *reg_cfp,
- struct rb_call_data *cd,
- VALUE block_handler,
- const struct rb_callcache *(*method_explorer)(const struct rb_control_frame_struct *cfp, struct rb_call_data *cd, VALUE recv)
-) {
- VALUE val = ((VALUE)RUBY_Qundef);
- const struct rb_callinfo *ci = cd->ci;
- const struct rb_callcache *cc;
- int argc = vm_ci_argc(ci);
- VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
- struct rb_calling_info calling = {
- .block_handler = block_handler,
- .kw_splat = (vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0,
- .recv = recv,
- .argc = argc,
- .ci = ci,
- };
- calling.cc = cc = method_explorer((((reg_cfp))), cd, recv);
- val = vm_cc_call(cc)(ec, (((reg_cfp))), &calling);
- if (!RB_UNDEF_P(val)) {
- return val;
- }
- else {
- do { (reg_cfp) = ec->cfp; } while (0);
- }
- if (((((((reg_cfp)))->iseq))->body)->catch_except_p) {
- VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
- return rb_vm_exec(ec, 1);
- }
- else if (RB_UNDEF_P(val = jit_exec(ec))) {
- VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
- return rb_vm_exec(ec, 0);
- }
- else {
- return val;
- }
-}
-VALUE rb_nil_to_s(VALUE);
-VALUE rb_true_to_s(VALUE);
-VALUE rb_false_to_s(VALUE);
-VALUE rb_int_to_s(int argc, VALUE *argv, VALUE x);
-VALUE rb_fix_to_s(VALUE);
-VALUE rb_mod_to_s(VALUE);
-VALUE rb_mod_name(VALUE);
-static VALUE
-vm_objtostring(const rb_iseq_t *iseq, VALUE recv, CALL_DATA cd)
-{
- int type = ((int)rb_type(recv));
- if (type == RUBY_T_STRING) {
- return recv;
- }
- const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
- switch (type) {
- case RUBY_T_SYMBOL:
- if (check_cfunc(vm_cc_cme(cc), rb_sym_to_s)) {
- return rb_sym2str(recv);
- }
- break;
- case RUBY_T_MODULE:
- case RUBY_T_CLASS:
- if (check_cfunc(vm_cc_cme(cc), rb_mod_to_s)) {
- VALUE val = rb_mod_name(recv);
- if (RB_NIL_P(val)) {
- val = rb_mod_to_s(recv);
- }
- return val;
- }
- break;
- case RUBY_T_NIL:
- if (check_cfunc(vm_cc_cme(cc), rb_nil_to_s)) {
- return rb_nil_to_s(recv);
- }
- break;
- case RUBY_T_TRUE:
- if (check_cfunc(vm_cc_cme(cc), rb_true_to_s)) {
- return rb_true_to_s(recv);
- }
- break;
- case RUBY_T_FALSE:
- if (check_cfunc(vm_cc_cme(cc), rb_false_to_s)) {
- return rb_false_to_s(recv);
- }
- break;
- case RUBY_T_FIXNUM:
- if (check_cfunc(vm_cc_cme(cc), rb_int_to_s)) {
- return rb_fix_to_s(recv);
- }
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_opt_str_freeze(VALUE str, int bop, ID id)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
- return str;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
- if (num == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- VALUE result = *ptr;
- rb_snum_t i = num - 1;
- while (i-- > 0) {
- const VALUE v = *++ptr;
- if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 0))) == 0), 1)))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 2))) == 0), 1)))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 1))) == 0), 1)))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) > 0) {
- result = v;
- }
- }
- return result;
- }
- }
- else {
- return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMax, 0, ((void*)0), 0);
- }
-}static inline
-VALUE
-rb_vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- return vm_opt_newarray_max(ec, num, ptr);
-}
-static VALUE
-vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
- if (num == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- VALUE result = *ptr;
- rb_snum_t i = num - 1;
- while (i-- > 0) {
- const VALUE v = *++ptr;
- if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 0))) == 0), 1)))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 2))) == 0), 1)))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 1))) == 0), 1)))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) < 0) {
- result = v;
- }
- }
- return result;
- }
- }
- else {
- return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMin, 0, ((void*)0), 0);
- }
-}static inline
-VALUE
-rb_vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- return vm_opt_newarray_min(ec, num, ptr);
-}
-static void
-vm_track_constant_cache(ID id, void *ic)
-{
- struct rb_id_table *const_cache = rb_current_vm()->constant_cache;
- VALUE lookup_result;
- st_table *ics;
- if (rb_id_table_lookup(const_cache, id, &lookup_result)) {
- ics = (st_table *)lookup_result;
- }
- else {
- ics = rb_st_init_numtable();
- rb_id_table_insert(const_cache, id, (VALUE)ics);
- }
- rb_st_insert(ics, (st_data_t) ic, (st_data_t) ((VALUE)RUBY_Qtrue));
-}
-static void
-vm_ic_track_const_chain(rb_control_frame_t *cfp, IC ic, const ID *segments)
-{
- { unsigned int _lev; rb_vm_lock_enter(&_lev, "./vm_insnhelper.c", 5291);;
- for (int i = 0; segments[i]; i++) {
- ID id = segments[i];
- if (id == idNULL) continue;
- vm_track_constant_cache(id, ic);
- }
- rb_vm_lock_leave(&_lev, "./vm_insnhelper.c", 5299); };
-}
-static inline _Bool
-vm_inlined_ic_hit_p(VALUE flags, VALUE value, const rb_cref_t *ic_cref, const VALUE *reg_ep)
-{
- if ((flags & ((VALUE)RUBY_FL_USER4)) || rb_ractor_main_p()) {
- ((void)0);
- return (ic_cref == ((void*)0) ||
- ic_cref == vm_get_cref(reg_ep));
- }
- return 0;
-}
-static _Bool
-vm_ic_hit_p(const struct iseq_inline_constant_cache_entry *ice, const VALUE *reg_ep)
-{
- ((void)0);
- return vm_inlined_ic_hit_p(ice->flags, ice->value, ice->ic_cref, reg_ep);
-}static inline
-_Bool
-rb_vm_ic_hit_p(IC ic, const VALUE *reg_ep)
-{
- return ic->entry && vm_ic_hit_p(ic->entry, reg_ep);
-}
-COLDFUNC static void
-vm_ic_update(const rb_iseq_t *iseq, IC ic, VALUE val, const VALUE *reg_ep, const VALUE *pc) {
- if (ruby_vm_const_missing_count > 0) {
- ruby_vm_const_missing_count = 0;
- ic->entry = ((void*)0);
- return;
- }
- struct iseq_inline_constant_cache_entry *ice = (struct iseq_inline_constant_cache_entry *)rb_imemo_new(imemo_constcache, 0, 0, 0, 0);
- rb_obj_write((VALUE)(ice), __extension__({
- ;
- ; __typeof__((VALUE *)(&ice->value)) unaligned_member_access_result = ((VALUE *)(&ice->value));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 5339);
- ice->ic_cref = vm_get_const_key_cref(reg_ep);
- if (rb_ractor_shareable_p(val)) ice->flags |= ((VALUE)RUBY_FL_USER4);
- rb_obj_write((VALUE)(iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&ic->entry)) unaligned_member_access_result = ((VALUE *)(&ic->entry));
- ; unaligned_member_access_result; }), (VALUE)(ice), "./vm_insnhelper.c", 5342);
- ((void)0);
- unsigned pos = (unsigned)(pc - ((iseq)->body)->iseq_encoded);
- rb_yjit_constant_ic_update(iseq, ic, pos);
- rb_mjit_constant_ic_update(iseq, ic, pos);
-}
-static VALUE
-vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
-{
- rb_thread_t *th = rb_ec_thread_ptr(ec);
- rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
- again:
- if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
- return is->once.value;
- }
- else if (is->once.running_thread == ((void*)0)) {
- VALUE val;
- is->once.running_thread = th;
- val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
- rb_obj_write((VALUE)(ec->cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&is->once.value)) unaligned_member_access_result = ((VALUE *)(&is->once.value));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 5364);
- is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
- return val;
- }
- else if (is->once.running_thread == th) {
- return vm_once_exec((VALUE)iseq);
- }
- else {
- rb_vm_check_ints(ec);
- rb_thread_schedule();
- goto again;
- }
-}
-static OFFSET
-vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
-{
- switch (__extension__({ VALUE arg_obj = (key); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); })) {
- case -1:
- case RUBY_T_FLOAT:
- case RUBY_T_SYMBOL:
- case RUBY_T_BIGNUM:
- case RUBY_T_STRING:
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
- st_data_t val;
- if (RB_FLOAT_TYPE_P(key)) {
- double kval = rb_float_value_inline(key);
- if (!( sizeof(kval) == sizeof(float) ? __inline_isinff((float)(kval)) : sizeof(kval) == sizeof(double) ? __inline_isinfd((double)(kval)) : __inline_isinfl((long double)(kval))) && modf(kval, &kval) == 0.0) {
- key = (((kval) < (9223372036854775807L / 2) + 1) && ((kval) >= ((-9223372036854775807L -1L) / 2))) ? RB_INT2FIX((long)kval) : rb_dbl2big(kval);
- }
- }
- if (rb_hash_stlike_lookup(hash, key, &val)) {
- return rb_fix2long((VALUE)val);
- }
- else {
- return else_offset;
- }
- }
- }
- return 0;
-}
-__declspec(noreturn) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
-static void
-vm_stack_consistency_error(const rb_execution_context_t *ec,
- const rb_control_frame_t *cfp,
- const VALUE *bp)
-{
- const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
- const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
- static const char stack_consistency_error[] =
- "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
- rb_bug(stack_consistency_error, nsp, nbp);
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_plus(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_plus(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_plus_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- RBASIC_CLASS(obj) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
- return rb_str_opt_plus(recv, obj);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- RBASIC_CLASS(obj) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
- return rb_ary_plus(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_minus(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_minus(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_minus_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_mult(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_mult(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_mul_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_div(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_div(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
- return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
- return rb_flo_div_flo(recv, obj);
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
- return rb_flo_div_flo(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_mod(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_mod(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
- return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj) {
- if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not_equal)) {
- VALUE val = opt_equality(iseq, recv, obj, cd_eq);
- if (!RB_UNDEF_P(val)) {
- return ((!RB_TEST(val)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- }
- return ((VALUE)RUBY_Qundef);
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_lt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_lt(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv < (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_le(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_le(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv <= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_gt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_gt(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv > (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_ge(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_ge(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv >= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_ltlt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_ltlt(VALUE recv, VALUE obj) {
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
- if ((__builtin_expect(!!((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_STRING)) : (RB_TYPE_P)((obj), (RUBY_T_STRING)))), 1))) {
- return rb_str_buf_append(recv, obj);
- }
- else {
- return rb_str_concat(recv, obj);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
- return rb_ary_push(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_and(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_and(VALUE recv, VALUE obj) {
- VALUE ret = ((long) recv) & ((long) obj);
- if (RB_FIXNUM_P(ret) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
- return ret;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_or(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_or(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
- return recv | obj;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aref(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_aref(VALUE recv, VALUE obj) {
- if (RB_SPECIAL_CONST_P(recv)) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_aref(recv, obj);
- }
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
- if (RB_FIXNUM_P(obj)) {
- return rb_ary_entry_internal(recv, rb_fix2long(obj));
- }
- else {
- return rb_ary_aref1(recv, obj);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
- return rb_hash_aref(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aset(VALUE recv, VALUE obj, VALUE set));
-static inline VALUE
-vm_opt_aset(VALUE recv, VALUE obj, VALUE set) {
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
- RB_FIXNUM_P(obj)) {
- rb_ary_store(recv, rb_fix2long(obj), set);
- return set;
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
- rb_hash_aset(recv, obj, set);
- return set;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aref_with(VALUE recv, VALUE key));
-static inline VALUE
-vm_opt_aref_with(VALUE recv, VALUE key) {
- if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
- rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse) &&
- !RB_FL_TEST(recv, RHASH_PROC_DEFAULT)) {
- return rb_hash_aref(recv, key);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aset_with(VALUE recv, VALUE key, VALUE val));
-static inline VALUE
-vm_opt_aset_with(VALUE recv, VALUE key, VALUE val) {
- if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
- rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
- return rb_hash_aset(recv, key, val);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_length(VALUE recv, int bop)
-{
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
- if (bop == BOP_EMPTY_P) {
- return rb_long2num_inline(RSTRING_LEN(recv));
- }
- else {
- return rb_str_length(recv);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
- return rb_long2num_inline(rb_array_len(recv));
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
- return __builtin_choose_expr( __builtin_constant_p(RHASH_SIZE(recv)), ((VALUE)(RHASH_SIZE(recv))) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(RHASH_SIZE(recv)));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_empty_p(VALUE recv)
-{
- switch (vm_opt_length(recv, BOP_EMPTY_P)) {
- case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
- case __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)): return ((VALUE)RUBY_Qtrue);
- default: return ((VALUE)RUBY_Qfalse);
- }
-}
-VALUE rb_false(VALUE obj);
-static VALUE
-vm_opt_nil_p(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv)
-{
- if (RB_NIL_P(recv) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
- return ((VALUE)RUBY_Qtrue);
- }
- else if (vm_method_cfunc_is(iseq, cd, recv, rb_false)) {
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-fix_succ(VALUE x)
-{
- switch (x) {
- case ~0UL:
- return __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- case ((~0UL)>>(int)(1)):
- return rb_uint2big(1UL << (8 * 8 - 2));
- default:
- return x + 2;
- }
-}
-static VALUE
-vm_opt_succ(VALUE recv)
-{
- if (RB_FIXNUM_P(recv) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
- return fix_succ(recv);
- }
- else if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
- return rb_str_succ(recv);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv));
-static inline VALUE
-vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv) {
- if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not)) {
- return ((!RB_TEST(recv)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_regexpmatch2(VALUE recv, VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- rb_class_of(obj) == rb_cRegexp &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
- return rb_reg_match(obj, recv);
- }
- else if (RBASIC_CLASS(recv) == rb_cRegexp &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
- return rb_reg_match(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos);
-__declspec(noinline) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp);
-static inline void
-vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
- rb_event_flag_t pc_events, rb_event_flag_t target_event,
- rb_hook_list_t *global_hooks, rb_hook_list_t *const *local_hooks_ptr, VALUE val)
-{
- rb_event_flag_t event = pc_events & target_event;
- VALUE self = (((((reg_cfp)))->self));
- ((void)0);
- if (event & global_hooks->events) {
- reg_cfp->pc++;
- vm_dtrace(event, ec);
- rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
- reg_cfp->pc--;
- }
- rb_hook_list_t *local_hooks = *local_hooks_ptr;
- if (local_hooks != ((void*)0)) {
- if (event & local_hooks->events) {
- reg_cfp->pc++;
- rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
- reg_cfp->pc--;
- }
- }
-}static inline
-_Bool
-rb_vm_opt_cfunc_p(CALL_CACHE cc, int insn)
-{
- switch (insn) {
- case YARVINSN_opt_eq:
- return check_cfunc(vm_cc_cme(cc), rb_obj_equal);
- case YARVINSN_opt_nil_p:
- return check_cfunc(vm_cc_cme(cc), rb_false);
- case YARVINSN_opt_not:
- return check_cfunc(vm_cc_cme(cc), rb_obj_not);
- default:
- return 0;
- }
-}
-static void
-vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
-{
- const VALUE *pc = reg_cfp->pc;
- rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0020| 0x0040| 0x0100| 0x0200| 0x010000| 0x020000);
- rb_event_flag_t global_events = enabled_flags;
- if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
- return;
- }
- else {
- const rb_iseq_t *iseq = reg_cfp->iseq;
- VALUE iseq_val = (VALUE)iseq;
- size_t pos = pc - ((iseq)->body)->iseq_encoded;
- rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
- rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
- rb_hook_list_t *const *local_hooks_ptr = &iseq->aux.exec.local_hooks;
- rb_event_flag_t iseq_local_events = local_hooks != ((void*)0) ? local_hooks->events : 0;
- rb_hook_list_t *bmethod_local_hooks = ((void*)0);
- rb_hook_list_t **bmethod_local_hooks_ptr = ((void*)0);
- rb_event_flag_t bmethod_local_events = 0;
- const _Bool bmethod_frame = VM_FRAME_BMETHOD_P(reg_cfp);
- enabled_flags |= iseq_local_events;
- ((void)0);
- if (bmethod_frame) {
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
- ((void)0);
- bmethod_local_hooks = me->def->body.bmethod.hooks;
- bmethod_local_hooks_ptr = &me->def->body.bmethod.hooks;
- if (bmethod_local_hooks) {
- bmethod_local_events = bmethod_local_hooks->events;
- }
- }
- if ((pc_events & enabled_flags) == 0 && !bmethod_frame) {
- return;
- }
- else if (ec->trace_arg != ((void*)0)) {
- return;
- }
- else {
- rb_hook_list_t *global_hooks = rb_ec_ractor_hooks(ec);
- rb_event_flag_t bmethod_events = global_events | bmethod_local_events;
- if (0) {
- ruby_debug_printf("vm_trace>>%4d (%4x) - %s:%d %s\n",
- (int)pos,
- (int)pc_events,
- RSTRING_PTR(rb_iseq_path(iseq)),
- (int)rb_iseq_line_no(iseq, pos),
- RSTRING_PTR(rb_iseq_label(iseq)));
- }
- ((void)0);
- ((void)0);
- if ((pc_events & 0x0100) && bmethod_frame && (bmethod_events & 0x0008)) {
- vm_trace_hook(ec, reg_cfp, pc, 0x0008, 0x0008, global_hooks, bmethod_local_hooks_ptr, ((VALUE)RUBY_Qundef));
- }
- do { if ((pc_events & (0x0002 | 0x0008 | 0x0100)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0002 | 0x0008 | 0x0100), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x0004 | 0x0010 | 0x0200)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0004 | 0x0010 | 0x0200), global_hooks, local_hooks_ptr, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0);
- if ((pc_events & 0x0200) && bmethod_frame && (bmethod_events & 0x0010)) {
- vm_trace_hook(ec, reg_cfp, pc, 0x0010, 0x0010, global_hooks, bmethod_local_hooks_ptr, (*(((((reg_cfp)->sp)))-(0)-1)));
- }
- (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(iseq_val); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
- }
- }
-}static inline
-void Init_vm_stack_canary(void) { }
-static VALUE
-builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
- return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
-}
-static VALUE
-builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
- return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
-}
-static VALUE
-builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
- return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
-}
-static VALUE
-builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
- return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
-}
-static VALUE
-builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
- return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
- return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr6_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6);
- return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr7_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7);
- return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr8_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8);
- return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr9_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9);
- return (*(rb_invoke_funcptr9_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr10_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10);
- return (*(rb_invoke_funcptr10_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr11_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11);
- return (*(rb_invoke_funcptr11_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr12_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12);
- return (*(rb_invoke_funcptr12_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr13_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13);
- return (*(rb_invoke_funcptr13_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr14_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14);
- return (*(rb_invoke_funcptr14_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr15_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14, VALUE v15);
- return (*(rb_invoke_funcptr15_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-typedef VALUE (*builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr);
-static builtin_invoker
-lookup_builtin_invoker(int argc)
-{
- static const builtin_invoker invokers[] = {
- builtin_invoker0,
- builtin_invoker1,
- builtin_invoker2,
- builtin_invoker3,
- builtin_invoker4,
- builtin_invoker5,
- builtin_invoker6,
- builtin_invoker7,
- builtin_invoker8,
- builtin_invoker9,
- builtin_invoker10,
- builtin_invoker11,
- builtin_invoker12,
- builtin_invoker13,
- builtin_invoker14,
- builtin_invoker15,
- };
- return invokers[argc];
-}
-static inline VALUE
-invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const struct rb_builtin_function* bf, const VALUE *argv)
-{
- const _Bool canary_p = ((reg_cfp->iseq)->body)->builtin_inline_p;
- if (canary_p) {} else {};
- VALUE ret = (*lookup_builtin_invoker(bf->argc))(ec, reg_cfp->self, argv, (rb_insn_func_t)bf->func_ptr);
- if (canary_p) {(void)(YARVINSN_invokebuiltin);};
- return ret;
-}
-static VALUE
-vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
-{
- return invoke_bf(ec, cfp, bf, argv);
-}
-static VALUE
-vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
-{
- if (0) {
- fputs("vm_invoke_builtin_delegate: passing -> ", __stderrp);
- for (int i=0; iargc; i++) {
- ruby_debug_printf(":%s ", rb_id2name(((cfp->iseq)->body)->local_table[i+start_index]));
- }
- ruby_debug_printf("\n" "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
- }
- if (bf->argc == 0) {
- return invoke_bf(ec, cfp, bf, ((void*)0));
- }
- else {
- const VALUE *argv = cfp->ep - ((cfp->iseq)->body)->local_table_size - ( 3) + 1 + start_index;
- return invoke_bf(ec, cfp, bf, argv);
- }
-}static inline
-VALUE
-rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
-{
- const rb_control_frame_t *cfp = ec->cfp;
- return cfp->ep[index];
-}
-struct local_var_list {
- VALUE tbl;
-};
-static inline VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
-static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat, const rb_cref_t *cref, int is_lambda);
-static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
-static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
-static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
-VALUE rb_vm_exec(rb_execution_context_t *ec, _Bool jit_enable_p);
-static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
-static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
-static VALUE rb_eUncaughtThrow;
-static ID id_result, id_tag, id_value;
-typedef enum call_type {
- CALL_PUBLIC,
- CALL_FCALL,
- CALL_VCALL,
- CALL_PUBLIC_KW,
- CALL_FCALL_KW,
- CALL_TYPE_MAX
-} call_type;
-static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
-static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, const VALUE *argv);
-static inline void
-stack_check(rb_execution_context_t *ec)
-{
- if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
- rb_ec_stack_check(ec)) {
- ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
- rb_ec_stack_overflow(ec, 0);
- }
-}
-static void
-raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
- enum method_missing_reason last_call_status)
-{
- VALUE exc = rb_eNoMethodError;
- VALUE format = 0;
- if ((__builtin_expect(!!(argc == 0), 0))) {
- rb_raise(rb_eArgError, "no method name given");
- }
- else if ((__builtin_expect(!!(!RB_SYMBOL_P(argv[0])), 0))) {
- const VALUE e = rb_eArgError;
- rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
- rb_obj_class(argv[0]));
- }
- stack_check(ec);
- if (last_call_status & MISSING_PRIVATE) {
- format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
- }
- else if (last_call_status & MISSING_PROTECTED) {
- format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
- }
- else if (last_call_status & MISSING_VCALL) {
- format = rb_fstring_new(("undefined local variable or method `%s' for %s%s%s"), (sizeof("undefined local variable or method `%s' for %s%s%s" "") - 1));
- exc = rb_eNameError;
- }
- else if (last_call_status & MISSING_SUPER) {
- format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
- }
- {
- exc = rb_make_no_method_exception(exc, format, obj, argc, argv,
- last_call_status & (MISSING_FCALL|MISSING_VCALL));
- if (!(last_call_status & MISSING_MISSING)) {
- rb_vm_pop_cfunc_frame();
- }
- rb_exc_raise(exc);
- }
-}
-static void
-vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
- VALUE obj, int call_status)
-{
- vm_passed_block_handler_set(ec, 0);
- raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
-}
-static inline VALUE
-method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
-{
- VALUE *nargv, result, work, klass;
- VALUE block_handler = vm_passed_block_handler(ec);
- const rb_callable_method_entry_t *me;
- ec->method_missing_reason = call_status;
- if (id == idMethodMissing) {
- goto missing;
- }
- nargv = ((VALUE *) (((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca((argc + 1) * sizeof(VALUE))) : rb_alloc_tmp_buffer2(&(work), (argc + 1), sizeof(VALUE))));
- nargv[0] = rb_id2sym(id);
- ruby_nonempty_memcpy((nargv + 1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- ++argc;
- argv = nargv;
- klass = rb_class_of(obj);
- if (!klass) goto missing;
- me = rb_callable_method_entry(klass, idMethodMissing);
- if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
- vm_passed_block_handler_set(ec, block_handler);
- result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
- if (work) rb_free_tmp_buffer(&(work));
- return result;
- missing:
- raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
- __builtin_unreachable();
-}
-static rb_control_frame_t *
-vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
-{
- if (VM_FRAME_RUBYFRAME_P(cfp)) {
- return (rb_control_frame_t *)cfp;
- }
- cfp = ((cfp)+1);
- while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
- if (VM_FRAME_RUBYFRAME_P(cfp)) {
- return (rb_control_frame_t *)cfp;
- }
- if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
- break;
- }
- cfp = ((cfp)+1);
- }
- return 0;
-}
-static void
-rb_vm_pop_cfunc_frame(void)
-{
- rb_execution_context_t *ec = rb_current_execution_context(1);
- rb_control_frame_t *cfp = ec->cfp;
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
- do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0);
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- vm_pop_frame(ec, cfp, cfp->ep);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 5);
-}
-static const vm_call_handler vm_call_iseq_handlers[][6] = {
- {
- vm_call_iseq_setup_normal_0start_0params_0locals,
- vm_call_iseq_setup_normal_0start_0params_1locals,
- vm_call_iseq_setup_normal_0start_0params_2locals,
- vm_call_iseq_setup_normal_0start_0params_3locals,
- vm_call_iseq_setup_normal_0start_0params_4locals,
- vm_call_iseq_setup_normal_0start_0params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_1params_0locals,
- vm_call_iseq_setup_normal_0start_1params_1locals,
- vm_call_iseq_setup_normal_0start_1params_2locals,
- vm_call_iseq_setup_normal_0start_1params_3locals,
- vm_call_iseq_setup_normal_0start_1params_4locals,
- vm_call_iseq_setup_normal_0start_1params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_2params_0locals,
- vm_call_iseq_setup_normal_0start_2params_1locals,
- vm_call_iseq_setup_normal_0start_2params_2locals,
- vm_call_iseq_setup_normal_0start_2params_3locals,
- vm_call_iseq_setup_normal_0start_2params_4locals,
- vm_call_iseq_setup_normal_0start_2params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_3params_0locals,
- vm_call_iseq_setup_normal_0start_3params_1locals,
- vm_call_iseq_setup_normal_0start_3params_2locals,
- vm_call_iseq_setup_normal_0start_3params_3locals,
- vm_call_iseq_setup_normal_0start_3params_4locals,
- vm_call_iseq_setup_normal_0start_3params_5locals,
- },
-};
-static inline vm_call_handler
-vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size)
-{
- if ((__builtin_expect(!!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
- return &vm_call_iseq_setup_tailcall_0start;
- }
- else if (0) {
- return &vm_call_iseq_setup_normal_0start;
- }
- else if (param_size <= 3 && local_size <= 5) {
- ((void)0);
- return vm_call_iseq_handlers[param_size][local_size];
- }
- else {
- return &vm_call_iseq_setup_normal_0start;
- }
-}
-
-#define MJIT_HEADER 1
-#undef _FORTIFY_SOURCE
-#define _FORTIFY_SOURCE 2
-#define RUBY_EXPORT 1
-#define _XOPEN_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _DARWIN_UNLIMITED_SELECT 1
-#define _REENTRANT 1
-#define __GCC_HAVE_DWARF2_CFI_ASM 1
-#define vm_exec rb_vm_exec
-#define RUBY_EVAL_INTERN_H
-#define RUBY_RUBY_H 1
-#define RBIMPL_CONFIG_H
-#define INCLUDE_RUBY_CONFIG_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_WCHAR_H 1
-#define STDC_HEADERS 1
-#define _ALL_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _GNU_SOURCE 1
-#define _HPUX_ALT_XOPEN_SOCKET_API 1
-#define _NETBSD_SOURCE 1
-#define _OPENBSD_SOURCE 1
-#define _POSIX_PTHREAD_SEMANTICS 1
-#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
-#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
-#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
-#define __STDC_WANT_LIB_EXT2__ 1
-#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
-#define _TANDEM_SOURCE 1
-#define __EXTENSIONS__ 1
-#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
-#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
-#define HAVE_STMT_AND_DECL_IN_EXPR 1
-#define HAVE_PTHREAD_H 1
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-#define HAVE_LIBPTHREAD 1
-#define THREAD_IMPL_H "thread_pthread.h"
-#define THREAD_IMPL_SRC "thread_pthread.c"
-#define BROKEN_CRYPT 1
-#define HAVE_CRT_EXTERNS_H 1
-#define HAVE_LIBDL 1
-#define HAVE_DIRENT_H 1
-#define HAVE__BOOL 1
-#define HAVE_STDBOOL_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_COPYFILE_H 1
-#define HAVE_GRP_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LANGINFO_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_LOCALE_H 1
-#define HAVE_MALLOC_MALLOC_H 1
-#define HAVE_PWD_H 1
-#define HAVE_SANITIZER_ASAN_INTERFACE_H 1
-#define HAVE_SANITIZER_MSAN_INTERFACE_H 1
-#define HAVE_STDALIGN_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_SYS_ATTR_H 1
-#define HAVE_SYS_FCNTL_H 1
-#define HAVE_SYS_FILE_H 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_RANDOM_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_UIO_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UCONTEXT_H 1
-#define HAVE_UTIME_H 1
-#define HAVE_TYPEOF 1
-#define restrict __restrict__
-#define HAVE_LONG_LONG 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF___INT64 0
-#define SIZEOF___INT128 16
-#define SIZEOF_OFF_T 8
-#define SIZEOF_VOIDP 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_CLOCK_T 8
-#define PACKED_STRUCT(x) x __attribute__((packed))
-#define USE_UNALIGNED_MEMBER_ACCESS 1
-#define PRI_LL_PREFIX "ll"
-#define HAVE_PID_T 1
-#define rb_pid_t pid_t
-#define SIGNEDNESS_OF_PID_T -1
-#define PIDT2NUM(v) INT2NUM(v)
-#define NUM2PIDT(v) NUM2INT(v)
-#define PRI_PIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_UID_T 1
-#define rb_uid_t uid_t
-#define SIGNEDNESS_OF_UID_T +1
-#define UIDT2NUM(v) UINT2NUM(v)
-#define NUM2UIDT(v) NUM2UINT(v)
-#define PRI_UIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_GID_T 1
-#define rb_gid_t gid_t
-#define SIGNEDNESS_OF_GID_T +1
-#define GIDT2NUM(v) UINT2NUM(v)
-#define NUM2GIDT(v) NUM2UINT(v)
-#define PRI_GIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_TIME_T 1
-#define rb_time_t time_t
-#define SIGNEDNESS_OF_TIME_T -1
-#define TIMET2NUM(v) LONG2NUM(v)
-#define NUM2TIMET(v) NUM2LONG(v)
-#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
-#define HAVE_DEV_T 1
-#define rb_dev_t dev_t
-#define SIGNEDNESS_OF_DEV_T -1
-#define DEVT2NUM(v) INT2NUM(v)
-#define NUM2DEVT(v) NUM2INT(v)
-#define PRI_DEVT_PREFIX PRI_INT_PREFIX
-#define HAVE_MODE_T 1
-#define rb_mode_t mode_t
-#define SIGNEDNESS_OF_MODE_T +1
-#define MODET2NUM(v) USHORT2NUM(v)
-#define NUM2MODET(v) NUM2USHORT(v)
-#define PRI_MODET_PREFIX PRI_SHORT_PREFIX
-#define HAVE_RLIM_T 1
-#define rb_rlim_t rlim_t
-#define SIGNEDNESS_OF_RLIM_T +1
-#define RLIM2NUM(v) ULL2NUM(v)
-#define NUM2RLIM(v) NUM2ULL(v)
-#define PRI_RLIM_PREFIX PRI_LL_PREFIX
-#define HAVE_OFF_T 1
-#define rb_off_t off_t
-#define SIGNEDNESS_OF_OFF_T -1
-#define OFFT2NUM(v) LL2NUM(v)
-#define NUM2OFFT(v) NUM2LL(v)
-#define PRI_OFFT_PREFIX PRI_LL_PREFIX
-#define HAVE_CLOCKID_T 1
-#define rb_clockid_t clockid_t
-#define SIGNEDNESS_OF_CLOCKID_T +1
-#define CLOCKID2NUM(v) UINT2NUM(v)
-#define NUM2CLOCKID(v) NUM2UINT(v)
-#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
-#define HAVE_VA_ARGS_MACRO 1
-#define HAVE__ALIGNOF 1
-#define CONSTFUNC(x) __attribute__ ((__const__)) x
-#define PUREFUNC(x) __attribute__ ((__pure__)) x
-#define NORETURN(x) __attribute__ ((__noreturn__)) x
-#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
-#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
-#define NOINLINE(x) __attribute__ ((__noinline__)) x
-#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
-#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
-#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
-#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
-#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
-#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
-#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
-#define WEAK(x) __attribute__ ((__weak__)) x
-#define HAVE_FUNC_WEAK 1
-#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
-#define HAVE_NULLPTR 1
-#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
-#define HAVE_GCC_ATOMIC_BUILTINS 1
-#define HAVE_GCC_SYNC_BUILTINS 1
-#define HAVE___BUILTIN_UNREACHABLE 1
-#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
-#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
-#define RUBY_FUNCTION_NAME_STRING __func__
-#define ENUM_OVER_INT 1
-#define HAVE_DECL_SYS_NERR 1
-#define HAVE_DECL_GETENV 1
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_PTRDIFF_T 8
-#define SIZEOF_DEV_T 4
-#define PRI_SIZE_PREFIX "z"
-#define PRI_PTRDIFF_PREFIX "t"
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
-#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T
-#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T
-#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
-#define HAVE_STRUCT_TIMESPEC 1
-#define HAVE_STRUCT_TIMEZONE 1
-#define HAVE_RB_FD_INIT 1
-#define HAVE_INT8_T 1
-#define SIZEOF_INT8_T 1
-#define HAVE_UINT8_T 1
-#define SIZEOF_UINT8_T 1
-#define HAVE_INT16_T 1
-#define SIZEOF_INT16_T 2
-#define HAVE_UINT16_T 1
-#define SIZEOF_UINT16_T 2
-#define HAVE_INT32_T 1
-#define SIZEOF_INT32_T 4
-#define HAVE_UINT32_T 1
-#define SIZEOF_UINT32_T 4
-#define HAVE_INT64_T 1
-#define SIZEOF_INT64_T 8
-#define HAVE_UINT64_T 1
-#define SIZEOF_UINT64_T 8
-#define HAVE_INT128_T 1
-#define int128_t __int128
-#define SIZEOF_INT128_T SIZEOF___INT128
-#define HAVE_UINT128_T 1
-#define uint128_t unsigned __int128
-#define SIZEOF_UINT128_T SIZEOF___INT128
-#define HAVE_INTPTR_T 1
-#define SIZEOF_INTPTR_T 8
-#define HAVE_UINTPTR_T 1
-#define SIZEOF_UINTPTR_T 8
-#define PRI_PTR_PREFIX "l"
-#define HAVE_SSIZE_T 1
-#define SIZEOF_SSIZE_T 8
-#define PRI_64_PREFIX "ll"
-#define GETGROUPS_T gid_t
-#define HAVE_ALLOCA_H 1
-#define HAVE_ALLOCA 1
-#define HAVE_DUP 1
-#define HAVE_DUP2 1
-#define HAVE_ACOSH 1
-#define HAVE_CBRT 1
-#define HAVE_CRYPT 1
-#define HAVE_ERF 1
-#define HAVE_FFS 1
-#define HAVE_FLOCK 1
-#define HAVE_HYPOT 1
-#define HAVE_LGAMMA_R 1
-#define HAVE_MEMMOVE 1
-#define HAVE_NAN 1
-#define HAVE_NEXTAFTER 1
-#define HAVE_STRCHR 1
-#define HAVE_STRERROR 1
-#define HAVE_STRLCAT 1
-#define HAVE_STRLCPY 1
-#define HAVE_STRSTR 1
-#define HAVE_TGAMMA 1
-#define HAVE_ISFINITE 1
-#define SPT_TYPE SPT_REUSEARGV
-#define HAVE_SIGNBIT 1
-#define HAVE_FORK 1
-#define vfork fork
-#define HAVE_WORKING_FORK 1
-#define HAVE__LONGJMP 1
-#define HAVE_ARC4RANDOM_BUF 1
-#define HAVE_ATAN2L 1
-#define HAVE_ATAN2F 1
-#define HAVE_CHMOD 1
-#define HAVE_CHOWN 1
-#define HAVE_CHROOT 1
-#define HAVE_CLOCK_GETTIME 1
-#define HAVE_COSH 1
-#define HAVE_DIRFD 1
-#define HAVE_DLOPEN 1
-#define HAVE_DLADDR 1
-#define HAVE_ENDGRENT 1
-#define HAVE_EXECL 1
-#define HAVE_EXECLE 1
-#define HAVE_EXECV 1
-#define HAVE_EXECVE 1
-#define HAVE_FCOPYFILE 1
-#define HAVE_FCHMOD 1
-#define HAVE_FCHOWN 1
-#define HAVE_FCNTL 1
-#define HAVE_FDOPENDIR 1
-#define HAVE_FGETATTRLIST 1
-#define HAVE_FMOD 1
-#define HAVE_FSTATAT 1
-#define HAVE_FSYNC 1
-#define HAVE_FTRUNCATE 1
-#define HAVE_GETATTRLIST 1
-#define HAVE_GETCWD 1
-#define HAVE_GETEGID 1
-#define HAVE_GETENTROPY 1
-#define HAVE_GETEUID 1
-#define HAVE_GETGID 1
-#define HAVE_GETGRNAM 1
-#define HAVE_GETGRNAM_R 1
-#define HAVE_GETGROUPS 1
-#define HAVE_GETLOGIN 1
-#define HAVE_GETLOGIN_R 1
-#define HAVE_GETPGID 1
-#define HAVE_GETPGRP 1
-#define HAVE_GETPPID 1
-#define HAVE_GETPRIORITY 1
-#define HAVE_GETPWNAM 1
-#define HAVE_GETPWNAM_R 1
-#define HAVE_GETPWUID 1
-#define HAVE_GETPWUID_R 1
-#define HAVE_GETRLIMIT 1
-#define HAVE_GETSID 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETUID 1
-#define HAVE_GMTIME_R 1
-#define HAVE_GRANTPT 1
-#define HAVE_INITGROUPS 1
-#define HAVE_IOCTL 1
-#define HAVE_ISSETUGID 1
-#define HAVE_KILL 1
-#define HAVE_KILLPG 1
-#define HAVE_LCHMOD 1
-#define HAVE_LCHOWN 1
-#define HAVE_LINK 1
-#define HAVE_LLABS 1
-#define HAVE_LOCKF 1
-#define HAVE_LOG2 1
-#define HAVE_LSTAT 1
-#define HAVE_LUTIMES 1
-#define HAVE_MALLOC_SIZE 1
-#define HAVE_MBLEN 1
-#define HAVE_MEMSET_S 1
-#define HAVE_WRITEV 1
-#define HAVE_MEMMEM 1
-#define HAVE_MKFIFO 1
-#define HAVE_MKNOD 1
-#define HAVE_MKTIME 1
-#define HAVE_MMAP 1
-#define HAVE_OPENAT 1
-#define HAVE_PCLOSE 1
-#define HAVE_PIPE 1
-#define HAVE_POLL 1
-#define HAVE_POPEN 1
-#define HAVE_POSIX_MADVISE 1
-#define HAVE_POSIX_MEMALIGN 1
-#define HAVE_PREAD 1
-#define HAVE_PWRITE 1
-#define HAVE_QSORT_R 1
-#define HAVE_READLINK 1
-#define HAVE_REALPATH 1
-#define HAVE_ROUND 1
-#define HAVE_SEEKDIR 1
-#define HAVE_SENDFILE 1
-#define HAVE_SETEGID 1
-#define HAVE_SETENV 1
-#define HAVE_SETEUID 1
-#define HAVE_SETGID 1
-#define HAVE_SETGROUPS 1
-#define HAVE_SETPGID 1
-#define HAVE_SETPGRP 1
-#define HAVE_SETREGID 1
-#define HAVE_SETREUID 1
-#define HAVE_SETRGID 1
-#define HAVE_SETRLIMIT 1
-#define HAVE_SETRUID 1
-#define HAVE_SETSID 1
-#define HAVE_SETUID 1
-#define HAVE_SHUTDOWN 1
-#define HAVE_SIGACTION 1
-#define HAVE_SIGALTSTACK 1
-#define HAVE_SIGPROCMASK 1
-#define HAVE_SINH 1
-#define HAVE_SYMLINK 1
-#define HAVE_SYSCONF 1
-#define HAVE_SYSTEM 1
-#define HAVE_TANH 1
-#define HAVE_TELLDIR 1
-#define HAVE_TIMEGM 1
-#define HAVE_TIMES 1
-#define HAVE_TRUNCATE 1
-#define HAVE_TZSET 1
-#define HAVE_UMASK 1
-#define HAVE_UNSETENV 1
-#define HAVE_UTIMENSAT 1
-#define HAVE_UTIMES 1
-#define HAVE_WAIT4 1
-#define HAVE_WAITPID 1
-#define HAVE___COSPI 1
-#define HAVE___SINPI 1
-#define __STDC_WANT_LIB_EXT1__ 1
-#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
-#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
-#define HAVE_BUILTIN___BUILTIN_CLZ 1
-#define HAVE_BUILTIN___BUILTIN_CLZL 1
-#define HAVE_BUILTIN___BUILTIN_CLZLL 1
-#define HAVE_BUILTIN___BUILTIN_CTZ 1
-#define HAVE_BUILTIN___BUILTIN_CTZLL 1
-#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
-#define HAVE_BUILTIN___BUILTIN_TRAP 1
-#define HAVE_BUILTIN___BUILTIN_EXPECT 1
-#define HAVE_BSD_QSORT_R 1
-#define ATAN2_INF_C99 1
-#define HAVE_CLOCK_GETRES 1
-#define HAVE_STRUCT_TM_TM_ZONE 1
-#define HAVE_TM_ZONE 1
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-#define HAVE_DAYLIGHT 1
-#define NEGATIVE_TIME_T 1
-#define POSIX_SIGNAL 1
-#define HAVE_SIG_T 1
-#define RSHIFT(x,y) ((x)>>(int)(y))
-#define HAVE__SC_CLK_TCK 1
-#define STACK_GROW_DIRECTION -1
-#define COROUTINE_H "coroutine/arm64/Context.h"
-#define HAVE_SCHED_YIELD 1
-#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
-#define HAVE_PTHREAD_ATTR_GETSTACK 1
-#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
-#define HAVE_PTHREAD_GET_STACKADDR_NP 1
-#define HAVE_PTHREAD_GET_STACKSIZE_NP 1
-#define HAVE_PTHREAD_SETNAME_NP 1
-#define HAVE_PTHREAD_SIGMASK 1
-#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(name)
-#define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t mc = (uc)->uc_mcontext
-#define HAVE_SYS_USER_H 1
-#define HAVE_CONST_PAGE_SIZE 0
-#define IOCTL_REQ_TYPE unsigned long
-#define NUM2IOCTLREQ(num) NUM2ULONG(num)
-#define HAVE_MACH_O_LOADER_H 1
-#define EXTSTATIC 1
-#define HAVE_LIBPROC_H 1
-#define HAVE_EXECINFO_H 1
-#define HAVE_LIBUNWIND_H 1
-#define HAVE_MACH_TASK_H 1
-#define HAVE_MACH_MACH_INIT_H 1
-#define HAVE_MACH_MACH_PORT_H 1
-#define HAVE_MACH_TASK_EXCEPTION_PORTS 1
-#define HAVE_BACKTRACE 1
-#define BROKEN_BACKTRACE 1
-#define DLEXT_MAXLEN 7
-#define DLEXT ".bundle"
-#define LIBDIR_BASENAME "lib"
-#define HAVE__SETJMP 1
-#define HAVE_SIGSETJMP 1
-#define RUBY_SETJMP(env) sigsetjmp((env),0)
-#define RUBY_LONGJMP(env,val) siglongjmp((env),val)
-#define RUBY_JMP_BUF sigjmp_buf
-#define USE_MJIT 1
-#define USE_YJIT 0
-#define LOAD_RELATIVE 1
-#define RUBY_PLATFORM "arm64-darwin21"
-#define RBIMPL_COMPILER_SINCE_H
-#define RBIMPL_COMPILER_IS_H
-#define RBIMPL_COMPILER_IS(cc) RBIMPL_COMPILER_IS_ ## cc
-#define RBIMPL_COMPILER_IS_APPLE_H
-#define RBIMPL_COMPILER_IS_Apple 1
-#define RBIMPL_COMPILER_VERSION_MAJOR __clang_major__
-#define RBIMPL_COMPILER_VERSION_MINOR __clang_minor__
-#define RBIMPL_COMPILER_VERSION_PATCH __clang_patchlevel__
-#define RBIMPL_COMPILER_IS_CLANG_H
-#define RBIMPL_COMPILER_IS_Clang 0
-#define RBIMPL_COMPILER_IS_GCC_H
-#define RBIMPL_COMPILER_IS_INTEL_H
-#define RBIMPL_COMPILER_IS_Intel 0
-#define RBIMPL_COMPILER_IS_GCC 0
-#define RBIMPL_COMPILER_IS_MSVC_H
-#define RBIMPL_COMPILER_IS_MSVC 0
-#define RBIMPL_COMPILER_IS_SUNPRO_H
-#define RBIMPL_COMPILER_IS_SunPro 0
-#define RBIMPL_COMPILER_SINCE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR > (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR > (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH >= (z)))))))
-#define RBIMPL_COMPILER_BEFORE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR < (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR < (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH < (z)))))))
-#undef HAVE_PROTOTYPES
-#define HAVE_PROTOTYPES 1
-#undef HAVE_STDARG_PROTOTYPES
-#define HAVE_STDARG_PROTOTYPES 1
-#undef TOKEN_PASTE
-#define TOKEN_PASTE(x,y) x##y
-#define STRINGIZE(expr) STRINGIZE0(expr)
-#define STRINGIZE0(expr) #expr
-#define UNALIGNED_WORD_ACCESS 1
-#define RBIMPL_TEST3(q,w,e,...) e
-#define RBIMPL_TEST2(...) RBIMPL_TEST3(__VA_OPT__(,),1,0,0)
-#define RBIMPL_TEST1() RBIMPL_TEST2("ruby")
-#define HAVE___VA_OPT__
-#undef RBIMPL_TEST1
-#undef RBIMPL_TEST2
-#undef RBIMPL_TEST3
-#define USE_RVARGC 1
-#define __STDARG_H
-#define _VA_LIST
-#define va_start(ap,param) __builtin_va_start(ap, param)
-#define va_end(ap) __builtin_va_end(ap)
-#define va_arg(ap,type) __builtin_va_arg(ap, type)
-#define __va_copy(d,s) __builtin_va_copy(d,s)
-#define va_copy(dest,src) __builtin_va_copy(dest, src)
-#define __GNUC_VA_LIST 1
-#define RUBY_DEFINES_H 1
-#define _STDIO_H_
-#define __STDIO_H_
-#define _CDEFS_H_
-#define __BEGIN_DECLS
-#define __END_DECLS
-#define __P(protos) protos
-#define __CONCAT(x,y) x ## y
-#define __STRING(x) #x
-#define __const const
-#define __signed signed
-#define __volatile volatile
-#define __dead2 __attribute__((__noreturn__))
-#define __pure2 __attribute__((__const__))
-#define __stateful_pure __attribute__((__pure__))
-#define __unused __attribute__((__unused__))
-#define __used __attribute__((__used__))
-#define __cold __attribute__((__cold__))
-#define __returns_nonnull __attribute((returns_nonnull))
-#define __exported __attribute__((__visibility__("default")))
-#define __exported_push _Pragma("GCC visibility push(default)")
-#define __exported_pop _Pragma("GCC visibility pop")
-#define __deprecated __attribute__((__deprecated__))
-#define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
-#define __deprecated_enum_msg(_msg) __deprecated_msg(_msg)
-#define __kpi_deprecated(_msg)
-#define __unavailable __attribute__((__unavailable__))
-#define __kpi_unavailable
-#define __kpi_deprecated_arm64_macos_unavailable
-#define __dead
-#define __pure
-#define __restrict restrict
-#define __disable_tail_calls __attribute__((__disable_tail_calls__))
-#define __not_tail_called __attribute__((__not_tail_called__))
-#define __result_use_check __attribute__((__warn_unused_result__))
-#define __swift_unavailable(_msg) __attribute__((__availability__(swift, unavailable, message=_msg)))
-#define __abortlike __dead2 __cold __not_tail_called
-#define __header_inline inline
-#define __header_always_inline __header_inline __attribute__ ((__always_inline__))
-#define __unreachable_ok_push _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wunreachable-code\"")
-#define __unreachable_ok_pop _Pragma("clang diagnostic pop")
-#define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
-#define __printf0like(fmtarg,firstvararg) __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
-#define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
-#define __osloglike(fmtarg,firstvararg) __attribute__((__format__ (__os_log__, fmtarg, firstvararg)))
-#define __IDSTRING(name,string) static const char name[] __used = string
-#define __COPYRIGHT(s) __IDSTRING(copyright,s)
-#define __RCSID(s) __IDSTRING(rcsid,s)
-#define __SCCSID(s) __IDSTRING(sccsid,s)
-#define __PROJECT_VERSION(s) __IDSTRING(project_version,s)
-#define __FBSDID(s)
-#define __DECONST(type,var) __CAST_AWAY_QUALIFIER(var, const, type)
-#define __DEVOLATILE(type,var) __CAST_AWAY_QUALIFIER(var, volatile, type)
-#define __DEQUALIFY(type,var) __CAST_AWAY_QUALIFIER(var, const volatile, type)
-#define __alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
-#define __DARWIN_ONLY_64_BIT_INO_T 1
-#define __DARWIN_ONLY_UNIX_CONFORMANCE 1
-#define __DARWIN_ONLY_VERS_1050 1
-#define __DARWIN_UNIX03 1
-#define __DARWIN_64_BIT_INO_T 1
-#define __DARWIN_VERS_1050 1
-#define __DARWIN_NON_CANCELABLE 0
-#define __DARWIN_SUF_UNIX03
-#define __DARWIN_SUF_64_BIT_INO_T
-#define __DARWIN_SUF_1050
-#define __DARWIN_SUF_NON_CANCELABLE
-#define __DARWIN_SUF_EXTSN "$DARWIN_EXTSN"
-#define __DARWIN_ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_UNIX03)
-#define __DARWIN_ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
-#define __DARWIN_ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
-#define __DARWIN_NOCANCEL(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE)
-#define __DARWIN_INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T)
-#define __DARWIN_1050(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050)
-#define __DARWIN_1050ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T)
-#define __DARWIN_EXTSN(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN)
-#define __DARWIN_EXTSN_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN __DARWIN_SUF_NON_CANCELABLE)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_5(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_6(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_7(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_5(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_2(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_0(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_5(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_6(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_7(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_8(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_9(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_5(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_6(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_4(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_16(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_3(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_2(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_3(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_1(x)
-#define __DARWIN_ALIAS_STARTING(_mac,_iphone,x) __DARWIN_ALIAS_STARTING_MAC_##_mac(x)
-#define ___POSIX_C_DEPRECATED_STARTING_198808L
-#define ___POSIX_C_DEPRECATED_STARTING_199009L
-#define ___POSIX_C_DEPRECATED_STARTING_199209L
-#define ___POSIX_C_DEPRECATED_STARTING_199309L
-#define ___POSIX_C_DEPRECATED_STARTING_199506L
-#define ___POSIX_C_DEPRECATED_STARTING_200112L
-#define ___POSIX_C_DEPRECATED_STARTING_200809L
-#define __POSIX_C_DEPRECATED(ver) ___POSIX_C_DEPRECATED_STARTING_##ver
-#define __DARWIN_C_ANSI 010000L
-#define __DARWIN_C_FULL 900000L
-#define __DARWIN_C_LEVEL __DARWIN_C_FULL
-#define __DARWIN_NO_LONG_LONG 0
-#define _DARWIN_FEATURE_64_BIT_INODE 1
-#define _DARWIN_FEATURE_ONLY_64_BIT_INODE 1
-#define _DARWIN_FEATURE_ONLY_VERS_1050 1
-#define _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE 1
-#define _DARWIN_FEATURE_UNIX_CONFORMANCE 3
-#define __CAST_AWAY_QUALIFIER(variable,qualifier,type) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") _Pragma("GCC diagnostic ignored \"-Wcast-align\"") _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") ((type)(variable)) _Pragma("GCC diagnostic pop")
-#define __XNU_PRIVATE_EXTERN __attribute__((visibility("hidden")))
-#define __has_ptrcheck 0
-#define __single
-#define __unsafe_indexable
-#define __counted_by(N)
-#define __sized_by(N)
-#define __ended_by(E)
-#define __terminated_by(T)
-#define __null_terminated
-#define __ptrcheck_abi_assume_single()
-#define __ptrcheck_abi_assume_unsafe_indexable()
-#define __unsafe_forge_bidi_indexable(T,P,S) ((T)(P))
-#define __unsafe_forge_single(T,P) ((T)(P))
-#define __terminated_by_to_indexable(P) (P)
-#define __unsafe_terminated_by_to_indexable(P) (P)
-#define __null_terminated_to_indexable(P) (P)
-#define __unsafe_null_terminated_to_indexable(P) (P)
-#define __unsafe_terminated_by_from_indexable(T,P,...) (P)
-#define __unsafe_null_terminated_from_indexable(P,...) (P)
-#define __array_decay_dicards_count_in_parameters
-#define __unsafe_late_const
-#define __ASSUME_PTR_ABI_SINGLE_BEGIN __ptrcheck_abi_assume_single()
-#define __ASSUME_PTR_ABI_SINGLE_END __ptrcheck_abi_assume_unsafe_indexable()
-#define __header_indexable
-#define __header_bidi_indexable
-#define __compiler_barrier() __asm__ __volatile__("" ::: "memory")
-#define __enum_open __attribute__((__enum_extensibility__(open)))
-#define __enum_closed __attribute__((__enum_extensibility__(closed)))
-#define __enum_options __attribute__((__flag_enum__))
-#define __enum_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_open _name
-#define __enum_closed_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_closed _name
-#define __options_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_open __enum_options _name
-#define __options_closed_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_closed __enum_options _name
-#define __kernel_ptr_semantics
-#define __kernel_data_semantics
-#define __kernel_dual_semantics
-#define __AVAILABILITY__
-#define __API_TO_BE_DEPRECATED 100000
-#define __API_TO_BE_DEPRECATED_MACOS 100000
-#define __API_TO_BE_DEPRECATED_IOS 100000
-#define __API_TO_BE_DEPRECATED_TVOS 100000
-#define __API_TO_BE_DEPRECATED_WATCHOS 100000
-#define __API_TO_BE_DEPRECATED_MACCATALYST 100000
-#define __API_TO_BE_DEPRECATED_DRIVERKIT 100000
-#define __AVAILABILITY_VERSIONS__
-#define __MAC_10_0 1000
-#define __MAC_10_1 1010
-#define __MAC_10_2 1020
-#define __MAC_10_3 1030
-#define __MAC_10_4 1040
-#define __MAC_10_5 1050
-#define __MAC_10_6 1060
-#define __MAC_10_7 1070
-#define __MAC_10_8 1080
-#define __MAC_10_9 1090
-#define __MAC_10_10 101000
-#define __MAC_10_10_2 101002
-#define __MAC_10_10_3 101003
-#define __MAC_10_11 101100
-#define __MAC_10_11_2 101102
-#define __MAC_10_11_3 101103
-#define __MAC_10_11_4 101104
-#define __MAC_10_12 101200
-#define __MAC_10_12_1 101201
-#define __MAC_10_12_2 101202
-#define __MAC_10_12_4 101204
-#define __MAC_10_13 101300
-#define __MAC_10_13_1 101301
-#define __MAC_10_13_2 101302
-#define __MAC_10_13_4 101304
-#define __MAC_10_14 101400
-#define __MAC_10_14_1 101401
-#define __MAC_10_14_4 101404
-#define __MAC_10_14_6 101406
-#define __MAC_10_15 101500
-#define __MAC_10_15_1 101501
-#define __MAC_10_15_4 101504
-#define __MAC_10_16 101600
-#define __MAC_11_0 110000
-#define __MAC_11_1 110100
-#define __MAC_11_3 110300
-#define __MAC_11_4 110400
-#define __MAC_11_5 110500
-#define __MAC_11_6 110600
-#define __MAC_12_0 120000
-#define __MAC_12_1 120100
-#define __MAC_12_2 120200
-#define __MAC_12_3 120300
-#define __MAC_13_0 130000
-#define __MAC_13_1 130100
-#define __IPHONE_2_0 20000
-#define __IPHONE_2_1 20100
-#define __IPHONE_2_2 20200
-#define __IPHONE_3_0 30000
-#define __IPHONE_3_1 30100
-#define __IPHONE_3_2 30200
-#define __IPHONE_4_0 40000
-#define __IPHONE_4_1 40100
-#define __IPHONE_4_2 40200
-#define __IPHONE_4_3 40300
-#define __IPHONE_5_0 50000
-#define __IPHONE_5_1 50100
-#define __IPHONE_6_0 60000
-#define __IPHONE_6_1 60100
-#define __IPHONE_7_0 70000
-#define __IPHONE_7_1 70100
-#define __IPHONE_8_0 80000
-#define __IPHONE_8_1 80100
-#define __IPHONE_8_2 80200
-#define __IPHONE_8_3 80300
-#define __IPHONE_8_4 80400
-#define __IPHONE_9_0 90000
-#define __IPHONE_9_1 90100
-#define __IPHONE_9_2 90200
-#define __IPHONE_9_3 90300
-#define __IPHONE_10_0 100000
-#define __IPHONE_10_1 100100
-#define __IPHONE_10_2 100200
-#define __IPHONE_10_3 100300
-#define __IPHONE_11_0 110000
-#define __IPHONE_11_1 110100
-#define __IPHONE_11_2 110200
-#define __IPHONE_11_3 110300
-#define __IPHONE_11_4 110400
-#define __IPHONE_12_0 120000
-#define __IPHONE_12_1 120100
-#define __IPHONE_12_2 120200
-#define __IPHONE_12_3 120300
-#define __IPHONE_12_4 120400
-#define __IPHONE_13_0 130000
-#define __IPHONE_13_1 130100
-#define __IPHONE_13_2 130200
-#define __IPHONE_13_3 130300
-#define __IPHONE_13_4 130400
-#define __IPHONE_13_5 130500
-#define __IPHONE_13_6 130600
-#define __IPHONE_13_7 130700
-#define __IPHONE_14_0 140000
-#define __IPHONE_14_1 140100
-#define __IPHONE_14_2 140200
-#define __IPHONE_14_3 140300
-#define __IPHONE_14_5 140500
-#define __IPHONE_14_6 140600
-#define __IPHONE_14_7 140700
-#define __IPHONE_14_8 140800
-#define __IPHONE_15_0 150000
-#define __IPHONE_15_1 150100
-#define __IPHONE_15_2 150200
-#define __IPHONE_15_3 150300
-#define __IPHONE_15_4 150400
-#define __IPHONE_16_0 160000
-#define __IPHONE_16_1 160100
-#define __IPHONE_16_2 160200
-#define __TVOS_9_0 90000
-#define __TVOS_9_1 90100
-#define __TVOS_9_2 90200
-#define __TVOS_10_0 100000
-#define __TVOS_10_0_1 100001
-#define __TVOS_10_1 100100
-#define __TVOS_10_2 100200
-#define __TVOS_11_0 110000
-#define __TVOS_11_1 110100
-#define __TVOS_11_2 110200
-#define __TVOS_11_3 110300
-#define __TVOS_11_4 110400
-#define __TVOS_12_0 120000
-#define __TVOS_12_1 120100
-#define __TVOS_12_2 120200
-#define __TVOS_12_3 120300
-#define __TVOS_12_4 120400
-#define __TVOS_13_0 130000
-#define __TVOS_13_2 130200
-#define __TVOS_13_3 130300
-#define __TVOS_13_4 130400
-#define __TVOS_14_0 140000
-#define __TVOS_14_1 140100
-#define __TVOS_14_2 140200
-#define __TVOS_14_3 140300
-#define __TVOS_14_5 140500
-#define __TVOS_14_6 140600
-#define __TVOS_14_7 140700
-#define __TVOS_15_0 150000
-#define __TVOS_15_1 150100
-#define __TVOS_15_2 150200
-#define __TVOS_15_3 150300
-#define __TVOS_15_4 150400
-#define __TVOS_16_0 160000
-#define __TVOS_16_1 160100
-#define __TVOS_16_2 160200
-#define __WATCHOS_1_0 10000
-#define __WATCHOS_2_0 20000
-#define __WATCHOS_2_1 20100
-#define __WATCHOS_2_2 20200
-#define __WATCHOS_3_0 30000
-#define __WATCHOS_3_1 30100
-#define __WATCHOS_3_1_1 30101
-#define __WATCHOS_3_2 30200
-#define __WATCHOS_4_0 40000
-#define __WATCHOS_4_1 40100
-#define __WATCHOS_4_2 40200
-#define __WATCHOS_4_3 40300
-#define __WATCHOS_5_0 50000
-#define __WATCHOS_5_1 50100
-#define __WATCHOS_5_2 50200
-#define __WATCHOS_5_3 50300
-#define __WATCHOS_6_0 60000
-#define __WATCHOS_6_1 60100
-#define __WATCHOS_6_2 60200
-#define __WATCHOS_7_0 70000
-#define __WATCHOS_7_1 70100
-#define __WATCHOS_7_2 70200
-#define __WATCHOS_7_3 70300
-#define __WATCHOS_7_4 70400
-#define __WATCHOS_7_5 70500
-#define __WATCHOS_7_6 70600
-#define __WATCHOS_8_0 80000
-#define __WATCHOS_8_1 80100
-#define __WATCHOS_8_3 80300
-#define __WATCHOS_8_4 80400
-#define __WATCHOS_8_5 80500
-#define __WATCHOS_9_0 90000
-#define __WATCHOS_9_1 90100
-#define __WATCHOS_9_2 90200
-#define MAC_OS_X_VERSION_10_0 1000
-#define MAC_OS_X_VERSION_10_1 1010
-#define MAC_OS_X_VERSION_10_2 1020
-#define MAC_OS_X_VERSION_10_3 1030
-#define MAC_OS_X_VERSION_10_4 1040
-#define MAC_OS_X_VERSION_10_5 1050
-#define MAC_OS_X_VERSION_10_6 1060
-#define MAC_OS_X_VERSION_10_7 1070
-#define MAC_OS_X_VERSION_10_8 1080
-#define MAC_OS_X_VERSION_10_9 1090
-#define MAC_OS_X_VERSION_10_10 101000
-#define MAC_OS_X_VERSION_10_10_2 101002
-#define MAC_OS_X_VERSION_10_10_3 101003
-#define MAC_OS_X_VERSION_10_11 101100
-#define MAC_OS_X_VERSION_10_11_2 101102
-#define MAC_OS_X_VERSION_10_11_3 101103
-#define MAC_OS_X_VERSION_10_11_4 101104
-#define MAC_OS_X_VERSION_10_12 101200
-#define MAC_OS_X_VERSION_10_12_1 101201
-#define MAC_OS_X_VERSION_10_12_2 101202
-#define MAC_OS_X_VERSION_10_12_4 101204
-#define MAC_OS_X_VERSION_10_13 101300
-#define MAC_OS_X_VERSION_10_13_1 101301
-#define MAC_OS_X_VERSION_10_13_2 101302
-#define MAC_OS_X_VERSION_10_13_4 101304
-#define MAC_OS_X_VERSION_10_14 101400
-#define MAC_OS_X_VERSION_10_14_1 101401
-#define MAC_OS_X_VERSION_10_14_4 101404
-#define MAC_OS_X_VERSION_10_14_6 101406
-#define MAC_OS_X_VERSION_10_15 101500
-#define MAC_OS_X_VERSION_10_15_1 101501
-#define MAC_OS_X_VERSION_10_16 101600
-#define MAC_OS_VERSION_11_0 110000
-#define MAC_OS_VERSION_12_0 120000
-#define MAC_OS_VERSION_13_0 130000
-#define __DRIVERKIT_19_0 190000
-#define __DRIVERKIT_20_0 200000
-#define __DRIVERKIT_21_0 210000
-#define __AVAILABILITY_INTERNAL__
-#define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
-#define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_13_1
-#define __AVAILABILITY_INTERNAL_DEPRECATED __attribute__((deprecated))
-#define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated(_msg)))
-#define __AVAILABILITY_INTERNAL_UNAVAILABLE __attribute__((unavailable))
-#define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import))
-#define __AVAILABILITY_INTERNAL_REGULAR
-#define __ENABLE_LEGACY_MAC_AVAILABILITY 1
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.1,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.1,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.1,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.1,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.1,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2 __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.2,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.2,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.2,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.2,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.2,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.2,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3 __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.3,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.3,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.3,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.3,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.3,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.3,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4 __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.4,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.4,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.4,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.4,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.4,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5 __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEPRECATED__MAC_10_7 __attribute__((availability(macosx,introduced=10.5.DEPRECATED..MAC.10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.5,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.5,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.5,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.5,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6 __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.6,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.6,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.6,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.6,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.6,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7 __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_13_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.13.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.7,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.7,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8 __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.8,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.8,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.8,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9 __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.9,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.9,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.9,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0 __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0 __attribute__((availability(macosx,introduced=10.0,deprecated=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.0,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.0,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.0,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.0,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.0,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.0,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.0,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1 __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10 __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11 __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12 __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.12,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_13 __attribute__((availability(macosx,introduced=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_14 __attribute__((availability(macosx,introduced=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_14_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.14,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_15 __attribute__((availability(macosx,introduced=10.15)))
-#define __AVAILABILITY_INTERNAL__MAC_NA __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,unavailable)))
-#define __API_AVAILABLE_PLATFORM_macos(x) macos,introduced=x
-#define __API_AVAILABLE_PLATFORM_macosx(x) macosx,introduced=x
-#define __API_AVAILABLE_PLATFORM_ios(x) ios,introduced=x
-#define __API_AVAILABLE_PLATFORM_watchos(x) watchos,introduced=x
-#define __API_AVAILABLE_PLATFORM_tvos(x) tvos,introduced=x
-#define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
-#define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
-#define __API_AVAILABLE_PLATFORM_uikitformac(x) uikitformac,introduced=x
-#define __API_AVAILABLE_PLATFORM_driverkit(x) driverkit,introduced=x
-#define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))
-#define __API_AVAILABLE1(x) __API_A(x)
-#define __API_AVAILABLE2(x,y) __API_A(x) __API_A(y)
-#define __API_AVAILABLE3(x,y,z) __API_A(x) __API_A(y) __API_A(z)
-#define __API_AVAILABLE4(x,y,z,t) __API_A(x) __API_A(y) __API_A(z) __API_A(t)
-#define __API_AVAILABLE5(x,y,z,t,b) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b)
-#define __API_AVAILABLE6(x,y,z,t,b,m) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m)
-#define __API_AVAILABLE7(x,y,z,t,b,m,d) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m) __API_A(d)
-#define __API_AVAILABLE8(x,y,z,t,b,m,d,l) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m) __API_A(d) __API_A(l)
-#define __API_AVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_APPLY_TO any(record, enum, enum_constant, function, objc_method, objc_category, objc_protocol, objc_interface, objc_property, type_alias, variable, field)
-#define __API_RANGE_STRINGIFY(x) __API_RANGE_STRINGIFY2(x)
-#define __API_RANGE_STRINGIFY2(x) #x
-#define __API_A_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_AVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
-#define __API_AVAILABLE_BEGIN1(a) __API_A_BEGIN(a)
-#define __API_AVAILABLE_BEGIN2(a,b) __API_A_BEGIN(a) __API_A_BEGIN(b)
-#define __API_AVAILABLE_BEGIN3(a,b,c) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c)
-#define __API_AVAILABLE_BEGIN4(a,b,c,d) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d)
-#define __API_AVAILABLE_BEGIN5(a,b,c,d,e) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e)
-#define __API_AVAILABLE_BEGIN6(a,b,c,d,e,f) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f)
-#define __API_AVAILABLE_BEGIN7(a,b,c,d,e,f,g) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f) __API_A_BEGIN(g)
-#define __API_AVAILABLE_BEGIN8(a,b,c,d,e,f,g,h) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f) __API_A_BEGIN(g) __API_A_BEGIN(h)
-#define __API_AVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_DEPRECATED_PLATFORM_macos(x,y) macos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macosx(x,y) macosx,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_ios(x,y) ios,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_watchos(x,y) watchos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_tvos(x,y) tvos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_uikitformac(x) uikitformac,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_driverkit(x,y) driverkit,introduced=x,deprecated=y
-#define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))
-#define __API_DEPRECATED_MSG2(msg,x) __API_D(msg,x)
-#define __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,x) __API_D(msg,y)
-#define __API_DEPRECATED_MSG4(msg,x,y,z) __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,z)
-#define __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_DEPRECATED_MSG4(msg,x,y,z) __API_D(msg,t)
-#define __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_D(msg,b)
-#define __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_D(msg,m)
-#define __API_DEPRECATED_MSG8(msg,x,y,z,t,b,m,d) __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_D(msg,d)
-#define __API_DEPRECATED_MSG9(msg,x,y,z,t,b,m,d,l) __API_DEPRECATED_MSG8(msg,x,y,z,t,b,m,d) __API_D(msg,l)
-#define __API_DEPRECATED_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_D_BEGIN(msg,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO)))
-#define __API_DEPRECATED_BEGIN_MSG2(msg,a) __API_D_BEGIN(msg,a)
-#define __API_DEPRECATED_BEGIN_MSG3(msg,a,b) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b)
-#define __API_DEPRECATED_BEGIN_MSG4(msg,a,b,c) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c)
-#define __API_DEPRECATED_BEGIN_MSG5(msg,a,b,c,d) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d)
-#define __API_DEPRECATED_BEGIN_MSG6(msg,a,b,c,d,e) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e)
-#define __API_DEPRECATED_BEGIN_MSG7(msg,a,b,c,d,e,f) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f)
-#define __API_DEPRECATED_BEGIN_MSG8(msg,a,b,c,d,e,f,g) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f) __API_D_BEGIN(msg,g)
-#define __API_DEPRECATED_BEGIN_MSG9(msg,a,b,c,d,e,f,g,h) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f) __API_D_BEGIN(msg,g) __API_D_BEGIN(msg,h)
-#define __API_DEPRECATED_BEGIN_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep)))
-#define __API_DEPRECATED_REP2(rep,x) __API_R(rep,x)
-#define __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,x) __API_R(rep,y)
-#define __API_DEPRECATED_REP4(rep,x,y,z) __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,z)
-#define __API_DEPRECATED_REP5(rep,x,y,z,t) __API_DEPRECATED_REP4(rep,x,y,z) __API_R(rep,t)
-#define __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_DEPRECATED_REP5(rep,x,y,z,t) __API_R(rep,b)
-#define __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_R(rep,m)
-#define __API_DEPRECATED_REP8(rep,x,y,z,t,b,m,d) __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_R(rep,d)
-#define __API_DEPRECATED_REP9(rep,x,y,z,t,b,m,d,l) __API_DEPRECATED_REP8(rep,x,y,z,t,b,m,d) __API_R(rep,l)
-#define __API_DEPRECATED_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO)))
-#define __API_DEPRECATED_BEGIN_REP2(rep,a) __API_R_BEGIN(rep,a)
-#define __API_DEPRECATED_BEGIN_REP3(rep,a,b) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b)
-#define __API_DEPRECATED_BEGIN_REP4(rep,a,b,c) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c)
-#define __API_DEPRECATED_BEGIN_REP5(rep,a,b,c,d) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d)
-#define __API_DEPRECATED_BEGIN_REP6(rep,a,b,c,d,e) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e)
-#define __API_DEPRECATED_BEGIN_REP7(rep,a,b,c,d,e,f) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f)
-#define __API_DEPRECATED_BEGIN_REP8(rep,a,b,c,d,e,f,g) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f) __API_R_BEGIN(rep,g)
-#define __API_DEPRECATED_BEGIN_REP9(rep,a,b,c,d,e,f,g,h) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f) __API_R_BEGIN(rep,g) __API_R_BEGIN(rep,h)
-#define __API_DEPRECATED_BEGIN_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_UNAVAILABLE_PLATFORM_macos macos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macosx macosx,unavailable
-#define __API_UNAVAILABLE_PLATFORM_ios ios,unavailable
-#define __API_UNAVAILABLE_PLATFORM_watchos watchos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_tvos tvos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
-#define __API_UNAVAILABLE_PLATFORM_uikitformac(x) uikitformac,unavailable
-#define __API_UNAVAILABLE_PLATFORM_driverkit driverkit,unavailable
-#define __API_U(x) __attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x)))
-#define __API_UNAVAILABLE1(x) __API_U(x)
-#define __API_UNAVAILABLE2(x,y) __API_U(x) __API_U(y)
-#define __API_UNAVAILABLE3(x,y,z) __API_UNAVAILABLE2(x,y) __API_U(z)
-#define __API_UNAVAILABLE4(x,y,z,t) __API_UNAVAILABLE3(x,y,z) __API_U(t)
-#define __API_UNAVAILABLE5(x,y,z,t,b) __API_UNAVAILABLE4(x,y,z,t) __API_U(b)
-#define __API_UNAVAILABLE6(x,y,z,t,b,m) __API_UNAVAILABLE5(x,y,z,t,b) __API_U(m)
-#define __API_UNAVAILABLE7(x,y,z,t,b,m,d) __API_UNAVAILABLE6(x,y,z,t,b,m) __API_U(d)
-#define __API_UNAVAILABLE8(x,y,z,t,b,m,d,l) __API_UNAVAILABLE7(x,y,z,t,b,m,d) __API_U(l)
-#define __API_UNAVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_U_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
-#define __API_UNAVAILABLE_BEGIN1(a) __API_U_BEGIN(a)
-#define __API_UNAVAILABLE_BEGIN2(a,b) __API_U_BEGIN(a) __API_U_BEGIN(b)
-#define __API_UNAVAILABLE_BEGIN3(a,b,c) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c)
-#define __API_UNAVAILABLE_BEGIN4(a,b,c,d) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d)
-#define __API_UNAVAILABLE_BEGIN5(a,b,c,d,e) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e)
-#define __API_UNAVAILABLE_BEGIN6(a,b,c,d,e,f) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f)
-#define __API_UNAVAILABLE_BEGIN7(a,b,c,d,e,f,g) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f) __API_U_BEGIN(g)
-#define __API_UNAVAILABLE_BEGIN8(a,b,c,d,e,f,g,h) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f) __API_U_BEGIN(g) __API_U_BEGIN(h)
-#define __API_UNAVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __swift_compiler_version_at_least(...) 1
-#define __SPI_AVAILABLE(...)
-#define __OSX_AVAILABLE_STARTING(_osx,_ios) __AVAILABILITY_INTERNAL##_osx
-#define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro,_osxDep,_iosIntro,_iosDep) __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep
-#define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro,_osxDep,_iosIntro,_iosDep,_msg) __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep##_MSG(_msg)
-#define __OS_AVAILABILITY(_target,_availability) __attribute__((availability(_target,_availability)))
-#define __OS_AVAILABILITY_MSG(_target,_availability,_msg) __attribute__((availability(_target,_availability,message=_msg)))
-#define __OSX_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(macosx_app_extension,unavailable,_msg)
-#define __IOS_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(ios_app_extension,unavailable,_msg)
-#define __OS_EXTENSION_UNAVAILABLE(_msg) __OSX_EXTENSION_UNAVAILABLE(_msg) __IOS_EXTENSION_UNAVAILABLE(_msg)
-#define __OSX_UNAVAILABLE __OS_AVAILABILITY(macosx,unavailable)
-#define __OSX_AVAILABLE(_vers) __OS_AVAILABILITY(macosx,introduced=_vers)
-#define __OSX_DEPRECATED(_start,_dep,_msg) __OSX_AVAILABLE(_start) __OS_AVAILABILITY_MSG(macosx,deprecated=_dep,_msg)
-#define __IOS_UNAVAILABLE __OS_AVAILABILITY(ios,unavailable)
-#define __IOS_PROHIBITED __OS_AVAILABILITY(ios,unavailable)
-#define __IOS_AVAILABLE(_vers) __OS_AVAILABILITY(ios,introduced=_vers)
-#define __IOS_DEPRECATED(_start,_dep,_msg) __IOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(ios,deprecated=_dep,_msg)
-#define __TVOS_UNAVAILABLE __OS_AVAILABILITY(tvos,unavailable)
-#define __TVOS_PROHIBITED __OS_AVAILABILITY(tvos,unavailable)
-#define __TVOS_AVAILABLE(_vers) __OS_AVAILABILITY(tvos,introduced=_vers)
-#define __TVOS_DEPRECATED(_start,_dep,_msg) __TVOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(tvos,deprecated=_dep,_msg)
-#define __WATCHOS_UNAVAILABLE __OS_AVAILABILITY(watchos,unavailable)
-#define __WATCHOS_PROHIBITED __OS_AVAILABILITY(watchos,unavailable)
-#define __WATCHOS_AVAILABLE(_vers) __OS_AVAILABILITY(watchos,introduced=_vers)
-#define __WATCHOS_DEPRECATED(_start,_dep,_msg) __WATCHOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(watchos,deprecated=_dep,_msg)
-#define __SWIFT_UNAVAILABLE __OS_AVAILABILITY(swift,unavailable)
-#define __SWIFT_UNAVAILABLE_MSG(_msg) __OS_AVAILABILITY_MSG(swift,unavailable,_msg)
-#define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE8, __API_AVAILABLE7, __API_AVAILABLE6, __API_AVAILABLE5, __API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1, 0)(__VA_ARGS__)
-#define __API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_AVAILABLE_BEGIN8, __API_AVAILABLE_BEGIN7, __API_AVAILABLE_BEGIN6, __API_AVAILABLE_BEGIN5, __API_AVAILABLE_BEGIN4, __API_AVAILABLE_BEGIN3, __API_AVAILABLE_BEGIN2, __API_AVAILABLE_BEGIN1, 0)(__VA_ARGS__)
-#define __API_AVAILABLE_END _Pragma("clang attribute pop")
-#define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG9, __API_DEPRECATED_MSG8,__API_DEPRECATED_MSG7,__API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP9,__API_DEPRECATED_REP8,__API_DEPRECATED_REP7,__API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_MSG9, __API_DEPRECATED_BEGIN_MSG8,__API_DEPRECATED_BEGIN_MSG7, __API_DEPRECATED_BEGIN_MSG6, __API_DEPRECATED_BEGIN_MSG5, __API_DEPRECATED_BEGIN_MSG4, __API_DEPRECATED_BEGIN_MSG3, __API_DEPRECATED_BEGIN_MSG2, __API_DEPRECATED_BEGIN_MSG1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_END _Pragma("clang attribute pop")
-#define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_REP9, __API_DEPRECATED_BEGIN_REP8,__API_DEPRECATED_BEGIN_REP7, __API_DEPRECATED_BEGIN_REP6, __API_DEPRECATED_BEGIN_REP5, __API_DEPRECATED_BEGIN_REP4, __API_DEPRECATED_BEGIN_REP3, __API_DEPRECATED_BEGIN_REP2, __API_DEPRECATED_BEGIN_REP1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_WITH_REPLACEMENT_END _Pragma("clang attribute pop")
-#define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE8,__API_UNAVAILABLE7,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1, 0)(__VA_ARGS__)
-#define __API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE_BEGIN8,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6, __API_UNAVAILABLE_BEGIN5, __API_UNAVAILABLE_BEGIN4, __API_UNAVAILABLE_BEGIN3, __API_UNAVAILABLE_BEGIN2, __API_UNAVAILABLE_BEGIN1, 0)(__VA_ARGS__)
-#define __API_UNAVAILABLE_END _Pragma("clang attribute pop")
-#define __SPI_DEPRECATED(...)
-#define __SPI_DEPRECATED_WITH_REPLACEMENT(...)
-#define __TYPES_H_
-#define _SYS__TYPES_H_
-#define _BSD_MACHINE__TYPES_H_
-#define _BSD_ARM__TYPES_H_
-#define __DARWIN_NULL ((void *)0)
-#define _SYS__PTHREAD_TYPES_H_
-#define __PTHREAD_SIZE__ 8176
-#define __PTHREAD_ATTR_SIZE__ 56
-#define __PTHREAD_MUTEXATTR_SIZE__ 8
-#define __PTHREAD_MUTEX_SIZE__ 56
-#define __PTHREAD_CONDATTR_SIZE__ 8
-#define __PTHREAD_COND_SIZE__ 40
-#define __PTHREAD_ONCE_SIZE__ 8
-#define __PTHREAD_RWLOCK_SIZE__ 192
-#define __PTHREAD_RWLOCKATTR_SIZE__ 16
-#define __offsetof(type,field) __builtin_offsetof(type, field)
-#define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
-#define __strftimelike(fmtarg) __attribute__((__format__ (__strftime__, fmtarg, 0)))
-#define __DARWIN_WCHAR_MAX __WCHAR_MAX__
-#define __DARWIN_WCHAR_MIN (-0x7fffffff - 1)
-#define __DARWIN_WEOF ((__darwin_wint_t)-1)
-#define _VA_LIST_T
-#define _BSD_MACHINE_TYPES_H_
-#define _ARM_MACHTYPES_H_
-#define _MACHTYPES_H_
-#define _INT8_T
-#define _INT16_T
-#define _INT32_T
-#define _INT64_T
-#define _U_INT8_T
-#define _U_INT16_T
-#define _U_INT32_T
-#define _U_INT64_T
-#define _INTPTR_T
-#define _UINTPTR_T
-#define USER_ADDR_NULL ((user_addr_t) 0)
-#define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr)))
-#define _SIZE_T
-#define NULL __DARWIN_NULL
-#define _SYS_STDIO_H_
-#define RENAME_SECLUDE 0x00000001
-#define RENAME_SWAP 0x00000002
-#define RENAME_EXCL 0x00000004
-#define RENAME_RESERVED1 0x00000008
-#define RENAME_NOFOLLOW_ANY 0x00000010
-#define _FSTDIO
-#define __SLBF 0x0001
-#define __SNBF 0x0002
-#define __SRD 0x0004
-#define __SWR 0x0008
-#define __SRW 0x0010
-#define __SEOF 0x0020
-#define __SERR 0x0040
-#define __SMBF 0x0080
-#define __SAPP 0x0100
-#define __SSTR 0x0200
-#define __SOPT 0x0400
-#define __SNPT 0x0800
-#define __SOFF 0x1000
-#define __SMOD 0x2000
-#define __SALC 0x4000
-#define __SIGN 0x8000
-#define _IOFBF 0
-#define _IOLBF 1
-#define _IONBF 2
-#define BUFSIZ 1024
-#define EOF (-1)
-#define FOPEN_MAX 20
-#define FILENAME_MAX 1024
-#define P_tmpdir "/var/tmp/"
-#define L_tmpnam 1024
-#define TMP_MAX 308915776
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#define stdin __stdinp
-#define stdout __stdoutp
-#define stderr __stderrp
-#define L_ctermid 1024
-#define _CTERMID_H_
-#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
-#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
-#define __sferror(p) (((p)->_flags & __SERR) != 0)
-#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
-#define __sfileno(p) ((p)->_file)
-#define getc_unlocked(fp) __sgetc(fp)
-#define putc_unlocked(x,fp) __sputc(x, fp)
-#define getchar_unlocked() getc_unlocked(stdin)
-#define putchar_unlocked(x) putc_unlocked(x, stdout)
-#define _OFF_T
-#define _SSIZE_T
-#define fropen(cookie,fn) funopen(cookie, fn, 0, 0, 0)
-#define fwopen(cookie,fn) funopen(cookie, 0, fn, 0, 0)
-#define feof_unlocked(p) __sfeof(p)
-#define ferror_unlocked(p) __sferror(p)
-#define clearerr_unlocked(p) __sclearerr(p)
-#define fileno_unlocked(p) __sfileno(p)
-#define _SECURE__STDIO_H_
-#define _SECURE__COMMON_H_
-#undef _USE_FORTIFY_LEVEL
-#define _USE_FORTIFY_LEVEL 2
-#define __darwin_obsz0(object) __builtin_object_size (object, 0)
-#define __darwin_obsz(object) __builtin_object_size (object, _USE_FORTIFY_LEVEL > 1 ? 1 : 0)
-#undef sprintf
-#define sprintf(str,...) __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
-#undef snprintf
-#define snprintf(str,len,...) __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
-#undef vsprintf
-#define vsprintf(str,format,ap) __builtin___vsprintf_chk (str, 0, __darwin_obsz(str), format, ap)
-#undef vsnprintf
-#define vsnprintf(str,len,format,ap) __builtin___vsnprintf_chk (str, len, 0, __darwin_obsz(str), format, ap)
-#define _SYS_TYPES_H_
-#define __SYS_APPLEAPIOPTS_H__
-#define __APPLE_API_STANDARD
-#define __APPLE_API_STABLE
-#define __APPLE_API_EVOLVING
-#define __APPLE_API_UNSTABLE
-#define __APPLE_API_PRIVATE
-#define __APPLE_API_OBSOLETE
-#define _BSD_MACHINE_ENDIAN_H_
-#define _ARM__ENDIAN_H_
-#define _QUAD_HIGHWORD 1
-#define _QUAD_LOWWORD 0
-#define __DARWIN_LITTLE_ENDIAN 1234
-#define __DARWIN_BIG_ENDIAN 4321
-#define __DARWIN_PDP_ENDIAN 3412
-#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN
-#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
-#define BIG_ENDIAN __DARWIN_BIG_ENDIAN
-#define PDP_ENDIAN __DARWIN_PDP_ENDIAN
-#define BYTE_ORDER __DARWIN_BYTE_ORDER
-#define _SYS__ENDIAN_H_
-#define _OS__OSBYTEORDER_H
-#define __DARWIN_OSSwapConstInt16(x) ((__uint16_t)((((__uint16_t)(x) & 0xff00U) >> 8) | (((__uint16_t)(x) & 0x00ffU) << 8)))
-#define __DARWIN_OSSwapConstInt32(x) ((__uint32_t)((((__uint32_t)(x) & 0xff000000U) >> 24) | (((__uint32_t)(x) & 0x00ff0000U) >> 8) | (((__uint32_t)(x) & 0x0000ff00U) << 8) | (((__uint32_t)(x) & 0x000000ffU) << 24)))
-#define __DARWIN_OSSwapConstInt64(x) ((__uint64_t)((((__uint64_t)(x) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(x) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(x) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(x) & 0x00000000000000ffULL) << 56)))
-#define __DARWIN_OS_INLINE static inline
-#define _OS_OSBYTEORDERARM_H
-#define __CLANG_STDINT_H
-#define _STDINT_H_
-#define __WORDSIZE 64
-#define _UINT8_T
-#define _UINT16_T
-#define _UINT32_T
-#define _UINT64_T
-#define _INTMAX_T
-#define _UINTMAX_T
-#define INT8_C(v) (v)
-#define INT16_C(v) (v)
-#define INT32_C(v) (v)
-#define INT64_C(v) (v ## LL)
-#define UINT8_C(v) (v)
-#define UINT16_C(v) (v)
-#define UINT32_C(v) (v ## U)
-#define UINT64_C(v) (v ## ULL)
-#define INTMAX_C(v) (v ## L)
-#define UINTMAX_C(v) (v ## UL)
-#define INT8_MAX 127
-#define INT16_MAX 32767
-#define INT32_MAX 2147483647
-#define INT64_MAX 9223372036854775807LL
-#define INT8_MIN -128
-#define INT16_MIN -32768
-#define INT32_MIN (-INT32_MAX-1)
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT8_MAX 255
-#define UINT16_MAX 65535
-#define UINT32_MAX 4294967295U
-#define UINT64_MAX 18446744073709551615ULL
-#define INT_LEAST8_MIN INT8_MIN
-#define INT_LEAST16_MIN INT16_MIN
-#define INT_LEAST32_MIN INT32_MIN
-#define INT_LEAST64_MIN INT64_MIN
-#define INT_LEAST8_MAX INT8_MAX
-#define INT_LEAST16_MAX INT16_MAX
-#define INT_LEAST32_MAX INT32_MAX
-#define INT_LEAST64_MAX INT64_MAX
-#define UINT_LEAST8_MAX UINT8_MAX
-#define UINT_LEAST16_MAX UINT16_MAX
-#define UINT_LEAST32_MAX UINT32_MAX
-#define UINT_LEAST64_MAX UINT64_MAX
-#define INT_FAST8_MIN INT8_MIN
-#define INT_FAST16_MIN INT16_MIN
-#define INT_FAST32_MIN INT32_MIN
-#define INT_FAST64_MIN INT64_MIN
-#define INT_FAST8_MAX INT8_MAX
-#define INT_FAST16_MAX INT16_MAX
-#define INT_FAST32_MAX INT32_MAX
-#define INT_FAST64_MAX INT64_MAX
-#define UINT_FAST8_MAX UINT8_MAX
-#define UINT_FAST16_MAX UINT16_MAX
-#define UINT_FAST32_MAX UINT32_MAX
-#define UINT_FAST64_MAX UINT64_MAX
-#define INTPTR_MAX 9223372036854775807L
-#define INTPTR_MIN (-INTPTR_MAX-1)
-#define UINTPTR_MAX 18446744073709551615UL
-#define INTMAX_MAX INTMAX_C(9223372036854775807)
-#define UINTMAX_MAX UINTMAX_C(18446744073709551615)
-#define INTMAX_MIN (-INTMAX_MAX-1)
-#define PTRDIFF_MIN INTMAX_MIN
-#define PTRDIFF_MAX INTMAX_MAX
-#define SIZE_MAX UINTPTR_MAX
-#define RSIZE_MAX (SIZE_MAX >> 1)
-#define WCHAR_MAX __WCHAR_MAX__
-#define WCHAR_MIN (-WCHAR_MAX-1)
-#define WINT_MIN INT32_MIN
-#define WINT_MAX INT32_MAX
-#define SIG_ATOMIC_MIN INT32_MIN
-#define SIG_ATOMIC_MAX INT32_MAX
-#define _ARM_ARCH_H
-#define __DARWIN_OSSwapInt16(x) ((__uint16_t)(__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt16(x) : _OSSwapInt16(x)))
-#define __DARWIN_OSSwapInt32(x) (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt32(x) : _OSSwapInt32(x))
-#define __DARWIN_OSSwapInt64(x) (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x))
-#define ntohs(x) __DARWIN_OSSwapInt16(x)
-#define htons(x) __DARWIN_OSSwapInt16(x)
-#define ntohl(x) __DARWIN_OSSwapInt32(x)
-#define htonl(x) __DARWIN_OSSwapInt32(x)
-#define ntohll(x) __DARWIN_OSSwapInt64(x)
-#define htonll(x) __DARWIN_OSSwapInt64(x)
-#define NTOHL(x) (x) = ntohl((__uint32_t)x)
-#define NTOHS(x) (x) = ntohs((__uint16_t)x)
-#define NTOHLL(x) (x) = ntohll((__uint64_t)x)
-#define HTONL(x) (x) = htonl((__uint32_t)x)
-#define HTONS(x) (x) = htons((__uint16_t)x)
-#define HTONLL(x) (x) = htonll((__uint64_t)x)
-#define _U_CHAR
-#define _U_SHORT
-#define _U_INT
-#define _U_LONG
-#define _CADDR_T
-#define _DEV_T
-#define _BLKCNT_T
-#define _BLKSIZE_T
-#define _GID_T
-#define _IN_ADDR_T
-#define _IN_PORT_T
-#define _INO_T
-#define _INO64_T
-#define _KEY_T
-#define _MODE_T
-#define _NLINK_T
-#define _ID_T
-#define _PID_T
-#define _UID_T
-#define major(x) ((int32_t)(((u_int32_t)(x) >> 24) & 0xff))
-#define minor(x) ((int32_t)((x) & 0xffffff))
-#define makedev(x,y) ((dev_t)(((x) << 24) | (y)))
-#define _CLOCK_T
-#define _TIME_T
-#define _USECONDS_T
-#define _SUSECONDS_T
-#define _RSIZE_T
-#define _ERRNO_T
-#define _FD_SET
-#define __DARWIN_FD_SETSIZE 1024
-#define __DARWIN_NBBY 8
-#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY)
-#define __DARWIN_howmany(x,y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1))
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunguarded-availability-new"
-#pragma clang diagnostic pop
-#define __DARWIN_FD_SET(n,p) __darwin_fd_set((n), (p))
-#define __DARWIN_FD_CLR(n,p) __darwin_fd_clr((n), (p))
-#define __DARWIN_FD_ISSET(n,p) __darwin_fd_isset((n), (p))
-#define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
-#define __DARWIN_FD_COPY(f,t) bcopy(f, t, sizeof(*(f)))
-#define NBBY __DARWIN_NBBY
-#define NFDBITS __DARWIN_NFDBITS
-#define howmany(x,y) __DARWIN_howmany(x, y)
-#define FD_SETSIZE __DARWIN_FD_SETSIZE
-#define FD_SET(n,p) __DARWIN_FD_SET(n, p)
-#define FD_CLR(n,p) __DARWIN_FD_CLR(n, p)
-#define FD_ZERO(p) __DARWIN_FD_ZERO(p)
-#define FD_ISSET(n,p) __DARWIN_FD_ISSET(n, p)
-#define FD_COPY(f,t) __DARWIN_FD_COPY(f, t)
-#define _PTHREAD_ATTR_T
-#define _PTHREAD_COND_T
-#define _PTHREAD_CONDATTR_T
-#define _PTHREAD_MUTEX_T
-#define _PTHREAD_MUTEXATTR_T
-#define _PTHREAD_ONCE_T
-#define _PTHREAD_RWLOCK_T
-#define _PTHREAD_RWLOCKATTR_T
-#define _PTHREAD_T
-#define _PTHREAD_KEY_T
-#define _FSBLKCNT_T
-#define _FSFILCNT_T
-#define _SYS_STAT_H_
-#define _STRUCT_TIMESPEC struct timespec
-#define __DARWIN_STRUCT_STAT64_TIMES struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec;
-#define __DARWIN_STRUCT_STAT64 { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; __DARWIN_STRUCT_STAT64_TIMES off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; }
-#define st_atime st_atimespec.tv_sec
-#define st_mtime st_mtimespec.tv_sec
-#define st_ctime st_ctimespec.tv_sec
-#define st_birthtime st_birthtimespec.tv_sec
-#define S_IFMT 0170000
-#define S_IFIFO 0010000
-#define S_IFCHR 0020000
-#define S_IFDIR 0040000
-#define S_IFBLK 0060000
-#define S_IFREG 0100000
-#define S_IFLNK 0120000
-#define S_IFSOCK 0140000
-#define S_IFWHT 0160000
-#define S_IRWXU 0000700
-#define S_IRUSR 0000400
-#define S_IWUSR 0000200
-#define S_IXUSR 0000100
-#define S_IRWXG 0000070
-#define S_IRGRP 0000040
-#define S_IWGRP 0000020
-#define S_IXGRP 0000010
-#define S_IRWXO 0000007
-#define S_IROTH 0000004
-#define S_IWOTH 0000002
-#define S_IXOTH 0000001
-#define S_ISUID 0004000
-#define S_ISGID 0002000
-#define S_ISVTX 0001000
-#define S_ISTXT S_ISVTX
-#define S_IREAD S_IRUSR
-#define S_IWRITE S_IWUSR
-#define S_IEXEC S_IXUSR
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-#define S_ISWHT(m) (((m) & S_IFMT) == S_IFWHT)
-#define S_TYPEISMQ(buf) (0)
-#define S_TYPEISSEM(buf) (0)
-#define S_TYPEISSHM(buf) (0)
-#define S_TYPEISTMO(buf) (0)
-#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
-#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
-#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
-#define S_BLKSIZE 512
-#define UF_SETTABLE 0x0000ffff
-#define UF_NODUMP 0x00000001
-#define UF_IMMUTABLE 0x00000002
-#define UF_APPEND 0x00000004
-#define UF_OPAQUE 0x00000008
-#define UF_COMPRESSED 0x00000020
-#define UF_TRACKED 0x00000040
-#define UF_DATAVAULT 0x00000080
-#define UF_HIDDEN 0x00008000
-#define SF_SUPPORTED 0x009f0000
-#define SF_SETTABLE 0x3fff0000
-#define SF_SYNTHETIC 0xc0000000
-#define SF_ARCHIVED 0x00010000
-#define SF_IMMUTABLE 0x00020000
-#define SF_APPEND 0x00040000
-#define SF_RESTRICTED 0x00080000
-#define SF_NOUNLINK 0x00100000
-#define SF_FIRMLINK 0x00800000
-#define SF_DATALESS 0x40000000
-#define EF_MAY_SHARE_BLOCKS 0x00000001
-#define EF_NO_XATTRS 0x00000002
-#define EF_IS_SYNC_ROOT 0x00000004
-#define EF_IS_PURGEABLE 0x00000008
-#define EF_IS_SPARSE 0x00000010
-#define EF_IS_SYNTHETIC 0x00000020
-#define UTIME_NOW -1
-#define UTIME_OMIT -2
-#define _FILESEC_T
-#define _STDLIB_H_
-#define _SYS_WAIT_H_
-#define _SYS_SIGNAL_H_
-#define __DARWIN_NSIG 32
-#define NSIG __DARWIN_NSIG
-#define _BSD_MACHINE_SIGNAL_H_
-#define _ARM_SIGNAL_ 1
-#define SIGHUP 1
-#define SIGINT 2
-#define SIGQUIT 3
-#define SIGILL 4
-#define SIGTRAP 5
-#define SIGABRT 6
-#define SIGIOT SIGABRT
-#define SIGEMT 7
-#define SIGFPE 8
-#define SIGKILL 9
-#define SIGBUS 10
-#define SIGSEGV 11
-#define SIGSYS 12
-#define SIGPIPE 13
-#define SIGALRM 14
-#define SIGTERM 15
-#define SIGURG 16
-#define SIGSTOP 17
-#define SIGTSTP 18
-#define SIGCONT 19
-#define SIGCHLD 20
-#define SIGTTIN 21
-#define SIGTTOU 22
-#define SIGIO 23
-#define SIGXCPU 24
-#define SIGXFSZ 25
-#define SIGVTALRM 26
-#define SIGPROF 27
-#define SIGWINCH 28
-#define SIGINFO 29
-#define SIGUSR1 30
-#define SIGUSR2 31
-#define SIG_DFL (void (*)(int))0
-#define SIG_IGN (void (*)(int))1
-#define SIG_HOLD (void (*)(int))5
-#define SIG_ERR ((void (*)(int))-1)
-#define _BSD_MACHINE__MCONTEXT_H_
-#define __ARM_MCONTEXT_H_
-#define _MACH_MACHINE__STRUCTS_H_
-#define _MACH_ARM__STRUCTS_H_
-#define _STRUCT_ARM_EXCEPTION_STATE struct __darwin_arm_exception_state
-#define _STRUCT_ARM_EXCEPTION_STATE64 struct __darwin_arm_exception_state64
-#define _STRUCT_ARM_THREAD_STATE struct __darwin_arm_thread_state
-#define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
-#define _STRUCT_ARM_THREAD_STATE64 struct __darwin_arm_thread_state64
-#define __darwin_arm_thread_state64_get_pc(ts) ((ts).__pc)
-#define __darwin_arm_thread_state64_get_pc_fptr(ts) ((void*)(uintptr_t)((ts).__pc))
-#define __darwin_arm_thread_state64_set_pc_fptr(ts,fptr) ((ts).__pc = (uintptr_t)(fptr))
-#define __darwin_arm_thread_state64_get_lr(ts) ((ts).__lr)
-#define __darwin_arm_thread_state64_get_lr_fptr(ts) ((void*)(uintptr_t)((ts).__lr))
-#define __darwin_arm_thread_state64_set_lr_fptr(ts,fptr) ((ts).__lr = (uintptr_t)(fptr))
-#define __darwin_arm_thread_state64_get_sp(ts) ((ts).__sp)
-#define __darwin_arm_thread_state64_set_sp(ts,ptr) ((ts).__sp = (uintptr_t)(ptr))
-#define __darwin_arm_thread_state64_get_fp(ts) ((ts).__fp)
-#define __darwin_arm_thread_state64_set_fp(ts,ptr) ((ts).__fp = (uintptr_t)(ptr))
-#define __darwin_arm_thread_state64_ptrauth_strip(ts) (void)(ts)
-#define _STRUCT_ARM_VFP_STATE struct __darwin_arm_vfp_state
-#define _STRUCT_ARM_NEON_STATE64 struct __darwin_arm_neon_state64
-#define _STRUCT_ARM_NEON_STATE struct __darwin_arm_neon_state
-#define _STRUCT_ARM_PAGEIN_STATE struct __arm_pagein_state
-#define _STRUCT_ARM_LEGACY_DEBUG_STATE struct __arm_legacy_debug_state
-#define _STRUCT_ARM_DEBUG_STATE32 struct __darwin_arm_debug_state32
-#define _STRUCT_ARM_DEBUG_STATE64 struct __darwin_arm_debug_state64
-#define _STRUCT_ARM_CPMU_STATE64 struct __darwin_arm_cpmu_state64
-#define _STRUCT_MCONTEXT32 struct __darwin_mcontext32
-#define _STRUCT_MCONTEXT64 struct __darwin_mcontext64
-#define _MCONTEXT_T
-#define _STRUCT_MCONTEXT _STRUCT_MCONTEXT64
-#define _STRUCT_SIGALTSTACK struct __darwin_sigaltstack
-#define _STRUCT_UCONTEXT struct __darwin_ucontext
-#define _SIGSET_T
-#define SIGEV_NONE 0
-#define SIGEV_SIGNAL 1
-#define SIGEV_THREAD 3
-#define ILL_NOOP 0
-#define ILL_ILLOPC 1
-#define ILL_ILLTRP 2
-#define ILL_PRVOPC 3
-#define ILL_ILLOPN 4
-#define ILL_ILLADR 5
-#define ILL_PRVREG 6
-#define ILL_COPROC 7
-#define ILL_BADSTK 8
-#define FPE_NOOP 0
-#define FPE_FLTDIV 1
-#define FPE_FLTOVF 2
-#define FPE_FLTUND 3
-#define FPE_FLTRES 4
-#define FPE_FLTINV 5
-#define FPE_FLTSUB 6
-#define FPE_INTDIV 7
-#define FPE_INTOVF 8
-#define SEGV_NOOP 0
-#define SEGV_MAPERR 1
-#define SEGV_ACCERR 2
-#define BUS_NOOP 0
-#define BUS_ADRALN 1
-#define BUS_ADRERR 2
-#define BUS_OBJERR 3
-#define TRAP_BRKPT 1
-#define TRAP_TRACE 2
-#define CLD_NOOP 0
-#define CLD_EXITED 1
-#define CLD_KILLED 2
-#define CLD_DUMPED 3
-#define CLD_TRAPPED 4
-#define CLD_STOPPED 5
-#define CLD_CONTINUED 6
-#define POLL_IN 1
-#define POLL_OUT 2
-#define POLL_MSG 3
-#define POLL_ERR 4
-#define POLL_PRI 5
-#define POLL_HUP 6
-#define sa_handler __sigaction_u.__sa_handler
-#define sa_sigaction __sigaction_u.__sa_sigaction
-#define SA_ONSTACK 0x0001
-#define SA_RESTART 0x0002
-#define SA_RESETHAND 0x0004
-#define SA_NOCLDSTOP 0x0008
-#define SA_NODEFER 0x0010
-#define SA_NOCLDWAIT 0x0020
-#define SA_SIGINFO 0x0040
-#define SA_USERTRAMP 0x0100
-#define SA_64REGSET 0x0200
-#define SA_USERSPACE_MASK (SA_ONSTACK | SA_RESTART | SA_RESETHAND | SA_NOCLDSTOP | SA_NODEFER | SA_NOCLDWAIT | SA_SIGINFO)
-#define SIG_BLOCK 1
-#define SIG_UNBLOCK 2
-#define SIG_SETMASK 3
-#define SI_USER 0x10001
-#define SI_QUEUE 0x10002
-#define SI_TIMER 0x10003
-#define SI_ASYNCIO 0x10004
-#define SI_MESGQ 0x10005
-#define SS_ONSTACK 0x0001
-#define SS_DISABLE 0x0004
-#define MINSIGSTKSZ 32768
-#define SIGSTKSZ 131072
-#define SV_ONSTACK SA_ONSTACK
-#define SV_INTERRUPT SA_RESTART
-#define SV_RESETHAND SA_RESETHAND
-#define SV_NODEFER SA_NODEFER
-#define SV_NOCLDSTOP SA_NOCLDSTOP
-#define SV_SIGINFO SA_SIGINFO
-#define sv_onstack sv_flags
-#define sigmask(m) (1 << ((m)-1))
-#define BADSIG SIG_ERR
-#define _SYS_RESOURCE_H_
-#define _STRUCT_TIMEVAL struct timeval
-#define PRIO_PROCESS 0
-#define PRIO_PGRP 1
-#define PRIO_USER 2
-#define PRIO_DARWIN_THREAD 3
-#define PRIO_DARWIN_PROCESS 4
-#define PRIO_MIN -20
-#define PRIO_MAX 20
-#define PRIO_DARWIN_BG 0x1000
-#define PRIO_DARWIN_NONUI 0x1001
-#define RUSAGE_SELF 0
-#define RUSAGE_CHILDREN -1
-#define ru_first ru_ixrss
-#define ru_last ru_nivcsw
-#define RUSAGE_INFO_V0 0
-#define RUSAGE_INFO_V1 1
-#define RUSAGE_INFO_V2 2
-#define RUSAGE_INFO_V3 3
-#define RUSAGE_INFO_V4 4
-#define RUSAGE_INFO_V5 5
-#define RUSAGE_INFO_V6 6
-#define RUSAGE_INFO_CURRENT RUSAGE_INFO_V6
-#define RU_PROC_RUNS_RESLIDE 0x00000001
-#define RLIM_INFINITY (((__uint64_t)1 << 63) - 1)
-#define RLIM_SAVED_MAX RLIM_INFINITY
-#define RLIM_SAVED_CUR RLIM_INFINITY
-#define RLIMIT_CPU 0
-#define RLIMIT_FSIZE 1
-#define RLIMIT_DATA 2
-#define RLIMIT_STACK 3
-#define RLIMIT_CORE 4
-#define RLIMIT_AS 5
-#define RLIMIT_RSS RLIMIT_AS
-#define RLIMIT_MEMLOCK 6
-#define RLIMIT_NPROC 7
-#define RLIMIT_NOFILE 8
-#define RLIM_NLIMITS 9
-#define _RLIMIT_POSIX_FLAG 0x1000
-#define RLIMIT_WAKEUPS_MONITOR 0x1
-#define RLIMIT_CPU_USAGE_MONITOR 0x2
-#define RLIMIT_THREAD_CPULIMITS 0x3
-#define RLIMIT_FOOTPRINT_INTERVAL 0x4
-#define WAKEMON_ENABLE 0x01
-#define WAKEMON_DISABLE 0x02
-#define WAKEMON_GET_PARAMS 0x04
-#define WAKEMON_SET_DEFAULTS 0x08
-#define WAKEMON_MAKE_FATAL 0x10
-#define CPUMON_MAKE_FATAL 0x1000
-#define FOOTPRINT_INTERVAL_RESET 0x1
-#define IOPOL_TYPE_DISK 0
-#define IOPOL_TYPE_VFS_ATIME_UPDATES 2
-#define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3
-#define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4
-#define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5
-#define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6
-#define IOPOL_TYPE_VFS_IGNORE_PERMISSIONS 7
-#define IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE 8
-#define IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES 9
-#define IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY 10
-#define IOPOL_SCOPE_PROCESS 0
-#define IOPOL_SCOPE_THREAD 1
-#define IOPOL_SCOPE_DARWIN_BG 2
-#define IOPOL_DEFAULT 0
-#define IOPOL_IMPORTANT 1
-#define IOPOL_PASSIVE 2
-#define IOPOL_THROTTLE 3
-#define IOPOL_UTILITY 4
-#define IOPOL_STANDARD 5
-#define IOPOL_APPLICATION IOPOL_STANDARD
-#define IOPOL_NORMAL IOPOL_IMPORTANT
-#define IOPOL_ATIME_UPDATES_DEFAULT 0
-#define IOPOL_ATIME_UPDATES_OFF 1
-#define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0
-#define IOPOL_MATERIALIZE_DATALESS_FILES_OFF 1
-#define IOPOL_MATERIALIZE_DATALESS_FILES_ON 2
-#define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0
-#define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME 1
-#define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0
-#define IOPOL_VFS_TRIGGER_RESOLVE_OFF 1
-#define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0
-#define IOPOL_VFS_CONTENT_PROTECTION_IGNORE 1
-#define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0
-#define IOPOL_VFS_IGNORE_PERMISSIONS_ON 1
-#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0
-#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1
-#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0
-#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1
-#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT 0
-#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON 1
-#define WNOHANG 0x00000001
-#define WUNTRACED 0x00000002
-#define _W_INT(w) (*(int *)&(w))
-#define WCOREFLAG 0200
-#define _WSTATUS(x) (_W_INT(x) & 0177)
-#define _WSTOPPED 0177
-#define WEXITSTATUS(x) ((_W_INT(x) >> 8) & 0x000000ff)
-#define WSTOPSIG(x) (_W_INT(x) >> 8)
-#define WIFCONTINUED(x) (_WSTATUS(x) == _WSTOPPED && WSTOPSIG(x) == 0x13)
-#define WIFSTOPPED(x) (_WSTATUS(x) == _WSTOPPED && WSTOPSIG(x) != 0x13)
-#define WIFEXITED(x) (_WSTATUS(x) == 0)
-#define WIFSIGNALED(x) (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0)
-#define WTERMSIG(x) (_WSTATUS(x))
-#define WCOREDUMP(x) (_W_INT(x) & WCOREFLAG)
-#define W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
-#define W_STOPCODE(sig) ((sig) << 8 | _WSTOPPED)
-#define WEXITED 0x00000004
-#define WSTOPPED 0x00000008
-#define WCONTINUED 0x00000010
-#define WNOWAIT 0x00000020
-#define WAIT_ANY (-1)
-#define WAIT_MYPGRP 0
-#define w_termsig w_T.w_Termsig
-#define w_coredump w_T.w_Coredump
-#define w_retcode w_T.w_Retcode
-#define w_stopval w_S.w_Stopval
-#define w_stopsig w_S.w_Stopsig
-#define _ALLOCA_H_
-#undef alloca
-#undef __alloca
-#define alloca(size) __alloca(size)
-#define __alloca(size) __builtin_alloca(size)
-#define _CT_RUNE_T
-#define _RUNE_T
-#define _WCHAR_T
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-#define RAND_MAX 0x7fffffff
-#define MB_CUR_MAX __mb_cur_max
-#define _MALLOC_UNDERSCORE_MALLOC_H_
-#define __bsearch_noescape __attribute__((__noescape__))
-#define __sort_noescape __attribute__((__noescape__))
-#define __STDDEF_H
-#define __need_ptrdiff_t
-#define __need_size_t
-#define __need_wchar_t
-#define __need_NULL
-#define __need_STDDEF_H_misc
-#define _PTRDIFF_T
-#undef __need_ptrdiff_t
-#undef __need_size_t
-#undef __need_wchar_t
-#undef NULL
-#define NULL ((void*)0)
-#undef __need_NULL
-#define __CLANG_MAX_ALIGN_T_DEFINED
-#define offsetof(t,d) __builtin_offsetof(t, d)
-#undef __need_STDDEF_H_misc
-#define _STRING_H_
-#define _STRINGS_H_
-#define _SECURE__STRINGS_H_
-#undef bcopy
-#define bcopy(src,dest,...) __builtin___memmove_chk (dest, src, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef bzero
-#define bzero(dest,...) __builtin___memset_chk (dest, 0, __VA_ARGS__, __darwin_obsz0 (dest))
-#define _SECURE__STRING_H_
-#define __HAS_FIXED_CHK_PROTOTYPES 1
-#undef memccpy
-#define memccpy(dest,...) __builtin___memccpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memcpy
-#define memcpy(dest,...) __builtin___memcpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memmove
-#define memmove(dest,...) __builtin___memmove_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memset
-#define memset(dest,...) __builtin___memset_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef strcpy
-#define strcpy(dest,...) __builtin___strcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef stpcpy
-#define stpcpy(dest,...) __builtin___stpcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef stpncpy
-#define stpncpy(dest,...) __builtin___stpncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strlcpy
-#define strlcpy(dest,...) __builtin___strlcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strlcat
-#define strlcat(dest,...) __builtin___strlcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strncpy
-#define strncpy(dest,...) __builtin___strncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strcat
-#define strcat(dest,...) __builtin___strcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strncat
-#define strncat(dest,...) __builtin___strncat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef __HAS_FIXED_CHK_PROTOTYPES
-#define __CLANG_INTTYPES_H
-#define _INTTYPES_H_
-#define __PRI_8_LENGTH_MODIFIER__ "hh"
-#define __PRI_64_LENGTH_MODIFIER__ "ll"
-#define __SCN_64_LENGTH_MODIFIER__ "ll"
-#define __PRI_MAX_LENGTH_MODIFIER__ "j"
-#define __SCN_MAX_LENGTH_MODIFIER__ "j"
-#define PRId8 __PRI_8_LENGTH_MODIFIER__ "d"
-#define PRIi8 __PRI_8_LENGTH_MODIFIER__ "i"
-#define PRIo8 __PRI_8_LENGTH_MODIFIER__ "o"
-#define PRIu8 __PRI_8_LENGTH_MODIFIER__ "u"
-#define PRIx8 __PRI_8_LENGTH_MODIFIER__ "x"
-#define PRIX8 __PRI_8_LENGTH_MODIFIER__ "X"
-#define PRId16 "hd"
-#define PRIi16 "hi"
-#define PRIo16 "ho"
-#define PRIu16 "hu"
-#define PRIx16 "hx"
-#define PRIX16 "hX"
-#define PRId32 "d"
-#define PRIi32 "i"
-#define PRIo32 "o"
-#define PRIu32 "u"
-#define PRIx32 "x"
-#define PRIX32 "X"
-#define PRId64 __PRI_64_LENGTH_MODIFIER__ "d"
-#define PRIi64 __PRI_64_LENGTH_MODIFIER__ "i"
-#define PRIo64 __PRI_64_LENGTH_MODIFIER__ "o"
-#define PRIu64 __PRI_64_LENGTH_MODIFIER__ "u"
-#define PRIx64 __PRI_64_LENGTH_MODIFIER__ "x"
-#define PRIX64 __PRI_64_LENGTH_MODIFIER__ "X"
-#define PRIdLEAST8 PRId8
-#define PRIiLEAST8 PRIi8
-#define PRIoLEAST8 PRIo8
-#define PRIuLEAST8 PRIu8
-#define PRIxLEAST8 PRIx8
-#define PRIXLEAST8 PRIX8
-#define PRIdLEAST16 PRId16
-#define PRIiLEAST16 PRIi16
-#define PRIoLEAST16 PRIo16
-#define PRIuLEAST16 PRIu16
-#define PRIxLEAST16 PRIx16
-#define PRIXLEAST16 PRIX16
-#define PRIdLEAST32 PRId32
-#define PRIiLEAST32 PRIi32
-#define PRIoLEAST32 PRIo32
-#define PRIuLEAST32 PRIu32
-#define PRIxLEAST32 PRIx32
-#define PRIXLEAST32 PRIX32
-#define PRIdLEAST64 PRId64
-#define PRIiLEAST64 PRIi64
-#define PRIoLEAST64 PRIo64
-#define PRIuLEAST64 PRIu64
-#define PRIxLEAST64 PRIx64
-#define PRIXLEAST64 PRIX64
-#define PRIdFAST8 PRId8
-#define PRIiFAST8 PRIi8
-#define PRIoFAST8 PRIo8
-#define PRIuFAST8 PRIu8
-#define PRIxFAST8 PRIx8
-#define PRIXFAST8 PRIX8
-#define PRIdFAST16 PRId16
-#define PRIiFAST16 PRIi16
-#define PRIoFAST16 PRIo16
-#define PRIuFAST16 PRIu16
-#define PRIxFAST16 PRIx16
-#define PRIXFAST16 PRIX16
-#define PRIdFAST32 PRId32
-#define PRIiFAST32 PRIi32
-#define PRIoFAST32 PRIo32
-#define PRIuFAST32 PRIu32
-#define PRIxFAST32 PRIx32
-#define PRIXFAST32 PRIX32
-#define PRIdFAST64 PRId64
-#define PRIiFAST64 PRIi64
-#define PRIoFAST64 PRIo64
-#define PRIuFAST64 PRIu64
-#define PRIxFAST64 PRIx64
-#define PRIXFAST64 PRIX64
-#define PRIdPTR "ld"
-#define PRIiPTR "li"
-#define PRIoPTR "lo"
-#define PRIuPTR "lu"
-#define PRIxPTR "lx"
-#define PRIXPTR "lX"
-#define PRIdMAX __PRI_MAX_LENGTH_MODIFIER__ "d"
-#define PRIiMAX __PRI_MAX_LENGTH_MODIFIER__ "i"
-#define PRIoMAX __PRI_MAX_LENGTH_MODIFIER__ "o"
-#define PRIuMAX __PRI_MAX_LENGTH_MODIFIER__ "u"
-#define PRIxMAX __PRI_MAX_LENGTH_MODIFIER__ "x"
-#define PRIXMAX __PRI_MAX_LENGTH_MODIFIER__ "X"
-#define SCNd8 __PRI_8_LENGTH_MODIFIER__ "d"
-#define SCNi8 __PRI_8_LENGTH_MODIFIER__ "i"
-#define SCNo8 __PRI_8_LENGTH_MODIFIER__ "o"
-#define SCNu8 __PRI_8_LENGTH_MODIFIER__ "u"
-#define SCNx8 __PRI_8_LENGTH_MODIFIER__ "x"
-#define SCNd16 "hd"
-#define SCNi16 "hi"
-#define SCNo16 "ho"
-#define SCNu16 "hu"
-#define SCNx16 "hx"
-#define SCNd32 "d"
-#define SCNi32 "i"
-#define SCNo32 "o"
-#define SCNu32 "u"
-#define SCNx32 "x"
-#define SCNd64 __SCN_64_LENGTH_MODIFIER__ "d"
-#define SCNi64 __SCN_64_LENGTH_MODIFIER__ "i"
-#define SCNo64 __SCN_64_LENGTH_MODIFIER__ "o"
-#define SCNu64 __SCN_64_LENGTH_MODIFIER__ "u"
-#define SCNx64 __SCN_64_LENGTH_MODIFIER__ "x"
-#define SCNdLEAST8 SCNd8
-#define SCNiLEAST8 SCNi8
-#define SCNoLEAST8 SCNo8
-#define SCNuLEAST8 SCNu8
-#define SCNxLEAST8 SCNx8
-#define SCNdLEAST16 SCNd16
-#define SCNiLEAST16 SCNi16
-#define SCNoLEAST16 SCNo16
-#define SCNuLEAST16 SCNu16
-#define SCNxLEAST16 SCNx16
-#define SCNdLEAST32 SCNd32
-#define SCNiLEAST32 SCNi32
-#define SCNoLEAST32 SCNo32
-#define SCNuLEAST32 SCNu32
-#define SCNxLEAST32 SCNx32
-#define SCNdLEAST64 SCNd64
-#define SCNiLEAST64 SCNi64
-#define SCNoLEAST64 SCNo64
-#define SCNuLEAST64 SCNu64
-#define SCNxLEAST64 SCNx64
-#define SCNdFAST8 SCNd8
-#define SCNiFAST8 SCNi8
-#define SCNoFAST8 SCNo8
-#define SCNuFAST8 SCNu8
-#define SCNxFAST8 SCNx8
-#define SCNdFAST16 SCNd16
-#define SCNiFAST16 SCNi16
-#define SCNoFAST16 SCNo16
-#define SCNuFAST16 SCNu16
-#define SCNxFAST16 SCNx16
-#define SCNdFAST32 SCNd32
-#define SCNiFAST32 SCNi32
-#define SCNoFAST32 SCNo32
-#define SCNuFAST32 SCNu32
-#define SCNxFAST32 SCNx32
-#define SCNdFAST64 SCNd64
-#define SCNiFAST64 SCNi64
-#define SCNoFAST64 SCNo64
-#define SCNuFAST64 SCNu64
-#define SCNxFAST64 SCNx64
-#define SCNdPTR "ld"
-#define SCNiPTR "li"
-#define SCNoPTR "lo"
-#define SCNuPTR "lu"
-#define SCNxPTR "lx"
-#define SCNdMAX __SCN_MAX_LENGTH_MODIFIER__ "d"
-#define SCNiMAX __SCN_MAX_LENGTH_MODIFIER__ "i"
-#define SCNoMAX __SCN_MAX_LENGTH_MODIFIER__ "o"
-#define SCNuMAX __SCN_MAX_LENGTH_MODIFIER__ "u"
-#define SCNxMAX __SCN_MAX_LENGTH_MODIFIER__ "x"
-#define __STDALIGN_H
-#define alignas _Alignas
-#define alignof _Alignof
-#define __alignas_is_defined 1
-#define __alignof_is_defined 1
-#define _UNISTD_H_
-#define _SYS_UNISTD_H_
-#define _POSIX_VERSION 200112L
-#define _POSIX2_VERSION 200112L
-#define _POSIX_VDISABLE ((unsigned char)'\377')
-#define _POSIX_THREAD_KEYS_MAX 128
-#define F_OK 0
-#define X_OK (1<<0)
-#define W_OK (1<<1)
-#define R_OK (1<<2)
-#define _READ_OK (1<<9)
-#define _WRITE_OK (1<<10)
-#define _EXECUTE_OK (1<<11)
-#define _DELETE_OK (1<<12)
-#define _APPEND_OK (1<<13)
-#define _RMFILE_OK (1<<14)
-#define _RATTR_OK (1<<15)
-#define _WATTR_OK (1<<16)
-#define _REXT_OK (1<<17)
-#define _WEXT_OK (1<<18)
-#define _RPERM_OK (1<<19)
-#define _WPERM_OK (1<<20)
-#define _CHOWN_OK (1<<21)
-#define _ACCESS_EXTENDED_MASK (_READ_OK | _WRITE_OK | _EXECUTE_OK | _DELETE_OK | _APPEND_OK | _RMFILE_OK | _REXT_OK | _WEXT_OK | _RATTR_OK | _WATTR_OK | _RPERM_OK | _WPERM_OK | _CHOWN_OK)
-#define SEEK_HOLE 3
-#define SEEK_DATA 4
-#define L_SET SEEK_SET
-#define L_INCR SEEK_CUR
-#define L_XTND SEEK_END
-#define ACCESSX_MAX_DESCRIPTORS 100
-#define ACCESSX_MAX_TABLESIZE (16 * 1024)
-#define _PC_LINK_MAX 1
-#define _PC_MAX_CANON 2
-#define _PC_MAX_INPUT 3
-#define _PC_NAME_MAX 4
-#define _PC_PATH_MAX 5
-#define _PC_PIPE_BUF 6
-#define _PC_CHOWN_RESTRICTED 7
-#define _PC_NO_TRUNC 8
-#define _PC_VDISABLE 9
-#define _PC_NAME_CHARS_MAX 10
-#define _PC_CASE_SENSITIVE 11
-#define _PC_CASE_PRESERVING 12
-#define _PC_EXTENDED_SECURITY_NP 13
-#define _PC_AUTH_OPAQUE_NP 14
-#define _PC_2_SYMLINKS 15
-#define _PC_ALLOC_SIZE_MIN 16
-#define _PC_ASYNC_IO 17
-#define _PC_FILESIZEBITS 18
-#define _PC_PRIO_IO 19
-#define _PC_REC_INCR_XFER_SIZE 20
-#define _PC_REC_MAX_XFER_SIZE 21
-#define _PC_REC_MIN_XFER_SIZE 22
-#define _PC_REC_XFER_ALIGN 23
-#define _PC_SYMLINK_MAX 24
-#define _PC_SYNC_IO 25
-#define _PC_XATTR_SIZE_BITS 26
-#define _PC_MIN_HOLE_SIZE 27
-#define _CS_PATH 1
-#define STDIN_FILENO 0
-#define STDOUT_FILENO 1
-#define STDERR_FILENO 2
-#define _XOPEN_VERSION 600
-#define _XOPEN_XCU_VERSION 4
-#define _POSIX_ADVISORY_INFO (-1)
-#define _POSIX_ASYNCHRONOUS_IO (-1)
-#define _POSIX_BARRIERS (-1)
-#define _POSIX_CHOWN_RESTRICTED 200112L
-#define _POSIX_CLOCK_SELECTION (-1)
-#define _POSIX_CPUTIME (-1)
-#define _POSIX_FSYNC 200112L
-#define _POSIX_IPV6 200112L
-#define _POSIX_JOB_CONTROL 200112L
-#define _POSIX_MAPPED_FILES 200112L
-#define _POSIX_MEMLOCK (-1)
-#define _POSIX_MEMLOCK_RANGE (-1)
-#define _POSIX_MEMORY_PROTECTION 200112L
-#define _POSIX_MESSAGE_PASSING (-1)
-#define _POSIX_MONOTONIC_CLOCK (-1)
-#define _POSIX_NO_TRUNC 200112L
-#define _POSIX_PRIORITIZED_IO (-1)
-#define _POSIX_PRIORITY_SCHEDULING (-1)
-#define _POSIX_RAW_SOCKETS (-1)
-#define _POSIX_READER_WRITER_LOCKS 200112L
-#define _POSIX_REALTIME_SIGNALS (-1)
-#define _POSIX_REGEXP 200112L
-#define _POSIX_SAVED_IDS 200112L
-#define _POSIX_SEMAPHORES (-1)
-#define _POSIX_SHARED_MEMORY_OBJECTS (-1)
-#define _POSIX_SHELL 200112L
-#define _POSIX_SPAWN (-1)
-#define _POSIX_SPIN_LOCKS (-1)
-#define _POSIX_SPORADIC_SERVER (-1)
-#define _POSIX_SYNCHRONIZED_IO (-1)
-#define _POSIX_THREAD_ATTR_STACKADDR 200112L
-#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
-#define _POSIX_THREAD_CPUTIME (-1)
-#define _POSIX_THREAD_PRIO_INHERIT (-1)
-#define _POSIX_THREAD_PRIO_PROTECT (-1)
-#define _POSIX_THREAD_PRIORITY_SCHEDULING (-1)
-#define _POSIX_THREAD_PROCESS_SHARED 200112L
-#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
-#define _POSIX_THREAD_SPORADIC_SERVER (-1)
-#define _POSIX_THREADS 200112L
-#define _POSIX_TIMEOUTS (-1)
-#define _POSIX_TIMERS (-1)
-#define _POSIX_TRACE (-1)
-#define _POSIX_TRACE_EVENT_FILTER (-1)
-#define _POSIX_TRACE_INHERIT (-1)
-#define _POSIX_TRACE_LOG (-1)
-#define _POSIX_TYPED_MEMORY_OBJECTS (-1)
-#define _POSIX2_C_BIND 200112L
-#define _POSIX2_C_DEV 200112L
-#define _POSIX2_CHAR_TERM 200112L
-#define _POSIX2_FORT_DEV (-1)
-#define _POSIX2_FORT_RUN 200112L
-#define _POSIX2_LOCALEDEF 200112L
-#define _POSIX2_PBS (-1)
-#define _POSIX2_PBS_ACCOUNTING (-1)
-#define _POSIX2_PBS_CHECKPOINT (-1)
-#define _POSIX2_PBS_LOCATE (-1)
-#define _POSIX2_PBS_MESSAGE (-1)
-#define _POSIX2_PBS_TRACK (-1)
-#define _POSIX2_SW_DEV 200112L
-#define _POSIX2_UPE 200112L
-#define __ILP32_OFF32 (-1)
-#define __ILP32_OFFBIG (-1)
-#define __LP64_OFF64 (1)
-#define __LPBIG_OFFBIG (1)
-#define _POSIX_V6_ILP32_OFF32 __ILP32_OFF32
-#define _POSIX_V6_ILP32_OFFBIG __ILP32_OFFBIG
-#define _POSIX_V6_LP64_OFF64 __LP64_OFF64
-#define _POSIX_V6_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _POSIX_V7_ILP32_OFF32 __ILP32_OFF32
-#define _POSIX_V7_ILP32_OFFBIG __ILP32_OFFBIG
-#define _POSIX_V7_LP64_OFF64 __LP64_OFF64
-#define _POSIX_V7_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _V6_ILP32_OFF32 __ILP32_OFF32
-#define _V6_ILP32_OFFBIG __ILP32_OFFBIG
-#define _V6_LP64_OFF64 __LP64_OFF64
-#define _V6_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _XBS5_ILP32_OFF32 __ILP32_OFF32
-#define _XBS5_ILP32_OFFBIG __ILP32_OFFBIG
-#define _XBS5_LP64_OFF64 __LP64_OFF64
-#define _XBS5_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _XOPEN_CRYPT (1)
-#define _XOPEN_ENH_I18N (1)
-#define _XOPEN_LEGACY (-1)
-#define _XOPEN_REALTIME (-1)
-#define _XOPEN_REALTIME_THREADS (-1)
-#define _XOPEN_SHM (1)
-#define _XOPEN_STREAMS (-1)
-#define _XOPEN_UNIX (1)
-#define _SC_ARG_MAX 1
-#define _SC_CHILD_MAX 2
-#define _SC_CLK_TCK 3
-#define _SC_NGROUPS_MAX 4
-#define _SC_OPEN_MAX 5
-#define _SC_JOB_CONTROL 6
-#define _SC_SAVED_IDS 7
-#define _SC_VERSION 8
-#define _SC_BC_BASE_MAX 9
-#define _SC_BC_DIM_MAX 10
-#define _SC_BC_SCALE_MAX 11
-#define _SC_BC_STRING_MAX 12
-#define _SC_COLL_WEIGHTS_MAX 13
-#define _SC_EXPR_NEST_MAX 14
-#define _SC_LINE_MAX 15
-#define _SC_RE_DUP_MAX 16
-#define _SC_2_VERSION 17
-#define _SC_2_C_BIND 18
-#define _SC_2_C_DEV 19
-#define _SC_2_CHAR_TERM 20
-#define _SC_2_FORT_DEV 21
-#define _SC_2_FORT_RUN 22
-#define _SC_2_LOCALEDEF 23
-#define _SC_2_SW_DEV 24
-#define _SC_2_UPE 25
-#define _SC_STREAM_MAX 26
-#define _SC_TZNAME_MAX 27
-#define _SC_ASYNCHRONOUS_IO 28
-#define _SC_PAGESIZE 29
-#define _SC_MEMLOCK 30
-#define _SC_MEMLOCK_RANGE 31
-#define _SC_MEMORY_PROTECTION 32
-#define _SC_MESSAGE_PASSING 33
-#define _SC_PRIORITIZED_IO 34
-#define _SC_PRIORITY_SCHEDULING 35
-#define _SC_REALTIME_SIGNALS 36
-#define _SC_SEMAPHORES 37
-#define _SC_FSYNC 38
-#define _SC_SHARED_MEMORY_OBJECTS 39
-#define _SC_SYNCHRONIZED_IO 40
-#define _SC_TIMERS 41
-#define _SC_AIO_LISTIO_MAX 42
-#define _SC_AIO_MAX 43
-#define _SC_AIO_PRIO_DELTA_MAX 44
-#define _SC_DELAYTIMER_MAX 45
-#define _SC_MQ_OPEN_MAX 46
-#define _SC_MAPPED_FILES 47
-#define _SC_RTSIG_MAX 48
-#define _SC_SEM_NSEMS_MAX 49
-#define _SC_SEM_VALUE_MAX 50
-#define _SC_SIGQUEUE_MAX 51
-#define _SC_TIMER_MAX 52
-#define _SC_NPROCESSORS_CONF 57
-#define _SC_NPROCESSORS_ONLN 58
-#define _SC_2_PBS 59
-#define _SC_2_PBS_ACCOUNTING 60
-#define _SC_2_PBS_CHECKPOINT 61
-#define _SC_2_PBS_LOCATE 62
-#define _SC_2_PBS_MESSAGE 63
-#define _SC_2_PBS_TRACK 64
-#define _SC_ADVISORY_INFO 65
-#define _SC_BARRIERS 66
-#define _SC_CLOCK_SELECTION 67
-#define _SC_CPUTIME 68
-#define _SC_FILE_LOCKING 69
-#define _SC_GETGR_R_SIZE_MAX 70
-#define _SC_GETPW_R_SIZE_MAX 71
-#define _SC_HOST_NAME_MAX 72
-#define _SC_LOGIN_NAME_MAX 73
-#define _SC_MONOTONIC_CLOCK 74
-#define _SC_MQ_PRIO_MAX 75
-#define _SC_READER_WRITER_LOCKS 76
-#define _SC_REGEXP 77
-#define _SC_SHELL 78
-#define _SC_SPAWN 79
-#define _SC_SPIN_LOCKS 80
-#define _SC_SPORADIC_SERVER 81
-#define _SC_THREAD_ATTR_STACKADDR 82
-#define _SC_THREAD_ATTR_STACKSIZE 83
-#define _SC_THREAD_CPUTIME 84
-#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85
-#define _SC_THREAD_KEYS_MAX 86
-#define _SC_THREAD_PRIO_INHERIT 87
-#define _SC_THREAD_PRIO_PROTECT 88
-#define _SC_THREAD_PRIORITY_SCHEDULING 89
-#define _SC_THREAD_PROCESS_SHARED 90
-#define _SC_THREAD_SAFE_FUNCTIONS 91
-#define _SC_THREAD_SPORADIC_SERVER 92
-#define _SC_THREAD_STACK_MIN 93
-#define _SC_THREAD_THREADS_MAX 94
-#define _SC_TIMEOUTS 95
-#define _SC_THREADS 96
-#define _SC_TRACE 97
-#define _SC_TRACE_EVENT_FILTER 98
-#define _SC_TRACE_INHERIT 99
-#define _SC_TRACE_LOG 100
-#define _SC_TTY_NAME_MAX 101
-#define _SC_TYPED_MEMORY_OBJECTS 102
-#define _SC_V6_ILP32_OFF32 103
-#define _SC_V6_ILP32_OFFBIG 104
-#define _SC_V6_LP64_OFF64 105
-#define _SC_V6_LPBIG_OFFBIG 106
-#define _SC_IPV6 118
-#define _SC_RAW_SOCKETS 119
-#define _SC_SYMLOOP_MAX 120
-#define _SC_ATEXIT_MAX 107
-#define _SC_IOV_MAX 56
-#define _SC_PAGE_SIZE _SC_PAGESIZE
-#define _SC_XOPEN_CRYPT 108
-#define _SC_XOPEN_ENH_I18N 109
-#define _SC_XOPEN_LEGACY 110
-#define _SC_XOPEN_REALTIME 111
-#define _SC_XOPEN_REALTIME_THREADS 112
-#define _SC_XOPEN_SHM 113
-#define _SC_XOPEN_STREAMS 114
-#define _SC_XOPEN_UNIX 115
-#define _SC_XOPEN_VERSION 116
-#define _SC_XOPEN_XCU_VERSION 121
-#define _SC_XBS5_ILP32_OFF32 122
-#define _SC_XBS5_ILP32_OFFBIG 123
-#define _SC_XBS5_LP64_OFF64 124
-#define _SC_XBS5_LPBIG_OFFBIG 125
-#define _SC_SS_REPL_MAX 126
-#define _SC_TRACE_EVENT_NAME_MAX 127
-#define _SC_TRACE_NAME_MAX 128
-#define _SC_TRACE_SYS_MAX 129
-#define _SC_TRACE_USER_EVENT_MAX 130
-#define _SC_PASS_MAX 131
-#define _SC_PHYS_PAGES 200
-#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2
-#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3
-#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4
-#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5
-#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6
-#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7
-#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8
-#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9
-#define _CS_POSIX_V6_LP64_OFF64_LIBS 10
-#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13
-#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14
-#define _CS_XBS5_ILP32_OFF32_CFLAGS 20
-#define _CS_XBS5_ILP32_OFF32_LDFLAGS 21
-#define _CS_XBS5_ILP32_OFF32_LIBS 22
-#define _CS_XBS5_ILP32_OFF32_LINTFLAGS 23
-#define _CS_XBS5_ILP32_OFFBIG_CFLAGS 24
-#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS 25
-#define _CS_XBS5_ILP32_OFFBIG_LIBS 26
-#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 27
-#define _CS_XBS5_LP64_OFF64_CFLAGS 28
-#define _CS_XBS5_LP64_OFF64_LDFLAGS 29
-#define _CS_XBS5_LP64_OFF64_LIBS 30
-#define _CS_XBS5_LP64_OFF64_LINTFLAGS 31
-#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS 32
-#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS 33
-#define _CS_XBS5_LPBIG_OFFBIG_LIBS 34
-#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 35
-#define _CS_DARWIN_USER_DIR 65536
-#define _CS_DARWIN_USER_TEMP_DIR 65537
-#define _CS_DARWIN_USER_CACHE_DIR 65538
-#define F_ULOCK 0
-#define F_LOCK 1
-#define F_TLOCK 2
-#define F_TEST 3
-#define _SYS_SELECT_H_
-#define _SYS__SELECT_H_
-#define _UUID_T
-#define __GETHOSTUUID_H
-#define SYNC_VOLUME_FULLSYNC 0x01
-#define SYNC_VOLUME_WAIT 0x02
-#define RBIMPL_DLLEXPORT_H
-#undef RUBY_EXTERN
-#define RUBY_EXTERN extern
-#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
-#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
-#define MJIT_STATIC static
-#define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN
-#define RBIMPL_SYMBOL_EXPORT_END() RUBY_SYMBOL_EXPORT_END
-#define RBIMPL_XMALLOC_H
-#define RBIMPL_ATTR_ALLOC_SIZE_H
-#define RBIMPL_HAS_ATTRIBUTE_H
-#define RBIMPL_HAVE___HAS_ATTRIBUTE 1
-#define RBIMPL_HAS_ATTRIBUTE(_) __has_attribute(_)
-#define RBIMPL_ATTR_ALLOC_SIZE(tuple) __attribute__((__alloc_size__ tuple))
-#define RBIMPL_ATTR_NODISCARD_H
-#define RBIMPL_HAS_C_ATTRIBUTE_H
-#define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
-#define RBIMPL_HAS_CPP_ATTRIBUTE_H
-#define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0
-#define RBIMPL_HAS_CPP_ATTRIBUTE(_) 0
-#define RBIMPL_ATTR_NODISCARD() __attribute__((__warn_unused_result__))
-#define RBIMPL_ATTR_NOEXCEPT_H
-#define RBIMPL_HAS_FEATURE_H
-#define RBIMPL_HAS_FEATURE(_) __has_feature(_)
-#define RBIMPL_ATTR_NOEXCEPT(_)
-#define RBIMPL_ATTR_RESTRICT_H
-#define RBIMPL_ATTR_RESTRICT() __attribute__((__malloc__))
-#define RBIMPL_ATTR_RETURNS_NONNULL_H
-#define RBIMPL_ATTR_RETURNS_NONNULL() __attribute__((__returns_nonnull__))
-#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
-#define xmalloc ruby_xmalloc
-#define xmalloc2 ruby_xmalloc2
-#define xcalloc ruby_xcalloc
-#define xrealloc ruby_xrealloc
-#define xrealloc2 ruby_xrealloc2
-#define xfree ruby_xfree
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_BACKWARD2_ASSUME_H
-#define RBIMPL_ASSUME_H
-#define RBIMPL_CAST_H
-#define RBIMPL_HAS_WARNING_H
-#define RBIMPL_HAS_WARNING(_) __has_warning(_)
-#define RBIMPL_WARNING_PUSH_H
-#define RBIMPL_WARNING_PRAGMA0(x) _Pragma(# x)
-#define RBIMPL_WARNING_PRAGMA1(x) RBIMPL_WARNING_PRAGMA0(clang diagnostic x)
-#define RBIMPL_WARNING_PRAGMA2(x,y) RBIMPL_WARNING_PRAGMA1(x # y)
-#define RBIMPL_WARNING_PUSH() RBIMPL_WARNING_PRAGMA1(push)
-#define RBIMPL_WARNING_POP() RBIMPL_WARNING_PRAGMA1(pop)
-#define RBIMPL_WARNING_ERROR(flag) RBIMPL_WARNING_PRAGMA2(error, flag)
-#define RBIMPL_WARNING_IGNORED(flag) RBIMPL_WARNING_PRAGMA2(ignored, flag)
-#define RBIMPL_CAST(expr) (expr)
-#define RBIMPL_HAS_BUILTIN_H
-#define RBIMPL_HAVE___HAS_BUILTIN 1
-#define RBIMPL_HAS_BUILTIN(_) __has_builtin(_)
-#define RBIMPL_UNREACHABLE_RETURN(_) __builtin_unreachable()
-#define RBIMPL_UNREACHABLE __builtin_unreachable
-#define RBIMPL_ASSUME __builtin_assume
-#define ASSUME RBIMPL_ASSUME
-#define UNREACHABLE RBIMPL_UNREACHABLE()
-#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN
-#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
-#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
-#define RUBY_BACKWARD2_ATTRIBUTES_H
-#define RBIMPL_ATTR_CONST_H
-#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H
-#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) __has_declspec_attribute(_)
-#define RBIMPL_ATTR_CONST() __attribute__((__const__))
-#define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST()
-#define RBIMPL_ATTR_DEPRECATED_H
-#define RBIMPL_HAS_EXTENSION_H
-#define RBIMPL_HAS_EXTENSION(_) __has_extension(_)
-#define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
-#define RBIMPL_ATTR_DEPRECATED_EXT(msg)
-#define RBIMPL_ATTR_ERROR_H
-#define RBIMPL_ATTR_ERROR(msg) __attribute__((__error__ msg))
-#define RBIMPL_ATTR_FORCEINLINE_H
-#define RBIMPL_ATTR_FORCEINLINE() __attribute__((__always_inline__)) inline
-#define RBIMPL_ATTR_FORMAT_H
-#define RBIMPL_ATTR_FORMAT(x,y,z) __attribute__((__format__(x, y, z)))
-#define RBIMPL_PRINTF_FORMAT __printf__
-#define RBIMPL_ATTR_MAYBE_UNUSED_H
-#define RBIMPL_ATTR_MAYBE_UNUSED() __attribute__((__unused__))
-#define RBIMPL_ATTR_NOINLINE_H
-#define RBIMPL_ATTR_NOINLINE() __declspec(noinline)
-#define RBIMPL_ATTR_NONNULL_H
-#define RBIMPL_ATTR_NONNULL(list) __attribute__((__nonnull__ list))
-#define RBIMPL_NONNULL_ARG(arg) RBIMPL_ASSERT_NOTHING
-#define RBIMPL_ATTR_NORETURN_H
-#define RBIMPL_ATTR_NORETURN() __declspec(noreturn)
-#define RBIMPL_ATTR_PURE_H
-#define RUBY_ASSERT_H
-#define RBIMPL_RUBY_DEBUG 0
-#define RBIMPL_NDEBUG 0
-#undef RUBY_DEBUG
-#undef RUBY_NDEBUG
-#undef NDEBUG
-#define RUBY_DEBUG 0
-#define RUBY_NDEBUG 1
-#define NDEBUG
-#undef RBIMPL_NDEBUG
-#undef RBIMPL_RUBY_DEBUG
-#define RBIMPL_ASSERT_NOTHING RBIMPL_CAST((void)0)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ASSERT_FUNC RUBY_FUNCTION_NAME_STRING
-#define RUBY_ASSERT_FAIL(mesg) rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
-#define RUBY_ASSERT_MESG(expr,mesg) (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg))
-#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
-#define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
-#define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
-#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) ((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING)
-#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
-#define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
-#define RBIMPL_ATTR_PURE() __attribute__((__pure__))
-#define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE()
-#define RBIMPL_ATTR_WARNING_H
-#define RBIMPL_ATTR_WARNING(msg) __attribute__((__warning__ msg))
-#undef CONSTFUNC
-#define CONSTFUNC(x) RBIMPL_ATTR_CONST() x
-#undef PUREFUNC
-#define PUREFUNC(x) RBIMPL_ATTR_PURE() x
-#undef DEPRECATED
-#define DEPRECATED(x) RBIMPL_ATTR_DEPRECATED(("")) x
-#undef DEPRECATED_BY
-#define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x
-#undef DEPRECATED_TYPE
-#define DEPRECATED_TYPE(mesg,decl) _Pragma("message \"DEPRECATED_TYPE is deprecated\""); decl RBIMPL_ATTR_DEPRECATED(mseg)
-#undef RUBY_CXX_DEPRECATED
-#define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg))
-#undef NOINLINE
-#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x
-#undef ERRORFUNC
-#define ERRORFUNC(mesg,x) RBIMPL_ATTR_ERROR(mesg) x
-#define HAVE_ATTRIBUTE_ERRORFUNC 1
-#undef WARNINGFUNC
-#define WARNINGFUNC(mesg,x) RBIMPL_ATTR_WARNING(mesg) x
-#define HAVE_ATTRIBUTE_WARNINGFUNC 1
-#undef COLDFUNC
-#define PRINTF_ARGS(decl,string_index,first_to_check) RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, (string_index), (first_to_check)) decl
-#undef RUBY_ATTR_ALLOC_SIZE
-#define RUBY_ATTR_ALLOC_SIZE RBIMPL_ATTR_ALLOC_SIZE
-#undef RUBY_ATTR_MALLOC
-#define RUBY_ATTR_MALLOC RBIMPL_ATTR_RESTRICT()
-#undef RUBY_ATTR_RETURNS_NONNULL
-#define RUBY_ATTR_RETURNS_NONNULL RBIMPL_ATTR_RETURNS_NONNULL()
-#define FUNC_MINIMIZED(x) x
-#define FUNC_UNOPTIMIZED(x) x
-#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) FUNC_MINIMIZED(type prot) {return (type)name args;}
-#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) FUNC_MINIMIZED(void prot) {name args;}
-#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
-#undef RUBY_FUNC_NONNULL
-#define RUBY_FUNC_NONNULL(n,x) RBIMPL_ATTR_NONNULL(n) x
-#undef NORETURN
-#define NORETURN(x) RBIMPL_ATTR_NORETURN() x
-#define NORETURN_STYLE_NEW
-#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
-#undef RB_UNUSED_VAR
-#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED()
-#define RUBY_BACKWARD2_BOOL_H
-#define RBIMPL_STDBOOL_H
-#define __STDBOOL_H
-#define bool _Bool
-#define true 1
-#define false 0
-#define __bool_true_false_are_defined 1
-#define FALSE false
-#define TRUE true
-#define RUBY_BACKWARD2_LONG_LONG_H
-#define HAVE_TRUE_LONG_LONG 1
-#define LONG_LONG RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wc++11-long-long) long long RBIMPL_WARNING_POP()
-#define RUBY_BACKWARD2_STDALIGN_H
-#define RBIMPL_STDALIGN_H
-#define RBIMPL_ALIGNAS(_) __declspec(align(_))
-#define RBIMPL_ALIGNOF(T) RB_GNUC_EXTENSION(_Alignof(T))
-#undef RUBY_ALIGNAS
-#undef RUBY_ALIGNOF
-#define RUBY_ALIGNAS RBIMPL_ALIGNAS
-#define RUBY_ALIGNOF RBIMPL_ALIGNOF
-#define RUBY_BACKWARD2_STDARG_H
-#undef _
-#define _(args) args
-#undef __
-#define __(args) args
-#define ANYARGS
-#define RBIMPL_DOSISH_H
-#define PATH_SEP ":"
-#define PATH_SEP_CHAR PATH_SEP[0]
-#define PATH_ENV "PATH"
-#define CASEFOLD_FILESYSTEM 0
-#define RUBY_MISSING_H 1
-#define __MATH_H__
-#define __MATH__
-#define HUGE_VAL __builtin_huge_val()
-#define HUGE_VALF __builtin_huge_valf()
-#define HUGE_VALL __builtin_huge_vall()
-#define NAN __builtin_nanf("0x7fc00000")
-#define INFINITY HUGE_VALF
-#define FP_NAN 1
-#define FP_INFINITE 2
-#define FP_ZERO 3
-#define FP_NORMAL 4
-#define FP_SUBNORMAL 5
-#define FP_SUPERNORMAL 6
-#define FP_FAST_FMA 1
-#define FP_FAST_FMAF 1
-#define FP_FAST_FMAL 1
-#define FP_ILOGB0 (-2147483647 - 1)
-#define FP_ILOGBNAN (-2147483647 - 1)
-#define MATH_ERRNO 1
-#define MATH_ERREXCEPT 2
-#define math_errhandling (__math_errhandling())
-#define fpclassify(x) ( sizeof(x) == sizeof(float) ? __fpclassifyf((float)(x)) : sizeof(x) == sizeof(double) ? __fpclassifyd((double)(x)) : __fpclassifyl((long double)(x)))
-#define isnormal(x) ( sizeof(x) == sizeof(float) ? __inline_isnormalf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isnormald((double)(x)) : __inline_isnormall((long double)(x)))
-#define isfinite(x) ( sizeof(x) == sizeof(float) ? __inline_isfinitef((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isfinited((double)(x)) : __inline_isfinitel((long double)(x)))
-#define isinf(x) ( sizeof(x) == sizeof(float) ? __inline_isinff((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isinfd((double)(x)) : __inline_isinfl((long double)(x)))
-#define isnan(x) ( sizeof(x) == sizeof(float) ? __inline_isnanf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isnand((double)(x)) : __inline_isnanl((long double)(x)))
-#define signbit(x) ( sizeof(x) == sizeof(float) ? __inline_signbitf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_signbitd((double)(x)) : __inline_signbitl((long double)(x)))
-#define isgreater(x,y) __builtin_isgreater((x),(y))
-#define isgreaterequal(x,y) __builtin_isgreaterequal((x),(y))
-#define isless(x,y) __builtin_isless((x),(y))
-#define islessequal(x,y) __builtin_islessequal((x),(y))
-#define islessgreater(x,y) __builtin_islessgreater((x),(y))
-#define isunordered(x,y) __builtin_isunordered((x),(y))
-#define M_E 2.71828182845904523536028747135266250
-#define M_LOG2E 1.44269504088896340735992468100189214
-#define M_LOG10E 0.434294481903251827651128918916605082
-#define M_LN2 0.693147180559945309417232121458176568
-#define M_LN10 2.30258509299404568401799145468436421
-#define M_PI 3.14159265358979323846264338327950288
-#define M_PI_2 1.57079632679489661923132169163975144
-#define M_PI_4 0.785398163397448309615660845819875721
-#define M_1_PI 0.318309886183790671537767526745028724
-#define M_2_PI 0.636619772367581343075535053490057448
-#define M_2_SQRTPI 1.12837916709551257389615890312154517
-#define M_SQRT2 1.41421356237309504880168872420969808
-#define M_SQRT1_2 0.707106781186547524400844362104849039
-#define MAXFLOAT 0x1.fffffep+127f
-#define FP_SNAN FP_NAN
-#define FP_QNAN FP_NAN
-#define HUGE MAXFLOAT
-#define X_TLOSS 1.41484755040568800000e+16
-#define DOMAIN 1
-#define SING 2
-#define OVERFLOW 3
-#define UNDERFLOW 4
-#define TLOSS 5
-#define PLOSS 6
-#define _TIME_H_
-#define CLOCKS_PER_SEC ((clock_t)1000000)
-#define __CLOCK_AVAILABILITY __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
-#define CLOCK_REALTIME _CLOCK_REALTIME
-#define CLOCK_MONOTONIC _CLOCK_MONOTONIC
-#define CLOCK_MONOTONIC_RAW _CLOCK_MONOTONIC_RAW
-#define CLOCK_MONOTONIC_RAW_APPROX _CLOCK_MONOTONIC_RAW_APPROX
-#define CLOCK_UPTIME_RAW _CLOCK_UPTIME_RAW
-#define CLOCK_UPTIME_RAW_APPROX _CLOCK_UPTIME_RAW_APPROX
-#define CLOCK_PROCESS_CPUTIME_ID _CLOCK_PROCESS_CPUTIME_ID
-#define CLOCK_THREAD_CPUTIME_ID _CLOCK_THREAD_CPUTIME_ID
-#undef __CLOCK_AVAILABILITY
-#define TIME_UTC 1
-#define _SYS_TIME_H_
-#define _STRUCT_TIMEVAL64
-#define ITIMER_REAL 0
-#define ITIMER_VIRTUAL 1
-#define ITIMER_PROF 2
-#define TIMEVAL_TO_TIMESPEC(tv,ts) { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; }
-#define TIMESPEC_TO_TIMEVAL(tv,ts) { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; }
-#define DST_NONE 0
-#define DST_USA 1
-#define DST_AUST 2
-#define DST_WET 3
-#define DST_MET 4
-#define DST_EET 5
-#define DST_CAN 6
-#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
-#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
-#define timercmp(tvp,uvp,cmp) (((tvp)->tv_sec == (uvp)->tv_sec) ? ((tvp)->tv_usec cmp (uvp)->tv_usec) : ((tvp)->tv_sec cmp (uvp)->tv_sec))
-#define timeradd(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; if ((vvp)->tv_usec >= 1000000) { (vvp)->tv_sec++; (vvp)->tv_usec -= 1000000; } } while (0)
-#define timersub(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; if ((vvp)->tv_usec < 0) { (vvp)->tv_sec--; (vvp)->tv_usec += 1000000; } } while (0)
-#define timevalcmp(l,r,cmp) timercmp(l, r, cmp)
-#pragma GCC visibility push(default)
-#define HAVE_FINITE 1
-#define finite(x) isfinite(x)
-#pragma GCC visibility pop
-#define RUBY
-#define RB_GNUC_EXTENSION __extension__
-#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
-#define RUBY_MBCHAR_MAXSIZE INT_MAX
-#define FLUSH_REGISTER_WINDOWS ((void)0)
-#define RUBY_ABI_H
-#define RBIMPL_ANYARGS_H
-#define RBIMPL_ATTR_WEAKREF_H
-#define RBIMPL_ATTR_WEAKREF(sym) __attribute__((__weakref__(# sym)))
-#define RBIMPL_INTERN_CLASS_H
-#define RBIMPL_VALUE_H
-#define RBIMPL_STATIC_ASSERT_H
-#undef assert
-#undef __assert
-#define assert(e) ((void)0)
-#define _ASSERT_H_
-#define static_assert _Static_assert
-#define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert
-#define RBIMPL_STATIC_ASSERT(name,expr) RBIMPL_STATIC_ASSERT0(expr, # name ": " # expr)
-#define RUBY_BACKWARD2_LIMITS_H
-#define __CLANG_LIMITS_H
-#define _GCC_LIMITS_H_
-#define _LIMITS_H_
-#define _BSD_MACHINE_LIMITS_H_
-#define _ARM_LIMITS_H_
-#define _ARM__LIMITS_H_
-#define __DARWIN_CLK_TCK 100
-#define CHAR_BIT 8
-#define MB_LEN_MAX 6
-#define CLK_TCK __DARWIN_CLK_TCK
-#define SCHAR_MAX 127
-#define SCHAR_MIN (-128)
-#define UCHAR_MAX 255
-#define CHAR_MAX 127
-#define CHAR_MIN (-128)
-#define USHRT_MAX 65535
-#define SHRT_MAX 32767
-#define SHRT_MIN (-32768)
-#define UINT_MAX 0xffffffff
-#define INT_MAX 2147483647
-#define INT_MIN (-2147483647-1)
-#define ULONG_MAX 0xffffffffffffffffUL
-#define LONG_MAX 0x7fffffffffffffffL
-#define LONG_MIN (-0x7fffffffffffffffL-1)
-#define ULLONG_MAX 0xffffffffffffffffULL
-#define LLONG_MAX 0x7fffffffffffffffLL
-#define LLONG_MIN (-0x7fffffffffffffffLL-1)
-#define LONG_BIT 64
-#define SSIZE_MAX LONG_MAX
-#define WORD_BIT 32
-#define SIZE_T_MAX ULONG_MAX
-#define UQUAD_MAX ULLONG_MAX
-#define QUAD_MAX LLONG_MAX
-#define QUAD_MIN LLONG_MIN
-#define _SYS_SYSLIMITS_H_
-#define ARG_MAX (1024 * 1024)
-#define CHILD_MAX 266
-#define GID_MAX 2147483647U
-#define LINK_MAX 32767
-#define MAX_CANON 1024
-#define MAX_INPUT 1024
-#define NAME_MAX 255
-#define NGROUPS_MAX 16
-#define UID_MAX 2147483647U
-#define OPEN_MAX 10240
-#define PATH_MAX 1024
-#define PIPE_BUF 512
-#define BC_BASE_MAX 99
-#define BC_DIM_MAX 2048
-#define BC_SCALE_MAX 99
-#define BC_STRING_MAX 1000
-#define CHARCLASS_NAME_MAX 14
-#define COLL_WEIGHTS_MAX 2
-#define EQUIV_CLASS_MAX 2
-#define EXPR_NEST_MAX 32
-#define LINE_MAX 2048
-#define RE_DUP_MAX 255
-#define NZERO 20
-#define _POSIX_ARG_MAX 4096
-#define _POSIX_CHILD_MAX 25
-#define _POSIX_LINK_MAX 8
-#define _POSIX_MAX_CANON 255
-#define _POSIX_MAX_INPUT 255
-#define _POSIX_NAME_MAX 14
-#define _POSIX_NGROUPS_MAX 8
-#define _POSIX_OPEN_MAX 20
-#define _POSIX_PATH_MAX 256
-#define _POSIX_PIPE_BUF 512
-#define _POSIX_SSIZE_MAX 32767
-#define _POSIX_STREAM_MAX 8
-#define _POSIX_TZNAME_MAX 6
-#define _POSIX2_BC_BASE_MAX 99
-#define _POSIX2_BC_DIM_MAX 2048
-#define _POSIX2_BC_SCALE_MAX 99
-#define _POSIX2_BC_STRING_MAX 1000
-#define _POSIX2_EQUIV_CLASS_MAX 2
-#define _POSIX2_EXPR_NEST_MAX 32
-#define _POSIX2_LINE_MAX 2048
-#define _POSIX2_RE_DUP_MAX 255
-#define _POSIX_AIO_LISTIO_MAX 2
-#define _POSIX_AIO_MAX 1
-#define _POSIX_DELAYTIMER_MAX 32
-#define _POSIX_MQ_OPEN_MAX 8
-#define _POSIX_MQ_PRIO_MAX 32
-#define _POSIX_RTSIG_MAX 8
-#define _POSIX_SEM_NSEMS_MAX 256
-#define _POSIX_SEM_VALUE_MAX 32767
-#define _POSIX_SIGQUEUE_MAX 32
-#define _POSIX_TIMER_MAX 32
-#define _POSIX_CLOCKRES_MIN 20000000
-#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-#define _POSIX_THREAD_KEYS_MAX 128
-#define _POSIX_THREAD_THREADS_MAX 64
-#define PTHREAD_DESTRUCTOR_ITERATIONS 4
-#define PTHREAD_KEYS_MAX 512
-#define PTHREAD_STACK_MIN 16384
-#define _POSIX_HOST_NAME_MAX 255
-#define _POSIX_LOGIN_NAME_MAX 9
-#define _POSIX_SS_REPL_MAX 4
-#define _POSIX_SYMLINK_MAX 255
-#define _POSIX_SYMLOOP_MAX 8
-#define _POSIX_TRACE_EVENT_NAME_MAX 30
-#define _POSIX_TRACE_NAME_MAX 8
-#define _POSIX_TRACE_SYS_MAX 8
-#define _POSIX_TRACE_USER_EVENT_MAX 32
-#define _POSIX_TTY_NAME_MAX 9
-#define _POSIX2_CHARCLASS_NAME_MAX 14
-#define _POSIX2_COLL_WEIGHTS_MAX 2
-#define _POSIX_RE_DUP_MAX _POSIX2_RE_DUP_MAX
-#define OFF_MIN LLONG_MIN
-#define OFF_MAX LLONG_MAX
-#define PASS_MAX 128
-#define NL_ARGMAX 9
-#define NL_LANGMAX 14
-#define NL_MSGMAX 32767
-#define NL_NMAX 1
-#define NL_SETMAX 255
-#define NL_TEXTMAX 2048
-#define _XOPEN_IOV_MAX 16
-#define IOV_MAX 1024
-#define _XOPEN_NAME_MAX 255
-#define _XOPEN_PATH_MAX 1024
-#undef SCHAR_MIN
-#undef SCHAR_MAX
-#undef UCHAR_MAX
-#undef SHRT_MIN
-#undef SHRT_MAX
-#undef USHRT_MAX
-#undef INT_MIN
-#undef INT_MAX
-#undef UINT_MAX
-#undef LONG_MIN
-#undef LONG_MAX
-#undef ULONG_MAX
-#undef CHAR_BIT
-#undef CHAR_MIN
-#undef CHAR_MAX
-#define SCHAR_MAX __SCHAR_MAX__
-#define SHRT_MAX __SHRT_MAX__
-#define INT_MAX __INT_MAX__
-#define LONG_MAX __LONG_MAX__
-#define SCHAR_MIN (-__SCHAR_MAX__-1)
-#define SHRT_MIN (-__SHRT_MAX__ -1)
-#define INT_MIN (-__INT_MAX__ -1)
-#define LONG_MIN (-__LONG_MAX__ -1L)
-#define UCHAR_MAX (__SCHAR_MAX__*2 +1)
-#define USHRT_MAX (__SHRT_MAX__ *2 +1)
-#define UINT_MAX (__INT_MAX__ *2U +1U)
-#define ULONG_MAX (__LONG_MAX__ *2UL+1UL)
-#define CHAR_BIT __CHAR_BIT__
-#define CHAR_MIN SCHAR_MIN
-#define CHAR_MAX __SCHAR_MAX__
-#undef LLONG_MIN
-#undef LLONG_MAX
-#undef ULLONG_MAX
-#define LLONG_MAX __LONG_LONG_MAX__
-#define LLONG_MIN (-__LONG_LONG_MAX__-1LL)
-#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
-#undef LONG_LONG_MIN
-#undef LONG_LONG_MAX
-#undef ULONG_LONG_MAX
-#define LONG_LONG_MAX __LONG_LONG_MAX__
-#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL)
-#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
-#define SIGNED_VALUE long
-#define SIZEOF_VALUE SIZEOF_LONG
-#define PRI_VALUE_PREFIX "l"
-#define RBIMPL_VALUE_NULL 0UL
-#define RBIMPL_VALUE_ONE 1UL
-#define RBIMPL_VALUE_FULL ULONG_MAX
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_VM_H
-#pragma GCC visibility push(default)
-#define HAVE_RB_DEFINE_ALLOC_FUNC 1
-#pragma GCC visibility pop
-#define RBIMPL_METHOD_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_CFUNC_IS_rb_f_notimplement(f) __builtin_types_compatible_p( __typeof__(f), __typeof__(rb_f_notimplement))
-#define RBIMPL_ANYARGS_DISPATCH(expr,truthy,falsy) __builtin_choose_expr( __builtin_choose_expr( __builtin_constant_p(expr), (expr), 0), (truthy), (falsy))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_singleton_method_m2, rb_define_singleton_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_singleton_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_singleton_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_singleton_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_singleton_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_singleton_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_singleton_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_singleton_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_singleton_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_singleton_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_singleton_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_singleton_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_singleton_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_singleton_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_singleton_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_singleton_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_singleton_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_singleton_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_protected_method_m2, rb_define_protected_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_protected_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_protected_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_protected_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_protected_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_protected_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_protected_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_protected_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_protected_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_protected_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_protected_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_protected_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_protected_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_protected_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_protected_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_protected_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_protected_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_protected_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_private_method_m2, rb_define_private_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_private_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_private_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_private_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_private_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_private_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_private_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_private_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_private_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_private_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_private_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_private_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_private_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_private_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_private_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_private_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_private_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_private_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_module_function_m2, rb_define_module_function_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_module_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_module_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_module_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_module_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_module_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_module_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_module_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_module_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_module_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_module_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_module_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_module_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_module_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_module_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_module_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_module_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_module_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_global_function_m2, rb_define_global_function_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_global_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_global_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_global_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_global_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_global_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_global_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_global_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_global_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_global_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_global_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_global_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_global_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_global_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_global_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_global_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_global_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_global_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_id_m2, rb_define_method_id_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_id_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_id_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_id_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_id_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_id_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_id_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_id_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_id_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_id_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_id_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_id_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_id_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_id_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_id_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_id_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_id_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_id_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_m2, rb_define_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_singleton_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_protected_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_private_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_module_function_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_global_function_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_id_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n))
-#define RBIMPL_ANYARGS_ATTRSET(sym) RBIMPL_ATTR_MAYBE_UNUSED() RBIMPL_ATTR_NONNULL(()) RBIMPL_ATTR_WEAKREF(sym)
-#define RBIMPL_ANYARGS_DECL(sym,...) RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _notimpl(__VA_ARGS__, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m3(__VA_ARGS__, VALUE(*)(ANYARGS), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m2(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m1(__VA_ARGS__, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _02(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _03(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _04(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _05(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _06(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _07(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _08(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _09(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _10(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _11(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _12(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _13(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _14(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _15(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-#define rb_define_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_method_id(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method_id((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_singleton_method(obj,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method((arity), (func))((obj), (mid), (func), (arity))
-#define rb_define_protected_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_private_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_private_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_module_function(mod,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_module_function((arity), (func))((mod), (mid), (func), (arity))
-#define rb_define_global_function(mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_global_function((arity), (func))((mid), (func), (arity))
-#define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func))
-#define RBIMPL_ARITHMETIC_H
-#define RBIMPL_ARITHMETIC_CHAR_H
-#define RBIMPL_ARITHMETIC_INT_H
-#define RBIMPL_ARITHMETIC_FIXNUM_H
-#define FIXABLE RB_FIXABLE
-#define FIXNUM_MAX RUBY_FIXNUM_MAX
-#define FIXNUM_MIN RUBY_FIXNUM_MIN
-#define NEGFIXABLE RB_NEGFIXABLE
-#define POSFIXABLE RB_POSFIXABLE
-#define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1)
-#define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN)
-#define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_))
-#define RUBY_FIXNUM_MAX (LONG_MAX / 2)
-#define RUBY_FIXNUM_MIN (LONG_MIN / 2)
-#define RBIMPL_ARITHMETIC_INTPTR_T_H
-#define rb_int_new rb_int2inum
-#define rb_uint_new rb_uint2inum
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_LONG_H
-#define RBIMPL_ATTR_ARTIFICIAL_H
-#define RBIMPL_ATTR_ARTIFICIAL() __attribute__((__artificial__))
-#define RBIMPL_ATTR_CONSTEXPR_H
-#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0
-#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
-#define RBIMPL_ATTR_CONSTEXPR(_)
-#define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
-#define RBIMPL_SPECIAL_CONSTS_H
-#define RBIMPL_ATTR_ENUM_EXTENSIBILITY_H
-#define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_) __attribute__((__enum_extensibility__(_)))
-#define USE_FLONUM 1
-#define RTEST RB_TEST
-#define FIXNUM_P RB_FIXNUM_P
-#define IMMEDIATE_P RB_IMMEDIATE_P
-#define NIL_P RB_NIL_P
-#define SPECIAL_CONST_P RB_SPECIAL_CONST_P
-#define STATIC_SYM_P RB_STATIC_SYM_P
-#define Qfalse RUBY_Qfalse
-#define Qnil RUBY_Qnil
-#define Qtrue RUBY_Qtrue
-#define Qundef RUBY_Qundef
-#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
-#define FLONUM_FLAG RUBY_FLONUM_FLAG
-#define FLONUM_MASK RUBY_FLONUM_MASK
-#define FLONUM_P RB_FLONUM_P
-#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
-#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
-#define RB_FIXNUM_P RB_FIXNUM_P
-#define RB_FLONUM_P RB_FLONUM_P
-#define RB_IMMEDIATE_P RB_IMMEDIATE_P
-#define RB_NIL_P RB_NIL_P
-#define RB_SPECIAL_CONST_P RB_SPECIAL_CONST_P
-#define RB_STATIC_SYM_P RB_STATIC_SYM_P
-#define RB_TEST RB_TEST
-#define RB_UNDEF_P RB_UNDEF_P
-#define RB_NIL_OR_UNDEF_P RB_NIL_OR_UNDEF_P
-#define RUBY_Qfalse RBIMPL_CAST((VALUE)RUBY_Qfalse)
-#define RUBY_Qtrue RBIMPL_CAST((VALUE)RUBY_Qtrue)
-#define RUBY_Qnil RBIMPL_CAST((VALUE)RUBY_Qnil)
-#define RUBY_Qundef RBIMPL_CAST((VALUE)RUBY_Qundef)
-#define FIX2LONG RB_FIX2LONG
-#define FIX2ULONG RB_FIX2ULONG
-#define INT2FIX RB_INT2FIX
-#define LONG2FIX RB_INT2FIX
-#define LONG2NUM RB_LONG2NUM
-#define NUM2LONG RB_NUM2LONG
-#define NUM2ULONG RB_NUM2ULONG
-#define RB_FIX2LONG rb_fix2long
-#define RB_FIX2ULONG rb_fix2ulong
-#define RB_LONG2FIX RB_INT2FIX
-#define RB_LONG2NUM rb_long2num_inline
-#define RB_NUM2LONG rb_num2long_inline
-#define RB_NUM2ULONG rb_num2ulong_inline
-#define RB_ULONG2NUM rb_ulong2num_inline
-#define ULONG2NUM RB_ULONG2NUM
-#define rb_fix_new RB_INT2FIX
-#define rb_long2int rb_long2int_inline
-#define RB_INT2FIX RB_INT2FIX
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#undef INT2FIX
-#define INT2FIX(i) __builtin_choose_expr( __builtin_constant_p(i), RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(i))
-#define RB_INT2NUM rb_int2num_inline
-#define RB_NUM2INT rb_num2int_inline
-#define RB_UINT2NUM rb_uint2num_inline
-#define FIX2INT RB_FIX2INT
-#define FIX2UINT RB_FIX2UINT
-#define INT2NUM RB_INT2NUM
-#define NUM2INT RB_NUM2INT
-#define NUM2UINT RB_NUM2UINT
-#define UINT2NUM RB_UINT2NUM
-#define RB_FIX2INT RB_FIX2INT
-#define RB_NUM2UINT RB_NUM2UINT
-#define RB_FIX2UINT RB_FIX2UINT
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare"
-#pragma clang diagnostic pop
-#define RBIMPL_RSTRING_H
-#define RBIMPL_RBASIC_H
-#define RBIMPL_ATTR_NOALIAS_H
-#define RBIMPL_ATTR_NOALIAS() __declspec(noalias)
-#define RBASIC(obj) RBIMPL_CAST((struct RBasic *)(obj))
-#define RBASIC_CLASS RBASIC_CLASS
-#define RBIMPL_RVALUE_EMBED_LEN_MAX 3
-#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
-#define RBIMPL_EMBED_LEN_MAX_OF(T) RBIMPL_CAST((int)(sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]) / (sizeof(T))))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_FL_TYPE_H
-#define RBIMPL_ATTR_FLAG_ENUM_H
-#define RBIMPL_ATTR_FLAG_ENUM() __attribute__((__flag_enum__))
-#define RBIMPL_VALUE_TYPE_H
-#define RBIMPL_CONSTANT_P_H
-#define RBIMPL_CONSTANT_P(expr) __builtin_constant_p(expr)
-#define RBIMPL_ERROR_H
-#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
-#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
-#pragma GCC visibility push(default)
-#define ruby_verbose (*rb_ruby_verbose_ptr())
-#define ruby_debug (*rb_ruby_debug_ptr())
-#pragma GCC visibility pop
-#define T_ARRAY RUBY_T_ARRAY
-#define T_BIGNUM RUBY_T_BIGNUM
-#define T_CLASS RUBY_T_CLASS
-#define T_COMPLEX RUBY_T_COMPLEX
-#define T_DATA RUBY_T_DATA
-#define T_FALSE RUBY_T_FALSE
-#define T_FILE RUBY_T_FILE
-#define T_FIXNUM RUBY_T_FIXNUM
-#define T_FLOAT RUBY_T_FLOAT
-#define T_HASH RUBY_T_HASH
-#define T_ICLASS RUBY_T_ICLASS
-#define T_IMEMO RUBY_T_IMEMO
-#define T_MASK RUBY_T_MASK
-#define T_MATCH RUBY_T_MATCH
-#define T_MODULE RUBY_T_MODULE
-#define T_MOVED RUBY_T_MOVED
-#define T_NIL RUBY_T_NIL
-#define T_NODE RUBY_T_NODE
-#define T_NONE RUBY_T_NONE
-#define T_OBJECT RUBY_T_OBJECT
-#define T_RATIONAL RUBY_T_RATIONAL
-#define T_REGEXP RUBY_T_REGEXP
-#define T_STRING RUBY_T_STRING
-#define T_STRUCT RUBY_T_STRUCT
-#define T_SYMBOL RUBY_T_SYMBOL
-#define T_TRUE RUBY_T_TRUE
-#define T_UNDEF RUBY_T_UNDEF
-#define T_ZOMBIE RUBY_T_ZOMBIE
-#define BUILTIN_TYPE RB_BUILTIN_TYPE
-#define DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
-#define RB_INTEGER_TYPE_P rb_integer_type_p
-#define SYMBOL_P RB_SYMBOL_P
-#define rb_type_p RB_TYPE_P
-#define RB_BUILTIN_TYPE RB_BUILTIN_TYPE
-#define RB_DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
-#define RB_FLOAT_TYPE_P RB_FLOAT_TYPE_P
-#define RB_SYMBOL_P RB_SYMBOL_P
-#define RB_TYPE_P RB_TYPE_P
-#define Check_Type Check_Type
-#define RBIMPL_ASSERT_TYPE(v,t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
-#define TYPE(_) RBIMPL_CAST((int)rb_type(_))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#undef RB_TYPE_P
-#define RB_TYPE_P(obj,t) (RBIMPL_CONSTANT_P(t) ? rbimpl_RB_TYPE_P_fastpath((obj), (t)) : (RB_TYPE_P)((obj), (t)))
-#define RBIMPL_HAVE_ENUM_ATTRIBUTE 1
-#define RBIMPL_WIDER_ENUM 1
-#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON)
-#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED)
-#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0)
-#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1)
-#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE)
-#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT)
-#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE)
-#define FL_UNTRUSTED RBIMPL_CAST((VALUE)RUBY_FL_UNTRUSTED)
-#define FL_SEEN_OBJ_ID RBIMPL_CAST((VALUE)RUBY_FL_SEEN_OBJ_ID)
-#define FL_EXIVAR RBIMPL_CAST((VALUE)RUBY_FL_EXIVAR)
-#define FL_FREEZE RBIMPL_CAST((VALUE)RUBY_FL_FREEZE)
-#define FL_USHIFT RBIMPL_CAST((VALUE)RUBY_FL_USHIFT)
-#define FL_USER0 RBIMPL_CAST((VALUE)RUBY_FL_USER0)
-#define FL_USER1 RBIMPL_CAST((VALUE)RUBY_FL_USER1)
-#define FL_USER2 RBIMPL_CAST((VALUE)RUBY_FL_USER2)
-#define FL_USER3 RBIMPL_CAST((VALUE)RUBY_FL_USER3)
-#define FL_USER4 RBIMPL_CAST((VALUE)RUBY_FL_USER4)
-#define FL_USER5 RBIMPL_CAST((VALUE)RUBY_FL_USER5)
-#define FL_USER6 RBIMPL_CAST((VALUE)RUBY_FL_USER6)
-#define FL_USER7 RBIMPL_CAST((VALUE)RUBY_FL_USER7)
-#define FL_USER8 RBIMPL_CAST((VALUE)RUBY_FL_USER8)
-#define FL_USER9 RBIMPL_CAST((VALUE)RUBY_FL_USER9)
-#define FL_USER10 RBIMPL_CAST((VALUE)RUBY_FL_USER10)
-#define FL_USER11 RBIMPL_CAST((VALUE)RUBY_FL_USER11)
-#define FL_USER12 RBIMPL_CAST((VALUE)RUBY_FL_USER12)
-#define FL_USER13 RBIMPL_CAST((VALUE)RUBY_FL_USER13)
-#define FL_USER14 RBIMPL_CAST((VALUE)RUBY_FL_USER14)
-#define FL_USER15 RBIMPL_CAST((VALUE)RUBY_FL_USER15)
-#define FL_USER16 RBIMPL_CAST((VALUE)RUBY_FL_USER16)
-#define FL_USER17 RBIMPL_CAST((VALUE)RUBY_FL_USER17)
-#define FL_USER18 RBIMPL_CAST((VALUE)RUBY_FL_USER18)
-#define FL_USER19 RBIMPL_CAST((VALUE)(unsigned int)RUBY_FL_USER19)
-#define ELTS_SHARED RUBY_ELTS_SHARED
-#define RB_OBJ_FREEZE rb_obj_freeze_inline
-#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
-#define RB_FL_ABLE RB_FL_ABLE
-#define RB_FL_ALL RB_FL_ALL
-#define RB_FL_ALL_RAW RB_FL_ALL_RAW
-#define RB_FL_ANY RB_FL_ANY
-#define RB_FL_ANY_RAW RB_FL_ANY_RAW
-#define RB_FL_REVERSE RB_FL_REVERSE
-#define RB_FL_REVERSE_RAW RB_FL_REVERSE_RAW
-#define RB_FL_SET RB_FL_SET
-#define RB_FL_SET_RAW RB_FL_SET_RAW
-#define RB_FL_TEST RB_FL_TEST
-#define RB_FL_TEST_RAW RB_FL_TEST_RAW
-#define RB_FL_UNSET RB_FL_UNSET
-#define RB_FL_UNSET_RAW RB_FL_UNSET_RAW
-#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
-#define RB_OBJ_FROZEN RB_OBJ_FROZEN
-#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define RB_OBJ_INFECT RB_OBJ_INFECT
-#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define RB_OBJ_TAINT RB_OBJ_TAINT
-#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define RB_OBJ_TAINTED RB_OBJ_TAINTED
-#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
-#define RB_OBJ_UNTRUST RB_OBJ_TAINT
-#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED
-#define FL_ABLE RB_FL_ABLE
-#define FL_ALL RB_FL_ALL
-#define FL_ALL_RAW RB_FL_ALL_RAW
-#define FL_ANY RB_FL_ANY
-#define FL_ANY_RAW RB_FL_ANY_RAW
-#define FL_REVERSE RB_FL_REVERSE
-#define FL_REVERSE_RAW RB_FL_REVERSE_RAW
-#define FL_SET RB_FL_SET
-#define FL_SET_RAW RB_FL_SET_RAW
-#define FL_TEST RB_FL_TEST
-#define FL_TEST_RAW RB_FL_TEST_RAW
-#define FL_UNSET RB_FL_UNSET
-#define FL_UNSET_RAW RB_FL_UNSET_RAW
-#define OBJ_FREEZE RB_OBJ_FREEZE
-#define OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
-#define OBJ_FROZEN RB_OBJ_FROZEN
-#define OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define OBJ_INFECT RB_OBJ_INFECT
-#define OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define OBJ_TAINT RB_OBJ_TAINT
-#define OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define OBJ_TAINTED RB_OBJ_TAINTED
-#define OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
-#define OBJ_UNTRUST RB_OBJ_UNTRUST
-#define OBJ_UNTRUSTED RB_OBJ_UNTRUSTED
-#define RBIMPL_FL_USER_N(n) RUBY_FL_USER##n = (1<<(RUBY_FL_USHIFT+n))
-#undef RBIMPL_FL_USER_N
-#undef RBIMPL_WIDER_ENUM
-#undef RBIMPL_HAVE_ENUM_ATTRIBUTE
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RSTRING(obj) RBIMPL_CAST((struct RString *)(obj))
-#define RSTRING_NOEMBED RSTRING_NOEMBED
-#define RSTRING_FSTR RSTRING_FSTR
-#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN
-#define RSTRING_LEN RSTRING_LEN
-#define RSTRING_LENINT RSTRING_LENINT
-#define RSTRING_PTR RSTRING_PTR
-#define RSTRING_END RSTRING_END
-#define StringValue(v) rb_string_value(&(v))
-#define StringValuePtr(v) rb_string_value_ptr(&(v))
-#define StringValueCStr(v) rb_string_value_cstr(&(v))
-#define SafeStringValue(v) StringValue(v)
-#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v); } while (0)
-#pragma GCC visibility push(default)
-#define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v)))
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic pop
-#define RSTRING_GETMEM(str,ptrvar,lenvar) __extension__ ({ struct RString rbimpl_str = rbimpl_rstring_getmem(str); (ptrvar) = rbimpl_str.as.heap.ptr; (lenvar) = rbimpl_str.as.heap.len; })
-#define RB_NUM2CHR rb_num2char_inline
-#define NUM2CHR RB_NUM2CHR
-#define CHR2FIX RB_CHR2FIX
-#define RB_CHR2FIX RB_CHR2FIX
-#define RBIMPL_ARITHMETIC_DOUBLE_H
-#define NUM2DBL rb_num2dbl
-#define RFLOAT_VALUE rb_float_value
-#define DBL2NUM rb_float_new
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_GID_T_H
-#define RBIMPL_ARITHMETIC_LONG_LONG_H
-#define RB_LL2NUM rb_ll2num_inline
-#define RB_ULL2NUM rb_ull2num_inline
-#define LL2NUM RB_LL2NUM
-#define ULL2NUM RB_ULL2NUM
-#define RB_NUM2LL rb_num2ll_inline
-#define RB_NUM2ULL rb_num2ull_inline
-#define NUM2LL RB_NUM2LL
-#define NUM2ULL RB_NUM2ULL
-#pragma GCC visibility push(default)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#define RBIMPL_ARITHMETIC_MODE_T_H
-#define RBIMPL_ARITHMETIC_OFF_T_H
-#define RBIMPL_ARITHMETIC_PID_T_H
-#define RBIMPL_ARITHMETIC_SHORT_H
-#define RB_NUM2SHORT rb_num2short_inline
-#define RB_NUM2USHORT rb_num2ushort
-#define NUM2SHORT RB_NUM2SHORT
-#define NUM2USHORT RB_NUM2USHORT
-#define USHORT2NUM RB_INT2FIX
-#define RB_FIX2SHORT rb_fix2short
-#define FIX2SHORT RB_FIX2SHORT
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_SIZE_T_H
-#define RB_SIZE2NUM RB_ULL2NUM
-#define RB_SSIZE2NUM RB_LL2NUM
-#define RB_NUM2SIZE RB_NUM2ULL
-#define RB_NUM2SSIZE RB_NUM2LL
-#define NUM2SIZET RB_NUM2SIZE
-#define SIZET2NUM RB_SIZE2NUM
-#define NUM2SSIZET RB_NUM2SSIZE
-#define SSIZET2NUM RB_SSIZE2NUM
-#define RBIMPL_ARITHMERIC_ST_DATA_T_H
-#define RUBY_ST_H 1
-#pragma GCC visibility push(default)
-#define ST_DATA_T_DEFINED
-#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
-#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
-#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
-#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
-#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
-#define st_init_table rb_st_init_table
-#define st_init_table_with_size rb_st_init_table_with_size
-#define st_init_numtable rb_st_init_numtable
-#define st_init_numtable_with_size rb_st_init_numtable_with_size
-#define st_init_strtable rb_st_init_strtable
-#define st_init_strtable_with_size rb_st_init_strtable_with_size
-#define st_init_strcasetable rb_st_init_strcasetable
-#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
-#define st_delete rb_st_delete
-#define st_delete_safe rb_st_delete_safe
-#define st_shift rb_st_shift
-#define st_insert rb_st_insert
-#define st_insert2 rb_st_insert2
-#define st_lookup rb_st_lookup
-#define st_get_key rb_st_get_key
-#define st_update rb_st_update
-#define st_foreach_with_replace rb_st_foreach_with_replace
-#define st_foreach rb_st_foreach
-#define st_foreach_check rb_st_foreach_check
-#define st_keys rb_st_keys
-#define st_keys_check rb_st_keys_check
-#define st_values rb_st_values
-#define st_values_check rb_st_values_check
-#define st_add_direct rb_st_add_direct
-#define st_free_table rb_st_free_table
-#define st_cleanup_safe rb_st_cleanup_safe
-#define st_clear rb_st_clear
-#define st_copy rb_st_copy
-#define st_numcmp rb_st_numcmp
-#define st_numhash rb_st_numhash
-#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
-#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
-#define st_strcasecmp rb_st_locale_insensitive_strcasecmp
-#define st_strncasecmp rb_st_locale_insensitive_strncasecmp
-#define st_memsize rb_st_memsize
-#define st_hash rb_st_hash
-#define st_hash_uint32 rb_st_hash_uint32
-#define st_hash_uint rb_st_hash_uint
-#define st_hash_end rb_st_hash_end
-#define st_hash_start(h) ((st_index_t)(h))
-#pragma GCC visibility pop
-#define ST2FIX RB_ST2FIX
-#define RB_ST2FIX RB_ST2FIX
-#define RBIMPL_ARITHMETIC_UID_T_H
-#define RBIMPL_CORE_H
-#define RBIMPL_RARRAY_H
-#define RBIMPL_RGENGC_H
-#undef USE_RGENGC
-#define USE_RGENGC 1
-#define USE_RINCGC 1
-#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
-#define RGENGC_WB_PROTECTED_ARRAY 1
-#define RGENGC_WB_PROTECTED_HASH 1
-#define RGENGC_WB_PROTECTED_STRUCT 1
-#define RGENGC_WB_PROTECTED_STRING 1
-#define RGENGC_WB_PROTECTED_OBJECT 1
-#define RGENGC_WB_PROTECTED_REGEXP 1
-#define RGENGC_WB_PROTECTED_CLASS 1
-#define RGENGC_WB_PROTECTED_FLOAT 1
-#define RGENGC_WB_PROTECTED_COMPLEX 1
-#define RGENGC_WB_PROTECTED_RATIONAL 1
-#define RGENGC_WB_PROTECTED_BIGNUM 1
-#define RGENGC_WB_PROTECTED_NODE_CREF 1
-#define RB_OBJ_WRITE(old,slot,young) RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
-#define RB_OBJ_WRITTEN(old,oldv,young) RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
-#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define OBJ_PROMOTED RB_OBJ_PROMOTED
-#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT
-#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
-#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
-#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
-#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define USE_TRANSIENT_HEAP 1
-#define RARRAY(obj) RBIMPL_CAST((struct RArray *)(obj))
-#define RARRAY_EMBED_FLAG RARRAY_EMBED_FLAG
-#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK
-#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
-#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
-#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
-#define RARRAY_LEN rb_array_len
-#define RARRAY_CONST_PTR rb_array_const_ptr
-#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient
-#define FIX_CONST_VALUE_PTR(x) (x)
-#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN
-#define RARRAY_LENINT RARRAY_LENINT
-#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P
-#define RARRAY_ASET RARRAY_ASET
-#define RARRAY_PTR RARRAY_PTR
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RARRAY_STMT(flag,ary,var,expr) do { RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); const VALUE rbimpl_ary = (ary); VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); expr; rb_array_ptr_use_end(rbimpl_ary, (flag)); } while (0)
-#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
-#define RARRAY_PTR_USE(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr)
-#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr)
-#define RARRAY_AREF(a,i) RARRAY_CONST_PTR_TRANSIENT(a)[i]
-#define RBIMPL_RBIGNUM_H
-#define RBIGNUM_SIGN rb_big_sign
-#define RBIGNUM_POSITIVE_P RBIGNUM_POSITIVE_P
-#define RBIGNUM_NEGATIVE_P RBIGNUM_NEGATIVE_P
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RCLASS_H
-#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
-#define RCLASS(obj) RBIMPL_CAST((struct RClass *)(obj))
-#define RMODULE RCLASS
-#define RCLASS_SUPER rb_class_get_superclass
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RDATA_H
-#define RUBY_UNTYPED_DATA_WARNING 1
-#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f))
-#define RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() RBIMPL_ATTR_WARNING(("untyped Data is unsafe; use TypedData instead")) RBIMPL_ATTR_DEPRECATED(("by TypedData"))
-#define RBIMPL_MACRO_SELECT(x,y) x ## y
-#define RUBY_MACRO_SELECT(x,y) RBIMPL_MACRO_SELECT(x, y)
-#define RDATA(obj) RBIMPL_CAST((struct RData *)(obj))
-#define DATA_PTR(obj) RDATA(obj)->data
-#define RUBY_DEFAULT_FREE RBIMPL_DATA_FUNC(-1)
-#define RUBY_NEVER_FREE RBIMPL_DATA_FUNC(0)
-#define RUBY_UNTYPED_DATA_FUNC(f) f RBIMPL_ATTRSET_UNTYPED_DATA_FUNC()
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap( (klass), (sval), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free))
-#define Data_Make_Struct0(result,klass,type,size,mark,free,sval) VALUE result = rb_data_object_zalloc( (klass), (size), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free)); (sval) = RBIMPL_CAST((type *)DATA_PTR(result)); RBIMPL_CAST( (void)(sval))
-#define Data_Make_Struct(klass,type,mark,free,sval) RB_GNUC_EXTENSION({ Data_Make_Struct0( data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj; })
-#define Data_Get_Struct(obj,type,sval) ((sval) = RBIMPL_CAST((type*)rb_data_object_get(obj)))
-#define rb_data_object_wrap_warning(klass,ptr,mark,free) RB_GNUC_EXTENSION( __builtin_choose_expr( __builtin_constant_p(klass) && !(klass), rb_data_object_wrap(klass, ptr, mark, free), (rb_data_object_wrap_warning)(klass, ptr, mark, free)))
-#define rb_data_object_wrap_0 rb_data_object_wrap
-#define rb_data_object_wrap_1 rb_data_object_wrap_warning
-#define rb_data_object_wrap_2 rb_data_object_wrap_
-#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_2, RUBY_UNTYPED_DATA_WARNING)
-#define rb_data_object_get_0 rb_data_object_get
-#define rb_data_object_get_1 rb_data_object_get_warning
-#define rb_data_object_get_2 rb_data_object_get_
-#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_2, RUBY_UNTYPED_DATA_WARNING)
-#define rb_data_object_make_0 rb_data_object_make
-#define rb_data_object_make_1 rb_data_object_make_warning
-#define rb_data_object_make_2 rb_data_object_make_
-#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_2, RUBY_UNTYPED_DATA_WARNING)
-#define RBIMPL_RFILE_H
-#define RFILE(obj) RBIMPL_CAST((struct RFile *)(obj))
-#define RBIMPL_RHASH_H
-#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
-#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
-#define RHASH_IFNONE(h) rb_hash_ifnone(h)
-#define RHASH_SIZE(h) rb_hash_size_num(h)
-#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
-#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ROBJECT_H
-#define ROBJECT(obj) RBIMPL_CAST((struct RObject *)(obj))
-#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
-#define ROBJECT_EMBED ROBJECT_EMBED
-#define ROBJECT_IV_CAPACITY ROBJECT_IV_CAPACITY
-#define ROBJECT_IVPTR ROBJECT_IVPTR
-#define RBIMPL_RREGEXP_H
-#define RREGEXP(obj) RBIMPL_CAST((struct RRegexp *)(obj))
-#define RREGEXP_PTR(obj) (RREGEXP(obj)->ptr)
-#define RREGEXP_SRC RREGEXP_SRC
-#define RREGEXP_SRC_PTR RREGEXP_SRC_PTR
-#define RREGEXP_SRC_LEN RREGEXP_SRC_LEN
-#define RREGEXP_SRC_END RREGEXP_SRC_END
-#define RBIMPL_RSTRUCT_H
-#define RSTRUCT_PTR(st) rb_struct_ptr(st)
-#define RSTRUCT_LEN RSTRUCT_LEN
-#define RSTRUCT_SET RSTRUCT_SET
-#define RSTRUCT_GET RSTRUCT_GET
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RTYPEDDATA_H
-#define HAVE_TYPE_RB_DATA_TYPE_T 1
-#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
-#define HAVE_RB_DATA_TYPE_T_PARENT 1
-#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
-#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
-#define RTYPEDDATA(obj) RBIMPL_CAST((struct RTypedData *)(obj))
-#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
-#define Check_TypedStruct(v,t) rb_check_typeddata(RBIMPL_CAST((VALUE)(v)), (t))
-#define RTYPEDDATA_P RTYPEDDATA_P
-#define RTYPEDDATA_TYPE RTYPEDDATA_TYPE
-#define RUBY_TYPED_FREE_IMMEDIATELY RUBY_TYPED_FREE_IMMEDIATELY
-#define RUBY_TYPED_FROZEN_SHAREABLE RUBY_TYPED_FROZEN_SHAREABLE
-#define RUBY_TYPED_WB_PROTECTED RUBY_TYPED_WB_PROTECTED
-#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
-#define TypedData_Make_Struct0(result,klass,type,size,data_type,sval) VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); RBIMPL_CAST( (void)(sval))
-#define TypedData_Make_Struct(klass,type,data_type,sval) RB_GNUC_EXTENSION({ TypedData_Make_Struct0( data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj; })
-#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type))))
-#define RBIMPL_CTYPE_H
-#define _CTYPE_H_
-#define __CTYPE_H_
-#define _RUNETYPE_H_
-#define _WINT_T
-#define _CACHED_RUNES (1 <<8 )
-#define _CRMASK (~(_CACHED_RUNES - 1))
-#define _RUNE_MAGIC_A "RuneMagA"
-#define _CTYPE_A 0x00000100L
-#define _CTYPE_C 0x00000200L
-#define _CTYPE_D 0x00000400L
-#define _CTYPE_G 0x00000800L
-#define _CTYPE_L 0x00001000L
-#define _CTYPE_P 0x00002000L
-#define _CTYPE_S 0x00004000L
-#define _CTYPE_U 0x00008000L
-#define _CTYPE_X 0x00010000L
-#define _CTYPE_B 0x00020000L
-#define _CTYPE_R 0x00040000L
-#define _CTYPE_I 0x00080000L
-#define _CTYPE_T 0x00100000L
-#define _CTYPE_Q 0x00200000L
-#define _CTYPE_SW0 0x20000000L
-#define _CTYPE_SW1 0x40000000L
-#define _CTYPE_SW2 0x80000000L
-#define _CTYPE_SW3 0xc0000000L
-#define _CTYPE_SWM 0xe0000000L
-#define _CTYPE_SWS 30
-#define __DARWIN_CTYPE_inline __header_inline
-#define __DARWIN_CTYPE_TOP_inline __header_inline
-#define _tolower(c) __tolower(c)
-#define _toupper(c) __toupper(c)
-#define ISASCII rb_isascii
-#define ISPRINT rb_isprint
-#define ISGRAPH rb_isgraph
-#define ISSPACE rb_isspace
-#define ISUPPER rb_isupper
-#define ISLOWER rb_islower
-#define ISALNUM rb_isalnum
-#define ISALPHA rb_isalpha
-#define ISDIGIT rb_isdigit
-#define ISXDIGIT rb_isxdigit
-#define ISBLANK rb_isblank
-#define ISCNTRL rb_iscntrl
-#define ISPUNCT rb_ispunct
-#define TOUPPER rb_toupper
-#define TOLOWER rb_tolower
-#define STRCASECMP st_locale_insensitive_strcasecmp
-#define STRNCASECMP st_locale_insensitive_strncasecmp
-#define STRTOUL ruby_strtoul
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_EVAL_H
-#pragma GCC visibility push(default)
-#define rb_funcall2 rb_funcallv
-#define rb_funcall3 rb_funcallv_public
-#pragma GCC visibility pop
-#define RBIMPL_EVENT_H
-#define RUBY_EVENT_NONE 0x0000
-#define RUBY_EVENT_LINE 0x0001
-#define RUBY_EVENT_CLASS 0x0002
-#define RUBY_EVENT_END 0x0004
-#define RUBY_EVENT_CALL 0x0008
-#define RUBY_EVENT_RETURN 0x0010
-#define RUBY_EVENT_C_CALL 0x0020
-#define RUBY_EVENT_C_RETURN 0x0040
-#define RUBY_EVENT_RAISE 0x0080
-#define RUBY_EVENT_ALL 0x00ff
-#define RUBY_EVENT_B_CALL 0x0100
-#define RUBY_EVENT_B_RETURN 0x0200
-#define RUBY_EVENT_THREAD_BEGIN 0x0400
-#define RUBY_EVENT_THREAD_END 0x0800
-#define RUBY_EVENT_FIBER_SWITCH 0x1000
-#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
-#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
-#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
-#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
-#define RUBY_EVENT_SWITCH 0x040000
-#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
-#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
-#define RUBY_INTERNAL_EVENT_GC_START 0x400000
-#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
-#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
-#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
-#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
-#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
-#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
-#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GLOB_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GLOBALS_H
-#pragma GCC visibility push(default)
-#define RUBY_INTEGER_UNIFICATION 1
-#define CLASS_OF rb_class_of
-#pragma GCC visibility pop
-#define RBIMPL_INTERPRETER_H
-#pragma GCC visibility push(default)
-#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
-#pragma GCC visibility pop
-#define RBIMPL_ITERATOR_H
-#pragma GCC visibility push(default)
-#define RB_BLOCK_CALL_FUNC_STRICT 1
-#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
-#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
-#pragma GCC visibility pop
-#define RBIMPL_MEMORY_H
-#define DSIZE_T uint128_t
-#define RUBY_ALLOCV_LIMIT 1024
-#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
-#define RB_ALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xmalloc2((n), sizeof(type)))
-#define RB_ALLOC(type) RBIMPL_CAST((type *)ruby_xmalloc(sizeof(type)))
-#define RB_ZALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xcalloc((n), sizeof(type)))
-#define RB_ZALLOC(type) (RB_ZALLOC_N(type, 1))
-#define RB_REALLOC_N(var,type,n) ((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type))))
-#define ALLOCA_N(type,n) RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n))))
-#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
-#define RB_ALLOCV_N(type,v,n) RBIMPL_CAST((type *) (((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? ((v) = 0, alloca((n) * sizeof(type))) : rb_alloc_tmp_buffer2(&(v), (n), sizeof(type))))
-#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
-#define MEMZERO(p,type,n) memset((p), 0, rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMCPY(p1,p2,type,n) ruby_nonempty_memcpy((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define ALLOC_N RB_ALLOC_N
-#define ALLOC RB_ALLOC
-#define ZALLOC_N RB_ZALLOC_N
-#define ZALLOC RB_ZALLOC
-#define REALLOC_N RB_REALLOC_N
-#define ALLOCV RB_ALLOCV
-#define ALLOCV_N RB_ALLOCV_N
-#define ALLOCV_END RB_ALLOCV_END
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_MODULE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_NEWOBJ_H
-#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj())
-#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags))
-#define NEWOBJ RB_NEWOBJ
-#define NEWOBJ_OF RB_NEWOBJ_OF
-#define OBJSETUP rb_obj_setup
-#define CLONESETUP rb_clone_setup
-#define DUPSETUP rb_dup_setup
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_SCAN_ARGS_H
-#define RBIMPL_ATTR_DIAGNOSE_IF_H
-#define RBIMPL_ATTR_DIAGNOSE_IF(_,__,___) RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wgcc-compat) __attribute__((__diagnose_if__(_, __, ___))) RBIMPL_WARNING_POP()
-#define RBIMPL_INTERN_ARRAY_H
-#pragma GCC visibility push(default)
-#define rb_ary_tmp_new rb_ary_hidden_new
-#define rb_ary_new2 rb_ary_new_capa
-#define rb_ary_new3 rb_ary_new_from_args
-#define rb_ary_new4 rb_ary_new_from_values
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ERROR_H
-#define UNLIMITED_ARGUMENTS (-1)
-#define rb_exc_new2 rb_exc_new_cstr
-#define rb_exc_new3 rb_exc_new_str
-#define rb_check_arity rb_check_arity
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_check_frozen_internal(obj) do { VALUE frozen_obj = (obj); if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { rb_error_frozen_object(frozen_obj); } } while (0)
-#define rb_check_frozen rb_check_frozen_inline
-#define RBIMPL_INTERN_HASH_H
-#pragma GCC visibility push(default)
-#define st_foreach_safe rb_st_foreach_safe
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PROC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
-#define RB_SCAN_ARGS_KEYWORDS 1
-#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
-#define RB_NO_KEYWORDS 0
-#define RB_PASS_KEYWORDS 1
-#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p()
-#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_scan_args_isdigit(c) (RBIMPL_CAST((unsigned char)((c)-'0'))<10)
-#define rb_scan_args_count_end(fmt,ofs,vari) ((fmt)[ofs] ? -1 : (vari))
-#define rb_scan_args_count_block(fmt,ofs,vari) ((fmt)[ofs]!='&' ? rb_scan_args_count_end(fmt, ofs, vari) : rb_scan_args_count_end(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_hash(fmt,ofs,vari) ((fmt)[ofs]!=':' ? rb_scan_args_count_block(fmt, ofs, vari) : rb_scan_args_count_block(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_trail(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_hash(fmt, ofs, vari) : rb_scan_args_count_hash(fmt, (ofs)+1, (vari)+((fmt)[ofs]-'0')))
-#define rb_scan_args_count_var(fmt,ofs,vari) ((fmt)[ofs]!='*' ? rb_scan_args_count_trail(fmt, ofs, vari) : rb_scan_args_count_trail(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_opt(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_var(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
-#define rb_scan_args_count_lead(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_opt(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
-#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
-#define rb_scan_args_verify(fmt,varc) RBIMPL_ASSERT_NOTHING
-#define rb_scan_args0(argc,argv,fmt,varc,vars) rb_scan_args_set(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
-#define rb_scan_args_kw0(kw_flag,argc,argv,fmt,varc,vars) rb_scan_args_set(kw_flag, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wgcc-compat"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wgcc-compat"
-#pragma clang diagnostic pop
-#define rb_scan_args_next_param() vars[vari++]
-#undef rb_scan_args_next_param
-#define rb_scan_args(argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args0( argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args)(argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
-#define rb_scan_args_kw(kw_flag,argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args_kw0( kw_flag, argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args_kw)(kw_flag, argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
-#define RBIMPL_SYMBOL_H
-#define RB_ID2SYM rb_id2sym
-#define RB_SYM2ID rb_sym2id
-#define ID2SYM RB_ID2SYM
-#define SYM2ID RB_SYM2ID
-#define CONST_ID_CACHE RUBY_CONST_ID_CACHE
-#define CONST_ID RUBY_CONST_ID
-#define rb_intern_const rb_intern_const
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_CONST_ID_CACHE(result,str) { static ID rb_intern_id_cache; rbimpl_intern_const(&rb_intern_id_cache, (str)); result rb_intern_id_cache; }
-#define RUBY_CONST_ID(var,str) do { static ID rbimpl_id; (var) = rbimpl_intern_const(&rbimpl_id, (str)); } while (0)
-#define rb_intern(str) (RBIMPL_CONSTANT_P(str) ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, (str)); }) : (rb_intern)(str))
-#define RBIMPL_VARIABLE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_BACKWARD2_INTTYPES_H
-#define PRI_INT_PREFIX ""
-#define PRI_LONG_PREFIX "l"
-#define PRI_SHORT_PREFIX "h"
-#define RUBY_PRI_VALUE_MARK "\v"
-#define PRIdVALUE PRI_VALUE_PREFIX"d"
-#define PRIoVALUE PRI_VALUE_PREFIX"o"
-#define PRIuVALUE PRI_VALUE_PREFIX"u"
-#define PRIxVALUE PRI_VALUE_PREFIX"x"
-#define PRIXVALUE PRI_VALUE_PREFIX"X"
-#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
-#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
-#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
-#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
-#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
-#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
-#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
-#define PRIdSIZE PRI_SIZE_PREFIX"d"
-#define PRIiSIZE PRI_SIZE_PREFIX"i"
-#define PRIoSIZE PRI_SIZE_PREFIX"o"
-#define PRIuSIZE PRI_SIZE_PREFIX"u"
-#define PRIxSIZE PRI_SIZE_PREFIX"x"
-#define PRIXSIZE PRI_SIZE_PREFIX"X"
-#pragma GCC visibility push(default)
-#define USE_SYMBOL_AS_METHOD_NAME 1
-#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
-#define FilePathStringValue(v) ((v) = rb_get_path(v))
-#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
-#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
-#define rb_varargs_argc_check(argc,vargc) __builtin_choose_expr(__builtin_constant_p(argc), (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : rb_varargs_bad_length(argc, vargc)), rb_varargs_argc_check_runtime(argc, vargc))
-#define RUBY_INTERN_H 1
-#define RBIMPL_INTERN_BIGNUM_H
-#pragma GCC visibility push(default)
-#define rb_big2int(x) rb_big2long(x)
-#define rb_big2uint(x) rb_big2ulong(x)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#define INTEGER_PACK_MSWORD_FIRST 0x01
-#define INTEGER_PACK_LSWORD_FIRST 0x02
-#define INTEGER_PACK_MSBYTE_FIRST 0x10
-#define INTEGER_PACK_LSBYTE_FIRST 0x20
-#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
-#define INTEGER_PACK_2COMP 0x80
-#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
-#define INTEGER_PACK_FORCE_BIGNUM 0x100
-#define INTEGER_PACK_NEGATIVE 0x200
-#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
-#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_COMPAR_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_COMPLEX_H
-#pragma GCC visibility push(default)
-#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
-#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
-#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
-#define rb_complex_new2(x,y) rb_complex_new((x), (y))
-#define rb_complex_add rb_complex_plus
-#define rb_complex_sub rb_complex_minus
-#define rb_complex_nagate rb_complex_uminus
-#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
-#define rb_Complex2(x,y) rb_Complex((x), (y))
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_CONT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_DIR_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ENUM_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ENUMERATOR_H
-#define RBIMPL_INTERN_EVAL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
-#define SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) rb_enumeratorize_with_size_kw((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn), (kw_splat))
-#define RETURN_SIZED_ENUMERATOR(obj,argc,argv,size_fn) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR(obj, argc, argv, size_fn); } while (0)
-#define RETURN_SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat); } while (0)
-#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
-#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
-#define RBIMPL_INTERN_FILE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_GC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_IO_H
-#pragma GCC visibility push(default)
-#define rb_defout rb_stdout
-#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_LOAD_H
-#pragma GCC visibility push(default)
-#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f)
-#define HAVE_RB_EXT_RACTOR_SAFE 1
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_MARSHAL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_NUMERIC_H
-#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_OBJECT_H
-#pragma GCC visibility push(default)
-#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
-#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PARSE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PROCESS_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RANDOM_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RANGE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RATIONAL_H
-#pragma GCC visibility push(default)
-#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
-#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
-#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
-#define rb_rational_new2(x,y) rb_rational_new((x), (y))
-#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
-#define rb_Rational2(x,y) rb_Rational((x), (y))
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RE_H
-#pragma GCC visibility push(default)
-#define rb_memcmp memcmp
-#define HAVE_RB_REG_NEW_STR 1
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RUBY_H
-#pragma GCC visibility push(default)
-#define rb_argv rb_get_argv()
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SELECT_H
-#define RBIMPL_INTERN_SELECT_LARGESIZE_H
-#define rb_fd_ptr rb_fd_ptr
-#define rb_fd_max rb_fd_max
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SIGNAL_H
-#pragma GCC visibility push(default)
-#define posix_signal ruby_posix_signal
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SPRINTF_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_STRING_H
-#pragma GCC visibility push(default)
-#define rb_str_dup_frozen rb_str_new_frozen
-#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
-#define rb_hash_uint(h,i) st_hash_uint((h), (i))
-#define rb_hash_end(h) st_hash_end(h)
-#define rb_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_str_new_static : rb_str_new) ((str), (len)))
-#define rb_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_new_cstr : rb_str_new_cstr) (str))
-#define rb_usascii_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_usascii_str_new_static : rb_usascii_str_new) ((str), (len)))
-#define rb_utf8_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_utf8_str_new_static : rb_utf8_str_new) ((str), (len)))
-#define rb_usascii_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_usascii_str_new_cstr : rb_usascii_str_new_cstr) (str))
-#define rb_utf8_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_utf8_str_new_cstr : rb_utf8_str_new_cstr) (str))
-#define rb_external_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_external_str_new_cstr : rb_external_str_new_cstr) (str))
-#define rb_locale_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_locale_str_new_cstr : rb_locale_str_new_cstr) (str))
-#define rb_str_buf_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_buf_new_cstr : rb_str_buf_new_cstr) (str))
-#define rb_str_cat_cstr(buf,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((buf), (str)))
-#define rb_exc_new_cstr(exc,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_exc_new_cstr : rb_exc_new_cstr) ((exc), (str)))
-#define rb_str_new2 rb_str_new_cstr
-#define rb_str_new3 rb_str_new_shared
-#define rb_str_new4 rb_str_new_frozen
-#define rb_str_new5 rb_str_new_with_class
-#define rb_str_buf_new2 rb_str_buf_new_cstr
-#define rb_usascii_str_new2 rb_usascii_str_new_cstr
-#define rb_str_buf_cat rb_str_cat
-#define rb_str_buf_cat2 rb_str_cat_cstr
-#define rb_str_cat2 rb_str_cat_cstr
-#define rb_strlen_lit(str) (sizeof(str "") - 1)
-#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
-#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
-#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
-#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
-#define rb_str_new_literal(str) rb_str_new_lit(str)
-#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
-#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
-#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_STRUCT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_THREAD_H
-#pragma GCC visibility push(default)
-#define RUBY_UBF_IO RBIMPL_CAST((rb_unblock_function_t *)-1)
-#define RUBY_UBF_PROCESS RBIMPL_CAST((rb_unblock_function_t *)-1)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_TIME_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_VARIABLE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM 1
-#define HAVE_NATIVETHREAD
-#define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();}
-#define RUBY_SUBST_H 1
-#undef snprintf
-#undef vsnprintf
-#define snprintf ruby_snprintf
-#define vsnprintf ruby_vsnprintf
-#pragma GCC visibility pop
-#define RUBY_VM_CORE_H
-#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
-#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
-#define VMDEBUG 0
-#define _USER_SIGNAL_H
-#define sigaddset(set,signo) (*(set) |= __sigbits(signo), 0)
-#define sigdelset(set,signo) (*(set) &= ~__sigbits(signo), 0)
-#define sigismember(set,signo) ((*(set) & __sigbits(signo)) != 0)
-#define sigemptyset(set) (*(set) = 0, 0)
-#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
-#define RUBY_TOPLEVEL_ASSERT_H
-#undef assert
-#define assert RUBY_ASSERT_NDEBUG
-#define VM_ASSERT(expr) ((void)0)
-#define VM_UNREACHABLE(func) UNREACHABLE
-#define RUBY_DEBUG_THREAD_SCHEDULE()
-#define RUBY_ASSERT_MUTEX_OWNED(mutex) VM_ASSERT(rb_mutex_owned_p(mutex))
-#define RUBY_ASSERT_CRITICAL_SECTION_ENTER()
-#define RUBY_ASSERT_CRITICAL_SECTION_LEAVE()
-#define _BSD_SETJMP_H
-#define _JBLEN ((14 + 8 + 2) * 2)
-#define CCAN_LIST_H
-#undef assert
-#undef __assert
-#define assert(e) ((void)0)
-#define CCAN_STR_H
-#define stringify(expr) ccan_stringify_1(expr)
-#define ccan_stringify(expr) ccan_stringify_1(expr)
-#define ccan_stringify_1(expr) #expr
-#define CCAN_CONTAINER_OF_H
-#define CCAN_CHECK_TYPE_H
-#define ccan_check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
-#define ccan_check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
-#define ccan_container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - ccan_container_off(containing_type, member)) + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
-#define ccan_container_of_or_null(member_ptr,containing_type,member) ((containing_type *) ccan_container_of_or_null_(member_ptr, ccan_container_off(containing_type, member)) + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
-#define ccan_container_off(containing_type,member) offsetof(containing_type, member)
-#define ccan_container_of_var(member_ptr,container_var,member) ccan_container_of(member_ptr, typeof(*container_var), member)
-#define ccan_container_off_var(var,member) ccan_container_off(typeof(*var), member)
-#define CCAN_LIST_LOC __FILE__ ":" ccan_stringify(__LINE__)
-#define ccan_list_debug(h,loc) ((void)loc, h)
-#define ccan_list_debug_node(n,loc) ((void)loc, n)
-#define CCAN_LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
-#define CCAN_LIST_HEAD(name) struct ccan_list_head name = CCAN_LIST_HEAD_INIT(name)
-#define ccan_list_add_after(h,p,n) ccan_list_add_after_(h, p, n, CCAN_LIST_LOC)
-#define ccan_list_add(h,n) ccan_list_add_(h, n, CCAN_LIST_LOC)
-#define ccan_list_add_before(h,p,n) ccan_list_add_before_(h, p, n, CCAN_LIST_LOC)
-#define ccan_list_add_tail(h,n) ccan_list_add_tail_(h, n, CCAN_LIST_LOC)
-#define ccan_list_empty(h) ccan_list_empty_(h, CCAN_LIST_LOC)
-#define ccan_list_empty_nodebug(h) ccan_list_empty(h)
-#define ccan_list_del(n) ccan_list_del_(n, CCAN_LIST_LOC)
-#define ccan_list_del_init(n) ccan_list_del_init_(n, CCAN_LIST_LOC)
-#define ccan_list_swap(o,n) ccan_list_swap_(o, n, CCAN_LIST_LOC)
-#define ccan_list_entry(n,type,member) ccan_container_of(n, type, member)
-#define ccan_list_top(h,type,member) ((type *)ccan_list_top_((h), ccan_list_off_(type, member)))
-#define ccan_list_pop(h,type,member) ((type *)ccan_list_pop_((h), ccan_list_off_(type, member)))
-#define ccan_list_tail(h,type,member) ((type *)ccan_list_tail_((h), ccan_list_off_(type, member)))
-#define ccan_list_for_each(h,i,member) ccan_list_for_each_off(h, i, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_rev(h,i,member) ccan_list_for_each_rev_off(h, i, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_rev_safe(h,i,nxt,member) ccan_list_for_each_rev_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_safe(h,i,nxt,member) ccan_list_for_each_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
-#define ccan_list_next(h,i,member) ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, __FILE__ ":" ccan_stringify(__LINE__)), (i)->member.next, ccan_list_off_var_((i), member)))
-#define ccan_list_prev(h,i,member) ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, __FILE__ ":" ccan_stringify(__LINE__)), (i)->member.prev, ccan_list_off_var_((i), member)))
-#define ccan_list_append_list(t,f) ccan_list_append_list_(t, f, __FILE__ ":" ccan_stringify(__LINE__))
-#define ccan_list_prepend_list(t,f) ccan_list_prepend_list_(t, f, CCAN_LIST_LOC)
-#define ccan_list_for_each_off_dir_(h,i,off,dir) for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, (off)); ccan_list_node_from_off_((void *)i, (off)) != &(h)->n; i = ccan_list_node_to_off_(ccan_list_node_from_off_((void *)i, (off))->dir, (off)))
-#define ccan_list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, (off)), nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, (off)); ccan_list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, (off)))
-#define ccan_list_for_each_off(h,i,off) ccan_list_for_each_off_dir_((h),(i),(off),next)
-#define ccan_list_for_each_rev_off(h,i,off) ccan_list_for_each_off_dir_((h),(i),(off),prev)
-#define ccan_list_for_each_safe_off(h,i,nxt,off) ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
-#define ccan_list_for_each_rev_safe_off(h,i,nxt,off) ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
-#define ccan_list_entry_off(n,type,off) ((type *)ccan_list_node_from_off_((n), (off)))
-#define ccan_list_head_off(h,type,off) ((type *)ccan_list_head_off((h), (off)))
-#define ccan_list_tail_off(h,type,off) ((type *)ccan_list_tail_((h), (off)))
-#define ccan_list_add_off(h,n,off) ccan_list_add((h), ccan_list_node_from_off_((n), (off)))
-#define ccan_list_del_off(n,off) ccan_list_del(ccan_list_node_from_off_((n), (off)))
-#define ccan_list_del_from_off(h,n,off) ccan_list_del_from(h, ccan_list_node_from_off_((n), (off)))
-#define ccan_list_off_(type,member) (ccan_container_off(type, member) + ccan_check_type(((type *)0)->member, struct ccan_list_node))
-#define ccan_list_off_var_(var,member) (ccan_container_off_var(var, member) + ccan_check_type(var->member, struct ccan_list_node))
-#define ccan_list_typeof(var) typeof(var)
-#define RUBY_ID_H
-#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
-#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
-#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
-#define ID_LOCAL RUBY_ID_LOCAL
-#define ID_INSTANCE RUBY_ID_INSTANCE
-#define ID_GLOBAL RUBY_ID_GLOBAL
-#define ID_ATTRSET RUBY_ID_ATTRSET
-#define ID_CONST RUBY_ID_CONST
-#define ID_CLASS RUBY_ID_CLASS
-#define ID_JUNK RUBY_ID_JUNK
-#define ID_INTERNAL RUBY_ID_INTERNAL
-#define symIFUNC ID2SYM(idIFUNC)
-#define symCFUNC ID2SYM(idCFUNC)
-#define RUBY_TOKEN_DOT2 128
-#define RUBY_TOKEN_DOT3 129
-#define RUBY_TOKEN_BDOT2 130
-#define RUBY_TOKEN_BDOT3 131
-#define RUBY_TOKEN_UPLUS 132
-#define RUBY_TOKEN_UMINUS 133
-#define RUBY_TOKEN_POW 134
-#define RUBY_TOKEN_CMP 135
-#define RUBY_TOKEN_LSHFT 136
-#define RUBY_TOKEN_RSHFT 137
-#define RUBY_TOKEN_LEQ 138
-#define RUBY_TOKEN_GEQ 139
-#define RUBY_TOKEN_EQ 140
-#define RUBY_TOKEN_EQQ 141
-#define RUBY_TOKEN_NEQ 142
-#define RUBY_TOKEN_MATCH 143
-#define RUBY_TOKEN_NMATCH 144
-#define RUBY_TOKEN_AREF 145
-#define RUBY_TOKEN_ASET 146
-#define RUBY_TOKEN_COLON2 147
-#define RUBY_TOKEN_ANDOP 148
-#define RUBY_TOKEN_OROP 149
-#define RUBY_TOKEN_ANDDOT 150
-#define RUBY_TOKEN(t) RUBY_TOKEN_##t
-#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<mem)
-#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), (VALUE)(b), __FILE__, __LINE__)
-#define SIZE_POOL_COUNT 5
-#define RCLASS_EXT_EMBEDDED (SIZE_POOL_COUNT > 1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define SIZED_REALLOC_N(x,y,z,w) REALLOC_N(x, y, z)
-#define ruby_sized_xrealloc ruby_sized_xrealloc_inlined
-#define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined
-#define ruby_sized_xfree ruby_sized_xfree_inlined
-#define IMEMO_DEBUG 0
-#define IMEMO_MASK 0x0f
-#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
-#define IMEMO_FL_USER0 FL_USER4
-#define IMEMO_FL_USER1 FL_USER5
-#define IMEMO_FL_USER2 FL_USER6
-#define IMEMO_FL_USER3 FL_USER7
-#define IMEMO_FL_USER4 FL_USER8
-#define IMEMO_FL_USER5 FL_USER9
-#define THROW_DATA_CONSUMED IMEMO_FL_USER0
-#define THROW_DATA_P(err) imemo_throw_data_p((VALUE)err)
-#define MEMO_CAST(m) ((struct MEMO *)(m))
-#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
-#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
-#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_hidden_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
-#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_hidden_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define IMEMO_TYPE_P(v,t) imemo_type_p((VALUE)v, t)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define END_OF_ENUMERATION(key)
-#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
-#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
-#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
-#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags |= IMEMO_FL_USER3)
-#define METHOD_ENTRY_CACHED(me) ((me)->flags & IMEMO_FL_USER4)
-#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
-#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
-#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
-#define VM_METHOD_TYPE_MINIMUM_BITS 4
-#define rb_iseq_t rb_iseq_t
-#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
-#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_NODE_H 1
-#define RNODE(obj) ((struct RNode *)(obj))
-#define NODE_FL_NEWLINE (((VALUE)1)<<7)
-#define NODE_TYPESHIFT 8
-#define NODE_TYPEMASK (((VALUE)0x7f)<flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
-#define nd_set_type(n,t) rb_node_set_type(n, t)
-#define nd_init_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<flags)>>NODE_LSHIFT)
-#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<nd_loc.beg_pos.column))
-#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
-#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
-#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
-#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
-#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
-#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
-#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
-#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
-#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
-#define nd_last_loc(n) ((n)->nd_loc.end_pos)
-#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
-#define nd_node_id(n) ((n)->node_id)
-#define nd_set_node_id(n,id) ((n)->node_id = (id))
-#define nd_head u1.node
-#define nd_alen u2.argc
-#define nd_next u3.node
-#define nd_cond u1.node
-#define nd_body u2.node
-#define nd_else u3.node
-#define nd_resq u2.node
-#define nd_ensr u3.node
-#define nd_1st u1.node
-#define nd_2nd u2.node
-#define nd_stts u1.node
-#define nd_entry u3.id
-#define nd_vid u1.id
-#define nd_var u1.node
-#define nd_iter u3.node
-#define nd_value u2.node
-#define nd_aid u3.id
-#define nd_lit u1.value
-#define nd_recv u1.node
-#define nd_mid u2.id
-#define nd_args u3.node
-#define nd_ainfo u3.args
-#define nd_defn u3.node
-#define nd_cpath u1.node
-#define nd_super u3.node
-#define nd_beg u1.node
-#define nd_end u2.node
-#define nd_state u3.state
-#define nd_nth u2.argc
-#define nd_alias u1.id
-#define nd_orig u2.id
-#define nd_undef u2.node
-#define nd_brace u2.argc
-#define nd_pconst u1.node
-#define nd_pkwargs u2.node
-#define nd_pkwrestarg u3.node
-#define nd_apinfo u3.apinfo
-#define nd_fpinfo u3.fpinfo
-#define nd_tbl u1.tbl
-#define nd_pid u1.id
-#define nd_plen u2.argc
-#define nd_cflag u2.id
-#define nd_cval u3.value
-#define nd_rval u2.value
-#define nd_tag u1.id
-#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
-#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
-#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
-#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
-#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
-#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
-#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
-#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
-#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
-#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
-#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
-#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
-#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
-#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
-#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
-#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
-#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
-#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
-#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
-#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
-#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
-#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
-#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
-#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
-#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
-#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
-#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
-#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
-#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
-#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
-#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
-#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
-#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
-#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,v,loc)
-#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
-#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
-#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
-#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
-#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
-#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
-#define NEW_OP_ASGN2(r,t,i,o,val,loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)
-#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
-#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
-#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
-#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
-#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,v,loc)
-#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
-#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
-#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
-#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
-#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
-#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
-#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
-#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
-#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
-#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
-#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
-#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
-#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
-#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
-#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
-#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
-#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
-#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
-#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
-#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
-#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
-#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
-#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
-#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
-#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
-#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
-#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
-#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
-#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
-#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
-#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
-#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
-#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
-#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
-#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
-#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
-#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
-#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
-#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
-#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
-#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
-#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
-#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
-#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
-#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
-#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
-#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
-#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
-#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
-#define NEW_ERROR(loc) NEW_NODE(NODE_ERROR,0,0,0,loc)
-#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
-#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
-#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
-#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
-#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
-#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_ATOMIC_H
-#define RUBY_ATOMIC_GENERIC_MACRO 1
-#define RUBY_ATOMIC_FETCH_ADD(var,val) rbimpl_atomic_fetch_add(&(var), (val))
-#define RUBY_ATOMIC_FETCH_SUB(var,val) rbimpl_atomic_fetch_sub(&(var), (val))
-#define RUBY_ATOMIC_OR(var,val) rbimpl_atomic_or(&(var), (val))
-#define RUBY_ATOMIC_EXCHANGE(var,val) rbimpl_atomic_exchange(&(var), (val))
-#define RUBY_ATOMIC_CAS(var,oldval,newval) rbimpl_atomic_cas(&(var), (oldval), (newval))
-#define RUBY_ATOMIC_SET(var,val) rbimpl_atomic_set(&(var), (val))
-#define RUBY_ATOMIC_ADD(var,val) rbimpl_atomic_add(&(var), (val))
-#define RUBY_ATOMIC_SUB(var,val) rbimpl_atomic_sub(&(var), (val))
-#define RUBY_ATOMIC_INC(var) rbimpl_atomic_inc(&(var))
-#define RUBY_ATOMIC_DEC(var) rbimpl_atomic_dec(&(var))
-#define RUBY_ATOMIC_SIZE_INC(var) rbimpl_atomic_size_inc(&(var))
-#define RUBY_ATOMIC_SIZE_DEC(var) rbimpl_atomic_size_dec(&(var))
-#define RUBY_ATOMIC_SIZE_EXCHANGE(var,val) rbimpl_atomic_size_exchange(&(var), (val))
-#define RUBY_ATOMIC_SIZE_CAS(var,oldval,newval) rbimpl_atomic_size_cas(&(var), (oldval), (newval))
-#define RUBY_ATOMIC_SIZE_ADD(var,val) rbimpl_atomic_size_add(&(var), (val))
-#define RUBY_ATOMIC_SIZE_SUB(var,val) rbimpl_atomic_size_sub(&(var), (val))
-#define RUBY_ATOMIC_PTR_EXCHANGE(var,val) RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val))
-#define RUBY_ATOMIC_PTR_CAS(var,oldval,newval) RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval)))
-#define RUBY_ATOMIC_VALUE_EXCHANGE(var,val) rbimpl_atomic_value_exchange(&(var), (val))
-#define RUBY_ATOMIC_VALUE_CAS(var,oldval,newval) rbimpl_atomic_value_cas(&(var), (oldval), (newval))
-#define ATOMIC_ADD(var,val) RUBY_ATOMIC_ADD(var, val)
-#define ATOMIC_CAS(var,oldval,newval) RUBY_ATOMIC_CAS(var, oldval, newval)
-#define ATOMIC_DEC(var) RUBY_ATOMIC_DEC(var)
-#define ATOMIC_EXCHANGE(var,val) RUBY_ATOMIC_EXCHANGE(var, val)
-#define ATOMIC_FETCH_ADD(var,val) RUBY_ATOMIC_FETCH_ADD(var, val)
-#define ATOMIC_FETCH_SUB(var,val) RUBY_ATOMIC_FETCH_SUB(var, val)
-#define ATOMIC_INC(var) RUBY_ATOMIC_INC(var)
-#define ATOMIC_OR(var,val) RUBY_ATOMIC_OR(var, val)
-#define ATOMIC_PTR_CAS(var,oldval,newval) RUBY_ATOMIC_PTR_CAS(var, oldval, newval)
-#define ATOMIC_PTR_EXCHANGE(var,val) RUBY_ATOMIC_PTR_EXCHANGE(var, val)
-#define ATOMIC_SET(var,val) RUBY_ATOMIC_SET(var, val)
-#define ATOMIC_SIZE_ADD(var,val) RUBY_ATOMIC_SIZE_ADD(var, val)
-#define ATOMIC_SIZE_CAS(var,oldval,newval) RUBY_ATOMIC_SIZE_CAS(var, oldval, newval)
-#define ATOMIC_SIZE_DEC(var) RUBY_ATOMIC_SIZE_DEC(var)
-#define ATOMIC_SIZE_EXCHANGE(var,val) RUBY_ATOMIC_SIZE_EXCHANGE(var, val)
-#define ATOMIC_SIZE_INC(var) RUBY_ATOMIC_SIZE_INC(var)
-#define ATOMIC_SIZE_SUB(var,val) RUBY_ATOMIC_SIZE_SUB(var, val)
-#define ATOMIC_SUB(var,val) RUBY_ATOMIC_SUB(var, val)
-#define ATOMIC_VALUE_CAS(var,oldval,val) RUBY_ATOMIC_VALUE_CAS(var, oldval, val)
-#define ATOMIC_VALUE_EXCHANGE(var,val) RUBY_ATOMIC_VALUE_EXCHANGE(var, val)
-#define RUBY_VM_OPTS_H
-#define OPT_TAILCALL_OPTIMIZATION 0
-#define OPT_PEEPHOLE_OPTIMIZATION 1
-#define OPT_SPECIALISED_INSTRUCTION 1
-#define OPT_INLINE_CONST_CACHE 1
-#define OPT_FROZEN_STRING_LITERAL 0
-#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
-#define OPT_THREADED_CODE 0
-#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
-#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
-#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
-#define OPT_CHECKED_RUN 1
-#define OPT_INLINE_METHOD_CACHE 1
-#define OPT_GLOBAL_METHOD_CACHE 1
-#define OPT_BLOCKINLINING 0
-#define OPT_IC_FOR_IVAR 1
-#define OPT_OPERANDS_UNIFICATION 1
-#define OPT_INSTRUCTIONS_UNIFICATION 0
-#define OPT_UNIFY_ALL_COMBINATION 0
-#define OPT_STACK_CACHING 0
-#define OPT_SUPPORT_JOKE 0
-#define OPT_SUPPORT_CALL_C_FUNCTION 0
-#define VM_COLLECT_USAGE_DETAILS 0
-#define RUBY_SHAPE_H
-#define SIZEOF_SHAPE_T 4
-#define SHAPE_IN_BASIC_FLAGS 1
-#define MAX_IVARS (attr_index_t)(-1)
-#define SHAPE_ID_NUM_BITS 32
-#define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1)
-#define SHAPE_FLAG_MASK (((VALUE)-1) >> SHAPE_ID_NUM_BITS)
-#define SHAPE_FLAG_SHIFT ((SIZEOF_VALUE * 8) - SHAPE_ID_NUM_BITS)
-#define SHAPE_BITMAP_SIZE 16384
-#define SHAPE_MAX_VARIATIONS 8
-#define MAX_SHAPE_ID (SHAPE_MASK - 1)
-#define INVALID_SHAPE_ID SHAPE_MASK
-#define ROOT_SHAPE_ID 0x0
-#define SPECIAL_CONST_SHAPE_ID (SIZE_POOL_COUNT * 2)
-#define OBJ_TOO_COMPLEX_SHAPE_ID (SPECIAL_CONST_SHAPE_ID + 1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_THREAD_NATIVE_H 1
-#define _PTHREAD_H
-#define _SCHED_H_
-#define _PTHREAD_IMPL_H_
-#pragma clang assume_nonnull begin
-#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7
-#define _PTHREAD_ERRORCHECK_MUTEX_SIG_init 0x32AAABA1
-#define _PTHREAD_RECURSIVE_MUTEX_SIG_init 0x32AAABA2
-#define _PTHREAD_FIRSTFIT_MUTEX_SIG_init 0x32AAABA3
-#define _PTHREAD_COND_SIG_init 0x3CB0B1BB
-#define _PTHREAD_ONCE_SIG_init 0x30B1BCBA
-#define _PTHREAD_RWLOCK_SIG_init 0x2DA8B3B4
-#define SCHED_OTHER 1
-#define SCHED_FIFO 4
-#define SCHED_RR 2
-#define __SCHED_PARAM_SIZE__ 4
-#pragma clang assume_nonnull end
-#define _PTHREAD_QOS_H
-#define _SYS_QOS_H
-#define __QOS_ENUM(name,type,...) enum { __VA_ARGS__ }; typedef type name##_t
-#define __QOS_CLASS_AVAILABLE(...)
-#undef __QOS_CLASS_AVAILABLE
-#define __QOS_CLASS_AVAILABLE __API_AVAILABLE
-#undef __QOS_ENUM
-#define QOS_MIN_RELATIVE_PRIORITY (-15)
-#pragma clang assume_nonnull begin
-#pragma clang assume_nonnull end
-#define _MACH_PORT_T
-#pragma clang assume_nonnull begin
-#define pthread_cleanup_push(func,val) { struct __darwin_pthread_handler_rec __handler; pthread_t __self = pthread_self(); __handler.__routine = func; __handler.__arg = val; __handler.__next = __self->__cleanup_stack; __self->__cleanup_stack = &__handler;
-#define pthread_cleanup_pop(execute) __self->__cleanup_stack = __handler.__next; if (execute) (__handler.__routine)(__handler.__arg); }
-#define PTHREAD_CREATE_JOINABLE 1
-#define PTHREAD_CREATE_DETACHED 2
-#define PTHREAD_INHERIT_SCHED 1
-#define PTHREAD_EXPLICIT_SCHED 2
-#define PTHREAD_CANCEL_ENABLE 0x01
-#define PTHREAD_CANCEL_DISABLE 0x00
-#define PTHREAD_CANCEL_DEFERRED 0x02
-#define PTHREAD_CANCEL_ASYNCHRONOUS 0x00
-#define PTHREAD_CANCELED ((void *) 1)
-#define PTHREAD_SCOPE_SYSTEM 1
-#define PTHREAD_SCOPE_PROCESS 2
-#define PTHREAD_PROCESS_SHARED 1
-#define PTHREAD_PROCESS_PRIVATE 2
-#define PTHREAD_PRIO_NONE 0
-#define PTHREAD_PRIO_INHERIT 1
-#define PTHREAD_PRIO_PROTECT 2
-#define PTHREAD_MUTEX_NORMAL 0
-#define PTHREAD_MUTEX_ERRORCHECK 1
-#define PTHREAD_MUTEX_RECURSIVE 2
-#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
-#define PTHREAD_MUTEX_POLICY_FAIRSHARE_NP 1
-#define PTHREAD_MUTEX_POLICY_FIRSTFIT_NP 3
-#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWLOCK_SIG_init, {0}}
-#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
-#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {_PTHREAD_ERRORCHECK_MUTEX_SIG_init, {0}}
-#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {_PTHREAD_RECURSIVE_MUTEX_SIG_init, {0}}
-#define _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT defined(SWIFT_CLASS_EXTRA) && (!defined(SWIFT_SDK_OVERLAY_PTHREAD_EPOCH) || (SWIFT_SDK_OVERLAY_PTHREAD_EPOCH < 1))
-#define __PTHREAD_SWIFT_UNAVAILABLE_FROM_ASYNC(msg) __attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" msg "\")")))
-#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
-#define PTHREAD_ONCE_INIT {_PTHREAD_ONCE_SIG_init, {0}}
-#define PTHREAD_JIT_WRITE_ALLOW_CALLBACKS_NP(...) __attribute__((__used__, __section__("__DATA_CONST,__pth_jit_func"))) static const pthread_jit_write_callback_t __pthread_jit_write_callback_allowlist[] = { __VA_ARGS__, NULL }
-#pragma clang assume_nonnull end
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define VM_INSN_INFO_TABLE_IMPL 2
-#define RUBY_NSIG NSIG
-#define RUBY_SIGCHLD (SIGCHLD)
-#define SIGCHLD_LOSSY (1)
-#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
-#define USE_SIGALTSTACK
-#define RB_ALTSTACK_INIT(var,altstack) var = rb_register_sigaltstack(altstack)
-#define RB_ALTSTACK_FREE(var) free(var)
-#define RB_ALTSTACK(var) var
-#define RUBY_THREAD_PTHREAD_H
-#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
-#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
-#undef except
-#undef try
-#undef leave
-#undef finally
-#define RB_THREAD_LOCAL_SPECIFIER _Thread_local
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM_THREAD_MODEL 2
-#define TAG_NONE RUBY_TAG_NONE
-#define TAG_RETURN RUBY_TAG_RETURN
-#define TAG_BREAK RUBY_TAG_BREAK
-#define TAG_NEXT RUBY_TAG_NEXT
-#define TAG_RETRY RUBY_TAG_RETRY
-#define TAG_REDO RUBY_TAG_REDO
-#define TAG_RAISE RUBY_TAG_RAISE
-#define TAG_THROW RUBY_TAG_THROW
-#define TAG_FATAL RUBY_TAG_FATAL
-#define TAG_MASK RUBY_TAG_MASK
-#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
-#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
-#define PATHOBJ_PATH 0
-#define PATHOBJ_REALPATH 1
-#define ISEQ_IS_SIZE(body) (body->ic_size + body->ivc_size + body->ise_size + body->icvarc_size)
-#define ISEQ_IS_IC_ENTRY(body,idx) (body->is_entries[(idx) + body->ise_size + body->icvarc_size + body->ivc_size].ic_cache);
-#define ISEQ_BODY(iseq) ((iseq)->body)
-#define USE_LAZY_LOAD 0
-#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
-#define VM_GLOBAL_CC_CACHE_TABLE_SIZE 1023
-#define RUBY_VM_SIZE_ALIGN 4096
-#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
-#define VM_DEBUG_BP_CHECK 0
-#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
-#define rb_execution_context_t rb_execution_context_t
-#define VM_CORE_H_EC_DEFINED 1
-#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
-#define VM_DEFINECLASS_FLAG_SCOPED 0x08
-#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
-#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
-#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
-#define VM_CHECKMATCH_TYPE_MASK 0x03
-#define VM_CHECKMATCH_ARRAY 0x04
-#define FUNC_FASTCALL(x) x
-#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
-#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
-#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
-#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
-#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
-#define VM_ENV_DATA_SIZE ( 3)
-#define VM_ENV_DATA_INDEX_ME_CREF (-2)
-#define VM_ENV_DATA_INDEX_SPECVAL (-1)
-#define VM_ENV_DATA_INDEX_FLAGS ( 0)
-#define VM_ENV_DATA_INDEX_ENV ( 1)
-#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
-#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
-#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
-#define VM_BLOCK_HANDLER_NONE 0
-#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
-#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
-#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
-#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
-#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_vm_register_special_exception(sp,e,m) rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m)))
-#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
-#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) do { STATIC_ASSERT(sizeof_sp, sizeof(*(sp)) == sizeof(VALUE)); STATIC_ASSERT(sizeof_cfp, sizeof(*(cfp)) == sizeof(rb_control_frame_t)); const struct rb_control_frame_struct *bound = (void *)&(sp)[(margin)]; if (UNLIKELY((cfp) <= &bound[1])) { vm_stackoverflow(); } } while (0)
-#define CHECK_VM_STACK_OVERFLOW(cfp,margin) CHECK_VM_STACK_OVERFLOW0((cfp), (cfp)->sp, (margin))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GET_VM() rb_current_vm()
-#define GET_RACTOR() rb_current_ractor()
-#define GET_THREAD() rb_current_thread()
-#define GET_EC() rb_current_execution_context(true)
-#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
-#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
-#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
-#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
-#define RUBY_VM_SET_TERMINATE_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TERMINATE_INTERRUPT_MASK)
-#define RUBY_VM_SET_VM_BARRIER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, VM_BARRIER_INTERRUPT_MASK)
-#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
-#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
-#define EXEC_EVENT_HOOK_ORIG(ec_,hooks_,flag_,self_,id_,called_id_,klass_,data_,pop_p_) do { const rb_event_flag_t flag_arg_ = (flag_); rb_hook_list_t *hooks_arg_ = (hooks_); if (UNLIKELY((hooks_arg_)->events & (flag_arg_))) { rb_exec_event_hook_orig(ec_, hooks_arg_, flag_arg_, self_, id_, called_id_, klass_, data_, pop_p_); } } while (0)
-#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0)
-#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1)
-#pragma GCC visibility push(default)
-#define RUBY_EVENT_COVERAGE_LINE 0x010000
-#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
-#pragma GCC visibility pop
-#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
-#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
-#define ruby_setjmp(env) RUBY_SETJMP(env)
-#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
-#define _SYS_ERRNO_H_
-#define errno (*__error())
-#define EPERM 1
-#define ENOENT 2
-#define ESRCH 3
-#define EINTR 4
-#define EIO 5
-#define ENXIO 6
-#define E2BIG 7
-#define ENOEXEC 8
-#define EBADF 9
-#define ECHILD 10
-#define EDEADLK 11
-#define ENOMEM 12
-#define EACCES 13
-#define EFAULT 14
-#define ENOTBLK 15
-#define EBUSY 16
-#define EEXIST 17
-#define EXDEV 18
-#define ENODEV 19
-#define ENOTDIR 20
-#define EISDIR 21
-#define EINVAL 22
-#define ENFILE 23
-#define EMFILE 24
-#define ENOTTY 25
-#define ETXTBSY 26
-#define EFBIG 27
-#define ENOSPC 28
-#define ESPIPE 29
-#define EROFS 30
-#define EMLINK 31
-#define EPIPE 32
-#define EDOM 33
-#define ERANGE 34
-#define EAGAIN 35
-#define EWOULDBLOCK EAGAIN
-#define EINPROGRESS 36
-#define EALREADY 37
-#define ENOTSOCK 38
-#define EDESTADDRREQ 39
-#define EMSGSIZE 40
-#define EPROTOTYPE 41
-#define ENOPROTOOPT 42
-#define EPROTONOSUPPORT 43
-#define ESOCKTNOSUPPORT 44
-#define ENOTSUP 45
-#define EPFNOSUPPORT 46
-#define EAFNOSUPPORT 47
-#define EADDRINUSE 48
-#define EADDRNOTAVAIL 49
-#define ENETDOWN 50
-#define ENETUNREACH 51
-#define ENETRESET 52
-#define ECONNABORTED 53
-#define ECONNRESET 54
-#define ENOBUFS 55
-#define EISCONN 56
-#define ENOTCONN 57
-#define ESHUTDOWN 58
-#define ETOOMANYREFS 59
-#define ETIMEDOUT 60
-#define ECONNREFUSED 61
-#define ELOOP 62
-#define ENAMETOOLONG 63
-#define EHOSTDOWN 64
-#define EHOSTUNREACH 65
-#define ENOTEMPTY 66
-#define EPROCLIM 67
-#define EUSERS 68
-#define EDQUOT 69
-#define ESTALE 70
-#define EREMOTE 71
-#define EBADRPC 72
-#define ERPCMISMATCH 73
-#define EPROGUNAVAIL 74
-#define EPROGMISMATCH 75
-#define EPROCUNAVAIL 76
-#define ENOLCK 77
-#define ENOSYS 78
-#define EFTYPE 79
-#define EAUTH 80
-#define ENEEDAUTH 81
-#define EPWROFF 82
-#define EDEVERR 83
-#define EOVERFLOW 84
-#define EBADEXEC 85
-#define EBADARCH 86
-#define ESHLIBVERS 87
-#define EBADMACHO 88
-#define ECANCELED 89
-#define EIDRM 90
-#define ENOMSG 91
-#define EILSEQ 92
-#define ENOATTR 93
-#define EBADMSG 94
-#define EMULTIHOP 95
-#define ENODATA 96
-#define ENOLINK 97
-#define ENOSR 98
-#define ENOSTR 99
-#define EPROTO 100
-#define ETIME 101
-#define EOPNOTSUPP 102
-#define ENOPOLICY 103
-#define ENOTRECOVERABLE 104
-#define EOWNERDEAD 105
-#define EQFULL 106
-#define ELAST 106
-#define _SYS_PARAM_H_
-#define BSD 199506
-#define BSD4_3 1
-#define BSD4_4 1
-#define NeXTBSD 1995064
-#define NeXTBSD4_0 0
-#define MAXCOMLEN 16
-#define MAXINTERP 64
-#define MAXLOGNAME 255
-#define MAXUPRC CHILD_MAX
-#define NCARGS ARG_MAX
-#define NGROUPS NGROUPS_MAX
-#define NOFILE 256
-#define NOGROUP 65535
-#define MAXHOSTNAMELEN 256
-#define MAXDOMNAMELEN 256
-#define _BSD_MACHINE_PARAM_H_
-#define _ARM_PARAM_H_
-#define _ARM__PARAM_H_
-#define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1)
-#define __DARWIN_ALIGN(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
-#define __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
-#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
-#define ALIGNBYTES __DARWIN_ALIGNBYTES
-#define ALIGN(p) __DARWIN_ALIGN(p)
-#define NBPG 4096
-#define PGOFSET (NBPG-1)
-#define PGSHIFT 12
-#define DEV_BSIZE 512
-#define DEV_BSHIFT 9
-#define BLKDEV_IOSIZE 2048
-#define MAXPHYS (64 * 1024)
-#define CLSIZE 1
-#define CLSIZELOG2 0
-#define MSIZESHIFT 8
-#define MSIZE (1 << MSIZESHIFT)
-#define MCLSHIFT 11
-#define MCLBYTES (1 << MCLSHIFT)
-#define MBIGCLSHIFT 12
-#define MBIGCLBYTES (1 << MBIGCLSHIFT)
-#define M16KCLSHIFT 14
-#define M16KCLBYTES (1 << M16KCLSHIFT)
-#define MCLOFSET (MCLBYTES - 1)
-#define NMBCLUSTERS CONFIG_NMBCLUSTERS
-#define ctos(x) (x)
-#define stoc(x) (x)
-#define ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT))
-#define dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT))
-#define dtob(x) ((x)<>PGSHIFT)
-#define btodb(bytes,devBlockSize) ((unsigned)(bytes) / devBlockSize)
-#define dbtob(db,devBlockSize) ((unsigned)(db) * devBlockSize)
-#define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
-#define STATUS_WORD(rpl,ipl) (((ipl) << 8) | (rpl))
-#define USERMODE(x) (((x) & 3) == 3)
-#define BASEPRI(x) (((x) & (255 << 8)) == 0)
-#define DELAY(n) { int N = (n); while (--N > 0); }
-#define PSWP 0
-#define PVM 4
-#define PINOD 8
-#define PRIBIO 16
-#define PVFS 20
-#define PZERO 22
-#define PSOCK 24
-#define PWAIT 32
-#define PLOCK 36
-#define PPAUSE 40
-#define PUSER 50
-#define MAXPRI 127
-#define PRIMASK 0x0ff
-#define PCATCH 0x100
-#define PTTYBLOCK 0x200
-#define PDROP 0x400
-#define PSPIN 0x800
-#define NBPW sizeof(int)
-#define CMASK 022
-#define NODEV (dev_t)(-1)
-#define CLBYTES (CLSIZE*NBPG)
-#define CLOFSET (CLSIZE*NBPG-1)
-#define claligned(x) ((((int)(x))&CLOFSET)==0)
-#define CLOFF CLOFSET
-#define CLSHIFT (PGSHIFT+CLSIZELOG2)
-#define clbase(i) (i)
-#define clrnd(i) (i)
-#define CBLOCK 64
-#define CBQSIZE (CBLOCK/NBBY)
-#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE)
-#define CROUND (CBLOCK - 1)
-#define MAXBSIZE (256 * 4096)
-#define MAXPHYSIO MAXPHYS
-#define MAXFRAG 8
-#define MAXPHYSIO_WIRED (16 * 1024 * 1024)
-#define MAXPATHLEN PATH_MAX
-#define MAXSYMLINKS 32
-#define setbit(a,i) (((unsigned char *)(a))[(i)/NBBY] |= 1u<<((i)%NBBY))
-#define clrbit(a,i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1u<<((i)%NBBY)))
-#define isset(a,i) (((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY)))
-#define isclr(a,i) ((((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY))) == 0)
-#define roundup(x,y) ((((x) % (y)) == 0) ? (x) : ((x) + ((y) - ((x) % (y)))))
-#define powerof2(x) ((((x)-1)&(x))==0)
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#define FSHIFT 11
-#define FSCALE (1<tag; _tag.lock_rec = rb_ec_vm_lock_rec(_ec);
-#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
-#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
-#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
-#define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var))
-#define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var))
-#define VAR_NOCLOBBERED(var) volatile var
-#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
-#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
-#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
-#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
-#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
-#define CREF_FL_SINGLETON IMEMO_FL_USER3
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
-#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
-#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
-#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
-#define CharNext(p) rb_char_next(p)
-#define RUBY_GC_H 1
-#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p)))
-#define RB_GC_SAVE_MACHINE_CONTEXT(th) do { FLUSH_REGISTER_WINDOWS; setjmp((th)->ec->machine.regs); SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); } while (0)
-#define RUBY_MARK_FREE_DEBUG 0
-#define RUBY_MARK_ENTER(msg)
-#define RUBY_MARK_LEAVE(msg)
-#define RUBY_FREE_ENTER(msg)
-#define RUBY_FREE_LEAVE(msg)
-#define RUBY_GC_INFO if(0)printf
-#define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
-#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
-#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
-#define STACK_UPPER(x,a,b) (b)
-#define STACK_GROW_DIR_DETECTION
-#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
-#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_COMPILE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_CONT_H
-#define RUBY_ISEQ_H 1
-#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
-#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
-#define ISEQ_MBITS_SIZE sizeof(iseq_bits_t)
-#define ISEQ_MBITS_BITLENGTH (ISEQ_MBITS_SIZE * CHAR_BIT)
-#define ISEQ_MBITS_SET(buf,i) (buf[(i) / ISEQ_MBITS_BITLENGTH] |= ((iseq_bits_t)1 << ((i) % ISEQ_MBITS_BITLENGTH)))
-#define ISEQ_MBITS_SET_P(buf,i) ((buf[(i) / ISEQ_MBITS_BITLENGTH] >> ((i) % ISEQ_MBITS_BITLENGTH)) & 0x1)
-#define ISEQ_MBITS_BUFLEN(size) roomof(size, ISEQ_MBITS_BITLENGTH)
-#define USE_ISEQ_NODE_ID 1
-#define ISEQ_COVERAGE(iseq) ISEQ_BODY(iseq)->variable.coverage
-#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &ISEQ_BODY(iseq)->variable.coverage, cov)
-#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
-#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
-#define ISEQ_PC2BRANCHINDEX(iseq) ISEQ_BODY(iseq)->variable.pc2branchindex
-#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &ISEQ_BODY(iseq)->variable.pc2branchindex, h)
-#define ISEQ_FLIP_CNT(iseq) ISEQ_BODY(iseq)->variable.flip_count
-#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_C_CALL| RUBY_EVENT_C_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH)
-#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
-#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
-#define ISEQ_TRANSLATED IMEMO_FL_USER3
-#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW(((VALUE)iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
-#pragma GCC visibility push(default)
-#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
-#pragma GCC visibility pop
-#define INTERNAL_ERROR_H
-#define INTERNAL_STRING_H
-#define RUBY_ENCODING_H 1
-#define RUBY_INTERNAL_ENCODING_CODERANGE_H
-#pragma GCC visibility push(default)
-#define ENC_CODERANGE_MASK RUBY_ENC_CODERANGE_MASK
-#define ENC_CODERANGE_UNKNOWN RUBY_ENC_CODERANGE_UNKNOWN
-#define ENC_CODERANGE_7BIT RUBY_ENC_CODERANGE_7BIT
-#define ENC_CODERANGE_VALID RUBY_ENC_CODERANGE_VALID
-#define ENC_CODERANGE_BROKEN RUBY_ENC_CODERANGE_BROKEN
-#define ENC_CODERANGE_CLEAN_P(cr) RB_ENC_CODERANGE_CLEAN_P(cr)
-#define ENC_CODERANGE(obj) RB_ENC_CODERANGE(obj)
-#define ENC_CODERANGE_ASCIIONLY(obj) RB_ENC_CODERANGE_ASCIIONLY(obj)
-#define ENC_CODERANGE_SET(obj,cr) RB_ENC_CODERANGE_SET(obj,cr)
-#define ENC_CODERANGE_CLEAR(obj) RB_ENC_CODERANGE_CLEAR(obj)
-#define ENC_CODERANGE_AND(a,b) RB_ENC_CODERANGE_AND(a, b)
-#define ENCODING_CODERANGE_SET(obj,encindex,cr) RB_ENCODING_CODERANGE_SET(obj, encindex, cr)
-#define RB_ENC_CODERANGE RB_ENC_CODERANGE
-#define RB_ENC_CODERANGE_AND RB_ENC_CODERANGE_AND
-#define RB_ENC_CODERANGE_ASCIIONLY RB_ENC_CODERANGE_ASCIIONLY
-#define RB_ENC_CODERANGE_CLEAN_P RB_ENC_CODERANGE_CLEAN_P
-#define RB_ENC_CODERANGE_CLEAR RB_ENC_CODERANGE_CLEAR
-#define RB_ENC_CODERANGE_SET RB_ENC_CODERANGE_SET
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_CTYPE_H
-#define ONIGMO_H
-#define ONIGMO_VERSION_MAJOR 6
-#define ONIGMO_VERSION_MINOR 1
-#define ONIGMO_VERSION_TEENY 3
-#define ONIG_EXTERN RUBY_EXTERN
-#pragma GCC visibility push(default)
-#define UChar OnigUChar
-#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0)
-#define OnigCodePointMaskWidth 3
-#define OnigCodePointMask ((1<flags & ONIGENC_FLAG_UNICODE)
-#define ONIGENC_NAME(enc) ((enc)->name)
-#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc)
-#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) (enc)->is_allowed_reverse_match(s,end,enc)
-#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) (enc)->left_adjust_char_head(start, s, end, enc)
-#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc)
-#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc)
-#define ONIGENC_STEP_BACK(enc,start,s,end,n) onigenc_step_back((enc),(start),(s),(end),(n))
-#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n)
-#define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r))
-#define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r)
-#define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1)
-#define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1)
-#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n))
-#define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1)
-#define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r))
-#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc)
-#define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen(p,e,enc)
-#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len)
-#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc)
-#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len)
-#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc)
-#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc)
-#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc)
-#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc)
-#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) (enc)->property_name_to_ctype(enc,p,end)
-#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc)
-#define ONIGENC_IS_CODE_NEWLINE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE)
-#define ONIGENC_IS_CODE_GRAPH(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH)
-#define ONIGENC_IS_CODE_PRINT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT)
-#define ONIGENC_IS_CODE_ALNUM(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM)
-#define ONIGENC_IS_CODE_ALPHA(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA)
-#define ONIGENC_IS_CODE_LOWER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER)
-#define ONIGENC_IS_CODE_UPPER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER)
-#define ONIGENC_IS_CODE_CNTRL(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL)
-#define ONIGENC_IS_CODE_PUNCT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT)
-#define ONIGENC_IS_CODE_SPACE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE)
-#define ONIGENC_IS_CODE_BLANK(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK)
-#define ONIGENC_IS_CODE_DIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT)
-#define ONIGENC_IS_CODE_XDIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT)
-#define ONIGENC_IS_CODE_WORD(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD)
-#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) (enc)->get_ctype_code_range(ctype,sbout,ranges,enc)
-#define ONIG_NREGION 4
-#define ONIG_MAX_CAPTURE_GROUP_NUM 32767
-#define ONIG_MAX_BACKREF_NUM 1000
-#define ONIG_MAX_REPEAT_NUM 100000
-#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000
-#define ONIG_MAX_ERROR_MESSAGE_LEN 90
-#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE
-#define ONIG_OPTION_NONE 0U
-#define ONIG_OPTION_IGNORECASE 1U
-#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
-#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
-#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE
-#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1)
-#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1)
-#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1)
-#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1)
-#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
-#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
-#define ONIG_OPTION_NOTBOS (ONIG_OPTION_NOTEOL << 1)
-#define ONIG_OPTION_NOTEOS (ONIG_OPTION_NOTBOS << 1)
-#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_NOTEOS << 1)
-#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1)
-#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1)
-#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF
-#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
-#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
-#define ONIG_IS_OPTION_ON(options,option) ((options) & (option))
-#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
-#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
-#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended)
-#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs)
-#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
-#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
-#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
-#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58)
-#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG)
-#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
-#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
-#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython)
-#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
-#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0)
-#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1)
-#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2)
-#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3)
-#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4)
-#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5)
-#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6)
-#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7)
-#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8)
-#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9)
-#define ONIG_SYN_OP_VBAR_ALT (1U<<10)
-#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11)
-#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12)
-#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13)
-#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14)
-#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15)
-#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16)
-#define ONIG_SYN_OP_BRACKET_CC (1U<<17)
-#define ONIG_SYN_OP_ESC_W_WORD (1U<<18)
-#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19)
-#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20)
-#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21)
-#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22)
-#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23)
-#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24)
-#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25)
-#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26)
-#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27)
-#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28)
-#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29)
-#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30)
-#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31)
-#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0)
-#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1)
-#define ONIG_SYN_OP2_OPTION_PERL (1U<<2)
-#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3)
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4)
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5)
-#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6)
-#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7)
-#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8)
-#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9)
-#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10)
-#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11)
-#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12)
-#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13)
-#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14)
-#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15)
-#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16)
-#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17)
-#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19)
-#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20)
-#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21)
-#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22)
-#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23)
-#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24)
-#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25)
-#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26)
-#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27)
-#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28)
-#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29)
-#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30)
-#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31)
-#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31)
-#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0)
-#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1)
-#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2)
-#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3)
-#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4)
-#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5)
-#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6)
-#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7)
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8)
-#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9)
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10)
-#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11)
-#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20)
-#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21)
-#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22)
-#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23)
-#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24)
-#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25)
-#define ONIG_SYN_WARN_CC_DUP (1U<<26)
-#define ONIG_META_CHAR_ESCAPE 0
-#define ONIG_META_CHAR_ANYCHAR 1
-#define ONIG_META_CHAR_ANYTIME 2
-#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3
-#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4
-#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5
-#define ONIG_INEFFECTIVE_META_CHAR 0
-#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000)
-#define ONIG_NORMAL 0
-#define ONIG_MISMATCH -1
-#define ONIG_NO_SUPPORT_CONFIG -2
-#define ONIGERR_MEMORY -5
-#define ONIGERR_TYPE_BUG -6
-#define ONIGERR_PARSER_BUG -11
-#define ONIGERR_STACK_BUG -12
-#define ONIGERR_UNDEFINED_BYTECODE -13
-#define ONIGERR_UNEXPECTED_BYTECODE -14
-#define ONIGERR_MATCH_STACK_LIMIT_OVER -15
-#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
-#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
-#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
-#define ONIGERR_INVALID_ARGUMENT -30
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101
-#define ONIGERR_EMPTY_CHAR_CLASS -102
-#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103
-#define ONIGERR_END_PATTERN_AT_ESCAPE -104
-#define ONIGERR_END_PATTERN_AT_META -105
-#define ONIGERR_END_PATTERN_AT_CONTROL -106
-#define ONIGERR_META_CODE_SYNTAX -108
-#define ONIGERR_CONTROL_CODE_SYNTAX -109
-#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110
-#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111
-#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114
-#define ONIGERR_NESTED_REPEAT_OPERATOR -115
-#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116
-#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117
-#define ONIGERR_END_PATTERN_IN_GROUP -118
-#define ONIGERR_UNDEFINED_GROUP_OPTION -119
-#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121
-#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122
-#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123
-#define ONIGERR_INVALID_CONDITION_PATTERN -124
-#define ONIGERR_TOO_BIG_NUMBER -200
-#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201
-#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202
-#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203
-#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204
-#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205
-#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206
-#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207
-#define ONIGERR_INVALID_BACKREF -208
-#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209
-#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -210
-#define ONIGERR_TOO_SHORT_DIGITS -211
-#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212
-#define ONIGERR_EMPTY_GROUP_NAME -214
-#define ONIGERR_INVALID_GROUP_NAME -215
-#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216
-#define ONIGERR_UNDEFINED_NAME_REFERENCE -217
-#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218
-#define ONIGERR_MULTIPLEX_DEFINED_NAME -219
-#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220
-#define ONIGERR_NEVER_ENDING_RECURSION -221
-#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
-#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
-#define ONIGERR_INVALID_CODE_POINT_VALUE -400
-#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
-#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
-#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402
-#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403
-#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31
-#define ONIG_IS_CAPTURE_HISTORY_GROUP(r,i) ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])
-#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1
-#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2
-#define ONIG_TRAVERSE_CALLBACK_AT_BOTH ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST )
-#define ONIG_REGION_NOTPOS -1
-#define ONIG_NULL_WARN onig_null_warn
-#define ONIG_CHAR_TABLE_SIZE 256
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_ENCODING_H
-#define ONIGURUMA_H
-#define ONIGURUMA
-#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR
-#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR
-#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY
-#pragma GCC visibility push(default)
-#define ENCODING_INLINE_MAX RUBY_ENCODING_INLINE_MAX
-#define ENCODING_SHIFT RUBY_ENCODING_SHIFT
-#define ENCODING_MASK RUBY_ENCODING_MASK
-#define ENCODING_SET_INLINED(obj,i) RB_ENCODING_SET_INLINED(obj,i)
-#define ENCODING_SET(obj,i) RB_ENCODING_SET(obj,i)
-#define ENCODING_GET_INLINED(obj) RB_ENCODING_GET_INLINED(obj)
-#define ENCODING_GET(obj) RB_ENCODING_GET(obj)
-#define ENCODING_IS_ASCII8BIT(obj) RB_ENCODING_IS_ASCII8BIT(obj)
-#define ENCODING_MAXNAMELEN RUBY_ENCODING_MAXNAMELEN
-#define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret)
-#define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret)
-#define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret)
-#define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret)
-#define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret)
-#pragma GCC visibility pop
-#define RB_ENCODING_GET RB_ENCODING_GET
-#define RB_ENCODING_GET_INLINED RB_ENCODING_GET_INLINED
-#define RB_ENCODING_IS_ASCII8BIT RB_ENCODING_IS_ASCII8BIT
-#define RB_ENCODING_SET RB_ENCODING_SET
-#define RB_ENCODING_SET_INLINED RB_ENCODING_SET_INLINED
-#define rb_enc_asciicompat rb_enc_asciicompat
-#define rb_enc_code_to_mbclen rb_enc_code_to_mbclen
-#define rb_enc_codepoint rb_enc_codepoint
-#define rb_enc_left_char_head rb_enc_left_char_head
-#define rb_enc_mbc_to_codepoint rb_enc_mbc_to_codepoint
-#define rb_enc_mbcput rb_enc_mbcput
-#define rb_enc_mbmaxlen rb_enc_mbmaxlen
-#define rb_enc_mbminlen rb_enc_mbminlen
-#define rb_enc_name rb_enc_name
-#define rb_enc_prev_char rb_enc_prev_char
-#define rb_enc_right_char_head rb_enc_right_char_head
-#define rb_enc_step_back rb_enc_step_back
-#define rb_enc_str_asciicompat_p rb_enc_str_asciicompat_p
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_enc_is_newline rb_enc_is_newline
-#define rb_enc_isalnum rb_enc_isalnum
-#define rb_enc_isalpha rb_enc_isalpha
-#define rb_enc_isascii rb_enc_isascii
-#define rb_enc_isctype rb_enc_isctype
-#define rb_enc_isdigit rb_enc_isdigit
-#define rb_enc_islower rb_enc_islower
-#define rb_enc_isprint rb_enc_isprint
-#define rb_enc_iscntrl rb_enc_iscntrl
-#define rb_enc_ispunct rb_enc_ispunct
-#define rb_enc_isspace rb_enc_isspace
-#define rb_enc_isupper rb_enc_isupper
-#define RUBY_INTERNAL_ENCODING_PATHNAME_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_RE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_SPRINTF_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_STRING_H
-#pragma GCC visibility push(default)
-#define rb_enc_str_new(str,len,enc) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_enc_str_new_static: rb_enc_str_new) ((str), (len), (enc)))
-#define rb_enc_str_new_cstr(str,enc) ((RBIMPL_CONSTANT_P(str) ? rbimpl_enc_str_new_cstr : rb_enc_str_new_cstr) ((str), (enc)))
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_SYMBOL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_TRANSCODE_H
-#pragma GCC visibility push(default)
-#define ECONV_ERROR_HANDLER_MASK RUBY_ECONV_ERROR_HANDLER_MASK
-#define ECONV_INVALID_MASK RUBY_ECONV_INVALID_MASK
-#define ECONV_INVALID_REPLACE RUBY_ECONV_INVALID_REPLACE
-#define ECONV_UNDEF_MASK RUBY_ECONV_UNDEF_MASK
-#define ECONV_UNDEF_REPLACE RUBY_ECONV_UNDEF_REPLACE
-#define ECONV_UNDEF_HEX_CHARREF RUBY_ECONV_UNDEF_HEX_CHARREF
-#define ECONV_DECORATOR_MASK RUBY_ECONV_DECORATOR_MASK
-#define ECONV_NEWLINE_DECORATOR_MASK RUBY_ECONV_NEWLINE_DECORATOR_MASK
-#define ECONV_NEWLINE_DECORATOR_READ_MASK RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK
-#define ECONV_NEWLINE_DECORATOR_WRITE_MASK RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK
-#define ECONV_UNIVERSAL_NEWLINE_DECORATOR RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR
-#define ECONV_CRLF_NEWLINE_DECORATOR RUBY_ECONV_CRLF_NEWLINE_DECORATOR
-#define ECONV_CR_NEWLINE_DECORATOR RUBY_ECONV_CR_NEWLINE_DECORATOR
-#define ECONV_LF_NEWLINE_DECORATOR RUBY_ECONV_LF_NEWLINE_DECORATOR
-#define ECONV_XML_TEXT_DECORATOR RUBY_ECONV_XML_TEXT_DECORATOR
-#define ECONV_XML_ATTR_CONTENT_DECORATOR RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR
-#define ECONV_STATEFUL_DECORATOR_MASK RUBY_ECONV_STATEFUL_DECORATOR_MASK
-#define ECONV_XML_ATTR_QUOTE_DECORATOR RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR
-#define ECONV_DEFAULT_NEWLINE_DECORATOR RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR
-#define ECONV_PARTIAL_INPUT RUBY_ECONV_PARTIAL_INPUT
-#define ECONV_AFTER_OUTPUT RUBY_ECONV_AFTER_OUTPUT
-#pragma GCC visibility pop
-#define STR_NOEMBED FL_USER1
-#define STR_SHARED FL_USER2
-#undef rb_fstring_cstr
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
-#define rb_fstring_literal(str) rb_fstring_lit(str)
-#define rb_fstring_enc_lit(str,enc) rb_fstring_enc_new((str), rb_strlen_lit(str), (enc))
-#define rb_fstring_enc_literal(str,enc) rb_fstring_enc_lit(str, enc)
-#define rb_fstring_cstr(str) (__builtin_constant_p(str) ? rb_fstring_new((str), (long)strlen(str)) : (rb_fstring_cstr)(str))
-#undef Check_Type
-#define rb_raise_static(e,m) rb_raise_cstr_i((e), rb_str_new_static((m), rb_strlen_lit(m)))
-#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
-#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
-#define rb_syserr_new_path(err,path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
-#define rb_warn_deprecated_to_remove_at(removal,...) rb_warn_deprecated_to_remove(#removal, __VA_ARGS__)
-#define RUBY_VERSION_SINCE(major,minor) 0
-#define RUBY_VERSION_BEFORE(major,minor) 0
-#define RBIMPL_TODO0(x)
-#define RBIMPL_TODO(message) RBIMPL_TODO0("TODO: " message)
-#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_EVAL_H
-#define id_signo ruby_static_id_signo
-#define id_status ruby_static_id_status
-#define INTERNAL_INITS_H
-#define INTERNAL_OBJECT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_PARSE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_PROC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_RE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_SYMBOL_H
-#undef rb_sym_intern_ascii_cstr
-#define rb_sym_intern_ascii_cstr(ptr) (__builtin_constant_p(ptr) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr))
-#define INTERNAL_THREAD_H
-#define COVERAGE_INDEX_LINES 0
-#define COVERAGE_INDEX_BRANCHES 1
-#define COVERAGE_TARGET_LINES 1
-#define COVERAGE_TARGET_BRANCHES 2
-#define COVERAGE_TARGET_METHODS 4
-#define COVERAGE_TARGET_ONESHOT_LINES 8
-#define COVERAGE_TARGET_EVAL 16
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_SANITIZERS_H
-#define SANITIZER_ASAN_INTERFACE_H
-#define SANITIZER_COMMON_INTERFACE_DEFS_H
-#define ASAN_POISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
-#define ASAN_UNPOISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
-#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE_ADDRESS(NOINLINE(x))
-#define __asan_poison_memory_region(x,y)
-#define __asan_unpoison_memory_region(x,y)
-#define __asan_region_is_poisoned(x,y) 0
-#define __msan_allocated_memory(x,y) ((void)(x), (void)(y))
-#define __msan_poison(x,y) ((void)(x), (void)(y))
-#define __msan_unpoison(x,y) ((void)(x), (void)(y))
-#define __msan_unpoison_string(x) ((void)(x))
-#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
-#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
-#define INTERNAL_VARIABLE_H
-#define CONSTANT_H
-#define RUBY_ID_TABLE_H 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
-#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
-#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define ROBJECT_TRANSIENT_FLAG FL_USER2
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_MJIT_H 1
-#define RUBY_H 1
-#define HAVE_RUBY_ATOMIC_H 1
-#define HAVE_RUBY_DEBUG_H 1
-#define HAVE_RUBY_DEFINES_H 1
-#define HAVE_RUBY_ENCODING_H 1
-#define HAVE_RUBY_FIBER_SCHEDULER_H 1
-#define HAVE_RUBY_INTERN_H 1
-#define HAVE_RUBY_IO_H 1
-#define HAVE_RUBY_MEMORY_VIEW_H 1
-#define HAVE_RUBY_MISSING_H 1
-#define HAVE_RUBY_ONIGMO_H 1
-#define HAVE_RUBY_ONIGURUMA_H 1
-#define HAVE_RUBY_RACTOR_H 1
-#define HAVE_RUBY_RANDOM_H 1
-#define HAVE_RUBY_RE_H 1
-#define HAVE_RUBY_REGEX_H 1
-#define HAVE_RUBY_RUBY_H 1
-#define HAVE_RUBY_ST_H 1
-#define HAVE_RUBY_THREAD_H 1
-#define HAVE_RUBY_THREAD_NATIVE_H 1
-#define HAVE_RUBY_UTIL_H 1
-#define HAVE_RUBY_VERSION_H 1
-#define HAVE_RUBY_VM_H 1
-#define MJIT_FUNC_STATE_P(jit_func) ((uintptr_t)(jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define mjit_enabled true
-#define YJIT_H 1
-#define YJIT_STATS RUBY_DEBUG
-#define RUBY_VM_H 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM_CALLINFO_H
-#define USE_DEBUG_COUNTER 0
-#define RUBY_DEBUG_COUNTER_H 1
-#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_##name,
-#undef RB_DEBUG_COUNTER
-#define RB_DEBUG_COUNTER_INC(type) ((void)0)
-#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (!!(cond))
-#define RB_DEBUG_COUNTER_INC_IF(type,cond) (!!(cond))
-#define RB_DEBUG_COUNTER_ADD(type,num) ((void)0)
-#define RB_DEBUG_COUNTER_SETMAX(type,num) 0
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_CLASS_H
-#define RCLASS_EXT(c) ((rb_classext_t *)((char *)(c) + sizeof(struct RClass)))
-#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
-#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
-#define RCLASS_IVPTR(c) (RCLASS_EXT(c)->iv_ptr)
-#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
-#define RCLASS_CC_TBL(c) (RCLASS_EXT(c)->cc_tbl)
-#define RCLASS_CVC_TBL(c) (RCLASS_EXT(c)->cvc_tbl)
-#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
-#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
-#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
-#define RCLASS_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->subclass_entry)
-#define RCLASS_MODULE_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->module_subclass_entry)
-#define RCLASS_ALLOCATOR(c) (RCLASS_EXT(c)->allocator)
-#define RCLASS_SUBCLASSES(c) (RCLASS_EXT(c)->subclasses)
-#define RCLASS_SUPERCLASS_DEPTH(c) (RCLASS_EXT(c)->superclass_depth)
-#define RCLASS_SUPERCLASSES(c) (RCLASS_EXT(c)->superclasses)
-#define RICLASS_IS_ORIGIN FL_USER0
-#define RCLASS_CLONED FL_USER1
-#define RCLASS_SUPERCLASSES_INCLUDE_SELF FL_USER2
-#define RICLASS_ORIGIN_SHARED_MTBL FL_USER3
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
-#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
-#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
-#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
-#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
-#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
-#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
-#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
-#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
-#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
-#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
-#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
-#define VM_CALL_KW_SPLAT_MUT (0x01 << VM_CALL_KW_SPLAT_MUT_bit)
-#define USE_EMBED_CI 1
-#define CI_EMBED_TAG_bits 1
-#define CI_EMBED_ARGC_bits 15
-#define CI_EMBED_FLAG_bits 16
-#define CI_EMBED_ID_bits 32
-#define CI_EMBED_FLAG 0x01
-#define CI_EMBED_ARGC_SHFT (CI_EMBED_TAG_bits)
-#define CI_EMBED_ARGC_MASK ((((VALUE)1)<iseq)->iseq_encoded), (reg_cfp->pc - ISEQ_BODY(reg_cfp->iseq)->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), rb_iseq_line_no(reg_cfp->iseq, reg_pc - ISEQ_BODY(reg_cfp->iseq)->iseq_encoded)); } if (USE_INSNS_COUNTER) vm_insns_counter_count_insn(BIN(insn));
-#define INSN_DISPATCH_SIG(insn)
-#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
-#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
-#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
-#define INSN_DISPATCH() TC_DISPATCH(__START__) {
-#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
-#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
-#define START_OF_ORIGINAL_INSN(x) if (0) goto start_of_##x; start_of_##x:
-#define DISPATCH_ORIGINAL_INSN(x) goto start_of_##x;
-#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
-#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
-#define SCREG(r) (reg_##r)
-#define VM_DEBUG_STACKOVERFLOW 0
-#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
-#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
-#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
-#define RUBY_INSNHELPER_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define COLLECT_USAGE_INSN(insn)
-#define COLLECT_USAGE_OPERAND(insn,n,op)
-#define COLLECT_USAGE_REGISTER(reg,s)
-#define PUSH(x) (SET_SV(x), INC_SP(1))
-#define TOPN(n) (*(GET_SP()-(n)-1))
-#define POPN(n) (DEC_SP(n))
-#define POP() (DEC_SP(1))
-#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
-#define VM_REG_CFP (reg_cfp)
-#define VM_REG_PC (VM_REG_CFP->pc)
-#define VM_REG_SP (VM_REG_CFP->sp)
-#define VM_REG_EP (VM_REG_CFP->ep)
-#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
-#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
-#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
-#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
-#define GET_CURRENT_INSN() (*GET_PC())
-#define GET_OPERAND(n) (GET_PC()[(n)])
-#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
-#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
-#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
-#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
-#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
-#define GET_LEP() (VM_EP_LEP(GET_EP()))
-#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
-#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define SET_SV(x) (*GET_SP() = rb_ractor_confirm_belonging(x))
-#define GET_ISEQ() (GET_CFP()->iseq)
-#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
-#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
-#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
-#define SETUP_CANARY(cond) if (cond) {} else {}
-#define CHECK_CANARY(cond,insn) if (cond) {(void)(insn);}
-#define GET_GLOBAL_CVAR_STATE() (ruby_vm_global_cvar_state)
-#define INC_GLOBAL_CVAR_STATE() (++ruby_vm_global_cvar_state)
-#define IS_ARGS_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT)
-#define IS_ARGS_KEYWORD(ci) (vm_ci_flag(ci) & VM_CALL_KWARG)
-#define IS_ARGS_KW_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT)
-#define IS_ARGS_KW_OR_KW_SPLAT(ci) (vm_ci_flag(ci) & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
-#define IS_ARGS_KW_SPLAT_MUT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT_MUT)
-#define RUBY_RACTOR_H 1
-#pragma GCC visibility push(default)
-#define RB_RACTOR_LOCAL_STORAGE_TYPE_FREE (&rb_ractor_local_storage_type_free)
-#pragma GCC visibility pop
-#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)
-#define RACTOR_CHECK_MODE (VM_CHECK_MODE || RUBY_DEBUG) && (SIZEOF_UINT64_T == SIZEOF_VALUE)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_ractor_set_current_ec(cr,ec) rb_ractor_set_current_ec_(cr, ec, __FILE__, __LINE__)
-#define rb_ractor_confirm_belonging(obj) obj
-#define RUBY_VM_SYNC_H
-#define LOCATION_ARGS void
-#define LOCATION_PARAMS
-#define APPEND_LOCATION_ARGS
-#define APPEND_LOCATION_PARAMS
-#define RB_VM_LOCKED_P() rb_vm_locked_p()
-#define RB_VM_LOCK() rb_vm_lock(__FILE__, __LINE__)
-#define RB_VM_UNLOCK() rb_vm_unlock(__FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_CR_LEV(cr,levp) rb_vm_lock_enter_cr(cr, levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_LEAVE_CR_LEV(cr,levp) rb_vm_lock_leave_cr(cr, levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_LEV(levp) rb_vm_lock_enter(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_LEAVE_LEV(levp) rb_vm_lock_leave(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV(&_lev);
-#define RB_VM_LOCK_LEAVE() RB_VM_LOCK_LEAVE_LEV(&_lev); }
-#define RB_VM_LOCK_ENTER_LEV_NB(levp) rb_vm_lock_enter_nb(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_NO_BARRIER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV_NB(&_lev);
-#define RB_VM_LOCK_LEAVE_NO_BARRIER() RB_VM_LOCK_LEAVE_LEV(&_lev); }
-#define ASSERT_vm_locking()
-#define ASSERT_vm_unlocking()
-#define BUILTIN_H_INCLUDED
-#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity,_compiler) { .name = _i < 0 ? NULL : #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i, .compiler = _compiler, }
-#define _PROBES_H
-#define DTRACE_PROBES_DISABLED 1
-#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
-#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
-#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_RAISE_ENABLED() 0
-#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
-#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
-#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
-#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
-#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
-#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
-#define RUBY_DTRACE_PARSE_END_ENABLED() 0
-#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
-#define RUBY_DTRACE_INSN_ENABLED() 0
-#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
-#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
-#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
-#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
-#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
-#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
-#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
-#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
-#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
-#define RUBY_PROBES_HELPER_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_DTRACE_METHOD_HOOK(name,ec,klazz,id) do { if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, klazz, id, &args)) { RUBY_DTRACE_##name(args.classname, args.methodname, args.filename, args.line_no); } } } while (0)
-#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
-#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
-#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
-#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define INTERNAL_COMPAR_H
-#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
-#define CMP_OPTIMIZABLE(type) BASIC_OP_UNREDEFINED_P(BOP_CMP, type##_REDEFINED_OP_FLAG)
-#define OPTIMIZED_CMP(a,b) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(INTEGER)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(STRING)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(FLOAT)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b))
-#define INTERNAL_HASH_H
-#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
-#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
-#define RHASH(obj) ((struct RHash *)(obj))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__)
-#pragma GCC visibility pop
-#define INTERNAL_NUMERIC_H
-#define INTERNAL_BIGNUM_H
-#define BDIGIT unsigned int
-#define SIZEOF_BDIGIT SIZEOF_INT
-#define BDIGIT_DBL unsigned LONG_LONG
-#define BDIGIT_DBL_SIGNED LONG_LONG
-#define PRI_BDIGIT_PREFIX ""
-#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
-#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
-#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
-#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
-#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
-#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
-#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
-#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
-#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
-#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
-#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
-#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
-#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
-#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
-#define RBIGNUM(obj) ((struct RBignum *)(obj))
-#define BIGNUM_SIGN_BIT FL_USER1
-#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
-#define BIGNUM_EMBED_LEN_NUMBITS 3
-#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
-#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
-#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RBIMPL_RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_BITS_H
-#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
-#define SIGNED_INTEGER_TYPE_P(T) (0 > ((T)0)-1)
-#define SIGNED_INTEGER_MIN(T) ((sizeof(T) == sizeof(int8_t)) ? ((T)INT8_MIN) : ((sizeof(T) == sizeof(int16_t)) ? ((T)INT16_MIN) : ((sizeof(T) == sizeof(int32_t)) ? ((T)INT32_MIN) : ((sizeof(T) == sizeof(int64_t)) ? ((T)INT64_MIN) : 0))))
-#define SIGNED_INTEGER_MAX(T) ((T)(SIGNED_INTEGER_MIN(T) ^ ((T)~(T)0)))
-#define UNSIGNED_INTEGER_MAX(T) ((T)~(T)0)
-#define MUL_OVERFLOW_P(a,b) __extension__ ({ __typeof__(a) c; __builtin_mul_overflow((a), (b), &c); })
-#define MUL_OVERFLOW_SIGNED_INTEGER_P(a,b,min,max) ( (a) == 0 ? 0 : (a) == -1 ? (b) < -(max) : (a) > 0 ? ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
-#define MUL_OVERFLOW_FIXNUM_P(a,b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX)
-#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
-#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
-#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
-#define bit_length(x) (unsigned int) (sizeof(x) <= sizeof(int32_t) ? 32 - nlz_int32((uint32_t)(x)) : sizeof(x) <= sizeof(int64_t) ? 64 - nlz_int64((uint64_t)(x)) : 128 - nlz_int128((uint128_t)(x)))
-#define swap16 ruby_swap16
-#define swap32 ruby_swap32
-#define swap64 ruby_swap64
-#define INTERNAL_FIXNUM_H
-#define DLONG int128_t
-#define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
-#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
-#define ROUND_FUNC(mode,name) ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down)
-#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name##_half_even args, name##_half_up args, name##_half_down args)
-#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
-#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
-#define roomof(x,y) (((x) + (y) - 1) / (y))
-#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
-#define RFLOAT(obj) ((struct RFloat *)(obj))
-#define rb_float_value rb_float_value_inline
-#define rb_float_new rb_float_new_inline
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_RANDOM_H
-#define INTERNAL_STRUCT_H
-#define RSTRUCT(obj) ((struct RStruct *)(obj))
-#define RSTRUCT_LEN internal_RSTRUCT_LEN
-#define RSTRUCT_SET internal_RSTRUCT_SET
-#define RSTRUCT_GET internal_RSTRUCT_GET
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define RUBY_TOPLEVEL_VARIABLE_H
-#define BIN(n) YARVINSN_##n
-#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE)
-#define vm_check_canary(ec,sp)
-#define vm_check_frame(a,b,c,d)
-#define vm_push_frame_debug_counter_inc(ec,cfp,t)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define ractor_incidental_shareable_p(cond,val) (!(cond) || rb_ractor_shareable_p(val))
-#define ractor_object_incidental_shareable_p(obj,val) ractor_incidental_shareable_p(rb_ractor_shareable_p(obj), val)
-#define ATTR_INDEX_NOT_SET (attr_index_t)-1
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t##_REDEFINED_OP_FLAG)
-#undef EQ_UNREDEFINED_P
-#define CHECK_CMP_NAN(a,b)
-#define KW_SPECIFIED_BITS_MAX (32-1)
-#define USE_OPT_HIST 0
-#define CHECK_CFP_CONSISTENCY(func) (LIKELY(vm_cfp_consistent_p(ec, reg_cfp)) ? (void)0 : rb_bug(func ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)))
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_CALL_METHOD_ATTR(var,func,nohook) if (UNLIKELY(ruby_vm_event_flags & (RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN))) { EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, Qundef); var = func; EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (var)); } else { nohook; var = func; }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define mexp_search_method vm_search_method_wrap
-#define mexp_search_super vm_search_super_method
-#define mexp_search_invokeblock vm_search_invokeblock
-#define id_cmp idCmp
-#undef id_cmp
-#define IMEMO_CONST_CACHE_SHAREABLE IMEMO_FL_USER0
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_TRACE_HOOK(target_event,val) do { if ((pc_events & (target_event)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (target_event), global_hooks, local_hooks_ptr, (val)); } } while (0)
-#undef VM_TRACE_HOOK
-#define id_mesg idMesg
diff --git a/ThirdParty/include/ruby/mac/arm64-darwin/ruby/config.h b/ThirdParty/include/ruby/mac/arm64-darwin/ruby/config.h
index e271bafcd..edff39933 100644
--- a/ThirdParty/include/ruby/mac/arm64-darwin/ruby/config.h
+++ b/ThirdParty/include/ruby/mac/arm64-darwin/ruby/config.h
@@ -72,6 +72,9 @@
#define HAVE_TIME_H 1
#define HAVE_UCONTEXT_H 1
#define HAVE_UTIME_H 1
+#define HAVE_SYS_EVENT_H 1
+#define HAVE_STDCKDINT_H 1
+#define HAVE_STDATOMIC_H 1
#define HAVE_TYPEOF 1
#define restrict __restrict__
#define HAVE_LONG_LONG 1
@@ -88,7 +91,8 @@
#define SIZEOF_DOUBLE 8
#define SIZEOF_TIME_T 8
#define SIZEOF_CLOCK_T 8
-#define PACKED_STRUCT(x) x __attribute__((packed))
+#define RBIMPL_ATTR_PACKED_STRUCT_BEGIN()
+#define RBIMPL_ATTR_PACKED_STRUCT_END() __attribute__((packed))
#define USE_UNALIGNED_MEMBER_ACCESS 1
#define PRI_LL_PREFIX "ll"
#define HAVE_PID_T 1
@@ -259,6 +263,7 @@
#define HAVE_ARC4RANDOM_BUF 1
#define HAVE_ATAN2L 1
#define HAVE_ATAN2F 1
+#define HAVE_DECL_ATOMIC_SIGNAL_FENCE 1
#define HAVE_CHMOD 1
#define HAVE_CHOWN 1
#define HAVE_CHROOT 1
@@ -273,6 +278,7 @@
#define HAVE_EXECV 1
#define HAVE_EXECVE 1
#define HAVE_FCOPYFILE 1
+#define HAVE_FCHDIR 1
#define HAVE_FCHMOD 1
#define HAVE_FCHOWN 1
#define HAVE_FCNTL 1
@@ -306,7 +312,6 @@
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GETUID 1
#define HAVE_GMTIME_R 1
-#define HAVE_GRANTPT 1
#define HAVE_INITGROUPS 1
#define HAVE_IOCTL 1
#define HAVE_ISSETUGID 1
@@ -363,6 +368,7 @@
#define HAVE_SIGALTSTACK 1
#define HAVE_SIGPROCMASK 1
#define HAVE_SINH 1
+#define HAVE_SNPRINTF 1
#define HAVE_SYMLINK 1
#define HAVE_SYSCONF 1
#define HAVE_SYSTEM 1
@@ -380,9 +386,6 @@
#define HAVE_WAITPID 1
#define HAVE___COSPI 1
#define HAVE___SINPI 1
-#if !defined __STDC_WANT_LIB_EXT1__
-#define __STDC_WANT_LIB_EXT1__ 1
-#endif /* !defined __STDC_WANT_LIB_EXT1__ */
#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
@@ -395,15 +398,18 @@
#define HAVE_BUILTIN___BUILTIN_CLZLL 1
#define HAVE_BUILTIN___BUILTIN_CTZ 1
#define HAVE_BUILTIN___BUILTIN_CTZLL 1
-#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
#define HAVE_BUILTIN___BUILTIN_TRAP 1
#define HAVE_BUILTIN___BUILTIN_EXPECT 1
+#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
+#define USE___BUILTIN_ADD_OVERFLOW_LONG_LONG 1
+#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
+#define USE___BUILTIN_SUB_OVERFLOW_LONG_LONG 1
+#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
+#define USE___BUILTIN_MUL_OVERFLOW_LONG_LONG 1
#define HAVE_BSD_QSORT_R 1
#define ATAN2_INF_C99 1
#define HAVE_CLOCK_GETRES 1
@@ -427,6 +433,7 @@
#define HAVE_PTHREAD_SETNAME_NP 1
#define HAVE_PTHREAD_SIGMASK 1
#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(name)
+#define RB_THREAD_LOCAL_SPECIFIER _Thread_local
#define DEFINE_MCONTEXT_PTR(mc, uc) mcontext_t mc = (uc)->uc_mcontext
#define HAVE_SYS_USER_H 1
#define HAVE_CONST_PAGE_SIZE 0
@@ -445,14 +452,16 @@
#define BROKEN_BACKTRACE 1
#define DLEXT_MAXLEN 7
#define DLEXT ".bundle"
+#define SOEXT ".dylib"
#define LIBDIR_BASENAME "lib"
#define HAVE__SETJMP 1
-#define HAVE_SIGSETJMP 1
-#define RUBY_SETJMP(env) sigsetjmp((env),0)
-#define RUBY_LONGJMP(env,val) siglongjmp((env),val)
-#define RUBY_JMP_BUF sigjmp_buf
-#define USE_MJIT 1
+#define RUBY_SETJMP(env) _setjmp((env))
+#define RUBY_LONGJMP(env,val) _longjmp((env),val)
+#define RUBY_JMP_BUF jmp_buf
+#define USE_MODULAR_GC 0
#define USE_YJIT 0
+#define USE_RJIT 1
#define LOAD_RELATIVE 1
-#define RUBY_PLATFORM "arm64-darwin21"
+#define RUBY_PLATFORM "arm64-darwin"
+#define RB_DEFAULT_PARSER RB_DEFAULT_PARSER_PRISM
#endif /* INCLUDE_RUBY_CONFIG_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/assert.h b/ThirdParty/include/ruby/mac/ruby/assert.h
index 0c052363b..acc5e5bbf 100644
--- a/ThirdParty/include/ruby/mac/ruby/assert.h
+++ b/ThirdParty/include/ruby/mac/ruby/assert.h
@@ -22,6 +22,7 @@
*/
#include "ruby/internal/assume.h"
#include "ruby/internal/attr/cold.h"
+#include "ruby/internal/attr/format.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/cast.h"
#include "ruby/internal/dllexport.h"
@@ -132,6 +133,11 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
RBIMPL_ATTR_NORETURN()
RBIMPL_ATTR_COLD()
void rb_assert_failure(const char *file, int line, const char *name, const char *expr);
+
+RBIMPL_ATTR_NORETURN()
+RBIMPL_ATTR_COLD()
+RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 5, 6)
+void rb_assert_failure_detail(const char *file, int line, const char *name, const char *expr, const char *fmt, ...);
RBIMPL_SYMBOL_EXPORT_END()
#ifdef RUBY_FUNCTION_NAME_STRING
@@ -147,8 +153,28 @@ RBIMPL_SYMBOL_EXPORT_END()
*
* @param mesg The message to display.
*/
-#define RUBY_ASSERT_FAIL(mesg) \
+#if defined(HAVE___VA_OPT__)
+# if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments")
+/* __VA_OPT__ is to be used for the zero variadic macro arguments
+ * cases. */
+RBIMPL_WARNING_IGNORED(-Wgnu-zero-variadic-macro-arguments)
+# endif
+# define RBIMPL_VA_OPT_ARGS(...) __VA_OPT__(,) __VA_ARGS__
+
+# define RUBY_ASSERT_FAIL(mesg, ...) \
+ rb_assert_failure##__VA_OPT__(_detail)( \
+ __FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#elif !defined(__cplusplus)
+# define RBIMPL_VA_OPT_ARGS(...)
+
+# define RUBY_ASSERT_FAIL(mesg, ...) \
rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
+#else
+# undef RBIMPL_VA_OPT_ARGS
+
+# define RUBY_ASSERT_FAIL(mesg) \
+ rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
+#endif
/**
* Asserts that the expression is truthy. If not aborts with the message.
@@ -156,15 +182,25 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param expr What supposedly evaluates to true.
* @param mesg The message to display on failure.
*/
-#define RUBY_ASSERT_MESG(expr, mesg) \
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG(expr, ...) \
+ (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_MESG(expr, mesg) \
(RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg))
+#endif
/**
* A variant of #RUBY_ASSERT that does not interface with #RUBY_DEBUG.
*
* @copydetails #RUBY_ASSERT
*/
-#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_ALWAYS(expr, ...) \
+ RUBY_ASSERT_MESG(expr, #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
+#endif
/**
* Asserts that the given expression is truthy if and only if #RUBY_DEBUG is truthy.
@@ -172,9 +208,18 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param expr What supposedly evaluates to true.
*/
#if RUBY_DEBUG
-# define RUBY_ASSERT(expr) RUBY_ASSERT_MESG((expr), #expr)
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT(expr, ...) \
+ RUBY_ASSERT_MESG((expr), #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+# else
+# define RUBY_ASSERT(expr) RUBY_ASSERT_MESG((expr), #expr)
+# endif
#else
-# define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT(/* expr, */...) RBIMPL_ASSERT_NOTHING
+# else
+# define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
+# endif
#endif
/**
@@ -187,9 +232,18 @@ RBIMPL_SYMBOL_EXPORT_END()
/* Currently `RUBY_DEBUG == ! defined(NDEBUG)` is always true. There is no
* difference any longer between this one and `RUBY_ASSERT`. */
#if defined(NDEBUG)
-# define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_NDEBUG(/* expr, */...) RBIMPL_ASSERT_NOTHING
+# else
+# define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
+# endif
#else
-# define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG((expr), #expr)
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_NDEBUG(expr, ...) \
+ RUBY_ASSERT_MESG((expr), #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+# else
+# define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG((expr), #expr)
+# endif
#endif
/**
@@ -197,10 +251,20 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param mesg The message to display on failure.
*/
#if RUBY_DEBUG
-# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) RUBY_ASSERT_MESG((expr), (mesg))
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG_WHEN(cond, /* expr, */...) \
+ RUBY_ASSERT_MESG(__VA_ARGS__)
+# else
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) RUBY_ASSERT_MESG((expr), (mesg))
+# endif
#else
-# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, ...) \
+ ((cond) ? RUBY_ASSERT_MESG((expr), __VA_ARGS__) : RBIMPL_ASSERT_NOTHING)
+# else
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING)
+# endif
#endif
/**
@@ -210,7 +274,23 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param cond Extra condition that shall hold for assertion to take effect.
* @param expr What supposedly evaluates to true.
*/
-#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_WHEN(cond, expr, ...) \
+ RUBY_ASSERT_MESG_WHEN(cond, expr, #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
+#endif
+
+/**
+ * A variant of #RUBY_ASSERT that asserts when either #RUBY_DEBUG or built-in
+ * type of `obj` is `type`.
+ *
+ * @param obj Object to check its built-in typue.
+ * @param type Built-in type constant, T_ARRAY, T_STRING, etc.
+ */
+#define RUBY_ASSERT_BUILTIN_TYPE(obj, type) \
+ RUBY_ASSERT(RB_TYPE_P(obj, type), \
+ "Actual type is %s", rb_builtin_type_name(BUILTIN_TYPE(obj)))
/**
* This is either #RUBY_ASSERT or #RBIMPL_ASSUME, depending on #RUBY_DEBUG.
@@ -218,17 +298,19 @@ RBIMPL_SYMBOL_EXPORT_END()
* @copydetails #RUBY_ASSERT
*/
#if RUBY_DEBUG
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RUBY_ASSERT_ALWAYS(expr)
+# define RBIMPL_ASSERT_OR_ASSUME RUBY_ASSERT_ALWAYS
+#elif ! defined(RBIMPL_VA_OPT_ARGS)
+# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr)
#elif RBIMPL_COMPILER_BEFORE(Clang, 7, 0, 0)
# /* See commit 67d259c5dccd31fe49d417fec169977712ffdf10 */
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#elif defined(RUBY_ASSERT_NOASSUME)
# /* See commit d300a734414ef6de7e8eb563b7cc4389c455ed08 */
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#elif ! defined(RBIMPL_HAVE___ASSUME)
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#else
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr)
+# define RBIMPL_ASSERT_OR_ASSUME(expr, ...) RBIMPL_ASSUME(expr)
#endif
#endif /* RUBY_ASSERT_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/atomic.h b/ThirdParty/include/ruby/mac/ruby/atomic.h
index 3eb80fbf7..18072f481 100644
--- a/ThirdParty/include/ruby/mac/ruby/atomic.h
+++ b/ThirdParty/include/ruby/mac/ruby/atomic.h
@@ -72,6 +72,8 @@ typedef unsigned int rb_atomic_t;
#elif defined(HAVE_GCC_SYNC_BUILTINS)
typedef unsigned int rb_atomic_t;
#elif defined(_WIN32)
+# include // to prevent macro redefinitions
+# include // for `LONG` and `Interlocked` functions
typedef LONG rb_atomic_t;
#elif defined(__sun) && defined(HAVE_ATOMIC_H)
typedef unsigned int rb_atomic_t;
@@ -138,6 +140,15 @@ typedef unsigned int rb_atomic_t;
#define RUBY_ATOMIC_CAS(var, oldval, newval) \
rbimpl_atomic_cas(&(var), (oldval), (newval))
+/**
+ * Atomic load. This loads `var` with an atomic intrinsic and returns
+ * its value.
+ *
+ * @param var A variable of ::rb_atomic_t
+ * @return What was stored in `var`j
+ */
+#define RUBY_ATOMIC_LOAD(var) rbimpl_atomic_load(&(var))
+
/**
* Identical to #RUBY_ATOMIC_EXCHANGE, except for the return type.
*
@@ -279,6 +290,17 @@ typedef unsigned int rb_atomic_t;
#define RUBY_ATOMIC_PTR_EXCHANGE(var, val) \
RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val))
+/**
+ * Identical to #RUBY_ATOMIC_LOAD, except it expects its arguments are `void*`.
+ * There are cases where ::rb_atomic_t is 32bit while `void*` is 64bit. This
+ * should be used for size related operations to support such platforms.
+ *
+ * @param var A variable of `void*`
+ * @return The value of `var` (without tearing)
+ */
+#define RUBY_ATOMIC_PTR_LOAD(var) \
+ RBIMPL_CAST(rbimpl_atomic_ptr_load((void **)&var))
+
/**
* Identical to #RUBY_ATOMIC_CAS, except it expects its arguments are `void*`.
* There are cases where ::rb_atomic_t is 32bit while `void*` is 64bit. This
@@ -291,7 +313,7 @@ typedef unsigned int rb_atomic_t;
* @retval otherwise Something else is at `var`; not updated.
*/
#define RUBY_ATOMIC_PTR_CAS(var, oldval, newval) \
- RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval)))
+ RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (void *)(oldval), (void *)(newval)))
/**
* Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are
@@ -404,7 +426,7 @@ rbimpl_atomic_size_add(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
__sync_add_and_fetch(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
/* Ditto for `InterlockeExchangedAdd`. */
InterlockedExchangeAdd64(ptr, val);
@@ -456,13 +478,15 @@ rbimpl_atomic_size_inc(volatile size_t *ptr)
#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS)
rbimpl_atomic_size_add(ptr, 1);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
InterlockedIncrement64(ptr);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
atomic_inc_ulong(ptr);
#else
+ RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t));
+
rbimpl_atomic_size_add(ptr, 1);
#endif
@@ -538,7 +562,7 @@ rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
__sync_sub_and_fetch(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
const ssize_t neg = -1;
InterlockedExchangeAdd64(ptr, neg * val);
@@ -590,13 +614,15 @@ rbimpl_atomic_size_dec(volatile size_t *ptr)
#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS)
rbimpl_atomic_size_sub(ptr, 1);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
InterlockedDecrement64(ptr);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
atomic_dec_ulong(ptr);
#else
+ RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t));
+
rbimpl_atomic_size_sub(ptr, 1);
#endif
@@ -688,7 +714,7 @@ rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
return __sync_lock_test_and_set(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
return InterlockedExchange64(ptr, val);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
@@ -746,6 +772,21 @@ rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val)
return RBIMPL_CAST((VALUE)sret);
}
+RBIMPL_ATTR_ARTIFICIAL()
+RBIMPL_ATTR_NOALIAS()
+RBIMPL_ATTR_NONNULL((1))
+static inline rb_atomic_t
+rbimpl_atomic_load(volatile rb_atomic_t *ptr)
+{
+#if 0
+
+#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#else
+ return rbimpl_atomic_fetch_add(ptr, 0);
+#endif
+}
+
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_NOALIAS()
RBIMPL_ATTR_NONNULL((1))
@@ -823,7 +864,7 @@ rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
return __sync_val_compare_and_swap(ptr, oldval, newval);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
return InterlockedCompareExchange64(ptr, newval, oldval);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
@@ -872,6 +913,22 @@ rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval)
#endif
}
+RBIMPL_ATTR_ARTIFICIAL()
+RBIMPL_ATTR_NOALIAS()
+RBIMPL_ATTR_NONNULL((1))
+static inline void *
+rbimpl_atomic_ptr_load(void **ptr)
+{
+#if 0
+
+#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#else
+ void *val = *ptr;
+ return rbimpl_atomic_ptr_cas(ptr, val, val);
+#endif
+}
+
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_NOALIAS()
RBIMPL_ATTR_NONNULL((1))
diff --git a/ThirdParty/include/ruby/mac/ruby/backward/2/attributes.h b/ThirdParty/include/ruby/mac/ruby/backward/2/attributes.h
index 73acfc9dc..916d9e9d5 100644
--- a/ThirdParty/include/ruby/mac/ruby/backward/2/attributes.h
+++ b/ThirdParty/include/ruby/mac/ruby/backward/2/attributes.h
@@ -39,6 +39,7 @@
#include "ruby/internal/attr/noinline.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/noreturn.h"
+#include "ruby/internal/attr/packed_struct.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/restrict.h"
#include "ruby/internal/attr/returns_nonnull.h"
@@ -80,10 +81,8 @@
#undef NOINLINE
#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x
-#ifndef MJIT_HEADER
-# undef ALWAYS_INLINE
-# define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x
-#endif
+#undef ALWAYS_INLINE
+#define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x
#undef ERRORFUNC
#define ERRORFUNC(mesg, x) RBIMPL_ATTR_ERROR(mesg) x
@@ -147,17 +146,14 @@
#define NORETURN(x) RBIMPL_ATTR_NORETURN() x
#define NORETURN_STYLE_NEW
-#ifndef PACKED_STRUCT
-# define PACKED_STRUCT(x) x
-#endif
+#undef PACKED_STRUCT
+#define PACKED_STRUCT(x) \
+ RBIMPL_ATTR_PACKED_STRUCT_BEGIN() x RBIMPL_ATTR_PACKED_STRUCT_END()
-#ifndef PACKED_STRUCT_UNALIGNED
-# if UNALIGNED_WORD_ACCESS
-# define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
-# else
-# define PACKED_STRUCT_UNALIGNED(x) x
-# endif
-#endif
+#undef PACKED_STRUCT_UNALIGNED
+#define PACKED_STRUCT_UNALIGNED(x) \
+ RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() x \
+ RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END()
#undef RB_UNUSED_VAR
#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED()
diff --git a/ThirdParty/include/ruby/mac/ruby/config.h b/ThirdParty/include/ruby/mac/ruby/config.h
index 900c26c44..880b87f30 100644
--- a/ThirdParty/include/ruby/mac/ruby/config.h
+++ b/ThirdParty/include/ruby/mac/ruby/config.h
@@ -1,462 +1,6 @@
-#ifndef INCLUDE_RUBY_CONFIG_H
-#define INCLUDE_RUBY_CONFIG_H 1
-/* confdefs.h */
-#define HAVE_STDIO_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_WCHAR_H 1
-#define STDC_HEADERS 1
-#define _ALL_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _GNU_SOURCE 1
-#define _HPUX_ALT_XOPEN_SOCKET_API 1
-#define _NETBSD_SOURCE 1
-#define _OPENBSD_SOURCE 1
-#define _POSIX_PTHREAD_SEMANTICS 1
-#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
-#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
-#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
-#define __STDC_WANT_LIB_EXT2__ 1
-#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
-#define _TANDEM_SOURCE 1
-#define __EXTENSIONS__ 1
-#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
-#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
-#define HAVE_STMT_AND_DECL_IN_EXPR 1
-#define HAVE_PTHREAD_H 1
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-#define HAVE_LIBPTHREAD 1
-#define THREAD_IMPL_H "thread_pthread.h"
-#define THREAD_IMPL_SRC "thread_pthread.c"
-#define BROKEN_CRYPT 1
-#define HAVE_CRT_EXTERNS_H 1
-#define HAVE_LIBDL 1
-#define HAVE_DIRENT_H 1
-#define HAVE__BOOL 1
-#define HAVE_STDBOOL_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_COPYFILE_H 1
-#define HAVE_GRP_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LANGINFO_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_LOCALE_H 1
-#define HAVE_MALLOC_MALLOC_H 1
-#define HAVE_PWD_H 1
-#define HAVE_SANITIZER_ASAN_INTERFACE_H 1
-#define HAVE_SANITIZER_MSAN_INTERFACE_H 1
-#define HAVE_STDALIGN_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_SYS_ATTR_H 1
-#define HAVE_SYS_FCNTL_H 1
-#define HAVE_SYS_FILE_H 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_RANDOM_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_UIO_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UCONTEXT_H 1
-#define HAVE_UTIME_H 1
-#define HAVE_X86INTRIN_H 1
-#if defined(__x86_64__)
-#define HAVE_X86INTRIN_H 1
+#ifndef RUBY_CONFIG_SHIM_H
+#define RUBY_CONFIG_SHIM_H 1
+
+#include "../arm64-darwin/ruby/config.h"
+
#endif
-#define HAVE_TYPEOF 1
-#define restrict __restrict__
-#define HAVE_LONG_LONG 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF___INT64 0
-#define SIZEOF___INT128 16
-#define SIZEOF_OFF_T 8
-#define SIZEOF_VOIDP 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_CLOCK_T 8
-#define PACKED_STRUCT(x) x __attribute__((packed))
-#define USE_UNALIGNED_MEMBER_ACCESS 1
-#define PRI_LL_PREFIX "ll"
-#define HAVE_PID_T 1
-#define rb_pid_t pid_t
-#define SIGNEDNESS_OF_PID_T -1
-#define PIDT2NUM(v) INT2NUM(v)
-#define NUM2PIDT(v) NUM2INT(v)
-#define PRI_PIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_UID_T 1
-#define rb_uid_t uid_t
-#define SIGNEDNESS_OF_UID_T +1
-#define UIDT2NUM(v) UINT2NUM(v)
-#define NUM2UIDT(v) NUM2UINT(v)
-#define PRI_UIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_GID_T 1
-#define rb_gid_t gid_t
-#define SIGNEDNESS_OF_GID_T +1
-#define GIDT2NUM(v) UINT2NUM(v)
-#define NUM2GIDT(v) NUM2UINT(v)
-#define PRI_GIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_TIME_T 1
-#define rb_time_t time_t
-#define SIGNEDNESS_OF_TIME_T -1
-#define TIMET2NUM(v) LONG2NUM(v)
-#define NUM2TIMET(v) NUM2LONG(v)
-#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
-#define HAVE_DEV_T 1
-#define rb_dev_t dev_t
-#define SIGNEDNESS_OF_DEV_T -1
-#define DEVT2NUM(v) INT2NUM(v)
-#define NUM2DEVT(v) NUM2INT(v)
-#define PRI_DEVT_PREFIX PRI_INT_PREFIX
-#define HAVE_MODE_T 1
-#define rb_mode_t mode_t
-#define SIGNEDNESS_OF_MODE_T +1
-#define MODET2NUM(v) USHORT2NUM(v)
-#define NUM2MODET(v) NUM2USHORT(v)
-#define PRI_MODET_PREFIX PRI_SHORT_PREFIX
-#define HAVE_RLIM_T 1
-#define rb_rlim_t rlim_t
-#define SIGNEDNESS_OF_RLIM_T +1
-#define RLIM2NUM(v) ULL2NUM(v)
-#define NUM2RLIM(v) NUM2ULL(v)
-#define PRI_RLIM_PREFIX PRI_LL_PREFIX
-#define HAVE_OFF_T 1
-#define rb_off_t off_t
-#define SIGNEDNESS_OF_OFF_T -1
-#define OFFT2NUM(v) LL2NUM(v)
-#define NUM2OFFT(v) NUM2LL(v)
-#define PRI_OFFT_PREFIX PRI_LL_PREFIX
-#define HAVE_CLOCKID_T 1
-#define rb_clockid_t clockid_t
-#define SIGNEDNESS_OF_CLOCKID_T +1
-#define CLOCKID2NUM(v) UINT2NUM(v)
-#define NUM2CLOCKID(v) NUM2UINT(v)
-#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
-#define HAVE_VA_ARGS_MACRO 1
-#define HAVE__ALIGNOF 1
-#define CONSTFUNC(x) __attribute__ ((__const__)) x
-#define PUREFUNC(x) __attribute__ ((__pure__)) x
-#define NORETURN(x) __attribute__ ((__noreturn__)) x
-#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
-#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
-#define NOINLINE(x) __attribute__ ((__noinline__)) x
-#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
-#define NO_SANITIZE(san, x) __attribute__ ((__no_sanitize__(san))) x
-#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
-#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
-#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
-#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
-#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
-#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
-#define WEAK(x) __attribute__ ((__weak__)) x
-#define HAVE_FUNC_WEAK 1
-#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
-#define HAVE_NULLPTR 1
-#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
-#define HAVE_GCC_ATOMIC_BUILTINS 1
-#define HAVE_GCC_SYNC_BUILTINS 1
-#define HAVE___BUILTIN_UNREACHABLE 1
-#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
-#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
-#define RUBY_FUNCTION_NAME_STRING __func__
-#define ENUM_OVER_INT 1
-#define HAVE_DECL_SYS_NERR 1
-#define HAVE_DECL_GETENV 1
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_PTRDIFF_T 8
-#define SIZEOF_DEV_T 4
-#define PRI_SIZE_PREFIX "z"
-#define PRI_PTRDIFF_PREFIX "t"
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
-#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T
-#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T
-#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
-#define HAVE_STRUCT_TIMESPEC 1
-#define HAVE_STRUCT_TIMEZONE 1
-#define HAVE_RB_FD_INIT 1
-#define HAVE_INT8_T 1
-#define SIZEOF_INT8_T 1
-#define HAVE_UINT8_T 1
-#define SIZEOF_UINT8_T 1
-#define HAVE_INT16_T 1
-#define SIZEOF_INT16_T 2
-#define HAVE_UINT16_T 1
-#define SIZEOF_UINT16_T 2
-#define HAVE_INT32_T 1
-#define SIZEOF_INT32_T 4
-#define HAVE_UINT32_T 1
-#define SIZEOF_UINT32_T 4
-#define HAVE_INT64_T 1
-#define SIZEOF_INT64_T 8
-#define HAVE_UINT64_T 1
-#define SIZEOF_UINT64_T 8
-#define HAVE_INT128_T 1
-#define int128_t __int128
-#define SIZEOF_INT128_T SIZEOF___INT128
-#define HAVE_UINT128_T 1
-#define uint128_t unsigned __int128
-#define SIZEOF_UINT128_T SIZEOF___INT128
-#define HAVE_INTPTR_T 1
-#define SIZEOF_INTPTR_T 8
-#define HAVE_UINTPTR_T 1
-#define SIZEOF_UINTPTR_T 8
-#define PRI_PTR_PREFIX "l"
-#define HAVE_SSIZE_T 1
-#define SIZEOF_SSIZE_T 8
-#define PRI_64_PREFIX "ll"
-#define GETGROUPS_T gid_t
-#define HAVE_ALLOCA_H 1
-#define HAVE_ALLOCA 1
-#define HAVE_DUP 1
-#define HAVE_DUP2 1
-#define HAVE_ACOSH 1
-#define HAVE_CBRT 1
-#define HAVE_CRYPT 1
-#define HAVE_ERF 1
-#define HAVE_FFS 1
-#define HAVE_FLOCK 1
-#define HAVE_HYPOT 1
-#define HAVE_LGAMMA_R 1
-#define HAVE_MEMMOVE 1
-#define HAVE_NAN 1
-#define HAVE_NEXTAFTER 1
-#define HAVE_STRCHR 1
-#define HAVE_STRERROR 1
-#define HAVE_STRLCAT 1
-#define HAVE_STRLCPY 1
-#define HAVE_STRSTR 1
-#define HAVE_TGAMMA 1
-#define HAVE_ISFINITE 1
-#define SPT_TYPE SPT_REUSEARGV
-#define HAVE_SIGNBIT 1
-#define HAVE_FORK 1
-#define vfork fork
-#define HAVE_WORKING_FORK 1
-#define HAVE__LONGJMP 1
-#define HAVE_ARC4RANDOM_BUF 1
-#define HAVE_ATAN2L 1
-#define HAVE_ATAN2F 1
-#define HAVE_CHMOD 1
-#define HAVE_CHOWN 1
-#define HAVE_CHROOT 1
-#define HAVE_CLOCK_GETTIME 1
-#define HAVE_COSH 1
-#define HAVE_DIRFD 1
-#define HAVE_DLOPEN 1
-#define HAVE_DLADDR 1
-#define HAVE_ENDGRENT 1
-#define HAVE_EXECL 1
-#define HAVE_EXECLE 1
-#define HAVE_EXECV 1
-#define HAVE_EXECVE 1
-#define HAVE_FCOPYFILE 1
-#define HAVE_FCHMOD 1
-#define HAVE_FCHOWN 1
-#define HAVE_FCNTL 1
-#define HAVE_FDOPENDIR 1
-#define HAVE_FGETATTRLIST 1
-#define HAVE_FMOD 1
-#define HAVE_FSTATAT 1
-#define HAVE_FSYNC 1
-#define HAVE_FTRUNCATE 1
-#define HAVE_GETATTRLIST 1
-#define HAVE_GETCWD 1
-#define HAVE_GETEGID 1
-#define HAVE_GETENTROPY 1
-#define HAVE_GETEUID 1
-#define HAVE_GETGID 1
-#define HAVE_GETGRNAM 1
-#define HAVE_GETGRNAM_R 1
-#define HAVE_GETGROUPS 1
-#define HAVE_GETLOGIN 1
-#define HAVE_GETLOGIN_R 1
-#define HAVE_GETPGID 1
-#define HAVE_GETPGRP 1
-#define HAVE_GETPPID 1
-#define HAVE_GETPRIORITY 1
-#define HAVE_GETPWNAM 1
-#define HAVE_GETPWNAM_R 1
-#define HAVE_GETPWUID 1
-#define HAVE_GETPWUID_R 1
-#define HAVE_GETRLIMIT 1
-#define HAVE_GETSID 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETUID 1
-#define HAVE_GMTIME_R 1
-#define HAVE_GRANTPT 1
-#define HAVE_INITGROUPS 1
-#define HAVE_IOCTL 1
-#define HAVE_ISSETUGID 1
-#define HAVE_KILL 1
-#define HAVE_KILLPG 1
-#define HAVE_LCHMOD 1
-#define HAVE_LCHOWN 1
-#define HAVE_LINK 1
-#define HAVE_LLABS 1
-#define HAVE_LOCKF 1
-#define HAVE_LOG2 1
-#define HAVE_LSTAT 1
-#define HAVE_LUTIMES 1
-#define HAVE_MALLOC_SIZE 1
-#define HAVE_MBLEN 1
-#define HAVE_MEMSET_S 1
-#define HAVE_WRITEV 1
-#define HAVE_MEMMEM 1
-#define HAVE_MKFIFO 1
-#define HAVE_MKNOD 1
-#define HAVE_MKTIME 1
-#define HAVE_MMAP 1
-#define HAVE_OPENAT 1
-#define HAVE_PCLOSE 1
-#define HAVE_PIPE 1
-#define HAVE_POLL 1
-#define HAVE_POPEN 1
-#define HAVE_POSIX_MADVISE 1
-#define HAVE_POSIX_MEMALIGN 1
-#define HAVE_PREAD 1
-#define HAVE_PWRITE 1
-#define HAVE_QSORT_R 1
-#define HAVE_READLINK 1
-#define HAVE_REALPATH 1
-#define HAVE_ROUND 1
-#define HAVE_SEEKDIR 1
-#define HAVE_SENDFILE 1
-#define HAVE_SETEGID 1
-#define HAVE_SETENV 1
-#define HAVE_SETEUID 1
-#define HAVE_SETGID 1
-#define HAVE_SETGROUPS 1
-#define HAVE_SETPGID 1
-#define HAVE_SETPGRP 1
-#define HAVE_SETREGID 1
-#define HAVE_SETREUID 1
-#define HAVE_SETRGID 1
-#define HAVE_SETRLIMIT 1
-#define HAVE_SETRUID 1
-#define HAVE_SETSID 1
-#define HAVE_SETUID 1
-#define HAVE_SHUTDOWN 1
-#define HAVE_SIGACTION 1
-#define HAVE_SIGALTSTACK 1
-#define HAVE_SIGPROCMASK 1
-#define HAVE_SINH 1
-#define HAVE_SYMLINK 1
-#define HAVE_SYSCONF 1
-#define HAVE_SYSTEM 1
-#define HAVE_TANH 1
-#define HAVE_TELLDIR 1
-#define HAVE_TIMEGM 1
-#define HAVE_TIMES 1
-#define HAVE_TRUNCATE 1
-#define HAVE_TZSET 1
-#define HAVE_UMASK 1
-#define HAVE_UNSETENV 1
-#define HAVE_UTIMENSAT 1
-#define HAVE_UTIMES 1
-#define HAVE_WAIT4 1
-#define HAVE_WAITPID 1
-#define HAVE___COSPI 1
-#define HAVE___SINPI 1
-#if !defined __STDC_WANT_LIB_EXT1__
-#define __STDC_WANT_LIB_EXT1__ 1
-#endif /* !defined __STDC_WANT_LIB_EXT1__ */
-#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
-#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
-#define HAVE_BUILTIN___BUILTIN_CLZ 1
-#define HAVE_BUILTIN___BUILTIN_CLZL 1
-#define HAVE_BUILTIN___BUILTIN_CLZLL 1
-#define HAVE_BUILTIN___BUILTIN_CTZ 1
-#define HAVE_BUILTIN___BUILTIN_CTZLL 1
-#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
-#define HAVE_BUILTIN___BUILTIN_TRAP 1
-#define HAVE_BUILTIN___BUILTIN_EXPECT 1
-#define HAVE_BSD_QSORT_R 1
-#define ATAN2_INF_C99 1
-#define HAVE_CLOCK_GETRES 1
-#define HAVE_STRUCT_TM_TM_ZONE 1
-#define HAVE_TM_ZONE 1
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-#define HAVE_DAYLIGHT 1
-#define NEGATIVE_TIME_T 1
-#define POSIX_SIGNAL 1
-#define HAVE_SIG_T 1
-#define RSHIFT(x,y) ((x)>>(int)(y))
-#define HAVE__SC_CLK_TCK 1
-#define STACK_GROW_DIRECTION -1
-#define COROUTINE_H "coroutine/amd64/Context.h"
-#define HAVE_SCHED_YIELD 1
-#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
-#define HAVE_PTHREAD_ATTR_GETSTACK 1
-#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
-#define HAVE_PTHREAD_GET_STACKADDR_NP 1
-#define HAVE_PTHREAD_GET_STACKSIZE_NP 1
-#define HAVE_PTHREAD_SETNAME_NP 1
-#define HAVE_PTHREAD_SIGMASK 1
-#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(name)
-#define DEFINE_MCONTEXT_PTR(mc, uc) mcontext_t mc = (uc)->uc_mcontext
-#define HAVE_SYS_USER_H 1
-#define HAVE_CONST_PAGE_SIZE 1
-#define IOCTL_REQ_TYPE unsigned long
-#define NUM2IOCTLREQ(num) NUM2ULONG(num)
-#define HAVE_MACH_O_LOADER_H 1
-#define EXTSTATIC 1
-#define HAVE_LIBPROC_H 1
-#define HAVE_EXECINFO_H 1
-#define HAVE_LIBUNWIND_H 1
-#define HAVE_MACH_TASK_H 1
-#define HAVE_MACH_MACH_INIT_H 1
-#define HAVE_MACH_MACH_PORT_H 1
-#define HAVE_MACH_TASK_EXCEPTION_PORTS 1
-#define HAVE_BACKTRACE 1
-#define BROKEN_BACKTRACE 1
-#define DLEXT_MAXLEN 7
-#define DLEXT ".bundle"
-#define LIBDIR_BASENAME "lib"
-#define HAVE__SETJMP 1
-#define HAVE_SIGSETJMP 1
-#define RUBY_SETJMP(env) sigsetjmp((env),0)
-#define RUBY_LONGJMP(env,val) siglongjmp((env),val)
-#define RUBY_JMP_BUF sigjmp_buf
-#define USE_MJIT 1
-#define USE_YJIT 0
-#define LOAD_RELATIVE 1
-#define RUBY_PLATFORM "x86_64-darwin21"
-#endif /* INCLUDE_RUBY_CONFIG_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/debug.h b/ThirdParty/include/ruby/mac/ruby/debug.h
index f95acdb17..f7c8e6ca8 100644
--- a/ThirdParty/include/ruby/mac/ruby/debug.h
+++ b/ThirdParty/include/ruby/mac/ruby/debug.h
@@ -10,6 +10,7 @@
* modify this file, provided that the conditions mentioned in the
* file COPYING are met. Consult the file for details.
*/
+#include "ruby/internal/attr/deprecated.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/returns_nonnull.h"
#include "ruby/internal/dllexport.h"
@@ -50,6 +51,25 @@ RBIMPL_ATTR_NONNULL((3))
*/
int rb_profile_frames(int start, int limit, VALUE *buff, int *lines);
+/**
+ * Queries mysterious "frame"s of the given range.
+ *
+ * A per-thread version of rb_profile_frames().
+ * Arguments and return values are the same with rb_profile_frames() with the
+ * exception of the first argument _thread_, which accepts the Thread to be
+ * profiled/queried.
+ *
+ * @param[in] thread The Ruby Thread to be profiled.
+ * @param[in] start Start position (0 means the topmost).
+ * @param[in] limit Number objects of `buff`.
+ * @param[out] buff Return buffer.
+ * @param[out] lines Return buffer.
+ * @return Number of objects filled into `buff`.
+ * @post `buff` is filled with backtrace pointers.
+ * @post `lines` is filled with `__LINE__` of each backtraces.
+ */
+int rb_profile_thread_frames(VALUE thread, int start, int limit, VALUE *buff, int *lines);
+
/**
* Queries the path of the passed backtrace.
*
@@ -596,48 +616,157 @@ VALUE rb_tracearg_object(rb_trace_arg_t *trace_arg);
/*
* Postponed Job API
- * rb_postponed_job_register and rb_postponed_job_register_one are
- * async-signal-safe and used via SIGPROF by the "stackprof" RubyGem
+ *
+ * This API is designed to be called from contexts where it is not safe to run Ruby
+ * code (e.g. because they do not hold the GVL or because GC is in progress), and
+ * defer a callback to run in a context where it _is_ safe. The primary intended
+ * users of this API is for sampling profilers like the "stackprof" gem; these work
+ * by scheduling the periodic delivery of a SIGPROF signal, and inside the C-level
+ * signal handler, deferring a job to collect a Ruby backtrace when it is next safe
+ * to do so.
+ *
+ * Ruby maintains a small, fixed-size postponed job table. An extension using this
+ * API should first call `rb_postponed_job_preregister` to register a callback
+ * function in this table and obtain a handle of type `rb_postponed_job_handle_t`
+ * to it. Subsequently, the callback can be triggered by calling
+ * `rb_postponed_job_trigger` with that handle, or the `data` associated with the
+ * callback function can be changed by calling `rb_postponed_job_preregister` again.
+ *
+ * Because the postponed job table is quite small (it only has 32 entries on most
+ * common systems), extensions should generally only preregister one or two `func`
+ * values.
+ *
+ * Historically, this API provided two functions `rb_postponed_job_register` and
+ * `rb_postponed_job_register_one`, which claimed to be fully async-signal-safe and
+ * would call back the provided `func` and `data` at an appropriate time. However,
+ * these functions were subject to race conditions which could cause crashes when
+ * racing with Ruby's internal use of them. These two functions are still present,
+ * but are marked as deprecated and have slightly changed semantics:
+ *
+ * * rb_postponed_job_register now works like rb_postponed_job_register_one i.e.
+ * `func` will only be executed at most one time each time Ruby checks for
+ * interrupts, no matter how many times it is registered
+ * * They are also called with the last `data` to be registered, not the first
+ * (which is how rb_postponed_job_register_one previously worked)
*/
+
/**
* Type of postponed jobs.
*
- * @param[in,out] arg What was passed to rb_postponed_job_register().
+ * @param[in,out] arg What was passed to `rb_postponed_job_preregister`
*/
typedef void (*rb_postponed_job_func_t)(void *arg);
/**
- * Registers a postponed job.
+ * The type of a handle returned from `rb_postponed_job_preregister` and
+ * passed to `rb_postponed_job_trigger`
+ */
+typedef unsigned int rb_postponed_job_handle_t;
+#define POSTPONED_JOB_HANDLE_INVALID ((rb_postponed_job_handle_t)UINT_MAX)
+
+/**
+ * Pre-registers a func in Ruby's postponed job preregistration table,
+ * returning an opaque handle which can be used to trigger the job later. Generally,
+ * this function will be called during the initialization routine of an extension.
*
- * There are situations when running a ruby program is not possible. For
- * instance when a program is in a signal handler; for another instance when
- * the GC is busy. On such situations however, there might be needs to do
- * something. We cannot but defer such operations until we are 100% sure it is
- * safe to execute them. This mechanism is called postponed jobs. This
- * function registers a new one. The registered job would eventually gets
- * executed.
+ * The returned handle can be used later to call `rb_postponed_job_trigger`. This will
+ * cause Ruby to call back into the registered `func` with `data` at a later time, in
+ * a context where the GVL is held and it is safe to perform Ruby allocations.
*
- * @param[in] flags (Unused) reserved for future extensions.
+ * If the given `func` was already pre-registered, this function will overwrite the
+ * stored data with the newly passed data, and return the same handle instance as
+ * was previously returned.
+ *
+ * If this function is called concurrently with the same `func`, then the stored data
+ * could be the value from either call (but will definitely be one of them).
+ *
+ * If this function is called to update the data concurrently with a call to
+ * `rb_postponed_job_trigger` on the same handle, it's undefined whether `func` will
+ * be called with the old data or the new data.
+ *
+ * Although the current implementation of this function is in fact async-signal-safe and
+ * has defined semantics when called concurrently on the same `func`, a future Ruby
+ * version might require that this method be called under the GVL; thus, programs which
+ * aim to be forward-compatible should call this method whilst holding the GVL.
+ *
+ * @param[in] flags Unused and ignored
+ * @param[in] func The function to be pre-registered
+ * @param[in] data The data to be pre-registered
+ * @retval POSTPONED_JOB_HANDLE_INVALID The job table is full; this registration
+ * did not succeed and no further registration will do so for
+ * the lifetime of the program.
+ * @retval otherwise A handle which can be passed to `rb_postponed_job_trigger`
+ */
+rb_postponed_job_handle_t rb_postponed_job_preregister(unsigned int flags, rb_postponed_job_func_t func, void *data);
+
+/**
+ * Triggers a pre-registered job registered with rb_postponed_job_preregister,
+ * scheduling it for execution the next time the Ruby VM checks for interrupts.
+ * The context in which the job is called in holds the GVL and is safe to perform
+ * Ruby allocations within (i.e. it is not during GC).
+ *
+ * This method is async-signal-safe and can be called from any thread, at any
+ * time, including in signal handlers.
+ *
+ * If this method is called multiple times, Ruby will coalesce this into only
+ * one call to the job the next time it checks for interrupts.
+ *
+ * @params[in] h A handle returned from rb_postponed_job_preregister
+ */
+void rb_postponed_job_trigger(rb_postponed_job_handle_t h);
+
+/**
+ * Schedules the given `func` to be called with `data` when Ruby next checks for
+ * interrupts. If this function is called multiple times in between Ruby checking
+ * for interrupts, then `func` will be called only once with the `data` value from
+ * the first call to this function.
+ *
+ * Like `rb_postponed_job_trigger`, the context in which the job is called
+ * holds the GVL and can allocate Ruby objects.
+ *
+ * This method essentially has the same semantics as:
+ *
+ * ```
+ * rb_postponed_job_trigger(rb_postponed_job_preregister(func, data));
+ * ```
+ *
+ * @note Previous versions of Ruby promised that the (`func`, `data`) pairs would
+ * be executed as many times as they were registered with this function; in
+ * reality this was always subject to race conditions and this function no
+ * longer provides this guarantee. Instead, multiple calls to this function
+ * can be coalesced into a single execution of the passed `func`, with the
+ * most recent `data` registered at that time passed in.
+ *
+ * @deprecated This interface implies that arbitrarily many `func`'s can be enqueued
+ * over the lifetime of the program, whilst in reality the registration
+ * slots for postponed jobs are a finite resource. This is made clearer
+ * by the `rb_postponed_job_preregister` and `rb_postponed_job_trigger`
+ * functions, and a future version of Ruby might delete this function.
+ *
+ * @param[in] flags Unused and ignored.
* @param[in] func Job body.
* @param[in,out] data Passed as-is to `func`.
- * @retval 0 Postponed job buffer is full. Failed.
- * @retval otherwise Opaque return value.
- * @post The passed job is postponed.
+ * @retval 0 Postponed job registration table is full. Failed.
+ * @retval 1 Registration succeeded.
+ * @post The passed job will run on the next interrupt check.
*/
+ RBIMPL_ATTR_DEPRECATED(("use rb_postponed_job_preregister and rb_postponed_job_trigger"))
int rb_postponed_job_register(unsigned int flags, rb_postponed_job_func_t func, void *data);
/**
- * Identical to rb_postponed_job_register_one(), except it additionally checks
- * for duplicated registration. In case the passed job is already in the
- * postponed job buffer this function does nothing.
+ * Identical to `rb_postponed_job_register`
+ *
+ * @deprecated This is deprecated for the same reason as `rb_postponed_job_register`
*
- * @param[in] flags (Unused) reserved for future extensions.
+ * @param[in] flags Unused and ignored.
* @param[in] func Job body.
* @param[in,out] data Passed as-is to `func`.
- * @retval 0 Postponed job buffer is full. Failed.
- * @retval otherwise Opaque return value.
+ * @retval 0 Postponed job registration table is full. Failed.
+ * @retval 1 Registration succeeded.
+ * @post The passed job will run on the next interrupt check.
*/
+ RBIMPL_ATTR_DEPRECATED(("use rb_postponed_job_preregister and rb_postponed_job_trigger"))
int rb_postponed_job_register_one(unsigned int flags, rb_postponed_job_func_t func, void *data);
/** @} */
diff --git a/ThirdParty/include/ruby/mac/ruby/digest.h b/ThirdParty/include/ruby/mac/ruby/digest.h
index 8a4c5b7e4..c5c37583a 100644
--- a/ThirdParty/include/ruby/mac/ruby/digest.h
+++ b/ThirdParty/include/ruby/mac/ruby/digest.h
@@ -40,7 +40,8 @@ rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \
for (; size > stride; size -= stride, ptr += stride) { \
name##_Update(ctx, ptr, stride); \
} \
- if (size > 0) name##_Update(ctx, ptr, size); \
+ /* Since size <= stride, size should fit into an unsigned int */ \
+ if (size > 0) name##_Update(ctx, ptr, (unsigned int)size); \
}
#define DEFINE_FINISH_FUNC_FROM_FINAL(name) \
@@ -63,10 +64,43 @@ rb_id_metadata(void)
return rb_intern_const("metadata");
}
+#if !defined(HAVE_RB_EXT_RESOLVE_SYMBOL)
+#elif !defined(RUBY_UNTYPED_DATA_WARNING)
+# error RUBY_UNTYPED_DATA_WARNING is not defined
+#elif RUBY_UNTYPED_DATA_WARNING
+/* rb_ext_resolve_symbol() has been defined since Ruby 3.3, but digest
+ * bundled with 3.3 didn't use it. */
+# define DIGEST_USE_RB_EXT_RESOLVE_SYMBOL 1
+#endif
+
static inline VALUE
rb_digest_make_metadata(const rb_digest_metadata_t *meta)
{
-#undef RUBY_UNTYPED_DATA_WARNING
-#define RUBY_UNTYPED_DATA_WARNING 0
+#if defined(EXTSTATIC) && EXTSTATIC
+ /* The extension is built as a static library, so safe to refer to
+ * rb_digest_wrap_metadata directly. */
+ extern VALUE rb_digest_wrap_metadata(const rb_digest_metadata_t *meta);
+ return rb_digest_wrap_metadata(meta);
+#else
+ /* The extension is built as a shared library, so we can't refer
+ * to rb_digest_wrap_metadata directly. */
+# ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL
+ /* If rb_ext_resolve_symbol() is available, use it to get the address of
+ * rb_digest_wrap_metadata. */
+ typedef VALUE (*wrapper_func_type)(const rb_digest_metadata_t *meta);
+ static wrapper_func_type wrapper;
+ if (!wrapper) {
+ wrapper = (wrapper_func_type)(uintptr_t)
+ rb_ext_resolve_symbol("digest.so", "rb_digest_wrap_metadata");
+ if (!wrapper) rb_raise(rb_eLoadError, "rb_digest_wrap_metadata not found");
+ }
+ return wrapper(meta);
+# else
+ /* If rb_ext_resolve_symbol() is not available, keep using untyped
+ * data. */
+# undef RUBY_UNTYPED_DATA_WARNING
+# define RUBY_UNTYPED_DATA_WARNING 0
return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta));
+# endif
+#endif
}
diff --git a/ThirdParty/include/ruby/mac/ruby/fiber/scheduler.h b/ThirdParty/include/ruby/mac/ruby/fiber/scheduler.h
index 250b39b6d..b678bd0d1 100644
--- a/ThirdParty/include/ruby/mac/ruby/fiber/scheduler.h
+++ b/ThirdParty/include/ruby/mac/ruby/fiber/scheduler.h
@@ -97,7 +97,7 @@ VALUE rb_fiber_scheduler_get(void);
* current thread will call scheduler's `#close` method on finalisation
* (allowing the scheduler to properly manage all non-finished fibers).
* `scheduler` can be an object of any class corresponding to
- * `Fiber::SchedulerInterface`. Its implementation is up to the user.
+ * `Fiber::Scheduler` interface. Its implementation is up to the user.
*
* @param[in] scheduler The scheduler to set.
* @exception rb_eArgError `scheduler` does not conform the interface.
@@ -267,10 +267,10 @@ VALUE rb_fiber_scheduler_io_selectv(VALUE scheduler, int argc, VALUE *argv);
* Non-blocking read from the passed IO.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[out] buffer Return buffer.
- * @param[in] length Requested number of bytes to read.
- * @param[in] offset The offset in the buffer to read to.
+ * @param[in] io An io object to read from.
+ * @param[in] buffer The buffer to read to.
+ * @param[in] length The minimum number of bytes to read.
+ * @param[in] offset The offset in the buffer to read from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns `[-errno, size]`.
*/
@@ -280,9 +280,9 @@ VALUE rb_fiber_scheduler_io_read(VALUE scheduler, VALUE io, VALUE buffer, size_t
* Non-blocking write to the passed IO.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] buffer What to write.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] buffer The buffer to write from.
+ * @param[in] length The minimum number of bytes to write.
* @param[in] offset The offset in the buffer to write from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns `[-errno, size]`.
@@ -293,10 +293,10 @@ VALUE rb_fiber_scheduler_io_write(VALUE scheduler, VALUE io, VALUE buffer, size_
* Non-blocking read from the passed IO at the specified offset.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[in] from The offset in the given IO to read the data from.
- * @param[out] buffer The buffer to read the data to.
- * @param[in] length Requested number of bytes to read.
+ * @param[in] io An io object to read from.
+ * @param[in] from The offset to read from.
+ * @param[in] buffer The buffer to read to.
+ * @param[in] length The minimum number of bytes to read.
* @param[in] offset The offset in the buffer to read to.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns.
@@ -307,10 +307,10 @@ VALUE rb_fiber_scheduler_io_pread(VALUE scheduler, VALUE io, rb_off_t from, VALU
* Non-blocking write to the passed IO at the specified offset.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] from The offset in the given IO to write the data to.
- * @param[in] buffer The buffer to write the data from.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] from The offset to write to.
+ * @param[in] buffer The buffer to write from.
+ * @param[in] length The minimum number of bytes to write.
* @param[in] offset The offset in the buffer to write from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns.
@@ -321,27 +321,55 @@ VALUE rb_fiber_scheduler_io_pwrite(VALUE scheduler, VALUE io, rb_off_t from, VAL
* Non-blocking read from the passed IO using a native buffer.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[out] buffer Return buffer.
- * @param[in] size Size of the return buffer.
- * @param[in] length Requested number of bytes to read.
+ * @param[in] io An io object to read from.
+ * @param[in] base The memory to read to.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to read.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns.
*/
-VALUE rb_fiber_scheduler_io_read_memory(VALUE scheduler, VALUE io, void *buffer, size_t size, size_t length);
+VALUE rb_fiber_scheduler_io_read_memory(VALUE scheduler, VALUE io, void *base, size_t size, size_t length);
/**
* Non-blocking write to the passed IO using a native buffer.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] buffer What to write.
- * @param[in] size Size of the buffer.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] base The memory to write from.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to write.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
+ * @return otherwise What `scheduler.io_write` returns.
+ */
+VALUE rb_fiber_scheduler_io_write_memory(VALUE scheduler, VALUE io, const void *base, size_t size, size_t length);
+
+/**
+ * Non-blocking pread from the passed IO using a native buffer.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] io An io object to read from.
+ * @param[in] from The offset to read from.
+ * @param[in] base The memory to read to.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to read.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
+ * @return otherwise What `scheduler.io_read` returns.
+ */
+VALUE rb_fiber_scheduler_io_pread_memory(VALUE scheduler, VALUE io, rb_off_t from, void *base, size_t size, size_t length);
+
+/**
+ * Non-blocking pwrite to the passed IO using a native buffer.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] io An io object to write to.
+ * @param[in] from The offset to write from.
+ * @param[in] base The memory to write from.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to write.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns.
*/
-VALUE rb_fiber_scheduler_io_write_memory(VALUE scheduler, VALUE io, const void *buffer, size_t size, size_t length);
+VALUE rb_fiber_scheduler_io_pwrite_memory(VALUE scheduler, VALUE io, rb_off_t from, const void *base, size_t size, size_t length);
/**
* Non-blocking close the given IO.
@@ -363,6 +391,26 @@ VALUE rb_fiber_scheduler_io_close(VALUE scheduler, VALUE io);
*/
VALUE rb_fiber_scheduler_address_resolve(VALUE scheduler, VALUE hostname);
+struct rb_fiber_scheduler_blocking_operation_state {
+ void *result;
+ int saved_errno;
+};
+
+/**
+ * Defer the execution of the passed function to the scheduler.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] function The function to run.
+ * @param[in] data The data to pass to the function.
+ * @param[in] unblock_function The unblock function to use to interrupt the operation.
+ * @param[in] data2 The data to pass to the unblock function.
+ * @param[in] flags Flags passed to `rb_nogvl`.
+ * @param[out] state The result and errno of the operation.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#blocking_operation_wait`.
+ * @return otherwise What `scheduler.blocking_operation_wait` returns.
+ */
+VALUE rb_fiber_scheduler_blocking_operation_wait(VALUE scheduler, void* (*function)(void *), void *data, rb_unblock_function_t *unblock_function, void *data2, int flags, struct rb_fiber_scheduler_blocking_operation_state *state);
+
/**
* Create and schedule a non-blocking fiber.
*
diff --git a/ThirdParty/include/ruby/mac/ruby/intern.h b/ThirdParty/include/ruby/mac/ruby/intern.h
index 2480e2e70..48e4cd546 100644
--- a/ThirdParty/include/ruby/mac/ruby/intern.h
+++ b/ThirdParty/include/ruby/mac/ruby/intern.h
@@ -36,7 +36,6 @@
#include "ruby/internal/intern/error.h"
#include "ruby/internal/intern/eval.h"
#include "ruby/internal/intern/file.h"
-#include "ruby/internal/intern/gc.h"
#include "ruby/internal/intern/hash.h"
#include "ruby/internal/intern/io.h"
#include "ruby/internal/intern/load.h"
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/abi.h b/ThirdParty/include/ruby/mac/ruby/internal/abi.h
index 44111a005..e6d1fa7e8 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/abi.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/abi.h
@@ -24,7 +24,7 @@
* In released versions of Ruby, this number is not defined since teeny
* versions of Ruby should guarantee ABI compatibility.
*/
-#define RUBY_ABI_VERSION 3
+#define RUBY_ABI_VERSION 1
/* Windows does not support weak symbols so ruby_abi_version will not exist
* in the shared library. */
@@ -33,7 +33,7 @@
#endif
#endif /* RUBY_ABI_VERSION */
-#ifdef RUBY_DLN_CHECK_ABI
+#if defined(RUBY_DLN_CHECK_ABI) && !defined(RUBY_EXPORT)
# ifdef __cplusplus
extern "C" {
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/anyargs.h b/ThirdParty/include/ruby/mac/ruby/internal/anyargs.h
index e3e1b6166..e4c6d155c 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/anyargs.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/anyargs.h
@@ -84,12 +84,15 @@
#elif defined(_WIN32) || defined(__CYGWIN__)
# /* Skip due to [Bug #16134] */
+# define RBIMPL_CAST_FN_PTR 1
#elif ! RBIMPL_HAS_ATTRIBUTE(transparent_union)
# /* :TODO: improve here, please find a way to support. */
+# define RBIMPL_CAST_FN_PTR 1
#elif ! defined(HAVE_VA_ARGS_MACRO)
# /* :TODO: improve here, please find a way to support. */
+# define RBIMPL_CAST_FN_PTR 1
#else
# /** @cond INTERNAL_MACRO */
@@ -348,6 +351,25 @@ RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
#endif /* __cplusplus */
+#if defined(RBIMPL_CAST_FN_PTR) && !defined(__cplusplus)
+/* In C23, K&R style prototypes are gone and so `void foo(ANYARGS)` became
+ * equivalent to `void foo(void)` unlike in earlier versions. This is a problem
+ * for rb_define_* functions since that makes all valid functions one can pass
+ * trip -Wincompatible-pointer-types, which we treat as errors. This is mostly
+ * not a problem for the __builtin_choose_expr path, but outside of that we
+ * need to add a cast for compatibility.
+ */
+#define rb_define_method(klass, mid, func, arity) rb_define_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_method_id(klass, mid, func, arity) rb_define_method_id((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_singleton_method(obj, mid, func, arity) rb_define_singleton_method((obj), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_protected_method(klass, mid, func, arity) rb_define_protected_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_private_method(klass, mid, func, arity) rb_define_private_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_module_function(mod, mid, func, arity) rb_define_module_function((mod), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_global_function(mid, func, arity) rb_define_global_function((mid), (VALUE (*)(ANYARGS))(func), (arity))
+
+#undef RBIMPL_CAST_FN_PTR
+#endif /* defined(RBIMPL_CAST_FN_PTR) && !defined(__cplusplus) */
+
/**
* This macro is to properly cast a function parameter of *_define_method
* family. It has been around since 1.x era so you can maximise backwards
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/int.h b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/int.h
index 6bd8ec218..7b24d1688 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/int.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/int.h
@@ -254,7 +254,7 @@ static inline VALUE
rb_uint2num_inline(unsigned int v)
{
if (RB_POSFIXABLE(v))
- return RB_LONG2FIX(v);
+ return RB_LONG2FIX(RBIMPL_CAST((long)v));
else
return rb_uint2big(v);
}
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long.h b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long.h
index 6b8fd8ffc..6c00dbceb 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long.h
@@ -114,11 +114,11 @@ RB_INT2FIX(long i)
/* :NOTE: VALUE can be wider than long. As j being unsigned, 2j+1 is fully
* defined. Also it can be compiled into a single LEA instruction. */
- const unsigned long j = i;
+ const unsigned long j = RBIMPL_CAST((unsigned long)i);
const unsigned long k = (j << 1) + RUBY_FIXNUM_FLAG;
- const long l = k;
+ const long l = RBIMPL_CAST((long)k);
const SIGNED_VALUE m = l; /* Sign extend */
- const VALUE n = m;
+ const VALUE n = RBIMPL_CAST((VALUE)m);
RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(n));
return n;
@@ -166,7 +166,7 @@ rbimpl_fix2long_by_idiv(VALUE x)
/* :NOTE: VALUE can be wider than long. (x-1)/2 never overflows because
* RB_FIXNUM_P(x) holds. Also it has no portability issue like y>>1
* below. */
- const SIGNED_VALUE y = x - RUBY_FIXNUM_FLAG;
+ const SIGNED_VALUE y = RBIMPL_CAST((SIGNED_VALUE)(x - RUBY_FIXNUM_FLAG));
const SIGNED_VALUE z = y / 2;
const long w = RBIMPL_CAST((long)z);
@@ -193,7 +193,7 @@ rbimpl_fix2long_by_shift(VALUE x)
/* :NOTE: VALUE can be wider than long. If right shift is arithmetic, this
* is noticeably faster than above. */
- const SIGNED_VALUE y = x;
+ const SIGNED_VALUE y = RBIMPL_CAST((SIGNED_VALUE)x);
const SIGNED_VALUE z = y >> 1;
const long w = RBIMPL_CAST((long)z);
@@ -252,7 +252,7 @@ static inline unsigned long
rb_fix2ulong(VALUE x)
{
RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x));
- return rb_fix2long(x);
+ return RBIMPL_CAST((unsigned long)rb_fix2long(x));
}
/**
@@ -323,7 +323,7 @@ static inline VALUE
rb_ulong2num_inline(unsigned long v)
{
if (RB_POSFIXABLE(v))
- return RB_LONG2FIX(v);
+ return RB_LONG2FIX(RBIMPL_CAST((long)v));
else
return rb_uint2big(v);
}
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long_long.h b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long_long.h
index 65dec8729..aab455c83 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long_long.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/long_long.h
@@ -127,7 +127,7 @@ static inline unsigned LONG_LONG
rb_num2ull_inline(VALUE x)
{
if (RB_FIXNUM_P(x))
- return RB_FIX2LONG(x);
+ return RBIMPL_CAST((unsigned LONG_LONG)RB_FIX2LONG(x));
else
return rb_num2ull(x);
}
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/st_data_t.h b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/st_data_t.h
index 3bff4ffc0..91776b3fc 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/st_data_t.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/arithmetic/st_data_t.h
@@ -58,7 +58,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_ST2FIX(st_data_t i)
{
- SIGNED_VALUE x = i;
+ SIGNED_VALUE x = RBIMPL_CAST((SIGNED_VALUE)i);
if (x >= 0) {
x &= RUBY_FIXNUM_MAX;
@@ -69,7 +69,7 @@ RB_ST2FIX(st_data_t i)
RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(x));
unsigned long y = RBIMPL_CAST((unsigned long)x);
- return RB_LONG2FIX(y);
+ return RB_LONG2FIX(RBIMPL_CAST((long)y));
}
#endif /* RBIMPL_ARITHMETIC_ST_DATA_T_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/attr/noexcept.h b/ThirdParty/include/ruby/mac/ruby/internal/attr/noexcept.h
index ea3001df2..7c3f92f1e 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/attr/noexcept.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/attr/noexcept.h
@@ -54,7 +54,7 @@
* get smarter and smarter. Today they can infer if it actually throws
* or not without any annotations by humans (correct me if I'm wrong).
*
- * - When an inline function attributed `noexcepr` actually _does_ throw an
+ * - When an inline function attributed `noexcept` actually _does_ throw an
* exception: they have to call `std::terminate` then (C++ standard
* mandates so). This means exception handling routines are actually
* enforced, not omitted. This doesn't impact runtime performance (The
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/attr/nonstring.h b/ThirdParty/include/ruby/mac/ruby/internal/attr/nonstring.h
new file mode 100644
index 000000000..5ad6ef2a8
--- /dev/null
+++ b/ThirdParty/include/ruby/mac/ruby/internal/attr/nonstring.h
@@ -0,0 +1,40 @@
+#ifndef RBIMPL_ATTR_NONSTRING_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_ATTR_NONSTRING_H
+/**
+ * @file
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief Defines #RBIMPL_ATTR_NONSTRING.
+ */
+#include "ruby/internal/has/attribute.h"
+
+/** Wraps (or simulates) `__attribute__((nonstring))` */
+#if RBIMPL_HAS_ATTRIBUTE(nonstring)
+# define RBIMPL_ATTR_NONSTRING() __attribute__((nonstring))
+# if RBIMPL_COMPILER_SINCE(GCC, 15, 0, 0)
+# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
+# elif RBIMPL_COMPILER_SINCE(Clang, 21, 0, 0)
+# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
+# else
+# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
+# endif
+#else
+# define RBIMPL_ATTR_NONSTRING() /* void */
+# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
+#endif
+
+#endif /* RBIMPL_ATTR_NONSTRING_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/attr/packed_struct.h b/ThirdParty/include/ruby/mac/ruby/internal/attr/packed_struct.h
new file mode 100644
index 000000000..0678b9acc
--- /dev/null
+++ b/ThirdParty/include/ruby/mac/ruby/internal/attr/packed_struct.h
@@ -0,0 +1,43 @@
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_ATTR_PACKED_STRUCT_H
+/**
+ * @file
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief Defines #RBIMPL_ATTR_PACKED_STRUCT_BEGIN,
+ * #RBIMPL_ATTR_PACKED_STRUCT_END,
+ * #RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN, and
+ * #RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END.
+ */
+#include "ruby/internal/config.h"
+
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_BEGIN
+# define RBIMPL_ATTR_PACKED_STRUCT_BEGIN() /* void */
+#endif
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_END
+# define RBIMPL_ATTR_PACKED_STRUCT_END() /* void */
+#endif
+
+#if UNALIGNED_WORD_ACCESS
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() RBIMPL_ATTR_PACKED_STRUCT_BEGIN()
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END() RBIMPL_ATTR_PACKED_STRUCT_END()
+#else
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() /* void */
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END() /* void */
+#endif
+
+#endif
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/config.h b/ThirdParty/include/ruby/mac/ruby/internal/config.h
index aa63376d7..da070f097 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/config.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/config.h
@@ -148,8 +148,4 @@
# undef RBIMPL_TEST3
#endif /* HAVE_VA_ARGS_MACRO */
-#ifndef USE_RVARGC
-# define USE_RVARGC 1
-#endif
-
#endif /* RBIMPL_CONFIG_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rarray.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rarray.h
index c3bb40be2..73cc0f5dd 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rarray.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rarray.h
@@ -29,24 +29,12 @@
#include "ruby/internal/core/rbasic.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/fl_type.h"
-#include "ruby/internal/rgengc.h"
+#include "ruby/internal/gc.h"
#include "ruby/internal/stdbool.h"
#include "ruby/internal/value.h"
#include "ruby/internal/value_type.h"
#include "ruby/assert.h"
-/**
- * @private
- * @warning Do not touch this macro.
- * @warning It is an implementation detail.
- * @warning The value of this macro must match for ruby itself and all
- * extension libraries, otherwise serious memory corruption shall
- * occur.
- */
-#ifndef USE_TRANSIENT_HEAP
-# define USE_TRANSIENT_HEAP 1
-#endif
-
/**
* Convenient casting macro.
*
@@ -59,15 +47,9 @@
#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK
#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
-#if USE_TRANSIENT_HEAP
-# define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
-#else
-# define RARRAY_TRANSIENT_FLAG 0
-#endif
/** @endcond */
#define RARRAY_LEN rb_array_len /**< @alias{rb_array_len} */
#define RARRAY_CONST_PTR rb_array_const_ptr /**< @alias{rb_array_const_ptr} */
-#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient /**< @alias{rb_array_const_ptr_transient} */
/** @cond INTERNAL_MACRO */
#if defined(__fcc__) || defined(__fcc_version) || \
@@ -80,7 +62,6 @@
#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN
#define RARRAY_LENINT RARRAY_LENINT
-#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P
#define RARRAY_ASET RARRAY_ASET
#define RARRAY_PTR RARRAY_PTR
/** @endcond */
@@ -99,6 +80,8 @@
* here is at least incomplete.
*/
enum ruby_rarray_flags {
+ /* RUBY_FL_USER0 is for ELTS_SHARED */
+
/**
* This flag has something to do with memory footprint. If the array is
* "small" enough, ruby tries to be creative to abuse padding bits of
@@ -118,8 +101,6 @@ enum ruby_rarray_flags {
*/
RARRAY_EMBED_FLAG = RUBY_FL_USER1,
- /* RUBY_FL_USER2 is for ELTS_SHARED */
-
/**
* When an array employs embedded strategy (see ::RARRAY_EMBED_FLAG), these
* bits are used to store the number of elements actually filled into
@@ -130,30 +111,8 @@ enum ruby_rarray_flags {
* 3rd parties must not be aware that there even is more than one way to
* store array elements. It was a bad idea to expose this to them.
*/
-#if USE_RVARGC
RARRAY_EMBED_LEN_MASK = RUBY_FL_USER9 | RUBY_FL_USER8 | RUBY_FL_USER7 | RUBY_FL_USER6 |
RUBY_FL_USER5 | RUBY_FL_USER4 | RUBY_FL_USER3
-#else
- RARRAY_EMBED_LEN_MASK = RUBY_FL_USER4 | RUBY_FL_USER3
-#endif
-
-#if USE_TRANSIENT_HEAP
- ,
-
- /**
- * This flag has something to do with an array's "transiency". A transient
- * array is an array of young generation (of generational GC), who stores
- * its elements inside of dedicated memory pages called a transient heap.
- * Not every young generation share that storage scheme, but elder
- * generations must no join.
- *
- * @internal
- *
- * 3rd parties must not be aware that there even is more than one way to
- * store array elements. It was a bad idea to expose this to them.
- */
- RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13
-#endif
};
/**
@@ -163,13 +122,6 @@ enum ruby_rarray_flags {
enum ruby_rarray_consts {
/** Where ::RARRAY_EMBED_LEN_MASK resides. */
RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3
-
-#if !USE_RVARGC
- ,
-
- /** Max possible number elements that can be embedded. */
- RARRAY_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE)
-#endif
};
/** Ruby's array. */
@@ -228,16 +180,12 @@ struct RArray {
* to store its elements. In this case the length is encoded into the
* flags.
*/
-#if USE_RVARGC
/* This is a length 1 array because:
* 1. GCC has a bug that does not optimize C flexible array members
* (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452)
* 2. Zero length arrays are not supported by all compilers
*/
const VALUE ary[1];
-#else
- const VALUE ary[RARRAY_EMBED_LEN_MAX];
-#endif
} as;
};
@@ -264,16 +212,6 @@ VALUE *rb_ary_ptr_use_start(VALUE ary);
*/
void rb_ary_ptr_use_end(VALUE a);
-#if USE_TRANSIENT_HEAP
-/**
- * Destructively converts an array of transient backend into ordinal one.
- *
- * @param[out] a An object of ::RArray.
- * @pre `a` must be a transient array.
- * @post `a` gets out of transient heap, destructively.
- */
-void rb_ary_detransient(VALUE a);
-#endif
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
@@ -345,33 +283,6 @@ RARRAY_LENINT(VALUE ary)
return rb_long2int(RARRAY_LEN(ary));
}
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Queries if the array is a transient array.
- *
- * @param[in] ary Array in question.
- * @retval true Yes it is.
- * @retval false No it isn't.
- * @pre `ary` must be an instance of ::RArray.
- *
- * @internal
- *
- * @shyouhei doesn't understand the benefit of this function called from
- * extension libraries.
- */
-static inline bool
-RARRAY_TRANSIENT_P(VALUE ary)
-{
- RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG);
-#else
- return false;
-#endif
-}
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
/**
* @private
@@ -383,7 +294,7 @@ RBIMPL_ATTR_PURE_UNLESS_DEBUG()
* @return Its backend storage.
*/
static inline const VALUE *
-rb_array_const_ptr_transient(VALUE a)
+rb_array_const_ptr(VALUE a)
{
RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
@@ -395,101 +306,20 @@ rb_array_const_ptr_transient(VALUE a)
}
}
-#if ! USE_TRANSIENT_HEAP
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-#endif
-/**
- * @private
- *
- * This is an implementation detail of RARRAY_PTR(). People do not use it
- * directly.
- *
- * @param[in] a An object of ::RArray.
- * @return Its backend storage.
- * @post `a` is not a transient array.
- */
-static inline const VALUE *
-rb_array_const_ptr(VALUE a)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
-#endif
- return rb_array_const_ptr_transient(a);
-}
-
/**
* @private
*
* This is an implementation detail of #RARRAY_PTR_USE. People do not use it
* directly.
- *
- * @param[in] a An object of ::RArray.
- * @param[in] allow_transient Whether `a` can be transient or not.
- * @return Its backend storage.
- * @post `a` is not a transient array unless `allow_transient`.
*/
-static inline VALUE *
-rb_array_ptr_use_start(VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int allow_transient)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- if (!allow_transient) {
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- }
-#endif
-
- return rb_ary_ptr_use_start(a);
-}
-
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- *
- * @param[in] a An object of ::RArray.
- * @param[in] allow_transient Whether `a` can be transient or not.
- */
-static inline void
-rb_array_ptr_use_end(VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int allow_transient)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
- rb_ary_ptr_use_end(a);
-}
-
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- */
-#define RBIMPL_RARRAY_STMT(flag, ary, var, expr) do { \
+#define RBIMPL_RARRAY_STMT(ary, var, expr) do { \
RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); \
const VALUE rbimpl_ary = (ary); \
- VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); \
+ VALUE *var = rb_ary_ptr_use_start(rbimpl_ary); \
expr; \
- rb_array_ptr_use_end(rbimpl_ary, (flag)); \
+ rb_ary_ptr_use_end(rbimpl_ary); \
} while (0)
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- */
-#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
-
/**
* Declares a section of code where raw pointers are used. In case you need to
* touch the raw C array instead of polite CAPIs, then that operation shall be
@@ -516,21 +346,11 @@ rb_array_ptr_use_end(VALUE a,
* them use it... Maybe some transition path can be implemented later.
*/
#define RARRAY_PTR_USE(ary, ptr_name, expr) \
- RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr)
-
-/**
- * Identical to #RARRAY_PTR_USE, except the pointer can be a transient one.
- *
- * @param ary An object of ::RArray.
- * @param ptr_name A variable name which points the C array in `expr`.
- * @param expr The expression that touches `ptr_name`.
- */
-#define RARRAY_PTR_USE_TRANSIENT(ary, ptr_name, expr) \
- RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr)
+ RBIMPL_RARRAY_STMT(ary, ptr_name, expr)
/**
* Wild use of a C pointer. This function accesses the backend storage
- * directly. This is slower than #RARRAY_PTR_USE_TRANSIENT. It exercises
+ * directly. This is slower than #RARRAY_PTR_USE. It exercises
* extra manoeuvres to protect our generational GC. Use of this function is
* considered archaic. Use a modern way instead.
*
@@ -565,7 +385,7 @@ RARRAY_PTR(VALUE ary)
static inline void
RARRAY_ASET(VALUE ary, long i, VALUE v)
{
- RARRAY_PTR_USE_TRANSIENT(ary, ptr,
+ RARRAY_PTR_USE(ary, ptr,
RB_OBJ_WRITE(ary, &ptr[i], v));
}
@@ -580,6 +400,6 @@ RARRAY_ASET(VALUE ary, long i, VALUE v)
* remains as it is due to that. If we could warn such usages we can set a
* transition path, but currently no way is found to do so.
*/
-#define RARRAY_AREF(a, i) RARRAY_CONST_PTR_TRANSIENT(a)[i]
+#define RARRAY_AREF(a, i) RARRAY_CONST_PTR(a)[i]
#endif /* RBIMPL_RARRAY_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rbasic.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rbasic.h
index 4617f743a..b3c9af042 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rbasic.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rbasic.h
@@ -56,22 +56,20 @@ enum ruby_rvalue_flags {
};
/**
- * Ruby's object's, base components. Every single ruby objects have them in
- * common.
+ * Ruby object's base components. All Ruby objects have them in common.
*/
struct
RUBY_ALIGNAS(SIZEOF_VALUE)
RBasic {
/**
- * Per-object flags. Each ruby objects have their own characteristics
- * apart from their classes. For instance whether an object is frozen or
- * not is not controlled by its class. This is where such properties are
- * stored.
+ * Per-object flags. Each Ruby object has its own characteristics apart
+ * from its class. For instance, whether an object is frozen or not is not
+ * controlled by its class. This is where such properties are stored.
*
* @see enum ::ruby_fl_type
*
- * @note This is ::VALUE rather than an enum for alignment purpose. Back
+ * @note This is ::VALUE rather than an enum for alignment purposes. Back
* in the 1990s there were no such thing like `_Alignas` in C.
*/
VALUE flags;
@@ -79,10 +77,10 @@ RBasic {
/**
* Class of an object. Every object has its class. Also, everything is an
* object in Ruby. This means classes are also objects. Classes have
- * their own classes, classes of classes have their classes, too ... and
- * it recursively continues forever.
+ * their own classes, classes of classes have their classes too, and it
+ * recursively continues forever.
*
- * Also note the `const` qualifier. In ruby an object cannot "change" its
+ * Also note the `const` qualifier. In Ruby, an object cannot "change" its
* class.
*/
const VALUE klass;
@@ -104,6 +102,9 @@ RBasic {
klass(RBIMPL_VALUE_NULL)
{
}
+# define RBASIC_INIT RBasic()
+#else
+# define RBASIC_INIT {RBIMPL_VALUE_NULL}
#endif
};
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rdata.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rdata.h
index 43ab3c01e..e4c146a71 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rdata.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rdata.h
@@ -37,12 +37,8 @@
#include "ruby/defines.h"
/** @cond INTERNAL_MACRO */
-#ifdef RUBY_UNTYPED_DATA_WARNING
-# /* Take that. */
-#elif defined(RUBY_EXPORT)
-# define RUBY_UNTYPED_DATA_WARNING 1
-#else
-# define RUBY_UNTYPED_DATA_WARNING 0
+#ifndef RUBY_UNTYPED_DATA_WARNING
+#define RUBY_UNTYPED_DATA_WARNING 1
#endif
#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f))
@@ -331,15 +327,6 @@ rb_data_object_get_warning(VALUE obj)
return rb_data_object_get(obj);
}
-#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P)
-# define rb_data_object_wrap_warning(klass, ptr, mark, free) \
- RB_GNUC_EXTENSION( \
- __builtin_choose_expr( \
- __builtin_constant_p(klass) && !(klass), \
- rb_data_object_wrap(klass, ptr, mark, free), \
- (rb_data_object_wrap_warning)(klass, ptr, mark, free)))
-#endif
-
/**
* This is an implementation detail of #Data_Make_Struct. People don't use it
* directly.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rfile.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rfile.h
index f8dddde9e..a0eb8cb83 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rfile.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rfile.h
@@ -25,7 +25,7 @@
/* rb_io_t is in ruby/io.h. The header file has historically not been included
* into ruby/ruby.h. We follow that tradition. */
-struct rb_io_t;
+struct rb_io;
/**
* Ruby's File and IO. Ruby's IO are not just file descriptors. They have
@@ -38,7 +38,7 @@ struct RFile {
struct RBasic basic;
/** IO's specific fields. */
- struct rb_io_t *fptr;
+ struct rb_io *fptr;
};
/**
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rhash.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rhash.h
index 61d2c15d8..897c57079 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rhash.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rhash.h
@@ -45,19 +45,6 @@
*/
#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- *
- * @internal
- *
- * Declaration of rb_hash_iter_lev() is at include/ruby/backward.h.
- */
-#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
-
/**
* @private
*
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rmatch.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rmatch.h
index 2d2fd897f..a528c2999 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rmatch.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rmatch.h
@@ -68,7 +68,7 @@ struct rmatch_offset {
};
/** Represents a match. */
-struct rmatch {
+struct rb_matchext_struct {
/**
* "Registers" of a match. This is a quasi-opaque struct that holds
* execution result of a match. Roughly resembles `&~`.
@@ -82,6 +82,8 @@ struct rmatch {
int char_offset_num_allocated;
};
+typedef struct rb_matchext_struct rb_matchext_t;
+
/**
* Regular expression execution context. When a regular expression "matches"
* to a string, it generates capture groups etc. This struct holds that info.
@@ -101,17 +103,14 @@ struct RMatch {
*/
VALUE str;
- /**
- * The result of this match.
- */
- struct rmatch *rmatch;
-
/**
* The expression of this match.
*/
VALUE regexp; /* RRegexp */
};
+#define RMATCH_EXT(m) ((rb_matchext_t *)((char *)(m) + sizeof(struct RMatch)))
+
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -139,8 +138,7 @@ static inline struct re_registers *
RMATCH_REGS(VALUE match)
{
RBIMPL_ASSERT_TYPE(match, RUBY_T_MATCH);
- RBIMPL_ASSERT_OR_ASSUME(RMATCH(match)->rmatch != NULL);
- return &RMATCH(match)->rmatch->regs;
+ return &RMATCH_EXT(match)->regs;
}
#endif /* RBIMPL_RMATCH_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/robject.h b/ThirdParty/include/ruby/mac/ruby/internal/core/robject.h
index b1c2e1b0a..c2bcae630 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/robject.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/robject.h
@@ -74,17 +74,6 @@ enum ruby_robject_flags {
ROBJECT_EMBED = RUBY_FL_USER1
};
-#if !USE_RVARGC
-/**
- * This is an enum because GDB wants it (rather than a macro). People need not
- * bother.
- */
-enum ruby_robject_consts {
- /** Max possible number of instance variables that can be embedded. */
- ROBJECT_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE)
-};
-#endif
-
struct st_table;
/**
@@ -118,7 +107,6 @@ struct RObject {
struct rb_id_table *iv_index_tbl;
} heap;
-#if USE_RVARGC
/* Embedded instance variables. When an object is small enough, it
* uses this area to store the instance variables.
*
@@ -128,23 +116,9 @@ struct RObject {
* 2. Zero length arrays are not supported by all compilers
*/
VALUE ary[1];
-#else
- /**
- * Embedded instance variables. When an object is small enough, it
- * uses this area to store the instance variables.
- */
- VALUE ary[ROBJECT_EMBED_LEN_MAX];
-#endif
} as;
};
-/* Offsets for YJIT */
-#ifndef __cplusplus
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IVPTR = offsetof(struct RObject, as.heap.ivptr);
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IV_INDEX_TBL = offsetof(struct RObject, as.heap.iv_index_tbl);
-static const int32_t ROBJECT_OFFSET_AS_ARY = offsetof(struct RObject, as.ary);
-#endif
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rstring.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rstring.h
index e394ab7dc..35175ea94 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rstring.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rstring.h
@@ -42,13 +42,7 @@
/** @cond INTERNAL_MACRO */
#define RSTRING_NOEMBED RSTRING_NOEMBED
-#if !USE_RVARGC
-#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
-#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
-#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
-#endif
#define RSTRING_FSTR RSTRING_FSTR
-#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN
#define RSTRING_LEN RSTRING_LEN
#define RSTRING_LENINT RSTRING_LENINT
#define RSTRING_PTR RSTRING_PTR
@@ -162,21 +156,6 @@ enum ruby_rstring_flags {
*/
RSTRING_NOEMBED = RUBY_FL_USER1,
-#if !USE_RVARGC
- /**
- * When a string employs embedded strategy (see ::RSTRING_NOEMBED), these
- * bits are used to store the number of bytes actually filled into
- * ::RString::ary.
- *
- * @internal
- *
- * 3rd parties must not be aware that there even is more than one way to
- * store a string. Might better be hidden.
- */
- RSTRING_EMBED_LEN_MASK = RUBY_FL_USER2 | RUBY_FL_USER3 | RUBY_FL_USER4 |
- RUBY_FL_USER5 | RUBY_FL_USER6,
-#endif
-
/* Actually, string encodings are also encoded into the flags, using
* remaining bits.*/
@@ -202,20 +181,6 @@ enum ruby_rstring_flags {
RSTRING_FSTR = RUBY_FL_USER17
};
-#if !USE_RVARGC
-/**
- * This is an enum because GDB wants it (rather than a macro). People need not
- * bother.
- */
-enum ruby_rstring_consts {
- /** Where ::RSTRING_EMBED_LEN_MASK resides. */
- RSTRING_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 2,
-
- /** Max possible number of characters that can be embedded. */
- RSTRING_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(char) - 1
-};
-#endif
-
/**
* Ruby's String. A string in ruby conceptually has these information:
*
@@ -233,6 +198,13 @@ struct RString {
/** Basic part, including flags and class. */
struct RBasic basic;
+ /**
+ * Length of the string, not including terminating NUL character.
+ *
+ * @note This is in bytes.
+ */
+ long len;
+
/** String's specific fields. */
union {
@@ -241,14 +213,6 @@ struct RString {
* pattern.
*/
struct {
-
- /**
- * Length of the string, not including terminating NUL character.
- *
- * @note This is in bytes.
- */
- long len;
-
/**
* Pointer to the contents of the string. In the old days each
* string had dedicated memory regions. That is no longer true
@@ -279,24 +243,12 @@ struct RString {
/** Embedded contents. */
struct {
-#if USE_RVARGC
- long len;
/* This is a length 1 array because:
* 1. GCC has a bug that does not optimize C flexible array members
* (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452)
* 2. Zero length arrays are not supported by all compilers
*/
char ary[1];
-#else
- /**
- * When a string is short enough, it uses this area to store the
- * contents themselves. This was impractical in the 20th century,
- * but these days 64 bit machines can typically hold 24 bytes here.
- * Could be sufficiently large. In this case the length is encoded
- * into the flags.
- */
- char ary[RSTRING_EMBED_LEN_MAX + 1];
-#endif
} embed;
} as;
};
@@ -402,75 +354,6 @@ void rb_check_safe_str(VALUE);
void rb_debug_rstring_null_ptr(const char *func);
RBIMPL_SYMBOL_EXPORT_END()
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Queries the length of the string.
- *
- * @param[in] str String in question.
- * @return Its length, in bytes.
- * @pre `str` must be an instance of ::RString, and must has its
- * ::RSTRING_NOEMBED flag off.
- *
- * @internal
- *
- * This was a macro before. It was inevitable to be public, since macros are
- * global constructs. But should it be forever? Now that it is a function,
- * @shyouhei thinks it could just be eliminated, hidden into implementation
- * details.
- */
-static inline long
-RSTRING_EMBED_LEN(VALUE str)
-{
- RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING);
- RBIMPL_ASSERT_OR_ASSUME(! RB_FL_ANY_RAW(str, RSTRING_NOEMBED));
-
-#if USE_RVARGC
- long f = RSTRING(str)->as.embed.len;
- return f;
-#else
- VALUE f = RBASIC(str)->flags;
- f &= RSTRING_EMBED_LEN_MASK;
- f >>= RSTRING_EMBED_LEN_SHIFT;
- return RBIMPL_CAST((long)f);
-#endif
-}
-
-RBIMPL_WARNING_PUSH()
-#if RBIMPL_COMPILER_IS(Intel)
-RBIMPL_WARNING_IGNORED(413)
-#endif
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * @private
- *
- * "Expands" an embedded string into an ordinal one. This is a function that
- * returns aggregated type. The returned struct always has its `as.heap.len`
- * an `as.heap.ptr` fields set appropriately.
- *
- * This is an implementation detail that 3rd parties should never bother.
- */
-static inline struct RString
-rbimpl_rstring_getmem(VALUE str)
-{
- RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING);
-
- if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) {
- return *RSTRING(str);
- }
- else {
- /* Expecting compilers to optimize this on-stack struct away. */
- struct RString retval;
- retval.as.heap.len = RSTRING_EMBED_LEN(str);
- retval.as.heap.ptr = RSTRING(str)->as.embed.ary;
- return retval;
- }
-}
-
-RBIMPL_WARNING_POP()
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -483,7 +366,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline long
RSTRING_LEN(VALUE str)
{
- return rbimpl_rstring_getmem(str).as.heap.len;
+ return RSTRING(str)->len;
}
RBIMPL_ATTR_ARTIFICIAL()
@@ -497,15 +380,13 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline char *
RSTRING_PTR(VALUE str)
{
- char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr;
+ char *ptr = RB_FL_TEST_RAW(str, RSTRING_NOEMBED) ?
+ RSTRING(str)->as.heap.ptr :
+ RSTRING(str)->as.embed.ary;
- if (RB_UNLIKELY(! ptr)) {
+ if (RUBY_DEBUG && RB_UNLIKELY(! ptr)) {
/* :BEWARE: @shyouhei thinks that currently, there are rooms for this
- * function to return NULL. In the 20th century that was a pointless
- * concern. However struct RString can hold fake strings nowadays. It
- * seems no check against NULL are exercised around handling of them
- * (one of such usages is located in marshal.c, which scares
- * @shyouhei). Better check here for maximum safety.
+ * function to return NULL. Better check here for maximum safety.
*
* Also, this is not rb_warn() because RSTRING_PTR() can be called
* during GC (see what obj_info() does). rb_warn() needs to allocate
@@ -527,14 +408,17 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline char *
RSTRING_END(VALUE str)
{
- struct RString buf = rbimpl_rstring_getmem(str);
+ char *ptr = RB_FL_TEST_RAW(str, RSTRING_NOEMBED) ?
+ RSTRING(str)->as.heap.ptr :
+ RSTRING(str)->as.embed.ary;
+ long len = RSTRING_LEN(str);
- if (RB_UNLIKELY(! buf.as.heap.ptr)) {
+ if (RUBY_DEBUG && RB_UNLIKELY(!ptr)) {
/* Ditto. */
rb_debug_rstring_null_ptr("RSTRING_END");
}
- return &buf.as.heap.ptr[buf.as.heap.len];
+ return &ptr[len];
}
RBIMPL_ATTR_ARTIFICIAL()
@@ -563,16 +447,7 @@ RSTRING_LENINT(VALUE str)
* @param ptrvar Variable where its contents is stored.
* @param lenvar Variable where its length is stored.
*/
-#ifdef HAVE_STMT_AND_DECL_IN_EXPR
-# define RSTRING_GETMEM(str, ptrvar, lenvar) \
- __extension__ ({ \
- struct RString rbimpl_str = rbimpl_rstring_getmem(str); \
- (ptrvar) = rbimpl_str.as.heap.ptr; \
- (lenvar) = rbimpl_str.as.heap.len; \
- })
-#else
# define RSTRING_GETMEM(str, ptrvar, lenvar) \
((ptrvar) = RSTRING_PTR(str), \
(lenvar) = RSTRING_LEN(str))
-#endif /* HAVE_STMT_AND_DECL_IN_EXPR */
#endif /* RBIMPL_RSTRING_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/core/rtypeddata.h b/ThirdParty/include/ruby/mac/ruby/internal/core/rtypeddata.h
index bbf208867..6c19576c2 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/core/rtypeddata.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/core/rtypeddata.h
@@ -114,6 +114,8 @@
#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
/** @endcond */
+#define TYPED_DATA_EMBEDDED 2
+
/**
* @private
*
@@ -137,6 +139,8 @@ rbimpl_typeddata_flags {
*/
RUBY_TYPED_FREE_IMMEDIATELY = 1,
+ RUBY_TYPED_EMBEDDABLE = 2,
+
/**
* This flag has something to do with Ractor. Multiple Ractors run without
* protecting each other. Sharing an object among Ractors is basically
@@ -173,10 +177,16 @@ rbimpl_typeddata_flags {
RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED, /* THIS FLAG DEPENDS ON Ruby version */
/**
- * This flag is mysterious. It seems nobody is currently using it. The
- * intention of this flag is also unclear. We need further investigations.
+ * This flag no longer in use
*/
- RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1 /* THIS FLAG DEPENDS ON Ruby version */
+ RUBY_TYPED_UNUSED = RUBY_FL_UNUSED6,
+
+ /**
+ * This flag determines whether marking and compaction should be carried out
+ * using the dmark/dcompact callback functions or whether we should mark
+ * declaratively using a list of references defined inside the data struct we're wrapping
+ */
+ RUBY_TYPED_DECL_MARKING = RUBY_FL_USER2
};
/**
@@ -347,16 +357,14 @@ struct RTypedData {
* data. This roughly resembles a Ruby level class (apart from method
* definition etc.)
*/
- const rb_data_type_t *type;
+ const rb_data_type_t *const type;
/**
* This has to be always 1.
*
* @internal
- *
- * Why, then, this is not a const ::VALUE?
*/
- VALUE typed_flag;
+ const VALUE typed_flag;
/** Pointer to the actual C level struct that you want to wrap. */
void *data;
@@ -456,7 +464,7 @@ RBIMPL_SYMBOL_EXPORT_END()
*/
#define TypedData_Make_Struct0(result, klass, type, size, data_type, sval) \
VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); \
- (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); \
+ (sval) = (type *)RTYPEDDATA_GET_DATA(result); \
RBIMPL_CAST(/*suppress unused variable warnings*/(void)(sval))
/**
@@ -507,6 +515,36 @@ RBIMPL_SYMBOL_EXPORT_END()
#define TypedData_Get_Struct(obj,type,data_type,sval) \
((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type))))
+static inline bool
+RTYPEDDATA_EMBEDDED_P(VALUE obj)
+{
+#if RUBY_DEBUG
+ if (RB_UNLIKELY(!RB_TYPE_P(obj, RUBY_T_DATA))) {
+ Check_Type(obj, RUBY_T_DATA);
+ RBIMPL_UNREACHABLE_RETURN(false);
+ }
+#endif
+
+ return RTYPEDDATA(obj)->typed_flag & TYPED_DATA_EMBEDDED;
+}
+
+static inline void *
+RTYPEDDATA_GET_DATA(VALUE obj)
+{
+#if RUBY_DEBUG
+ if (RB_UNLIKELY(!RB_TYPE_P(obj, RUBY_T_DATA))) {
+ Check_Type(obj, RUBY_T_DATA);
+ RBIMPL_UNREACHABLE_RETURN(false);
+ }
+#endif
+
+ /* We reuse the data pointer in embedded TypedData. We can't use offsetof
+ * since RTypedData a non-POD type in C++. */
+ const size_t embedded_typed_data_size = sizeof(struct RTypedData) - sizeof(void *);
+
+ return RTYPEDDATA_EMBEDDED_P(obj) ? (char *)obj + embedded_typed_data_size : RTYPEDDATA(obj)->data;
+}
+
RBIMPL_ATTR_PURE()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -523,7 +561,8 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline bool
rbimpl_rtypeddata_p(VALUE obj)
{
- return RTYPEDDATA(obj)->typed_flag == 1;
+ VALUE typed_flag = RTYPEDDATA(obj)->typed_flag;
+ return typed_flag != 0 && typed_flag <= 3;
}
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/dllexport.h b/ThirdParty/include/ruby/mac/ruby/internal/dllexport.h
index 08a262209..71026e710 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/dllexport.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/dllexport.h
@@ -37,9 +37,7 @@
* ```
*/
#undef RUBY_EXTERN
-#if defined(MJIT_HEADER) && defined(_WIN32)
-# define RUBY_EXTERN extern __declspec(dllimport)
-#elif defined(RUBY_EXPORT)
+#if defined(RUBY_EXPORT)
# define RUBY_EXTERN extern
#elif defined(_WIN32)
# define RUBY_EXTERN extern __declspec(dllimport)
@@ -59,36 +57,6 @@
# define RUBY_FUNC_EXPORTED /* void */
#endif
-/**
- * @cond INTERNAL_MACRO
- *
- * These MJIT related macros are placed here because translate_mjit_header can
- * need them. Extension libraries should not touch.
- */
-
-/* These macros are used for functions which are exported only for MJIT
- and NOT ensured to be exported in future versions. */
-
-#if ! defined(MJIT_HEADER)
-# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#elif ! RBIMPL_COMPILER_IS(MSVC)
-# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#else
-# define MJIT_FUNC_EXPORTED static
-#endif
-
-#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
-#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
-
-/* On mswin, MJIT header transformation can't be used since cl.exe can't output
- preprocessed output preserving macros. So this `MJIT_STATIC` is needed
- to force non-static function to static on MJIT header to avoid symbol conflict. */
-#ifdef MJIT_HEADER
-# define MJIT_STATIC static
-#else
-# define MJIT_STATIC
-#endif
-
/** @endcond */
/** Shortcut macro equivalent to `RUBY_SYMBOL_EXPORT_BEGIN extern "C" {`.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/encoding/encoding.h b/ThirdParty/include/ruby/mac/ruby/internal/encoding/encoding.h
index 4748ca806..a58f9f2b1 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/encoding/encoding.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/encoding/encoding.h
@@ -28,6 +28,7 @@
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/returns_nonnull.h"
#include "ruby/internal/dllexport.h"
+#include "ruby/internal/encoding/coderange.h"
#include "ruby/internal/value.h"
#include "ruby/internal/core/rbasic.h"
#include "ruby/internal/fl_type.h"
@@ -79,7 +80,7 @@ enum ruby_encoding_consts {
static inline void
RB_ENCODING_SET_INLINED(VALUE obj, int encindex)
{
- VALUE f = /* upcast */ encindex;
+ VALUE f = /* upcast */ RBIMPL_CAST((VALUE)encindex);
f <<= RUBY_ENCODING_SHIFT;
RB_FL_UNSET_RAW(obj, RUBY_ENCODING_MASK);
@@ -138,23 +139,6 @@ RBIMPL_ATTR_NOALIAS()
*/
int rb_char_to_option_kcode(int c, int *option, int *kcode);
-/**
- * Creates a new encoding, using the passed one as a template.
- *
- * @param[in] name Name of the creating encoding.
- * @param[in] src Template.
- * @exception rb_eArgError Duplicated or malformed `name`.
- * @return Replicated new encoding's index.
- * @post Encoding named `name` is created as a copy of `src`, whose index
- * is the return value.
- *
- * @internal
- *
- * `name` can be `NULL`, but that just raises an exception. OTOH it seems no
- * sanity check is done against `src`...?
- */
-int rb_enc_replicate(const char *name, rb_encoding *src);
-
/**
* Creates a new "dummy" encoding. Roughly speaking, an encoding is dummy when
* it is stateful. Notable example of dummy encoding are those defined in
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/encoding/string.h b/ThirdParty/include/ruby/mac/ruby/internal/encoding/string.h
index 6ed7ca1c9..2cfa91c01 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/encoding/string.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/encoding/string.h
@@ -30,7 +30,7 @@
RBIMPL_SYMBOL_EXPORT_BEGIN()
/**
- * Identical to rb_enc_str_new(), except it additionally takes an encoding.
+ * Identical to rb_str_new(), except it additionally takes an encoding.
*
* @param[in] ptr A memory region of `len` bytes length.
* @param[in] len Length of `ptr`, in bytes, not including the
@@ -307,13 +307,13 @@ RBIMPL_ATTR_NONNULL(())
/**
* Looks for the passed string in the passed buffer.
*
- * @param[in] x Buffer that potentially includes `y`.
+ * @param[in] x Query string.
* @param[in] m Number of bytes of `x`.
- * @param[in] y Query string.
+ * @param[in] y Buffer that potentially includes `x`.
* @param[in] n Number of bytes of `y`.
* @param[in] enc Encoding of both `x` and `y`.
* @retval -1 Not found.
- * @retval otherwise Found index in `x`.
+ * @retval otherwise Found index in `y`.
* @note This API can match at a non-character-boundary.
*/
long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/error.h b/ThirdParty/include/ruby/mac/ruby/internal/error.h
index 49e2276cb..3ff885b2b 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/error.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/error.h
@@ -50,7 +50,23 @@ typedef enum {
/** Warning is for experimental features. */
RB_WARN_CATEGORY_EXPERIMENTAL,
- RB_WARN_CATEGORY_ALL_BITS = 0x6 /* no RB_WARN_CATEGORY_NONE bit */
+ /** Warning is for performance issues (not enabled by -w). */
+ RB_WARN_CATEGORY_PERFORMANCE,
+
+ /** Warning is for checking unused block strictly */
+ RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK,
+
+ RB_WARN_CATEGORY_DEFAULT_BITS = (
+ (1U << RB_WARN_CATEGORY_DEPRECATED) |
+ (1U << RB_WARN_CATEGORY_EXPERIMENTAL) |
+ 0),
+
+ RB_WARN_CATEGORY_ALL_BITS = (
+ (1U << RB_WARN_CATEGORY_DEPRECATED) |
+ (1U << RB_WARN_CATEGORY_EXPERIMENTAL) |
+ (1U << RB_WARN_CATEGORY_PERFORMANCE) |
+ (1U << RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK) |
+ 0)
} rb_warning_category_t;
/** for rb_readwrite_sys_fail first argument */
@@ -469,7 +485,7 @@ VALUE *rb_ruby_debug_ptr(void);
*/
#define ruby_debug (*rb_ruby_debug_ptr())
-/* reports if `-W' specified */
+/* reports if $VERBOSE is true */
RBIMPL_ATTR_NONNULL((1))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
/**
@@ -484,7 +500,8 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
* default, the method just emits its passed contents to ::rb_stderr using
* rb_io_write().
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE, it does
+ * nothing unless $VERBOSE is true.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*
* @internal
@@ -509,7 +526,7 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
* Issues a compile-time warning that happens at `__file__:__line__`. Purpose
* of this function being exposed to CAPI is unclear.
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE.
* @param[in] file The path corresponding to Ruby level `__FILE__`.
* @param[in] line The number corresponding to Ruby level `__LINE__`.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
@@ -522,19 +539,20 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
* Identical to rb_sys_fail(), except it does not raise an exception to render
* a warning instead.
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*/
void rb_sys_warning(const char *fmt, ...);
-/* reports always */
+/* reports if $VERBOSE is not nil (so if it is true or false) */
RBIMPL_ATTR_COLD()
RBIMPL_ATTR_NONNULL((1))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
/**
- * Identical to rb_warning(), except it reports always regardless of runtime
- * `-W` flag.
+ * Identical to rb_warning(), except it reports unless $VERBOSE is nil.
*
+ * @note This function is affected by the value of $VERBOSE, it does
+ * nothing if $VERBOSE is nil.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*/
void rb_warn(const char *fmt, ...);
@@ -543,8 +561,7 @@ RBIMPL_ATTR_COLD()
RBIMPL_ATTR_NONNULL((2))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3)
/**
- * Identical to rb_category_warning(), except it reports always regardless of
- * runtime `-W` flag.
+ * Identical to rb_category_warning(), except it reports unless $VERBOSE is nil.
*
* @param[in] cat Category e.g. deprecated.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
@@ -554,8 +571,7 @@ void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...);
RBIMPL_ATTR_NONNULL((1, 3))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
/**
- * Identical to rb_compile_warning(), except it reports always regardless of
- * runtime `-W` flag.
+ * Identical to rb_compile_warning(), except it reports unless $VERBOSE is nil.
*
* @param[in] file The path corresponding to Ruby level `__FILE__`.
* @param[in] line The number corresponding to Ruby level `__LINE__`.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/event.h b/ThirdParty/include/ruby/mac/ruby/internal/event.h
index 04b137a19..1d194ed61 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/event.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/event.h
@@ -23,6 +23,10 @@
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
+#ifdef HAVE_STDINT_H
+#include
+#endif
+
/* These macros are not enums because they are wider than int.*/
/**
@@ -54,6 +58,7 @@
#define RUBY_EVENT_THREAD_END 0x0800 /**< Encountered an end of a thread. */
#define RUBY_EVENT_FIBER_SWITCH 0x1000 /**< Encountered a `Fiber#yield`. */
#define RUBY_EVENT_SCRIPT_COMPILED 0x2000 /**< Encountered an `eval`. */
+#define RUBY_EVENT_RESCUE 0x4000 /**< Encountered a `rescue` statement. */
#define RUBY_EVENT_TRACEPOINT_ALL 0xffff /**< Bitmask of extended events. */
/** @} */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/fl_type.h b/ThirdParty/include/ruby/mac/ruby/internal/fl_type.h
index 7383426b2..f80f65ef8 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/fl_type.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/fl_type.h
@@ -57,8 +57,7 @@
#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON) /**< @old{RUBY_FL_SINGLETON} */
#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED) /**< @old{RUBY_FL_WB_PROTECTED} */
-#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0) /**< @old{RUBY_FL_PROMOTED0} */
-#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1) /**< @old{RUBY_FL_PROMOTED1} */
+#define FL_PROMOTED RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED) /**< @old{RUBY_FL_PROMOTED} */
#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE) /**< @old{RUBY_FL_FINALIZE} */
#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT) /**< @old{RUBY_FL_TAINT} */
#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE) /**< @old{RUBY_FL_SHAREABLE} */
@@ -111,13 +110,6 @@
#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
#define RB_OBJ_FROZEN RB_OBJ_FROZEN
#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define RB_OBJ_INFECT RB_OBJ_INFECT
-#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define RB_OBJ_TAINT RB_OBJ_TAINT
-#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define RB_OBJ_TAINTED RB_OBJ_TAINTED
-#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
#define RB_OBJ_UNTRUST RB_OBJ_TAINT
#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED
/** @endcond */
@@ -207,12 +199,15 @@ ruby_fl_type {
RUBY_FL_WB_PROTECTED = (1<<5),
/**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced promotion i.e. survived a garbage collection.
+ * Ruby objects are "generational". There are young objects & old objects.
+ * Young objects are prone to die & monitored relatively extensively by the
+ * garbage collector. Old objects tend to live longer & are monitored less
+ * frequently. When an object survives a GC, its age is incremented. When
+ * age is equal to RVALUE_OLD_AGE, the object becomes Old. This flag is set
+ * when an object becomes old, and is used by the write barrier to check if
+ * an old object should be considered for marking more frequently - as old
+ * objects that have references added between major GCs need to be remarked
+ * to prevent the referred object being mistakenly swept.
*
* @internal
*
@@ -220,41 +215,14 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_FL_PROMOTED0 = (1<<5),
+ RUBY_FL_PROMOTED = (1<<5),
/**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced two promotions i.e. survived garbage collections
- * twice.
+ * This flag is no longer in use
*
* @internal
- *
- * But honestly, @shyouhei doesn't think this flag should be visible from
- * 3rd parties. It must be an implementation detail that they should never
- * know. Might better be hidden.
- */
- RUBY_FL_PROMOTED1 = (1<<6),
-
- /**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced promotions i.e. survived more than one garbage
- * collections.
- *
- * @internal
- *
- * But honestly, @shyouhei doesn't think this flag should be visible from
- * 3rd parties. It must be an implementation detail that they should never
- * know. Might better be hidden.
*/
- RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1,
+ RUBY_FL_UNUSED6 = (1<<6),
/**
* This flag has something to do with finalisers. A ruby object can have
@@ -283,7 +251,7 @@ ruby_fl_type {
# pragma deprecated(RUBY_FL_TAINT)
#endif
- = (1<<8),
+ = 0,
/**
* This flag has something to do with Ractor. Multiple Ractors run without
@@ -310,7 +278,7 @@ ruby_fl_type {
# pragma deprecated(RUBY_FL_UNTRUSTED)
#endif
- = (1<<8),
+ = 0,
/**
* This flag has something to do with object IDs. Unlike in the old days,
@@ -402,7 +370,7 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_ELTS_SHARED = RUBY_FL_USER2,
+ RUBY_ELTS_SHARED = RUBY_FL_USER0,
/**
* This flag has something to do with an object's class. There are kind of
@@ -427,7 +395,7 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_FL_SINGLETON = RUBY_FL_USER0,
+ RUBY_FL_SINGLETON = RUBY_FL_USER1,
};
enum {
@@ -489,7 +457,7 @@ RB_FL_ABLE(VALUE obj)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_TEST(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_TEST(). 3rd parties need not use
* this. Just always use RB_FL_TEST().
*
* @param[in] obj Object in question.
@@ -537,7 +505,7 @@ RB_FL_TEST(VALUE obj, VALUE flags)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_ANY(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_ANY(). 3rd parties need not use
* this. Just always use RB_FL_ANY().
*
* @param[in] obj Object in question.
@@ -571,7 +539,7 @@ RB_FL_ANY(VALUE obj, VALUE flags)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_ALL(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_ALL(). 3rd parties need not use
* this. Just always use RB_FL_ALL().
*
* @param[in] obj Object in question.
@@ -607,7 +575,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_SET(). 3rd parties need not use
* this. Just always use RB_FL_SET().
*
* @param[out] obj Object in question.
@@ -627,7 +595,7 @@ rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_SET(). 3rd parties need not use
* this. Just always use RB_FL_SET().
*
* @param[out] obj Object in question.
@@ -667,7 +635,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_UNSET(). 3rd parties need not use
* this. Just always use RB_FL_UNSET().
*
* @param[out] obj Object in question.
@@ -687,7 +655,7 @@ rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_UNSET(). 3rd parties need not use
* this. Just always use RB_FL_UNSET().
*
* @param[out] obj Object in question.
@@ -722,7 +690,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not
+ * This is an implementation detail of RB_FL_REVERSE(). 3rd parties need not
* use this. Just always use RB_FL_REVERSE().
*
* @param[out] obj Object in question.
@@ -742,7 +710,7 @@ rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not
+ * This is an implementation detail of RB_FL_REVERSE(). 3rd parties need not
* use this. Just always use RB_FL_REVERSE().
*
* @param[out] obj Object in question.
@@ -787,6 +755,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline bool
RB_OBJ_TAINTABLE(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -804,6 +773,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline VALUE
RB_OBJ_TAINTED_RAW(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -821,6 +791,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline bool
RB_OBJ_TAINTED(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -836,6 +807,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_TAINT_RAW(VALUE obj)
{
+ (void)obj;
return;
}
@@ -851,6 +823,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_TAINT(VALUE obj)
{
+ (void)obj;
return;
}
@@ -867,6 +840,8 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_INFECT_RAW(VALUE dst, VALUE src)
{
+ (void)dst;
+ (void)src;
return;
}
@@ -883,13 +858,15 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_INFECT(VALUE dst, VALUE src)
{
+ (void)dst;
+ (void)src;
return;
}
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_OBJ_FROZEN(). 3rd parties need not
+ * This is an implementation detail of RB_OBJ_FROZEN(). 3rd parties need not
* use this. Just always use RB_OBJ_FROZEN().
*
* @param[in] obj Object in question.
@@ -928,9 +905,21 @@ RB_OBJ_FROZEN(VALUE obj)
}
}
+RUBY_SYMBOL_EXPORT_BEGIN
+/**
+ * Prevents further modifications to the given object. ::rb_eFrozenError shall
+ * be raised if modification is attempted.
+ *
+ * @param[out] x Object in question.
+ * @exception rb_eNoMemError Failed to allocate memory for the frozen
+ * representation of the object.
+ */
+void rb_obj_freeze_inline(VALUE obj);
+RUBY_SYMBOL_EXPORT_END
+
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_OBJ_FREEZE(). 3rd parties need not
+ * This is an implementation detail of RB_OBJ_FREEZE(). 3rd parties need not
* use this. Just always use RB_OBJ_FREEZE().
*
* @param[out] obj Object in question.
@@ -938,11 +927,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline void
RB_OBJ_FREEZE_RAW(VALUE obj)
{
- RB_FL_SET_RAW(obj, RUBY_FL_FREEZE);
+ rb_obj_freeze_inline(obj);
}
-RUBY_SYMBOL_EXPORT_BEGIN
-void rb_obj_freeze_inline(VALUE obj);
-RUBY_SYMBOL_EXPORT_END
-
#endif /* RBIMPL_FL_TYPE_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/gc.h b/ThirdParty/include/ruby/mac/ruby/internal/gc.h
index 66fc14e51..5ab3bb266 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/gc.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/gc.h
@@ -20,16 +20,379 @@
* extension libraries. They could be written in C++98.
* @brief Registering values to the GC.
*/
+#include "ruby/internal/config.h"
+
+#ifdef STDC_HEADERS
+# include /* size_t */
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+# include /* ssize_t */
+#endif
+
+#include "ruby/assert.h"
+#include "ruby/internal/attr/cold.h"
+#include "ruby/internal/attr/nonnull.h"
+#include "ruby/internal/attr/noreturn.h"
+#include "ruby/internal/attr/artificial.h"
+#include "ruby/internal/attr/maybe_unused.h"
+#include "ruby/internal/attr/pure.h"
#include "ruby/internal/dllexport.h"
+#include "ruby/internal/special_consts.h"
+#include "ruby/internal/stdbool.h"
#include "ruby/internal/value.h"
RBIMPL_SYMBOL_EXPORT_BEGIN()
+#define RUBY_REF_EDGE(s, p) offsetof(s, p)
+#define RUBY_REFS_LIST_PTR(l) (RUBY_DATA_FUNC)(uintptr_t)(l)
+#define RUBY_REF_END SIZE_MAX
+#define RUBY_REFERENCES(t) static const size_t t[]
+#define RUBY_REFERENCES_START(t) RUBY_REFERENCES(t) = {
+#define RUBY_REFERENCES_END RUBY_REF_END, };
+
+/* gc.c */
+
+RBIMPL_ATTR_COLD()
+RBIMPL_ATTR_NORETURN()
+/**
+ * Triggers out-of-memory error. If possible it raises ::rb_eNoMemError. But
+ * because we are running out of memory that is not always doable. This
+ * function tries hard to show something, but ultimately can die silently.
+ *
+ * @exception rb_eNoMemError Raises it if possible.
+ */
+void rb_memerror(void);
+
+RBIMPL_ATTR_PURE()
+/**
+ * Queries if the GC is busy.
+ *
+ * @retval 0 It isn't.
+ * @retval 1 It is.
+ */
+int rb_during_gc(void);
+
+RBIMPL_ATTR_NONNULL((1))
+/**
+ * Marks objects between the two pointers. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @pre Continuous memory region from `start` to `end` shall be fully
+ * addressable.
+ * @param[out] start Pointer to an array of objects.
+ * @param[out] end Pointer that terminates the array of objects.
+ * @post Objects from `start` (included) to `end` (excluded) are marked.
+ *
+ * @internal
+ *
+ * `end` can be NULL... But that just results in no-op.
+ */
+void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
+
+/**
+ * Identical to rb_mark_hash(), except it marks only values of the table and
+ * leave their associated keys unmarked. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_mark_tbl(struct st_table *tbl);
+
+/**
+ * Identical to rb_mark_tbl(), except it marks objects using
+ * rb_gc_mark_movable(). This is one of the GC utility functions that you can
+ * call when you design your own ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_mark_tbl_no_pin(struct st_table *tbl);
+
+/**
+ * Identical to rb_mark_hash(), except it marks only keys of the table and
+ * leave their associated values unmarked. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Keys stored in `tbl` are marked.
+ */
+void rb_mark_set(struct st_table *tbl);
+
/**
- * Inform the garbage collector that `valptr` points to a live Ruby object that
- * should not be moved. Note that extensions should use this API on global
- * constants instead of assuming constants defined in Ruby are always alive.
- * Ruby code can remove global constants.
+ * Marks keys and values associated inside of the given table. This is one of
+ * the GC utility functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @param[in] tbl A table to mark.
+ * @post Objects stored in `tbl` are marked.
+ */
+void rb_mark_hash(struct st_table *tbl);
+
+/**
+ * Updates references inside of tables. After you marked values using
+ * rb_mark_tbl_no_pin(), the objects inside of the table could of course be
+ * moved. This function is to fixup those references. You can call this from
+ * your ::rb_data_type_struct::dcompact.
+ *
+ * @param[out] ptr A table that potentially includes moved references.
+ * @post Moved references, if any, are corrected.
+ */
+void rb_gc_update_tbl_refs(st_table *ptr);
+
+/**
+ * Identical to rb_gc_mark(), except it allows the passed value be a
+ * non-object. For instance pointers to different type of memory regions are
+ * allowed here. Such values are silently ignored. This is one of the GC
+ * utility functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @param[out] obj A possible object.
+ * @post `obj` is marked, if possible.
+ */
+void rb_gc_mark_maybe(VALUE obj);
+
+/**
+ * Marks an object. This is one of the GC utility functions that you can call
+ * when you design your own ::rb_data_type_struct::dmark.
+ *
+ * @param[out] obj Arbitrary Ruby object.
+ * @post `obj` is marked.
+ */
+void rb_gc_mark(VALUE obj);
+
+/**
+ * Maybe this is the only function provided for C extensions to control the
+ * pinning of objects, so let us describe it in detail. These days Ruby's GC
+ * is copying. As far as an object's physical address is guaranteed unused, it
+ * can move around the object space. Our GC engine rearranges these objects
+ * after it reclaims unreachable objects from our object space, so that the
+ * space is compact (improves memory locality). This is called the
+ * "compaction" phase, and works well most of the time... as far as there are
+ * no C extensions. C extensions complicate the scenario because Ruby core
+ * cannot detect any use of the physical address of an object inside of C
+ * functions. In order to prevent memory corruptions, objects observable from
+ * C extensions are "pinned"; they stick to where they are born until they die,
+ * just in case any C extensions touch their raw pointers. This variant of
+ * scheme is called "Mostly-Copying" garbage collector. Authors of C
+ * extensions, however, can extremely carefully write them to become
+ * compaction-aware. To do so avoid referring to a Ruby object from inside of
+ * your struct in the first place. But if that is not possible, use this
+ * function from your ::rb_data_type_struct::dmark then. This way objects
+ * marked using it are considered movable. If you chose this way you have to
+ * manually fix up locations of such moved pointers using rb_gc_location().
+ *
+ * @see Bartlett, Joel F., "Compacting Garbage Collection with Ambiguous
+ * Roots", ACM SIGPLAN Lisp Pointers Volume 1 Issue 6 pp. 3-12,
+ * April-May-June, 1988. https://doi.org/10.1145/1317224.1317225
+ *
+ * @param[in] obj Object that is movable.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_gc_mark_movable(VALUE obj);
+
+/**
+ * Finds a new "location" of an object. An object can be moved on compaction.
+ * This function projects its new abode, or just returns the passed object if
+ * not moved. This is one of the GC utility functions that you can call when
+ * you design your own ::rb_data_type_struct::dcompact.
+ *
+ * @param[in] obj An object, possibly already moved to somewhere else.
+ * @return An object, which holds the current contents of former `obj`.
+ */
+VALUE rb_gc_location(VALUE obj);
+
+/**
+ * Triggers a GC process. This was the only GC entry point that we had at the
+ * beginning. Over time our GC evolved. Now what this function does is just a
+ * very simplified variation of the entire GC algorithms. A series of
+ * procedures kicked by this API is called a "full" GC.
+ *
+ * - It immediately scans the entire object space to sort the dead.
+ * - It immediately reclaims any single dead bodies to reuse later.
+ *
+ * It is worth noting that the procedures above do not include evaluations of
+ * finalisers. They run later.
+ *
+ * @internal
+ *
+ * Finalisers are deferred until we can handle interrupts. See
+ * `rb_postponed_job_flush` in vm_trace.c.
+ *
+ * Of course there are GC that are not "full". For instance this one and the
+ * GC which runs when we are running out of memory are different. See
+ * `gc_profile_record_flag` defined in gc.c for the kinds of GC.
+ *
+ * In spite of the name this is not what everything that a GC can trigger. As
+ * of writing it seems this function does not trigger compaction. But this
+ * might change in future.
+ */
+void rb_gc(void);
+
+/**
+ * Copy&paste an object's finaliser to another. This is one of the GC utility
+ * functions that you can call when you design your own `initialize_copy`,
+ * `initialize_dup`, `initialize_clone`.
+ *
+ * @param[out] dst Destination object.
+ * @param[in] src Source object.
+ * @post `dst` and `src` share the same finaliser.
+ *
+ * @internal
+ *
+ * But isn't it easier for you to call super, and let `Object#initialize_copy`
+ * call this function instead?
+ */
+void rb_gc_copy_finalizer(VALUE dst, VALUE src);
+
+/**
+ * (Re-) enables GC. This makes sense only after you called rb_gc_disable().
+ *
+ * @retval RUBY_Qtrue GC was disabled before.
+ * @retval RUBY_Qfalse GC was enabled before.
+ * @post GC is enabled.
+ *
+ * @internal
+ *
+ * This is one of such exceptional functions that does not raise both Ruby
+ * exceptions and C++ exceptions.
+ */
+VALUE rb_gc_enable(void);
+
+/**
+ * Disables GC. This prevents automatic GC runs when the process is running
+ * out of memory. Such situations shall result in rb_memerror(). However this
+ * does not prevent users from manually invoking rb_gc(). That should work.
+ * People abused this by disabling GC at the beginning of an event loop,
+ * process events without GC overheads, then manually force reclaiming garbage
+ * at the bottom of the loop. However because our GC is now much smarter than
+ * just calling rb_gc(), this technique is proven to be sub-optimal these days.
+ * It is believed that there is currently practically no needs of this
+ * function.
+ *
+ * @retval RUBY_Qtrue GC was disabled before.
+ * @retval RUBY_Qfalse GC was enabled before.
+ * @post GC is disabled.
+ */
+VALUE rb_gc_disable(void);
+
+/**
+ * Identical to rb_gc(), except the return value.
+ *
+ * @return Always returns ::RUBY_Qnil.
+ */
+VALUE rb_gc_start(void);
+
+/**
+ * Assigns a finaliser for an object. Each objects can have objects (typically
+ * blocks) that run immediately after that object dies. They are called
+ * finalisers of an object. This function associates a finaliser object with a
+ * target object.
+ *
+ * @note Note that finalisers run _after_ the object they finalise dies. You
+ * cannot for instance call its methods.
+ * @note If your finaliser references the object it finalises that object
+ * loses any chance to become a garbage; effectively leaks memory until
+ * the end of the process.
+ *
+ * @param[in] obj Target to finalise.
+ * @param[in] block Something `call`able.
+ * @exception rb_eRuntimeError Somehow `obj` cannot have finalisers.
+ * @exception rb_eFrozenError `obj` is frozen.
+ * @exception rb_eArgError `block` doesn't respond to `call`.
+ * @return The passed `block`.
+ * @post `block` runs after `obj` dies.
+ */
+VALUE rb_define_finalizer(VALUE obj, VALUE block);
+
+/**
+ * Modifies the object so that it has no finalisers at all. This function is
+ * mainly provided for symmetry. No practical usages can be thought of.
+ *
+ * @param[out] obj Object to clear its finalisers.
+ * @exception rb_eFrozenError `obj` is frozen.
+ * @return The passed `obj`.
+ * @post `obj` has no finalisers.
+ * @note There is no way to undefine a specific part of many finalisers
+ * that `obj` could have. All you can do is to clear them all.
+ */
+VALUE rb_undefine_finalizer(VALUE obj);
+
+/**
+ * Identical to rb_gc_stat(), with "count" parameter.
+ *
+ * @return Lifetime total number of runs of GC.
+ */
+size_t rb_gc_count(void);
+
+/**
+ * Obtains various GC related profiles. The parameter can be either a Symbol
+ * or a Hash. If a Hash is passed, it is filled with everything currently
+ * available. If a Symbol is passed just that portion is returned.
+ *
+ * Possible variations of keys you can pass here change from version to
+ * version. You can get the list of known keys by passing an empty hash and
+ * let it be filled.
+ *
+ * @param[in,out] key_or_buf A Symbol, or a Hash.
+ * @exception rb_eTypeError Neither Symbol nor Hash.
+ * @exception rb_eFrozenError Frozen hash is passed.
+ * @return In case a Hash is passed it returns 0. Otherwise the
+ * profile value associated with the given key is returned.
+ * @post In case a Hash is passed it is filled with values.
+ */
+size_t rb_gc_stat(VALUE key_or_buf);
+
+/**
+ * Obtains various info regarding the most recent GC run. This includes for
+ * instance the reason of the GC. The parameter can be either a Symbol or a
+ * Hash. If a Hash is passed, it is filled with everything currently
+ * available. If a Symbol is passed just that portion is returned.
+ *
+ * Possible variations of keys you can pass here change from version to
+ * version. You can get the list of known keys by passing an empty hash and
+ * let it be filled.
+ *
+ * @param[in,out] key_or_buf A Symbol, or a Hash.
+ * @exception rb_eTypeError Neither Symbol nor Hash.
+ * @exception rb_eFrozenError Frozen hash is passed.
+ * @return In case a Hash is passed it returns that hash. Otherwise
+ * the profile value associated with the given key is returned.
+ * @post In case a Hash is passed it is filled with values.
+ */
+VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
+
+/**
+ * Informs that there are external memory usages. Our GC runs when we are
+ * running out of memory. The amount of memory, however, can increase/decrease
+ * behind-the-scene. For instance DLLs can allocate memories using `mmap(2)`
+ * etc, which are opaque to us. Registering such external allocations using
+ * this function enables proper detection of how much memories an object used
+ * as a whole. That will trigger GCs more often than it would otherwise. You
+ * can also pass negative numbers here, to indicate that such external
+ * allocations are gone.
+ *
+ * @param[in] diff Amount of memory increased(+)/decreased(-).
+ */
+void rb_gc_adjust_memory_usage(ssize_t diff);
+
+/**
+ * Inform the garbage collector that the global or static variable pointed by
+ * `valptr` stores a live Ruby object that should not be moved. Note that
+ * extensions should use this API on global constants instead of assuming
+ * constants defined in Ruby are always alive. Ruby code can remove global
+ * constants.
+ *
+ * Because this registration itself has a possibility to trigger a GC, this
+ * function must be called before any GC-able objects is assigned to the
+ * address pointed by `valptr`.
*/
void rb_gc_register_address(VALUE *valptr);
@@ -54,4 +417,413 @@ void rb_gc_register_mark_object(VALUE object);
RBIMPL_SYMBOL_EXPORT_END()
+/**
+ * @private
+ *
+ * @deprecated This macro once was a thing in the old days, but makes no sense
+ * any longer today. Exists here for backwards compatibility
+ * only. You can safely forget about it.
+ */
+#undef USE_RGENGC
+#define USE_RGENGC 1
+
+/**
+ * @deprecated This macro seems broken. Setting this to anything other than
+ * zero just doesn't compile. We need to KonMari.
+ */
+#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT
+# define USE_RGENGC_LOGGING_WB_UNPROTECT 0
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RArray. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_ARRAY
+# define RGENGC_WB_PROTECTED_ARRAY 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RHash. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_HASH
+# define RGENGC_WB_PROTECTED_HASH 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RStruct. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_STRUCT
+# define RGENGC_WB_PROTECTED_STRUCT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RString. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_STRING
+# define RGENGC_WB_PROTECTED_STRING 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RObject. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_OBJECT
+# define RGENGC_WB_PROTECTED_OBJECT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RRegexp. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_REGEXP
+# define RGENGC_WB_PROTECTED_REGEXP 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RMatch. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_MATCH
+# define RGENGC_WB_PROTECTED_MATCH 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RClass. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_CLASS
+# define RGENGC_WB_PROTECTED_CLASS 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RFloat. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_FLOAT
+# define RGENGC_WB_PROTECTED_FLOAT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RComplex. It has to be set at the time ruby itself compiles.
+ * Makes no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_COMPLEX
+# define RGENGC_WB_PROTECTED_COMPLEX 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RRational. It has to be set at the time ruby itself compiles.
+ * Makes no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_RATIONAL
+# define RGENGC_WB_PROTECTED_RATIONAL 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RBignum. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_BIGNUM
+# define RGENGC_WB_PROTECTED_BIGNUM 1
+#endif
+
+/**
+ * @private
+ *
+ * @deprecated This macro once was a thing in the old days, but makes no sense
+ * any longer today. Exists here for backwards compatibility
+ * only. You can safely forget about it.
+ *
+ * @internal
+ *
+ * @shyouhei doesn't think anybody uses this right now.
+ */
+#ifndef RGENGC_WB_PROTECTED_NODE_CREF
+# define RGENGC_WB_PROTECTED_NODE_CREF 1
+#endif
+
+/**
+ * @defgroup rgengc Write barrier (WB) interfaces:
+ *
+ * @note The following core interfaces can be changed in the future. Please
+ * catch up if you want to insert WB into C-extensions correctly.
+ *
+ * @{
+ */
+
+/**
+ * Declaration of a "back" pointer. This is a write barrier for new reference
+ * from "old" generation to "young" generation. It writes `young` into
+ * `*slot`, which is a pointer inside of `old`.
+ *
+ * @param[in] old An old object.
+ * @param[in] slot A pointer inside of `old`.
+ * @param[out] young A young object.
+ */
+#define RB_OBJ_WRITE(old, slot, young) \
+ RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
+
+/**
+ * Identical to #RB_OBJ_WRITE(), except it doesn't write any values, but only a
+ * WB declaration. `oldv` is replaced value with `b` (not used in current
+ * Ruby).
+ *
+ * @param[in] old An old object.
+ * @param[in] oldv An object previously stored inside of `old`.
+ * @param[out] young A young object.
+ */
+#define RB_OBJ_WRITTEN(old, oldv, young) \
+ RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
+/** @} */
+
+#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW /**< @old{RB_OBJ_PROMOTED_RAW} */
+#define OBJ_PROMOTED RB_OBJ_PROMOTED /**< @old{RB_OBJ_PROMOTED} */
+#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT /**< @old{RB_OBJ_WB_UNPROTECT} */
+
+/**
+ * Asserts that the passed object is not fenced by write barriers. Objects of
+ * such property do not contribute to generational GCs. They are scanned
+ * always.
+ *
+ * @param[out] x An object that would not be protected by the barrier.
+ */
+#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
+
+/**
+ * Identical to #RB_OBJ_WB_UNPROTECT(), except it can also assert that the
+ * given object is of given type.
+ *
+ * @param[in] type One of `ARRAY`, `STRING`, etc.
+ * @param[out] obj An object of `type` that would not be protected.
+ *
+ * @internal
+ *
+ * @shyouhei doesn't understand why this has to be visible from extensions.
+ */
+#define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \
+ (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
+
+/**
+ * @private
+ *
+ * This is an implementation detail of rb_obj_wb_unprotect(). People don't use
+ * it directly.
+ */
+#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
+
+/** @cond INTERNAL_MACRO */
+#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
+#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
+/** @endcond */
+
+RBIMPL_SYMBOL_EXPORT_BEGIN()
+/**
+ * This is the implementation of #RB_OBJ_WRITE(). People don't use it
+ * directly.
+ *
+ * @param[in] old An object that points to `young`.
+ * @param[out] young An object that is referenced from `old`.
+ */
+void rb_gc_writebarrier(VALUE old, VALUE young);
+
+/**
+ * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
+ * directly.
+ *
+ * @param[out] obj An object that does not participate in WB.
+ */
+void rb_gc_writebarrier_unprotect(VALUE obj);
+
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+/**
+ * @private
+ *
+ * This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People
+ * don't use it directly.
+ *
+ * @param[in] objptr Don't know why this is a pointer to void but in
+ * reality this is a pointer to an object that is about
+ * to be un-protected.
+ * @param[in] filename Pass C's `__FILE__` here.
+ * @param[in] line Pass C's `__LINE__` here.
+ */
+void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
+#endif
+
+RBIMPL_SYMBOL_EXPORT_END()
+
+RBIMPL_ATTR_PURE_UNLESS_DEBUG()
+RBIMPL_ATTR_ARTIFICIAL()
+/**
+ * This is the implementation of #RB_OBJ_PROMOTED(). People don't use it
+ * directly.
+ *
+ * @param[in] obj An object to query.
+ * @retval true The object is "promoted".
+ * @retval false The object is young. Have not experienced GC at all.
+ */
+static inline bool
+RB_OBJ_PROMOTED_RAW(VALUE obj)
+{
+ RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj));
+ return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
+}
+
+RBIMPL_ATTR_PURE_UNLESS_DEBUG()
+RBIMPL_ATTR_ARTIFICIAL()
+/**
+ * Tests if the object is "promoted" -- that is, whether the object experienced
+ * one or more GC marks.
+ *
+ * @param[in] obj An object to query.
+ * @retval true The object is "promoted".
+ * @retval false The object is young. Have not experienced GC at all.
+ * @note Hello, is anyone actively calling this function? @shyouhei have
+ * never seen any actual usages outside of the GC implementation
+ * itself.
+ */
+static inline bool
+RB_OBJ_PROMOTED(VALUE obj)
+{
+ if (! RB_FL_ABLE(obj)) {
+ return false;
+ }
+ else {
+ return RB_OBJ_PROMOTED_RAW(obj);
+ }
+}
+
+/**
+ * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
+ * directly.
+ *
+ * @param[out] x An object that does not participate in WB.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return x
+ */
+static inline VALUE
+rb_obj_wb_unprotect(
+ VALUE x,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+ RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line);
+#endif
+ rb_gc_writebarrier_unprotect(x);
+ return x;
+}
+
+/**
+ * @private
+ *
+ * This is the implementation of #RB_OBJ_WRITTEN(). People don't use it
+ * directly.
+ *
+ * @param[in] a An old object.
+ * @param[in] oldv An object previously stored inside of `old`.
+ * @param[out] b A young object.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return a
+ */
+static inline VALUE
+rb_obj_written(
+ VALUE a,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ VALUE oldv,
+ VALUE b,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+ RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);
+#endif
+
+ if (!RB_SPECIAL_CONST_P(b)) {
+ rb_gc_writebarrier(a, b);
+ }
+
+ return a;
+}
+
+/**
+ * @private
+ *
+ * This is the implementation of #RB_OBJ_WRITE(). People don't use it
+ * directly.
+ *
+ * @param[in] a An old object.
+ * @param[in] slot A pointer inside of `old`.
+ * @param[out] b A young object.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return a
+ */
+static inline VALUE
+rb_obj_write(
+ VALUE a, VALUE *slot, VALUE b,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#ifdef RGENGC_LOGGING_WRITE
+ RGENGC_LOGGING_WRITE(a, slot, b, filename, line);
+#endif
+
+ *slot = b;
+
+ rb_obj_written(a, RUBY_Qundef /* ignore `oldv' now */, b, filename, line);
+ return a;
+}
+
+RBIMPL_ATTR_DEPRECATED(("Will be removed soon"))
+static inline void rb_gc_force_recycle(VALUE obj){}
+
#endif /* RBIMPL_GC_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/globals.h b/ThirdParty/include/ruby/mac/ruby/internal/globals.h
index 5a414fc47..60d8e5309 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/globals.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/globals.h
@@ -94,7 +94,7 @@ RUBY_EXTERN VALUE rb_cRegexp; /**< `Regexp` class. */
RUBY_EXTERN VALUE rb_cStat; /**< `File::Stat` class. */
RUBY_EXTERN VALUE rb_cString; /**< `String` class. */
RUBY_EXTERN VALUE rb_cStruct; /**< `Struct` class. */
-RUBY_EXTERN VALUE rb_cSymbol; /**< `Sumbol` class. */
+RUBY_EXTERN VALUE rb_cSymbol; /**< `Symbol` class. */
RUBY_EXTERN VALUE rb_cThread; /**< `Thread` class. */
RUBY_EXTERN VALUE rb_cTime; /**< `Time` class. */
RUBY_EXTERN VALUE rb_cTrueClass; /**< `TrueClass` class. */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/has/builtin.h b/ThirdParty/include/ruby/mac/ruby/internal/has/builtin.h
index 243ba2a34..8e7fb173d 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/has/builtin.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/has/builtin.h
@@ -48,6 +48,7 @@
# /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66970 */
# define RBIMPL_HAS_BUILTIN(_) (RBIMPL_HAS_BUILTIN_ ## _)
# define RBIMPL_HAS_BUILTIN___builtin_add_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0)
+# define RBIMPL_HAS_BUILTIN___builtin_add_overflow_p RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_alloca RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align RBIMPL_COMPILER_SINCE(GCC, 6, 1, 0)
# define RBIMPL_HAS_BUILTIN___builtin_assume 0
@@ -75,6 +76,7 @@
# define RBIMPL_HAS_BUILTIN___builtin_rotateright32 0
# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0
# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0)
+# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow_p RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_unreachable RBIMPL_COMPILER_SINCE(GCC, 4, 5, 0)
# /* Note that "0, 0, 0" might be inaccurate. */
@@ -82,6 +84,7 @@
# /* Take config.h definition when available */
# define RBIMPL_HAS_BUILTIN(_) ((RBIMPL_HAS_BUILTIN_ ## _)+0)
# define RBIMPL_HAS_BUILTIN___builtin_add_overflow HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW
+# define RBIMPL_HAS_BUILTIN___builtin_add_overflow_p HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW_P
# define RBIMPL_HAS_BUILTIN___builtin_alloca 0
# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN
# define RBIMPL_HAS_BUILTIN___builtin_assume 0
@@ -107,6 +110,7 @@
# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0
# define RBIMPL_HAS_BUILTIN___builtin_popcountll HAVE_BUILTIN___BUILTIN_POPCOUNTLL
# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW
+# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow_p HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW_P
# if defined(HAVE___BUILTIN_UNREACHABLE)
# define RBIMPL_HAS_BUILTIN___builtin_unreachable 1
# else
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/has/c_attribute.h b/ThirdParty/include/ruby/mac/ruby/internal/has/c_attribute.h
index c5c48867b..69b0f402c 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/has/c_attribute.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/has/c_attribute.h
@@ -21,11 +21,23 @@
* @brief Defines #RBIMPL_HAS_C_ATTRIBUTE.
*/
+#include "ruby/internal/has/extension.h"
+#include "ruby/internal/has/warning.h"
+
/** Wraps (or simulates) `__has_c_attribute`. */
#if defined(__cplusplus)
# /* Makes no sense. */
# define RBIMPL_HAS_C_ATTRIBUTE(_) 0
+#elif RBIMPL_HAS_EXTENSION(c_attributes)
+# /* Hmm. It seems Clang 17 has this macro defined even when -std=c99 mode,
+# * _and_ fails to compile complaining that attributes are C2X feature. We
+# * need to work around this nonsense. */
+# define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
+
+#elif RBIMPL_HAS_WARNING("-Wc2x-extensions")
+# define RBIMPL_HAS_C_ATTRIBUTE(_) 0
+
#elif defined(__has_c_attribute)
# define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/array.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/array.h
index 2262c6f0c..b2cc6b132 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/array.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/array.h
@@ -144,7 +144,13 @@ void rb_ary_free(VALUE ary);
*/
void rb_ary_modify(VALUE ary);
-/** @alias{rb_obj_freeze} */
+/**
+ * Freeze an array, preventing further modifications. The underlying buffer may
+ * be shrunk before freezing to conserve memory.
+ *
+ * @param[out] obj Object assumed to be an array to freeze.
+ * @see RB_OBJ_FREEZE()
+ */
VALUE rb_ary_freeze(VALUE obj);
RBIMPL_ATTR_PURE()
@@ -187,7 +193,7 @@ VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs);
* : (int i) -> T?
* | (int beg, int len) -> ::Array[T]?
* | (Range[int] r) -> ::Array[T]?
- * | (ArithmeticSequence as) -> ::Array[T]? # This also raises RagneError.
+ * | (ArithmeticSequence as) -> ::Array[T]? # This also raises RangeError.
* end
* ```
*/
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/bignum.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/bignum.h
index 43d68018d..c27f77a1f 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/bignum.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/bignum.h
@@ -51,7 +51,7 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
VALUE rb_big_new(size_t len, int sign);
/**
- * Queries if the passed bignum instance is a "bigzro". What is a bigzero?
+ * Queries if the passed bignum instance is a "bigzero". What is a bigzero?
* Well, bignums are for very big integers, but can also represent tiny ones
* like -1, 0, 1. Bigzero are instances of bignums whose values are zero.
* Knowing if a bignum is bigzero can be handy on occasions, like for instance
@@ -793,7 +793,7 @@ size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
* @exception rb_eTypeError `val` doesn't respond to `#to_int`.
* @retval (size_t)-1 Overflowed.
* @retval otherwise
- `((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)`,
+ * `((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)`,
* where val_numbits is the number of bits of `abs(val)`.
* @post If `nlz_bits_ret` is not `NULL` and there is no overflow,
* `(return_value * word_numbits - val_numbits)` is stored in
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/class.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/class.h
index 0fb2d001b..357af5d17 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/class.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/class.h
@@ -88,8 +88,8 @@ VALUE rb_define_class_id(ID id, VALUE super);
* @post `outer::id` refers the returned class.
* @note If a class named `id` is already defined and its superclass is
* `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super);
@@ -127,8 +127,8 @@ VALUE rb_define_module_id(ID id);
* constant is not a module.
* @return The created module.
* @post `outer::id` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_module_id_under(VALUE outer, ID id);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/error.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/error.h
index 9c153cbac..1fd9ec2f5 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/error.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/error.h
@@ -235,7 +235,9 @@ RBIMPL_ATTR_NORETURN()
* @param[in] max Maximum allowed `argc`.
* @exception rb_eArgError Always.
*/
-MJIT_STATIC void rb_error_arity(int argc, int min, int max);
+void rb_error_arity(int argc, int min, int max);
+
+void rb_str_modify(VALUE str);
RBIMPL_SYMBOL_EXPORT_END()
@@ -244,12 +246,7 @@ RBIMPL_SYMBOL_EXPORT_END()
*
* Does anyone use this? Remain not deleted for compatibility.
*/
-#define rb_check_frozen_internal(obj) do { \
- VALUE frozen_obj = (obj); \
- if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { \
- rb_error_frozen_object(frozen_obj); \
- } \
- } while (0)
+#define rb_check_frozen_internal rb_check_frozen
/** @alias{rb_check_frozen} */
static inline void
@@ -258,9 +255,16 @@ rb_check_frozen_inline(VALUE obj)
if (RB_UNLIKELY(RB_OBJ_FROZEN(obj))) {
rb_error_frozen_object(obj);
}
+
+ /* ref: internal CHILLED_STRING_P()
+ This is an implementation detail subject to change. */
+ if (RB_UNLIKELY(RB_TYPE_P(obj, T_STRING) && FL_TEST_RAW(obj, RUBY_FL_USER2 | RUBY_FL_USER3))) { // STR_CHILLED
+ rb_str_modify(obj);
+ }
}
-/** @alias{rb_check_frozen} */
+/* rb_check_frozen() is available as a symbol, but have
+ * the inline version take priority for native consumers. */
#define rb_check_frozen rb_check_frozen_inline
/**
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/gc.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/gc.h
deleted file mode 100644
index 2ee1d257d..000000000
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/gc.h
+++ /dev/null
@@ -1,392 +0,0 @@
-#ifndef RBIMPL_INTERN_GC_H /*-*-C++-*-vi:se ft=cpp:*/
-#define RBIMPL_INTERN_GC_H
-/**
- * @file
- * @author Ruby developers
- * @copyright This file is a part of the programming language Ruby.
- * Permission is hereby granted, to either redistribute and/or
- * modify this file, provided that the conditions mentioned in the
- * file COPYING are met. Consult the file for details.
- * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
- * implementation details. Don't take them as canon. They could
- * rapidly appear then vanish. The name (path) of this header file
- * is also an implementation detail. Do not expect it to persist
- * at the place it is now. Developers are free to move it anywhere
- * anytime at will.
- * @note To ruby-core: remember that this header can be possibly
- * recursively included from extension libraries written in C++.
- * Do not expect for instance `__VA_ARGS__` is always available.
- * We assume C99 for ruby itself but we don't assume languages of
- * extension libraries. They could be written in C++98.
- * @brief Public APIs related to ::rb_mGC.
- */
-#include "ruby/internal/config.h"
-
-#ifdef STDC_HEADERS
-# include /* size_t */
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-# include /* ssize_t */
-#endif
-
-#include "ruby/internal/attr/cold.h"
-#include "ruby/internal/attr/noreturn.h"
-#include "ruby/internal/attr/nonnull.h"
-#include "ruby/internal/attr/pure.h"
-#include "ruby/internal/dllexport.h"
-#include "ruby/internal/value.h"
-
-RBIMPL_SYMBOL_EXPORT_BEGIN()
-
-/* gc.c */
-
-RBIMPL_ATTR_COLD()
-RBIMPL_ATTR_NORETURN()
-/**
- * Triggers out-of-memory error. If possible it raises ::rb_eNoMemError. But
- * because we are running out of memory that is not always doable. This
- * function tries hard to show something, but ultimately can die silently.
- *
- * @exception rb_eNoMemError Raises it if possible.
- */
-void rb_memerror(void);
-
-RBIMPL_ATTR_PURE()
-/**
- * Queries if the GC is busy.
- *
- * @retval 0 It isn't.
- * @retval 1 It is.
- */
-int rb_during_gc(void);
-
-RBIMPL_ATTR_NONNULL((1))
-/**
- * Marks objects between the two pointers. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @pre Continuous memory region from `start` to `end` shall be fully
- * addressable.
- * @param[out] start Pointer to an array of objects.
- * @param[out] end Pointer that terminates the array of objects.
- * @post Objects from `start` (included) to `end` (excluded) are marked.
- *
- * @internal
- *
- * `end` can be NULL... But that just results in no-op.
- */
-void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
-
-/**
- * Identical to rb_mark_hash(), except it marks only values of the table and
- * leave their associated keys unmarked. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Values stored in `tbl` are marked.
- */
-void rb_mark_tbl(struct st_table *tbl);
-
-/**
- * Identical to rb_mark_tbl(), except it marks objects using
- * rb_gc_mark_movable(). This is one of the GC utility functions that you can
- * call when you design your own ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Values stored in `tbl` are marked.
- */
-void rb_mark_tbl_no_pin(struct st_table *tbl);
-
-/**
- * Identical to rb_mark_hash(), except it marks only keys of the table and
- * leave their associated values unmarked. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Keys stored in `tbl` are marked.
- */
-void rb_mark_set(struct st_table *tbl);
-
-/**
- * Marks keys and values associated inside of the given table. This is one of
- * the GC utility functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @param[in] tbl A table to mark.
- * @post Objects stored in `tbl` are marked.
- */
-void rb_mark_hash(struct st_table *tbl);
-
-/**
- * Updates references inside of tables. After you marked values using
- * rb_mark_tbl_no_pin(), the objects inside of the table could of course be
- * moved. This function is to fixup those references. You can call this from
- * your ::rb_data_type_struct::dcompact.
- *
- * @param[out] ptr A table that potentially includes moved references.
- * @post Moved references, if any, are corrected.
- */
-void rb_gc_update_tbl_refs(st_table *ptr);
-
-/**
- * Identical to rb_gc_mark(), except it allows the passed value be a
- * non-object. For instance pointers to different type of memory regions are
- * allowed here. Such values are silently ignored. This is one of the GC
- * utility functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @param[out] obj A possible object.
- * @post `obj` is marked, if possible.
- */
-void rb_gc_mark_maybe(VALUE obj);
-
-/**
- * Marks an object. This is one of the GC utility functions that you can call
- * when you design your own ::rb_data_type_struct::dmark.
- *
- * @param[out] obj Arbitrary Ruby object.
- * @post `obj` is marked.
- */
-void rb_gc_mark(VALUE obj);
-
-/**
- * Maybe this is the only function provided for C extensions to control the
- * pinning of objects, so let us describe it in detail. These days Ruby's GC
- * is copying. As far as an object's physical address is guaranteed unused, it
- * can move around the object space. Our GC engine rearranges these objects
- * after it reclaims unreachable objects from our object space, so that the
- * space is compact (improves memory locality). This is called the
- * "compaction" phase, and works well most of the time... as far as there are
- * no C extensions. C extensions complicate the scenario because Ruby core
- * cannot detect any use of the physical address of an object inside of C
- * functions. In order to prevent memory corruptions, objects observable from
- * C extensions are "pinned"; they stick to where they are born until they die,
- * just in case any C extensions touch their raw pointers. This variant of
- * scheme is called "Mostly-Copying" garbage collector. Authors of C
- * extensions, however, can extremely carefully write them to become
- * compaction-aware. To do so avoid referring to a Ruby object from inside of
- * your struct in the first place. But if that is not possible, use this
- * function from your ::rb_data_type_struct::dmark then. This way objects
- * marked using it are considered movable. If you chose this way you have to
- * manually fix up locations of such moved pointers using rb_gc_location().
- *
- * @see Bartlett, Joel F., "Compacting Garbage Collection with Ambiguous
- * Roots", ACM SIGPLAN Lisp Pointers Volume 1 Issue 6 pp. 3-12,
- * April-May-June, 1988. https://doi.org/10.1145/1317224.1317225
- *
- * @param[in] obj Object that is movable.
- * @post Values stored in `tbl` are marked.
- */
-void rb_gc_mark_movable(VALUE obj);
-
-/**
- * Finds a new "location" of an object. An object can be moved on compaction.
- * This function projects its new abode, or just returns the passed object if
- * not moved. This is one of the GC utility functions that you can call when
- * you design your own ::rb_data_type_struct::dcompact.
- *
- * @param[in] obj An object, possibly already moved to somewhere else.
- * @return An object, which holds the current contents of former `obj`.
- */
-VALUE rb_gc_location(VALUE obj);
-
-/**
- * Asserts that the passed object is no longer needed. Such objects are
- * reclaimed sooner or later so this function is not mandatory. But sometimes
- * you can know from your application knowledge that an object is surely dead
- * at some point. Calling this as a hint can be a polite way.
- *
- * @param[out] obj Object, dead.
- * @pre `obj` have never been passed to this function before.
- * @post `obj` could be invalidated.
- * @warning It is a failure to pass an object multiple times to this
- * function.
- * @deprecated This is now a no-op function.
- */
-RBIMPL_ATTR_DEPRECATED(("this is now a no-op function"))
-void rb_gc_force_recycle(VALUE obj);
-
-/**
- * Triggers a GC process. This was the only GC entry point that we had at the
- * beginning. Over time our GC evolved. Now what this function does is just a
- * very simplified variation of the entire GC algorithms. A series of
- * procedures kicked by this API is called a "full" GC.
- *
- * - It immediately scans the entire object space to sort the dead.
- * - It immediately reclaims any single dead bodies to reuse later.
- *
- * It is worth noting that the procedures above do not include evaluations of
- * finalisers. They run later.
- *
- * @internal
- *
- * Finalisers are deferred until we can handle interrupts. See
- * `rb_postponed_job_flush` in vm_trace.c.
- *
- * Of course there are GC that are not "full". For instance this one and the
- * GC which runs when we are running out of memory are different. See
- * `gc_profile_record_flag` defined in gc.c for the kinds of GC.
- *
- * In spite of the name this is not what everything that a GC can trigger. As
- * of writing it seems this function does not trigger compaction. But this
- * might change in future.
- */
-void rb_gc(void);
-
-/**
- * Copy&paste an object's finaliser to another. This is one of the GC utility
- * functions that you can call when you design your own `initialize_copy`,
- * `initialize_dup`, `initialize_clone`.
- *
- * @param[out] dst Destination object.
- * @param[in] src Source object.
- * @post `dst` and `src` share the same finaliser.
- *
- * @internal
- *
- * But isn't it easier for you to call super, and let `Object#initialize_copy`
- * call this function instead?
- */
-void rb_gc_copy_finalizer(VALUE dst, VALUE src);
-
-/**
- * (Re-) enables GC. This makes sense only after you called rb_gc_disable().
- *
- * @retval RUBY_Qtrue GC was disabled before.
- * @retval RUBY_Qfalse GC was enabled before.
- * @post GC is enabled.
- *
- * @internal
- *
- * This is one of such exceptional functions that does not raise both Ruby
- * exceptions and C++ exceptions.
- */
-VALUE rb_gc_enable(void);
-
-/**
- * Disables GC. This prevents automatic GC runs when the process is running
- * out of memory. Such situations shall result in rb_memerror(). However this
- * does not prevent users from manually invoking rb_gc(). That should work.
- * People abused this by disabling GC at the beginning of an event loop,
- * process events without GC overheads, then manually force reclaiming garbage
- * at the bottom of the loop. However because our GC is now much smarter than
- * just calling rb_gc(), this technique is proven to be sub-optimal these days.
- * It is believed that there is currently practically no needs of this
- * function.
- *
- * @retval RUBY_Qtrue GC was disabled before.
- * @retval RUBY_Qfalse GC was enabled before.
- * @post GC is disabled.
- */
-VALUE rb_gc_disable(void);
-
-/**
- * Identical to rb_gc(), except the return value.
- *
- * @return Always returns ::RUBY_Qnil.
- */
-VALUE rb_gc_start(void);
-
-/**
- * Assigns a finaliser for an object. Each objects can have objects (typically
- * blocks) that run immediately after that object dies. They are called
- * finalisers of an object. This function associates a finaliser object with a
- * target object.
- *
- * @note Note that finalisers run _after_ the object they finalise dies. You
- * cannot for instance call its methods.
- * @note If your finaliser references the object it finalises that object
- * loses any chance to become a garbage; effectively leaks memory until
- * the end of the process.
- *
- * @param[in] obj Target to finalise.
- * @param[in] block Something `call`able.
- * @exception rb_eRuntimeError Somehow `obj` cannot have finalisers.
- * @exception rb_eFrozenError `obj` is frozen.
- * @exception rb_eArgError `block` doesn't respond to `call`.
- * @return The passed `block`.
- * @post `block` runs after `obj` dies.
- */
-VALUE rb_define_finalizer(VALUE obj, VALUE block);
-
-/**
- * Modifies the object so that it has no finalisers at all. This function is
- * mainly provided for symmetry. No practical usages can be thought of.
- *
- * @param[out] obj Object to clear its finalisers.
- * @exception rb_eFrozenError `obj` is frozen.
- * @return The passed `obj`.
- * @post `obj` has no finalisers.
- * @note There is no way to undefine a specific part of many finalisers
- * that `obj` could have. All you can do is to clear them all.
- */
-VALUE rb_undefine_finalizer(VALUE obj);
-
-/**
- * Identical to rb_gc_stat(), with "count" parameter.
- *
- * @return Lifetime total number of runs of GC.
- */
-size_t rb_gc_count(void);
-
-/**
- * Obtains various GC related profiles. The parameter can be either a Symbol
- * or a Hash. If a Hash is passed, it is filled with everything currently
- * available. If a Symbol is passed just that portion is returned.
- *
- * Possible variations of keys you can pass here change from version to
- * version. You can get the list of known keys by passing an empty hash and
- * let it be filled.
- *
- * @param[in,out] key_or_buf A Symbol, or a Hash.
- * @exception rb_eTypeError Neither Symbol nor Hash.
- * @exception rb_eFrozenError Frozen hash is passed.
- * @return In case a Hash is passed it returns 0. Otherwise the
- * profile value associated with the given key is returned.
- * @post In case a Hash is passed it is filled with values.
- */
-size_t rb_gc_stat(VALUE key_or_buf);
-
-/**
- * Obtains various info regarding the most recent GC run. This includes for
- * instance the reason of the GC. The parameter can be either a Symbol or a
- * Hash. If a Hash is passed, it is filled with everything currently
- * available. If a Symbol is passed just that portion is returned.
- *
- * Possible variations of keys you can pass here change from version to
- * version. You can get the list of known keys by passing an empty hash and
- * let it be filled.
- *
- * @param[in,out] key_or_buf A Symbol, or a Hash.
- * @exception rb_eTypeError Neither Symbol nor Hash.
- * @exception rb_eFrozenError Frozen hash is passed.
- * @return In case a Hash is passed it returns that hash. Otherwise
- * the profile value associated with the given key is returned.
- * @post In case a Hash is passed it is filled with values.
- */
-VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
-
-/**
- * Informs that there are external memory usages. Our GC runs when we are
- * running out of memory. The amount of memory, however, can increase/decrease
- * behind-the-scene. For instance DLLs can allocate memories using `mmap(2)`
- * etc, which are opaque to us. Registering such external allocations using
- * this function enables proper detection of how much memories an object used
- * as a whole. That will trigger GCs more often than it would otherwise. You
- * can also pass negative numbers here, to indicate that such external
- * allocations are gone.
- *
- * @param[in] diff Amount of memory increased(+)/decreased(-).
- */
-void rb_gc_adjust_memory_usage(ssize_t diff);
-
-RBIMPL_SYMBOL_EXPORT_END()
-
-#endif /* RBIMPL_INTERN_GC_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/io.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/io.h
index 02c249723..b9eb258cc 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/io.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/io.h
@@ -385,7 +385,7 @@ VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io);
* @param[in] fd Target file descriptor.
* @param[in] flags Flags, e.g. `O_CREAT|O_EXCL`
* @param[in] path The path of the file that backs `fd`, for diagnostics.
- * @return An allocated instance of ::rb_cIO.
+ * @return An allocated instance of ::rb_cIO with the autoclose flag set.
* @note Leave `path` NULL if you don't know.
*/
VALUE rb_io_fdopen(int fd, int flags, const char *path);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/load.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/load.h
index 288a16c2e..9ceb98c2e 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/load.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/load.h
@@ -176,6 +176,43 @@ VALUE rb_f_require(VALUE self, VALUE feature);
*/
VALUE rb_require_string(VALUE feature);
+/**
+ * Resolves and returns a symbol of a function in the native extension
+ * specified by the feature and symbol names. Extensions will use this function
+ * to access the symbols provided by other native extensions.
+ *
+ * @param[in] feature Name of a feature, e.g. `"json"`.
+ * @param[in] symbol Name of a symbol defined by the feature.
+ * @return The resolved symbol of a function, defined and externed by the
+ * specified feature. It may be NULL if the feature is not loaded,
+ * the feature is not extension, or the symbol is not found.
+ */
+void *rb_ext_resolve_symbol(const char *feature, const char *symbol);
+
+/**
+ * This macro is to provide backwards compatibility. It provides a way to
+ * define function prototypes and resolving function symbols in a safe way.
+ *
+ * ```CXX
+ * // prototypes
+ * #ifdef HAVE_RB_EXT_RESOLVE_SYMBOL
+ * VALUE *(*other_extension_func)(VALUE,VALUE);
+ * #else
+ * VALUE other_extension_func(VALUE);
+ * #endif
+ *
+ * // in Init_xxx()
+ * #ifdef HAVE_RB_EXT_RESOLVE_SYMBOL
+ * other_extension_func = \
+ * (VALUE(*)(VALUE,VALUE))rb_ext_resolve_symbol(fname, sym_name);
+ * if (other_extension_func == NULL) {
+ * // raise your own error
+ * }
+ * #endif
+ * ```
+ */
+#define HAVE_RB_EXT_RESOLVE_SYMBOL 1
+
/**
* @name extension configuration
* @{
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/object.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/object.h
index b9ffa57c0..9daad7d04 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/object.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/object.h
@@ -151,13 +151,12 @@ VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
* @return An allocated, not yet initialised instance of `klass`.
* @note It calls the allocator defined by rb_define_alloc_func(). You
* cannot use this function to define an allocator. Use
- * rb_newobj_of(), #TypedData_Make_Struct or others, instead.
+ * TypedData_Make_Struct or others, instead.
* @note Usually prefer rb_class_new_instance() to rb_obj_alloc() and
* rb_obj_call_init().
* @see rb_class_new_instance()
* @see rb_obj_call_init()
* @see rb_define_alloc_func()
- * @see rb_newobj_of()
* @see #TypedData_Make_Struct
*/
VALUE rb_obj_alloc(VALUE klass);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/process.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/process.h
index 7a7b24ed4..cfa5e1316 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/process.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/process.h
@@ -30,6 +30,15 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
/* process.c */
+/**
+ * Wait for the specified process to terminate, reap it, and return its status.
+ *
+ * @param[in] pid The process ID to wait for.
+ * @param[in] flags The flags to pass to waitpid(2).
+ * @return VALUE An instance of Process::Status.
+ */
+VALUE rb_process_status_wait(rb_pid_t pid, int flags);
+
/**
* Sets the "last status", or the `$?`.
*
@@ -247,7 +256,7 @@ rb_pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen);
*
* @internal
*
- * This function might or might not exist depending on `./confiugre` result.
+ * This function might or might not exist depending on `./configure` result.
* It must be a portability hell. Better not use.
*/
VALUE rb_proc_times(VALUE _);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/re.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/re.h
index 31f559327..4dd58b469 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/re.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/re.h
@@ -87,11 +87,6 @@ void rb_match_busy(VALUE md);
* @retval RUBY_Qfalse There is a `n`-th capture and is empty.
* @retval RUBY_Qtrue There is a `n`-th capture that has something.
*
- * @internal
- *
- * @shyouhei wonders: why there are both rb_reg_match_defined() and
- * rb_match_nth_defined, which are largely the same things, but do not share
- * their implementations at all?
*/
VALUE rb_reg_nth_defined(int n, VALUE md);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/select.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/select.h
index fabc287cd..6ba84c6e6 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/select.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/select.h
@@ -76,7 +76,7 @@ struct timeval;
*
* Although any file descriptors are possible here, it makes completely no
* sense to pass a descriptor that is not `O_NONBLOCK`. If you want to know
- * the reason for this limitatuon in detail, you might find this thread super
+ * the reason for this limitation in detail, you might find this thread super
* interesting: https://lkml.org/lkml/2004/10/6/117
*/
int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/select/win32.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/select/win32.h
new file mode 100644
index 000000000..b7301e63f
--- /dev/null
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/select/win32.h
@@ -0,0 +1,259 @@
+#ifndef RBIMPL_INTERN_SELECT_WIN32_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_INTERN_SELECT_WIN32_H
+/**
+ * @file
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief Public APIs to provide ::rb_fd_select().
+ */
+#include "ruby/internal/dosish.h" /* for rb_w32_select */
+#include "ruby/internal/attr/nonnull.h"
+#include "ruby/internal/attr/pure.h"
+#include "ruby/internal/attr/noalias.h"
+#include "ruby/internal/dllexport.h"
+#include "ruby/assert.h"
+
+/**@cond INTERNAL_MACRO */
+#define rb_fd_zero rb_fd_zero
+#define rb_fd_clr rb_fd_clr
+#define rb_fd_isset rb_fd_isset
+#define rb_fd_copy rb_fd_copy
+#define rb_fd_dup rb_fd_dup
+#define rb_fd_ptr rb_fd_ptr
+#define rb_fd_max rb_fd_max
+/** @endcond */
+
+RBIMPL_SYMBOL_EXPORT_BEGIN()
+
+struct timeval;
+
+/**
+ * The data structure which wraps the fd_set bitmap used by select(2). This
+ * allows Ruby to use FD sets larger than that allowed by historic limitations
+ * on modern platforms.
+ */
+typedef struct {
+ int capa; /**< Maximum allowed number of FDs. */
+ fd_set *fdset; /**< File descriptors buffer. */
+} rb_fdset_t;
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * (Re-)initialises a fdset. One must be initialised before other `rb_fd_*`
+ * operations. Analogous to calling `malloc(3)` to allocate an `fd_set`.
+ *
+ * @param[out] f An fdset to squash.
+ * @post `f` holds no file descriptors.
+ *
+ * @internal
+ *
+ * Can't this leak memory if the same `f` is passed twice...?
+ */
+void rb_fd_init(rb_fdset_t *f);
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Destroys the ::rb_fdset_t, releasing any memory and resources it used. It
+ * must be reinitialised using rb_fd_init() before future use. Analogous to
+ * calling `free(3)` to release memory for an `fd_set`.
+ *
+ * @param[out] f An fdset to squash.
+ * @post `f` holds no file descriptors.
+ */
+void rb_fd_term(rb_fdset_t *f);
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Sets an fd to a fdset.
+ *
+ * @param[in] fd A file descriptor.
+ * @param[out] f Target fdset.
+ * @post `f` holds `fd`.
+ */
+void rb_fd_set(int fd, rb_fdset_t *f);
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Destructively overwrites an fdset with another.
+ *
+ * @param[out] dst Target fdset.
+ * @param[in] src Source fdset.
+ * @param[in] max Maximum number of file descriptors to copy.
+ * @post `dst` is a copy of `src`.
+ */
+void rb_w32_fd_copy(rb_fdset_t *dst, const fd_set *src, int max);
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Identical to rb_w32_fd_copy(), except it copies unlimited number of file
+ * descriptors.
+ *
+ * @param[out] dst Target fdset.
+ * @param[in] src Source fdset.
+ * @post `dst` is a copy of `src`.
+ */
+void rb_w32_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
+
+RBIMPL_SYMBOL_EXPORT_END()
+
+RBIMPL_ATTR_NONNULL(())
+RBIMPL_ATTR_NOALIAS()
+/**
+ * Wipes out the current set of FDs.
+ *
+ * @param[out] f The fdset to clear.
+ * @post `f` has no FDs.
+ */
+static inline void
+rb_fd_zero(rb_fdset_t *f)
+{
+ f->fdset->fd_count = 0;
+}
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Releases a specific FD from the given fdset.
+ *
+ * @param[in] n Target FD.
+ * @param[out] f The fdset that holds `n`.
+ * @post `f` doesn't hold n.
+ */
+static inline void
+rb_fd_clr(int n, rb_fdset_t *f)
+{
+ rb_w32_fdclr(n, f->fdset);
+}
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Queries if the given FD is in the given set.
+ *
+ * @param[in] n Target FD.
+ * @param[in] f The fdset to scan.
+ * @retval 1 Yes there is.
+ * @retval 0 No there isn't.
+ */
+static inline int
+rb_fd_isset(int n, rb_fdset_t *f)
+{
+ return rb_w32_fdisset(n, f->fdset);
+}
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Destructively overwrites an fdset with another.
+ *
+ * @param[out] dst Target fdset.
+ * @param[in] src Source fdset.
+ * @param[in] n Maximum number of file descriptors to copy.
+ * @post `dst` is a copy of `src`.
+ */
+static inline void
+rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int n)
+{
+ rb_w32_fd_copy(dst, src, n);
+}
+
+RBIMPL_ATTR_NONNULL(())
+/**
+ * Identical to rb_fd_copy(), except it copies unlimited number of file
+ * descriptors.
+ *
+ * @param[out] dst Target fdset.
+ * @param[in] src Source fdset.
+ * @post `dst` is a copy of `src`.
+ */
+static inline void
+rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src)
+{
+ rb_w32_fd_dup(dst, src);
+}
+
+/**
+ * Waits for multiple file descriptors at once.
+ *
+ * @param[in] n Max FD in everything passed, plus one.
+ * @param[in,out] rfds Set of FDs to wait for reads.
+ * @param[in,out] wfds Set of FDs to wait for writes.
+ * @param[in,out] efds Set of FDs to wait for OOBs.
+ * @param[in,out] timeout Max blocking duration.
+ * @retval -1 Failed, errno set.
+ * @retval 0 Timeout exceeded.
+ * @retval otherwise Total number of file descriptors returned.
+ * @post `rfds` contains readable FDs.
+ * @post `wfds` contains writable FDs.
+ * @post `efds` contains exceptional FDs.
+ * @post `timeout` is the time left.
+ * @note All pointers are allowed to be null pointers.
+ *
+ * @internal
+ *
+ * This can wait for `SOCKET` and `HANDLE` at once. In order to achieve that
+ * property we heavily touch the internals of MSVCRT. We `CreateFile` a
+ * `"NUL"` alongside of a socket and directly manipulate its `struct ioinfo`.
+ * This is of course a very dirty hack. If we could design the API today we
+ * could use `CancelIoEx`. But we are older than that Win32 API.
+ */
+static inline int
+rb_fd_select(int n, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout)
+{
+ return rb_w32_select(
+ n,
+ rfds ? rfds->fdset : NULL,
+ wfds ? wfds->fdset : NULL,
+ efds ? efds->fdset : NULL,
+ timeout);
+}
+
+RBIMPL_ATTR_NONNULL(())
+RBIMPL_ATTR_PURE()
+/**
+ * Raw pointer to `fd_set`.
+ *
+ * @param[in] f Target fdset.
+ * @retval NULL `f` is already terminated by rb_fd_term().
+ * @retval otherwise Underlying fd_set.
+ *
+ * @internal
+ *
+ * Extension library must not touch raw pointers. It was a bad idea to let
+ * them use it.
+ */
+static inline fd_set *
+rb_fd_ptr(const rb_fdset_t *f)
+{
+ return f->fdset;
+}
+
+RBIMPL_ATTR_NONNULL(())
+RBIMPL_ATTR_PURE_UNLESS_DEBUG()
+/**
+ * It seems this function has no use. Maybe just remove?
+ *
+ * @param[in] f A set.
+ * @return Number of file descriptors stored.
+ */
+static inline int
+rb_fd_max(const rb_fdset_t *f)
+{
+ const fd_set *p = f->fdset;
+
+ RBIMPL_ASSERT_OR_ASSUME(p);
+ return RBIMPL_CAST((int)p->fd_count);
+}
+
+#endif /* RBIMPL_INTERN_SELECT_WIN32_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/signal.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/signal.h
index 84f755840..477378865 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/signal.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/signal.h
@@ -97,7 +97,7 @@ RBIMPL_ATTR_NONNULL(())
* - Case #11: When signo and PID are both negative, the behaviour of this
* function depends on how `killpg(3)` works. On Linux, it seems such
* attempt is strictly prohibited and `Errno::EINVAL` is raised. But on
- * macOS, it seems it tries to to send the signal actually to the process
+ * macOS, it seems it tries to send the signal actually to the process
* group.
*
* @note Above description is in fact different from how `kill(2)` works.
@@ -113,12 +113,6 @@ RBIMPL_ATTR_NONNULL(())
*/
VALUE rb_f_kill(int argc, const VALUE *argv);
-/* This must be private, @shyouhei guesses. */
-#ifdef POSIX_SIGNAL
-#define posix_signal ruby_posix_signal
-void (*posix_signal(int, void (*)(int)))(int);
-#endif
-
RBIMPL_ATTR_PURE()
/**
* Queries the name of the signal. It returns for instance `"KILL"` for
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/string.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/string.h
index 3083125e5..4573ec126 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/string.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/string.h
@@ -412,7 +412,7 @@ VALUE rb_utf8_str_new_static(const char *ptr, long len);
/**
* Identical to rb_interned_str(), except it takes a Ruby's string instead of
- * C's. It can also be seen as a routine identical to to rb_str_new_shared(),
+ * C's. It can also be seen as a routine identical to rb_str_new_shared(),
* except it returns an infamous "f"string.
*
* @param[in] str An object of ::RString.
@@ -454,7 +454,7 @@ VALUE rb_interned_str(const char *ptr, long len);
RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_interned_str(), except it assumes the passed pointer is a
- * pointer to a C's string. It can also be seen as a routine identical to to
+ * pointer to a C's string. It can also be seen as a routine identical to
* rb_str_to_interned_str(), except it takes a C's string instead of Ruby's.
* Or it can also be seen as a routine identical to rb_str_new_cstr(), except
* it returns an infamous "f"string.
@@ -1686,10 +1686,10 @@ rbimpl_exc_new_cstr(VALUE exc, const char *str)
* Length of a string literal.
*
* @param[in] str A C String literal.
- * @return An integer constant expression that represents `str`'s length,
- * in bytes, not including the terminating NUL character.
+ * @return An integer constant expression that represents the number of
+ * `str`'s elements, not including the terminating NUL character.
*/
-#define rb_strlen_lit(str) (sizeof(str "") - 1)
+#define rb_strlen_lit(str) ((sizeof(str "") / sizeof(str ""[0])) - 1)
/**
* Identical to rb_str_new_static(), except it cannot take string variables.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/struct.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/struct.h
index 312cf444e..16b3fad4e 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/struct.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/struct.h
@@ -46,14 +46,16 @@ VALUE rb_struct_new(VALUE klass, ...);
*
* @param[in] name Name of the class.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post Global toplevel constant `name` is defined.
* @note `name` is allowed to be a null pointer. This function creates
* an anonymous struct class then.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -70,14 +72,16 @@ RBIMPL_ATTR_NONNULL((2))
* @param[out] space Namespace that the defining class shall reside.
* @param[in] name Name of the class.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post `name` is a constant under `space`.
* @note In contrast to rb_struct_define(), it doesn't make any sense to
* pass a null pointer to this function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_struct_define_under(VALUE space, const char *name, ...);
@@ -164,10 +168,10 @@ VALUE rb_struct_alloc_noinit(VALUE klass);
* @param[in] super Superclass of the defining class.
* @param[in] func Must be 0 for extension libraries.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post Global toplevel constant `name` is defined.
* @note `name` is allowed to be a null pointer. This function creates
@@ -187,17 +191,35 @@ RBIMPL_ATTR_NONNULL((2))
* @param[in] super Superclass of the defining class.
* @param[in] alloc Must be 0 for extension libraries.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `class_name` is not a constant name.
* @exception rb_eTypeError `class_name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post `class_name` is a constant under `outer`.
* @note In contrast to rb_struct_define_without_accessor(), it doesn't
* make any sense to pass a null name.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
+/**
+ * Defines an anonymous data class.
+ *
+ * @endinternal
+ *
+ * @param[in] super Superclass of the defining class. Must be a
+ * descendant of ::rb_cData, or 0 as ::rb_cData.
+ * @param[in] ... Arbitrary number of `const char*`, terminated by
+ * NULL. Each of which are the name of fields.
+ * @exception rb_eArgError Duplicated field name.
+ * @return The defined class.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
+ */
+VALUE rb_data_define(VALUE super, ...);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RBIMPL_INTERN_STRUCT_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/intern/vm.h b/ThirdParty/include/ruby/mac/ruby/internal/intern/vm.h
index 76af796b5..29e0c7f53 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/intern/vm.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/intern/vm.h
@@ -229,8 +229,7 @@ void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func);
* restrict creation of an instance of a class. For example it rarely makes
* sense for a DB adaptor class to allow programmers creating DB row objects
* without querying the DB itself. You can kill sporadic creation of such
- * objects then, by nullifying the allocator function using this API. Your
- * object shall be allocated using #RB_NEWOBJ_OF() directly.
+ * objects then, by nullifying the allocator function using this API.
*
* @param[out] klass The class to modify.
* @pre `klass` must be an instance of Class.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/interpreter.h b/ThirdParty/include/ruby/mac/ruby/internal/interpreter.h
index 662d39c0e..a10e7ad2d 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/interpreter.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/interpreter.h
@@ -141,7 +141,7 @@ void ruby_show_copyright(void);
*
* @param[in] addr A pointer somewhere on the stack, near its bottom.
*/
-void ruby_init_stack(volatile VALUE *addr);
+void ruby_init_stack(void *addr);
/**
* Initializes the VM and builtin libraries.
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/memory.h b/ThirdParty/include/ruby/mac/ruby/internal/memory.h
index 6884db195..cd099f85d 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/memory.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/memory.h
@@ -40,7 +40,12 @@
#if defined(_MSC_VER) && defined(_WIN64)
# include
+# if defined(_M_AMD64)
# pragma intrinsic(_umul128)
+# endif
+# if defined(_M_ARM64)
+# pragma intrinsic(__umulh)
+# endif
#endif
#include "ruby/internal/attr/alloc_size.h"
@@ -56,13 +61,14 @@
#include "ruby/internal/has/builtin.h"
#include "ruby/internal/stdalign.h"
#include "ruby/internal/stdbool.h"
+#include "ruby/internal/stdckdint.h"
#include "ruby/internal/xmalloc.h"
#include "ruby/backward/2/limits.h"
#include "ruby/backward/2/long_long.h"
#include "ruby/backward/2/assume.h"
#include "ruby/defines.h"
-/** @cond INTENAL_MACRO */
+/** @cond INTERNAL_MACRO */
/* Make alloca work the best possible way. */
#if defined(alloca)
@@ -402,7 +408,8 @@ typedef uint128_t DSIZE_T;
/**
* @private
*
- * This is an implementation detail of rbimpl_size_mul_overflow().
+ * This is an implementation detail of rbimpl_size_mul_overflow() and
+ * rbimpl_size_add_overflow().
*
* @internal
*
@@ -410,9 +417,9 @@ typedef uint128_t DSIZE_T;
* nothing more than std::variant if we could use recent C++, but
* reality is we cannot.
*/
-struct rbimpl_size_mul_overflow_tag {
- bool left; /**< Whether overflow happened or not. */
- size_t right; /**< Multiplication result. */
+struct rbimpl_size_overflow_tag {
+ bool overflowed; /**< Whether overflow happened or not. */
+ size_t result; /**< Calculation result. */
};
RBIMPL_SYMBOL_EXPORT_BEGIN()
@@ -482,6 +489,18 @@ RBIMPL_ATTR_NORETURN()
*/
void ruby_malloc_size_overflow(size_t x, size_t y);
+RBIMPL_ATTR_NORETURN()
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @exception rb_eArgError `x` + `y` would integer overflow.
+ */
+void ruby_malloc_add_size_overflow(size_t x, size_t y);
+
#ifdef HAVE_RB_GC_GUARDED_PTR_VAL
volatile VALUE *rb_gc_guarded_ptr_val(volatile VALUE *ptr, VALUE val);
#endif
@@ -554,39 +573,46 @@ RBIMPL_ATTR_CONST()
*
* @param[in] x Arbitrary value.
* @param[in] y Arbitrary value.
- * @return `{ left, right }`, where `left` is whether there is an integer
- * overflow or not, and `right` is a (possibly overflowed) result
- * of `x` * `y`.
+ * @return `{ overflowed, result }`, where `overflowed` is whether there is
+ * an integer overflow or not, and `result` is a (possibly
+ * overflowed) result of `x` * `y`.
*
* @internal
*
* This is in fact also an implementation detail of ruby_xmalloc2() etc.
*/
-static inline struct rbimpl_size_mul_overflow_tag
+static inline struct rbimpl_size_overflow_tag
rbimpl_size_mul_overflow(size_t x, size_t y)
{
- struct rbimpl_size_mul_overflow_tag ret = { false, 0, };
+ struct rbimpl_size_overflow_tag ret = { false, 0, };
+
+#if defined(ckd_mul)
+ ret.overflowed = ckd_mul(&ret.result, x, y);
-#if RBIMPL_HAS_BUILTIN(__builtin_mul_overflow)
- ret.left = __builtin_mul_overflow(x, y, &ret.right);
+#elif RBIMPL_HAS_BUILTIN(__builtin_mul_overflow)
+ ret.overflowed = __builtin_mul_overflow(x, y, &ret.result);
#elif defined(DSIZE_T)
RB_GNUC_EXTENSION DSIZE_T dx = x;
RB_GNUC_EXTENSION DSIZE_T dy = y;
RB_GNUC_EXTENSION DSIZE_T dz = dx * dy;
- ret.left = dz > SIZE_MAX;
- ret.right = RBIMPL_CAST((size_t)dz);
+ ret.overflowed = dz > SIZE_MAX;
+ ret.result = RBIMPL_CAST((size_t)dz);
-#elif defined(_MSC_VER) && defined(_WIN64)
+#elif defined(_MSC_VER) && defined(_M_AMD64)
unsigned __int64 dp = 0;
unsigned __int64 dz = _umul128(x, y, &dp);
- ret.left = RBIMPL_CAST((bool)dp);
- ret.right = RBIMPL_CAST((size_t)dz);
+ ret.overflowed = RBIMPL_CAST((bool)dp);
+ ret.result = RBIMPL_CAST((size_t)dz);
+
+#elif defined(_MSC_VER) && defined(_M_ARM64)
+ ret.overflowed = __umulh(x, y) != 0;
+ ret.result = x * y;
#else
/* https://wiki.sei.cmu.edu/confluence/display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap */
- ret.left = (y != 0) && (x > SIZE_MAX / y);
- ret.right = x * y;
+ ret.overflowed = (y != 0) && (x > SIZE_MAX / y);
+ ret.result = x * y;
#endif
return ret;
@@ -610,11 +636,11 @@ rbimpl_size_mul_overflow(size_t x, size_t y)
static inline size_t
rbimpl_size_mul_or_raise(size_t x, size_t y)
{
- struct rbimpl_size_mul_overflow_tag size =
+ struct rbimpl_size_overflow_tag size =
rbimpl_size_mul_overflow(x, y);
- if (RB_LIKELY(! size.left)) {
- return size.right;
+ if (RB_LIKELY(! size.overflowed)) {
+ return size.result;
}
else {
ruby_malloc_size_overflow(x, y);
@@ -622,6 +648,81 @@ rbimpl_size_mul_or_raise(size_t x, size_t y)
}
}
+#if defined(__DOXYGEN__)
+RBIMPL_ATTR_CONSTEXPR(CXX14)
+#elif RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
+RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70507 */
+#elif RBIMPL_COMPILER_SINCE(Clang, 7, 0, 0)
+RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://bugs.llvm.org/show_bug.cgi?id=37633 */
+#endif
+RBIMPL_ATTR_CONST()
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @return `{ overflowed, result }`, where `overflowed` is whether there is
+ * an integer overflow or not, and `result` is a (possibly
+ * overflowed) result of `x` + `y`.
+ *
+ * @internal
+ */
+static inline struct rbimpl_size_overflow_tag
+rbimpl_size_add_overflow(size_t x, size_t y)
+{
+ struct rbimpl_size_overflow_tag ret = { false, 0, };
+
+#if defined(ckd_add)
+ ret.overflowed = ckd_add(&ret.result, x, y);
+
+#elif RBIMPL_HAS_BUILTIN(__builtin_add_overflow)
+ ret.overflowed = __builtin_add_overflow(x, y, &ret.result);
+
+#elif defined(DSIZE_T)
+ RB_GNUC_EXTENSION DSIZE_T dx = x;
+ RB_GNUC_EXTENSION DSIZE_T dy = y;
+ RB_GNUC_EXTENSION DSIZE_T dz = dx + dy;
+ ret.overflowed = dz > SIZE_MAX;
+ ret.result = (size_t)dz;
+
+#else
+ ret.result = x + y;
+ ret.overflowed = ret.result < y;
+
+#endif
+
+ return ret;
+}
+
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @exception rb_eArgError Multiplication could integer overflow.
+ * @return `x` + `y`.
+ *
+ * @internal
+ */
+static inline size_t
+rbimpl_size_add_or_raise(size_t x, size_t y)
+{
+ struct rbimpl_size_overflow_tag size =
+ rbimpl_size_add_overflow(x, y);
+
+ if (RB_LIKELY(!size.overflowed)) {
+ return size.result;
+ }
+ else {
+ ruby_malloc_add_size_overflow(x, y);
+ RBIMPL_UNREACHABLE_RETURN(0);
+ }
+}
+
/**
* This is an implementation detail of #RB_ALLOCV_N(). People don't use this
* directly.
@@ -639,7 +740,7 @@ rbimpl_size_mul_or_raise(size_t x, size_t y)
static inline void *
rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
{
- const size_t total_size = rbimpl_size_mul_or_raise(count, elsize);
+ const size_t total_size = rbimpl_size_mul_or_raise(RBIMPL_CAST((size_t)count), elsize);
const size_t cnt = (total_size + sizeof(VALUE) - 1) / sizeof(VALUE);
return rb_alloc_tmp_buffer_with_count(store, total_size, cnt);
}
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/module.h b/ThirdParty/include/ruby/mac/ruby/internal/module.h
index d678dd210..97b0b2b8b 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/module.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/module.h
@@ -56,8 +56,8 @@ RBIMPL_ATTR_NONNULL(())
* @post Top-level constant named `name` refers the returned class.
* @note If a class named `name` is already defined and its superclass is
* `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -75,8 +75,8 @@ RBIMPL_ATTR_NONNULL(())
* constant is not a module.
* @return The created module.
* @post Top-level constant named `name` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move modules returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -103,8 +103,8 @@ RBIMPL_ATTR_NONNULL(())
* @post `outer::name` refers the returned class.
* @note If a class named `name` is already defined and its superclass
* is `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super);
@@ -118,8 +118,8 @@ RBIMPL_ATTR_NONNULL(())
* the constant is not a class.
* @return The created module.
* @post `outer::name` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move modules returned by this
+ * function. They are immortal.
*/
VALUE rb_define_module_under(VALUE outer, const char *name);
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/newobj.h b/ThirdParty/include/ruby/mac/ruby/internal/newobj.h
index a8a5557a2..6eee2fa5f 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/newobj.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/newobj.h
@@ -29,63 +29,14 @@
#include "ruby/internal/value.h"
#include "ruby/assert.h"
-/**
- * Declares, allocates, then assigns a new object to the given variable.
- *
- * @param obj Variable name.
- * @param type Variable type.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, not initialised.
- * @note Modern programs tend to use #NEWOBJ_OF instead.
- *
- * @internal
- *
- * :FIXME: Should we deprecate it?
- */
-#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj())
-
-/**
- * Identical to #RB_NEWOBJ, except it also accepts the allocating object's
- * class and flags.
- *
- * @param obj Variable name.
- * @param type Variable type.
- * @param klass Object's class.
- * @param flags Object's flags.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, filled with the arguments.
- */
-#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags))
-
-#define NEWOBJ RB_NEWOBJ /**< @old{RB_NEWOBJ} */
-#define NEWOBJ_OF RB_NEWOBJ_OF /**< @old{RB_NEWOBJ_OF} */
#define OBJSETUP rb_obj_setup /**< @old{rb_obj_setup} */
#define CLONESETUP rb_clone_setup /**< @old{rb_clone_setup} */
#define DUPSETUP rb_dup_setup /**< @old{rb_dup_setup} */
RBIMPL_SYMBOL_EXPORT_BEGIN()
-/**
- * This is the implementation detail of #RB_NEWOBJ.
- *
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, not initialised.
- */
-VALUE rb_newobj(void);
-
-/**
- * This is the implementation detail of #RB_NEWOBJ_OF.
- *
- * @param klass Object's class.
- * @param flags Object's flags.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, filled with the arguments.
- */
-VALUE rb_newobj_of(VALUE klass, VALUE flags);
-
/**
* Fills common fields in the object.
*
- * @note Prefer rb_newobj_of() to this function.
* @param[in,out] obj A Ruby object to be set up.
* @param[in] klass `obj` will belong to this class.
* @param[in] type One of ::ruby_value_type.
@@ -172,6 +123,8 @@ RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#clone works."))
static inline void
rb_clone_setup(VALUE clone, VALUE obj)
{
+ (void)clone;
+ (void)obj;
return;
}
@@ -189,6 +142,8 @@ RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#dup works."))
static inline void
rb_dup_setup(VALUE dup, VALUE obj)
{
+ (void)dup;
+ (void)obj;
return;
}
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/rgengc.h b/ThirdParty/include/ruby/mac/ruby/internal/rgengc.h
deleted file mode 100644
index 7ea04442f..000000000
--- a/ThirdParty/include/ruby/mac/ruby/internal/rgengc.h
+++ /dev/null
@@ -1,443 +0,0 @@
-#ifndef RBIMPL_RGENGC_H /*-*-C++-*-vi:se ft=cpp:*/
-#define RBIMPL_RGENGC_H
-/**
- * @file
- * @author Ruby developers
- * @copyright This file is a part of the programming language Ruby.
- * Permission is hereby granted, to either redistribute and/or
- * modify this file, provided that the conditions mentioned in the
- * file COPYING are met. Consult the file for details.
- * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
- * implementation details. Don't take them as canon. They could
- * rapidly appear then vanish. The name (path) of this header file
- * is also an implementation detail. Do not expect it to persist
- * at the place it is now. Developers are free to move it anywhere
- * anytime at will.
- * @note To ruby-core: remember that this header can be possibly
- * recursively included from extension libraries written in C++.
- * Do not expect for instance `__VA_ARGS__` is always available.
- * We assume C99 for ruby itself but we don't assume languages of
- * extension libraries. They could be written in C++98.
- * @brief RGENGC write-barrier APIs.
- * @see Sasada, K., "Gradual write-barrier insertion into a Ruby
- * interpreter", in proceedings of the 2019 ACM SIGPLAN
- * International Symposium on Memory Management (ISMM 2019), pp
- * 115-121, 2019. https://doi.org/10.1145/3315573.3329986
- */
-#include "ruby/internal/attr/artificial.h"
-#include "ruby/internal/attr/maybe_unused.h"
-#include "ruby/internal/attr/pure.h"
-#include "ruby/internal/dllexport.h"
-#include "ruby/internal/special_consts.h"
-#include "ruby/internal/stdbool.h"
-#include "ruby/internal/value.h"
-#include "ruby/assert.h"
-
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- */
-#undef USE_RGENGC
-#define USE_RGENGC 1
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable incremental GC feature. It
- * has to be set at the time ruby itself compiles. Makes no sense for 3rd
- * parties. It is safe for them to set this though; that just doesn't change
- * anything.
- */
-#ifndef USE_RINCGC
-# define USE_RINCGC 1
-#endif
-
-/**
- * @deprecated This macro seems broken. Setting this to anything other than
- * zero just doesn't compile. We need to KonMari.
- */
-#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT
-# define USE_RGENGC_LOGGING_WB_UNPROTECT 0
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RArray. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_ARRAY
-# define RGENGC_WB_PROTECTED_ARRAY 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RHash. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_HASH
-# define RGENGC_WB_PROTECTED_HASH 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RStruct. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_STRUCT
-# define RGENGC_WB_PROTECTED_STRUCT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RString. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_STRING
-# define RGENGC_WB_PROTECTED_STRING 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RObject. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_OBJECT
-# define RGENGC_WB_PROTECTED_OBJECT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RRegexp. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_REGEXP
-# define RGENGC_WB_PROTECTED_REGEXP 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RClass. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_CLASS
-# define RGENGC_WB_PROTECTED_CLASS 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RFloat. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_FLOAT
-# define RGENGC_WB_PROTECTED_FLOAT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RComplex. It has to be set at the time ruby itself compiles.
- * Makes no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_COMPLEX
-# define RGENGC_WB_PROTECTED_COMPLEX 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RRational. It has to be set at the time ruby itself compiles.
- * Makes no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_RATIONAL
-# define RGENGC_WB_PROTECTED_RATIONAL 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RBignum. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_BIGNUM
-# define RGENGC_WB_PROTECTED_BIGNUM 1
-#endif
-
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- *
- * @internal
- *
- * @shyouhei doesn't think anybody uses this right now.
- */
-#ifndef RGENGC_WB_PROTECTED_NODE_CREF
-# define RGENGC_WB_PROTECTED_NODE_CREF 1
-#endif
-
-/**
- * @defgroup rgengc Write barrier (WB) interfaces:
- *
- * @note The following core interfaces can be changed in the future. Please
- * catch up if you want to insert WB into C-extensions correctly.
- *
- * @{
- */
-
-/**
- * Declaration of a "back" pointer. This is a write barrier for new reference
- * from "old" generation to "young" generation. It writes `young` into
- * `*slot`, which is a pointer inside of `old`.
- *
- * @param[in] old An old object.
- * @param[in] slot A pointer inside of `old`.
- * @param[out] young A young object.
- */
-#define RB_OBJ_WRITE(old, slot, young) \
- RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
-
-/**
- * Identical to #RB_OBJ_WRITE(), except it doesn't write any values, but only a
- * WB declaration. `oldv` is replaced value with `b` (not used in current
- * Ruby).
- *
- * @param[in] old An old object.
- * @param[in] oldv An object previously stored inside of `old`.
- * @param[out] young A young object.
- */
-#define RB_OBJ_WRITTEN(old, oldv, young) \
- RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
-/** @} */
-
-#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW /**< @old{RB_OBJ_PROMOTED_RAW} */
-#define OBJ_PROMOTED RB_OBJ_PROMOTED /**< @old{RB_OBJ_PROMOTED} */
-#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT /**< @old{RB_OBJ_WB_UNPROTECT} */
-
-/**
- * Asserts that the passed object is not fenced by write barriers. Objects of
- * such property do not contribute to generational GCs. They are scanned
- * always.
- *
- * @param[out] x An object that would not be protected by the barrier.
- */
-#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
-
-/**
- * Identical to #RB_OBJ_WB_UNPROTECT(), except it can also assert that the
- * given object is of given type.
- *
- * @param[in] type One of `ARRAY`, `STRING`, etc.
- * @param[out] obj An object of `type` that would not be protected.
- *
- * @internal
- *
- * @shyouhei doesn't understand why this has to be visible from extensions.
- */
-#define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \
- (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
-
-/**
- * @private
- *
- * This is an implementation detail of rb_obj_wb_unprotect(). People don't use
- * it directly.
- */
-#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
-
-/** @cond INTERNAL_MACRO */
-#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
-/** @endcond */
-
-RBIMPL_SYMBOL_EXPORT_BEGIN()
-/**
- * This is the implementation of #RB_OBJ_WRITE(). People don't use it
- * directly.
- *
- * @param[in] old An object that points to `young`.
- * @param[out] young An object that is referenced from `old`.
- */
-void rb_gc_writebarrier(VALUE old, VALUE young);
-
-/**
- * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
- * directly.
- *
- * @param[out] obj An object that does not participate in WB.
- */
-void rb_gc_writebarrier_unprotect(VALUE obj);
-
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
-/**
- * @private
- *
- * This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People
- * don't use it directly.
- *
- * @param[in] objptr Don't know why this is a pointer to void but in
- * reality this is a pointer to an object that is about
- * to be un-protected.
- * @param[in] filename Pass C's `__FILE__` here.
- * @param[in] line Pass C's `__LINE__` here.
- */
-void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
-#endif
-
-RBIMPL_SYMBOL_EXPORT_END()
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * This is the implementation of #RB_OBJ_PROMOTED(). People don't use it
- * directly.
- *
- * @param[in] obj An object to query.
- * @retval true The object is "promoted".
- * @retval false The object is young. Have not experienced GC at all.
- */
-static inline bool
-RB_OBJ_PROMOTED_RAW(VALUE obj)
-{
- RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj));
- return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
-}
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Tests if the object is "promoted" -- that is, whether the object experienced
- * one or more GC marks.
- *
- * @param[in] obj An object to query.
- * @retval true The object is "promoted".
- * @retval false The object is young. Have not experienced GC at all.
- * @note Hello, is anyone actively calling this function? @shyouhei have
- * never seen any actual usages outside of the GC implementation
- * itself.
- */
-static inline bool
-RB_OBJ_PROMOTED(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return false;
- }
- else {
- return RB_OBJ_PROMOTED_RAW(obj);
- }
-}
-
-/**
- * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
- * directly.
- *
- * @param[out] x An object that does not participate in WB.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return x
- */
-static inline VALUE
-rb_obj_wb_unprotect(
- VALUE x,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
- RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line);
-#endif
- rb_gc_writebarrier_unprotect(x);
- return x;
-}
-
-/**
- * @private
- *
- * This is the implementation of #RB_OBJ_WRITTEN(). People don't use it
- * directly.
- *
- * @param[in] a An old object.
- * @param[in] oldv An object previously stored inside of `old`.
- * @param[out] b A young object.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return a
- */
-static inline VALUE
-rb_obj_written(
- VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- VALUE oldv,
- VALUE b,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
- RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);
-#endif
-
- if (!RB_SPECIAL_CONST_P(b)) {
- rb_gc_writebarrier(a, b);
- }
-
- return a;
-}
-
-/**
- * @private
- *
- * This is the implementation of #RB_OBJ_WRITE(). People don't use it
- * directly.
- *
- * @param[in] a An old object.
- * @param[in] slot A pointer inside of `old`.
- * @param[out] b A young object.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return a
- */
-static inline VALUE
-rb_obj_write(
- VALUE a, VALUE *slot, VALUE b,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#ifdef RGENGC_LOGGING_WRITE
- RGENGC_LOGGING_WRITE(a, slot, b, filename, line);
-#endif
-
- *slot = b;
-
- rb_obj_written(a, RUBY_Qundef /* ignore `oldv' now */, b, filename, line);
- return a;
-}
-
-#endif /* RBIMPL_RGENGC_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/scan_args.h b/ThirdParty/include/ruby/mac/ruby/internal/scan_args.h
index 1ed2bf636..2dbc1ee7b 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/scan_args.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/scan_args.h
@@ -75,7 +75,7 @@
* Pass keywords if current method is called with keywords, useful for argument
* delegation
*/
-#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p()
+#define RB_PASS_CALLED_KEYWORDS !!rb_keyword_given_p()
/** @} */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/special_consts.h b/ThirdParty/include/ruby/mac/ruby/internal/special_consts.h
index dc0a6b41d..1e2636da4 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/special_consts.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/special_consts.h
@@ -156,7 +156,7 @@ RB_TEST(VALUE obj)
*
* RTEST(v) can be 0 if and only if (v == Qfalse || v == Qnil).
*/
- return obj & ~RUBY_Qnil;
+ return obj & RBIMPL_CAST((VALUE)~RUBY_Qnil);
}
RBIMPL_ATTR_CONST()
@@ -226,7 +226,7 @@ RB_NIL_OR_UNDEF_P(VALUE obj)
*
* NIL_OR_UNDEF_P(v) can be true only when v is Qundef or Qnil.
*/
- const VALUE mask = ~(RUBY_Qundef ^ RUBY_Qnil);
+ const VALUE mask = RBIMPL_CAST((VALUE)~(RUBY_Qundef ^ RUBY_Qnil));
const VALUE common_bits = RUBY_Qundef & RUBY_Qnil;
return (obj & mask) == common_bits;
}
@@ -326,7 +326,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_SPECIAL_CONST_P(VALUE obj)
{
- return RB_IMMEDIATE_P(obj) || obj == RUBY_Qfalse;
+ return (obj == RUBY_Qfalse) || RB_IMMEDIATE_P(obj);
}
RBIMPL_ATTR_CONST()
@@ -346,7 +346,7 @@ RBIMPL_ATTR_CONSTEXPR(CXX11)
static inline VALUE
rb_special_const_p(VALUE obj)
{
- return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
+ return (unsigned int)RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
}
/**
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/static_assert.h b/ThirdParty/include/ruby/mac/ruby/internal/static_assert.h
index 594c2b291..7f00bc21e 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/static_assert.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/static_assert.h
@@ -23,6 +23,7 @@
#include
#include "ruby/internal/has/extension.h"
#include "ruby/internal/compiler_since.h"
+#include "ruby/internal/attr/maybe_unused.h"
/** @cond INTERNAL_MACRO */
#if defined(__cplusplus) && defined(__cpp_static_assert)
@@ -71,7 +72,7 @@
#else
# define RBIMPL_STATIC_ASSERT(name, expr) \
- typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
+ RBIMPL_ATTR_MAYBE_UNUSED() typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
#endif
#endif /* RBIMPL_STATIC_ASSERT_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/stdbool.h b/ThirdParty/include/ruby/mac/ruby/internal/stdbool.h
index 1ca61136b..5d9026434 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/stdbool.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/stdbool.h
@@ -27,25 +27,13 @@
#elif defined(__cplusplus)
# /* bool is a keyword in C++. */
-# if defined(HAVE_STDBOOL_H) && (__cplusplus >= 201103L)
-# include
-# endif
-#
# ifndef __bool_true_false_are_defined
# define __bool_true_false_are_defined
# endif
-#elif defined(HAVE_STDBOOL_H)
-# /* Take stdbool.h definition. */
+#else
+# /* Take stdbool.h definition. It exists since GCC 3.0 and VS 2015. */
# include
-
-#elif !defined(HAVE__BOOL)
-typedef unsigned char _Bool;
-# /* See also http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2229.htm */
-# define bool _Bool
-# define true ((_Bool)+1)
-# define false ((_Bool)+0)
-# define __bool_true_false_are_defined
#endif
#endif /* RBIMPL_STDBOOL_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/stdckdint.h b/ThirdParty/include/ruby/mac/ruby/internal/stdckdint.h
new file mode 100644
index 000000000..e5b5b8b75
--- /dev/null
+++ b/ThirdParty/include/ruby/mac/ruby/internal/stdckdint.h
@@ -0,0 +1,68 @@
+#ifndef RBIMPL_STDCKDINT_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_STDCKDINT_H
+/**
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief C23 shim for
+ */
+#include "ruby/internal/config.h"
+#include "ruby/internal/cast.h"
+#include "ruby/internal/has/builtin.h"
+#include "ruby/internal/stdbool.h"
+
+#ifdef __has_include
+# if __has_include()
+# /* Conforming C23 situation; e.g. recent clang */
+# define RBIMPL_HAVE_STDCKDINT_H
+# endif
+#endif
+
+#ifdef HAVE_STDCKDINT_H
+# /* Some OSes (most notably FreeBSD) have this file. */
+# define RBIMPL_HAVE_STDCKDINT_H
+#endif
+
+#ifdef __cplusplus
+# /* It seems OS/Compiler provided stdckdint.h tend not support C++ yet.
+# * Situations could improve someday but in a meantime let us work around.
+# */
+# undef RBIMPL_HAVE_STDCKDINT_H
+#endif
+
+#ifdef RBIMPL_HAVE_STDCKDINT_H
+# /* Take that. */
+# include
+
+#elif RBIMPL_HAS_BUILTIN(__builtin_add_overflow)
+# define ckd_add(x, y, z) RBIMPL_CAST((bool)__builtin_add_overflow((y), (z), (x)))
+# define ckd_sub(x, y, z) RBIMPL_CAST((bool)__builtin_sub_overflow((y), (z), (x)))
+# define ckd_mul(x, y, z) RBIMPL_CAST((bool)__builtin_mul_overflow((y), (z), (x)))
+# define __STDC_VERSION_STDCKDINT_H__ 202311L
+
+#/* elif defined(__cplusplus) */
+#/* :TODO: if we assume C++11 we can use `` to implement them. */
+
+#else
+# /* intentionally leave them undefined */
+# /* to make `#ifdef ckd_add` etc. work as intended. */
+# undef ckd_add
+# undef ckd_sub
+# undef ckd_mul
+# undef __STDC_VERSION_STDCKDINT_H__
+#endif
+
+#endif /* RBIMPL_STDCKDINT_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/symbol.h b/ThirdParty/include/ruby/mac/ruby/internal/symbol.h
index 869a31115..3ffc5abc2 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/symbol.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/symbol.h
@@ -121,10 +121,17 @@ ID rb_intern_str(VALUE str);
* Retrieves the name mapped to the given id.
*
* @param[in] id An id to query.
- * @retval NULL No such id ever existed in the history.
+ * @retval NULL Unknown id.
* @retval otherwise A name that the id represents.
* @note The return value is managed by the interpreter. Don't pass it
* to free().
+ * @note The underlying name can contain internal NUL bytes, so the return
+ * value might be a truncated representation due to the nature of C
+ * strings.
+ * @note This C string is backed by an underlying Ruby string. The Ruby
+ * string may move during GC compaction which would make this
+ * C string point to invalid memory. Do not use the return value
+ * of this function after a potential GC entry point.
*/
const char *rb_id2name(ID id);
@@ -186,7 +193,8 @@ ID rb_check_id(volatile VALUE *namep);
ID rb_to_id(VALUE str);
/**
- * Identical to rb_id2name(), except it returns a Ruby's String instead of C's.
+ * Identical to rb_id2name(), except it returns a frozen Ruby String instead of
+ * a C String.
*
* @param[in] id An id to query.
* @retval RUBY_Qfalse No such id ever existed in the history.
@@ -201,14 +209,14 @@ ID rb_to_id(VALUE str);
VALUE rb_id2str(ID id);
/**
- * Identical to rb_id2str(), except it takes an instance of ::rb_cSymbol rather
- * than an ::ID.
+ * Obtain a frozen string representation of a symbol (not including the leading
+ * colon). Done without any object allocations.
*
- * @param[in] id An id to query.
- * @retval RUBY_Qfalse No such id ever existed in the history.
- * @retval otherwise An instance of ::rb_cString with the name of id.
+ * @param[in] symbol A ::rb_cSymbol instance to query.
+ * @return A frozen instance of ::rb_cString with the name of `symbol`.
+ * @note This does not create a permanent ::ID using the symbol.
*/
-VALUE rb_sym2str(VALUE id);
+VALUE rb_sym2str(VALUE symbol);
/**
* Identical to rb_intern_str(), except it generates a dynamic symbol if
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/value_type.h b/ThirdParty/include/ruby/mac/ruby/internal/value_type.h
index 977f60a00..aedd0abe4 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/value_type.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/value_type.h
@@ -96,10 +96,11 @@
#define RB_TYPE_P RB_TYPE_P
#define Check_Type Check_Type
-#if !RUBY_DEBUG
-# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
+#ifdef RBIMPL_VA_OPT_ARGS
+# define RBIMPL_ASSERT_TYPE(v, t) \
+ RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t), "actual type: %d", rb_type(v))
#else
-# define RBIMPL_ASSERT_TYPE Check_Type
+# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t))
#endif
/** @endcond */
@@ -443,7 +444,7 @@ Check_Type(VALUE v, enum ruby_value_type t)
}
unexpected_type:
- rb_unexpected_type(v, t);
+ rb_unexpected_type(v, RBIMPL_CAST((int)t));
}
#endif /* RBIMPL_VALUE_TYPE_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/internal/xmalloc.h b/ThirdParty/include/ruby/mac/ruby/internal/xmalloc.h
index 57552e4e7..132bc478c 100644
--- a/ThirdParty/include/ruby/mac/ruby/internal/xmalloc.h
+++ b/ThirdParty/include/ruby/mac/ruby/internal/xmalloc.h
@@ -283,110 +283,6 @@ void ruby_xfree(void *ptr)
RBIMPL_ATTR_NOEXCEPT(free(ptr))
;
-#if USE_GC_MALLOC_OBJ_INFO_DETAILS
-# define ruby_xmalloc(s1) ruby_xmalloc_with_location(s1, __FILE__, __LINE__)
-# define ruby_xmalloc2(s1, s2) ruby_xmalloc2_with_location(s1, s2, __FILE__, __LINE__)
-# define ruby_xcalloc(s1, s2) ruby_xcalloc_with_location(s1, s2, __FILE__, __LINE__)
-# define ruby_xrealloc(ptr, s1) ruby_xrealloc_with_location(ptr, s1, __FILE__, __LINE__)
-# define ruby_xrealloc2(ptr, s1, s2) ruby_xrealloc2_with_location(ptr, s1, s2, __FILE__, __LINE__)
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1))
-void *ruby_xmalloc_body(size_t size)
-RBIMPL_ATTR_NOEXCEPT(malloc(size))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1,2))
-void *ruby_xmalloc2_body(size_t nelems, size_t elemsiz)
-RBIMPL_ATTR_NOEXCEPT(malloc(nelems * elemsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1,2))
-void *ruby_xcalloc_body(size_t nelems, size_t elemsiz)
-RBIMPL_ATTR_NOEXCEPT(calloc(nelems, elemsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((2))
-void *ruby_xrealloc_body(void *ptr, size_t newsiz)
-RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((2,3))
-void *ruby_xrealloc2_body(void *ptr, size_t newelems, size_t newsiz)
-RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newelems * newsiz))
-;
-
-RUBY_EXTERN const char *ruby_malloc_info_file;
-RUBY_EXTERN int ruby_malloc_info_line;
-
-static inline void *
-ruby_xmalloc_with_location(size_t s, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xmalloc_body(s);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xmalloc2_with_location(size_t s1, size_t s2, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xmalloc2_body(s1, s2);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xcalloc_with_location(size_t s1, size_t s2, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xcalloc_body(s1, s2);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xrealloc_with_location(void *ptr, size_t s, const char *file, int line)
-{
- void *rptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- rptr = ruby_xrealloc_body(ptr, s);
- ruby_malloc_info_file = NULL;
- return rptr;
-}
-
-static inline void *
-ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file, int line)
-{
- void *rptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- rptr = ruby_xrealloc2_body(ptr, s1, s2);
- ruby_malloc_info_file = NULL;
- return rptr;
-}
-#endif
-
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RBIMPL_XMALLOC_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/io.h b/ThirdParty/include/ruby/mac/ruby/io.h
index 88029b1bb..d2fd3ed31 100644
--- a/ThirdParty/include/ruby/mac/ruby/io.h
+++ b/ThirdParty/include/ruby/mac/ruby/io.h
@@ -49,11 +49,11 @@
/** @endcond */
#include "ruby/internal/attr/const.h"
+#include "ruby/internal/attr/packed_struct.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
-#include "ruby/backward/2/attributes.h" /* PACKED_STRUCT_UNALIGNED */
// IO#wait, IO#wait_readable, IO#wait_writable, IO#wait_priority are defined by this implementation.
#define RUBY_IO_WAIT_METHODS
@@ -78,17 +78,20 @@ RUBY_EXTERN VALUE rb_eIOTimeoutError;
*
* This is visible from extension libraries because `io/wait` wants it.
*/
-typedef enum {
+enum rb_io_event {
RUBY_IO_READABLE = RB_WAITFD_IN, /**< `IO::READABLE` */
RUBY_IO_WRITABLE = RB_WAITFD_OUT, /**< `IO::WRITABLE` */
RUBY_IO_PRIORITY = RB_WAITFD_PRI, /**< `IO::PRIORITY` */
-} rb_io_event_t;
+};
+
+typedef enum rb_io_event rb_io_event_t;
/**
* IO buffers. This is an implementation detail of ::rb_io_t::wbuf and
* ::rb_io_t::rbuf. People don't manipulate it directly.
*/
-PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t {
+RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN()
+struct rb_io_internal_buffer {
/** Pointer to the underlying memory region, of at least `capa` bytes. */
char *ptr; /* off + len <= capa */
@@ -101,10 +104,10 @@ PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t {
/** Designed capacity of the buffer. */
int capa;
-});
+} RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END();
/** @alias{rb_io_buffer_t} */
-typedef struct rb_io_buffer_t rb_io_buffer_t;
+typedef struct rb_io_internal_buffer rb_io_buffer_t;
/** Decomposed encoding flags (e.g. `"enc:enc2""`). */
/*
@@ -113,7 +116,7 @@ typedef struct rb_io_buffer_t rb_io_buffer_t;
* e1 NULL force_encoding(e1) convert str.encoding to e1
* e1 e2 convert from e2 to e1 convert str.encoding to e2
*/
-struct rb_io_enc_t {
+struct rb_io_encoding {
/** Internal encoding. */
rb_encoding *enc;
/** External encoding. */
@@ -134,40 +137,51 @@ struct rb_io_enc_t {
VALUE ecopts;
};
+#ifndef HAVE_RB_IO_T
+#define HAVE_RB_IO_T 1
/** Ruby's IO, metadata and buffers. */
-typedef struct rb_io_t {
-
+struct rb_io {
/** The IO's Ruby level counterpart. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE self;
/** stdio ptr for read/write, if available. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
FILE *stdio_file;
/** file descriptor. */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_descriptor"))
int fd;
/** mode flags: FMODE_XXXs */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_mode"))
int mode;
/** child's pid (for pipes) */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_pid_t pid;
/** number of lines read */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int lineno;
/** pathname for file */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_path"))
VALUE pathv;
/** finalize proc */
- void (*finalize)(struct rb_io_t*,int);
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
+ void (*finalize)(struct rb_io*,int);
/** Write buffer. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t wbuf;
/**
* (Byte) read buffer. Note also that there is a field called
* ::rb_io_t::cbuf, which also concerns read IO.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t rbuf;
/**
@@ -175,20 +189,25 @@ typedef struct rb_io_t {
*
* @see rb_io_set_write_io()
*/
+ RBIMPL_ATTR_DEPRECATED(("rb_io_get_write_io"))
VALUE tied_io_for_writing;
- struct rb_io_enc_t encs; /**< Decomposed encoding flags. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
+ struct rb_io_encoding encs; /**< Decomposed encoding flags. */
/** Encoding converter used when reading from this IO. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_econv_t *readconv;
/**
* rb_io_ungetc() destination. This buffer is read before checking
* ::rb_io_t::rbuf
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t cbuf;
/** Encoding converter used when writing to this IO. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_econv_t *writeconv;
/**
@@ -197,21 +216,25 @@ typedef struct rb_io_t {
* conversion from encoding X to encoding Y does not exist, Ruby finds an
* encoding Z that bridges the two, so that X to Z to Y conversion happens.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE writeconv_asciicompat;
/** Whether ::rb_io_t::writeconv is already set up. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int writeconv_initialized;
/**
* Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before
* initialising ::rb_io_t::writeconv.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int writeconv_pre_ecflags;
/**
* Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising
* ::rb_io_t::writeconv.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE writeconv_pre_ecopts;
/**
@@ -221,25 +244,21 @@ typedef struct rb_io_t {
*
* This of course doesn't help inter-process IO interleaves, though.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE write_lock;
/**
* The timeout associated with this IO when performing blocking operations.
*/
+ RBIMPL_ATTR_DEPRECATED(("rb_io_timeout/rb_io_set_timeout"))
VALUE timeout;
-} rb_io_t;
+};
+#endif
-/** @alias{rb_io_enc_t} */
-typedef struct rb_io_enc_t rb_io_enc_t;
+typedef struct rb_io rb_io_t;
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- */
-#define HAVE_RB_IO_T 1
+/** @alias{rb_io_enc_t} */
+typedef struct rb_io_encoding rb_io_enc_t;
/**
* @name Possible flags for ::rb_io_t::mode
@@ -330,7 +349,16 @@ typedef struct rb_io_enc_t rb_io_enc_t;
* Setting this one and #FMODE_BINMODE at the same time is a contradiction.
*/
#define FMODE_TEXTMODE 0x00001000
-/* #define FMODE_PREP 0x00010000 */
+/**
+ * This flag means that an IO object is wrapping an "external" file descriptor,
+ * which is owned by something outside the Ruby interpreter (usually a C extension).
+ * Ruby will not close this file when the IO object is garbage collected.
+ * If this flag is set, then IO#autoclose? is false, and vice-versa.
+ *
+ * This flag was previously called FMODE_PREP internally.
+ */
+#define FMODE_EXTERNAL 0x00010000
+
/* #define FMODE_SIGNAL_ON_EPIPE 0x00020000 */
/**
@@ -344,6 +372,18 @@ typedef struct rb_io_enc_t rb_io_enc_t;
/** @} */
+/**
+ * Allocate a new IO object, with the given file descriptor.
+ */
+VALUE rb_io_open_descriptor(VALUE klass, int descriptor, int mode, VALUE path, VALUE timeout, struct rb_io_encoding *encoding);
+
+/**
+ * Returns whether or not the underlying IO is closed.
+ *
+ * @return Whether the underlying IO is closed.
+ */
+VALUE rb_io_closed_p(VALUE io);
+
/**
* Queries the underlying IO pointer.
*
@@ -414,14 +454,14 @@ rb_io_t *rb_io_make_open_file(VALUE obj);
* like this:
*
* ```CXX
- * typedef struct rb_io_t {
+ * typedef struct rb_io {
* FILE *f; // stdio ptr for read/write
* FILE *f2; // additional ptr for rw pipes
* int mode; // mode flags
* int pid; // child's pid (for pipes)
* int lineno; // number of lines read
* char *path; // pathname for file
- * void (*finalize) _((struct rb_io_t*,int)); // finalize proc
+ * void (*finalize) _((struct rb_io*,int)); // finalize proc
* } rb_io_t;
*```
*
@@ -702,6 +742,12 @@ VALUE rb_io_set_write_io(VALUE io, VALUE w);
*/
void rb_io_set_nonblock(rb_io_t *fptr);
+/**
+ * Returns the path for the given IO.
+ *
+ */
+VALUE rb_io_path(VALUE io);
+
/**
* Returns an integer representing the numeric file descriptor for
* io.
@@ -711,6 +757,12 @@ void rb_io_set_nonblock(rb_io_t *fptr);
*/
int rb_io_descriptor(VALUE io);
+/**
+ * Get the mode of the IO.
+ *
+ */
+int rb_io_mode(VALUE io);
+
/**
* This function breaks down the option hash that `IO#initialize` takes into
* components. This is an implementation detail of rb_io_extract_modeenc()
@@ -912,6 +964,9 @@ VALUE rb_io_wait(VALUE io, VALUE events, VALUE timeout);
* }
* ```
*
+ * On timeout, ::RUBY_Qfalse is returned. Unless you are specifically handling
+ * the timeouts, you should typically raise ::rb_eIOTimeoutError in this case.
+ *
* @param[in] error System errno.
* @param[in] io An IO object to wait.
* @param[in] events An integer set of interests.
@@ -920,19 +975,19 @@ VALUE rb_io_wait(VALUE io, VALUE events, VALUE timeout);
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
* @retval RUBY_Qfalse Operation timed out.
+ * @retval RUBY_Qnil Operation failed for some other reason (errno).
* @retval Otherwise Actual events reached.
*
- * @internal
- *
- * This function to return ::RUBY_Qfalse on timeout could be unintended. It
- * seems timeout feature has some rough edge.
*/
VALUE rb_io_maybe_wait(int error, VALUE io, VALUE events, VALUE timeout);
/**
* Blocks until the passed IO is ready for reading, if that makes sense for the
- * passed errno. This is a special case of rb_io_maybe_wait() that only
- * concerns for reading.
+ * passed errno. This is a special case of rb_io_maybe_wait() that is
+ * only concerned with reading and handles the timeout.
+ *
+ * If you do not want the default timeout handling, consider using
+ * ::rb_io_maybe_wait directly.
*
* @param[in] error System errno.
* @param[in] io An IO object to wait.
@@ -940,15 +995,18 @@ VALUE rb_io_maybe_wait(int error, VALUE io, VALUE events, VALUE timeout);
* @exception rb_eIOError `io` is not open.
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
- * @retval 0 Operation timed out.
+ * @exception rb_eIOTimeoutError The wait operation timed out.
* @retval Otherwise Always returns ::RUBY_IO_READABLE.
*/
int rb_io_maybe_wait_readable(int error, VALUE io, VALUE timeout);
/**
* Blocks until the passed IO is ready for writing, if that makes sense for the
- * passed errno. This is a special case of rb_io_maybe_wait() that only
- * concernsfor writing.
+ * passed errno. This is a special case of rb_io_maybe_wait() that is
+ * only concerned with writing, and handles the timeout.
+ *
+ * If you do not want the default timeout handling, consider using
+ * ::rb_io_maybe_wait directly.
*
* @param[in] error System errno.
* @param[in] io An IO object to wait.
@@ -956,7 +1014,7 @@ int rb_io_maybe_wait_readable(int error, VALUE io, VALUE timeout);
* @exception rb_eIOError `io` is not open.
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
- * @retval 0 Operation timed out.
+ * @exception rb_eIOTimeoutError The wait operation timed out.
* @retval Otherwise Always returns ::RUBY_IO_WRITABLE.
*/
int rb_io_maybe_wait_writable(int error, VALUE io, VALUE timeout);
diff --git a/ThirdParty/include/ruby/mac/ruby/io/buffer.h b/ThirdParty/include/ruby/mac/ruby/io/buffer.h
index 88e559806..e4d98bf05 100644
--- a/ThirdParty/include/ruby/mac/ruby/io/buffer.h
+++ b/ThirdParty/include/ruby/mac/ruby/io/buffer.h
@@ -23,10 +23,18 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
#define RUBY_IO_BUFFER_VERSION 2
+// The `IO::Buffer` class.
RUBY_EXTERN VALUE rb_cIOBuffer;
+
+// The operating system page size.
RUBY_EXTERN size_t RUBY_IO_BUFFER_PAGE_SIZE;
+
+// The default buffer size, usually a (small) multiple of the page size.
+// Can be overridden by the RUBY_IO_BUFFER_DEFAULT_SIZE environment variable.
RUBY_EXTERN size_t RUBY_IO_BUFFER_DEFAULT_SIZE;
+// Represents the internal state of the buffer.
+// More than one flag can be set at a time.
enum rb_io_buffer_flags {
// The memory in the buffer is owned by someone else.
// More specifically, it means that someone else owns the buffer and we shouldn't try to resize it.
@@ -49,21 +57,22 @@ enum rb_io_buffer_flags {
RB_IO_BUFFER_PRIVATE = 64,
// The buffer is read-only and cannot be modified.
- RB_IO_BUFFER_READONLY = 128
+ RB_IO_BUFFER_READONLY = 128,
+
+ // The buffer is backed by a file.
+ RB_IO_BUFFER_FILE = 256,
};
+// Represents the endian of the data types.
enum rb_io_buffer_endian {
+ // The least significant units are put first.
RB_IO_BUFFER_LITTLE_ENDIAN = 4,
RB_IO_BUFFER_BIG_ENDIAN = 8,
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
- RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
-#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#if defined(WORDS_BIGENDIAN)
RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
-#elif REG_DWORD == REG_DWORD_LITTLE_ENDIAN
+#else
RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
-#elif REG_DWORD == REG_DWORD_BIG_ENDIAN
- RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
#endif
RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN
@@ -75,9 +84,14 @@ VALUE rb_io_buffer_map(VALUE io, size_t size, rb_off_t offset, enum rb_io_buffer
VALUE rb_io_buffer_lock(VALUE self);
VALUE rb_io_buffer_unlock(VALUE self);
int rb_io_buffer_try_unlock(VALUE self);
+
VALUE rb_io_buffer_free(VALUE self);
+VALUE rb_io_buffer_free_locked(VALUE self);
-int rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size);
+// Access the internal buffer and flags. Validates the pointers.
+// The points may not remain valid if the source buffer is manipulated.
+// Consider using rb_io_buffer_lock if needed.
+enum rb_io_buffer_flags rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size);
void rb_io_buffer_get_bytes_for_reading(VALUE self, const void **base, size_t *size);
void rb_io_buffer_get_bytes_for_writing(VALUE self, void **base, size_t *size);
diff --git a/ThirdParty/include/ruby/mac/ruby/memory_view.h b/ThirdParty/include/ruby/mac/ruby/memory_view.h
index 1ddca2d46..42309d5af 100644
--- a/ThirdParty/include/ruby/mac/ruby/memory_view.h
+++ b/ThirdParty/include/ruby/mac/ruby/memory_view.h
@@ -47,10 +47,10 @@ typedef struct {
char format;
/** :FIXME: what is a "native" size is unclear. */
- unsigned native_size_p: 1;
+ bool native_size_p;
/** Endian of the component */
- unsigned little_endian_p: 1;
+ bool little_endian_p;
/** The component's offset. */
size_t offset;
diff --git a/ThirdParty/include/ruby/mac/ruby/onigmo.h b/ThirdParty/include/ruby/mac/ruby/onigmo.h
index 8d7c60170..db290cd47 100644
--- a/ThirdParty/include/ruby/mac/ruby/onigmo.h
+++ b/ThirdParty/include/ruby/mac/ruby/onigmo.h
@@ -636,6 +636,7 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
+#define ONIGERR_TIMEOUT -23
/* general error */
#define ONIGERR_INVALID_ARGUMENT -30
/* syntax error */
@@ -744,8 +745,6 @@ typedef struct {
typedef struct {
int lower;
int upper;
- long base_num;
- long inner_num;
} OnigRepeatRange;
typedef void (*OnigWarnFunc)(const char* s);
@@ -846,6 +845,8 @@ void onig_free(OnigRegex);
ONIG_EXTERN
void onig_free_body(OnigRegex);
ONIG_EXTERN
+int onig_reg_copy(OnigRegex* reg, OnigRegex orig_reg);
+ONIG_EXTERN
OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
ONIG_EXTERN
OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
diff --git a/ThirdParty/include/ruby/mac/ruby/random.h b/ThirdParty/include/ruby/mac/ruby/random.h
index 39bdb6f3e..f3df0d96f 100644
--- a/ThirdParty/include/ruby/mac/ruby/random.h
+++ b/ThirdParty/include/ruby/mac/ruby/random.h
@@ -11,7 +11,7 @@
*
* This is a set of APIs to roll your own subclass of ::rb_cRandom. An
* illustrative example of such PRNG can be found at
- * `ext/-test-/ramdom/loop.c`.
+ * `ext/-test-/random/loop.c`.
*/
#include "ruby/ruby.h"
diff --git a/ThirdParty/include/ruby/mac/ruby/re.h b/ThirdParty/include/ruby/mac/ruby/re.h
index 3892d6e7f..f86d6f26c 100644
--- a/ThirdParty/include/ruby/mac/ruby/re.h
+++ b/ThirdParty/include/ruby/mac/ruby/re.h
@@ -18,6 +18,7 @@
#include
+#include "ruby/onigmo.h"
#include "ruby/regex.h"
#include "ruby/internal/core/rmatch.h"
#include "ruby/internal/dllexport.h"
@@ -125,6 +126,30 @@ VALUE rb_reg_quote(VALUE str);
*/
regex_t *rb_reg_prepare_re(VALUE re, VALUE str);
+/**
+ * Runs a regular expression match using function `match`. Performs preparation,
+ * error handling, and memory cleanup.
+ *
+ * @param[in] re Target regular expression.
+ * @param[in] str What `re` is about to run on.
+ * @param[in] match The function to run to match `str` against `re`.
+ * @param[in] args Pointer to arguments to pass into `match`.
+ * @param[out] regs Registers on a successful match.
+ * @exception rb_eArgError `re` does not fit for `str`.
+ * @exception rb_eEncCompatError `re` and `str` are incompatible.
+ * @exception rb_eRegexpError `re` is malformed.
+ * @return Match position on a successful match, `ONIG_MISMATCH` otherwise.
+ *
+ * @internal
+ *
+ * The type `regex_t *` is defined in ``, _and_
+ * _conflicts_ with POSIX's ``. We can no longer save the situation
+ * at this point. Just don't mix the two.
+ */
+OnigPosition rb_reg_onig_match(VALUE re, VALUE str,
+ OnigPosition (*match)(regex_t *reg, VALUE str, struct re_registers *regs, void *args),
+ void *args, struct re_registers *regs);
+
/**
* Duplicates a match data. This is roughly the same as `onig_region_copy()`,
* except it tries to GC when there is not enough memory.
diff --git a/ThirdParty/include/ruby/mac/ruby/ruby.h b/ThirdParty/include/ruby/mac/ruby/ruby.h
index 444940ca3..035f02c70 100644
--- a/ThirdParty/include/ruby/mac/ruby/ruby.h
+++ b/ThirdParty/include/ruby/mac/ruby/ruby.h
@@ -43,7 +43,6 @@
#include "ruby/internal/method.h"
#include "ruby/internal/module.h"
#include "ruby/internal/newobj.h"
-#include "ruby/internal/rgengc.h"
#include "ruby/internal/scan_args.h"
#include "ruby/internal/special_consts.h"
#include "ruby/internal/symbol.h"
@@ -98,8 +97,10 @@ VALUE rb_get_path(VALUE obj);
VALUE rb_get_path_no_checksafe(VALUE);
/**
- * @deprecated This macro is an alias of #FilePathValue now. The part that did
- * "String" was deleted. It remains here because of no harm.
+ * This macro actually does the same thing as #FilePathValue now. The "String"
+ * part indicates that this is for when a string is treated like a pathname,
+ * rather than the actual pathname on the file systems. For examples:
+ * `Dir.fnmatch?`, `File.join`, `File.basename`, etc.
*/
#define FilePathStringValue(v) ((v) = rb_get_path(v))
@@ -271,6 +272,124 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 0)
*/
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#include
+
+/**
+ * @name Errno handling routines for userland threads
+ * @note POSIX chapter 2 section 3 states that for each thread of a process,
+ * the value of `errno` shall not be affected by function calls or
+ * assignments to `errno` by other threads.
+ *
+ * Soooo this `#define errno` below seems like a noob mistake at first sight.
+ * If you look at its actual implementation, the functions are just adding one
+ * level of indirection. It doesn't make any sense sorry? But yes! @ko1 told
+ * @shyouhei that this is inevitable.
+ *
+ * The ultimate reason is because Ruby now has N:M threads implemented.
+ * Threads of that sort change their context in user land. A function can be
+ * "transferred" between threads in middle of their executions. Let us for
+ * instance consider:
+ *
+ * ```cxx
+ * void foo()
+ * {
+ * auto i = errno;
+ * close(0);
+ * errno = i;
+ * }
+ * ```
+ *
+ * This function (if ran under our Ractor) could change its running thread at
+ * the `close` function. But the two `errno` invocations are different! Look
+ * how the source code above is compiled by clang 17 with `-O3` flag @ Linux:
+ *
+ * ```
+ * foo(int): # @foo(int)
+ * push rbp
+ * push r14
+ * push rbx
+ * mov ebx, edi
+ * call __errno_location@PLT
+ * mov r14, rax
+ * mov ebp, dword ptr [rax]
+ * mov edi, ebx
+ * call close@PLT
+ * mov dword ptr [r14], ebp
+ * pop rbx
+ * pop r14
+ * pop rbp
+ * ret
+ * ```
+ *
+ * Notice how `__errno_location@PLT` is `call`-ed only once. The compiler
+ * assumes that the location of `errno` does not change during a function call.
+ * Sadly this is no longer true for us. The `close@PLT` now changes threads,
+ * which should also change where `errno` is stored.
+ *
+ * With the `#define errno` below the compilation result changes to this:
+ *
+ * ```
+ * foo(int): # @foo(int)
+ * push rbp
+ * push rbx
+ * push rax
+ * mov ebx, edi
+ * call rb_errno_ptr()@PLT
+ * mov ebp, dword ptr [rax]
+ * mov edi, ebx
+ * call close@PLT
+ * call rb_errno_ptr()@PLT
+ * mov dword ptr [rax], ebp
+ * add rsp, 8
+ * pop rbx
+ * pop rbp
+ * ret
+ * ```
+ *
+ * Which fixes the problem.
+ */
+
+/**
+ * Identical to system `errno`.
+ *
+ * @return The last set `errno` number.
+ */
+int rb_errno(void);
+
+/**
+ * Set the errno.
+ *
+ * @param err New `errno`.
+ * @post `errno` is now set to `err`.
+ */
+void rb_errno_set(int err);
+
+/**
+ * The location of `errno`
+ *
+ * @return The (thread-specific) location of `errno`.
+ */
+int *rb_errno_ptr(void);
+
+/**
+ * Not sure if it is necessary for extension libraries but this is where the
+ * "bare" errno is located.
+ *
+ * @return The location of `errno`.
+ */
+static inline int *
+rb_orig_errno_ptr(void)
+{
+ return &errno;
+}
+
+#define rb_orig_errno errno /**< System-provided original `errno`. */
+#undef errno
+#define errno (*rb_errno_ptr()) /**< Ractor-aware version of `errno`. */
+
+/** @} */
+
+
/** @cond INTERNAL_MACRO */
#if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments")
# /* Skip it; clang -pedantic doesn't like the following */
diff --git a/ThirdParty/include/ruby/mac/ruby/st.h b/ThirdParty/include/ruby/mac/ruby/st.h
index 1e4bb8068..f35ab4360 100644
--- a/ThirdParty/include/ruby/mac/ruby/st.h
+++ b/ThirdParty/include/ruby/mac/ruby/st.h
@@ -98,6 +98,8 @@ struct st_table {
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
+size_t rb_st_table_size(const struct st_table *tbl);
+#define st_table_size rb_st_table_size
st_table *rb_st_init_table(const struct st_hash_type *);
#define st_init_table rb_st_init_table
st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t);
diff --git a/ThirdParty/include/ruby/mac/ruby/thread.h b/ThirdParty/include/ruby/mac/ruby/thread.h
index 0b5b1ca0f..7cbefc977 100644
--- a/ThirdParty/include/ruby/mac/ruby/thread.h
+++ b/ThirdParty/include/ruby/mac/ruby/thread.h
@@ -59,6 +59,19 @@
*/
#define RB_NOGVL_UBF_ASYNC_SAFE (0x2)
+/**
+ * Passing this flag to rb_nogvl() indicates that the passed function
+ * is safe to offload to a background thread or work pool. In other words, the
+ * function is safe to run using a fiber scheduler's `blocking_operation_wait`.
+ * hook.
+ *
+ * If your function depends on thread-local storage, or thread-specific data
+ * operations/data structures, you should not set this flag, as
+ * these operations may behave differently (or fail) when run in a different
+ * thread/context (e.g. unlocking a mutex).
+ */
+#define RB_NOGVL_OFFLOAD_SAFE (0x4)
+
/** @} */
RBIMPL_SYMBOL_EXPORT_BEGIN()
@@ -190,14 +203,59 @@ void *rb_nogvl(void *(*func)(void *), void *data1,
*/
#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_
-#define RUBY_INTERNAL_THREAD_EVENT_STARTED 1 << 0 /** thread started */
+/**
+ * Declare the current Ruby thread should acquire a dedicated
+ * native thread on M:N thread scheduler.
+ *
+ * If a C extension (or a library which the extension relies on) should
+ * keep to run on a native thread (e.g. using thread-local-storage),
+ * this function allocates a dedicated native thread for the thread.
+ *
+ * @return `false` if the thread already running on a dedicated native
+ * thread. Otherwise `true`.
+ */
+bool rb_thread_lock_native_thread(void);
+
+/**
+ * Triggered when a new thread is started.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
+#define RUBY_INTERNAL_THREAD_EVENT_STARTED 1 << 0
+
+/**
+* Triggered when a thread attempt to acquire the GVL.
+*
+* @note The callback will be called *without* the GVL held.
+*/
#define RUBY_INTERNAL_THREAD_EVENT_READY 1 << 1 /** acquiring GVL */
+
+/**
+ * Triggered when a thread successfully acquired the GVL.
+ *
+ * @note The callback will be called *with* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_RESUMED 1 << 2 /** acquired GVL */
+
+/**
+ * Triggered when a thread released the GVL.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_SUSPENDED 1 << 3 /** released GVL */
+
+/**
+ * Triggered when a thread exits.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_EXITED 1 << 4 /** thread terminated */
+
#define RUBY_INTERNAL_THREAD_EVENT_MASK 0xff /** All Thread events */
-typedef void rb_internal_thread_event_data_t; // for future extension.
+typedef struct rb_internal_thread_event_data {
+ VALUE thread;
+} rb_internal_thread_event_data_t;
typedef void (*rb_internal_thread_event_callback)(rb_event_flag_t event,
const rb_internal_thread_event_data_t *event_data,
@@ -211,7 +269,12 @@ typedef struct rb_internal_thread_event_hook rb_internal_thread_event_hook_t;
* @param[in] events A set of events that `func` should run.
* @param[in] data Passed as-is to `func`.
* @return An opaque pointer to the hook, to unregister it later.
- * @note This functionality is a noop on Windows.
+ * @note This functionality is a noop on Windows and WebAssembly.
+ * @note The callback will be called without the GVL held, except for the
+ * RESUMED event.
+ * @note Callbacks are not guaranteed to be executed on the native threads
+ * that corresponds to the Ruby thread. To identify which Ruby thread
+ * the event refers to, you must use `event_data->thread`.
* @warning This function MUST not be called from a thread event callback.
*/
rb_internal_thread_event_hook_t *rb_internal_thread_add_event_hook(
@@ -223,13 +286,53 @@ rb_internal_thread_event_hook_t *rb_internal_thread_add_event_hook(
* Unregister the passed hook.
*
* @param[in] hook. The hook to unregister.
- * @return Wether the hook was found and unregistered.
- * @note This functionality is a noop on Windows.
+ * @return Whether the hook was found and unregistered.
+ * @note This functionality is a noop on Windows and WebAssembly.
* @warning This function MUST not be called from a thread event callback.
*/
bool rb_internal_thread_remove_event_hook(
rb_internal_thread_event_hook_t * hook);
+
+typedef int rb_internal_thread_specific_key_t;
+#define RB_INTERNAL_THREAD_SPECIFIC_KEY_MAX 8
+/**
+ * Create a key to store thread specific data.
+ *
+ * These APIs are designed for tools using
+ * rb_internal_thread_event_hook APIs.
+ *
+ * Note that only `RB_INTERNAL_THREAD_SPECIFIC_KEY_MAX` keys
+ * can be created. raises `ThreadError` if exceeded.
+ *
+ * Usage:
+ * // at initialize time:
+ * int tool_key; // gvar
+ * Init_tool() {
+ * tool_key = rb_internal_thread_specific_key_create();
+ * }
+ *
+ * // at any timing:
+ * rb_internal_thread_specific_set(thread, tool_key, per_thread_data);
+ * ...
+ * per_thread_data = rb_internal_thread_specific_get(thread, tool_key);
+ */
+rb_internal_thread_specific_key_t rb_internal_thread_specific_key_create(void);
+
+/**
+ * Get thread and tool specific data.
+ *
+ * This function is async signal safe and thread safe.
+ */
+void *rb_internal_thread_specific_get(VALUE thread_val, rb_internal_thread_specific_key_t key);
+
+/**
+ * Set thread and tool specific data.
+ *
+ * This function is async signal safe and thread safe.
+ */
+void rb_internal_thread_specific_set(VALUE thread_val, rb_internal_thread_specific_key_t key, void *data);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RUBY_THREAD_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/thread_native.h b/ThirdParty/include/ruby/mac/ruby/thread_native.h
index c23b15e13..8217a6751 100644
--- a/ThirdParty/include/ruby/mac/ruby/thread_native.h
+++ b/ThirdParty/include/ruby/mac/ruby/thread_native.h
@@ -28,6 +28,11 @@ typedef union rb_thread_lock_union {
CRITICAL_SECTION crit;
} rb_nativethread_lock_t;
+struct rb_thread_cond_struct {
+ struct cond_event_entry *next;
+ struct cond_event_entry *prev;
+};
+
typedef struct rb_thread_cond_struct rb_nativethread_cond_t;
#elif defined(HAVE_PTHREAD_H)
diff --git a/ThirdParty/include/ruby/mac/ruby/util.h b/ThirdParty/include/ruby/mac/ruby/util.h
index e8727a320..12e69c4b8 100644
--- a/ThirdParty/include/ruby/mac/ruby/util.h
+++ b/ThirdParty/include/ruby/mac/ruby/util.h
@@ -33,9 +33,20 @@
RBIMPL_SYMBOL_EXPORT_BEGIN()
-/** an approximation of ceil(n * log10(2)), up to 65536 at least */
+/** an approximation of ceil(n * log10(2)), up to 1,048,576 (1<<20)
+ * without overflow within 32-bit calculation
+ */
#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999)
+/** an approximation of decimal representation size for n-bytes */
+#define DECIMAL_SIZE_OF_BYTES(n) DECIMAL_SIZE_OF_BITS((n) * CHAR_BIT)
+
+/**
+ * An approximation of decimal representation size. `expr` may be a
+ * type name
+ */
+#define DECIMAL_SIZE_OF(expr) DECIMAL_SIZE_OF_BYTES(sizeof(expr))
+
/**
* Character to number mapping like `'a'` -> `10`, `'b'` -> `11` etc. For
* punctuation etc., the value is -1. "36" terminology comes from the fact
diff --git a/ThirdParty/include/ruby/mac/ruby/version.h b/ThirdParty/include/ruby/mac/ruby/version.h
index 18b3abc8d..e9113177d 100644
--- a/ThirdParty/include/ruby/mac/ruby/version.h
+++ b/ThirdParty/include/ruby/mac/ruby/version.h
@@ -67,7 +67,7 @@
* Minor version. As of writing this version changes annually. Greater
* version doesn't mean "better"; they just mean years passed.
*/
-#define RUBY_API_VERSION_MINOR 2
+#define RUBY_API_VERSION_MINOR 4
/**
* Teeny version. This digit is kind of reserved these days. Kept 0 for the
diff --git a/ThirdParty/include/ruby/mac/ruby/vm.h b/ThirdParty/include/ruby/mac/ruby/vm.h
index 3458c28be..877978095 100644
--- a/ThirdParty/include/ruby/mac/ruby/vm.h
+++ b/ThirdParty/include/ruby/mac/ruby/vm.h
@@ -49,6 +49,13 @@ int ruby_vm_destruct(ruby_vm_t *vm);
*/
void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
+/**
+ * Returns whether the Ruby VM will free all memory at shutdown.
+ *
+ * @return true if free-at-exit is enabled, false otherwise.
+ */
+bool ruby_free_at_exit_p(void);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RUBY_VM_H */
diff --git a/ThirdParty/include/ruby/mac/ruby/win32.h b/ThirdParty/include/ruby/mac/ruby/win32.h
new file mode 100644
index 000000000..80e1418a1
--- /dev/null
+++ b/ThirdParty/include/ruby/mac/ruby/win32.h
@@ -0,0 +1,839 @@
+#ifndef RUBY_WIN32_H
+#define RUBY_WIN32_H 1
+
+#if defined(__cplusplus)
+extern "C" {
+#if 0
+} /* satisfy cc-mode */
+#endif
+#endif
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+/*
+ * Copyright (c) 1993, Intergraph Corporation
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the perl README file.
+ *
+ */
+
+/*
+ * Ok now we can include the normal include files.
+ */
+
+/* #include conflict with varargs.h? */
+#if !defined(WSAAPI)
+#if defined(__cplusplus) && defined(_MSC_VER)
+extern "C++" { /* template without extern "C++" */
+#endif
+#if !defined(_WIN64) && !defined(WIN32)
+#define WIN32
+#endif
+#if defined(_MSC_VER) && _MSC_VER <= 1200
+#include
+#endif
+#include
+#include
+#include
+#if !defined(_MSC_VER) || _MSC_VER >= 1400
+#include
+#endif
+#if defined(__cplusplus) && defined(_MSC_VER)
+}
+#endif
+#endif
+
+/*
+ * We're not using Microsoft's "extensions" to C for
+ * Structured Exception Handling (SEH) so we can nuke these
+ */
+#undef try
+#undef except
+#undef finally
+#undef leave
+
+#include
+#include
+#include
+#include
+#include
+#include
+#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
+extern "C++" { /* template without extern "C++" */
+#endif
+#include
+#if defined(__cplusplus) && defined(_MSC_VER) && _MSC_VER == 1200
+}
+#endif
+#include
+#include
+#include
+#ifdef HAVE_SYS_UTIME_H
+# include
+#else
+# include
+#endif
+#include
+#include
+#if defined __MINGW32__
+# include
+#else
+# if !defined(_INTPTR_T_DEFINED)
+# ifdef _WIN64
+typedef __int64 intptr_t;
+# else
+typedef int intptr_t;
+# endif
+# define _INTPTR_T_DEFINED
+# endif
+# if !defined(INTPTR_MAX)
+# ifdef _WIN64
+# define INTPTR_MAX 9223372036854775807I64
+# else
+# define INTPTR_MAX 2147483647
+# endif
+# define INTPTR_MIN (-INTPTR_MAX-1)
+# endif
+# if !defined(_UINTPTR_T_DEFINED)
+# ifdef _WIN64
+typedef unsigned __int64 uintptr_t;
+# else
+typedef unsigned int uintptr_t;
+# endif
+# define _UINTPTR_T_DEFINED
+# endif
+# if !defined(UINTPTR_MAX)
+# ifdef _WIN64
+# define UINTPTR_MAX 18446744073709551615UI64
+# else
+# define UINTPTR_MAX 4294967295U
+# endif
+# endif
+#endif
+#ifndef __MINGW32__
+# define mode_t int
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif
+
+#define rb_w32_iswinnt() TRUE
+#define rb_w32_iswin95() FALSE
+
+#define WNOHANG -1
+
+#define O_SHARE_DELETE 0x20000000 /* for rb_w32_open(), rb_w32_wopen() */
+
+typedef int clockid_t;
+#if defined(__MINGW32__)
+#undef CLOCK_PROCESS_CPUTIME_ID
+#undef CLOCK_THREAD_CPUTIME_ID
+#undef CLOCK_REALTIME_COARSE
+#endif
+#if defined(HAVE_CLOCK_GETTIME) && !defined(CLOCK_REALTIME)
+#define CLOCK_REALTIME 0
+#define CLOCK_MONOTONIC 1
+#endif
+
+#undef utime
+#undef lseek
+#undef stat
+#undef fstat
+#ifdef RUBY_EXPORT
+#define utime(_p, _t) rb_w32_uutime(_p, _t)
+#undef HAVE_UTIMES
+#define HAVE_UTIMES 1
+#define utimes(_p, _t) rb_w32_uutimes(_p, _t)
+#undef HAVE_UTIMENSAT
+#define HAVE_UTIMENSAT 1
+#define AT_FDCWD -100
+#define utimensat(_d, _p, _t, _f) rb_w32_uutimensat(_d, _p, _t, _f)
+#define lseek(_f, _o, _w) rb_w32_lseek(_f, _o, _w)
+
+#define pipe(p) rb_w32_pipe(p)
+#define open rb_w32_uopen
+#define close(h) rb_w32_close(h)
+#define fclose(f) rb_w32_fclose(f)
+#define read(f, b, s) rb_w32_read(f, b, s)
+#define write(f, b, s) rb_w32_write(f, b, s)
+#define pread(f, b, s, o) rb_w32_pread(f, b, s, o)
+#define pwrite(f, b, s, o) rb_w32_pwrite(f, b, s, o)
+#define getpid() rb_w32_getpid()
+#undef HAVE_GETPPID
+#define HAVE_GETPPID 1
+#define getppid() rb_w32_getppid()
+#define sleep(x) rb_w32_Sleep((x)*1000)
+#define Sleep(msec) (void)rb_w32_Sleep(msec)
+
+#undef HAVE_EXECV
+#define HAVE_EXECV 1
+#undef execv
+#define execv(path,argv) rb_w32_uaspawn(P_OVERLAY,path,argv)
+#undef isatty
+#define isatty(h) rb_w32_isatty(h)
+
+#undef mkdir
+#define mkdir(p, m) rb_w32_umkdir(p, m)
+#undef rmdir
+#define rmdir(p) rb_w32_urmdir(p)
+#undef unlink
+#define unlink(p) rb_w32_uunlink(p)
+#endif /* RUBY_EXPORT */
+
+/* same with stati64 except the size of st_ino and nanosecond timestamps */
+struct stati128 {
+ _dev_t st_dev;
+ unsigned __int64 st_ino;
+ __int64 st_inohigh;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ __int64 st_size;
+ __time64_t st_atime;
+ long st_atimensec;
+ __time64_t st_mtime;
+ long st_mtimensec;
+ __time64_t st_ctime;
+ long st_ctimensec;
+};
+
+#define stat stati128
+#undef SIZEOF_STRUCT_STAT_ST_INO
+#define SIZEOF_STRUCT_STAT_ST_INO sizeof(unsigned __int64)
+#define HAVE_STRUCT_STAT_ST_INOHIGH
+#define HAVE_STRUCT_STAT_ST_ATIMENSEC
+#define HAVE_STRUCT_STAT_ST_MTIMENSEC
+#define HAVE_STRUCT_STAT_ST_CTIMENSEC
+#define fstat(fd,st) rb_w32_fstati128(fd,st)
+#define stati128(path, st) rb_w32_ustati128(path,st)
+#define lstat(path,st) rb_w32_ulstati128(path,st)
+#define access(path,mode) rb_w32_uaccess(path,mode)
+
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#define fsync _commit
+
+struct timezone;
+
+#ifdef __MINGW32__
+#undef isascii
+#define isascii __isascii
+#endif
+
+struct iovec {
+ void *iov_base;
+ size_t iov_len;
+};
+struct msghdr {
+ void *msg_name;
+ int msg_namelen;
+ struct iovec *msg_iov;
+ int msg_iovlen;
+ void *msg_control;
+ int msg_controllen;
+ int msg_flags;
+};
+
+/* for getifaddrs() and others */
+struct ifaddrs {
+ struct ifaddrs *ifa_next;
+ char *ifa_name;
+ u_int ifa_flags;
+ struct sockaddr *ifa_addr;
+ struct sockaddr *ifa_netmask;
+ struct sockaddr *ifa_broadaddr;
+ struct sockaddr *ifa_dstaddr;
+ void *ifa_data;
+};
+#ifdef IF_NAMESIZE
+#define IFNAMSIZ IF_NAMESIZE
+#else
+#define IFNAMSIZ 256
+#endif
+#ifdef IFF_POINTTOPOINT
+#define IFF_POINTOPOINT IFF_POINTTOPOINT
+#endif
+
+extern void rb_w32_sysinit(int *, char ***);
+extern DWORD rb_w32_osid(void);
+extern int flock(int fd, int oper);
+extern int rb_w32_io_cancelable_p(int);
+extern int rb_w32_is_socket(int);
+extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *);
+extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int);
+extern int WSAAPI rb_w32_connect(int, const struct sockaddr *, int);
+extern void rb_w32_fdset(int, fd_set*);
+extern void rb_w32_fdclr(int, fd_set*);
+extern int rb_w32_fdisset(int, fd_set*);
+extern int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+extern int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *);
+extern int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *);
+extern int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *);
+extern int WSAAPI rb_w32_ioctlsocket(int, long, u_long *);
+extern int WSAAPI rb_w32_listen(int, int);
+extern int WSAAPI rb_w32_recv(int, char *, int, int);
+extern int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *);
+extern int WSAAPI rb_w32_send(int, const char *, int, int);
+extern int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int);
+extern int recvmsg(int, struct msghdr *, int);
+extern int sendmsg(int, const struct msghdr *, int);
+extern int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int);
+extern int WSAAPI rb_w32_shutdown(int, int);
+extern int WSAAPI rb_w32_socket(int, int, int);
+extern SOCKET rb_w32_get_osfhandle(int);
+extern struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int);
+extern struct hostent *WSAAPI rb_w32_gethostbyname(const char *);
+extern int WSAAPI rb_w32_gethostname(char *, int);
+extern struct protoent *WSAAPI rb_w32_getprotobyname(const char *);
+extern struct protoent *WSAAPI rb_w32_getprotobynumber(int);
+extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *);
+extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *);
+extern int socketpair(int, int, int, int *);
+extern int getifaddrs(struct ifaddrs **);
+extern void freeifaddrs(struct ifaddrs *);
+extern char * rb_w32_ugetcwd(char *, int);
+extern char * rb_w32_ugetenv(const char *);
+extern int rb_w32_urename(const char *, const char *);
+extern char **rb_w32_get_environ(void);
+extern void rb_w32_free_environ(char **);
+extern int rb_w32_map_errno(DWORD);
+extern const char *WSAAPI rb_w32_inet_ntop(int,const void *,char *,size_t);
+extern int WSAAPI rb_w32_inet_pton(int,const char *,void *);
+extern DWORD rb_w32_osver(void);
+
+extern int rb_w32_uchown(const char *, int, int);
+extern int rb_w32_ulink(const char *, const char *);
+extern ssize_t rb_w32_ureadlink(const char *, char *, size_t);
+extern int rb_w32_usymlink(const char *src, const char *link);
+extern int gettimeofday(struct timeval *, struct timezone *);
+extern int clock_gettime(clockid_t, struct timespec *);
+extern int clock_getres(clockid_t, struct timespec *);
+extern rb_pid_t waitpid(rb_pid_t, int *, int);
+extern rb_pid_t wait(int *);
+extern rb_pid_t rb_w32_uspawn(int, const char *, const char*);
+extern rb_pid_t rb_w32_uaspawn(int, const char *, char *const *);
+extern rb_pid_t rb_w32_uaspawn_flags(int, const char *, char *const *, DWORD);
+#undef HAVE_KILL
+#define HAVE_KILL 1
+extern int kill(rb_pid_t, int);
+extern int fcntl(int, int, ...);
+extern int rb_w32_set_nonblock(int);
+extern rb_pid_t rb_w32_getpid(void);
+extern rb_pid_t rb_w32_getppid(void);
+extern int rb_w32_isatty(int);
+extern int rb_w32_uchdir(const char *);
+extern int rb_w32_umkdir(const char *, int);
+extern int rb_w32_urmdir(const char *);
+extern int rb_w32_uunlink(const char *);
+extern int rb_w32_uchmod(const char *, int);
+extern int rb_w32_ustati128(const char *, struct stati128 *);
+extern int rb_w32_ulstati128(const char *, struct stati128 *);
+extern int rb_w32_uaccess(const char *, int);
+extern char rb_w32_fd_is_text(int);
+extern int rb_w32_fstati128(int, struct stati128 *);
+extern int rb_w32_dup2(int, int);
+
+#include
+
+#if defined _MSC_VER && _MSC_VER >= 1800 && defined INFINITY
+#pragma warning(push)
+#pragma warning(disable:4756)
+static inline float
+rb_infinity_float(void)
+{
+ return INFINITY;
+}
+#pragma warning(pop)
+#undef INFINITY
+#define INFINITY rb_infinity_float()
+#endif
+
+#if !defined __MINGW32__ || defined __NO_ISOCEXT
+#ifndef copysign
+#define copysign(a, b) _copysign(a, b)
+#endif
+static inline double
+scalb(double a, long b)
+{
+ return _scalb(a, b);
+}
+#endif
+
+#if !defined S_IFIFO && defined _S_IFIFO
+#define S_IFIFO _S_IFIFO
+#endif
+
+#if !defined S_IRUSR && !defined __MINGW32__
+#define S_IRUSR 0400
+#endif
+#ifndef S_IRGRP
+#define S_IRGRP 0040
+#endif
+#ifndef S_IROTH
+#define S_IROTH 0004
+#endif
+
+#if !defined S_IWUSR && !defined __MINGW32__
+#define S_IWUSR 0200
+#endif
+#ifndef S_IWGRP
+#define S_IWGRP 0020
+#endif
+#ifndef S_IWOTH
+#define S_IWOTH 0002
+#endif
+
+#if !defined S_IXUSR && !defined __MINGW32__
+#define S_IXUSR 0100
+#endif
+#ifndef S_IXGRP
+#define S_IXGRP 0010
+#endif
+#ifndef S_IXOTH
+#define S_IXOTH 0001
+#endif
+
+#define S_IFLNK 0xa000
+#define S_IFSOCK 0xc000
+
+/*
+ * define this so we can do inplace editing
+ */
+
+#define SUFFIX
+
+extern int rb_w32_ftruncate(int fd, rb_off_t length);
+extern int rb_w32_truncate(const char *path, rb_off_t length);
+extern int rb_w32_utruncate(const char *path, rb_off_t length);
+
+#undef HAVE_FTRUNCATE
+#define HAVE_FTRUNCATE 1
+#if defined HAVE_FTRUNCATE64
+#define ftruncate ftruncate64
+#else
+#define ftruncate rb_w32_ftruncate
+#endif
+
+#undef HAVE_TRUNCATE
+#define HAVE_TRUNCATE 1
+#define truncate rb_w32_utruncate
+
+#if defined(_MSC_VER) && _MSC_VER >= 1400 && _MSC_VER < 1800
+#define strtoll _strtoi64
+#define strtoull _strtoui64
+#endif
+
+/*
+ * stubs
+ */
+extern int ioctl (int, int, ...);
+extern rb_uid_t getuid (void);
+extern rb_uid_t geteuid (void);
+extern rb_gid_t getgid (void);
+extern rb_gid_t getegid (void);
+extern int setuid (rb_uid_t);
+extern int setgid (rb_gid_t);
+
+extern char *rb_w32_strerror(int);
+
+#ifdef RUBY_EXPORT
+#define strerror(e) rb_w32_strerror(e)
+#endif
+
+#define PIPE_BUF 1024
+
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_NB 4
+#define LOCK_UN 8
+
+
+#ifndef SIGINT
+#define SIGINT 2
+#endif
+#ifndef SIGKILL
+#define SIGKILL 9
+#endif
+
+
+/* #undef va_start */
+/* #undef va_end */
+
+/* winsock error map */
+#include
+
+#ifndef EWOULDBLOCK
+# define EWOULDBLOCK WSAEWOULDBLOCK
+#endif
+#ifndef EINPROGRESS
+# define EINPROGRESS WSAEINPROGRESS
+#endif
+#ifndef EALREADY
+# define EALREADY WSAEALREADY
+#endif
+#ifndef ENOTSOCK
+# define ENOTSOCK WSAENOTSOCK
+#endif
+#ifndef EDESTADDRREQ
+# define EDESTADDRREQ WSAEDESTADDRREQ
+#endif
+#ifndef EMSGSIZE
+# define EMSGSIZE WSAEMSGSIZE
+#endif
+#ifndef EPROTOTYPE
+# define EPROTOTYPE WSAEPROTOTYPE
+#endif
+#ifndef ENOPROTOOPT
+# define ENOPROTOOPT WSAENOPROTOOPT
+#endif
+#ifndef EPROTONOSUPPORT
+# define EPROTONOSUPPORT WSAEPROTONOSUPPORT
+#endif
+#ifndef ESOCKTNOSUPPORT
+# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
+#endif
+#ifndef EOPNOTSUPP
+# define EOPNOTSUPP WSAEOPNOTSUPP
+#endif
+#ifndef EPFNOSUPPORT
+# define EPFNOSUPPORT WSAEPFNOSUPPORT
+#endif
+#ifndef EAFNOSUPPORT
+# define EAFNOSUPPORT WSAEAFNOSUPPORT
+#endif
+#ifndef EADDRINUSE
+# define EADDRINUSE WSAEADDRINUSE
+#endif
+#ifndef EADDRNOTAVAIL
+# define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#endif
+#ifndef ENETDOWN
+# define ENETDOWN WSAENETDOWN
+#endif
+#ifndef ENETUNREACH
+# define ENETUNREACH WSAENETUNREACH
+#endif
+#ifndef ENETRESET
+# define ENETRESET WSAENETRESET
+#endif
+#ifndef ECONNABORTED
+# define ECONNABORTED WSAECONNABORTED
+#endif
+#ifndef ECONNRESET
+# define ECONNRESET WSAECONNRESET
+#endif
+#ifndef ENOBUFS
+# define ENOBUFS WSAENOBUFS
+#endif
+#ifndef EISCONN
+# define EISCONN WSAEISCONN
+#endif
+#ifndef ENOTCONN
+# define ENOTCONN WSAENOTCONN
+#endif
+#ifndef ESHUTDOWN
+# define ESHUTDOWN WSAESHUTDOWN
+#endif
+#ifndef ETOOMANYREFS
+# define ETOOMANYREFS WSAETOOMANYREFS
+#endif
+#ifndef ETIMEDOUT
+# define ETIMEDOUT WSAETIMEDOUT
+#endif
+#ifndef ECONNREFUSED
+# define ECONNREFUSED WSAECONNREFUSED
+#endif
+#ifndef ELOOP
+# define ELOOP WSAELOOP
+#endif
+/*#define ENAMETOOLONG WSAENAMETOOLONG*/
+#ifndef EHOSTDOWN
+# define EHOSTDOWN WSAEHOSTDOWN
+#endif
+#ifndef EHOSTUNREACH
+# define EHOSTUNREACH WSAEHOSTUNREACH
+#endif
+/*#define ENOTEMPTY WSAENOTEMPTY*/
+#ifndef EPROCLIM
+# define EPROCLIM WSAEPROCLIM
+#endif
+#ifndef EUSERS
+# define EUSERS WSAEUSERS
+#endif
+#ifndef EDQUOT
+# define EDQUOT WSAEDQUOT
+#endif
+#ifndef ESTALE
+# define ESTALE WSAESTALE
+#endif
+#ifndef EREMOTE
+# define EREMOTE WSAEREMOTE
+#endif
+
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#if 0
+#define F_GETFL 3
+#endif
+#define F_SETFL 4
+#define F_DUPFD_CLOEXEC 67
+#define FD_CLOEXEC 1 /* F_GETFD, F_SETFD */
+#define O_NONBLOCK 1
+
+#undef FD_SET
+#define FD_SET(fd, set) do {\
+ unsigned int i;\
+ SOCKET s = _get_osfhandle(fd);\
+\
+ for (i = 0; i < (set)->fd_count; i++) {\
+ if ((set)->fd_array[i] == s) {\
+ break;\
+ }\
+ }\
+ if (i == (set)->fd_count) {\
+ if ((set)->fd_count < FD_SETSIZE) {\
+ (set)->fd_array[i] = s;\
+ (set)->fd_count++;\
+ }\
+ }\
+} while(0)
+
+#undef FD_CLR
+#define FD_CLR(f, s) rb_w32_fdclr(f, s)
+
+#undef FD_ISSET
+#define FD_ISSET(f, s) rb_w32_fdisset(f, s)
+
+#ifdef RUBY_EXPORT
+#undef inet_ntop
+#define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l)
+
+#undef inet_pton
+#define inet_pton(f,s,d) rb_w32_inet_pton(f,s,d)
+
+#undef accept
+#define accept(s, a, l) rb_w32_accept(s, a, l)
+
+#undef bind
+#define bind(s, a, l) rb_w32_bind(s, a, l)
+
+#undef connect
+#define connect(s, a, l) rb_w32_connect(s, a, l)
+
+#undef select
+#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t)
+
+#undef getpeername
+#define getpeername(s, a, l) rb_w32_getpeername(s, a, l)
+
+#undef getsockname
+#define getsockname(s, a, l) rb_w32_getsockname(s, a, l)
+
+#undef getsockopt
+#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l)
+
+#undef ioctlsocket
+#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a)
+
+#undef listen
+#define listen(s, b) rb_w32_listen(s, b)
+
+#undef recv
+#define recv(s, b, l, f) rb_w32_recv(s, b, l, f)
+
+#undef recvfrom
+#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl)
+
+#undef send
+#define send(s, b, l, f) rb_w32_send(s, b, l, f)
+
+#undef sendto
+#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl)
+
+#undef setsockopt
+#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l)
+
+#undef HAVE_SHUTDOWN
+#define HAVE_SHUTDOWN 1
+#undef shutdown
+#define shutdown(s, h) rb_w32_shutdown(s, h)
+
+#undef socket
+#define socket(s, t, p) rb_w32_socket(s, t, p)
+
+#undef gethostbyaddr
+#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t)
+
+#undef gethostbyname
+#define gethostbyname(n) rb_w32_gethostbyname(n)
+
+#undef gethostname
+#define gethostname(n, l) rb_w32_gethostname(n, l)
+
+#undef getprotobyname
+#define getprotobyname(n) rb_w32_getprotobyname(n)
+
+#undef getprotobynumber
+#define getprotobynumber(n) rb_w32_getprotobynumber(n)
+
+#undef getservbyname
+#define getservbyname(n, p) rb_w32_getservbyname(n, p)
+
+#undef getservbyport
+#define getservbyport(p, pr) rb_w32_getservbyport(p, pr)
+
+#undef get_osfhandle
+#define get_osfhandle(h) rb_w32_get_osfhandle(h)
+
+#undef getcwd
+#define getcwd(b, s) rb_w32_ugetcwd(b, s)
+
+#undef getenv
+#define getenv(n) rb_w32_ugetenv(n)
+
+#undef rename
+#define rename(o, n) rb_w32_urename(o, n)
+
+#undef times
+#define times(t) rb_w32_times(t)
+
+#undef dup2
+#define dup2(o, n) rb_w32_dup2(o, n)
+#endif
+
+struct tms {
+ long tms_utime;
+ long tms_stime;
+ long tms_cutime;
+ long tms_cstime;
+};
+
+int rb_w32_times(struct tms *);
+
+struct tm *gmtime_r(const time_t *, struct tm *);
+struct tm *localtime_r(const time_t *, struct tm *);
+
+/* thread stuff */
+int rb_w32_sleep(unsigned long msec);
+int rb_w32_uopen(const char *, int, ...);
+int rb_w32_wopen(const WCHAR *, int, ...);
+int rb_w32_close(int);
+int rb_w32_fclose(FILE*);
+int rb_w32_pipe(int[2]);
+ssize_t rb_w32_read(int, void *, size_t);
+ssize_t rb_w32_write(int, const void *, size_t);
+ssize_t rb_w32_pread(int, void *, size_t, rb_off_t offset);
+ssize_t rb_w32_pwrite(int, const void *, size_t, rb_off_t offset);
+rb_off_t rb_w32_lseek(int, rb_off_t, int);
+int rb_w32_uutime(const char *, const struct utimbuf *);
+int rb_w32_uutimes(const char *, const struct timeval *);
+int rb_w32_uutimensat(int /* must be AT_FDCWD */, const char *, const struct timespec *, int /* must be 0 */);
+long rb_w32_write_console(uintptr_t, int); /* use uintptr_t instead of VALUE because it's not defined yet here */
+int WINAPI rb_w32_Sleep(unsigned long msec);
+int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout);
+int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait);
+int rb_w32_wrap_io_handle(HANDLE, int);
+int rb_w32_unwrap_io_handle(int);
+WCHAR *rb_w32_mbstr_to_wstr(UINT, const char *, int, long *);
+char *rb_w32_wstr_to_mbstr(UINT, const WCHAR *, int, long *);
+
+DEPRECATED_BY(rb_w32_ugetcwd, char *rb_w32_getcwd(char *, int));
+DEPRECATED_BY(rb_w32_ugetenv, char *rb_w32_getenv(const char *));
+DEPRECATED_BY(rb_w32_urename, int rb_w32_rename(const char *, const char *));
+DEPRECATED_BY(rb_w32_uopen, int rb_w32_open(const char *, int, ...));
+DEPRECATED_BY(rb_w32_uchown, int chown(const char *, int, int));
+DEPRECATED_BY(rb_w32_ulink, int link(const char *, const char *));
+DEPRECATED_BY(rb_w32_ureadlink, ssize_t readlink(const char *, char *, size_t));
+DEPRECATED_BY(rb_w32_usymlink, int symlink(const char *src, const char *link));
+DEPRECATED_BY(rb_w32_umkdir, int rb_w32_mkdir(const char *, int));
+DEPRECATED_BY(rb_w32_urmdir, int rb_w32_rmdir(const char *));
+DEPRECATED_BY(rb_w32_uunlink, int rb_w32_unlink(const char *));
+DEPRECATED_BY(rb_w32_uutime, int rb_w32_utime(const char *, const struct utimbuf *));
+DEPRECATED_BY(rb_w32_uutimes, int rb_w32_utimes(const char *, const struct timeval *));
+DEPRECATED_BY(rb_w32_uutimensat, int rb_w32_utimensat(int, const char *, const struct timespec *, int));
+DEPRECATED_BY(rb_w32_ustati128, int rb_w32_stati128(const char *, struct stati128 *));
+DEPRECATED_BY(rb_w32_ulstati128, int rb_w32_lstati128(const char *, struct stati128 *));
+DEPRECATED_BY(rb_w32_uaccess, int rb_w32_access(const char *, int));
+DEPRECATED_BY(rb_w32_uspawn, rb_pid_t rb_w32_spawn(int, const char *, const char*));
+DEPRECATED_BY(rb_w32_uaspawn, rb_pid_t rb_w32_aspawn(int, const char *, char *const *));
+DEPRECATED_BY(rb_w32_uaspawn_flags, rb_pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD));
+
+/*
+== ***CAUTION***
+Since this function is very dangerous, ((*NEVER*))
+* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or,
+* use anything like rb_thread_call_without_gvl,
+in asynchronous_func_t.
+*/
+typedef uintptr_t (*asynchronous_func_t)(uintptr_t self, int argc, uintptr_t* argv);
+uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t* argv, uintptr_t intrval);
+
+RUBY_SYMBOL_EXPORT_END
+
+#if (defined(__MINGW64_VERSION_MAJOR) || defined(__MINGW64__)) && !defined(__cplusplus)
+#ifdef RUBY_MINGW64_BROKEN_FREXP_MODF
+/* License: Ruby's */
+/* get rid of bugs in math.h of mingw */
+#define frexp(_X, _Y) __extension__ ({\
+ int intpart_frexp_bug = intpart_frexp_bug;\
+ double result_frexp_bug = frexp((_X), &intpart_frexp_bug);\
+ *(_Y) = intpart_frexp_bug;\
+ result_frexp_bug;\
+})
+/* License: Ruby's */
+#define modf(_X, _Y) __extension__ ({\
+ double intpart_modf_bug = intpart_modf_bug;\
+ double result_modf_bug = modf((_X), &intpart_modf_bug);\
+ *(_Y) = intpart_modf_bug;\
+ result_modf_bug;\
+})
+#endif
+
+#if defined(__MINGW64__)
+/*
+ * Use powl() instead of broken pow() of x86_64-w64-mingw32.
+ * This workaround will fix test failures in test_bignum.rb,
+ * test_fixnum.rb and test_float.rb etc.
+ */
+static inline double
+rb_w32_pow(double x, double y)
+{
+ return (double)powl(x, y);
+}
+#elif defined(__MINGW64_VERSION_MAJOR)
+double rb_w32_pow(double x, double y);
+#endif
+#define pow rb_w32_pow
+#endif
+
+// mmap tiny emulation
+#define MAP_FAILED ((void *)-1)
+
+#define PROT_READ 0x01
+#define PROT_WRITE 0x02
+#define PROT_EXEC 0x04
+
+#define MAP_PRIVATE 0x0002
+#define MAP_ANON 0x1000
+#define MAP_ANONYMOUS MAP_ANON
+
+extern void *rb_w32_mmap(void *, size_t, int, int, int, rb_off_t);
+extern int rb_w32_munmap(void *, size_t);
+extern int rb_w32_mprotect(void *, size_t, int);
+
+#define mmap(a, l, p, f, d, o) rb_w32_mmap(a, l, p, f, d, o)
+#define munmap(a, l) rb_w32_munmap(a, l)
+#define mprotect(a, l, prot) rb_w32_mprotect(a, l, prot)
+
+#if defined(__cplusplus)
+#if 0
+{ /* satisfy cc-mode */
+#endif
+} /* extern "C" { */
+#endif
+
+#endif /* RUBY_WIN32_H */
diff --git a/ThirdParty/include/ruby/mac/x86_64-darwin/rb_mjit_min_header-3.2.2.h b/ThirdParty/include/ruby/mac/x86_64-darwin/rb_mjit_min_header-3.2.2.h
deleted file mode 100644
index 6f919693b..000000000
--- a/ThirdParty/include/ruby/mac/x86_64-darwin/rb_mjit_min_header-3.2.2.h
+++ /dev/null
@@ -1,25196 +0,0 @@
-#ifdef __GNUC__
-# pragma GCC system_header
-#endif
-
-
-
-
-#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
-
-
-
-
-
-
-
-
-
-
-typedef __builtin_va_list va_list;
-typedef __builtin_va_list __gnuc_va_list;
-
-
-
-
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef short __int16_t;
-typedef unsigned short __uint16_t;
-typedef int __int32_t;
-typedef unsigned int __uint32_t;
-typedef long long __int64_t;
-typedef unsigned long long __uint64_t;
-typedef long __darwin_intptr_t;
-typedef unsigned int __darwin_natural_t;
-typedef int __darwin_ct_rune_t;
-typedef union {
- char __mbstate8[128];
- long long _mbstateL;
-} __mbstate_t;
-typedef __mbstate_t __darwin_mbstate_t;
-typedef long int __darwin_ptrdiff_t;
-typedef long unsigned int __darwin_size_t;
-typedef __builtin_va_list __darwin_va_list;
-typedef int __darwin_wchar_t;
-typedef __darwin_wchar_t __darwin_rune_t;
-typedef int __darwin_wint_t;
-typedef unsigned long __darwin_clock_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef long __darwin_ssize_t;
-typedef long __darwin_time_t;
-typedef __int64_t __darwin_blkcnt_t;
-typedef __int32_t __darwin_blksize_t;
-typedef __int32_t __darwin_dev_t;
-typedef unsigned int __darwin_fsblkcnt_t;
-typedef unsigned int __darwin_fsfilcnt_t;
-typedef __uint32_t __darwin_gid_t;
-typedef __uint32_t __darwin_id_t;
-typedef __uint64_t __darwin_ino64_t;
-typedef __darwin_ino64_t __darwin_ino_t;
-typedef __darwin_natural_t __darwin_mach_port_name_t;
-typedef __darwin_mach_port_name_t __darwin_mach_port_t;
-typedef __uint16_t __darwin_mode_t;
-typedef __int64_t __darwin_off_t;
-typedef __int32_t __darwin_pid_t;
-typedef __uint32_t __darwin_sigset_t;
-typedef __int32_t __darwin_suseconds_t;
-typedef __uint32_t __darwin_uid_t;
-typedef __uint32_t __darwin_useconds_t;
-typedef unsigned char __darwin_uuid_t[16];
-typedef char __darwin_uuid_string_t[37];
-struct __darwin_pthread_handler_rec {
- void (*__routine)(void *);
- void *__arg;
- struct __darwin_pthread_handler_rec *__next;
-};
-struct _opaque_pthread_attr_t {
- long __sig;
- char __opaque[56];
-};
-struct _opaque_pthread_cond_t {
- long __sig;
- char __opaque[40];
-};
-struct _opaque_pthread_condattr_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_mutex_t {
- long __sig;
- char __opaque[56];
-};
-struct _opaque_pthread_mutexattr_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_once_t {
- long __sig;
- char __opaque[8];
-};
-struct _opaque_pthread_rwlock_t {
- long __sig;
- char __opaque[192];
-};
-struct _opaque_pthread_rwlockattr_t {
- long __sig;
- char __opaque[16];
-};
-struct _opaque_pthread_t {
- long __sig;
- struct __darwin_pthread_handler_rec *__cleanup_stack;
- char __opaque[8176];
-};
-typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t;
-typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t;
-typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t;
-typedef unsigned long __darwin_pthread_key_t;
-typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t;
-typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t;
-typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
-typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t;
-typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t;
-typedef struct _opaque_pthread_t *__darwin_pthread_t;
-typedef int __darwin_nl_item;
-typedef int __darwin_wctrans_t;
-typedef __uint32_t __darwin_wctype_t;
-typedef signed char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-
-typedef unsigned char u_int8_t;
-typedef unsigned short u_int16_t;
-typedef unsigned int u_int32_t;
-typedef unsigned long long u_int64_t;
-typedef int64_t register_t;
-
-typedef __darwin_intptr_t intptr_t;
-typedef unsigned long uintptr_t;
-typedef u_int64_t user_addr_t;
-typedef u_int64_t user_size_t;
-typedef int64_t user_ssize_t;
-typedef int64_t user_long_t;
-typedef u_int64_t user_ulong_t;
-typedef int64_t user_time_t;
-typedef int64_t user_off_t;
-typedef u_int64_t syscall_arg_t;
-typedef __darwin_va_list va_list;
-typedef __darwin_size_t size_t;
-
-int renameat(int, const char *, int, const char *) __attribute__((availability(macosx,introduced=10.10)));
-int renamex_np(const char *, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int renameatx_np(int, const char *, int, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-
-typedef __darwin_off_t fpos_t;
-struct __sbuf {
- unsigned char *_base;
- int _size;
-};
-struct __sFILEX;
-typedef struct __sFILE {
- unsigned char *_p;
- int _r;
- int _w;
- short _flags;
- short _file;
- struct __sbuf _bf;
- int _lbfsize;
- void *_cookie;
- int (* _Nullable _close)(void *);
- int (* _Nullable _read) (void *, char *, int);
- fpos_t (* _Nullable _seek) (void *, fpos_t, int);
- int (* _Nullable _write)(void *, const char *, int);
- struct __sbuf _ub;
- struct __sFILEX *_extra;
- int _ur;
- unsigned char _ubuf[3];
- unsigned char _nbuf[1];
- struct __sbuf _lb;
- int _blksize;
- fpos_t _offset;
-} FILE;
-extern FILE *__stdinp;
-extern FILE *__stdoutp;
-extern FILE *__stderrp;
-void clearerr(FILE *);
-int fclose(FILE *);
-int feof(FILE *);
-int ferror(FILE *);
-int fflush(FILE *);
-int fgetc(FILE *);
-int fgetpos(FILE * __restrict__, fpos_t *);
-char *fgets(char * __restrict__, int, FILE *);
-FILE *fopen(const char * __restrict__ __filename, const char * __restrict__ __mode) __asm("_" "fopen" "$DARWIN_EXTSN");
-int fprintf(FILE * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-int fputc(int, FILE *);
-int fputs(const char * __restrict__, FILE * __restrict__) __asm("_" "fputs" );
-size_t fread(void * __restrict__ __ptr, size_t __size, size_t __nitems, FILE * __restrict__ __stream);
-FILE *freopen(const char * __restrict__, const char * __restrict__,
- FILE * __restrict__) __asm("_" "freopen" );
-int fscanf(FILE * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 2, 3)));
-int fseek(FILE *, long, int);
-int fsetpos(FILE *, const fpos_t *);
-long ftell(FILE *);
-size_t fwrite(const void * __restrict__ __ptr, size_t __size, size_t __nitems, FILE * __restrict__ __stream) __asm("_" "fwrite" );
-int getc(FILE *);
-int getchar(void);
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of gets(3), it is highly recommended that you use fgets(3) instead.")))
-char *gets(char *);
-void perror(const char *) __attribute__((__cold__));
-int printf(const char * __restrict__, ...) __attribute__((__format__ (__printf__, 1, 2)));
-int putc(int, FILE *);
-int putchar(int);
-int puts(const char *);
-int remove(const char *);
-int rename (const char *__old, const char *__new);
-void rewind(FILE *);
-int scanf(const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 1, 2)));
-void setbuf(FILE * __restrict__, char * __restrict__);
-int setvbuf(FILE * __restrict__, char * __restrict__, int, size_t);
-__attribute__((__availability__(swift, unavailable, message="Use snprintf instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.")))
-int sprintf(char * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-int sscanf(const char * __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__scanf__, 2, 3)));
-FILE *tmpfile(void);
-__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *tmpnam(char *);
-int ungetc(int, FILE *);
-int vfprintf(FILE * __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-int vprintf(const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 1, 0)));
-__attribute__((__availability__(swift, unavailable, message="Use vsnprintf instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use vsnprintf(3) instead.")))
-int vsprintf(char * __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-char *ctermid(char *);
-FILE *fdopen(int, const char *) __asm("_" "fdopen" "$DARWIN_EXTSN");
-int fileno(FILE *);
-int pclose(FILE *) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")));
-FILE *popen(const char *, const char *) __asm("_" "popen" "$DARWIN_EXTSN") __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")));
-int __srget(FILE *);
-int __svfscanf(FILE *, const char *, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-int __swbuf(int, FILE *);
-inline __attribute__ ((__always_inline__)) int __sputc(int _c, FILE *_p) {
- if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
- return (*_p->_p++ = _c);
- else
- return (__swbuf(_c, _p));
-}
-void flockfile(FILE *);
-int ftrylockfile(FILE *);
-void funlockfile(FILE *);
-int getc_unlocked(FILE *);
-int getchar_unlocked(void);
-int putc_unlocked(int, FILE *);
-int putchar_unlocked(int);
-int getw(FILE *);
-int putw(int, FILE *);
-__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead.")))
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *tempnam(const char *__dir, const char *__prefix) __asm("_" "tempnam" );
-typedef __darwin_off_t off_t;
-int fseeko(FILE * __stream, off_t __offset, int __whence);
-off_t ftello(FILE * __stream);
-int snprintf(char * __restrict__ __str, size_t __size, const char * __restrict__ __format, ...) __attribute__((__format__ (__printf__, 3, 4)));
-int vfscanf(FILE * __restrict__ __stream, const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-int vscanf(const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 1, 0)));
-int vsnprintf(char * __restrict__ __str, size_t __size, const char * __restrict__ __format, va_list) __attribute__((__format__ (__printf__, 3, 0)));
-int vsscanf(const char * __restrict__ __str, const char * __restrict__ __format, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
-typedef __darwin_ssize_t ssize_t;
-int dprintf(int, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((availability(macosx,introduced=10.7)));
-int vdprintf(int, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((availability(macosx,introduced=10.7)));
-ssize_t getdelim(char ** __restrict__ __linep, size_t * __restrict__ __linecapp, int __delimiter, FILE * __restrict__ __stream) __attribute__((availability(macosx,introduced=10.7)));
-ssize_t getline(char ** __restrict__ __linep, size_t * __restrict__ __linecapp, FILE * __restrict__ __stream) __attribute__((availability(macosx,introduced=10.7)));
-FILE *fmemopen(void * __restrict__ __buf, size_t __size, const char * __restrict__ __mode) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-FILE *open_memstream(char **__bufp, size_t *__sizep) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-extern const int sys_nerr;
-extern const char *const sys_errlist[];
-int asprintf(char ** __restrict__, const char * __restrict__, ...) __attribute__((__format__ (__printf__, 2, 3)));
-char *ctermid_r(char *);
-char *fgetln(FILE *, size_t *);
-const char *fmtcheck(const char *, const char *) __attribute__((format_arg(2)));
-int fpurge(FILE *);
-void setbuffer(FILE *, char *, int);
-int setlinebuf(FILE *);
-int vasprintf(char ** __restrict__, const char * __restrict__, va_list) __attribute__((__format__ (__printf__, 2, 0)));
-FILE *funopen(const void *,
- int (* _Nullable)(void *, char *, int),
- int (* _Nullable)(void *, const char *, int),
- fpos_t (* _Nullable)(void *, fpos_t, int),
- int (* _Nullable)(void *));
-extern int __sprintf_chk (char * __restrict__, int, size_t,
- const char * __restrict__, ...);
-extern int __snprintf_chk (char * __restrict__, size_t, int, size_t,
- const char * __restrict__, ...);
-extern int __vsprintf_chk (char * __restrict__, int, size_t,
- const char * __restrict__, va_list);
-extern int __vsnprintf_chk (char * __restrict__, size_t, int, size_t,
- const char * __restrict__, va_list);
-static inline
-__uint16_t
-_OSSwapInt16(
- __uint16_t _data
- )
-{
- return (__uint16_t)((_data << 8) | (_data >> 8));
-}
-static inline
-__uint32_t
-_OSSwapInt32(
- __uint32_t _data
- )
-{
- return __builtin_bswap32(_data);
-}
-static inline
-__uint64_t
-_OSSwapInt64(
- __uint64_t _data
- )
-{
- return __builtin_bswap64(_data);
-}
-
-typedef unsigned char u_char;
-typedef unsigned short u_short;
-typedef unsigned int u_int;
-
-typedef unsigned long u_long;
-typedef unsigned short ushort;
-typedef unsigned int uint;
-typedef u_int64_t u_quad_t;
-typedef int64_t quad_t;
-typedef quad_t * qaddr_t;
-typedef char * caddr_t;
-
-typedef int32_t daddr_t;
-typedef __darwin_dev_t dev_t;
-
-typedef u_int32_t fixpt_t;
-typedef __darwin_blkcnt_t blkcnt_t;
-typedef __darwin_blksize_t blksize_t;
-typedef __darwin_gid_t gid_t;
-typedef __uint32_t in_addr_t;
-typedef __uint16_t in_port_t;
-typedef __darwin_ino_t ino_t;
-typedef __darwin_ino64_t ino64_t;
-typedef __int32_t key_t;
-typedef __darwin_mode_t mode_t;
-typedef __uint16_t nlink_t;
-typedef __darwin_id_t id_t;
-typedef __darwin_pid_t pid_t;
-typedef int32_t segsz_t;
-typedef int32_t swblk_t;
-typedef __darwin_uid_t uid_t;
-typedef __darwin_clock_t clock_t;
-typedef __darwin_time_t time_t;
-
-typedef __darwin_useconds_t useconds_t;
-typedef __darwin_suseconds_t suseconds_t;
-typedef __darwin_size_t rsize_t;
-typedef int errno_t;
-typedef struct fd_set {
- __int32_t fds_bits[((((1024) % ((sizeof(__int32_t) * 8))) == 0) ? ((1024) / ((sizeof(__int32_t) * 8))) : (((1024) / ((sizeof(__int32_t) * 8))) + 1))];
-} fd_set;
-int __darwin_check_fd_set_overflow(int, const void *, int) __attribute__((availability(macosx,introduced=11.0))) __attribute__((availability(ios,introduced=14.0))) __attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) int
-__darwin_check_fd_set(int _a, const void *_b)
-{
- if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) {
- return __darwin_check_fd_set_overflow(_a, _b, 1);
- } else {
- return 1;
- }
-}
-inline __attribute__ ((__always_inline__)) int
-__darwin_fd_isset(int _fd, const struct fd_set *_p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- return _p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] & ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8))));
- }
- return 0;
-}
-inline __attribute__ ((__always_inline__)) void
-__darwin_fd_set(int _fd, struct fd_set *const _p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] |= ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8)))));
- }
-}
-inline __attribute__ ((__always_inline__)) void
-__darwin_fd_clr(int _fd, struct fd_set *const _p)
-{
- if (__darwin_check_fd_set(_fd, (const void *) _p)) {
- (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] &= ~((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8)))));
- }
-}
-
-typedef __int32_t fd_mask;
-typedef __darwin_pthread_attr_t pthread_attr_t;
-typedef __darwin_pthread_cond_t pthread_cond_t;
-typedef __darwin_pthread_condattr_t pthread_condattr_t;
-typedef __darwin_pthread_mutex_t pthread_mutex_t;
-typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;
-typedef __darwin_pthread_once_t pthread_once_t;
-typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
-typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
-typedef __darwin_pthread_t pthread_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-typedef __darwin_fsblkcnt_t fsblkcnt_t;
-typedef __darwin_fsfilcnt_t fsfilcnt_t;
-struct timespec
-{
- __darwin_time_t tv_sec;
- long tv_nsec;
-};
-struct ostat {
- __uint16_t st_dev;
- ino_t st_ino;
- mode_t st_mode;
- nlink_t st_nlink;
- __uint16_t st_uid;
- __uint16_t st_gid;
- __uint16_t st_rdev;
- __int32_t st_size;
- struct timespec st_atimespec;
- struct timespec st_mtimespec;
- struct timespec st_ctimespec;
- __int32_t st_blksize;
- __int32_t st_blocks;
- __uint32_t st_flags;
- __uint32_t st_gen;
-};
-struct stat { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };
-struct stat64 { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };
-int chmod(const char *, mode_t) __asm("_" "chmod" );
-int fchmod(int, mode_t) __asm("_" "fchmod" );
-int fstat(int, struct stat *) __asm("_" "fstat" "$INODE64");
-int lstat(const char *, struct stat *) __asm("_" "lstat" "$INODE64");
-int mkdir(const char *, mode_t);
-int mkfifo(const char *, mode_t);
-int stat(const char *, struct stat *) __asm("_" "stat" "$INODE64");
-int mknod(const char *, mode_t, dev_t);
-mode_t umask(mode_t);
-int fchmodat(int, const char *, mode_t, int) __attribute__((availability(macosx,introduced=10.10)));
-int fstatat(int, const char *, struct stat *, int) __asm("_" "fstatat" "$INODE64") __attribute__((availability(macosx,introduced=10.10)));
-int mkdirat(int, const char *, mode_t) __attribute__((availability(macosx,introduced=10.10)));
-int mkfifoat(int, const char *, mode_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int mknodat(int, const char *, mode_t, dev_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int futimens(int __fd, const struct timespec __times[2]) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int utimensat(int __fd, const char *__path, const struct timespec __times[2],
- int __flag) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-struct _filesec;
-typedef struct _filesec *filesec_t;
-
-int chflags(const char *, __uint32_t);
-int chmodx_np(const char *, filesec_t);
-int fchflags(int, __uint32_t);
-int fchmodx_np(int, filesec_t);
-int fstatx_np(int, struct stat *, filesec_t) __asm("_" "fstatx_np" "$INODE64");
-int lchflags(const char *, __uint32_t) __attribute__((availability(macosx,introduced=10.5)));
-int lchmod(const char *, mode_t) __attribute__((availability(macosx,introduced=10.5)));
-int lstatx_np(const char *, struct stat *, filesec_t) __asm("_" "lstatx_np" "$INODE64");
-int mkdirx_np(const char *, filesec_t);
-int mkfifox_np(const char *, filesec_t);
-int statx_np(const char *, struct stat *, filesec_t) __asm("_" "statx_np" "$INODE64");
-int umaskx_np(filesec_t) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)));
-int fstatx64_np(int, struct stat64 *, filesec_t) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-int lstatx64_np(const char *, struct stat64 *, filesec_t) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-int statx64_np(const char *, struct stat64 *, filesec_t) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-int fstat64(int, struct stat64 *) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-int lstat64(const char *, struct stat64 *) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-int stat64(const char *, struct stat64 *) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)));
-typedef enum {
- P_ALL,
- P_PID,
- P_PGID
-} idtype_t;
-typedef int sig_atomic_t;
-
-struct __darwin_i386_thread_state
-{
- unsigned int __eax;
- unsigned int __ebx;
- unsigned int __ecx;
- unsigned int __edx;
- unsigned int __edi;
- unsigned int __esi;
- unsigned int __ebp;
- unsigned int __esp;
- unsigned int __ss;
- unsigned int __eflags;
- unsigned int __eip;
- unsigned int __cs;
- unsigned int __ds;
- unsigned int __es;
- unsigned int __fs;
- unsigned int __gs;
-};
-struct __darwin_fp_control
-{
- unsigned short __invalid :1,
- __denorm :1,
- __zdiv :1,
- __ovrfl :1,
- __undfl :1,
- __precis :1,
- :2,
- __pc :2,
- __rc :2,
- :1,
- :3;
-};
-typedef struct __darwin_fp_control __darwin_fp_control_t;
-struct __darwin_fp_status
-{
- unsigned short __invalid :1,
- __denorm :1,
- __zdiv :1,
- __ovrfl :1,
- __undfl :1,
- __precis :1,
- __stkflt :1,
- __errsumm :1,
- __c0 :1,
- __c1 :1,
- __c2 :1,
- __tos :3,
- __c3 :1,
- __busy :1;
-};
-typedef struct __darwin_fp_status __darwin_fp_status_t;
-struct __darwin_mmst_reg
-{
- char __mmst_reg[10];
- char __mmst_rsrv[6];
-};
-struct __darwin_xmm_reg
-{
- char __xmm_reg[16];
-};
-struct __darwin_ymm_reg
-{
- char __ymm_reg[32];
-};
-struct __darwin_zmm_reg
-{
- char __zmm_reg[64];
-};
-struct __darwin_opmask_reg
-{
- char __opmask_reg[8];
-};
-struct __darwin_i386_float_state
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- char __fpu_rsrv4[14*16];
- int __fpu_reserved1;
-};
-struct __darwin_i386_avx_state
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- char __fpu_rsrv4[14*16];
- int __fpu_reserved1;
- char __avx_reserved1[64];
- struct __darwin_xmm_reg __fpu_ymmh0;
- struct __darwin_xmm_reg __fpu_ymmh1;
- struct __darwin_xmm_reg __fpu_ymmh2;
- struct __darwin_xmm_reg __fpu_ymmh3;
- struct __darwin_xmm_reg __fpu_ymmh4;
- struct __darwin_xmm_reg __fpu_ymmh5;
- struct __darwin_xmm_reg __fpu_ymmh6;
- struct __darwin_xmm_reg __fpu_ymmh7;
-};
-struct __darwin_i386_avx512_state
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- char __fpu_rsrv4[14*16];
- int __fpu_reserved1;
- char __avx_reserved1[64];
- struct __darwin_xmm_reg __fpu_ymmh0;
- struct __darwin_xmm_reg __fpu_ymmh1;
- struct __darwin_xmm_reg __fpu_ymmh2;
- struct __darwin_xmm_reg __fpu_ymmh3;
- struct __darwin_xmm_reg __fpu_ymmh4;
- struct __darwin_xmm_reg __fpu_ymmh5;
- struct __darwin_xmm_reg __fpu_ymmh6;
- struct __darwin_xmm_reg __fpu_ymmh7;
- struct __darwin_opmask_reg __fpu_k0;
- struct __darwin_opmask_reg __fpu_k1;
- struct __darwin_opmask_reg __fpu_k2;
- struct __darwin_opmask_reg __fpu_k3;
- struct __darwin_opmask_reg __fpu_k4;
- struct __darwin_opmask_reg __fpu_k5;
- struct __darwin_opmask_reg __fpu_k6;
- struct __darwin_opmask_reg __fpu_k7;
- struct __darwin_ymm_reg __fpu_zmmh0;
- struct __darwin_ymm_reg __fpu_zmmh1;
- struct __darwin_ymm_reg __fpu_zmmh2;
- struct __darwin_ymm_reg __fpu_zmmh3;
- struct __darwin_ymm_reg __fpu_zmmh4;
- struct __darwin_ymm_reg __fpu_zmmh5;
- struct __darwin_ymm_reg __fpu_zmmh6;
- struct __darwin_ymm_reg __fpu_zmmh7;
-};
-struct __darwin_i386_exception_state
-{
- __uint16_t __trapno;
- __uint16_t __cpu;
- __uint32_t __err;
- __uint32_t __faultvaddr;
-};
-struct __darwin_x86_debug_state32
-{
- unsigned int __dr0;
- unsigned int __dr1;
- unsigned int __dr2;
- unsigned int __dr3;
- unsigned int __dr4;
- unsigned int __dr5;
- unsigned int __dr6;
- unsigned int __dr7;
-};
-struct __x86_instruction_state
-{
- int __insn_stream_valid_bytes;
- int __insn_offset;
- int __out_of_synch;
- __uint8_t __insn_bytes[(2448 - 64 - 4)];
- __uint8_t __insn_cacheline[64];
-};
-struct __last_branch_record
-{
- __uint64_t __from_ip;
- __uint64_t __to_ip;
- __uint32_t __mispredict : 1,
- __tsx_abort : 1,
- __in_tsx : 1,
- __cycle_count: 16,
- __reserved : 13;
-};
-struct __last_branch_state
-{
- int __lbr_count;
- __uint32_t __lbr_supported_tsx : 1,
- __lbr_supported_cycle_count : 1,
- __reserved : 30;
- struct __last_branch_record __lbrs[32];
-};
-struct __x86_pagein_state
-{
- int __pagein_error;
-};
-struct __darwin_x86_thread_state64
-{
- __uint64_t __rax;
- __uint64_t __rbx;
- __uint64_t __rcx;
- __uint64_t __rdx;
- __uint64_t __rdi;
- __uint64_t __rsi;
- __uint64_t __rbp;
- __uint64_t __rsp;
- __uint64_t __r8;
- __uint64_t __r9;
- __uint64_t __r10;
- __uint64_t __r11;
- __uint64_t __r12;
- __uint64_t __r13;
- __uint64_t __r14;
- __uint64_t __r15;
- __uint64_t __rip;
- __uint64_t __rflags;
- __uint64_t __cs;
- __uint64_t __fs;
- __uint64_t __gs;
-};
-struct __darwin_x86_thread_full_state64
-{
- struct __darwin_x86_thread_state64 __ss64;
- __uint64_t __ds;
- __uint64_t __es;
- __uint64_t __ss;
- __uint64_t __gsbase;
-};
-struct __darwin_x86_float_state64
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- struct __darwin_xmm_reg __fpu_xmm8;
- struct __darwin_xmm_reg __fpu_xmm9;
- struct __darwin_xmm_reg __fpu_xmm10;
- struct __darwin_xmm_reg __fpu_xmm11;
- struct __darwin_xmm_reg __fpu_xmm12;
- struct __darwin_xmm_reg __fpu_xmm13;
- struct __darwin_xmm_reg __fpu_xmm14;
- struct __darwin_xmm_reg __fpu_xmm15;
- char __fpu_rsrv4[6*16];
- int __fpu_reserved1;
-};
-struct __darwin_x86_avx_state64
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- struct __darwin_xmm_reg __fpu_xmm8;
- struct __darwin_xmm_reg __fpu_xmm9;
- struct __darwin_xmm_reg __fpu_xmm10;
- struct __darwin_xmm_reg __fpu_xmm11;
- struct __darwin_xmm_reg __fpu_xmm12;
- struct __darwin_xmm_reg __fpu_xmm13;
- struct __darwin_xmm_reg __fpu_xmm14;
- struct __darwin_xmm_reg __fpu_xmm15;
- char __fpu_rsrv4[6*16];
- int __fpu_reserved1;
- char __avx_reserved1[64];
- struct __darwin_xmm_reg __fpu_ymmh0;
- struct __darwin_xmm_reg __fpu_ymmh1;
- struct __darwin_xmm_reg __fpu_ymmh2;
- struct __darwin_xmm_reg __fpu_ymmh3;
- struct __darwin_xmm_reg __fpu_ymmh4;
- struct __darwin_xmm_reg __fpu_ymmh5;
- struct __darwin_xmm_reg __fpu_ymmh6;
- struct __darwin_xmm_reg __fpu_ymmh7;
- struct __darwin_xmm_reg __fpu_ymmh8;
- struct __darwin_xmm_reg __fpu_ymmh9;
- struct __darwin_xmm_reg __fpu_ymmh10;
- struct __darwin_xmm_reg __fpu_ymmh11;
- struct __darwin_xmm_reg __fpu_ymmh12;
- struct __darwin_xmm_reg __fpu_ymmh13;
- struct __darwin_xmm_reg __fpu_ymmh14;
- struct __darwin_xmm_reg __fpu_ymmh15;
-};
-struct __darwin_x86_avx512_state64
-{
- int __fpu_reserved[2];
- struct __darwin_fp_control __fpu_fcw;
- struct __darwin_fp_status __fpu_fsw;
- __uint8_t __fpu_ftw;
- __uint8_t __fpu_rsrv1;
- __uint16_t __fpu_fop;
- __uint32_t __fpu_ip;
- __uint16_t __fpu_cs;
- __uint16_t __fpu_rsrv2;
- __uint32_t __fpu_dp;
- __uint16_t __fpu_ds;
- __uint16_t __fpu_rsrv3;
- __uint32_t __fpu_mxcsr;
- __uint32_t __fpu_mxcsrmask;
- struct __darwin_mmst_reg __fpu_stmm0;
- struct __darwin_mmst_reg __fpu_stmm1;
- struct __darwin_mmst_reg __fpu_stmm2;
- struct __darwin_mmst_reg __fpu_stmm3;
- struct __darwin_mmst_reg __fpu_stmm4;
- struct __darwin_mmst_reg __fpu_stmm5;
- struct __darwin_mmst_reg __fpu_stmm6;
- struct __darwin_mmst_reg __fpu_stmm7;
- struct __darwin_xmm_reg __fpu_xmm0;
- struct __darwin_xmm_reg __fpu_xmm1;
- struct __darwin_xmm_reg __fpu_xmm2;
- struct __darwin_xmm_reg __fpu_xmm3;
- struct __darwin_xmm_reg __fpu_xmm4;
- struct __darwin_xmm_reg __fpu_xmm5;
- struct __darwin_xmm_reg __fpu_xmm6;
- struct __darwin_xmm_reg __fpu_xmm7;
- struct __darwin_xmm_reg __fpu_xmm8;
- struct __darwin_xmm_reg __fpu_xmm9;
- struct __darwin_xmm_reg __fpu_xmm10;
- struct __darwin_xmm_reg __fpu_xmm11;
- struct __darwin_xmm_reg __fpu_xmm12;
- struct __darwin_xmm_reg __fpu_xmm13;
- struct __darwin_xmm_reg __fpu_xmm14;
- struct __darwin_xmm_reg __fpu_xmm15;
- char __fpu_rsrv4[6*16];
- int __fpu_reserved1;
- char __avx_reserved1[64];
- struct __darwin_xmm_reg __fpu_ymmh0;
- struct __darwin_xmm_reg __fpu_ymmh1;
- struct __darwin_xmm_reg __fpu_ymmh2;
- struct __darwin_xmm_reg __fpu_ymmh3;
- struct __darwin_xmm_reg __fpu_ymmh4;
- struct __darwin_xmm_reg __fpu_ymmh5;
- struct __darwin_xmm_reg __fpu_ymmh6;
- struct __darwin_xmm_reg __fpu_ymmh7;
- struct __darwin_xmm_reg __fpu_ymmh8;
- struct __darwin_xmm_reg __fpu_ymmh9;
- struct __darwin_xmm_reg __fpu_ymmh10;
- struct __darwin_xmm_reg __fpu_ymmh11;
- struct __darwin_xmm_reg __fpu_ymmh12;
- struct __darwin_xmm_reg __fpu_ymmh13;
- struct __darwin_xmm_reg __fpu_ymmh14;
- struct __darwin_xmm_reg __fpu_ymmh15;
- struct __darwin_opmask_reg __fpu_k0;
- struct __darwin_opmask_reg __fpu_k1;
- struct __darwin_opmask_reg __fpu_k2;
- struct __darwin_opmask_reg __fpu_k3;
- struct __darwin_opmask_reg __fpu_k4;
- struct __darwin_opmask_reg __fpu_k5;
- struct __darwin_opmask_reg __fpu_k6;
- struct __darwin_opmask_reg __fpu_k7;
- struct __darwin_ymm_reg __fpu_zmmh0;
- struct __darwin_ymm_reg __fpu_zmmh1;
- struct __darwin_ymm_reg __fpu_zmmh2;
- struct __darwin_ymm_reg __fpu_zmmh3;
- struct __darwin_ymm_reg __fpu_zmmh4;
- struct __darwin_ymm_reg __fpu_zmmh5;
- struct __darwin_ymm_reg __fpu_zmmh6;
- struct __darwin_ymm_reg __fpu_zmmh7;
- struct __darwin_ymm_reg __fpu_zmmh8;
- struct __darwin_ymm_reg __fpu_zmmh9;
- struct __darwin_ymm_reg __fpu_zmmh10;
- struct __darwin_ymm_reg __fpu_zmmh11;
- struct __darwin_ymm_reg __fpu_zmmh12;
- struct __darwin_ymm_reg __fpu_zmmh13;
- struct __darwin_ymm_reg __fpu_zmmh14;
- struct __darwin_ymm_reg __fpu_zmmh15;
- struct __darwin_zmm_reg __fpu_zmm16;
- struct __darwin_zmm_reg __fpu_zmm17;
- struct __darwin_zmm_reg __fpu_zmm18;
- struct __darwin_zmm_reg __fpu_zmm19;
- struct __darwin_zmm_reg __fpu_zmm20;
- struct __darwin_zmm_reg __fpu_zmm21;
- struct __darwin_zmm_reg __fpu_zmm22;
- struct __darwin_zmm_reg __fpu_zmm23;
- struct __darwin_zmm_reg __fpu_zmm24;
- struct __darwin_zmm_reg __fpu_zmm25;
- struct __darwin_zmm_reg __fpu_zmm26;
- struct __darwin_zmm_reg __fpu_zmm27;
- struct __darwin_zmm_reg __fpu_zmm28;
- struct __darwin_zmm_reg __fpu_zmm29;
- struct __darwin_zmm_reg __fpu_zmm30;
- struct __darwin_zmm_reg __fpu_zmm31;
-};
-struct __darwin_x86_exception_state64
-{
- __uint16_t __trapno;
- __uint16_t __cpu;
- __uint32_t __err;
- __uint64_t __faultvaddr;
-};
-struct __darwin_x86_debug_state64
-{
- __uint64_t __dr0;
- __uint64_t __dr1;
- __uint64_t __dr2;
- __uint64_t __dr3;
- __uint64_t __dr4;
- __uint64_t __dr5;
- __uint64_t __dr6;
- __uint64_t __dr7;
-};
-struct __darwin_x86_cpmu_state64
-{
- __uint64_t __ctrs[16];
-};
-struct __darwin_mcontext32
-{
- struct __darwin_i386_exception_state __es;
- struct __darwin_i386_thread_state __ss;
- struct __darwin_i386_float_state __fs;
-};
-struct __darwin_mcontext_avx32
-{
- struct __darwin_i386_exception_state __es;
- struct __darwin_i386_thread_state __ss;
- struct __darwin_i386_avx_state __fs;
-};
-struct __darwin_mcontext_avx512_32
-{
- struct __darwin_i386_exception_state __es;
- struct __darwin_i386_thread_state __ss;
- struct __darwin_i386_avx512_state __fs;
-};
-struct __darwin_mcontext64
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_state64 __ss;
- struct __darwin_x86_float_state64 __fs;
-};
-struct __darwin_mcontext64_full
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_full_state64 __ss;
- struct __darwin_x86_float_state64 __fs;
-};
-struct __darwin_mcontext_avx64
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_state64 __ss;
- struct __darwin_x86_avx_state64 __fs;
-};
-struct __darwin_mcontext_avx64_full
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_full_state64 __ss;
- struct __darwin_x86_avx_state64 __fs;
-};
-struct __darwin_mcontext_avx512_64
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_state64 __ss;
- struct __darwin_x86_avx512_state64 __fs;
-};
-struct __darwin_mcontext_avx512_64_full
-{
- struct __darwin_x86_exception_state64 __es;
- struct __darwin_x86_thread_full_state64 __ss;
- struct __darwin_x86_avx512_state64 __fs;
-};
-typedef struct __darwin_mcontext64 *mcontext_t;
-struct __darwin_sigaltstack
-{
- void *ss_sp;
- __darwin_size_t ss_size;
- int ss_flags;
-};
-typedef struct __darwin_sigaltstack stack_t;
-struct __darwin_ucontext
-{
- int uc_onstack;
- __darwin_sigset_t uc_sigmask;
- struct __darwin_sigaltstack uc_stack;
- struct __darwin_ucontext *uc_link;
- __darwin_size_t uc_mcsize;
- struct __darwin_mcontext64 *uc_mcontext;
- struct __darwin_mcontext64 __mcontext_data;
-};
-typedef struct __darwin_ucontext ucontext_t;
-typedef __darwin_sigset_t sigset_t;
-union sigval {
- int sival_int;
- void *sival_ptr;
-};
-struct sigevent {
- int sigev_notify;
- int sigev_signo;
- union sigval sigev_value;
- void (*sigev_notify_function)(union sigval);
- pthread_attr_t *sigev_notify_attributes;
-};
-typedef struct __siginfo {
- int si_signo;
- int si_errno;
- int si_code;
- pid_t si_pid;
- uid_t si_uid;
- int si_status;
- void *si_addr;
- union sigval si_value;
- long si_band;
- unsigned long __pad[7];
-} siginfo_t;
-union __sigaction_u {
- void (*__sa_handler)(int);
- void (*__sa_sigaction)(int, struct __siginfo *,
- void *);
-};
-struct __sigaction {
- union __sigaction_u __sigaction_u;
- void (*sa_tramp)(void *, int, int, siginfo_t *, void *);
- sigset_t sa_mask;
- int sa_flags;
-};
-struct sigaction {
- union __sigaction_u __sigaction_u;
- sigset_t sa_mask;
- int sa_flags;
-};
-typedef void (*sig_t)(int);
-struct sigvec {
- void (*sv_handler)(int);
- int sv_mask;
- int sv_flags;
-};
-struct sigstack {
- char *ss_sp;
- int ss_onstack;
-};
- void(*signal(int, void (*)(int)))(int);
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef int8_t int_least8_t;
-typedef int16_t int_least16_t;
-typedef int32_t int_least32_t;
-typedef int64_t int_least64_t;
-typedef uint8_t uint_least8_t;
-typedef uint16_t uint_least16_t;
-typedef uint32_t uint_least32_t;
-typedef uint64_t uint_least64_t;
-typedef int8_t int_fast8_t;
-typedef int16_t int_fast16_t;
-typedef int32_t int_fast32_t;
-typedef int64_t int_fast64_t;
-typedef uint8_t uint_fast8_t;
-typedef uint16_t uint_fast16_t;
-typedef uint32_t uint_fast32_t;
-typedef uint64_t uint_fast64_t;
-typedef long int intmax_t;
-typedef long unsigned int uintmax_t;
-struct timeval
-{
- __darwin_time_t tv_sec;
- __darwin_suseconds_t tv_usec;
-};
-typedef __uint64_t rlim_t;
-struct rusage {
- struct timeval ru_utime;
- struct timeval ru_stime;
- long ru_maxrss;
- long ru_ixrss;
- long ru_idrss;
- long ru_isrss;
- long ru_minflt;
- long ru_majflt;
- long ru_nswap;
- long ru_inblock;
- long ru_oublock;
- long ru_msgsnd;
- long ru_msgrcv;
- long ru_nsignals;
- long ru_nvcsw;
- long ru_nivcsw;
-};
-typedef void *rusage_info_t;
-struct rusage_info_v0 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
-};
-struct rusage_info_v1 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
-};
-struct rusage_info_v2 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
-};
-struct rusage_info_v3 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
-};
-struct rusage_info_v4 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
-};
-struct rusage_info_v5 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
- uint64_t ri_flags;
-};
-struct rusage_info_v6 {
- uint8_t ri_uuid[16];
- uint64_t ri_user_time;
- uint64_t ri_system_time;
- uint64_t ri_pkg_idle_wkups;
- uint64_t ri_interrupt_wkups;
- uint64_t ri_pageins;
- uint64_t ri_wired_size;
- uint64_t ri_resident_size;
- uint64_t ri_phys_footprint;
- uint64_t ri_proc_start_abstime;
- uint64_t ri_proc_exit_abstime;
- uint64_t ri_child_user_time;
- uint64_t ri_child_system_time;
- uint64_t ri_child_pkg_idle_wkups;
- uint64_t ri_child_interrupt_wkups;
- uint64_t ri_child_pageins;
- uint64_t ri_child_elapsed_abstime;
- uint64_t ri_diskio_bytesread;
- uint64_t ri_diskio_byteswritten;
- uint64_t ri_cpu_time_qos_default;
- uint64_t ri_cpu_time_qos_maintenance;
- uint64_t ri_cpu_time_qos_background;
- uint64_t ri_cpu_time_qos_utility;
- uint64_t ri_cpu_time_qos_legacy;
- uint64_t ri_cpu_time_qos_user_initiated;
- uint64_t ri_cpu_time_qos_user_interactive;
- uint64_t ri_billed_system_time;
- uint64_t ri_serviced_system_time;
- uint64_t ri_logical_writes;
- uint64_t ri_lifetime_max_phys_footprint;
- uint64_t ri_instructions;
- uint64_t ri_cycles;
- uint64_t ri_billed_energy;
- uint64_t ri_serviced_energy;
- uint64_t ri_interval_max_phys_footprint;
- uint64_t ri_runnable_time;
- uint64_t ri_flags;
- uint64_t ri_user_ptime;
- uint64_t ri_system_ptime;
- uint64_t ri_pinstructions;
- uint64_t ri_pcycles;
- uint64_t ri_energy_nj;
- uint64_t ri_penergy_nj;
- uint64_t ri_reserved[14];
-};
-typedef struct rusage_info_v6 rusage_info_current;
-struct rlimit {
- rlim_t rlim_cur;
- rlim_t rlim_max;
-};
-struct proc_rlimit_control_wakeupmon {
- uint32_t wm_flags;
- int32_t wm_rate;
-};
-int getpriority(int, id_t);
-int getiopolicy_np(int, int) __attribute__((availability(macosx,introduced=10.5)));
-int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" );
-int getrusage(int, struct rusage *);
-int setpriority(int, id_t, int);
-int setiopolicy_np(int, int, int) __attribute__((availability(macosx,introduced=10.5)));
-int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" );
-union wait {
- int w_status;
- struct {
- unsigned int w_Termsig:7,
- w_Coredump:1,
- w_Retcode:8,
- w_Filler:16;
- } w_T;
- struct {
- unsigned int w_Stopval:8,
- w_Stopsig:8,
- w_Filler:16;
- } w_S;
-};
-pid_t wait(int *) __asm("_" "wait" );
-pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" );
-int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" );
-pid_t wait3(int *, int, struct rusage *);
-pid_t wait4(pid_t, int *, int, struct rusage *);
-
-void *alloca(size_t);
-typedef __darwin_ct_rune_t ct_rune_t;
-typedef __darwin_rune_t rune_t;
-typedef __darwin_wchar_t wchar_t;
-
-typedef struct {
- int quot;
- int rem;
-} div_t;
-typedef struct {
- long quot;
- long rem;
-} ldiv_t;
-typedef struct {
- long long quot;
- long long rem;
-} lldiv_t;
-extern int __mb_cur_max;
-void *malloc(size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1)));
-void *calloc(size_t __count, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1,2)));
-void free(void *);
-void *realloc(void *__ptr, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(2)));
-void *valloc(size_t) __attribute__((alloc_size(1)));
-void *aligned_alloc(size_t __alignment, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(2))) __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)));
-int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((availability(macosx,introduced=10.6)));
-void abort(void) __attribute__((__cold__)) __attribute__((__noreturn__));
-int abs(int) __attribute__((__const__));
-int atexit(void (* _Nonnull)(void));
-double atof(const char *);
-int atoi(const char *);
-long atol(const char *);
-long long
- atoll(const char *);
-void *bsearch(const void *__key, const void *__base, size_t __nel,
- size_t __width, int (* _Nonnull __compar)(const void *, const void *));
-div_t div(int, int) __attribute__((__const__));
-void exit(int) __attribute__((__noreturn__));
-char *getenv(const char *);
-long labs(long) __attribute__((__const__));
-ldiv_t ldiv(long, long) __attribute__((__const__));
-long long
- llabs(long long);
-lldiv_t lldiv(long long, long long);
-int mblen(const char *__s, size_t __n);
-size_t mbstowcs(wchar_t * __restrict__ , const char * __restrict__, size_t);
-int mbtowc(wchar_t * __restrict__, const char * __restrict__, size_t);
-void qsort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int rand(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-void srand(unsigned) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-double strtod(const char *, char **) __asm("_" "strtod" );
-float strtof(const char *, char **) __asm("_" "strtof" );
-long strtol(const char *__str, char **__endptr, int __base);
-long double
- strtold(const char *, char **);
-long long
- strtoll(const char *__str, char **__endptr, int __base);
-unsigned long
- strtoul(const char *__str, char **__endptr, int __base);
-unsigned long long
- strtoull(const char *__str, char **__endptr, int __base);
-__attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead. (On iOS, process spawning is unavailable.)")))
-__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable)))
-__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-int system(const char *) __asm("_" "system" );
-size_t wcstombs(char * __restrict__, const wchar_t * __restrict__, size_t);
-int wctomb(char *, wchar_t);
-void _Exit(int) __attribute__((__noreturn__));
-long a64l(const char *);
-double drand48(void);
-char *ecvt(double, int, int *__restrict__, int *__restrict__);
-double erand48(unsigned short[3]);
-char *fcvt(double, int, int *__restrict__, int *__restrict__);
-char *gcvt(double, int, char *);
-int getsubopt(char **, char * const *, char **);
-int grantpt(int);
-char *initstate(unsigned, char *, size_t);
-long jrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-char *l64a(long);
-void lcong48(unsigned short[7]);
-long lrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-__attribute__((__deprecated__("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of mktemp(3), it is highly recommended that you use mkstemp(3) instead.")))
-char *mktemp(char *);
-int mkstemp(char *);
-long mrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-long nrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-int posix_openpt(int);
-char *ptsname(int);
-int ptsname_r(int fildes, char *buffer, size_t buflen) __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(tvos,introduced=11.3))) __attribute__((availability(watchos,introduced=4.3)));
-int putenv(char *) __asm("_" "putenv" );
-long random(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-int rand_r(unsigned *) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead.")));
-char *realpath(const char * __restrict__, char * __restrict__) __asm("_" "realpath" "$DARWIN_EXTSN");
-unsigned short
- *seed48(unsigned short[3]);
-int setenv(const char * __name, const char * __value, int __overwrite) __asm("_" "setenv" );
-void setkey(const char *) __asm("_" "setkey" );
-char *setstate(const char *);
-void srand48(long);
-void srandom(unsigned);
-int unlockpt(int);
-int unsetenv(const char *) __asm("_" "unsetenv" );
-uint32_t arc4random(void);
-void arc4random_addrandom(unsigned char * , int )
- __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(macosx,deprecated=10.12,message="use arc4random_stir")))
- __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=10.0,message="use arc4random_stir")))
- __attribute__((availability(tvos,introduced=2.0))) __attribute__((availability(tvos,deprecated=10.0,message="use arc4random_stir")))
- __attribute__((availability(watchos,introduced=1.0))) __attribute__((availability(watchos,deprecated=3.0,message="use arc4random_stir")));
-void arc4random_buf(void * __buf, size_t __nbytes) __attribute__((availability(macosx,introduced=10.7)));
-void arc4random_stir(void);
-uint32_t
- arc4random_uniform(uint32_t __upper_bound) __attribute__((availability(macosx,introduced=10.7)));
-int atexit_b(void (^ _Nonnull)(void)) __attribute__((availability(macosx,introduced=10.6)));
-void *bsearch_b(const void *__key, const void *__base, size_t __nel,
- size_t __width, int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-char *cgetcap(char *, const char *, int);
-int cgetclose(void);
-int cgetent(char **, char **, const char *);
-int cgetfirst(char **, char **);
-int cgetmatch(const char *, const char *);
-int cgetnext(char **, char **);
-int cgetnum(char *, const char *, long *);
-int cgetset(const char *);
-int cgetstr(char *, const char *, char **);
-int cgetustr(char *, const char *, char **);
-int daemon(int, int) __asm("_" "daemon" "$1050") __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message="Use posix_spawn APIs instead."))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-char *devname(dev_t, mode_t);
-char *devname_r(dev_t, mode_t, char *buf, int len);
-char *getbsize(int *, long *);
-int getloadavg(double [], int);
-const char
- *getprogname(void);
-void setprogname(const char *);
-int heapsort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int heapsort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-int mergesort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *));
-int mergesort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort(void *__base, size_t __nel, size_t __width,
- int (* _Nonnull __compar)(const void *, const void *))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void psort_r(void *__base, size_t __nel, size_t __width, void *,
- int (* _Nonnull __compar)(void *, const void *, const void *))
- __attribute__((availability(macosx,introduced=10.6)));
-void qsort_b(void *__base, size_t __nel, size_t __width,
- int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__)))
- __attribute__((availability(macosx,introduced=10.6)));
-void qsort_r(void *__base, size_t __nel, size_t __width, void *,
- int (* _Nonnull __compar)(void *, const void *, const void *));
-int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
- unsigned __endbyte);
-int rpmatch(const char *)
- __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)));
-int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
- unsigned __endbyte);
-void sranddev(void);
-void srandomdev(void);
-void *reallocf(void *__ptr, size_t __size) __attribute__((alloc_size(2)));
-long long
- strtonum(const char *__numstr, long long __minval, long long __maxval, const char **__errstrp)
- __attribute__((availability(macos,introduced=11.0))) __attribute__((availability(ios,introduced=14.0))) __attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)));
-long long
- strtoq(const char *__str, char **__endptr, int __base);
-unsigned long long
- strtouq(const char *__str, char **__endptr, int __base);
-extern char *suboptarg;
-typedef long int ptrdiff_t;
-typedef long double max_align_t;
-
-void *memchr(const void *__s, int __c, size_t __n);
-int memcmp(const void *__s1, const void *__s2, size_t __n);
-void *memcpy(void *__dst, const void *__src, size_t __n);
-void *memmove(void *__dst, const void *__src, size_t __len);
-void *memset(void *__b, int __c, size_t __len);
-char *strcat(char *__s1, const char *__s2);
-char *strchr(const char *__s, int __c);
-int strcmp(const char *__s1, const char *__s2);
-int strcoll(const char *__s1, const char *__s2);
-char *strcpy(char *__dst, const char *__src);
-size_t strcspn(const char *__s, const char *__charset);
-char *strerror(int __errnum) __asm("_" "strerror" );
-size_t strlen(const char *__s);
-char *strncat(char *__s1, const char *__s2, size_t __n);
-int strncmp(const char *__s1, const char *__s2, size_t __n);
-char *strncpy(char *__dst, const char *__src, size_t __n);
-char *strpbrk(const char *__s, const char *__charset);
-char *strrchr(const char *__s, int __c);
-size_t strspn(const char *__s, const char *__charset);
-char *strstr(const char *__big, const char *__little);
-char *strtok(char *__str, const char *__sep);
-size_t strxfrm(char *__s1, const char *__s2, size_t __n);
-char *strtok_r(char *__str, const char *__sep, char **__lasts);
-int strerror_r(int __errnum, char *__strerrbuf, size_t __buflen);
-char *strdup(const char *__s1);
-void *memccpy(void *__dst, const void *__src, int __c, size_t __n);
-char *stpcpy(char *__dst, const char *__src);
-char *stpncpy(char *__dst, const char *__src, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-char *strndup(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-size_t strnlen(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7)));
-char *strsignal(int __sig);
-errno_t memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __attribute__((availability(macosx,introduced=10.9)));
-void *memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __attribute__((availability(macosx,introduced=10.7)));
-void memset_pattern4(void *__b, const void *__pattern4, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-void memset_pattern8(void *__b, const void *__pattern8, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-void memset_pattern16(void *__b, const void *__pattern16, size_t __len) __attribute__((availability(macosx,introduced=10.5)));
-char *strcasestr(const char *__big, const char *__little);
-char *strnstr(const char *__big, const char *__little, size_t __len);
-size_t strlcat(char *__dst, const char *__source, size_t __size);
-size_t strlcpy(char *__dst, const char *__source, size_t __size);
-void strmode(int __mode, char *__bp);
-char *strsep(char **__stringp, const char *__delim);
-void swab(const void * __restrict__, void * __restrict__, ssize_t);
-__attribute__((availability(macosx,introduced=10.12.1))) __attribute__((availability(ios,introduced=10.1)))
-__attribute__((availability(tvos,introduced=10.0.1))) __attribute__((availability(watchos,introduced=3.1)))
-int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len);
-__attribute__((availability(macosx,introduced=11.0))) __attribute__((availability(ios,introduced=14.0)))
-__attribute__((availability(tvos,introduced=14.0))) __attribute__((availability(watchos,introduced=7.0)))
-int strsignal_r(int __sig, char *__strsignalbuf, size_t __buflen);
-int bcmp(const void *, const void *, size_t) ;
-void bcopy(const void *, void *, size_t) ;
-void bzero(void *, size_t) ;
-char *index(const char *, int) ;
-char *rindex(const char *, int) ;
-int ffs(int);
-int strcasecmp(const char *, const char *);
-int strncasecmp(const char *, const char *, size_t);
-int ffsl(long) __attribute__((availability(macosx,introduced=10.5)));
-int ffsll(long long) __attribute__((availability(macosx,introduced=10.9)));
-int fls(int) __attribute__((availability(macosx,introduced=10.5)));
-int flsl(long) __attribute__((availability(macosx,introduced=10.5)));
-int flsll(long long) __attribute__((availability(macosx,introduced=10.9)));
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-imaxabs(intmax_t j);
-typedef struct {
- intmax_t quot;
- intmax_t rem;
-} imaxdiv_t;
-__attribute__((availability(macosx,introduced=10.4)))
-extern imaxdiv_t
-imaxdiv(intmax_t __numer, intmax_t __denom);
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-strtoimax(const char * __restrict__ __nptr,
- char ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern uintmax_t
-strtoumax(const char * __restrict__ __nptr,
- char ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern intmax_t
-wcstoimax(const wchar_t * __restrict__ __nptr,
- wchar_t ** __restrict__ __endptr,
- int __base);
-__attribute__((availability(macosx,introduced=10.4)))
-extern uintmax_t
-wcstoumax(const wchar_t * __restrict__ __nptr,
- wchar_t ** __restrict__ __endptr,
- int __base);
-
-struct accessx_descriptor {
- unsigned int ad_name_offset;
- int ad_flags;
- int ad_pad[2];
-};
-int getattrlistbulk(int, void *, void *, size_t, uint64_t) __attribute__((availability(macosx,introduced=10.10)));
-int getattrlistat(int, const char *, void *, void *, size_t, unsigned long) __attribute__((availability(macosx,introduced=10.10)));
-int setattrlistat(int, const char *, void *, void *, size_t, uint32_t) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-ssize_t freadlink(int, char * __restrict__, size_t) __attribute__((availability(macos,introduced=13.0))) __attribute__((availability(ios,introduced=16.0))) __attribute__((availability(tvos,introduced=16.0))) __attribute__((availability(watchos,introduced=9.0)));
-int faccessat(int, const char *, int, int) __attribute__((availability(macosx,introduced=10.10)));
-int fchownat(int, const char *, uid_t, gid_t, int) __attribute__((availability(macosx,introduced=10.10)));
-int linkat(int, const char *, int, const char *, int) __attribute__((availability(macosx,introduced=10.10)));
-ssize_t readlinkat(int, const char *, char *, size_t) __attribute__((availability(macosx,introduced=10.10)));
-int symlinkat(const char *, int, const char *) __attribute__((availability(macosx,introduced=10.10)));
-int unlinkat(int, const char *, int) __attribute__((availability(macosx,introduced=10.10)));
-void _exit(int) __attribute__((__noreturn__));
-int access(const char *, int);
-unsigned int
- alarm(unsigned int);
-int chdir(const char *);
-int chown(const char *, uid_t, gid_t);
-int close(int) __asm("_" "close" );
-int dup(int);
-int dup2(int, int);
-int execl(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execle(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execlp(const char * __file, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execv(const char * __path, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execve(const char * __file, char * const * __argv, char * const * __envp) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int execvp(const char * __file, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-pid_t fork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-long fpathconf(int, int);
-char *getcwd(char *, size_t);
-gid_t getegid(void);
-uid_t geteuid(void);
-gid_t getgid(void);
-int getgroups(int, gid_t []) __asm("_" "getgroups" "$DARWIN_EXTSN");
-char *getlogin(void);
-pid_t getpgrp(void);
-pid_t getpid(void);
-pid_t getppid(void);
-uid_t getuid(void);
-int isatty(int);
-int link(const char *, const char *);
-off_t lseek(int, off_t, int);
-long pathconf(const char *, int);
-int pause(void) __asm("_" "pause" );
-int pipe(int [2]);
-ssize_t read(int, void *, size_t) __asm("_" "read" );
-int rmdir(const char *);
-int setgid(gid_t);
-int setpgid(pid_t, pid_t);
-pid_t setsid(void);
-int setuid(uid_t);
-unsigned int
- sleep(unsigned int) __asm("_" "sleep" );
-long sysconf(int);
-pid_t tcgetpgrp(int);
-int tcsetpgrp(int, pid_t);
-char *ttyname(int);
-int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" );
-int unlink(const char *);
-ssize_t write(int __fd, const void * __buf, size_t __nbyte) __asm("_" "write" );
-size_t confstr(int, char *, size_t) __asm("_" "confstr" );
-int getopt(int, char * const [], const char *) __asm("_" "getopt" );
-extern char *optarg;
-extern int optind, opterr, optopt;
-__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-void *brk(const void *);
-int chroot(const char *) ;
-char *crypt(const char *, const char *);
-void encrypt(char *, int) __asm("_" "encrypt" );
-int fchdir(int);
-long gethostid(void);
-pid_t getpgid(pid_t);
-pid_t getsid(pid_t);
-int getdtablesize(void) ;
-int getpagesize(void) __attribute__((__const__)) ;
-char *getpass(const char *) ;
-char *getwd(char *) ;
-int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" );
-int lockf(int, int, off_t) __asm("_" "lockf" );
-int nice(int) __asm("_" "nice" );
-ssize_t pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pread" );
-ssize_t pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pwrite" );
-__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-void *sbrk(int);
-pid_t setpgrp(void) __asm("_" "setpgrp" );
-int setregid(gid_t, gid_t) __asm("_" "setregid" );
-int setreuid(uid_t, uid_t) __asm("_" "setreuid" );
-void swab(const void * __restrict__, void * __restrict__, ssize_t);
-void sync(void);
-int truncate(const char *, off_t);
-useconds_t ualarm(useconds_t, useconds_t);
-int usleep(useconds_t) __asm("_" "usleep" );
-__attribute__((__deprecated__("Use posix_spawn or fork")))
-pid_t fork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int fsync(int) __asm("_" "fsync" );
-int ftruncate(int, off_t);
-int getlogin_r(char *, size_t);
-int fchown(int, uid_t, gid_t);
-int gethostname(char *, size_t);
-ssize_t readlink(const char * __restrict__, char * __restrict__, size_t);
-int setegid(gid_t);
-int seteuid(uid_t);
-int symlink(const char *, const char *);
-int pselect(int, fd_set * __restrict__, fd_set * __restrict__,
- fd_set * __restrict__, const struct timespec * __restrict__,
- const sigset_t * __restrict__)
-__asm("_" "pselect" "$DARWIN_EXTSN" )
-;
-int select(int, fd_set * __restrict__, fd_set * __restrict__,
- fd_set * __restrict__, struct timeval * __restrict__)
-__asm("_" "select" "$DARWIN_EXTSN" )
-;
-typedef __darwin_uuid_t uuid_t;
-void _Exit(int) __attribute__((__noreturn__));
-int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
-int acct(const char *);
-int add_profil(char *, size_t, unsigned long, unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-void endusershell(void);
-int execvP(const char * __file, const char * __searchpath, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-char *fflagstostr(unsigned long);
-int getdomainname(char *, int);
-int getgrouplist(const char *, int, int *, int *);
-int gethostuuid(uuid_t, const struct timespec *) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable)));
-mode_t getmode(const void *, mode_t);
-int getpeereid(int, uid_t *, gid_t *);
-int getsgroups_np(int *, uuid_t);
-char *getusershell(void);
-int getwgroups_np(int *, uuid_t);
-int initgroups(const char *, int);
-int issetugid(void);
-char *mkdtemp(char *);
-int mknod(const char *, mode_t, dev_t);
-int mkpath_np(const char *path, mode_t omode) __attribute__((availability(macosx,introduced=10.8)));
-int mkpathat_np(int dfd, const char *path, mode_t omode)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkstemp(char *);
-int mkstemps(char *, int);
-char *mktemp(char *);
-int mkostemp(char *path, int oflags)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkostemps(char *path, int slen, int oflags)
- __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-int mkstemp_dprotected_np(char *path, int dpclass, int dpflags)
- __attribute__((availability(macosx,unavailable))) __attribute__((availability(ios,introduced=10.0)))
- __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)));
-char *mkdtempat_np(int dfd, char *path)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int mkstempsat_np(int dfd, char *path, int slen)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int mkostempsat_np(int dfd, char *path, int slen, int oflags)
- __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0)))
- __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0)));
-int nfssvc(int, void *);
-int profil(char *, size_t, unsigned long, unsigned int);
-__attribute__((__deprecated__("Use of per-thread security contexts is error-prone and discouraged.")))
-int pthread_setugid_np(uid_t, gid_t);
-int pthread_getugid_np( uid_t *, gid_t *);
-int reboot(int);
-int revoke(const char *);
-__attribute__((__deprecated__)) int rcmd(char **, int, const char *, const char *, const char *, int *);
-__attribute__((__deprecated__)) int rcmd_af(char **, int, const char *, const char *, const char *, int *,
- int);
-__attribute__((__deprecated__)) int rresvport(int *);
-__attribute__((__deprecated__)) int rresvport_af(int *, int);
-__attribute__((__deprecated__)) int iruserok(unsigned long, int, const char *, const char *);
-__attribute__((__deprecated__)) int iruserok_sa(const void *, int, int, const char *, const char *);
-__attribute__((__deprecated__)) int ruserok(const char *, int, const char *, const char *);
-int setdomainname(const char *, int);
-int setgroups(int, const gid_t *);
-void sethostid(long);
-int sethostname(const char *, int);
-void setkey(const char *) __asm("_" "setkey" );
-int setlogin(const char *);
-void *setmode(const char *) __asm("_" "setmode" );
-int setrgid(gid_t);
-int setruid(uid_t);
-int setsgroups_np(int, const uuid_t);
-void setusershell(void);
-int setwgroups_np(int, const uuid_t);
-int strtofflags(char **, unsigned long *, unsigned long *);
-int swapon(const char *);
-int ttyslot(void);
-int undelete(const char *);
-int unwhiteout(const char *);
-void *valloc(size_t);
-__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)))
-__attribute__((availability(ios,deprecated=10.0,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")))
-__attribute__((availability(macosx,deprecated=10.12,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")))
-int syscall(int, ...);
-extern char *suboptarg;
-int getsubopt(char **, char * const *, char **);
-int fgetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int fsetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int getattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "getattrlist" );
-int setattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "setattrlist" );
-int exchangedata(const char*,const char*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-struct fssearchblock;
-struct searchstate;
-int searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int fsctl(const char *,unsigned long,void*,unsigned int);
-int ffsctl(int,unsigned long,void*,unsigned int) __attribute__((availability(macosx,introduced=10.6)));
-int fsync_volume_np(int, int) __attribute__((availability(macosx,introduced=10.8)));
-int sync_volume_np(const char *, int) __attribute__((availability(macosx,introduced=10.8)));
-extern int optreset;
-
-
-
-
-
-
-
-
-
-
-
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1)))
-void *ruby_xmalloc(size_t size)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1,2)))
-void *ruby_xmalloc2(size_t nelems, size_t elemsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (1,2)))
-void *ruby_xcalloc(size_t nelems, size_t elemsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2)))
-void *ruby_xrealloc(void *ptr, size_t newsiz)
-;
-__attribute__((__warn_unused_result__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2,3)))
-void *ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
-;
-void ruby_xfree(void *ptr)
-;
-
-
-
-
-
-
-
-
-
-#define RBIMPL_ATTR_COLD_H
-#define RBIMPL_ATTR_COLD() __attribute__((__cold__))
-
-
-
-
-
-
-
-
-
-
-
-
-
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_assert_failure(const char *file, int line, const char *name, const char *expr);
-
-#define COLDFUNC RBIMPL_ATTR_COLD()
-
-
-
-
-
-
-
-
-
- typedef float float_t;
- typedef double double_t;
-extern int __math_errhandling(void);
-extern int __fpclassifyf(float);
-extern int __fpclassifyd(double);
-extern int __fpclassifyl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float);
-inline __attribute__ ((__always_inline__)) int __inline_isfinited(double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isinff(float);
-inline __attribute__ ((__always_inline__)) int __inline_isinfd(double);
-inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isnanf(float);
-inline __attribute__ ((__always_inline__)) int __inline_isnand(double);
-inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float);
-inline __attribute__ ((__always_inline__)) int __inline_isnormald(double);
-inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double);
-inline __attribute__ ((__always_inline__)) int __inline_signbitf(float);
-inline __attribute__ ((__always_inline__)) int __inline_signbitd(double);
-inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double);
-inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float __x) {
- return __x == __x && __builtin_fabsf(__x) != __builtin_inff();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isfinited(double __x) {
- return __x == __x && __builtin_fabs(__x) != __builtin_inf();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double __x) {
- return __x == __x && __builtin_fabsl(__x) != __builtin_infl();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinff(float __x) {
- return __builtin_fabsf(__x) == __builtin_inff();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinfd(double __x) {
- return __builtin_fabs(__x) == __builtin_inf();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double __x) {
- return __builtin_fabsl(__x) == __builtin_infl();
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnanf(float __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnand(double __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double __x) {
- return __x != __x;
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitf(float __x) {
- union { float __f; unsigned int __u; } __u;
- __u.__f = __x;
- return (int)(__u.__u >> 31);
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitd(double __x) {
- union { double __f; unsigned long long __u; } __u;
- __u.__f = __x;
- return (int)(__u.__u >> 63);
-}
-inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double __x) {
- union {
- long double __ld;
- struct{ unsigned long long __m; unsigned short __sexp; } __p;
- } __u;
- __u.__ld = __x;
- return (int)(__u.__p.__sexp >> 15);
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float __x) {
- return __inline_isfinitef(__x) && __builtin_fabsf(__x) >= 1.17549435e-38F;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormald(double __x) {
- return __inline_isfinited(__x) && __builtin_fabs(__x) >= 2.2250738585072014e-308;
-}
-inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double __x) {
- return __inline_isfinitel(__x) && __builtin_fabsl(__x) >= 3.36210314311209350626e-4932L;
-}
-extern float acosf(float);
-extern double acos(double);
-extern long double acosl(long double);
-extern float asinf(float);
-extern double asin(double);
-extern long double asinl(long double);
-extern float atanf(float);
-extern double atan(double);
-extern long double atanl(long double);
-extern float atan2f(float, float);
-extern double atan2(double, double);
-extern long double atan2l(long double, long double);
-extern float cosf(float);
-extern double cos(double);
-extern long double cosl(long double);
-extern float sinf(float);
-extern double sin(double);
-extern long double sinl(long double);
-extern float tanf(float);
-extern double tan(double);
-extern long double tanl(long double);
-extern float acoshf(float);
-extern double acosh(double);
-extern long double acoshl(long double);
-extern float asinhf(float);
-extern double asinh(double);
-extern long double asinhl(long double);
-extern float atanhf(float);
-extern double atanh(double);
-extern long double atanhl(long double);
-extern float coshf(float);
-extern double cosh(double);
-extern long double coshl(long double);
-extern float sinhf(float);
-extern double sinh(double);
-extern long double sinhl(long double);
-extern float tanhf(float);
-extern double tanh(double);
-extern long double tanhl(long double);
-extern float expf(float);
-extern double exp(double);
-extern long double expl(long double);
-extern float exp2f(float);
-extern double exp2(double);
-extern long double exp2l(long double);
-extern float expm1f(float);
-extern double expm1(double);
-extern long double expm1l(long double);
-extern float logf(float);
-extern double log(double);
-extern long double logl(long double);
-extern float log10f(float);
-extern double log10(double);
-extern long double log10l(long double);
-extern float log2f(float);
-extern double log2(double);
-extern long double log2l(long double);
-extern float log1pf(float);
-extern double log1p(double);
-extern long double log1pl(long double);
-extern float logbf(float);
-extern double logb(double);
-extern long double logbl(long double);
-extern float modff(float, float *);
-extern double modf(double, double *);
-extern long double modfl(long double, long double *);
-extern float ldexpf(float, int);
-extern double ldexp(double, int);
-extern long double ldexpl(long double, int);
-extern float frexpf(float, int *);
-extern double frexp(double, int *);
-extern long double frexpl(long double, int *);
-extern int ilogbf(float);
-extern int ilogb(double);
-extern int ilogbl(long double);
-extern float scalbnf(float, int);
-extern double scalbn(double, int);
-extern long double scalbnl(long double, int);
-extern float scalblnf(float, long int);
-extern double scalbln(double, long int);
-extern long double scalblnl(long double, long int);
-extern float fabsf(float);
-extern double fabs(double);
-extern long double fabsl(long double);
-extern float cbrtf(float);
-extern double cbrt(double);
-extern long double cbrtl(long double);
-extern float hypotf(float, float);
-extern double hypot(double, double);
-extern long double hypotl(long double, long double);
-extern float powf(float, float);
-extern double pow(double, double);
-extern long double powl(long double, long double);
-extern float sqrtf(float);
-extern double sqrt(double);
-extern long double sqrtl(long double);
-extern float erff(float);
-extern double erf(double);
-extern long double erfl(long double);
-extern float erfcf(float);
-extern double erfc(double);
-extern long double erfcl(long double);
-extern float lgammaf(float);
-extern double lgamma(double);
-extern long double lgammal(long double);
-extern float tgammaf(float);
-extern double tgamma(double);
-extern long double tgammal(long double);
-extern float ceilf(float);
-extern double ceil(double);
-extern long double ceill(long double);
-extern float floorf(float);
-extern double floor(double);
-extern long double floorl(long double);
-extern float nearbyintf(float);
-extern double nearbyint(double);
-extern long double nearbyintl(long double);
-extern float rintf(float);
-extern double rint(double);
-extern long double rintl(long double);
-extern long int lrintf(float);
-extern long int lrint(double);
-extern long int lrintl(long double);
-extern float roundf(float);
-extern double round(double);
-extern long double roundl(long double);
-extern long int lroundf(float);
-extern long int lround(double);
-extern long int lroundl(long double);
-extern long long int llrintf(float);
-extern long long int llrint(double);
-extern long long int llrintl(long double);
-extern long long int llroundf(float);
-extern long long int llround(double);
-extern long long int llroundl(long double);
-extern float truncf(float);
-extern double trunc(double);
-extern long double truncl(long double);
-extern float fmodf(float, float);
-extern double fmod(double, double);
-extern long double fmodl(long double, long double);
-extern float remainderf(float, float);
-extern double remainder(double, double);
-extern long double remainderl(long double, long double);
-extern float remquof(float, float, int *);
-extern double remquo(double, double, int *);
-extern long double remquol(long double, long double, int *);
-extern float copysignf(float, float);
-extern double copysign(double, double);
-extern long double copysignl(long double, long double);
-extern float nanf(const char *);
-extern double nan(const char *);
-extern long double nanl(const char *);
-extern float nextafterf(float, float);
-extern double nextafter(double, double);
-extern long double nextafterl(long double, long double);
-extern double nexttoward(double, long double);
-extern float nexttowardf(float, long double);
-extern long double nexttowardl(long double, long double);
-extern float fdimf(float, float);
-extern double fdim(double, double);
-extern long double fdiml(long double, long double);
-extern float fmaxf(float, float);
-extern double fmax(double, double);
-extern long double fmaxl(long double, long double);
-extern float fminf(float, float);
-extern double fmin(double, double);
-extern long double fminl(long double, long double);
-extern float fmaf(float, float, float);
-extern double fma(double, double, double);
-extern long double fmal(long double, long double, long double);
-extern float __inff(void)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `(float)INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern double __inf(void)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern long double __infl(void)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `(long double)INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern float __nan(void)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.14,message="use `NAN` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern float lgammaf_r(float, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern double lgamma_r(double, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern long double lgammal_r(long double, int *) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.1)));
-extern float __exp10f(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __exp10(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp);
-inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp);
-extern float __cospif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __cospi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern float __sinpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __sinpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern float __tanpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-extern double __tanpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0)));
-inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp);
-inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp);
-struct __float2 { float __sinval; float __cosval; };
-struct __double2 { double __sinval; double __cosval; };
-extern struct __float2 __sincosf_stret(float);
-extern struct __double2 __sincos_stret(double);
-extern struct __float2 __sincospif_stret(float);
-extern struct __double2 __sincospi_stret(double);
-inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp) {
- const struct __float2 __stret = __sincosf_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp) {
- const struct __double2 __stret = __sincos_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp) {
- const struct __float2 __stret = __sincospif_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp) {
- const struct __double2 __stret = __sincospi_stret(__x);
- *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
-}
-extern double j0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double j1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double jn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double y0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double y1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double yn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2)));
-extern double scalb(double, double);
-extern int signgam;
-extern long int rinttol(double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="lrint"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern long int roundtol(double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="lround"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern double drem(double, double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="remainder"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern int finite(double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use `isfinite((double)x)` instead."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern double gamma(double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="tgamma"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-extern double significand(double)
-__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use `2*frexp( )` or `scalbn(x, -ilogb(x))` instead."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-struct exception {
- int type;
- char *name;
- double arg1;
- double arg2;
- double retval;
-};
-struct tm {
- int tm_sec;
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
- long tm_gmtoff;
- char *tm_zone;
-};
-extern char *tzname[];
-extern int getdate_err;
-extern long timezone __asm("_" "timezone" );
-extern int daylight;
-char *asctime(const struct tm *);
-clock_t clock(void) __asm("_" "clock" );
-char *ctime(const time_t *);
-double difftime(time_t, time_t);
-struct tm *getdate(const char *);
-struct tm *gmtime(const time_t *);
-struct tm *localtime(const time_t *);
-time_t mktime(struct tm *) __asm("_" "mktime" );
-size_t strftime(char * __restrict__, size_t, const char * __restrict__, const struct tm * __restrict__) __asm("_" "strftime" );
-char *strptime(const char * __restrict__, const char * __restrict__, struct tm * __restrict__) __asm("_" "strptime" );
-time_t time(time_t *);
-void tzset(void);
-char *asctime_r(const struct tm * __restrict__, char * __restrict__);
-char *ctime_r(const time_t *, char *);
-struct tm *gmtime_r(const time_t * __restrict__, struct tm * __restrict__);
-struct tm *localtime_r(const time_t * __restrict__, struct tm * __restrict__);
-time_t posix2time(time_t);
-void tzsetwall(void);
-time_t time2posix(time_t);
-time_t timelocal(struct tm * const);
-time_t timegm(struct tm * const);
-int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) __asm("_" "nanosleep" );
-typedef enum {
-_CLOCK_REALTIME __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 0,
-_CLOCK_MONOTONIC __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 6,
-_CLOCK_MONOTONIC_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 4,
-_CLOCK_MONOTONIC_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 5,
-_CLOCK_UPTIME_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 8,
-_CLOCK_UPTIME_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 9,
-_CLOCK_PROCESS_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 12,
-_CLOCK_THREAD_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 16
-} clockid_t;
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-int clock_getres(clockid_t __clock_id, struct timespec *__res);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-int clock_gettime(clockid_t __clock_id, struct timespec *__tp);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0)))
-__uint64_t clock_gettime_nsec_np(clockid_t __clock_id);
-__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable)))
-__attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable)))
-int clock_settime(clockid_t __clock_id, const struct timespec *__tp);
-__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0)))
-int timespec_get(struct timespec *ts, int base);
-struct timeval64 {
- __int64_t tv_sec;
- __int64_t tv_usec;
-};
-struct itimerval {
- struct timeval it_interval;
- struct timeval it_value;
-};
-struct timezone {
- int tz_minuteswest;
- int tz_dsttime;
-};
-struct clockinfo {
- int hz;
- int tick;
- int tickadj;
- int stathz;
- int profhz;
-};
-int adjtime(const struct timeval *, struct timeval *);
-int futimes(int, const struct timeval *);
-int lutimes(const char *, const struct timeval *) __attribute__((availability(macosx,introduced=10.5)));
-int settimeofday(const struct timeval *, const struct timezone *);
-int getitimer(int, struct itimerval *);
-int gettimeofday(struct timeval * __restrict__, void * __restrict__);
-int setitimer(int, const struct itimerval * __restrict__,
- struct itimerval * __restrict__);
-int utimes(const char *, const struct timeval *);
-extern int eaccess(const char*, int);
-__attribute__((__format__(__printf__, 1, 2)))
-extern void setproctitle(const char *fmt, ...);
-extern void explicit_bzero(void *b, size_t len);
-
-
-
-
-
-
-
-
-
-typedef unsigned long VALUE;
-typedef unsigned long ID;
-__extension__ _Static_assert(4 == sizeof(int), "sizeof_int" ": " "SIZEOF_INT == sizeof(int)");
-__extension__ _Static_assert(8 == sizeof(long), "sizeof_long" ": " "SIZEOF_LONG == sizeof(long)");
-__extension__ _Static_assert(8 == sizeof(
- long long
-), "sizeof_long_long" ": " "SIZEOF_LONG_LONG == sizeof(LONG_LONG)");
-__extension__ _Static_assert(8 == sizeof(void *), "sizeof_voidp" ": " "SIZEOF_VOIDP == sizeof(void *)");
-VALUE rb_class_new(VALUE super);
-VALUE rb_mod_init_copy(VALUE clone, VALUE orig);
-void rb_check_inheritable(VALUE super);
-VALUE rb_define_class_id(ID id, VALUE super);
-VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super);
-VALUE rb_module_new(void);
-VALUE rb_refinement_new(void);
-VALUE rb_define_module_id(ID id);
-VALUE rb_define_module_id_under(VALUE outer, ID id);
-VALUE rb_mod_included_modules(VALUE mod);
-VALUE rb_mod_include_p(VALUE child, VALUE parent);
-VALUE rb_mod_ancestors(VALUE mod);
-VALUE rb_class_descendants(VALUE klass);
-VALUE rb_class_subclasses(VALUE klass);
-VALUE rb_class_attached_object(VALUE klass);
-VALUE rb_class_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_protected_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_class_private_instance_methods(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj);
-void rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(), int arity);
-void rb_undef(VALUE mod, ID mid);
-__attribute__((__nonnull__ ()))
-void rb_define_protected_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_private_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_singleton_method(VALUE obj, const char *mid, VALUE(*func)(), int arity);
-VALUE rb_singleton_class(VALUE obj);
-
-int rb_sourceline(void);
-const char *rb_sourcefile(void);
-int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
-VALUE rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat);
-VALUE rb_apply(VALUE recv, ID mid, VALUE args);
-VALUE rb_obj_instance_eval(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_obj_instance_exec(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod);
-VALUE rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod);
-typedef VALUE (*rb_alloc_func_t)(VALUE klass);
-void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func);
-void rb_undef_alloc_func(VALUE klass);
-rb_alloc_func_t rb_get_alloc_func(VALUE klass);
-void rb_clear_constant_cache_for_id(ID id);
-void rb_alias(VALUE klass, ID dst, ID src);
-void rb_attr(VALUE klass, ID name, int need_reader, int need_writer, int honour_visibility);
-__attribute__((__nonnull__ ()))
-void rb_remove_method(VALUE klass, const char *name);
-void rb_remove_method_id(VALUE klass, ID mid);
-int rb_method_boundp(VALUE klass, ID id, int ex);
-int rb_method_basic_definition_p(VALUE klass, ID mid);
-int rb_obj_respond_to(VALUE obj, ID mid, int private_p);
-int rb_respond_to(VALUE obj, ID mid);
-__declspec(noreturn)
-VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker);
-void rb_backtrace(void);
-VALUE rb_make_backtrace(void);
-
-__attribute__((__nonnull__ ()))
-void rb_define_method(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_module_function(VALUE klass, const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_define_global_function(const char *mid, VALUE (*func)(), int arity);
-__attribute__((__nonnull__ ()))
-void rb_undef_method(VALUE klass, const char *name);
-__attribute__((__nonnull__ ()))
-void rb_define_alias(VALUE klass, const char *dst, const char *src);
-__attribute__((__nonnull__ ()))
-void rb_define_attr(VALUE klass, const char *name, int read, int write);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_singleton_method"))) static void rb_define_singleton_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_protected_method"))) static void rb_define_protected_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_private_method"))) static void rb_define_private_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_module_function"))) static void rb_define_module_function_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_notimpl(const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m3(const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m2(const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_m1(const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_00(const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_01(const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_02(const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_03(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_04(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_05(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_06(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_07(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_08(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_09(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_10(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_11(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_12(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_13(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_14(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_global_function"))) static void rb_define_global_function_15(const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_notimpl(VALUE, ID, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m3(VALUE, ID, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m2(VALUE, ID, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_m1(VALUE, ID, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_00(VALUE, ID, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_01(VALUE, ID, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_02(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_03(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_04(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_05(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_06(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_07(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_08(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_09(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_10(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_11(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_12(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_13(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_14(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method_id"))) static void rb_define_method_id_15(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-__attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_notimpl(VALUE, const char *, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m3(VALUE, const char *, VALUE(*)(), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m2(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_m1(VALUE, const char *, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_00(VALUE, const char *, VALUE(*)(VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_01(VALUE, const char *, VALUE(*)(VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_02(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_03(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_04(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_05(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_06(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_07(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_08(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_09(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_10(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_11(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_12(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_13(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_14(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); __attribute__((__unused__)) __attribute__((__nonnull__ ())) __attribute__((__weakref__("rb_define_method"))) static void rb_define_method_15(VALUE, const char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-
-
-
-
-
-VALUE rb_int2big(intptr_t i);
-VALUE rb_int2inum(intptr_t i);
-VALUE rb_uint2big(uintptr_t i);
-VALUE rb_uint2inum(uintptr_t i);
-
-
-
-
-
-enum
-__attribute__((__enum_extensibility__(closed)))
-ruby_special_consts {
- RUBY_Qfalse = 0x00,
- RUBY_Qnil = 0x04,
- RUBY_Qtrue = 0x14,
- RUBY_Qundef = 0x24,
- RUBY_IMMEDIATE_MASK = 0x07,
- RUBY_FIXNUM_FLAG = 0x01,
- RUBY_FLONUM_MASK = 0x03,
- RUBY_FLONUM_FLAG = 0x02,
- RUBY_SYMBOL_FLAG = 0x0c,
- RUBY_SPECIAL_SHIFT = 8
-};
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_TEST(VALUE obj)
-{
- return obj & ~RUBY_Qnil;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_NIL_P(VALUE obj)
-{
- return obj == RUBY_Qnil;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_UNDEF_P(VALUE obj)
-{
- return obj == RUBY_Qundef;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_NIL_OR_UNDEF_P(VALUE obj)
-{
- const VALUE mask = ~(RUBY_Qundef ^ RUBY_Qnil);
- const VALUE common_bits = RUBY_Qundef & RUBY_Qnil;
- return (obj & mask) == common_bits;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FIXNUM_P(VALUE obj)
-{
- return obj & RUBY_FIXNUM_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_STATIC_SYM_P(VALUE obj)
-{
- const VALUE mask = ~((9223372036854775807L *2UL+1UL) << RUBY_SPECIAL_SHIFT);
- return (obj & mask) == RUBY_SYMBOL_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FLONUM_P(VALUE obj)
-{
- return (obj & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_IMMEDIATE_P(VALUE obj)
-{
- return obj & RUBY_IMMEDIATE_MASK;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_SPECIAL_CONST_P(VALUE obj)
-{
- return RB_IMMEDIATE_P(obj) || obj == RUBY_Qfalse;
-}
-__attribute__((__const__))
-static inline VALUE
-rb_special_const_p(VALUE obj)
-{
- return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
-}
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_out_of_int(long num);
-long rb_num2long(VALUE num);
-unsigned long rb_num2ulong(VALUE num);
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_INT2FIX(long i)
-{
- ((void)0);
- const unsigned long j = i;
- const unsigned long k = (j << 1) + RUBY_FIXNUM_FLAG;
- const long l = k;
- const long m = l;
- const VALUE n = m;
- ((void)0);
- return n;
-}
-static inline int
-rb_long2int_inline(long n)
-{
- int i = ((int)n);
- if (sizeof(long) <= sizeof(int)) {
- __builtin_assume(i == n);
- }
- if (i != n)
- rb_out_of_int(n);
- return i;
-}
-__attribute__((__const__))
-static inline long
-rbimpl_fix2long_by_idiv(VALUE x)
-{
- ((void)0);
- const long y = x - RUBY_FIXNUM_FLAG;
- const long z = y / 2;
- const long w = ((long)z);
- ((void)0);
- return w;
-}
-__attribute__((__const__))
-static inline long
-rbimpl_fix2long_by_shift(VALUE x)
-{
- ((void)0);
- const long y = x;
- const long z = y >> 1;
- const long w = ((long)z);
- ((void)0);
- return w;
-}
-__attribute__((__const__))
-static inline _Bool
-rbimpl_right_shift_is_arithmetic_p(void)
-{
- return (-1 >> 1) == -1;
-}
-__attribute__((__const__))
-static inline long
-rb_fix2long(VALUE x)
-{
- if (rbimpl_right_shift_is_arithmetic_p()) {
- return rbimpl_fix2long_by_shift(x);
- }
- else {
- return rbimpl_fix2long_by_idiv(x);
- }
-}
-__attribute__((__const__))
-static inline unsigned long
-rb_fix2ulong(VALUE x)
-{
- ((void)0);
- return rb_fix2long(x);
-}
-static inline long
-rb_num2long_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2long(x);
-}
-static inline unsigned long
-rb_num2ulong_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2ulong(x);
- else
- return rb_num2ulong(x);
-}
-static inline VALUE
-rb_long2num_inline(long v)
-{
- if ((((v) < (9223372036854775807L / 2) + 1) && ((v) >= ((-9223372036854775807L -1L) / 2))))
- return RB_INT2FIX(v);
- else
- return rb_int2big(v);
-}
-static inline VALUE
-rb_ulong2num_inline(unsigned long v)
-{
- if (((v) < (9223372036854775807L / 2) + 1))
- return RB_INT2FIX(v);
- else
- return rb_uint2big(v);
-}
-long rb_num2int(VALUE num);
-long rb_fix2int(VALUE num);
-unsigned long rb_num2uint(VALUE num);
-unsigned long rb_fix2uint(VALUE num);
-__attribute__((__artificial__))
-static inline int
-RB_FIX2INT(VALUE x)
-{
- long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_fix2int(x);
- }
- else {
- ret = rb_fix2long(x);
- }
- return ((int)ret);
-}
-static inline int
-rb_num2int_inline(VALUE x)
-{
- long ret;
- if (sizeof(int) == sizeof(long)) {
- ret = rb_num2long_inline(x);
- }
- else if (RB_FIXNUM_P(x)) {
- ret = rb_fix2int(x);
- }
- else {
- ret = rb_num2int(x);
- }
- return ((int)ret);
-}
-__attribute__((__artificial__))
-static inline unsigned int
-RB_NUM2UINT(VALUE x)
-{
- unsigned long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_num2uint(x);
- }
- else {
- ret = rb_num2ulong_inline(x);
- }
- return ((unsigned int)ret);
-}
-__attribute__((__artificial__))
-static inline unsigned int
-RB_FIX2UINT(VALUE x)
-{
- unsigned long ret;
- if (sizeof(int) < sizeof(long)) {
- ret = rb_fix2uint(x);
- }
- else {
- ret = rb_fix2ulong(x);
- }
- return ((unsigned int)ret);
-}
-static inline VALUE
-rb_int2num_inline(int v)
-{
- if ((((v) < (9223372036854775807L / 2) + 1) && ((v) >= ((-9223372036854775807L -1L) / 2))))
- return RB_INT2FIX(v);
- else
- return rb_int2big(v);
-}
-static inline VALUE
-rb_uint2num_inline(unsigned int v)
-{
- if (((v) < (9223372036854775807L / 2) + 1))
- return RB_INT2FIX(v);
- else
- return rb_uint2big(v);
-}
-
-
-
-enum ruby_rvalue_flags {
- RVALUE_EMBED_LEN_MAX = 3
-};
-struct
-__declspec(align(8))
-RBasic {
- VALUE flags;
- const VALUE klass;
-};
-VALUE rb_obj_hide(VALUE obj);
-VALUE rb_obj_reveal(VALUE obj, VALUE klass);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RBASIC_CLASS(VALUE obj)
-{
- ((void)0);
- return ((struct RBasic *)(obj))->klass;
-}
-
-
-
-
-
-
-typedef enum {
- RB_WARN_CATEGORY_NONE,
- RB_WARN_CATEGORY_DEPRECATED,
- RB_WARN_CATEGORY_EXPERIMENTAL,
- RB_WARN_CATEGORY_ALL_BITS = 0x6
-} rb_warning_category_t;
-enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
-VALUE rb_errinfo(void);
-void rb_set_errinfo(VALUE err);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_raise(VALUE exc, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_fatal(const char *fmt, ...);
-__attribute__((__cold__))
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_bug(const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_bug_errno(const char *msg, int err);
-__declspec(noreturn)
-void rb_sys_fail(const char *msg);
-__declspec(noreturn)
-void rb_sys_fail_str(VALUE msg);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-void rb_mod_sys_fail(VALUE mod, const char *msg);
-__declspec(noreturn)
-void rb_mod_sys_fail_str(VALUE mod, VALUE msg);
-__declspec(noreturn)
-void rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *msg);
-__declspec(noreturn)
-void rb_iter_break(void);
-__declspec(noreturn)
-void rb_iter_break_value(VALUE val);
-__declspec(noreturn)
-void rb_exit(int status);
-__declspec(noreturn)
-void rb_notimplement(void);
-VALUE rb_syserr_new(int err, const char * msg);
-VALUE rb_syserr_new_str(int n, VALUE arg);
-__declspec(noreturn)
-void rb_syserr_fail(int err, const char *msg);
-__declspec(noreturn)
-void rb_syserr_fail_str(int err, VALUE msg);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_mod_syserr_fail(VALUE mod, int err, const char *msg);
-__declspec(noreturn)
-void rb_mod_syserr_fail_str(VALUE mod, int err, VALUE msg);
-__declspec(noreturn)
-void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int err, const char *msg);
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_unexpected_type(VALUE self, int t);
-VALUE *rb_ruby_verbose_ptr(void);
-VALUE *rb_ruby_debug_ptr(void);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_warning(const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_category_warning(rb_warning_category_t cat, const char *fmt, ...);
-__attribute__((__nonnull__ (1, 3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_compile_warning(const char *file, int line, const char *fmt, ...);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_sys_warning(const char *fmt, ...);
-__attribute__((__cold__))
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_warn(const char *fmt, ...);
-__attribute__((__cold__))
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...);
-__attribute__((__nonnull__ (1, 3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_compile_warn(const char *file, int line, const char *fmt, ...);
-__attribute__((__nonnull__ (2, 4)))
-__attribute__((__format__(__printf__, 4, 5)))
-void rb_category_compile_warn(rb_warning_category_t cat, const char *file, int line, const char *fmt, ...);
-enum
-__attribute__((__enum_extensibility__(closed)))
-ruby_value_type {
- RUBY_T_NONE = 0x00,
- RUBY_T_OBJECT = 0x01,
- RUBY_T_CLASS = 0x02,
- RUBY_T_MODULE = 0x03,
- RUBY_T_FLOAT = 0x04,
- RUBY_T_STRING = 0x05,
- RUBY_T_REGEXP = 0x06,
- RUBY_T_ARRAY = 0x07,
- RUBY_T_HASH = 0x08,
- RUBY_T_STRUCT = 0x09,
- RUBY_T_BIGNUM = 0x0a,
- RUBY_T_FILE = 0x0b,
- RUBY_T_DATA = 0x0c,
- RUBY_T_MATCH = 0x0d,
- RUBY_T_COMPLEX = 0x0e,
- RUBY_T_RATIONAL = 0x0f,
- RUBY_T_NIL = 0x11,
- RUBY_T_TRUE = 0x12,
- RUBY_T_FALSE = 0x13,
- RUBY_T_SYMBOL = 0x14,
- RUBY_T_FIXNUM = 0x15,
- RUBY_T_UNDEF = 0x16,
- RUBY_T_IMEMO = 0x1a,
- RUBY_T_NODE = 0x1b,
- RUBY_T_ICLASS = 0x1c,
- RUBY_T_ZOMBIE = 0x1d,
- RUBY_T_MOVED = 0x1e,
- RUBY_T_MASK = 0x1f
-};
-__attribute__((__cold__))
-void rb_check_type(VALUE obj, int t);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline enum ruby_value_type
-RB_BUILTIN_TYPE(VALUE obj)
-{
- ((void)0);
- VALUE ret = ((struct RBasic *)(obj))->flags & RUBY_T_MASK;
- return ((enum ruby_value_type)ret);
-}
-__attribute__((__pure__))
-static inline _Bool
-rb_integer_type_p(VALUE obj)
-{
- if (RB_FIXNUM_P(obj)) {
- return 1;
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_BIGNUM;
- }
-}
-__attribute__((__pure__))
-static inline enum ruby_value_type
-rb_type(VALUE obj)
-{
- if (! RB_SPECIAL_CONST_P(obj)) {
- return RB_BUILTIN_TYPE(obj);
- }
- else if (obj == ((VALUE)RUBY_Qfalse)) {
- return RUBY_T_FALSE;
- }
- else if (obj == ((VALUE)RUBY_Qnil)) {
- return RUBY_T_NIL;
- }
- else if (obj == ((VALUE)RUBY_Qtrue)) {
- return RUBY_T_TRUE;
- }
- else if (obj == ((VALUE)RUBY_Qundef)) {
- return RUBY_T_UNDEF;
- }
- else if (RB_FIXNUM_P(obj)) {
- return RUBY_T_FIXNUM;
- }
- else if (RB_STATIC_SYM_P(obj)) {
- return RUBY_T_SYMBOL;
- }
- else {
- __builtin_assume(RB_FLONUM_P(obj));
- return RUBY_T_FLOAT;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FLOAT_TYPE_P(VALUE obj)
-{
- if (RB_FLONUM_P(obj)) {
- return 1;
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_DYNAMIC_SYM_P(VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else {
- return RB_BUILTIN_TYPE(obj) == RUBY_T_SYMBOL;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_SYMBOL_P(VALUE obj)
-{
- return RB_STATIC_SYM_P(obj) || RB_DYNAMIC_SYM_P(obj);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__always_inline__)) inline
-static _Bool
-rbimpl_RB_TYPE_P_fastpath(VALUE obj, enum ruby_value_type t)
-{
- if (t == RUBY_T_TRUE) {
- return obj == ((VALUE)RUBY_Qtrue);
- }
- else if (t == RUBY_T_FALSE) {
- return obj == ((VALUE)RUBY_Qfalse);
- }
- else if (t == RUBY_T_NIL) {
- return obj == ((VALUE)RUBY_Qnil);
- }
- else if (t == RUBY_T_UNDEF) {
- return obj == ((VALUE)RUBY_Qundef);
- }
- else if (t == RUBY_T_FIXNUM) {
- return RB_FIXNUM_P(obj);
- }
- else if (t == RUBY_T_SYMBOL) {
- return RB_SYMBOL_P(obj);
- }
- else if (t == RUBY_T_FLOAT) {
- return RB_FLOAT_TYPE_P(obj);
- }
- else if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else if (t == RB_BUILTIN_TYPE(obj)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_TYPE_P(VALUE obj, enum ruby_value_type t)
-{
- if (__builtin_constant_p(t)) {
- return rbimpl_RB_TYPE_P_fastpath(obj, t);
- }
- else {
- return t == rb_type(obj);
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool rbimpl_rtypeddata_p(VALUE obj);
-__attribute__((__artificial__))
-static inline void
-Check_Type(VALUE v, enum ruby_value_type t)
-{
- if ((__builtin_expect(!!(! (__builtin_constant_p(t) ? rbimpl_RB_TYPE_P_fastpath((v), (t)) : (RB_TYPE_P)((v), (t)))), 0))) {
- goto unexpected_type;
- }
- else if (t == RUBY_T_DATA && rbimpl_rtypeddata_p(v)) {
- goto unexpected_type;
- }
- else {
- return;
- }
- unexpected_type:
- rb_unexpected_type(v, t);
-}
-enum ruby_fl_ushift {
- RUBY_FL_USHIFT = 12
-};
-__extension__
-enum
-__attribute__((__flag_enum__))
-ruby_fl_type {
- RUBY_FL_WB_PROTECTED = (1<<5),
- RUBY_FL_PROMOTED0 = (1<<5),
- RUBY_FL_PROMOTED1 = (1<<6),
- RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1,
- RUBY_FL_FINALIZE = (1<<7),
- RUBY_FL_TAINT
- __attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
- = (1<<8),
- RUBY_FL_SHAREABLE = (1<<8),
- RUBY_FL_UNTRUSTED
- __attribute__((__deprecated__ ("trustedness turned out to be a wrong idea.")))
- = (1<<8),
- RUBY_FL_SEEN_OBJ_ID = (1<<9),
- RUBY_FL_EXIVAR = (1<<10),
- RUBY_FL_FREEZE = (1<<11),
- RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
- RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
- RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
- RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
- RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
- RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
- RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
- RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
- RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
- RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
- RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
- RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
- RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
- RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
- RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
- RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
- RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
- RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
- RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
- RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
- RUBY_ELTS_SHARED = RUBY_FL_USER2,
- RUBY_FL_SINGLETON = RUBY_FL_USER0,
-};
-enum {
- RUBY_FL_DUPPED
- __attribute__((__deprecated__ ("It seems there is no actual usage of this enum.")))
- = (int)RUBY_T_MASK | (int)RUBY_FL_EXIVAR
-};
-void rb_freeze_singleton_class(VALUE klass);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__always_inline__)) inline
-static _Bool
-RB_FL_ABLE(VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- return 0;
- }
- else if ((__builtin_constant_p(RUBY_T_NODE) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_NODE)) : (RB_TYPE_P)((obj), (RUBY_T_NODE)))) {
- return 0;
- }
- else {
- return 1;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_FL_TEST_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- return ((struct RBasic *)(obj))->flags & flags;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_FL_TEST(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- return RB_FL_TEST_RAW(obj, flags);
- }
- else {
- return 0UL;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ANY_RAW(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST_RAW(obj, flags);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ANY(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST(obj, flags);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ALL_RAW(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST_RAW(obj, flags) == flags;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_FL_ALL(VALUE obj, VALUE flags)
-{
- return RB_FL_TEST(obj, flags) == flags;
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags |= flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_SET_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_set_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_SET(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_SET_RAW(obj, flags);
- }
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags &= ~flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_UNSET_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_unset_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_UNSET(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_UNSET_RAW(obj, flags);
- }
-}
-__declspec(noalias)
-__attribute__((__artificial__))
-static inline void
-rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags)
-{
- obj->flags ^= flags;
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_REVERSE_RAW(VALUE obj, VALUE flags)
-{
- ((void)0);
- rbimpl_fl_reverse_raw_raw(((struct RBasic *)(obj)), flags);
-}
-__attribute__((__artificial__))
-static inline void
-RB_FL_REVERSE(VALUE obj, VALUE flags)
-{
- if (RB_FL_ABLE(obj)) {
- RB_FL_REVERSE_RAW(obj, flags);
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline _Bool
-RB_OBJ_TAINTABLE(VALUE obj)
-{
- return 0;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline VALUE
-RB_OBJ_TAINTED_RAW(VALUE obj)
-{
- return 0;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline _Bool
-RB_OBJ_TAINTED(VALUE obj)
-{
- return 0;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_TAINT_RAW(VALUE obj)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_TAINT(VALUE obj)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_INFECT_RAW(VALUE dst, VALUE src)
-{
- return;
-}
-__attribute__((__artificial__))
-__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
-static inline void
-RB_OBJ_INFECT(VALUE dst, VALUE src)
-{
- return;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_OBJ_FROZEN_RAW(VALUE obj)
-{
- return RB_FL_TEST_RAW(obj, RUBY_FL_FREEZE);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_FROZEN(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return 1;
- }
- else {
- return RB_OBJ_FROZEN_RAW(obj);
- }
-}
-__attribute__((__artificial__))
-static inline void
-RB_OBJ_FREEZE_RAW(VALUE obj)
-{
- RB_FL_SET_RAW(obj, RUBY_FL_FREEZE);
-}
-void rb_obj_freeze_inline(VALUE obj);
-enum ruby_rstring_flags {
- RSTRING_NOEMBED = RUBY_FL_USER1,
- RSTRING_FSTR = RUBY_FL_USER17
-};
-struct RString {
- struct RBasic basic;
- union {
- struct {
- long len;
- char *ptr;
- union {
- long capa;
- VALUE shared;
- } aux;
- } heap;
- struct {
- long len;
- char ary[1];
- } embed;
- } as;
-};
-VALUE rb_str_to_str(VALUE obj);
-VALUE rb_string_value(volatile VALUE *ptr);
-char *rb_string_value_ptr(volatile VALUE *ptr);
-char *rb_string_value_cstr(volatile VALUE *ptr);
-VALUE rb_str_export(VALUE obj);
-VALUE rb_str_export_locale(VALUE obj);
-__attribute__((__error__ ("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")))
-void rb_check_safe_str(VALUE);
-void rb_debug_rstring_null_ptr(const char *func);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RSTRING_EMBED_LEN(VALUE str)
-{
- ((void)0);
- ((void)0);
- long f = ((struct RString *)(str))->as.embed.len;
- return f;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline struct RString
-rbimpl_rstring_getmem(VALUE str)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) {
- return *((struct RString *)(str));
- }
- else {
- struct RString retval;
- retval.as.heap.len = RSTRING_EMBED_LEN(str);
- retval.as.heap.ptr = ((struct RString *)(str))->as.embed.ary;
- return retval;
- }
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RSTRING_LEN(VALUE str)
-{
- return rbimpl_rstring_getmem(str).as.heap.len;
-}
-__attribute__((__artificial__))
-static inline char *
-RSTRING_PTR(VALUE str)
-{
- char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr;
- if ((__builtin_expect(!!(! ptr), 0))) {
- rb_debug_rstring_null_ptr("RSTRING_PTR");
- }
- return ptr;
-}
-__attribute__((__artificial__))
-static inline char *
-RSTRING_END(VALUE str)
-{
- struct RString buf = rbimpl_rstring_getmem(str);
- if ((__builtin_expect(!!(! buf.as.heap.ptr), 0))) {
- rb_debug_rstring_null_ptr("RSTRING_END");
- }
- return &buf.as.heap.ptr[buf.as.heap.len];
-}
-__attribute__((__artificial__))
-static inline int
-RSTRING_LENINT(VALUE str)
-{
- return rb_long2int_inline(RSTRING_LEN(str));
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_CHR2FIX(unsigned char c)
-{
- return RB_INT2FIX(c);
-}
-static inline char
-rb_num2char_inline(VALUE x)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((x), (RUBY_T_STRING)) : (RB_TYPE_P)((x), (RUBY_T_STRING))) && (RSTRING_LEN(x)>=1))
- return RSTRING_PTR(x)[0];
- else
- return ((char)rb_num2int_inline(x));
-}
-
-double rb_num2dbl(VALUE num);
-__attribute__((__pure__))
-double rb_float_value(VALUE num);
-VALUE rb_float_new(double d);
-VALUE rb_float_new_in_heap(double d);
-
-
-
-VALUE rb_ll2inum(
- long long
- num);
-VALUE rb_ull2inum(unsigned
- long long
- num);
- long long
- rb_num2ll(VALUE num);
-unsigned
- long long
- rb_num2ull(VALUE num);
-static inline VALUE
-rb_ll2num_inline(
- long long
- n)
-{
- if ((((n) < (9223372036854775807L / 2) + 1) && ((n) >= ((-9223372036854775807L -1L) / 2)))) return RB_INT2FIX((long)n);
- return rb_ll2inum(n);
-}
-static inline VALUE
-rb_ull2num_inline(unsigned
- long long
- n)
-{
- if (((n) < (9223372036854775807L / 2) + 1)) return RB_INT2FIX((long)n);
- return rb_ull2inum(n);
-}
-static inline
- long long
-rb_num2ll_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2ll(x);
-}
-static inline unsigned
- long long
-rb_num2ull_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2long(x);
- else
- return rb_num2ull(x);
-}
-
-
-
-
-short rb_num2short(VALUE num);
-unsigned short rb_num2ushort(VALUE num);
-short rb_fix2short(VALUE num);
-unsigned short rb_fix2ushort(VALUE num);
-static inline short
-rb_num2short_inline(VALUE x)
-{
- if (RB_FIXNUM_P(x))
- return rb_fix2short(x);
- else
- return rb_num2short(x);
-}
-
-
-typedef unsigned long st_data_t;
-typedef struct st_table st_table;
-typedef st_data_t st_index_t;
-typedef int st_compare_func(st_data_t, st_data_t);
-typedef st_index_t st_hash_func(st_data_t);
-typedef char st_check_for_sizeof_st_index_t[8 == (int)sizeof(st_index_t) ? 1 : -1];
-struct st_hash_type {
- int (*compare)(st_data_t, st_data_t);
- st_index_t (*hash)(st_data_t);
-};
-typedef struct st_table_entry st_table_entry;
-struct st_table_entry;
-struct st_table {
- unsigned char entry_power, bin_power, size_ind;
- unsigned int rebuilds_num;
- const struct st_hash_type *type;
- st_index_t num_entries;
- st_index_t *bins;
- st_index_t entries_start, entries_bound;
- st_table_entry *entries;
-};
-enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
-st_table *rb_st_init_table(const struct st_hash_type *);
-st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t);
-st_table *rb_st_init_numtable(void);
-st_table *rb_st_init_numtable_with_size(st_index_t);
-st_table *rb_st_init_strtable(void);
-st_table *rb_st_init_strtable_with_size(st_index_t);
-st_table *rb_st_init_strcasetable(void);
-st_table *rb_st_init_strcasetable_with_size(st_index_t);
-int rb_st_delete(st_table *, st_data_t *, st_data_t *);
-int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
-int rb_st_shift(st_table *, st_data_t *, st_data_t *);
-int rb_st_insert(st_table *, st_data_t, st_data_t);
-int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
-int rb_st_lookup(st_table *, st_data_t, st_data_t *);
-int rb_st_get_key(st_table *, st_data_t, st_data_t *);
-typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
-int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
-typedef int st_foreach_callback_func(st_data_t, st_data_t, st_data_t);
-typedef int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int);
-int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
-int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t);
-int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t);
-st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size);
-st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
-st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size);
-st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never);
-void rb_st_add_direct(st_table *, st_data_t, st_data_t);
-void rb_st_free_table(st_table *);
-void rb_st_cleanup_safe(st_table *, st_data_t);
-void rb_st_clear(st_table *);
-st_table *rb_st_copy(st_table *);
-__attribute__((__const__)) int rb_st_numcmp(st_data_t, st_data_t);
-__attribute__((__const__)) st_index_t rb_st_numhash(st_data_t);
-__attribute__((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
-__attribute__((__pure__)) int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
-__attribute__((__pure__)) size_t rb_st_memsize(const st_table *);
-__attribute__((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h);
-__attribute__((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
-__attribute__((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
-__attribute__((__const__)) st_index_t rb_st_hash_end(st_index_t h);
-__attribute__((__const__)) st_index_t rb_st_hash_start(st_index_t h);
-void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);
-
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline VALUE
-RB_ST2FIX(st_data_t i)
-{
- long x = i;
- if (x >= 0) {
- x &= (9223372036854775807L / 2);
- }
- else {
- x |= ((-9223372036854775807L -1L) / 2);
- }
- ((void)0);
- unsigned long y = ((unsigned long)x);
- return RB_INT2FIX(y);
-}
-
-
-
-
-void rb_gc_writebarrier(VALUE old, VALUE young);
-void rb_gc_writebarrier_unprotect(VALUE obj);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_PROMOTED_RAW(VALUE obj)
-{
- ((void)0);
- return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RB_OBJ_PROMOTED(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return 0;
- }
- else {
- return RB_OBJ_PROMOTED_RAW(obj);
- }
-}
-static inline VALUE
-rb_obj_wb_unprotect(
- VALUE x,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- rb_gc_writebarrier_unprotect(x);
- return x;
-}
-static inline VALUE
-rb_obj_written(
- VALUE a,
- __attribute__((__unused__))
- VALUE oldv,
- VALUE b,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- if (!RB_SPECIAL_CONST_P(b)) {
- rb_gc_writebarrier(a, b);
- }
- return a;
-}
-static inline VALUE
-rb_obj_write(
- VALUE a, VALUE *slot, VALUE b,
- __attribute__((__unused__))
- const char *filename,
- __attribute__((__unused__))
- int line)
-{
- *slot = b;
- rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
- return a;
-}
-enum ruby_rarray_flags {
- RARRAY_EMBED_FLAG = RUBY_FL_USER1,
- RARRAY_EMBED_LEN_MASK = RUBY_FL_USER9 | RUBY_FL_USER8 | RUBY_FL_USER7 | RUBY_FL_USER6 |
- RUBY_FL_USER5 | RUBY_FL_USER4 | RUBY_FL_USER3
- ,
- RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13
-};
-enum ruby_rarray_consts {
- RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3
-};
-struct RArray {
- struct RBasic basic;
- union {
- struct {
- long len;
- union {
- long capa;
- const
- VALUE shared_root;
- } aux;
- const VALUE *ptr;
- } heap;
- const VALUE ary[1];
- } as;
-};
-VALUE *rb_ary_ptr_use_start(VALUE ary);
-void rb_ary_ptr_use_end(VALUE a);
-void rb_ary_detransient(VALUE a);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RARRAY_EMBED_LEN(VALUE ary)
-{
- ((void)0);
- ((void)0);
- VALUE f = ((struct RBasic *)(ary))->flags;
- f &= RARRAY_EMBED_LEN_MASK;
- f >>= RARRAY_EMBED_LEN_SHIFT;
- return ((long)f);
-}
-__attribute__((__pure__))
-static inline long
-rb_array_len(VALUE a)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) {
- return RARRAY_EMBED_LEN(a);
- }
- else {
- return ((struct RArray *)(a))->as.heap.len;
- }
-}
-__attribute__((__artificial__))
-static inline int
-RARRAY_LENINT(VALUE ary)
-{
- return rb_long2int_inline(rb_array_len(ary));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RARRAY_TRANSIENT_P(VALUE ary)
-{
- ((void)0);
- return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-__attribute__((__pure__))
-static inline const VALUE *
-rb_array_const_ptr_transient(VALUE a)
-{
- ((void)0);
- if (RB_FL_ANY_RAW(a, RARRAY_EMBED_FLAG)) {
- return (((struct RArray *)(a))->as.ary);
- }
- else {
- return (((struct RArray *)(a))->as.heap.ptr);
- }
-}
-static inline const VALUE *
-rb_array_const_ptr(VALUE a)
-{
- ((void)0);
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- return rb_array_const_ptr_transient(a);
-}
-static inline VALUE *
-rb_array_ptr_use_start(VALUE a,
- __attribute__((__unused__))
- int allow_transient)
-{
- ((void)0);
- if (!allow_transient) {
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- }
- return rb_ary_ptr_use_start(a);
-}
-static inline void
-rb_array_ptr_use_end(VALUE a,
- __attribute__((__unused__))
- int allow_transient)
-{
- ((void)0);
- rb_ary_ptr_use_end(a);
-}
-static inline VALUE *
-RARRAY_PTR(VALUE ary)
-{
- ((void)0);
- VALUE tmp = (1 ? rb_obj_wb_unprotect(ary, "./include/ruby/internal/core/rarray.h", 550) : ary);
- return ((VALUE *)rb_array_const_ptr(tmp));
-}
-static inline void
-RARRAY_ASET(VALUE ary, long i, VALUE v)
-{
- do { ((void)0); const VALUE rbimpl_ary = (ary); VALUE *ptr = rb_array_ptr_use_start(rbimpl_ary, (1)); (rb_obj_write((VALUE)(ary), (VALUE *)(&ptr[i]), (VALUE)(v), "./include/ruby/internal/core/rarray.h", 569)); rb_array_ptr_use_end(rbimpl_ary, (1)); } while (0);
-}
-
-
-int rb_big_sign(VALUE num);
-static inline _Bool
-RBIGNUM_POSITIVE_P(VALUE b)
-{
- ((void)0);
- return rb_big_sign(b);
-}
-static inline _Bool
-RBIGNUM_NEGATIVE_P(VALUE b)
-{
- ((void)0);
- return ! RBIGNUM_POSITIVE_P(b);
-}
-
-enum ruby_rmodule_flags {
- RMODULE_IS_REFINEMENT = RUBY_FL_USER3
-};
-struct RClass;
-VALUE rb_class_get_superclass(VALUE klass);
-
-typedef void (*RUBY_DATA_FUNC)(void*);
-struct RData {
- struct RBasic basic;
- RUBY_DATA_FUNC dmark;
- RUBY_DATA_FUNC dfree;
- void *data;
-};
-VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree);
-VALUE rb_data_object_zalloc(VALUE klass, size_t size, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree);
-extern VALUE rb_cObject;
-__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
-static inline VALUE
-rb_data_object_wrap_warning(VALUE klass, void *ptr, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free)
-{
- return rb_data_object_wrap(klass, ptr, mark, free);
-}
-static inline void *
-rb_data_object_get(VALUE obj)
-{
- Check_Type(obj, RUBY_T_DATA);
- return ((struct RData *)(obj))->data;
-}
-__attribute__((__warning__ ("untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
-static inline void *
-rb_data_object_get_warning(VALUE obj)
-{
- return rb_data_object_get(obj);
-}
-static inline VALUE
-rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
-{
- VALUE result = rb_data_object_zalloc( (klass), (size), ((void (*)(void *))(mark_func)), ((void (*)(void *))(free_func))); (*datap) = ((void *)((struct RData *)(result))->data); ((void)(*datap));
- return result;
-}
-__attribute__((__deprecated__ ("by: rb_data_object_wrap")))
-static inline VALUE
-rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
-{
- return rb_data_object_wrap(klass, data, dmark, dfree);
-}
-
-struct rb_io_t;
-struct RFile {
- struct RBasic basic;
- struct rb_io_t *fptr;
-};
-
-struct st_table;
-size_t rb_hash_size_num(VALUE hash);
-struct st_table *rb_hash_tbl(VALUE hash, const char *file, int line);
-VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
-
-enum ruby_robject_flags {
- ROBJECT_EMBED = RUBY_FL_USER1
-};
-struct st_table;
-struct RObject {
- struct RBasic basic;
- union {
- struct {
- VALUE *ivptr;
- struct rb_id_table *iv_index_tbl;
- } heap;
- VALUE ary[1];
- } as;
-};
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IVPTR = __builtin_offsetof(struct RObject, as.heap.ivptr);
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IV_INDEX_TBL = __builtin_offsetof(struct RObject, as.heap.iv_index_tbl);
-static const int32_t ROBJECT_OFFSET_AS_ARY = __builtin_offsetof(struct RObject, as.ary);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE *
-ROBJECT_IVPTR(VALUE obj)
-{
- ((void)0);
- struct RObject *const ptr = ((struct RObject *)(obj));
- if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) {
- return ptr->as.ary;
- }
- else {
- return ptr->as.heap.ivptr;
- }
-}
-
-struct re_patter_buffer;
-struct RRegexp {
- struct RBasic basic;
- struct re_pattern_buffer *ptr;
- const VALUE src;
- unsigned long usecnt;
-};
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RREGEXP_SRC(VALUE rexp)
-{
- ((void)0);
- VALUE ret = ((struct RRegexp *)(rexp))->src;
- ((void)0);
- return ret;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline char *
-RREGEXP_SRC_PTR(VALUE rexp)
-{
- return RSTRING_PTR(RREGEXP_SRC(rexp));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline long
-RREGEXP_SRC_LEN(VALUE rexp)
-{
- return RSTRING_LEN(RREGEXP_SRC(rexp));
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline char *
-RREGEXP_SRC_END(VALUE rexp)
-{
- return RSTRING_END(RREGEXP_SRC(rexp));
-}
-
-
-VALUE rb_struct_size(VALUE st);
-VALUE rb_struct_aref(VALUE st, VALUE k);
-VALUE rb_struct_aset(VALUE st, VALUE k, VALUE v);
-__attribute__((__artificial__))
-static inline long
-RSTRUCT_LEN(VALUE st)
-{
- ((void)0);
- return rb_num2long_inline(rb_struct_size(st));
-}
-__attribute__((__artificial__))
-static inline VALUE
-RSTRUCT_SET(VALUE st, int k, VALUE v)
-{
- ((void)0);
- return rb_struct_aset(st, rb_int2num_inline(k), (v));
-}
-__attribute__((__artificial__))
-static inline VALUE
-RSTRUCT_GET(VALUE st, int k)
-{
- ((void)0);
- return rb_struct_aref(st, rb_int2num_inline(k));
-}
-
-enum
-__attribute__((__flag_enum__))
-rbimpl_typeddata_flags {
- RUBY_TYPED_FREE_IMMEDIATELY = 1,
- RUBY_TYPED_FROZEN_SHAREABLE = RUBY_FL_SHAREABLE,
- RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED,
- RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1
-};
-typedef struct rb_data_type_struct rb_data_type_t;
-struct rb_data_type_struct {
- const char *wrap_struct_name;
- struct {
- RUBY_DATA_FUNC dmark;
- RUBY_DATA_FUNC dfree;
- size_t (*dsize)(const void *);
- RUBY_DATA_FUNC dcompact;
- void *reserved[1];
- } function;
- const rb_data_type_t *parent;
- void *data;
- VALUE flags;
-};
-struct RTypedData {
- struct RBasic basic;
- const rb_data_type_t *type;
- VALUE typed_flag;
- void *data;
-};
-__attribute__((__nonnull__ (3)))
-VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type);
-VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type);
-int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
-int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type);
-void *rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type);
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-rbimpl_rtypeddata_p(VALUE obj)
-{
- return ((struct RTypedData *)(obj))->typed_flag == 1;
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline _Bool
-RTYPEDDATA_P(VALUE obj)
-{
- return rbimpl_rtypeddata_p(obj);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline const struct rb_data_type_struct *
-RTYPEDDATA_TYPE(VALUE obj)
-{
- return ((struct RTypedData *)(obj))->type;
-}
-static inline VALUE
-rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
-{
- VALUE result = rb_data_typed_object_zalloc(klass, size, type); (*datap) = ((void *)(((struct RTypedData *)(result))->data)); ((void)(*datap));
- return result;
-}
-__attribute__((__deprecated__ ("by: rb_data_typed_object_wrap")))
-static inline VALUE
-rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type)
-{
- return rb_data_typed_object_wrap(klass, datap, type);
-}
-
-typedef __darwin_wint_t wint_t;
-typedef struct {
- __darwin_rune_t __min;
- __darwin_rune_t __max;
- __darwin_rune_t __map;
- __uint32_t *__types;
-} _RuneEntry;
-typedef struct {
- int __nranges;
- _RuneEntry *__ranges;
-} _RuneRange;
-typedef struct {
- char __name[14];
- __uint32_t __mask;
-} _RuneCharClass;
-typedef struct {
- char __magic[8];
- char __encoding[32];
- __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **);
- int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **);
- __darwin_rune_t __invalid_rune;
- __uint32_t __runetype[(1 <<8 )];
- __darwin_rune_t __maplower[(1 <<8 )];
- __darwin_rune_t __mapupper[(1 <<8 )];
- _RuneRange __runetype_ext;
- _RuneRange __maplower_ext;
- _RuneRange __mapupper_ext;
- void *__variable;
- int __variable_len;
- int __ncharclasses;
- _RuneCharClass *__charclasses;
-} _RuneLocale;
-extern _RuneLocale _DefaultRuneLocale;
-extern _RuneLocale *_CurrentRuneLocale;
-
-unsigned long ___runetype(__darwin_ct_rune_t);
-__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t);
-__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t);
-inline int
-isascii(int _c)
-{
- return ((_c & ~0x7F) == 0);
-}
-int __maskrune(__darwin_ct_rune_t, unsigned long);
-inline int
-__istype(__darwin_ct_rune_t _c, unsigned long _f)
-{
- return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f)
- : !!__maskrune(_c, _f));
-}
-inline __darwin_ct_rune_t
-__isctype(__darwin_ct_rune_t _c, unsigned long _f)
-{
- return (_c < 0 || _c >= (1 <<8 )) ? 0 :
- !!(_DefaultRuneLocale.__runetype[_c] & _f);
-}
-__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);
-__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);
-inline int
-__wcwidth(__darwin_ct_rune_t _c)
-{
- unsigned int _x;
- if (_c == 0)
- return (0);
- _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L);
- if ((_x & 0xe0000000L) != 0)
- return ((_x & 0xe0000000L) >> 30);
- return ((_x & 0x00040000L) != 0 ? 1 : -1);
-}
-inline int
-isalnum(int _c)
-{
- return (__istype(_c, 0x00000100L|0x00000400L));
-}
-inline int
-isalpha(int _c)
-{
- return (__istype(_c, 0x00000100L));
-}
-inline int
-isblank(int _c)
-{
- return (__istype(_c, 0x00020000L));
-}
-inline int
-iscntrl(int _c)
-{
- return (__istype(_c, 0x00000200L));
-}
-inline int
-isdigit(int _c)
-{
- return (__isctype(_c, 0x00000400L));
-}
-inline int
-isgraph(int _c)
-{
- return (__istype(_c, 0x00000800L));
-}
-inline int
-islower(int _c)
-{
- return (__istype(_c, 0x00001000L));
-}
-inline int
-isprint(int _c)
-{
- return (__istype(_c, 0x00040000L));
-}
-inline int
-ispunct(int _c)
-{
- return (__istype(_c, 0x00002000L));
-}
-inline int
-isspace(int _c)
-{
- return (__istype(_c, 0x00004000L));
-}
-inline int
-isupper(int _c)
-{
- return (__istype(_c, 0x00008000L));
-}
-inline int
-isxdigit(int _c)
-{
- return (__isctype(_c, 0x00010000L));
-}
-inline int
-toascii(int _c)
-{
- return (_c & 0x7F);
-}
-inline int
-tolower(int _c)
-{
- return (__tolower(_c));
-}
-inline int
-toupper(int _c)
-{
- return (__toupper(_c));
-}
-inline int
-digittoint(int _c)
-{
- return (__maskrune(_c, 0x0F));
-}
-inline int
-ishexnumber(int _c)
-{
- return (__istype(_c, 0x00010000L));
-}
-inline int
-isideogram(int _c)
-{
- return (__istype(_c, 0x00080000L));
-}
-inline int
-isnumber(int _c)
-{
- return (__istype(_c, 0x00000400L));
-}
-inline int
-isphonogram(int _c)
-{
- return (__istype(_c, 0x00200000L));
-}
-inline int
-isrune(int _c)
-{
- return (__istype(_c, 0xFFFFFFF0L));
-}
-inline int
-isspecial(int _c)
-{
- return (__istype(_c, 0x00100000L));
-}
-__attribute__((__nonnull__ ()))
-int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
-__attribute__((__nonnull__ ()))
-int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
-__attribute__((__nonnull__ (1)))
-unsigned long ruby_strtoul(const char *str, char **endptr, int base);
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isascii(int c)
-{
- return '\0' <= c && c <= '\x7f';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isupper(int c)
-{
- return 'A' <= c && c <= 'Z';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_islower(int c)
-{
- return 'a' <= c && c <= 'z';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isalpha(int c)
-{
- return rb_isupper(c) || rb_islower(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isdigit(int c)
-{
- return '0' <= c && c <= '9';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isalnum(int c)
-{
- return rb_isalpha(c) || rb_isdigit(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isxdigit(int c)
-{
- return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f');
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isblank(int c)
-{
- return c == ' ' || c == '\t';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isspace(int c)
-{
- return c == ' ' || ('\t' <= c && c <= '\r');
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_iscntrl(int c)
-{
- return ('\0' <= c && c < ' ') || c == '\x7f';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isprint(int c)
-{
- return ' ' <= c && c <= '\x7e';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_ispunct(int c)
-{
- return !rb_isalnum(c);
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_isgraph(int c)
-{
- return '!' <= c && c <= '\x7e';
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_tolower(int c)
-{
- return rb_isupper(c) ? (c|0x20) : c;
-}
-__attribute__((__const__))
-__attribute__((__artificial__))
-static inline int
-rb_toupper(int c)
-{
- return rb_islower(c) ? (c&0x5f) : c;
-}
-
-__attribute__((__nonnull__ ()))
-VALUE rb_eval_string(const char *str);
-__attribute__((__nonnull__ (1)))
-VALUE rb_eval_string_protect(const char *str, int *state);
-__attribute__((__nonnull__ (1)))
-VALUE rb_eval_string_wrap(const char *str, int *state);
-VALUE rb_funcall(VALUE recv, ID mid, int n, ...);
-VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcallv_public_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv);
-VALUE rb_funcall_passing_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_funcall_with_block(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval);
-VALUE rb_funcall_with_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval, int kw_splat);
-VALUE rb_call_super(int argc, const VALUE *argv);
-VALUE rb_call_super_kw(int argc, const VALUE *argv, int kw_splat);
-VALUE rb_current_receiver(void);
-__attribute__((__nonnull__ (2)))
-int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values);
-__attribute__((__nonnull__ ()))
-VALUE rb_extract_keywords(VALUE *orighash);
-
-typedef uint32_t rb_event_flag_t;
-typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
-void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
-int rb_remove_event_hook(rb_event_hook_func_t func);
-
-
-void rb_gc_register_address(VALUE *valptr);
-void rb_global_variable(VALUE *);
-void rb_gc_unregister_address(VALUE *valptr);
-void rb_gc_register_mark_object(VALUE object);
-
-typedef int ruby_glob_func(const char *path, VALUE arg, void *enc);
-__attribute__((__nonnull__ ()))
-void rb_glob(const char *pattern, void (*func)(const char *path, VALUE arg, void *enc), VALUE arg);
-__attribute__((__nonnull__ ()))
-int ruby_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg);
-__attribute__((__nonnull__ ()))
-int ruby_brace_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg);
-
-extern VALUE rb_mKernel;
-extern VALUE rb_mComparable;
-extern VALUE rb_mEnumerable;
-extern VALUE rb_mErrno;
-extern VALUE rb_mFileTest;
-extern VALUE rb_mGC;
-extern VALUE rb_mMath;
-extern VALUE rb_mProcess;
-extern VALUE rb_mWaitReadable;
-extern VALUE rb_mWaitWritable;
-extern VALUE rb_cBasicObject;
-extern VALUE rb_cObject;
-extern VALUE rb_cArray;
-extern VALUE rb_cBinding;
-extern VALUE rb_cClass;
-extern VALUE rb_cDir;
-extern VALUE rb_cEncoding;
-extern VALUE rb_cEnumerator;
-extern VALUE rb_cFalseClass;
-extern VALUE rb_cFile;
-extern VALUE rb_cComplex;
-extern VALUE rb_cFloat;
-extern VALUE rb_cHash;
-extern VALUE rb_cIO;
-extern VALUE rb_cInteger;
-extern VALUE rb_cMatch;
-extern VALUE rb_cMethod;
-extern VALUE rb_cModule;
-extern VALUE rb_cRefinement;
-extern VALUE rb_cNameErrorMesg;
-extern VALUE rb_cNilClass;
-extern VALUE rb_cNumeric;
-extern VALUE rb_cProc;
-extern VALUE rb_cRandom;
-extern VALUE rb_cRange;
-extern VALUE rb_cRational;
-extern VALUE rb_cRegexp;
-extern VALUE rb_cStat;
-extern VALUE rb_cString;
-extern VALUE rb_cStruct;
-extern VALUE rb_cSymbol;
-extern VALUE rb_cThread;
-extern VALUE rb_cTime;
-extern VALUE rb_cTrueClass;
-extern VALUE rb_cUnboundMethod;
-extern VALUE rb_eException;
-extern VALUE rb_eStandardError;
-extern VALUE rb_eSystemExit;
-extern VALUE rb_eInterrupt;
-extern VALUE rb_eSignal;
-extern VALUE rb_eFatal;
-extern VALUE rb_eArgError;
-extern VALUE rb_eEOFError;
-extern VALUE rb_eIndexError;
-extern VALUE rb_eStopIteration;
-extern VALUE rb_eKeyError;
-extern VALUE rb_eRangeError;
-extern VALUE rb_eIOError;
-extern VALUE rb_eRuntimeError;
-extern VALUE rb_eFrozenError;
-extern VALUE rb_eSecurityError;
-extern VALUE rb_eSystemCallError;
-extern VALUE rb_eThreadError;
-extern VALUE rb_eTypeError;
-extern VALUE rb_eZeroDivError;
-extern VALUE rb_eNotImpError;
-extern VALUE rb_eNoMemError;
-extern VALUE rb_eNoMethodError;
-extern VALUE rb_eFloatDomainError;
-extern VALUE rb_eLocalJumpError;
-extern VALUE rb_eSysStackError;
-extern VALUE rb_eRegexpError;
-extern VALUE rb_eEncodingError;
-extern VALUE rb_eEncCompatError;
-extern VALUE rb_eNoMatchingPatternError;
-extern VALUE rb_eNoMatchingPatternKeyError;
-extern VALUE rb_eScriptError;
-extern VALUE rb_eNameError;
-extern VALUE rb_eSyntaxError;
-extern VALUE rb_eLoadError;
-extern VALUE rb_eMathDomainError;
-extern VALUE rb_stdin;
-extern VALUE rb_stdout;
-extern VALUE rb_stderr;
-__attribute__((__pure__))
-static inline VALUE
-rb_class_of(VALUE obj)
-{
- if (! RB_SPECIAL_CONST_P(obj)) {
- return RBASIC_CLASS(obj);
- }
- else if (obj == ((VALUE)RUBY_Qfalse)) {
- return rb_cFalseClass;
- }
- else if (obj == ((VALUE)RUBY_Qnil)) {
- return rb_cNilClass;
- }
- else if (obj == ((VALUE)RUBY_Qtrue)) {
- return rb_cTrueClass;
- }
- else if (RB_FIXNUM_P(obj)) {
- return rb_cInteger;
- }
- else if (RB_STATIC_SYM_P(obj)) {
- return rb_cSymbol;
- }
- else if (RB_FLONUM_P(obj)) {
- return rb_cFloat;
- }
- __builtin_unreachable();
-}
-
-
-__attribute__((__nonnull__ ()))
-void ruby_sysinit(int *argc, char ***argv);
-void ruby_init(void);
-void* ruby_options(int argc, char** argv);
-int ruby_executable_node(void *n, int *status);
-int ruby_run_node(void *n);
-void ruby_show_version(void);
-void ruby_show_copyright(void);
-void ruby_init_stack(volatile VALUE *addr);
-int ruby_setup(void);
-int ruby_cleanup(int ex);
-void ruby_finalize(void);
-__declspec(noreturn)
-void ruby_stop(int);
-int ruby_stack_check(void);
-size_t ruby_stack_length(VALUE **topnotch);
-int ruby_exec_node(void *n);
-void ruby_script(const char* name);
-void ruby_set_script_name(VALUE name);
-void ruby_prog_init(void);
-void ruby_set_argv(int argc, char **argv);
-void *ruby_process_options(int argc, char **argv);
-void ruby_init_loadpath(void);
-void ruby_incpush(const char *path);
-void ruby_sig_finalize(void);
-
-typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
-typedef rb_block_call_func *rb_block_call_func_t;
-VALUE rb_each(VALUE obj);
-VALUE rb_yield(VALUE val);
-VALUE rb_yield_values(int n, ...);
-VALUE rb_yield_values2(int n, const VALUE *argv);
-VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat);
-VALUE rb_yield_splat(VALUE ary);
-VALUE rb_yield_splat_kw(VALUE ary, int kw_splat);
-VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
-int rb_keyword_given_p(void);
-int rb_block_given_p(void);
-void rb_need_block(void);
-__attribute__((__deprecated__ ("by: rb_block_call since 1.9")))
-VALUE rb_iterate(VALUE (*func1)(VALUE), VALUE data1, rb_block_call_func_t proc, VALUE data2);
-VALUE rb_block_call(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2);
-VALUE rb_block_call_kw(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2, int kw_splat);
-VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
-VALUE rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...);
-VALUE rb_vrescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, va_list ap);
-VALUE rb_ensure(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*e_proc)(VALUE), VALUE data2);
-VALUE rb_catch(const char *tag, rb_block_call_func_t func, VALUE data);
-VALUE rb_catch_obj(VALUE tag, rb_block_call_func_t func, VALUE data);
-__declspec(noreturn)
-void rb_throw(const char *tag, VALUE val);
-__declspec(noreturn)
-void rb_throw_obj(VALUE tag, VALUE val);
-
-struct rbimpl_size_mul_overflow_tag {
- _Bool left;
- size_t right;
-};
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2)))
-__attribute__((__nonnull__ ()))
-void *rb_alloc_tmp_buffer(volatile VALUE *store, long len);
-__attribute__((__malloc__))
-__attribute__((__returns_nonnull__))
-__attribute__((__alloc_size__ (2,3)))
-__attribute__((__nonnull__ ()))
-void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count);
-void rb_free_tmp_buffer(volatile VALUE *store);
-__declspec(noreturn)
-void ruby_malloc_size_overflow(size_t x, size_t y);
-static inline int
-rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
-{
- __extension__ unsigned __int128 da, db, c2;
- da = a;
- db = b;
- c2 = da * db;
- if (c2 > max) return 1;
- *c = ((size_t)c2);
- return 0;
-}
-__attribute__((__const__))
-static inline struct rbimpl_size_mul_overflow_tag
-rbimpl_size_mul_overflow(size_t x, size_t y)
-{
- struct rbimpl_size_mul_overflow_tag ret = { 0, 0, };
- ret.left = __builtin_mul_overflow(x, y, &ret.right);
- return ret;
-}
-static inline size_t
-rbimpl_size_mul_or_raise(size_t x, size_t y)
-{
- struct rbimpl_size_mul_overflow_tag size =
- rbimpl_size_mul_overflow(x, y);
- if ((__builtin_expect(!!(! size.left), 1))) {
- return size.right;
- }
- else {
- ruby_malloc_size_overflow(x, y);
- __builtin_unreachable();
- }
-}
-static inline void *
-rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
-{
- const size_t total_size = rbimpl_size_mul_or_raise(count, elsize);
- const size_t cnt = (total_size + sizeof(VALUE) - 1) / sizeof(VALUE);
- return rb_alloc_tmp_buffer_with_count(store, total_size, cnt);
-}
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-__attribute__((__returns_nonnull__))
-static inline void *
-ruby_nonempty_memcpy(void *dest, const void *src, size_t n)
-{
- if (n) {
- return __builtin___memcpy_chk (dest, src, n, __builtin_object_size (dest, 0));
- }
- else {
- return dest;
- }
-}
-
-
-__attribute__((__nonnull__ ()))
-VALUE rb_define_class(const char *name, VALUE super);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_module(const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super);
-__attribute__((__nonnull__ ()))
-VALUE rb_define_module_under(VALUE outer, const char *name);
-void rb_include_module(VALUE klass, VALUE module);
-void rb_extend_object(VALUE obj, VALUE mod);
-void rb_prepend_module(VALUE klass, VALUE module);
-
-VALUE rb_newobj(void);
-VALUE rb_newobj_of(VALUE klass, VALUE flags);
-VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type);
-VALUE rb_obj_class(VALUE obj);
-VALUE rb_singleton_class_clone(VALUE obj);
-void rb_singleton_class_attached(VALUE klass, VALUE obj);
-void rb_copy_generic_ivar(VALUE clone, VALUE obj);
-__attribute__((__deprecated__ ("This is no longer how Object#clone works.")))
-static inline void
-rb_clone_setup(VALUE clone, VALUE obj)
-{
- return;
-}
-__attribute__((__deprecated__ ("This is no longer how Object#dup works.")))
-static inline void
-rb_dup_setup(VALUE dup, VALUE obj)
-{
- return;
-}
-
-
-
-
-__attribute__((__nonnull__ ()))
-__declspec(noalias)
-void rb_mem_clear(VALUE *buf, long len)
- ;
-VALUE rb_assoc_new(VALUE car, VALUE cdr);
-VALUE rb_check_array_type(VALUE obj);
-VALUE rb_ary_new(void);
-VALUE rb_ary_new_capa(long capa);
-VALUE rb_ary_new_from_args(long n, ...);
-VALUE rb_ary_new_from_values(long n, const VALUE *elts);
-VALUE rb_ary_hidden_new(long capa);
-void rb_ary_free(VALUE ary);
-void rb_ary_modify(VALUE ary);
-VALUE rb_ary_freeze(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs);
-VALUE rb_ary_aref(int argc, const VALUE *argv, VALUE ary);
-VALUE rb_ary_subseq(VALUE ary, long beg, long len);
-void rb_ary_store(VALUE ary, long key, VALUE val);
-VALUE rb_ary_dup(VALUE ary);
-VALUE rb_ary_resurrect(VALUE ary);
-VALUE rb_ary_to_ary(VALUE obj);
-VALUE rb_ary_to_s(VALUE ary);
-VALUE rb_ary_cat(VALUE ary, const VALUE *train, long len);
-VALUE rb_ary_push(VALUE ary, VALUE elem);
-VALUE rb_ary_pop(VALUE ary);
-VALUE rb_ary_shift(VALUE ary);
-VALUE rb_ary_unshift(VALUE ary, VALUE elem);
-__attribute__((__pure__))
-VALUE rb_ary_entry(VALUE ary, long off);
-VALUE rb_ary_each(VALUE ary);
-VALUE rb_ary_join(VALUE ary, VALUE sep);
-VALUE rb_ary_reverse(VALUE ary);
-VALUE rb_ary_rotate(VALUE ary, long rot);
-VALUE rb_ary_sort(VALUE ary);
-VALUE rb_ary_sort_bang(VALUE ary);
-VALUE rb_ary_delete(VALUE ary, VALUE elem);
-VALUE rb_ary_delete_at(VALUE ary, long pos);
-VALUE rb_ary_clear(VALUE ary);
-VALUE rb_ary_plus(VALUE lhs, VALUE rhs);
-VALUE rb_ary_concat(VALUE lhs, VALUE rhs);
-VALUE rb_ary_assoc(VALUE alist, VALUE key);
-VALUE rb_ary_rassoc(VALUE alist, VALUE key);
-VALUE rb_ary_includes(VALUE ary, VALUE elem);
-VALUE rb_ary_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_ary_replace(VALUE copy, VALUE orig);
-VALUE rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func)(VALUE obj, long oidx));
-VALUE rb_ary_resize(VALUE ary, long len);
-
-VALUE rb_exc_new(VALUE etype, const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_exc_new_cstr(VALUE etype, const char *str);
-VALUE rb_exc_new_str(VALUE etype, VALUE str);
-__declspec(noreturn)
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-void rb_loaderror(const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_loaderror_with_path(VALUE path, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_name_error(ID name, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_name_error_str(VALUE name, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-void rb_frozen_error_raise(VALUE recv, const char *fmt, ...);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_invalid_str(const char *str, const char *type);
-__declspec(noreturn)
-__attribute__((__nonnull__ ()))
-void rb_error_frozen(const char *what);
-__declspec(noreturn)
-void rb_error_frozen_object(VALUE what);
-void rb_check_frozen(VALUE obj);
-void rb_check_copyable(VALUE obj, VALUE orig);
-__declspec(noreturn)
-static void rb_error_arity(int argc, int min, int max);
-static inline void
-rb_check_frozen_inline(VALUE obj)
-{
- if ((__builtin_expect(!!(RB_OBJ_FROZEN(obj)), 0))) {
- rb_error_frozen_object(obj);
- }
-}
-static inline int
-rb_check_arity(int argc, int min, int max)
-{
- if ((argc < min) || (max != (-1) && argc > max))
- rb_error_arity(argc, min, max);
- return argc;
-}
-
-__attribute__((__nonnull__ ()))
-void rb_st_foreach_safe(struct st_table *st, st_foreach_callback_func *func, st_data_t arg);
-VALUE rb_check_hash_type(VALUE obj);
-__attribute__((__nonnull__ ()))
-void rb_hash_foreach(VALUE hash, int (*func)(VALUE key, VALUE val, VALUE arg), VALUE arg);
-VALUE rb_hash(VALUE obj);
-VALUE rb_hash_new(void);
-VALUE rb_hash_new_capa(long capa);
-VALUE rb_hash_dup(VALUE hash);
-VALUE rb_hash_freeze(VALUE obj);
-VALUE rb_hash_aref(VALUE hash, VALUE key);
-VALUE rb_hash_lookup(VALUE hash, VALUE key);
-VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE def);
-VALUE rb_hash_fetch(VALUE hash, VALUE key);
-VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val);
-VALUE rb_hash_clear(VALUE hash);
-VALUE rb_hash_delete_if(VALUE hash);
-VALUE rb_hash_delete(VALUE hash, VALUE key);
-void rb_hash_bulk_insert(long argc, const VALUE *argv, VALUE hash);
-typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
-VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func);
-int rb_path_check(const char *path);
-VALUE rb_env_clear(void);
-VALUE rb_hash_size(VALUE hash);
-
-VALUE rb_block_proc(void);
-VALUE rb_block_lambda(void);
-VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg);
-VALUE rb_obj_is_proc(VALUE recv);
-VALUE rb_proc_call(VALUE recv, VALUE args);
-VALUE rb_proc_call_kw(VALUE recv, VALUE args, int kw_splat);
-VALUE rb_proc_call_with_block(VALUE recv, int argc, const VALUE *argv, VALUE proc);
-VALUE rb_proc_call_with_block_kw(VALUE recv, int argc, const VALUE *argv, VALUE proc, int kw_splat);
-int rb_proc_arity(VALUE recv);
-VALUE rb_proc_lambda_p(VALUE recv);
-VALUE rb_binding_new(void);
-VALUE rb_obj_method(VALUE recv, VALUE mid);
-VALUE rb_obj_is_method(VALUE recv);
-VALUE rb_method_call(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_method_call_kw(int argc, const VALUE *argv, VALUE recv, int kw_splat);
-VALUE rb_method_call_with_block(int argc, const VALUE *argv, VALUE recv, VALUE proc);
-VALUE rb_method_call_with_block_kw(int argc, const VALUE *argv, VALUE recv, VALUE proc, int kw_splat);
-int rb_mod_method_arity(VALUE mod, ID mid);
-int rb_obj_method_arity(VALUE obj, ID mid);
-__attribute__((__nonnull__ (1)))
-VALUE rb_protect(VALUE (*func)(VALUE args), VALUE args, int *state);
-__attribute__((__nonnull__ (2, 3)))
-int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...);
-__attribute__((__nonnull__ (3, 4)))
-int rb_scan_args_kw(int kw_splat, int argc, const VALUE *argv, const char *fmt, ...);
-__attribute__((__error__ ("bad scan arg format")))
-void rb_scan_args_bad_format(const char*);
-__attribute__((__error__ ("variable argument length doesn't match")))
-void rb_scan_args_length_mismatch(const char*,int);
-static inline _Bool
-rb_scan_args_keyword_p(int kw_flag, VALUE last)
-{
- switch (kw_flag) {
- case 0:
- return !! rb_keyword_given_p();
- case 1:
- return 1;
- case 3:
- return (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((last), (RUBY_T_HASH)) : (RB_TYPE_P)((last), (RUBY_T_HASH)));
- default:
- return 0;
- }
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_lead_p(const char *fmt)
-{
- return (((unsigned char)((fmt[0])-'0'))<10);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_lead(const char *fmt)
-{
- return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_opt_p(const char *fmt)
-{
- return (rb_scan_args_lead_p(fmt) && (((unsigned char)((fmt[1])-'0'))<10));
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_opt(const char *fmt)
-{
- return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_var_idx(const char *fmt)
-{
- return (!rb_scan_args_lead_p(fmt) ? 0 : !(((unsigned char)((fmt[1])-'0'))<10) ? 1 : 2);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_var(const char *fmt)
-{
- return (fmt[rb_scan_args_var_idx(fmt)]=='*');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_trail_idx(const char *fmt)
-{
- const int idx = rb_scan_args_var_idx(fmt);
- return idx+(fmt[idx]=='*');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_n_trail(const char *fmt)
-{
- const int idx = rb_scan_args_trail_idx(fmt);
- return ((((unsigned char)((fmt[idx])-'0'))<10) ? fmt[idx]-'0' : 0);
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_hash_idx(const char *fmt)
-{
- const int idx = rb_scan_args_trail_idx(fmt);
- return idx+(((unsigned char)((fmt[idx])-'0'))<10);
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_hash(const char *fmt)
-{
- return (fmt[rb_scan_args_hash_idx(fmt)]==':');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_block_idx(const char *fmt)
-{
- const int idx = rb_scan_args_hash_idx(fmt);
- return idx+(fmt[idx]==':');
-}
-__attribute__((__always_inline__)) inline
-static _Bool
-rb_scan_args_f_block(const char *fmt)
-{
- return (fmt[rb_scan_args_block_idx(fmt)]=='&');
-}
-__attribute__((__always_inline__)) inline
-static int
-rb_scan_args_set(int kw_flag, int argc, const VALUE *argv,
- int n_lead, int n_opt, int n_trail,
- _Bool f_var, _Bool f_hash, _Bool f_block,
- VALUE *vars[], const char *fmt __attribute__((__unused__)), int varc __attribute__((__unused__)))
- __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) < 0, "bad scan arg format", "error")))
- __attribute__((__diagnose_if__((!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!='*' ? (!(((unsigned char)(((fmt)[0])-'0'))<10) ? ((fmt)[0]!=':' ? ((fmt)[0]!='&' ? ((fmt)[0] ? -1 : (0)) : ((fmt)[(0)+1] ? -1 : ((0)+1))) : ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)))) : ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+((fmt)[0]-'0'))) : ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+((fmt)[0]-'0'))+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+((fmt)[0]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+1)) : ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+1)+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+1)+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+1)+((fmt)[(0)+1]-'0'))+1)+1)))))) : (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!='*' ? (!(((unsigned char)(((fmt)[(0)+1])-'0'))<10) ? ((fmt)[(0)+1]!=':' ? ((fmt)[(0)+1]!='&' ? ((fmt)[(0)+1] ? -1 : ((0)+(fmt)[0]-'0')) : ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1))) : ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)))) : ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+((fmt)[(0)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+1)) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+1)+((fmt)[((0)+1)+1]-'0'))+1)+1)))))) : ((fmt)[((0)+1)+1]!='*' ? (!(((unsigned char)(((fmt)[((0)+1)+1])-'0'))<10) ? ((fmt)[((0)+1)+1]!=':' ? ((fmt)[((0)+1)+1]!='&' ? ((fmt)[((0)+1)+1] ? -1 : (((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')) : ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1))) : ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)))) : ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+((fmt)[((0)+1)+1]-'0'))+1)+1))))) : (!(((unsigned char)(((fmt)[(((0)+1)+1)+1])-'0'))<10) ? ((fmt)[(((0)+1)+1)+1]!=':' ? ((fmt)[(((0)+1)+1)+1]!='&' ? ((fmt)[(((0)+1)+1)+1] ? -1 : ((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)) : ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1))) : ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+1)+1)))) : ((fmt)[((((0)+1)+1)+1)+1]!=':' ? ((fmt)[((((0)+1)+1)+1)+1]!='&' ? ((fmt)[((((0)+1)+1)+1)+1] ? -1 : (((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))) : ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1))) : ((fmt)[(((((0)+1)+1)+1)+1)+1]!='&' ? ((fmt)[(((((0)+1)+1)+1)+1)+1] ? -1 : ((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)) : ((fmt)[((((((0)+1)+1)+1)+1)+1)+1] ? -1 : (((((((0)+(fmt)[0]-'0')+(fmt)[(0)+1]-'0')+1)+((fmt)[(((0)+1)+1)+1]-'0'))+1)+1)))))))) != varc, "variable argument length doesn't match", "error")))
-{
- int i, argi = 0, vari = 0;
- VALUE *var, hash = ((VALUE)RUBY_Qnil);
- const int n_mand = n_lead + n_trail;
- if (f_hash && argc > 0) {
- VALUE last = argv[argc - 1];
- if (rb_scan_args_keyword_p(kw_flag, last)) {
- hash = rb_hash_dup(last);
- argc--;
- }
- }
- if (argc < n_mand) {
- goto argc_error;
- }
- for (i = 0; i < n_lead; i++) {
- var = vars[vari++];
- if (var) *var = argv[argi];
- argi++;
- }
- for (i = 0; i < n_opt; i++) {
- var = vars[vari++];
- if (argi < argc - n_trail) {
- if (var) *var = argv[argi];
- argi++;
- }
- else {
- if (var) *var = ((VALUE)RUBY_Qnil);
- }
- }
- if (f_var) {
- int n_var = argc - argi - n_trail;
- var = vars[vari++];
- if (0 < n_var) {
- if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]);
- argi += n_var;
- }
- else {
- if (var) *var = rb_ary_new();
- }
- }
- for (i = 0; i < n_trail; i++) {
- var = vars[vari++];
- if (var) *var = argv[argi];
- argi++;
- }
- if (f_hash) {
- var = vars[vari++];
- if (var) *var = hash;
- }
- if (f_block) {
- var = vars[vari++];
- if (rb_block_given_p()) {
- *var = rb_block_proc();
- }
- else {
- *var = ((VALUE)RUBY_Qnil);
- }
- }
- if (argi == argc) {
- return argc;
- }
- argc_error:
- rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
- __builtin_unreachable();
-}
-
-
-ID rb_sym2id(VALUE obj);
-VALUE rb_id2sym(ID id);
-__attribute__((__nonnull__ ()))
-ID rb_intern(const char *name);
-ID rb_intern2(const char *name, long len);
-ID rb_intern_str(VALUE str);
-const char *rb_id2name(ID id);
-__attribute__((__nonnull__ ()))
-ID rb_check_id(volatile VALUE *namep);
-ID rb_to_id(VALUE str);
-VALUE rb_id2str(ID id);
-VALUE rb_sym2str(VALUE id);
-VALUE rb_to_symbol(VALUE name);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_symbol(volatile VALUE *namep);
-__attribute__((__pure__))
-__attribute__((__nonnull__ ()))
-static inline ID
-rb_intern_const(const char *str)
-{
- size_t len = strlen(str);
- return rb_intern2(str, ((long)len));
-}
-__declspec(noalias)
-__attribute__((__nonnull__ ()))
-static inline ID
-rbimpl_intern_const(ID *ptr, const char *str)
-{
- while (! *ptr) {
- *ptr = rb_intern_const(str);
- }
- return *ptr;
-}
-
-typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
-typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
-typedef void rb_gvar_marker_t(VALUE *var);
-rb_gvar_getter_t rb_gvar_undef_getter;
-rb_gvar_setter_t rb_gvar_undef_setter;
-rb_gvar_marker_t rb_gvar_undef_marker;
-rb_gvar_getter_t rb_gvar_val_getter;
-rb_gvar_setter_t rb_gvar_val_setter;
-rb_gvar_marker_t rb_gvar_val_marker;
-rb_gvar_getter_t rb_gvar_var_getter;
-rb_gvar_setter_t rb_gvar_var_setter;
-rb_gvar_marker_t rb_gvar_var_marker;
-__declspec(noreturn)
-rb_gvar_setter_t rb_gvar_readonly_setter;
-__attribute__((__nonnull__ ()))
-void rb_define_variable(const char *name, VALUE *var);
-__attribute__((__nonnull__ (1)))
-void rb_define_virtual_variable(const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
-__attribute__((__nonnull__ (1)))
-void rb_define_hooked_variable(const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
-__attribute__((__nonnull__ ()))
-void rb_define_readonly_variable(const char *name, const VALUE *var);
-__attribute__((__nonnull__ ()))
-void rb_define_const(VALUE klass, const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-void rb_define_global_const(const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-void rb_deprecate_constant(VALUE mod, const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_gv_set(const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-VALUE rb_gv_get(const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_iv_get(VALUE obj, const char *name);
-__attribute__((__nonnull__ ()))
-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val);
-
-VALUE rb_get_path(VALUE obj);
-VALUE rb_get_path_no_checksafe(VALUE);
-__attribute__((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
-const char *rb_class2name(VALUE klass);
-const char *rb_obj_classname(VALUE obj);
-void rb_p(VALUE obj);
-VALUE rb_equal(VALUE lhs, VALUE rhs);
-VALUE rb_require(const char *feature);
-
-
-VALUE rb_big_new(size_t len, int sign);
-int rb_bigzero_p(VALUE x);
-VALUE rb_big_clone(VALUE num);
-void rb_big_2comp(VALUE num);
-VALUE rb_big_norm(VALUE x);
-void rb_big_resize(VALUE big, size_t len);
-__attribute__((__nonnull__ ()))
-VALUE rb_cstr_to_inum(const char *str, int base, int badcheck);
-VALUE rb_str_to_inum(VALUE str, int base, int badcheck);
-__attribute__((__nonnull__ ()))
-VALUE rb_cstr2inum(const char *str, int base);
-VALUE rb_str2inum(VALUE str, int base);
-VALUE rb_big2str(VALUE x, int base);
-long rb_big2long(VALUE x);
-unsigned long rb_big2ulong(VALUE x);
- long long
- rb_big2ll(VALUE);
-unsigned
- long long
- rb_big2ull(VALUE);
-__attribute__((__nonnull__ ()))
-void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
-__attribute__((__nonnull__ ()))
-VALUE rb_big_unpack(unsigned long *buf, long num_longs);
-__attribute__((__nonnull__ ()))
-int rb_uv_to_utf8(char buf[6], unsigned long uv);
-VALUE rb_dbl2big(double d);
-double rb_big2dbl(VALUE x);
-VALUE rb_big_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_big_eq(VALUE lhs, VALUE rhs);
-VALUE rb_big_eql(VALUE lhs, VALUE rhs);
-VALUE rb_big_plus(VALUE x, VALUE y);
-VALUE rb_big_minus(VALUE x, VALUE y);
-VALUE rb_big_mul(VALUE x, VALUE y);
-VALUE rb_big_div(VALUE x, VALUE y);
-VALUE rb_big_idiv(VALUE x, VALUE y);
-VALUE rb_big_modulo(VALUE x, VALUE y);
-VALUE rb_big_divmod(VALUE x, VALUE y);
-VALUE rb_big_pow(VALUE x, VALUE y);
-VALUE rb_big_and(VALUE x, VALUE y);
-VALUE rb_big_or(VALUE x, VALUE y);
-VALUE rb_big_xor(VALUE x, VALUE y);
-VALUE rb_big_lshift(VALUE x, VALUE y);
-VALUE rb_big_rshift(VALUE x, VALUE y);
-__attribute__((__nonnull__ ()))
-int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
-__attribute__((__nonnull__ ()))
-VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
-size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
-size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
-int rb_absint_singlebit_p(VALUE val);
-
-
-int rb_cmpint(VALUE val, VALUE a, VALUE b);
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_cmperr(VALUE a, VALUE b);
-
-VALUE rb_complex_raw(VALUE real, VALUE imag);
-VALUE rb_complex_new(VALUE real, VALUE imag);
-VALUE rb_complex_new_polar(VALUE abs, VALUE arg);
-__attribute__((__deprecated__ ("by: rb_complex_new_polar")))
-VALUE rb_complex_polar(VALUE abs, VALUE arg);
-__attribute__((__pure__))
-VALUE rb_complex_real(VALUE z);
-__attribute__((__pure__))
-VALUE rb_complex_imag(VALUE z);
-VALUE rb_complex_plus(VALUE x, VALUE y);
-VALUE rb_complex_minus(VALUE x, VALUE y);
-VALUE rb_complex_mul(VALUE x, VALUE y);
-VALUE rb_complex_div(VALUE x, VALUE y);
-VALUE rb_complex_uminus(VALUE z);
-VALUE rb_complex_conjugate(VALUE z);
-VALUE rb_complex_abs(VALUE z);
-VALUE rb_complex_arg(VALUE z);
-VALUE rb_complex_pow(VALUE base, VALUE exp);
-VALUE rb_dbl_complex_new(double real, double imag);
-VALUE rb_Complex(VALUE real, VALUE imag);
-
-VALUE rb_fiber_new(rb_block_call_func_t func, VALUE callback_obj);
-VALUE rb_fiber_new_storage(rb_block_call_func_t func, VALUE callback_obj, VALUE storage);
-VALUE rb_fiber_current(void);
-VALUE rb_fiber_alive_p(VALUE fiber);
-VALUE rb_obj_is_fiber(VALUE obj);
-VALUE rb_fiber_resume(VALUE fiber, int argc, const VALUE *argv);
-VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_yield(int argc, const VALUE *argv);
-VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv);
-VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
-VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv);
-
-VALUE rb_dir_getwd(void);
-
-VALUE rb_enum_values_pack(int argc, const VALUE *argv);
-
-
-__declspec(noreturn)
-void rb_exc_raise(VALUE exc);
-__declspec(noreturn)
-void rb_exc_fatal(VALUE exc);
-__declspec(noreturn)
-VALUE rb_f_exit(int argc, const VALUE *argv);
-__declspec(noreturn)
-VALUE rb_f_abort(int argc, const VALUE *argv);
-__declspec(noreturn)
-void rb_interrupt(void);
-ID rb_frame_this_func(void);
-__declspec(noreturn)
-void rb_jump_tag(int state);
-void rb_obj_call_init(VALUE obj, int argc, const VALUE *argv);
-void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
-ID rb_frame_callee(void);
-VALUE rb_make_exception(int argc, const VALUE *argv);
-void rb_set_end_proc(void (*func)(VALUE arg), VALUE arg);
-typedef VALUE rb_enumerator_size_func(VALUE recv, VALUE argv, VALUE eobj);
-typedef struct {
- VALUE begin;
- VALUE end;
- VALUE step;
- int exclude_end;
-} rb_arithmetic_sequence_components_t;
-VALUE rb_enumeratorize(VALUE recv, VALUE meth, int argc, const VALUE *argv);
-VALUE rb_enumeratorize_with_size(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func);
-VALUE rb_enumeratorize_with_size_kw(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func, int kw_splat);
-__attribute__((__nonnull__ ()))
-int rb_arithmetic_sequence_extract(VALUE as, rb_arithmetic_sequence_components_t *buf);
-__attribute__((__nonnull__ ()))
-VALUE rb_arithmetic_sequence_beg_len_step(VALUE as, long *begp, long *lenp, long *stepp, long len, int err);
-
-__attribute__((__nonnull__ ()))
-VALUE rb_file_s_expand_path(int argc, const VALUE *argv);
-VALUE rb_file_expand_path(VALUE fname, VALUE dname);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_s_absolute_path(int argc, const VALUE *argv);
-VALUE rb_file_absolute_path(VALUE fname, VALUE dname);
-VALUE rb_file_dirname(VALUE fname);
-__attribute__((__nonnull__ ()))
-int rb_find_file_ext(VALUE *feature, const char *const *exts);
-VALUE rb_find_file(VALUE path);
-VALUE rb_file_directory_p(VALUE _, VALUE path);
-VALUE rb_str_encode_ospath(VALUE path);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-int rb_is_absolute_path(const char *path);
-off_t rb_file_size(VALUE file);
-
-__attribute__((__cold__))
-__declspec(noreturn)
-void rb_memerror(void);
-__attribute__((__pure__))
-int rb_during_gc(void);
-__attribute__((__nonnull__ (1)))
-void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
-void rb_mark_tbl(struct st_table *tbl);
-void rb_mark_tbl_no_pin(struct st_table *tbl);
-void rb_mark_set(struct st_table *tbl);
-void rb_mark_hash(struct st_table *tbl);
-void rb_gc_update_tbl_refs(st_table *ptr);
-void rb_gc_mark_maybe(VALUE obj);
-void rb_gc_mark(VALUE obj);
-void rb_gc_mark_movable(VALUE obj);
-VALUE rb_gc_location(VALUE obj);
-__attribute__((__deprecated__ ("this is now a no-op function")))
-void rb_gc_force_recycle(VALUE obj);
-void rb_gc(void);
-void rb_gc_copy_finalizer(VALUE dst, VALUE src);
-VALUE rb_gc_enable(void);
-VALUE rb_gc_disable(void);
-VALUE rb_gc_start(void);
-VALUE rb_define_finalizer(VALUE obj, VALUE block);
-VALUE rb_undefine_finalizer(VALUE obj);
-size_t rb_gc_count(void);
-size_t rb_gc_stat(VALUE key_or_buf);
-VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
-void rb_gc_adjust_memory_usage(ssize_t diff);
-
-
-extern VALUE rb_fs;
-extern VALUE rb_output_fs;
-extern VALUE rb_rs;
-extern VALUE rb_default_rs;
-extern VALUE rb_output_rs;
-VALUE rb_io_write(VALUE io, VALUE str);
-VALUE rb_io_gets(VALUE io);
-VALUE rb_io_getbyte(VALUE io);
-VALUE rb_io_ungetc(VALUE io, VALUE c);
-VALUE rb_io_ungetbyte(VALUE io, VALUE b);
-VALUE rb_io_close(VALUE io);
-VALUE rb_io_flush(VALUE io);
-VALUE rb_io_eof(VALUE io);
-VALUE rb_io_binmode(VALUE io);
-VALUE rb_io_ascii8bit_binmode(VALUE io);
-VALUE rb_io_addstr(VALUE io, VALUE str);
-VALUE rb_io_printf(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_print(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io);
-VALUE rb_io_fdopen(int fd, int flags, const char *path);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_open(const char *fname, const char *fmode);
-__attribute__((__nonnull__ ()))
-VALUE rb_file_open_str(VALUE fname, const char *fmode);
-VALUE rb_gets(void);
-__attribute__((__nonnull__ ()))
-void rb_write_error(const char *str);
-void rb_write_error2(const char *str, long len);
-void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
-__attribute__((__nonnull__ ()))
-int rb_pipe(int *pipes);
-int rb_reserved_fd_p(int fd);
-int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
-int rb_cloexec_dup(int oldfd);
-int rb_cloexec_dup2(int oldfd, int newfd);
-__attribute__((__nonnull__ ()))
-int rb_cloexec_pipe(int fildes[2]);
-int rb_cloexec_fcntl_dupfd(int fd, int minfd);
-void rb_update_max_fd(int fd);
-void rb_fd_fix_cloexec(int fd);
-
-void rb_load(VALUE path, int wrap);
-void rb_load_protect(VALUE path, int wrap, int *state);
-__attribute__((__nonnull__ ()))
-int rb_provided(const char *feature);
-__attribute__((__nonnull__ (1)))
-int rb_feature_provided(const char *feature, const char **loading);
-__attribute__((__nonnull__ ()))
-void rb_provide(const char *feature);
-VALUE rb_f_require(VALUE self, VALUE feature);
-VALUE rb_require_string(VALUE feature);
-void rb_ext_ractor_safe(_Bool flag);
-
-VALUE rb_marshal_dump(VALUE obj, VALUE port);
-VALUE rb_marshal_load(VALUE port);
-void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
-
-__declspec(noreturn)
-__attribute__((__cold__))
-void rb_num_zerodiv(void);
-VALUE rb_num_coerce_bin(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_cmp(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_relop(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num_coerce_bit(VALUE lhs, VALUE rhs, ID op);
-VALUE rb_num2fix(VALUE val);
-VALUE rb_fix2str(VALUE val, int base);
-__attribute__((__const__))
-VALUE rb_dbl_cmp(double lhs, double rhs);
-extern VALUE rb_int_positive_pow(long x, unsigned long y);
-
-VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass);
-VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass);
-VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat);
-int rb_eql(VALUE lhs, VALUE rhs);
-VALUE rb_any_to_s(VALUE obj);
-VALUE rb_inspect(VALUE obj);
-VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass);
-VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
-VALUE rb_obj_alloc(VALUE klass);
-VALUE rb_obj_clone(VALUE obj);
-VALUE rb_obj_dup(VALUE obj);
-VALUE rb_obj_init_copy(VALUE src, VALUE dst);
-VALUE rb_obj_freeze(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_obj_frozen_p(VALUE obj);
-VALUE rb_obj_id(VALUE obj);
-__attribute__((__const__))
-VALUE rb_memory_id(VALUE obj);
-__attribute__((__pure__))
-VALUE rb_class_real(VALUE klass);
-__attribute__((__pure__))
-VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant);
-__attribute__((__pure__))
-VALUE rb_class_superclass(VALUE klass);
-__attribute__((__nonnull__ ()))
-VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid);
-__attribute__((__nonnull__ ()))
-VALUE rb_check_to_integer(VALUE val, const char *mid);
-VALUE rb_check_to_float(VALUE val);
-VALUE rb_to_int(VALUE val);
-VALUE rb_check_to_int(VALUE val);
-VALUE rb_Integer(VALUE val);
-VALUE rb_to_float(VALUE val);
-VALUE rb_Float(VALUE val);
-VALUE rb_String(VALUE val);
-VALUE rb_Array(VALUE val);
-VALUE rb_Hash(VALUE val);
-__attribute__((__nonnull__ ()))
-double rb_cstr_to_dbl(const char *str, int mode);
-double rb_str_to_dbl(VALUE str, int mode);
-
-ID rb_id_attrset(ID id);
-__attribute__((__const__))
-int rb_is_const_id(ID id);
-__attribute__((__const__))
-int rb_is_global_id(ID id);
-__attribute__((__const__))
-int rb_is_instance_id(ID id);
-__attribute__((__const__))
-int rb_is_attrset_id(ID id);
-__attribute__((__const__))
-int rb_is_class_id(ID id);
-__attribute__((__const__))
-int rb_is_local_id(ID id);
-__attribute__((__const__))
-int rb_is_junk_id(ID);
-__attribute__((__nonnull__ ()))
-int rb_symname_p(const char *str);
-VALUE rb_backref_get(void);
-void rb_backref_set(VALUE md);
-VALUE rb_lastline_get(void);
-void rb_lastline_set(VALUE str);
-VALUE rb_sym_all_symbols(void);
-
-
-void rb_last_status_set(int status, pid_t pid);
-VALUE rb_last_status_get(void);
-__attribute__((__nonnull__ ()))
-int rb_proc_exec(const char *cmd);
-__declspec(noreturn)
-VALUE rb_f_exec(int argc, const VALUE *argv);
-pid_t rb_waitpid(pid_t pid, int *status, int flags);
-void rb_syswait(pid_t pid);
-pid_t rb_spawn(int argc, const VALUE *argv);
-pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen);
-VALUE rb_proc_times(VALUE _);
-VALUE rb_detach_process(pid_t pid);
-
-unsigned int rb_genrand_int32(void);
-double rb_genrand_real(void);
-void rb_reset_random_seed(void);
-VALUE rb_random_bytes(VALUE rnd, long n);
-unsigned int rb_random_int32(VALUE rnd);
-double rb_random_real(VALUE rnd);
-unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
-unsigned long rb_genrand_ulong_limited(unsigned long i);
-
-VALUE rb_range_new(VALUE beg, VALUE end, int excl);
-__attribute__((__nonnull__ ()))
-VALUE rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err);
-__attribute__((__nonnull__ ()))
-int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
-
-VALUE rb_rational_raw(VALUE num, VALUE den);
-VALUE rb_rational_new(VALUE num, VALUE den);
-VALUE rb_Rational(VALUE num, VALUE den);
-__attribute__((__pure__))
-VALUE rb_rational_num(VALUE rat);
-__attribute__((__pure__))
-VALUE rb_rational_den(VALUE rat);
-VALUE rb_flt_rationalize_with_prec(VALUE flt, VALUE prec);
-VALUE rb_flt_rationalize(VALUE flt);
-
-int rb_memcicmp(const void *s1,const void *s2, long n);
-void rb_match_busy(VALUE md);
-VALUE rb_reg_nth_defined(int n, VALUE md);
-VALUE rb_reg_nth_match(int n, VALUE md);
-int rb_reg_backref_number(VALUE match, VALUE backref);
-VALUE rb_reg_last_match(VALUE md);
-VALUE rb_reg_match_pre(VALUE md);
-VALUE rb_reg_match_post(VALUE md);
-VALUE rb_reg_match_last(VALUE md);
-VALUE rb_reg_new_str(VALUE src, int opts);
-__attribute__((__nonnull__ ()))
-VALUE rb_reg_new(const char *src, long len, int opts);
-VALUE rb_reg_alloc(void);
-VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
-VALUE rb_reg_match(VALUE re, VALUE str);
-VALUE rb_reg_match2(VALUE re);
-int rb_reg_options(VALUE re);
-
-extern VALUE rb_argv0;
-VALUE rb_get_argv(void);
-__attribute__((__nonnull__ ()))
-void *rb_load_file(const char *file);
-void *rb_load_file_str(VALUE file);
-
-
-struct timeval;
-typedef struct {
- int maxfd;
- fd_set *fdset;
-} rb_fdset_t;
-__attribute__((__nonnull__ ()))
-void rb_fd_init(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_term(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_zero(rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_set(int fd, rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-void rb_fd_clr(int fd, rb_fdset_t *f);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-int rb_fd_isset(int fd, const rb_fdset_t *f);
-void rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max);
-void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
-int rb_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-static inline fd_set *
-rb_fd_ptr(const rb_fdset_t *f)
-{
- return f->fdset;
-}
-__attribute__((__nonnull__ ()))
-__attribute__((__pure__))
-static inline int
-rb_fd_max(const rb_fdset_t *f)
-{
- return f->maxfd;
-}
-struct timeval;
-int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
-
-__attribute__((__nonnull__ ()))
-VALUE rb_f_kill(int argc, const VALUE *argv);
-void (*ruby_posix_signal(int, void (*)(int)))(int);
-__attribute__((__pure__))
-const char *ruby_signal_name(int signo);
-void ruby_default_signal(int sig);
-
-VALUE rb_f_sprintf(int argc, const VALUE *argv);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 2)))
-VALUE rb_sprintf(const char *fmt, ...);
-__attribute__((__nonnull__ (1)))
-__attribute__((__format__(__printf__, 1, 0)))
-VALUE rb_vsprintf(const char *fmt, va_list ap);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-VALUE rb_str_catf(VALUE dst, const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 0)))
-VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap);
-VALUE rb_str_format(int argc, const VALUE *argv, VALUE fmt);
-
-VALUE rb_str_new(const char *ptr, long len);
-VALUE rb_str_new_cstr(const char *ptr);
-VALUE rb_str_new_shared(VALUE str);
-VALUE rb_str_new_frozen(VALUE str);
-VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len);
-VALUE rb_external_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_external_str_new_cstr(const char *ptr);
-VALUE rb_locale_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_locale_str_new_cstr(const char *ptr);
-VALUE rb_filesystem_str_new(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_filesystem_str_new_cstr(const char *ptr);
-VALUE rb_str_buf_new(long capa);
-__attribute__((__nonnull__ ()))
-VALUE rb_str_buf_new_cstr(const char *ptr);
-VALUE rb_str_tmp_new(long len);
-VALUE rb_usascii_str_new(const char *ptr, long len);
-VALUE rb_usascii_str_new_cstr(const char *ptr);
-VALUE rb_utf8_str_new(const char *ptr, long len);
-VALUE rb_utf8_str_new_cstr(const char *ptr);
-VALUE rb_str_new_static(const char *ptr, long len);
-VALUE rb_usascii_str_new_static(const char *ptr, long len);
-VALUE rb_utf8_str_new_static(const char *ptr, long len);
-VALUE rb_str_to_interned_str(VALUE str);
-VALUE rb_interned_str(const char *ptr, long len);
-__attribute__((__nonnull__ ()))
-VALUE rb_interned_str_cstr(const char *ptr);
-void rb_str_free(VALUE str);
-void rb_str_shared_replace(VALUE dst, VALUE src);
-VALUE rb_str_buf_append(VALUE dst, VALUE src);
-VALUE rb_str_buf_cat(VALUE, const char*, long);
-VALUE rb_str_buf_cat2(VALUE, const char*);
-__attribute__((__nonnull__ ()))
-VALUE rb_str_buf_cat_ascii(VALUE dst, const char *src);
-VALUE rb_obj_as_string(VALUE obj);
-VALUE rb_check_string_type(VALUE obj);
-void rb_must_asciicompat(VALUE obj);
-VALUE rb_str_dup(VALUE str);
-VALUE rb_str_resurrect(VALUE str);
-VALUE rb_str_locktmp(VALUE str);
-VALUE rb_str_unlocktmp(VALUE str);
-VALUE rb_str_dup_frozen(VALUE);
-VALUE rb_str_plus(VALUE lhs, VALUE rhs);
-VALUE rb_str_times(VALUE str, VALUE num);
-long rb_str_sublen(VALUE str, long pos);
-VALUE rb_str_substr(VALUE str, long beg, long len);
-VALUE rb_str_subseq(VALUE str, long beg, long len);
-char *rb_str_subpos(VALUE str, long beg, long *len);
-void rb_str_modify(VALUE str);
-void rb_str_modify_expand(VALUE str, long capa);
-VALUE rb_str_freeze(VALUE str);
-void rb_str_set_len(VALUE str, long len);
-VALUE rb_str_resize(VALUE str, long len);
-VALUE rb_str_cat(VALUE dst, const char *src, long srclen);
-VALUE rb_str_cat_cstr(VALUE dst, const char *src);
-VALUE rb_str_cat2(VALUE, const char*);
-VALUE rb_str_append(VALUE dst, VALUE src);
-VALUE rb_str_concat(VALUE dst, VALUE src);
-st_index_t rb_memhash(const void *ptr, long len);
-st_index_t rb_hash_start(st_index_t i);
-st_index_t rb_str_hash(VALUE str);
-int rb_str_hash_cmp(VALUE str1, VALUE str2);
-int rb_str_comparable(VALUE str1, VALUE str2);
-int rb_str_cmp(VALUE lhs, VALUE rhs);
-VALUE rb_str_equal(VALUE str1, VALUE str2);
-VALUE rb_str_drop_bytes(VALUE str, long len);
-void rb_str_update(VALUE dst, long beg, long len, VALUE src);
-VALUE rb_str_replace(VALUE dst, VALUE src);
-VALUE rb_str_inspect(VALUE str);
-VALUE rb_str_dump(VALUE str);
-VALUE rb_str_split(VALUE str, const char *delim);
-rb_gvar_setter_t rb_str_setter;
-VALUE rb_str_intern(VALUE str);
-VALUE rb_sym_to_s(VALUE sym);
-long rb_str_strlen(VALUE str);
-VALUE rb_str_length(VALUE);
-long rb_str_offset(VALUE str, long pos);
-__attribute__((__pure__))
-size_t rb_str_capacity(VALUE str);
-VALUE rb_str_ellipsize(VALUE str, long len);
-VALUE rb_str_scrub(VALUE str, VALUE repl);
-VALUE rb_str_succ(VALUE orig);
-__attribute__((__nonnull__ ()))
-static inline long
-rbimpl_strlen(const char *str)
-{
- return ((long)strlen(str));
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_usascii_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_usascii_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_utf8_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_utf8_str_new_static(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_external_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_external_str_new(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_locale_str_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_locale_str_new(str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_buf_new_cstr(const char *str)
-{
- long len = rbimpl_strlen(str);
- VALUE buf = rb_str_buf_new(len);
- return rb_str_buf_cat(buf, str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_str_cat_cstr(VALUE buf, const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_str_cat(buf, str, len);
-}
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_exc_new_cstr(VALUE exc, const char *str)
-{
- long len = rbimpl_strlen(str);
- return rb_exc_new(exc, str, len);
-}
-
-VALUE rb_struct_new(VALUE klass, ...);
-VALUE rb_struct_define(const char *name, ...);
-__attribute__((__nonnull__ (2)))
-VALUE rb_struct_define_under(VALUE space, const char *name, ...);
-VALUE rb_struct_alloc(VALUE klass, VALUE values);
-VALUE rb_struct_initialize(VALUE self, VALUE values);
-VALUE rb_struct_getmember(VALUE self, ID key);
-VALUE rb_struct_s_members(VALUE klass);
-VALUE rb_struct_members(VALUE self);
-VALUE rb_struct_alloc_noinit(VALUE klass);
-VALUE rb_struct_define_without_accessor(const char *name, VALUE super, rb_alloc_func_t func, ...);
-__attribute__((__nonnull__ (2)))
-VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
-
-struct timeval;
-void rb_thread_schedule(void);
-int rb_thread_wait_fd(int fd);
-int rb_thread_fd_writable(int fd);
-void rb_thread_fd_close(int fd);
-int rb_thread_alone(void);
-void rb_thread_sleep(int sec);
-void rb_thread_sleep_forever(void);
-void rb_thread_sleep_deadly(void);
-VALUE rb_thread_stop(void);
-VALUE rb_thread_wakeup(VALUE thread);
-VALUE rb_thread_wakeup_alive(VALUE thread);
-VALUE rb_thread_run(VALUE thread);
-VALUE rb_thread_kill(VALUE thread);
-__attribute__((__nonnull__ (1)))
-VALUE rb_thread_create(VALUE (*f)(void *g), void *g);
-void rb_thread_wait_for(struct timeval time);
-VALUE rb_thread_current(void);
-VALUE rb_thread_main(void);
-VALUE rb_thread_local_aref(VALUE thread, ID key);
-VALUE rb_thread_local_aset(VALUE thread, ID key, VALUE val);
-void rb_thread_atfork(void);
-void rb_thread_atfork_before_exec(void);
-VALUE rb_exec_recursive(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
-VALUE rb_exec_recursive_paired(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
-VALUE rb_exec_recursive_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
-VALUE rb_exec_recursive_paired_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
-typedef void rb_unblock_function_t(void *);
-typedef VALUE rb_blocking_function_t(void *);
-void rb_thread_check_ints(void);
-int rb_thread_interrupted(VALUE thval);
-VALUE rb_mutex_new(void);
-VALUE rb_mutex_locked_p(VALUE mutex);
-VALUE rb_mutex_trylock(VALUE mutex);
-VALUE rb_mutex_lock(VALUE mutex);
-VALUE rb_mutex_unlock(VALUE mutex);
-VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
-VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
-
-struct timespec;
-struct timeval;
-__attribute__((__nonnull__ ()))
-void rb_timespec_now(struct timespec *ts);
-VALUE rb_time_new(time_t sec, long usec);
-VALUE rb_time_nano_new(time_t sec, long nsec);
-__attribute__((__nonnull__ ()))
-VALUE rb_time_timespec_new(const struct timespec *ts, int offset);
-VALUE rb_time_num_new(VALUE timev, VALUE off);
-struct timeval rb_time_interval(VALUE num);
-struct timeval rb_time_timeval(VALUE time);
-struct timespec rb_time_timespec(VALUE time);
-struct timespec rb_time_timespec_interval(VALUE num);
-VALUE rb_time_utc_offset(VALUE time);
-
-VALUE rb_mod_name(VALUE mod);
-VALUE rb_class_path(VALUE mod);
-VALUE rb_class_path_cached(VALUE mod);
-__attribute__((__nonnull__ ()))
-void rb_set_class_path(VALUE klass, VALUE space, const char *name);
-void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name);
-VALUE rb_path_to_class(VALUE path);
-__attribute__((__nonnull__ ()))
-VALUE rb_path2class(const char *path);
-VALUE rb_class_name(VALUE obj);
-VALUE rb_autoload_load(VALUE space, ID name);
-VALUE rb_autoload_p(VALUE space, ID name);
-VALUE rb_f_trace_var(int argc, const VALUE *argv);
-VALUE rb_f_untrace_var(int argc, const VALUE *argv);
-VALUE rb_f_global_variables(void);
-void rb_alias_variable(ID dst, ID src);
-void rb_free_generic_ivar(VALUE obj);
-VALUE rb_ivar_get(VALUE obj, ID name);
-VALUE rb_ivar_set(VALUE obj, ID name, VALUE val);
-VALUE rb_ivar_defined(VALUE obj, ID name);
-void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg);
-st_index_t rb_ivar_count(VALUE obj);
-VALUE rb_attr_get(VALUE obj, ID name);
-VALUE rb_obj_instance_variables(VALUE obj);
-VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name);
-void *rb_mod_const_at(VALUE, void*);
-void *rb_mod_const_of(VALUE, void*);
-VALUE rb_const_list(void*);
-VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_remove_const(VALUE space, VALUE name);
-int rb_const_defined(VALUE space, ID name);
-int rb_const_defined_at(VALUE space, ID name);
-int rb_const_defined_from(VALUE space, ID name);
-VALUE rb_const_get(VALUE space, ID name);
-VALUE rb_const_get_at(VALUE space, ID name);
-VALUE rb_const_get_from(VALUE space, ID name);
-void rb_const_set(VALUE space, ID name, VALUE val);
-VALUE rb_const_remove(VALUE space, ID name);
-VALUE rb_cvar_defined(VALUE klass, ID name);
-void rb_cvar_set(VALUE klass, ID name, VALUE val);
-VALUE rb_cvar_get(VALUE klass, ID name);
-__attribute__((__nonnull__ ()))
-VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front);
-__attribute__((__nonnull__ ()))
-void rb_cv_set(VALUE klass, const char *name, VALUE val);
-__attribute__((__nonnull__ ()))
-VALUE rb_cv_get(VALUE klass, const char *name);
-__attribute__((__nonnull__ ()))
-void rb_define_class_variable(VALUE, const char*, VALUE);
-VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv);
-VALUE rb_mod_remove_cvar(VALUE mod, VALUE name);
-int ruby_native_thread_p(void);
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 4)))
-int ruby_snprintf(char *str, size_t n, char const *fmt, ...);
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 0)))
-int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
-
-
-extern const char *const sys_signame[32];
-extern const char *const sys_siglist[32];
-int raise(int);
-void (* _Nullable bsd_signal(int, void (* _Nullable)(int)))(int);
-int kill(pid_t, int) __asm("_" "kill" );
-int killpg(pid_t, int) __asm("_" "killpg" );
-int pthread_kill(pthread_t, int);
-int pthread_sigmask(int, const sigset_t *, sigset_t *) __asm("_" "pthread_sigmask" );
-int sigaction(int, const struct sigaction * __restrict__,
- struct sigaction * __restrict__);
-int sigaddset(sigset_t *, int);
-int sigaltstack(const stack_t * __restrict__, stack_t * __restrict__) __asm("_" "sigaltstack" ) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable)));
-int sigdelset(sigset_t *, int);
-int sigemptyset(sigset_t *);
-int sigfillset(sigset_t *);
-int sighold(int);
-int sigignore(int);
-int siginterrupt(int, int);
-int sigismember(const sigset_t *, int);
-int sigpause(int) __asm("_" "sigpause" );
-int sigpending(sigset_t *);
-int sigprocmask(int, const sigset_t * __restrict__, sigset_t * __restrict__);
-int sigrelse(int);
-void (* _Nullable sigset(int, void (* _Nullable)(int)))(int);
-int sigsuspend(const sigset_t *) __asm("_" "sigsuspend" );
-int sigwait(const sigset_t * __restrict__, int * __restrict__) __asm("_" "sigwait" );
-void psignal(unsigned int, const char *);
-int sigblock(int);
-int sigsetmask(int);
-int sigvec(int, struct sigvec *, struct sigvec *);
-inline __attribute__ ((__always_inline__)) int
-__sigbits(int __signo)
-{
- return __signo > 32 ? 0 : (1 << (__signo - 1));
-}
-
-typedef int jmp_buf[((9 * 2) + 3 + 16)];
-typedef int sigjmp_buf[((9 * 2) + 3 + 16) + 1];
-extern int setjmp(jmp_buf);
-extern void longjmp(jmp_buf, int) __attribute__((__noreturn__));
-int _setjmp(jmp_buf);
-void _longjmp(jmp_buf, int) __attribute__((__noreturn__));
-int sigsetjmp(sigjmp_buf, int);
-void siglongjmp(sigjmp_buf, int) __attribute__((__noreturn__));
-void longjmperror(void);
-static inline char *container_of_or_null_(void *member_ptr, size_t offset)
-{
- return member_ptr ? (char *)member_ptr - offset : ((void*)0);
-}
-struct ccan_list_node
-{
- struct ccan_list_node *next, *prev;
-};
-struct ccan_list_head
-{
- struct ccan_list_node n;
-};
-static inline void ccan_list_head_init(struct ccan_list_head *h)
-{
- h->n.next = h->n.prev = &h->n;
-}
-static inline void ccan_list_node_init(struct ccan_list_node *n)
-{
- n->next = n->prev = n;
-}
-static inline void ccan_list_add_after_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- n->next = p->next;
- n->prev = p;
- p->next->prev = n;
- p->next = n;
- (void)((void)abortstr, h);
-}
-static inline void ccan_list_add_(struct ccan_list_head *h,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- ccan_list_add_after_(h, &h->n, n, abortstr);
-}
-static inline void ccan_list_add_before_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- n->next = p;
- n->prev = p->prev;
- p->prev->next = n;
- p->prev = n;
- (void)((void)abortstr, h);
-}
-static inline void ccan_list_add_tail_(struct ccan_list_head *h,
- struct ccan_list_node *n,
- const char *abortstr)
-{
- ccan_list_add_before_(h, &h->n, n, abortstr);
-}
-static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* abortstr)
-{
- (void)((void)abortstr, h);
- return h->n.next == &h->n;
-}
-static inline _Bool ccan_list_empty_nocheck(const struct ccan_list_head *h)
-{
- return h->n.next == &h->n;
-}
-static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr)
-{
- (void)((void)abortstr, n);
- n->next->prev = n->prev;
- n->prev->next = n->next;
-}
-static inline void ccan_list_del_init_(struct ccan_list_node *n, const char *abortstr)
-{
- ccan_list_del_(n, abortstr);
- ccan_list_node_init(n);
-}
-static inline void ccan_list_del_from(struct ccan_list_head *h, struct ccan_list_node *n)
-{
- ((void)0);
- ccan_list_del_(n, "./ccan/list/list.h" ":" "329");
-}
-static inline void ccan_list_swap_(struct ccan_list_node *o,
- struct ccan_list_node *n,
- const char* abortstr)
-{
- (void)((void)abortstr, o);
- *n = *o;
- n->next->prev = n;
- n->prev->next = n;
-}
-static inline const void *ccan_list_top_(const struct ccan_list_head *h, size_t off)
-{
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "399"))
- return ((void*)0);
- return (const char *)h->n.next - off;
-}
-static inline const void *ccan_list_pop_(const struct ccan_list_head *h, size_t off)
-{
- struct ccan_list_node *n;
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "425"))
- return ((void*)0);
- n = h->n.next;
- ccan_list_del_(n, "./ccan/list/list.h" ":" "428");
- return (const char *)n - off;
-}
-static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t off)
-{
- if (ccan_list_empty_(h, "./ccan/list/list.h" ":" "451"))
- return ((void*)0);
- return (const char *)h->n.prev - off;
-}
-static inline void ccan_list_append_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
- const char *abortstr)
-{
- struct ccan_list_node *from_tail = ((void)abortstr, from)->n.prev;
- struct ccan_list_node *to_tail = ((void)abortstr, to)->n.prev;
- to->n.prev = from_tail;
- from_tail->next = &to->n;
- to_tail->next = &from->n;
- from->n.prev = to_tail;
- ccan_list_del_(&from->n, "./ccan/list/list.h" ":" "600");
- ccan_list_head_init(from);
-}
-static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
- const char *abortstr)
-{
- struct ccan_list_node *from_tail = ((void)abortstr, from)->n.prev;
- struct ccan_list_node *to_head = ((void)abortstr, to)->n.next;
- to->n.next = &from->n;
- from->n.prev = &to->n;
- to_head->prev = from_tail;
- from_tail->next = to_head;
- ccan_list_del_(&from->n, "./ccan/list/list.h" ":" "632");
- ccan_list_head_init(from);
-}
-static inline void *ccan_list_node_to_off_(struct ccan_list_node *node, size_t off)
-{
- return (void *)((char *)node - off);
-}
-static inline struct ccan_list_node *ccan_list_node_from_off_(void *ptr, size_t off)
-{
- return (struct ccan_list_node *)((char *)ptr + off);
-}
-static inline void *ccan_list_entry_or_null(const struct ccan_list_head *h,
- const struct ccan_list_node *n,
- size_t off)
-{
- if (n == &h->n)
- return ((void*)0);
- return (char *)n - off;
-}
-enum ruby_id_types {
- RUBY_ID_STATIC_SYM = 0x01,
- RUBY_ID_LOCAL = 0x00,
- RUBY_ID_INSTANCE = (0x01<<1),
- RUBY_ID_GLOBAL = (0x03<<1),
- RUBY_ID_ATTRSET = (0x04<<1),
- RUBY_ID_CONST = (0x05<<1),
- RUBY_ID_CLASS = (0x06<<1),
- RUBY_ID_JUNK = (0x07<<1),
- RUBY_ID_INTERNAL = RUBY_ID_JUNK,
- RUBY_ID_SCOPE_SHIFT = 4,
- RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
-};
-enum ruby_method_ids {
- idDot2 = 128,
- idDot3 = 129,
- idUPlus = 132,
- idUMinus = 133,
- idPow = 134,
- idCmp = 135,
- idPLUS = '+',
- idMINUS = '-',
- idMULT = '*',
- idDIV = '/',
- idMOD = '%',
- idLTLT = 136,
- idGTGT = 137,
- idLT = '<',
- idLE = 138,
- idGT = '>',
- idGE = 139,
- idEq = 140,
- idEqq = 141,
- idNeq = 142,
- idNot = '!',
- idAnd = '&',
- idOr = '|',
- idBackquote = '`',
- idEqTilde = 143,
- idNeqTilde = 144,
- idAREF = 145,
- idASET = 146,
- idCOLON2 = 147,
- idANDOP = 148,
- idOROP = 149,
- idANDDOT = 150,
- tPRESERVED_ID_BEGIN = 150,
- idNilP,
- idNULL,
- idEmptyP,
- idEqlP,
- idRespond_to,
- idRespond_to_missing,
- idIFUNC,
- idCFUNC,
- id_core_set_method_alias,
- id_core_set_variable_alias,
- id_core_undef_method,
- id_core_define_method,
- id_core_define_singleton_method,
- id_core_set_postexe,
- id_core_hash_merge_ptr,
- id_core_hash_merge_kwd,
- id_core_raise,
- id_core_sprintf,
- id_debug_created_info,
- tPRESERVED_ID_END,
- tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
- tMax,
- tMin,
- tFreeze,
- tInspect,
- tIntern,
- tObject_id,
- tConst_added,
- tConst_missing,
- tMethodMissing,
- tMethod_added,
- tSingleton_method_added,
- tMethod_removed,
- tSingleton_method_removed,
- tMethod_undefined,
- tSingleton_method_undefined,
- tLength,
- tSize,
- tGets,
- tSucc,
- tEach,
- tProc,
- tLambda,
- tSend,
- t__send__,
- t__attached__,
- t__recursive_key__,
- tInitialize,
- tInitialize_copy,
- tInitialize_clone,
- tInitialize_dup,
- tTo_int,
- tTo_ary,
- tTo_str,
- tTo_sym,
- tTo_hash,
- tTo_proc,
- tTo_io,
- tTo_a,
- tTo_s,
- tTo_i,
- tTo_f,
- tTo_r,
- tBt,
- tBt_locations,
- tCall,
- tMesg,
- tException,
- tLocals,
- tNOT,
- tAND,
- tOR,
- tDiv,
- tDivmod,
- tFdiv,
- tQuo,
- tName,
- tNil,
- tPath,
- tUScore,
- tNUMPARAM_1,
- tNUMPARAM_2,
- tNUMPARAM_3,
- tNUMPARAM_4,
- tNUMPARAM_5,
- tNUMPARAM_6,
- tNUMPARAM_7,
- tNUMPARAM_8,
- tNUMPARAM_9,
- tDefault,
- tTOKEN_LOCAL_END,
- tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
- tTOKEN_INSTANCE_END,
- tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
- tLASTLINE,
- tBACKREF,
- tERROR_INFO,
- tTOKEN_GLOBAL_END,
- tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
- tTOKEN_CONST_END,
- tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
- tTOKEN_CLASS_END,
- tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
- tTOKEN_ATTRSET_END,
- tNEXT_ID = tTOKEN_ATTRSET_END,
- idMax = ((tMax<> RUBY_ID_SCOPE_SHIFT
-};
-
-void rb_obj_info_dump(VALUE obj);
-void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
-void ruby_debug_breakpoint(void);
-__attribute__((__format__(__printf__, (1), (2)))) void ruby_debug_printf(const char*, ...);
-
-
-VALUE rb_ary_last(int, const VALUE *, VALUE);
-void rb_ary_set_len(VALUE, long);
-void rb_ary_delete_same(VALUE, VALUE);
-VALUE rb_ary_hidden_new_fill(long capa);
-VALUE rb_ary_at(VALUE, VALUE);
-size_t rb_ary_memsize(VALUE);
-VALUE rb_to_array_type(VALUE obj);
-VALUE rb_to_array(VALUE obj);
-void rb_ary_cancel_sharing(VALUE ary);
-size_t rb_ary_size_as_embedded(VALUE ary);
-void rb_ary_make_embedded(VALUE ary);
-_Bool rb_ary_embeddable_p(VALUE ary);
-VALUE rb_ary_diff(VALUE ary1, VALUE ary2);
-static inline VALUE rb_ary_entry_internal(VALUE ary, long offset);
-static inline _Bool ARY_PTR_USING_P(VALUE ary);
-static inline void RARY_TRANSIENT_SET(VALUE ary);
-static inline void RARY_TRANSIENT_UNSET(VALUE ary);
-VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
-VALUE rb_check_to_array(VALUE ary);
-VALUE rb_ary_behead(VALUE, long);
-VALUE rb_ary_aref1(VALUE ary, VALUE i);
-struct rb_execution_context_struct;
-VALUE rb_ec_ary_new_from_values(struct rb_execution_context_struct *ec, long n, const VALUE *elts);
-static inline VALUE
-rb_ary_entry_internal(VALUE ary, long offset)
-{
- long len = rb_array_len(ary);
- const VALUE *ptr = rb_array_const_ptr_transient(ary);
- if (len == 0) return ((VALUE)RUBY_Qnil);
- if (offset < 0) {
- offset += len;
- if (offset < 0) return ((VALUE)RUBY_Qnil);
- }
- else if (len <= offset) {
- return ((VALUE)RUBY_Qnil);
- }
- return ptr[offset];
-}
-static inline _Bool
-ARY_PTR_USING_P(VALUE ary)
-{
- return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER14));
-}
-__attribute__((__unused__))
-static inline int
-ary_should_not_be_shared_and_embedded(VALUE ary)
-{
- return !RB_FL_ALL_RAW(ary, RUBY_ELTS_SHARED|RARRAY_EMBED_FLAG);
-}
-static inline _Bool
-ARY_SHARED_P(VALUE ary)
-{
- ((void)0);
- ((void)0);
- return RB_FL_TEST_RAW(ary, RUBY_ELTS_SHARED);
-}
-static inline _Bool
-ARY_EMBED_P(VALUE ary)
-{
- ((void)0);
- ((void)0);
- return RB_FL_TEST_RAW(ary, RARRAY_EMBED_FLAG);
-}
-static inline VALUE
-ARY_SHARED_ROOT(VALUE ary)
-{
- ((void)0);
- return ((struct RArray *)(ary))->as.heap.aux.shared_root;
-}
-static inline _Bool
-ARY_SHARED_ROOT_P(VALUE ary)
-{
- ((void)0);
- return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER12));
-}
-static inline long
-ARY_SHARED_ROOT_REFCNT(VALUE ary)
-{
- ((void)0);
- return ((struct RArray *)(ary))->as.heap.aux.capa;
-}
-static inline void
-RARY_TRANSIENT_SET(VALUE ary)
-{
- RB_FL_SET_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-static inline void
-RARY_TRANSIENT_UNSET(VALUE ary)
-{
- RB_FL_UNSET_RAW(ary, RARRAY_TRANSIENT_FLAG);
-}
-__attribute__((__pure__))
-__attribute__((__artificial__))
-static inline VALUE
-RARRAY_AREF(VALUE ary, long i)
-{
- ((void)0);
- return rb_array_const_ptr_transient(ary)[i];
-}
-
-enum ruby_basic_operators {
- BOP_PLUS,
- BOP_MINUS,
- BOP_MULT,
- BOP_DIV,
- BOP_MOD,
- BOP_EQ,
- BOP_EQQ,
- BOP_LT,
- BOP_LE,
- BOP_LTLT,
- BOP_AREF,
- BOP_ASET,
- BOP_LENGTH,
- BOP_SIZE,
- BOP_EMPTY_P,
- BOP_NIL_P,
- BOP_SUCC,
- BOP_GT,
- BOP_GE,
- BOP_NOT,
- BOP_NEQ,
- BOP_MATCH,
- BOP_FREEZE,
- BOP_UMINUS,
- BOP_MAX,
- BOP_MIN,
- BOP_CALL,
- BOP_AND,
- BOP_OR,
- BOP_CMP,
- BOP_DEFAULT,
- BOP_LAST_
-};
-extern short ruby_vm_redefined_flag[BOP_LAST_];
-
-typedef unsigned
- long long
- rb_serial_t;
-
-struct rb_callable_method_entry_struct;
-struct rb_method_definition_struct;
-struct rb_execution_context_struct;
-struct rb_control_frame_struct;
-struct rb_callinfo;
-enum method_missing_reason {
- MISSING_NOENTRY = 0x00,
- MISSING_PRIVATE = 0x01,
- MISSING_PROTECTED = 0x02,
- MISSING_FCALL = 0x04,
- MISSING_VCALL = 0x08,
- MISSING_SUPER = 0x10,
- MISSING_MISSING = 0x20,
- MISSING_NONE = 0x40
-};static inline
-VALUE rb_vm_push_frame_fname(struct rb_execution_context_struct *ec, VALUE fname);
-VALUE rb_obj_is_thread(VALUE obj);
-void rb_vm_mark(void *ptr);
-void rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx);
-__attribute__((__pure__)) VALUE rb_vm_top_self(void);
-const void **rb_vm_get_insns_address_table(void);
-VALUE rb_source_location(int *pline);
-const char *rb_source_location_cstr(int *pline);
-static void rb_vm_pop_cfunc_frame(void);
-int rb_vm_add_root_module(VALUE module);
-void rb_vm_check_redefinition_by_prepend(VALUE klass);
-int rb_vm_check_optimizable_mid(VALUE mid);
-VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
-static VALUE ruby_vm_special_exception_copy(VALUE);
-__attribute__((__pure__)) st_table *rb_vm_fstring_table(void);
-VALUE rb_vm_exec(struct rb_execution_context_struct *, _Bool);
-VALUE rb_current_realfilepath(void);
-VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
-typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
-VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
- rb_check_funcall_hook *hook, VALUE arg);
-VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv,
- rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
-const char *rb_type_str(enum ruby_value_type type);
-VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
-VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE, int, const VALUE*, int);
-VALUE rb_yield_1(VALUE val);
-VALUE rb_yield_force_blockarg(VALUE values);
-VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
- rb_block_call_func_t bl_proc, int min_argc, int max_argc,
- VALUE data2);
-void rb_check_stack_overflow(void);
-VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
-VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
-struct rb_iseq_struct;
-const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
-struct rb_execution_context_struct;
-int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
-void rb_clear_constant_cache(void);
-void rb_print_backtrace(void);
-VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
-VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval);
-VALUE rb_vm_backtrace(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
-VALUE rb_vm_backtrace_locations(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
-VALUE rb_make_backtrace(void);
-void rb_backtrace_print_as_bugreport(void);
-int rb_backtrace_p(VALUE obj);
-VALUE rb_backtrace_to_str_ary(VALUE obj);
-VALUE rb_backtrace_to_location_ary(VALUE obj);
-void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
-int rb_frame_info_p(VALUE obj);
-int rb_get_node_id_from_frame_info(VALUE obj);
-const struct rb_iseq_struct *rb_get_iseq_from_frame_info(VALUE obj);
-VALUE rb_ec_backtrace_object(const struct rb_execution_context_struct *ec);
-void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self);
-
-
-
-
-
-
-
-
-struct rb_execution_context_struct;
-struct rb_objspace;
-
-typedef struct ractor_newobj_size_pool_cache {
- struct RVALUE *freelist;
- struct heap_page *using_page;
-} rb_ractor_newobj_size_pool_cache_t;
-typedef struct ractor_newobj_cache {
- size_t incremental_mark_step_allocated_slots;
- rb_ractor_newobj_size_pool_cache_t size_pool_caches[5];
-} rb_ractor_newobj_cache_t;
-extern VALUE *ruby_initial_gc_stress_ptr;
-extern int ruby_disable_gc;
-__attribute__((__malloc__)) void *ruby_mimmalloc(size_t size);
-void ruby_mimfree(void *ptr);
-void rb_objspace_set_event_hook(const rb_event_flag_t event);
-VALUE rb_objspace_gc_enable(struct rb_objspace *);
-VALUE rb_objspace_gc_disable(struct rb_objspace *);
-void ruby_gc_set_params(void);
-void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
-__attribute__((__alloc_align__(1)))
-__attribute__((__malloc__)) void *rb_aligned_malloc(size_t, size_t) __attribute__((__alloc_size__ (2)));
-size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
-size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
-__attribute__((__malloc__)) void *rb_xmalloc_mul_add(size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xcalloc_mul_add(size_t, size_t, size_t);
-void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t);
-__attribute__((__malloc__)) void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t);
-static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
-static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
-static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
-VALUE rb_class_allocate_instance(VALUE klass);
-void rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache);
-size_t rb_gc_obj_slot_size(VALUE obj);
-_Bool rb_gc_size_allocatable_p(size_t size);
-int rb_objspace_garbage_object_p(VALUE obj);
-const char *rb_objspace_data_type_name(VALUE obj);
-VALUE rb_wb_protected_newobj_of(VALUE, VALUE, size_t);
-VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t);
-VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags, size_t);
-size_t rb_obj_memsize_of(VALUE);
-void rb_gc_verify_internal_consistency(void);
-size_t rb_obj_gc_flags(VALUE, ID[], size_t);
-void rb_gc_mark_values(long n, const VALUE *values);
-void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
-void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
-void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
-void ruby_sized_xfree(void *x, size_t size);
-int rb_ec_stack_check(struct rb_execution_context_struct *ec);
-void rb_gc_writebarrier_remember(VALUE obj);
-const char *rb_obj_info(VALUE obj);
-static inline void *
-ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
-{
- return ruby_xrealloc(ptr, new_size);
-}
-static inline void *
-ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
-{
- return ruby_xrealloc2(ptr, new_count, elemsiz);
-}
-static inline void
-ruby_sized_xfree_inlined(void *ptr, size_t size)
-{
- ruby_xfree(ptr);
-}
-enum imemo_type {
- imemo_env = 0,
- imemo_cref = 1,
- imemo_svar = 2,
- imemo_throw_data = 3,
- imemo_ifunc = 4,
- imemo_memo = 5,
- imemo_ment = 6,
- imemo_iseq = 7,
- imemo_tmpbuf = 8,
- imemo_ast = 9,
- imemo_parser_strterm = 10,
- imemo_callinfo = 11,
- imemo_callcache = 12,
- imemo_constcache = 13,
-};
-struct vm_svar {
- VALUE flags;
- const VALUE cref_or_me;
- const VALUE lastline;
- const VALUE backref;
- const VALUE others;
-};
-struct vm_throw_data {
- VALUE flags;
- VALUE reserved;
- const VALUE throw_obj;
- const struct rb_control_frame_struct *catch_frame;
- int throw_state;
-};
-struct vm_ifunc_argc {
- int min, max;
-};
-struct vm_ifunc {
- VALUE flags;
- VALUE reserved;
- rb_block_call_func_t func;
- const void *data;
- struct vm_ifunc_argc argc;
-};
-struct rb_imemo_tmpbuf_struct {
- VALUE flags;
- VALUE reserved;
- VALUE *ptr;
- struct rb_imemo_tmpbuf_struct *next;
- size_t cnt;
-};
-struct MEMO {
- VALUE flags;
- VALUE reserved;
- const VALUE v1;
- const VALUE v2;
- union {
- long cnt;
- long state;
- const VALUE value;
- void (*func)(void);
- } u3;
-};
-typedef struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t;
-rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
-struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
-void rb_strterm_mark(VALUE obj);
-static inline enum imemo_type imemo_type(VALUE imemo);
-static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type);
-static inline _Bool imemo_throw_data_p(VALUE imemo);
-static inline struct vm_ifunc *rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data);
-static inline VALUE rb_imemo_tmpbuf_auto_free_pointer(void);
-static inline void *RB_IMEMO_TMPBUF_PTR(VALUE v);
-static inline void *rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr);
-static inline VALUE rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str);
-static inline void MEMO_V1_SET(struct MEMO *m, VALUE v);
-static inline void MEMO_V2_SET(struct MEMO *m, VALUE v);
-VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
-const char *rb_imemo_name(enum imemo_type type);
-static inline enum imemo_type
-imemo_type(VALUE imemo)
-{
- return (((struct RBasic *)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
-}
-static inline int
-imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
-{
- if ((__builtin_expect(!!(!RB_SPECIAL_CONST_P(imemo)), 1))) {
- const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
- const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
- return expected_type == (((struct RBasic *)(imemo))->flags & mask);
- }
- else {
- return 0;
- }
-}
-static inline _Bool
-imemo_throw_data_p(VALUE imemo)
-{
- return (__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((imemo), (RUBY_T_IMEMO)) : (RB_TYPE_P)((imemo), (RUBY_T_IMEMO)));
-}
-static inline struct vm_ifunc *
-rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
-{
- return rb_vm_ifunc_new(func, data, 0, (-1));
-}
-static inline VALUE
-rb_imemo_tmpbuf_auto_free_pointer(void)
-{
- return rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
-}
-static inline void *
-RB_IMEMO_TMPBUF_PTR(VALUE v)
-{
- const struct rb_imemo_tmpbuf_struct *p = (const void *)v;
- return p->ptr;
-}
-static inline void *
-rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
-{
- return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
-}
-static inline VALUE
-rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
-{
- const void *src;
- VALUE imemo;
- rb_imemo_tmpbuf_t *tmpbuf;
- void *dst;
- size_t len;
- rb_string_value(&(str));
- imemo = rb_imemo_tmpbuf_auto_free_pointer();
- tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
- len = RSTRING_LEN(str);
- src = RSTRING_PTR(str);
- dst = ruby_xmalloc(len);
- ruby_nonempty_memcpy(dst, src, len);
- tmpbuf->ptr = dst;
- return imemo;
-}
-static inline void
-MEMO_V1_SET(struct MEMO *m, VALUE v)
-{
- rb_obj_write((VALUE)(m), __extension__({
- ;
- ; __typeof__((VALUE *)(&m->v1)) unaligned_member_access_result = ((VALUE *)(&m->v1));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 233);
-}
-static inline void
-MEMO_V2_SET(struct MEMO *m, VALUE v)
-{
- rb_obj_write((VALUE)(m), __extension__({
- ;
- ; __typeof__((VALUE *)(&m->v2)) unaligned_member_access_result = ((VALUE *)(&m->v2));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 239);
-}
-typedef enum {
- METHOD_VISI_UNDEF = 0x00,
- METHOD_VISI_PUBLIC = 0x01,
- METHOD_VISI_PRIVATE = 0x02,
- METHOD_VISI_PROTECTED = 0x03,
- METHOD_VISI_MASK = 0x03
-} rb_method_visibility_t;
-typedef struct rb_scope_visi_struct {
- rb_method_visibility_t method_visi : 3;
- unsigned int module_func : 1;
-} rb_scope_visibility_t;
-typedef struct rb_cref_struct {
- VALUE flags;
- VALUE refinements;
- VALUE klass_or_self;
- struct rb_cref_struct * next;
- const rb_scope_visibility_t scope_visi;
-} rb_cref_t;
-typedef struct rb_method_entry_struct {
- VALUE flags;
- VALUE defined_class;
- struct rb_method_definition_struct * const def;
- ID called_id;
- VALUE owner;
-} rb_method_entry_t;
-typedef struct rb_callable_method_entry_struct {
- VALUE flags;
- const VALUE defined_class;
- struct rb_method_definition_struct * const def;
- ID called_id;
- const VALUE owner;
-} rb_callable_method_entry_t;
-static inline void
-METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
-{
- ((void)0);
- me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
-}
-static inline void
-METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
-{
- ((void)0);
- me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
-}
-static inline void
-METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
-{
- ((void)0);
- ((void)0);
- me->flags =
- (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
- ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
-}
-static inline void
-METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
-{
- dst->flags =
- (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
- (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
-}
-typedef enum {
- VM_METHOD_TYPE_ISEQ,
- VM_METHOD_TYPE_CFUNC,
- VM_METHOD_TYPE_ATTRSET,
- VM_METHOD_TYPE_IVAR,
- VM_METHOD_TYPE_BMETHOD,
- VM_METHOD_TYPE_ZSUPER,
- VM_METHOD_TYPE_ALIAS,
- VM_METHOD_TYPE_UNDEF,
- VM_METHOD_TYPE_NOTIMPLEMENTED,
- VM_METHOD_TYPE_OPTIMIZED,
- VM_METHOD_TYPE_MISSING,
- VM_METHOD_TYPE_REFINED,
-} rb_method_type_t;
-__extension__ _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<beg_pos;
- loc.end_pos = loc2->end_pos;
- return loc;
-}
-typedef struct rb_ast_id_table {
- int size;
- ID ids[];
-} rb_ast_id_table_t;
-typedef struct RNode {
- VALUE flags;
- union {
- struct RNode *node;
- ID id;
- VALUE value;
- rb_ast_id_table_t *tbl;
- } u1;
- union {
- struct RNode *node;
- ID id;
- long argc;
- VALUE value;
- } u2;
- union {
- struct RNode *node;
- ID id;
- long state;
- struct rb_args_info *args;
- struct rb_ary_pattern_info *apinfo;
- struct rb_fnd_pattern_info *fpinfo;
- VALUE value;
- } u3;
- rb_code_location_t nd_loc;
- int node_id;
-} NODE;
-VALUE rb_node_case_when_optimizable_literal(const NODE *const node);
-typedef struct node_buffer_struct node_buffer_t;
-typedef struct rb_ast_body_struct {
- const NODE *root;
- VALUE compile_option;
- VALUE script_lines;
-} rb_ast_body_t;
-typedef struct rb_ast_struct {
- VALUE flags;
- node_buffer_t *node_buffer;
- rb_ast_body_t body;
-} rb_ast_t;
-rb_ast_t *rb_ast_new(void);
-void rb_ast_mark(rb_ast_t*);
-void rb_ast_update_references(rb_ast_t*);
-void rb_ast_dispose(rb_ast_t*);
-void rb_ast_free(rb_ast_t*);
-size_t rb_ast_memsize(const rb_ast_t*);
-void rb_ast_add_mark_object(rb_ast_t*, VALUE);
-void rb_ast_set_tokens(rb_ast_t*, VALUE);
-VALUE rb_ast_tokens(rb_ast_t *ast);
-NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
-void rb_ast_delete_node(rb_ast_t*, NODE *n);
-rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int);
-rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int);
-VALUE rb_parser_new(void);
-VALUE rb_parser_end_seen_p(VALUE);
-VALUE rb_parser_encoding(VALUE);
-VALUE rb_parser_set_yydebug(VALUE, VALUE);
-VALUE rb_parser_dump_tree(const NODE *node, int comment);
-void rb_parser_set_options(VALUE, int, int, int, int);
-rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
-rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
-rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
-rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
-void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
-const char *ruby_node_name(int node);
-const struct kwtable *rb_reserved_word(const char *, unsigned int);
-struct rb_args_info {
- NODE *pre_init;
- NODE *post_init;
- int pre_args_num;
- int post_args_num;
- ID first_post_arg;
- ID rest_arg;
- ID block_arg;
- NODE *kw_args;
- NODE *kw_rest_arg;
- NODE *opt_args;
- unsigned int no_kwarg: 1;
- unsigned int ruby2_keywords: 1;
- unsigned int forwarding: 1;
- VALUE imemo;
-};
-struct rb_ary_pattern_info {
- NODE *pre_args;
- NODE *rest_arg;
- NODE *post_args;
-};
-struct rb_fnd_pattern_info {
- NODE *pre_rest_arg;
- NODE *args;
- NODE *post_rest_arg;
-};
-struct parser_params;
-void *rb_parser_malloc(struct parser_params *, size_t);
-void *rb_parser_realloc(struct parser_params *, void *, size_t);
-void *rb_parser_calloc(struct parser_params *, size_t, size_t);
-void rb_parser_free(struct parser_params *, void *);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_parser_printf(struct parser_params *parser, const char *fmt, ...);
-void rb_ast_node_type_change(NODE *n, enum node_type type);
-static inline VALUE
-rb_node_set_type(NODE *n, enum node_type t)
-{
- return (n)->flags=(((n)->flags&~(((VALUE)0x7f)<<8))|((((unsigned long)(t))<<8)&(((VALUE)0x7f)<<8)));
-}
-static inline _Bool
-nd_type_p(const NODE *n, enum node_type t)
-{
- return (enum node_type)((int) (((n)->flags & (((VALUE)0x7f)<<8))>>8)) == t;
-}
-
-typedef unsigned int rb_atomic_t;
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_fetch_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_fetch_add(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_add_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_add(volatile size_t *ptr, size_t val)
-{
- __atomic_add_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_inc(volatile rb_atomic_t *ptr)
-{
- rbimpl_atomic_add(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_inc(volatile size_t *ptr)
-{
- rbimpl_atomic_size_add(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_fetch_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_fetch_sub(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_sub_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val)
-{
- __atomic_sub_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_dec(volatile rb_atomic_t *ptr)
-{
- rbimpl_atomic_sub(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_size_dec(volatile size_t *ptr)
-{
- rbimpl_atomic_size_sub(ptr, 1);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_or(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_or_fetch(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_exchange(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- return __atomic_exchange_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline size_t
-rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val)
-{
- return __atomic_exchange_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void *
-rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t sval = ((size_t)val);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
- return ((void *)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t sval = ((size_t)val);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
- return ((VALUE)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void
-rbimpl_atomic_set(volatile rb_atomic_t *ptr, rb_atomic_t val)
-{
- __atomic_store_n(ptr, val, 5);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline rb_atomic_t
-rbimpl_atomic_cas(volatile rb_atomic_t *ptr, rb_atomic_t oldval, rb_atomic_t newval)
-{
- __atomic_compare_exchange_n(
- ptr, &oldval, newval, 0, 5, 5);
- return oldval;
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline size_t
-rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval)
-{
- __atomic_compare_exchange_n(
- ptr, &oldval, newval, 0, 5, 5);
- return oldval;
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline void *
-rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t snew = ((size_t)newval);
- const size_t sold = ((size_t)oldval);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
- return ((void *)sret);
-}
-__attribute__((__artificial__))
-__declspec(noalias)
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-rbimpl_atomic_value_cas(volatile VALUE *ptr, VALUE oldval, VALUE newval)
-{
- __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
- const size_t snew = ((size_t)newval);
- const size_t sold = ((size_t)oldval);
- volatile size_t *const sptr = ((volatile size_t *)ptr);
- const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
- return ((VALUE)sret);
-}
-
-
-typedef uint32_t attr_index_t;
-typedef uint32_t shape_id_t;
-struct rb_shape {
- struct rb_id_table * edges;
- ID edge_name;
- attr_index_t next_iv_index;
- uint32_t capacity;
- uint8_t type;
- uint8_t size_pool_index;
- shape_id_t parent_id;
-};
-typedef struct rb_shape rb_shape_t;
-enum shape_type {
- SHAPE_ROOT,
- SHAPE_IVAR,
- SHAPE_FROZEN,
- SHAPE_CAPACITY_CHANGE,
- SHAPE_INITIAL_CAPACITY,
- SHAPE_T_OBJECT,
- SHAPE_OBJ_TOO_COMPLEX,
-};
-static inline shape_id_t
-RBASIC_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return (shape_id_t)((((uintptr_t)1 << 32) - 1) & ((((struct RBasic *)(obj))->flags) >> ((8 * 8) - 32)));
-}
-static inline void
-RBASIC_SET_SHAPE_ID(VALUE obj, shape_id_t shape_id)
-{
- ((struct RBasic *)(obj))->flags &= (((VALUE)-1) >> 32);
- ((struct RBasic *)(obj))->flags |= ((VALUE)(shape_id) << ((8 * 8) - 32));
-}
-static inline shape_id_t
-ROBJECT_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return RBASIC_SHAPE_ID(obj);
-}
-static inline void
-ROBJECT_SET_SHAPE_ID(VALUE obj, shape_id_t shape_id)
-{
- ((void)0);
- RBASIC_SET_SHAPE_ID(obj, shape_id);
-}
-static inline shape_id_t
-RCLASS_SHAPE_ID(VALUE obj)
-{
- ((void)0);
- return RBASIC_SHAPE_ID(obj);
-}
-_Bool rb_shape_root_shape_p(rb_shape_t* shape);
-rb_shape_t * rb_shape_get_root_shape(void);
-uint8_t rb_shape_id_num_bits(void);
-int32_t rb_shape_id_offset(void);
-rb_shape_t* rb_shape_get_shape_by_id_without_assertion(shape_id_t shape_id);
-rb_shape_t * rb_shape_get_parent(rb_shape_t * shape);
-rb_shape_t* rb_shape_get_shape_by_id(shape_id_t shape_id);
-shape_id_t rb_shape_get_shape_id(VALUE obj);
-rb_shape_t * rb_shape_get_next_iv_shape(rb_shape_t * shape, ID id);
-_Bool rb_shape_get_iv_index(rb_shape_t * shape, ID id, attr_index_t * value);
-_Bool rb_shape_obj_too_complex(VALUE obj);
-void rb_shape_set_shape(VALUE obj, rb_shape_t* shape);
-rb_shape_t* rb_shape_get_shape(VALUE obj);
-int rb_shape_frozen_shape_p(rb_shape_t* shape);
-void rb_shape_transition_shape_frozen(VALUE obj);
-void rb_shape_transition_shape_remove_ivar(VALUE obj, ID id, rb_shape_t *shape, VALUE * removed);
-rb_shape_t * rb_shape_transition_shape_capa(rb_shape_t * shape, uint32_t new_capacity);
-rb_shape_t* rb_shape_get_next(rb_shape_t* shape, VALUE obj, ID id);
-rb_shape_t * rb_shape_rebuild_shape(rb_shape_t * initial_shape, rb_shape_t * dest_shape);
-static inline uint32_t
-ROBJECT_IV_CAPACITY(VALUE obj)
-{
- ((void)0);
- ((void)0);
- return rb_shape_get_shape_by_id(ROBJECT_SHAPE_ID(obj))->capacity;
-}
-static inline struct rb_id_table *
-ROBJECT_IV_HASH(VALUE obj)
-{
- ((void)0);
- ((void)0);
- return (struct rb_id_table *)((struct RObject *)(obj))->as.heap.ivptr;
-}
-static inline void
-ROBJECT_SET_IV_HASH(VALUE obj, const struct rb_id_table *tbl)
-{
- ((void)0);
- ((void)0);
- ((struct RObject *)(obj))->as.heap.ivptr = (VALUE *)tbl;
-}
-size_t rb_id_table_size(const struct rb_id_table *tbl);
-static inline uint32_t
-ROBJECT_IV_COUNT(VALUE obj)
-{
- if (ROBJECT_SHAPE_ID(obj) == ((5 * 2) + 1)) {
- return (uint32_t)rb_id_table_size(ROBJECT_IV_HASH(obj));
- }
- else {
- ((void)0);
- ((void)0);
- return rb_shape_get_shape_by_id(ROBJECT_SHAPE_ID(obj))->next_iv_index;
- }
-}
-static inline uint32_t
-RBASIC_IV_COUNT(VALUE obj)
-{
- return rb_shape_get_shape_by_id(rb_shape_get_shape_id(obj))->next_iv_index;
-}
-static inline uint32_t
-RCLASS_IV_COUNT(VALUE obj)
-{
- ((void)0);
- uint32_t ivc = rb_shape_get_shape_by_id(RCLASS_SHAPE_ID(obj))->next_iv_index;
- return ivc;
-}
-rb_shape_t * rb_shape_alloc(ID edge_name, rb_shape_t * parent);
-rb_shape_t * rb_shape_alloc_with_size_pool_index(ID edge_name, rb_shape_t * parent, uint8_t size_pool_index);
-rb_shape_t * rb_shape_alloc_with_parent_id(ID edge_name, shape_id_t parent_id);
-rb_shape_t *rb_shape_traverse_from_new_root(rb_shape_t *initial_shape, rb_shape_t *orig_shape);
-_Bool rb_shape_set_shape_id(VALUE obj, shape_id_t shape_id);
-VALUE rb_obj_debug_shape(VALUE self, VALUE obj);
-VALUE rb_shape_flags_mask(void);
-void rb_shape_set_too_complex(VALUE obj);
-typedef void each_shape_callback(rb_shape_t * shape, void *data);
-void rb_shape_each_shape(each_shape_callback callback, void *data);
-size_t rb_shape_memsize(rb_shape_t *shape);
-size_t rb_shape_edges_count(rb_shape_t *shape);
-size_t rb_shape_depth(rb_shape_t *shape);
-shape_id_t rb_shape_id(rb_shape_t * shape);
-
-
-struct sched_param { int sched_priority; char __opaque[4]; };
-extern int sched_yield(void);
-extern int sched_get_priority_min(int);
-extern int sched_get_priority_max(int);
-enum { QOS_CLASS_USER_INTERACTIVE __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x21, QOS_CLASS_USER_INITIATED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x19, QOS_CLASS_DEFAULT __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x15, QOS_CLASS_UTILITY __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x11, QOS_CLASS_BACKGROUND __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x09, QOS_CLASS_UNSPECIFIED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x00, }; typedef unsigned int qos_class_t;
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-qos_class_t
-qos_class_self(void);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-qos_class_t
-qos_class_main(void);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_attr_set_qos_class_np(pthread_attr_t *__attr,
- qos_class_t __qos_class, int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_attr_get_qos_class_np(pthread_attr_t * __restrict__ __attr,
- qos_class_t * _Nullable __restrict__ __qos_class,
- int * _Nullable __restrict__ __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_set_qos_class_self_np(qos_class_t __qos_class,
- int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_get_qos_class_np(pthread_t __pthread,
- qos_class_t * _Nullable __restrict__ __qos_class,
- int * _Nullable __restrict__ __relative_priority);
-typedef struct pthread_override_s* pthread_override_t;
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-pthread_override_t
-pthread_override_qos_class_start_np(pthread_t __pthread,
- qos_class_t __qos_class, int __relative_priority);
-__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0)))
-int
-pthread_override_qos_class_end_np(pthread_override_t __override);
-typedef __darwin_mach_port_t mach_port_t;
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_atfork(void (* _Nullable)(void), void (* _Nullable)(void),
- void (* _Nullable)(void));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_destroy(pthread_attr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getguardsize(const pthread_attr_t * __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getinheritsched(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getschedparam(const pthread_attr_t * __restrict__,
- struct sched_param * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getschedpolicy(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getscope(const pthread_attr_t * __restrict__, int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstack(const pthread_attr_t * __restrict__,
- void * _Nullable * _Nonnull __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstackaddr(const pthread_attr_t * __restrict__,
- void * _Nullable * _Nonnull __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_getstacksize(const pthread_attr_t * __restrict__, size_t * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_init(pthread_attr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setdetachstate(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setguardsize(pthread_attr_t *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setinheritsched(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setschedparam(pthread_attr_t * __restrict__,
- const struct sched_param * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setschedpolicy(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setscope(pthread_attr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstackaddr(pthread_attr_t *, void *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_attr_setstacksize(pthread_attr_t *, size_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cancel(pthread_t) __asm("_" "pthread_cancel" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_broadcast(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_destroy(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_init(
- pthread_cond_t * __restrict__,
- const pthread_condattr_t * _Nullable __restrict__)
- __asm("_" "pthread_cond_init" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_signal(pthread_cond_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_timedwait(
- pthread_cond_t * __restrict__, pthread_mutex_t * __restrict__,
- const struct timespec * _Nullable __restrict__)
- __asm("_" "pthread_cond_timedwait" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_wait(pthread_cond_t * __restrict__,
- pthread_mutex_t * __restrict__) __asm("_" "pthread_cond_wait" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_destroy(pthread_condattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_init(pthread_condattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_getpshared(const pthread_condattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_condattr_setpshared(pthread_condattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_create(pthread_t _Nullable * _Nonnull __restrict__,
- const pthread_attr_t * _Nullable __restrict__,
- void * _Nullable (* _Nonnull)(void * _Nullable),
- void * _Nullable __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_detach(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_equal(pthread_t _Nullable, pthread_t _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Thread lifecycle is owned by Swift Concurrency runtime" "\")")))
-void pthread_exit(void * _Nullable) __attribute__((__noreturn__));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_getconcurrency(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_getschedparam(pthread_t , int * _Nullable __restrict__,
- struct sched_param * _Nullable __restrict__);
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task Local Values instead" "\")")))
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-void* _Nullable pthread_getspecific(pthread_key_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_join(pthread_t , void * _Nullable * _Nullable)
- __asm("_" "pthread_join" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_key_create(pthread_key_t *, void (* _Nullable)(void *));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_key_delete(pthread_key_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_destroy(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_getprioceiling(const pthread_mutex_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_init(pthread_mutex_t * __restrict__,
- const pthread_mutexattr_t * _Nullable __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLock or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_lock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutex_setprioceiling(pthread_mutex_t * __restrict__, int,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLockIfAvailable or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_trylock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use OSAllocatedUnfairLock's withLock or NSLock for async-safe scoped locking" "\")")))
-int pthread_mutex_unlock(pthread_mutex_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_destroy(pthread_mutexattr_t *) __asm("_" "pthread_mutexattr_destroy" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getprotocol(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_getpshared(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_gettype(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(watchos,introduced=4.3))) __attribute__((availability(tvos,introduced=11.3)))
-int pthread_mutexattr_getpolicy_np(const pthread_mutexattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_init(pthread_mutexattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
-__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0)))
-int pthread_mutexattr_setpolicy_np(pthread_mutexattr_t *, int);
-__attribute__((availability(swift,unavailable,message="Use lazily initialized globals instead")))
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_once(pthread_once_t *, void (* _Nonnull)(void));
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlock_destroy(pthread_rwlock_t * ) __asm("_" "pthread_rwlock_destroy" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlock_init(pthread_rwlock_t * __restrict__,
- const pthread_rwlockattr_t * _Nullable __restrict__)
- __asm("_" "pthread_rwlock_init" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_rdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_rdlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_tryrdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_tryrdlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_trywrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_trywrlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_wrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_wrlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use async-safe scoped locking instead" "\")")))
-int pthread_rwlock_unlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_unlock" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * __restrict__,
- int * __restrict__);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_init(pthread_rwlockattr_t *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-pthread_t pthread_self(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-int pthread_setcancelstate(int , int * _Nullable)
- __asm("_" "pthread_setcancelstate" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-int pthread_setcanceltype(int , int * _Nullable)
- __asm("_" "pthread_setcanceltype" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_setconcurrency(int);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_setschedparam(pthread_t, int, const struct sched_param *);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task Local Values instead" "\")")))
-int pthread_setspecific(pthread_key_t , const void * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task cancellation instead" "\")")))
-void pthread_testcancel(void) __asm("_" "pthread_testcancel" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_is_threaded_np(void);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-int pthread_threadid_np(pthread_t _Nullable,__uint64_t* _Nullable);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-int pthread_getname_np(pthread_t,char*,size_t);
-__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Thread lifecycle is owned by Swift Concurrency runtime" "\")")))
-int pthread_setname_np(const char*);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_main_np(void);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-mach_port_t pthread_mach_thread_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-size_t pthread_get_stacksize_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-void* pthread_get_stackaddr_np(pthread_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_cond_signal_thread_np(pthread_cond_t *, pthread_t _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use an asynchronous wait instead of a synchronous wait" "\")")))
-int pthread_cond_timedwait_relative_np(pthread_cond_t *, pthread_mutex_t *,
- const struct timespec * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_create_suspended_np(
- pthread_t _Nullable * _Nonnull, const pthread_attr_t * _Nullable,
- void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_kill(pthread_t, int);
-__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0)))
-_Nullable pthread_t pthread_from_mach_thread_np(mach_port_t);
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-int pthread_sigmask(int, const sigset_t * _Nullable, sigset_t * _Nullable)
- __asm("_" "pthread_sigmask" );
-__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0)))
-__attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" "Use Task.yield(), or await a condition instead of spinning" "\")")))
-void pthread_yield_np(void);
-__attribute__((availability(macos,introduced=11.0)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-void pthread_jit_write_protect_np(int enabled);
-__attribute__((availability(macos,introduced=11.0)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-int pthread_jit_write_protect_supported_np(void);
-typedef int (*pthread_jit_write_callback_t)(void * _Nullable ctx);
-__attribute__((availability(macos,introduced=11.4)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-__attribute__((availability(swift,unavailable,message="This interface cannot be safely used from Swift")))
-int pthread_jit_write_with_callback_np(
- pthread_jit_write_callback_t _Nonnull callback, void * _Nullable ctx);
-__attribute__((availability(macos,introduced=12.1)))
-__attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(driverkit,unavailable)))
-void pthread_jit_write_freeze_callbacks_np(void);
-__attribute__((availability(macos,introduced=11.0))) __attribute__((availability(ios,introduced=14.2))) __attribute__((availability(tvos,introduced=14.2))) __attribute__((availability(watchos,introduced=7.1)))
-int
-pthread_cpu_number_np(size_t *cpu_number_out);
-typedef pthread_t rb_nativethread_id_t;
-typedef pthread_mutex_t rb_nativethread_lock_t;
-typedef pthread_cond_t rb_nativethread_cond_t;
-rb_nativethread_id_t rb_nativethread_self(void);
-void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
-void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_lock(rb_nativethread_lock_t *lock);
-int rb_native_mutex_trylock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_unlock(rb_nativethread_lock_t *lock);
-void rb_native_mutex_initialize(rb_nativethread_lock_t *lock);
-void rb_native_mutex_destroy(rb_nativethread_lock_t *lock);
-void rb_native_cond_signal(rb_nativethread_cond_t *cond);
-void rb_native_cond_broadcast(rb_nativethread_cond_t *cond);
-void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex);
-void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec);
-void rb_native_cond_initialize(rb_nativethread_cond_t *cond);
-void rb_native_cond_destroy(rb_nativethread_cond_t *cond);
-void *rb_allocate_sigaltstack(void);
-void *rb_register_sigaltstack(void *);
-
-struct rb_thread_sched_item {
- union {
- struct ccan_list_node ubf;
- struct ccan_list_node readyq;
- } node;
-};
-struct rb_native_thread {
- int id;
- rb_nativethread_id_t thread_id;
- struct rb_thread_struct *running_thread;
- struct
- {
- rb_nativethread_cond_t intr;
- rb_nativethread_cond_t readyq;
- } cond;
- void *altstack;
-};
-struct rb_thread_sched {
- const struct rb_thread_struct *running;
- rb_nativethread_lock_t lock;
- struct ccan_list_head readyq;
- const struct rb_thread_struct *timer;
- int timer_err;
- rb_nativethread_cond_t switch_cond;
- rb_nativethread_cond_t switch_wait_cond;
- int need_yield;
- int wait_yield;
-};
-struct rb_execution_context_struct *rb_current_ec(void);
-void rb_current_ec_set(struct rb_execution_context_struct *);
-void rb_vm_encoded_insn_data_table_init(void);
-typedef unsigned long rb_num_t;
-typedef signed long rb_snum_t;
-enum ruby_tag_type {
- RUBY_TAG_NONE = 0x0,
- RUBY_TAG_RETURN = 0x1,
- RUBY_TAG_BREAK = 0x2,
- RUBY_TAG_NEXT = 0x3,
- RUBY_TAG_RETRY = 0x4,
- RUBY_TAG_REDO = 0x5,
- RUBY_TAG_RAISE = 0x6,
- RUBY_TAG_THROW = 0x7,
- RUBY_TAG_FATAL = 0x8,
- RUBY_TAG_MASK = 0xf
-};
-enum ruby_vm_throw_flags {
- VM_THROW_NO_ESCAPE_FLAG = 0x8000,
- VM_THROW_STATE_MASK = 0xff
-};
-struct rb_thread_struct;
-struct rb_control_frame_struct;
-typedef struct rb_compile_option_struct rb_compile_option_t;
-union ic_serial_entry {
- rb_serial_t raw;
- VALUE data[2];
-};
-struct iseq_inline_constant_cache_entry {
- VALUE flags;
- VALUE value;
- VALUE _unused1;
- VALUE _unused2;
- const rb_cref_t *ic_cref;
-};
-__extension__ _Static_assert((__builtin_offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= (sizeof(struct RBasic) + sizeof(VALUE[3])), "sizeof_iseq_inline_constant_cache_entry" ": " "(offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= RVALUE_SIZE");
-struct iseq_inline_constant_cache {
- struct iseq_inline_constant_cache_entry *entry;
- const ID *segments;
-};
-struct iseq_inline_iv_cache_entry {
- uintptr_t value;
- ID iv_set_name;
-};
-struct iseq_inline_cvar_cache_entry {
- struct rb_cvar_class_tbl_entry *entry;
-};
-union iseq_inline_storage_entry {
- struct {
- struct rb_thread_struct *running_thread;
- VALUE value;
- } once;
- struct iseq_inline_constant_cache ic_cache;
- struct iseq_inline_iv_cache_entry iv_cache;
-};
-struct rb_calling_info {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
- VALUE block_handler;
- VALUE recv;
- int argc;
- int kw_splat;
-};
-struct rb_execution_context_struct;
-typedef struct rb_iseq_location_struct {
- VALUE pathobj;
- VALUE base_label;
- VALUE label;
- int first_lineno;
- int node_id;
- rb_code_location_t code_location;
-} rb_iseq_location_t;
-static inline VALUE
-pathobj_path(VALUE pathobj)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) {
- return pathobj;
- }
- else {
- ((void)0);
- return RARRAY_AREF(pathobj, 0);
- }
-}
-static inline VALUE
-pathobj_realpath(VALUE pathobj)
-{
- if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((pathobj), (RUBY_T_STRING)) : (RB_TYPE_P)((pathobj), (RUBY_T_STRING)))) {
- return pathobj;
- }
- else {
- ((void)0);
- return RARRAY_AREF(pathobj, 1);
- }
-}
-struct rb_mjit_unit;
-typedef uintptr_t iseq_bits_t;
-enum rb_iseq_type {
- ISEQ_TYPE_TOP,
- ISEQ_TYPE_METHOD,
- ISEQ_TYPE_BLOCK,
- ISEQ_TYPE_CLASS,
- ISEQ_TYPE_RESCUE,
- ISEQ_TYPE_ENSURE,
- ISEQ_TYPE_EVAL,
- ISEQ_TYPE_MAIN,
- ISEQ_TYPE_PLAIN
-};
-struct rb_iseq_constant_body {
- enum rb_iseq_type type;
- unsigned int iseq_size;
- VALUE *iseq_encoded;
- struct {
- struct {
- unsigned int has_lead : 1;
- unsigned int has_opt : 1;
- unsigned int has_rest : 1;
- unsigned int has_post : 1;
- unsigned int has_kw : 1;
- unsigned int has_kwrest : 1;
- unsigned int has_block : 1;
- unsigned int ambiguous_param0 : 1;
- unsigned int accepts_no_kwarg : 1;
- unsigned int ruby2_keywords: 1;
- } flags;
- unsigned int size;
- int lead_num;
- int opt_num;
- int rest_start;
- int post_start;
- int post_num;
- int block_start;
- const VALUE *opt_table;
- const struct rb_iseq_param_keyword {
- int num;
- int required_num;
- int bits_start;
- int rest_start;
- const ID *table;
- VALUE *default_values;
- } *keyword;
- } param;
- rb_iseq_location_t location;
- struct iseq_insn_info {
- const struct iseq_insn_info_entry *body;
- unsigned int *positions;
- unsigned int size;
- struct succ_index_table *succ_index_table;
- } insns_info;
- const ID *local_table;
- struct iseq_catch_table *catch_table;
- const struct rb_iseq_struct *parent_iseq;
- struct rb_iseq_struct *local_iseq;
- union iseq_inline_storage_entry *is_entries;
- struct rb_call_data *call_data;
- struct {
- rb_snum_t flip_count;
- VALUE script_lines;
- VALUE coverage;
- VALUE pc2branchindex;
- VALUE *original_iseq;
- } variable;
- unsigned int local_table_size;
- unsigned int ic_size;
- unsigned int ise_size;
- unsigned int ivc_size;
- unsigned int icvarc_size;
- unsigned int ci_size;
- unsigned int stack_max;
- _Bool catch_except_p;
- _Bool builtin_inline_p;
- union {
- iseq_bits_t * list;
- iseq_bits_t single;
- } mark_bits;
- struct rb_id_table *outer_variables;
- const rb_iseq_t *mandatory_only_iseq;
- VALUE (*jit_func)(struct rb_execution_context_struct *, struct rb_control_frame_struct *);
- long unsigned total_calls;
- struct rb_mjit_unit *mjit_unit;
-};
-struct rb_iseq_struct {
- VALUE flags;
- VALUE wrapper;
- struct rb_iseq_constant_body *body;
- union {
- struct iseq_compile_data *compile_data;
- struct {
- VALUE obj;
- int index;
- } loader;
- struct {
- struct rb_hook_list_struct *local_hooks;
- rb_event_flag_t global_trace_events;
- } exec;
- } aux;
-};
-static inline const rb_iseq_t *
-rb_iseq_check(const rb_iseq_t *iseq)
-{
- return iseq;
-}
-static inline const rb_iseq_t *
-def_iseq_ptr(rb_method_definition_t *def)
-{
- return rb_iseq_check(def->body.iseq.iseqptr);
-}
-enum ruby_special_exceptions {
- ruby_error_reenter,
- ruby_error_nomemory,
- ruby_error_sysstack,
- ruby_error_stackfatal,
- ruby_error_stream_closed,
- ruby_special_error_count
-};
-struct rb_vm_struct;
-typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
-typedef struct rb_at_exit_list {
- rb_vm_at_exit_func *func;
- struct rb_at_exit_list *next;
-} rb_at_exit_list;
-struct rb_objspace;
-struct rb_objspace *rb_objspace_alloc(void);
-void rb_objspace_free(struct rb_objspace *);
-void rb_objspace_call_finalizer(struct rb_objspace *);
-typedef struct rb_hook_list_struct {
- struct rb_event_hook_struct *hooks;
- rb_event_flag_t events;
- unsigned int running;
- _Bool need_clean;
- _Bool is_local;
-} rb_hook_list_t;
-typedef const struct rb_builtin_function *RB_BUILTIN;
-typedef struct rb_vm_struct {
- VALUE self;
- struct {
- struct ccan_list_head set;
- unsigned int cnt;
- unsigned int blocking_cnt;
- struct rb_ractor_struct *main_ractor;
- struct rb_thread_struct *main_thread;
- struct {
- rb_nativethread_lock_t lock;
- struct rb_ractor_struct *lock_owner;
- unsigned int lock_rec;
- _Bool barrier_waiting;
- unsigned int barrier_cnt;
- rb_nativethread_cond_t barrier_cond;
- rb_nativethread_cond_t terminate_cond;
- _Bool terminate_waiting;
- } sync;
- } ractor;
- void *main_altstack;
- rb_serial_t fork_gen;
- rb_nativethread_lock_t waitpid_lock;
- struct ccan_list_head waiting_pids;
- struct ccan_list_head waiting_grps;
- struct ccan_list_head waiting_fds;
- volatile int ubf_async_safe;
- unsigned int running: 1;
- unsigned int thread_abort_on_exception: 1;
- unsigned int thread_report_on_exception: 1;
- unsigned int thread_ignore_deadlock: 1;
- VALUE mark_object_ary;
- const VALUE special_exceptions[ruby_special_error_count];
- rb_shape_t *shape_list;
- rb_shape_t *root_shape;
- shape_id_t next_shape_id;
- VALUE top_self;
- VALUE load_path;
- VALUE load_path_snapshot;
- VALUE load_path_check_cache;
- VALUE expanded_load_path;
- VALUE loaded_features;
- VALUE loaded_features_snapshot;
- VALUE loaded_features_realpaths;
- VALUE loaded_features_realpath_map;
- struct st_table *loaded_features_index;
- struct st_table *loading_table;
- struct st_table *static_ext_inits;
- struct {
- VALUE cmd[32];
- } trap_list;
- struct st_table *ensure_rollback_table;
- struct rb_postponed_job_struct *postponed_job_buffer;
- rb_atomic_t postponed_job_index;
- int src_encoding_index;
- struct ccan_list_head workqueue;
- rb_nativethread_lock_t workqueue_lock;
- VALUE orig_progname, progname;
- VALUE coverages, me2counter;
- int coverage_mode;
- st_table * defined_module_hash;
- struct rb_objspace *objspace;
- rb_at_exit_list *at_exit;
- st_table *frozen_strings;
- const struct rb_builtin_function *builtin_function_table;
- int builtin_inline_index;
- struct rb_id_table *negative_cme_table;
- st_table *overloaded_cme_table;
- struct rb_id_table *constant_cache;
- const struct rb_callcache *global_cc_cache_table[1023];
- struct {
- size_t thread_vm_stack_size;
- size_t thread_machine_stack_size;
- size_t fiber_vm_stack_size;
- size_t fiber_machine_stack_size;
- } default_params;
-} rb_vm_t;
-struct rb_captured_block {
- VALUE self;
- const VALUE *ep;
- union {
- const rb_iseq_t *iseq;
- const struct vm_ifunc *ifunc;
- VALUE val;
- } code;
-};
-enum rb_block_handler_type {
- block_handler_type_iseq,
- block_handler_type_ifunc,
- block_handler_type_symbol,
- block_handler_type_proc
-};
-enum rb_block_type {
- block_type_iseq,
- block_type_ifunc,
- block_type_symbol,
- block_type_proc
-};
-struct rb_block {
- union {
- struct rb_captured_block captured;
- VALUE symbol;
- VALUE proc;
- } as;
- enum rb_block_type type;
-};
-typedef struct rb_control_frame_struct {
- const VALUE *pc;
- VALUE *sp;
- const rb_iseq_t *iseq;
- VALUE self;
- const VALUE *ep;
- const void *block_code;
- VALUE *__bp__;
- void *jit_return;
-} rb_control_frame_t;
-extern const rb_data_type_t ruby_threadptr_data_type;
-static inline struct rb_thread_struct *
-rb_thread_ptr(VALUE thval)
-{
- return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type);
-}
-enum rb_thread_status {
- THREAD_RUNNABLE,
- THREAD_STOPPED,
- THREAD_STOPPED_FOREVER,
- THREAD_KILLED
-};
-typedef sigjmp_buf rb_jmpbuf_t;
-struct rb_vm_tag {
- VALUE tag;
- VALUE retval;
- rb_jmpbuf_t buf;
- struct rb_vm_tag *prev;
- enum ruby_tag_type state;
- unsigned int lock_rec;
-};
-__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
-__extension__ _Static_assert(__builtin_offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)");
-struct rb_unblock_callback {
- rb_unblock_function_t *func;
- void *arg;
-};
-struct rb_mutex_struct;
-typedef struct rb_ensure_entry {
- VALUE marker;
- VALUE (*e_proc)(VALUE);
- VALUE data2;
-} rb_ensure_entry_t;
-typedef struct rb_ensure_list {
- struct rb_ensure_list *next;
- struct rb_ensure_entry entry;
-} rb_ensure_list_t;
-typedef struct rb_fiber_struct rb_fiber_t;
-struct rb_waiting_list {
- struct rb_waiting_list *next;
- struct rb_thread_struct *thread;
- struct rb_fiber_struct *fiber;
-};
-struct rb_execution_context_struct {
- VALUE *vm_stack;
- size_t vm_stack_size;
- rb_control_frame_t *cfp;
- struct rb_vm_tag *tag;
- rb_atomic_t interrupt_flag;
- rb_atomic_t interrupt_mask;
- rb_fiber_t *fiber_ptr;
- struct rb_thread_struct *thread_ptr;
- struct rb_id_table *local_storage;
- VALUE local_storage_recursive_hash;
- VALUE local_storage_recursive_hash_for_trace;
- VALUE storage;
- const VALUE *root_lep;
- VALUE root_svar;
- rb_ensure_list_t *ensure_list;
- struct rb_trace_arg_struct *trace_arg;
- VALUE errinfo;
- VALUE passed_block_handler;
- uint8_t raised_flag;
- enum method_missing_reason method_missing_reason : 8;
- VALUE private_const_reference;
- struct {
- VALUE *stack_start;
- VALUE *stack_end;
- size_t stack_maxsize;
- __declspec(align(8)) jmp_buf regs;
- } machine;
-};
-typedef struct rb_execution_context_struct rb_execution_context_t;
-void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
-void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
-void rb_ec_clear_vm_stack(rb_execution_context_t *ec);
-struct rb_ext_config {
- _Bool ractor_safe;
-};
-typedef struct rb_ractor_struct rb_ractor_t;
-struct rb_native_thread;
-typedef struct rb_thread_struct {
- struct ccan_list_node lt_node;
- VALUE self;
- rb_ractor_t *ractor;
- rb_vm_t *vm;
- struct rb_native_thread *nt;
- rb_execution_context_t *ec;
- struct rb_thread_sched_item sched;
- rb_atomic_t serial;
- VALUE last_status;
- struct rb_calling_info *calling;
- VALUE top_self;
- VALUE top_wrapper;
- enum rb_thread_status status : 2;
- unsigned int locking_native_thread : 1;
- unsigned int to_kill : 1;
- unsigned int abort_on_exception: 1;
- unsigned int report_on_exception: 1;
- unsigned int pending_interrupt_queue_checked: 1;
- int8_t priority;
- uint32_t running_time_us;
- void *blocking_region_buffer;
- VALUE thgroup;
- VALUE value;
- VALUE pending_interrupt_queue;
- VALUE pending_interrupt_mask_stack;
- rb_nativethread_lock_t interrupt_lock;
- struct rb_unblock_callback unblock;
- VALUE locking_mutex;
- struct rb_mutex_struct *keeping_mutexes;
- struct rb_waiting_list *join_list;
- union {
- struct {
- VALUE proc;
- VALUE args;
- int kw_splat;
- } proc;
- struct {
- VALUE (*func)(void *);
- void *arg;
- } func;
- } invoke_arg;
- enum thread_invoke_type {
- thread_invoke_type_none = 0,
- thread_invoke_type_proc,
- thread_invoke_type_ractor_proc,
- thread_invoke_type_func
- } invoke_type;
- VALUE stat_insn_usage;
- rb_fiber_t *root_fiber;
- VALUE scheduler;
- unsigned int blocking;
- VALUE name;
- struct rb_ext_config ext_config;
-} rb_thread_t;
-static inline unsigned int
-rb_th_serial(const rb_thread_t *th)
-{
- return (unsigned int)th->serial;
-}
-typedef enum {
- VM_DEFINECLASS_TYPE_CLASS = 0x00,
- VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01,
- VM_DEFINECLASS_TYPE_MODULE = 0x02,
- VM_DEFINECLASS_TYPE_MASK = 0x07
-} rb_vm_defineclass_type_t;
-rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum rb_iseq_type);
-rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent);
-rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent, int opt);
-rb_iseq_t *rb_iseq_new_eval (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, int first_lineno, const rb_iseq_t *parent, int isolated_depth);
-rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, int first_lineno, const rb_iseq_t *parent, int isolated_depth,
- enum rb_iseq_type, const rb_compile_option_t*);
-struct iseq_link_anchor;
-struct rb_iseq_new_with_callback_callback_func {
- VALUE flags;
- VALUE reserved;
- void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
- const void *data;
-};
-static inline struct rb_iseq_new_with_callback_callback_func *
-rb_iseq_new_with_callback_new_callback(
- void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
-{
- VALUE memo = rb_imemo_new(imemo_ifunc, (VALUE)func, (VALUE)ptr, ((VALUE)RUBY_Qundef), ((VALUE)RUBY_Qfalse));
- return (struct rb_iseq_new_with_callback_callback_func *)memo;
-}
-rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func * ifunc,
- VALUE name, VALUE path, VALUE realpath, int first_lineno,
- const rb_iseq_t *parent, enum rb_iseq_type, const rb_compile_option_t*);
-VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
-int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
-attr_index_t rb_estimate_iv_count(VALUE klass, const rb_iseq_t * initialize_iseq);
-VALUE rb_iseq_coverage(const rb_iseq_t *iseq);
-extern VALUE rb_cISeq;
-extern VALUE rb_cRubyVM;
-extern VALUE rb_mRubyVMFrozenCore;
-extern VALUE rb_block_param_proxy;
-typedef struct {
- const struct rb_block block;
- unsigned int is_from_method: 1;
- unsigned int is_lambda: 1;
- unsigned int is_isolated: 1;
-} rb_proc_t;
-VALUE rb_proc_isolate(VALUE self);
-VALUE rb_proc_isolate_bang(VALUE self);
-VALUE rb_proc_ractor_make_shareable(VALUE self);
-typedef struct {
- VALUE flags;
- rb_iseq_t *iseq;
- const VALUE *ep;
- const VALUE *env;
- unsigned int env_size;
-} rb_env_t;
-extern const rb_data_type_t ruby_binding_data_type;
-typedef struct {
- const struct rb_block block;
- const VALUE pathobj;
- int first_lineno;
-} rb_binding_t;
-enum vm_check_match_type {
- VM_CHECKMATCH_TYPE_WHEN = 1,
- VM_CHECKMATCH_TYPE_CASE = 2,
- VM_CHECKMATCH_TYPE_RESCUE = 3
-};
-enum vm_special_object_type {
- VM_SPECIAL_OBJECT_VMCORE = 1,
- VM_SPECIAL_OBJECT_CBASE,
- VM_SPECIAL_OBJECT_CONST_BASE
-};
-enum vm_svar_index {
- VM_SVAR_LASTLINE = 0,
- VM_SVAR_BACKREF = 1,
- VM_SVAR_EXTRA_START = 2,
- VM_SVAR_FLIPFLOP_START = 2
-};
-typedef struct iseq_inline_constant_cache *IC;
-typedef struct iseq_inline_iv_cache_entry *IVC;
-typedef struct iseq_inline_cvar_cache_entry *ICVARC;
-typedef union iseq_inline_storage_entry *ISE;
-typedef const struct rb_callinfo *CALL_INFO;
-typedef const struct rb_callcache *CALL_CACHE;
-typedef struct rb_call_data *CALL_DATA;
-typedef VALUE CDHASH;
-typedef rb_control_frame_t *
- (*rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *);
-enum vm_frame_env_flags {
- VM_FRAME_MAGIC_METHOD = 0x11110001,
- VM_FRAME_MAGIC_BLOCK = 0x22220001,
- VM_FRAME_MAGIC_CLASS = 0x33330001,
- VM_FRAME_MAGIC_TOP = 0x44440001,
- VM_FRAME_MAGIC_CFUNC = 0x55550001,
- VM_FRAME_MAGIC_IFUNC = 0x66660001,
- VM_FRAME_MAGIC_EVAL = 0x77770001,
- VM_FRAME_MAGIC_RESCUE = 0x78880001,
- VM_FRAME_MAGIC_DUMMY = 0x79990001,
- VM_FRAME_MAGIC_MASK = 0x7fff0001,
- VM_FRAME_FLAG_FINISH = 0x0020,
- VM_FRAME_FLAG_BMETHOD = 0x0040,
- VM_FRAME_FLAG_CFRAME = 0x0080,
- VM_FRAME_FLAG_LAMBDA = 0x0100,
- VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
- VM_FRAME_FLAG_CFRAME_KW = 0x0400,
- VM_FRAME_FLAG_PASSED = 0x0800,
- VM_ENV_FLAG_LOCAL = 0x0002,
- VM_ENV_FLAG_ESCAPED = 0x0004,
- VM_ENV_FLAG_WB_REQUIRED = 0x0008,
- VM_ENV_FLAG_ISOLATED = 0x0010,
-};
-static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
-static inline void
-VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
-}
-static inline void
-VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
-}
-static inline unsigned long
-VM_ENV_FLAGS(const VALUE *ep, long flag)
-{
- VALUE flags = ep[( 0)];
- ((void)0);
- return flags & flag;
-}
-static inline unsigned long
-VM_FRAME_TYPE(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
-}
-static inline int
-VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
-}
-static inline int
-VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
-}
-static inline int
-VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
-}
-static inline int
-VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
-{
- return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
-}
-static inline int
-rb_obj_is_iseq(VALUE iseq)
-{
- return imemo_type_p(iseq, imemo_iseq);
-}
-static inline int
-VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
-{
- int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
- ((void)0);
- return cframe_p;
-}
-static inline int
-VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
-{
- return !VM_FRAME_CFRAME_P(cfp);
-}
-static inline int
-VM_ENV_LOCAL_P(const VALUE *ep)
-{
- return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
-}
-static inline const VALUE *
-VM_ENV_PREV_EP(const VALUE *ep)
-{
- ((void)0);
- return ((void *)(((ep[(-1)])) & ~0x03));
-}
-static inline VALUE
-VM_ENV_BLOCK_HANDLER(const VALUE *ep)
-{
- ((void)0);
- return ep[(-1)];
-}
-static inline int
-VM_ENV_ESCAPED_P(const VALUE *ep)
-{
- ((void)0);
- return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
-}
-__attribute__((__nonnull__ (1)))
-static inline VALUE
-VM_ENV_ENVVAL(const VALUE *ep)
-{
- VALUE envval = ep[( 1)];
- ((void)0);
- ((void)0);
- return envval;
-}
-__attribute__((__nonnull__ (1)))
-static inline const rb_env_t *
-VM_ENV_ENVVAL_PTR(const VALUE *ep)
-{
- return (const rb_env_t *)VM_ENV_ENVVAL(ep);
-}
-static inline const rb_env_t *
-vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
-{
- rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
- env->env_size = env_size;
- env_ep[( 1)] = (VALUE)env;
- return env;
-}
-static inline void
-VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
-{
- *((VALUE *)ptr) = v;
-}
-static inline void
-VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
-{
- ((void)0);
- VM_FORCE_WRITE(ptr, special_const_value);
-}
-static inline void
-VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
-{
- ((void)0);
- VM_FORCE_WRITE(&ep[index], v);
-}static inline
-const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
-const VALUE *rb_vm_proc_local_ep(VALUE proc);static inline
-void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
-void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);static inline
-VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
-static inline const rb_control_frame_t *
-RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
-{
- return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
-}
-static inline int
-RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
-{
- return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
-}
-static inline int
-VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
-{
- if ((block_handler & 0x03) == 0x01) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline VALUE
-VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
-{
- VALUE block_handler = ((VALUE)(captured) | (0x01));
- ((void)0);
- return block_handler;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline int
-VM_BH_IFUNC_P(VALUE block_handler)
-{
- if ((block_handler & 0x03) == 0x03) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline VALUE
-VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
-{
- VALUE block_handler = ((VALUE)(captured) | (0x03));
- ((void)0);
- return block_handler;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline const struct rb_captured_block *
-VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
-{
- struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
- ((void)0);
- return captured;
-}
-static inline enum rb_block_handler_type
-vm_block_handler_type(VALUE block_handler)
-{
- if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
- return block_handler_type_iseq;
- }
- else if (VM_BH_IFUNC_P(block_handler)) {
- return block_handler_type_ifunc;
- }
- else if (RB_SYMBOL_P(block_handler)) {
- return block_handler_type_symbol;
- }
- else {
- ((void)0);
- return block_handler_type_proc;
- }
-}
-static inline void
-vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
-{
- ((void)0);
-}
-static inline int
-vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
-{
- return ((VALUE) cfp->block_code) == block_handler;
-}
-static inline enum rb_block_type
-vm_block_type(const struct rb_block *block)
-{
- return block->type;
-}
-static inline void
-vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
-{
- struct rb_block *mb = (struct rb_block *)block;
- mb->type = type;
-}
-static inline const struct rb_block *
-vm_proc_block(VALUE procval)
-{
- ((void)0);
- return &((rb_proc_t *)(((struct RTypedData *)(procval))->data))->block;
-}
-static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
-static inline const VALUE *vm_block_ep(const struct rb_block *block);
-static inline const rb_iseq_t *
-vm_proc_iseq(VALUE procval)
-{
- return vm_block_iseq(vm_proc_block(procval));
-}
-static inline const VALUE *
-vm_proc_ep(VALUE procval)
-{
- return vm_block_ep(vm_proc_block(procval));
-}
-static inline const rb_iseq_t *
-vm_block_iseq(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
- case block_type_proc: return vm_proc_iseq(block->as.proc);
- case block_type_ifunc:
- case block_type_symbol: return ((void*)0);
- }
- __builtin_unreachable();
- return ((void*)0);
-}
-static inline const VALUE *
-vm_block_ep(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq:
- case block_type_ifunc: return block->as.captured.ep;
- case block_type_proc: return vm_proc_ep(block->as.proc);
- case block_type_symbol: return ((void*)0);
- }
- __builtin_unreachable();
- return ((void*)0);
-}
-static inline VALUE
-vm_block_self(const struct rb_block *block)
-{
- switch (vm_block_type(block)) {
- case block_type_iseq:
- case block_type_ifunc:
- return block->as.captured.self;
- case block_type_proc:
- return vm_block_self(vm_proc_block(block->as.proc));
- case block_type_symbol:
- return ((VALUE)RUBY_Qundef);
- }
- __builtin_unreachable();
- return ((VALUE)RUBY_Qundef);
-}
-static inline VALUE
-VM_BH_TO_SYMBOL(VALUE block_handler)
-{
- ((void)0);
- return block_handler;
-}
-static inline VALUE
-VM_BH_FROM_SYMBOL(VALUE symbol)
-{
- ((void)0);
- return symbol;
-}
-static inline VALUE
-VM_BH_TO_PROC(VALUE block_handler)
-{
- ((void)0);
- return block_handler;
-}
-static inline VALUE
-VM_BH_FROM_PROC(VALUE procval)
-{
- ((void)0);
- return procval;
-}
-VALUE rb_thread_alloc(VALUE klass);
-VALUE rb_binding_alloc(VALUE klass);
-VALUE rb_proc_alloc(VALUE klass);
-VALUE rb_proc_dup(VALUE self);
-extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
-extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp
-);
-void rb_vm_bugreport(const void *);
-typedef void (*ruby_sighandler_t)(int);
-__attribute__((__format__(__printf__, 4, 5)))
-__declspec(noreturn) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
-VALUE rb_iseq_eval(const rb_iseq_t *iseq);
-VALUE rb_iseq_eval_main(const rb_iseq_t *iseq);
-VALUE rb_iseq_path(const rb_iseq_t *iseq);
-VALUE rb_iseq_realpath(const rb_iseq_t *iseq);
-VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
-void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
-int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
-void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
-VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
-VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
-static inline VALUE
-rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
-{
- return rb_vm_make_proc_lambda(ec, captured, klass, 0);
-}
-static inline VALUE
-rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
-{
- return rb_vm_make_proc_lambda(ec, captured, klass, 1);
-}
-VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp);
-VALUE rb_vm_env_local_variables(const rb_env_t *env);
-const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
-const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
-void rb_vm_inc_const_missing_count(void);
-VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
- const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);static inline
-void rb_vm_pop_frame_no_int(rb_execution_context_t *ec);
-static void rb_vm_pop_frame(rb_execution_context_t *ec);
-void rb_thread_start_timer_thread(void);
-void rb_thread_stop_timer_thread(void);
-void rb_thread_reset_timer_thread(void);
-void rb_thread_wakeup_timer_thread(int);
-static inline void
-rb_vm_living_threads_init(rb_vm_t *vm)
-{
- ccan_list_head_init(&vm->waiting_fds);
- ccan_list_head_init(&vm->waiting_pids);
- ccan_list_head_init(&vm->workqueue);
- ccan_list_head_init(&vm->waiting_grps);
- ccan_list_head_init(&vm->ractor.set);
-}
-typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
-rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-int rb_vm_get_sourceline(const rb_control_frame_t *);
-void rb_vm_stack_to_heap(rb_execution_context_t *ec);
-void ruby_thread_init_stack(rb_thread_t *th);
-rb_thread_t * ruby_thread_from_native(void);
-int ruby_thread_set_native(rb_thread_t *th);
-int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
-void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
-static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
-void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
-void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);static inline
-void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
-static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
-VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
-rb_execution_context_t *rb_vm_main_ractor_ec(rb_vm_t *vm);
-extern struct rb_ractor_struct *ruby_single_main_ractor;
-extern rb_vm_t *ruby_current_vm_ptr;
-extern rb_event_flag_t ruby_vm_event_flags;
-extern rb_event_flag_t ruby_vm_event_enabled_global_flags;
-extern unsigned int ruby_vm_event_local_num;
-static inline rb_thread_t *
-rb_ec_thread_ptr(const rb_execution_context_t *ec)
-{
- return ec->thread_ptr;
-}
-static inline rb_ractor_t *
-rb_ec_ractor_ptr(const rb_execution_context_t *ec)
-{
- const rb_thread_t *th = rb_ec_thread_ptr(ec);
- if (th) {
- ((void)0);
- return th->ractor;
- }
- else {
- return ((void*)0);
- }
-}
-static inline rb_vm_t *
-rb_ec_vm_ptr(const rb_execution_context_t *ec)
-{
- const rb_thread_t *th = rb_ec_thread_ptr(ec);
- if (th) {
- return th->vm;
- }
- else {
- return ((void*)0);
- }
-}
-static inline rb_execution_context_t *
-rb_current_execution_context(_Bool expect_ec)
-{
- rb_execution_context_t *ec = rb_current_ec();
- ((void)0);
- return ec;
-}
-static inline rb_thread_t *
-rb_current_thread(void)
-{
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- return rb_ec_thread_ptr(ec);
-}
-static inline rb_ractor_t *
-rb_current_ractor(void)
-{
- if (ruby_single_main_ractor) {
- return ruby_single_main_ractor;
- }
- else {
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- return rb_ec_ractor_ptr(ec);
- }
-}
-static inline rb_vm_t *
-rb_current_vm(void)
-{
- return ruby_current_vm_ptr;
-}
-void rb_ec_vm_lock_rec_release(const rb_execution_context_t *ec,
- unsigned int recorded_lock_rec,
- unsigned int current_lock_rec);
-static inline unsigned int
-rb_ec_vm_lock_rec(const rb_execution_context_t *ec)
-{
- rb_vm_t *vm = rb_ec_vm_ptr(ec);
- if (vm->ractor.sync.lock_owner != rb_ec_ractor_ptr(ec)) {
- return 0;
- }
- else {
- return vm->ractor.sync.lock_rec;
- }
-}
-enum {
- TIMER_INTERRUPT_MASK = 0x01,
- PENDING_INTERRUPT_MASK = 0x02,
- POSTPONED_JOB_INTERRUPT_MASK = 0x04,
- TRAP_INTERRUPT_MASK = 0x08,
- TERMINATE_INTERRUPT_MASK = 0x10,
- VM_BARRIER_INTERRUPT_MASK = 0x20,
-};
-static inline _Bool
-RUBY_VM_INTERRUPTED_ANY(rb_execution_context_t *ec)
-{
- return ec->interrupt_flag & ~(ec)->interrupt_mask;
-}
-VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
-int rb_signal_buff_size(void);
-int rb_signal_exec(rb_thread_t *th, int sig);
-void rb_threadptr_check_signal(rb_thread_t *mth);
-void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
-void rb_threadptr_signal_exit(rb_thread_t *th);
-int rb_threadptr_execute_interrupts(rb_thread_t *, int);
-void rb_threadptr_interrupt(rb_thread_t *th);
-void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
-void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
-void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
-VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
-void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
-void rb_execution_context_update(rb_execution_context_t *ec);
-void rb_execution_context_mark(const rb_execution_context_t *ec);
-void rb_fiber_close(rb_fiber_t *fib);
-void Init_native_thread(rb_thread_t *th);
-int rb_vm_check_ints_blocking(rb_execution_context_t *ec);
-void rb_vm_cond_wait(rb_vm_t *vm, rb_nativethread_cond_t *cond);
-void rb_vm_cond_timedwait(rb_vm_t *vm, rb_nativethread_cond_t *cond, unsigned long msec);
-static inline void
-rb_vm_check_ints(rb_execution_context_t *ec)
-{
- ((void)0);
- if ((__builtin_expect(!!(RUBY_VM_INTERRUPTED_ANY(ec)), 0))) {
- rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
- }
-}
-struct rb_trace_arg_struct {
- rb_event_flag_t event;
- rb_execution_context_t *ec;
- const rb_control_frame_t *cfp;
- VALUE self;
- ID id;
- ID called_id;
- VALUE klass;
- VALUE data;
- int klass_solved;
- int lineno;
- VALUE path;
-};
-void rb_hook_list_mark(rb_hook_list_t *hooks);
-void rb_hook_list_free(rb_hook_list_t *hooks);
-void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
-void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval);
-void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
-static inline void
-rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
- VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
-{
- struct rb_trace_arg_struct trace_arg;
- ((void)0);
- trace_arg.event = flag;
- trace_arg.ec = ec;
- trace_arg.cfp = ec->cfp;
- trace_arg.self = self;
- trace_arg.id = id;
- trace_arg.called_id = called_id;
- trace_arg.klass = klass;
- trace_arg.data = data;
- trace_arg.path = ((VALUE)RUBY_Qundef);
- trace_arg.klass_solved = 0;
- rb_exec_event_hooks(&trace_arg, hooks, pop_p);
-}
-struct rb_ractor_pub {
- VALUE self;
- uint32_t id;
- rb_hook_list_t hooks;
-};
-static inline rb_hook_list_t *
-rb_ec_ractor_hooks(const rb_execution_context_t *ec)
-{
- struct rb_ractor_pub *cr_pub = (struct rb_ractor_pub *)rb_ec_ractor_ptr(ec);
- return &cr_pub->hooks;
-}
-static inline void
-rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
-{
- do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, ec->cfp->self, 0, 0, 0, RB_NIL_P(eval_script) ? (VALUE)iseq : rb_ary_new_from_args(2, eval_script, (VALUE)iseq), 0); } } while (0);
-}
-void rb_vm_trap_exit(rb_vm_t *vm);
-int rb_thread_check_trap_pending(void);
-extern VALUE rb_get_coverages(void);
-extern void rb_set_coverages(VALUE, int, VALUE);
-extern void rb_clear_coverages(void);
-extern void rb_reset_coverages(void);
-extern void rb_resume_coverages(void);
-extern void rb_suspend_coverages(void);
-void rb_postponed_job_flush(rb_vm_t *vm);
-extern VALUE rb_eRactorUnsafeError;
-extern VALUE rb_eRactorIsolationError;
-
-static inline void
-vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
-{
- vm_block_handler_verify(block_handler);
- ec->passed_block_handler = block_handler;
-}
-static inline void
-pass_passed_block_handler(rb_execution_context_t *ec)
-{
- VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
- vm_passed_block_handler_set(ec, block_handler);
- VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
-}
-extern char ***_NSGetArgv(void);
-extern int *_NSGetArgc(void);
-extern char ***_NSGetEnviron(void);
-extern char **_NSGetProgname(void);
-extern struct mach_header_64 *
- _NSGetMachExecuteHeader(void);
-extern int * __error(void);
-static inline void
-rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec)
-{
- unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec);
- if (current_lock_rec != recorded_lock_rec) {
- rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec);
- }
-}
-static inline int
-rb_ec_tag_state(const rb_execution_context_t *ec)
-{
- struct rb_vm_tag *tag = ec->tag;
- enum ruby_tag_type state = tag->state;
- tag->state = RUBY_TAG_NONE;
- rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
- return state;
-}
-__declspec(noreturn) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
-static inline void
-rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
-{
- ec->tag->state = st;
- siglongjmp(((ec->tag->buf)),(1));
-}
-static inline int CREF_SINGLETON(const rb_cref_t *cref);
-static inline VALUE
-CREF_CLASS(const rb_cref_t *cref)
-{
- if (CREF_SINGLETON(cref)) {
- return rb_class_of(cref->klass_or_self);
- }
- else {
- return cref->klass_or_self;
- }
-}
-static inline VALUE
-CREF_CLASS_FOR_DEFINITION(const rb_cref_t *cref)
-{
- if (CREF_SINGLETON(cref)) {
- return rb_singleton_class(cref->klass_or_self);
- }
- else {
- return cref->klass_or_self;
- }
-}
-static inline rb_cref_t *
-CREF_NEXT(const rb_cref_t *cref)
-{
- return cref->next;
-}
-static inline const rb_scope_visibility_t *
-CREF_SCOPE_VISI(const rb_cref_t *cref)
-{
- return &cref->scope_visi;
-}
-static inline VALUE
-CREF_REFINEMENTS(const rb_cref_t *cref)
-{
- return cref->refinements;
-}
-static inline void
-CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
-{
- rb_obj_write((VALUE)(cref), __extension__({
- ;
- ; __typeof__((VALUE *)(&cref->refinements)) unaligned_member_access_result = ((VALUE *)(&cref->refinements));
- ; unaligned_member_access_result; }), (VALUE)(refs), "./eval_intern.h", 227);
-}
-static inline int
-CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER5);
-}
-static inline void
-CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER5);
-}
-static inline int
-CREF_SINGLETON(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER7);
-}
-static inline void
-CREF_SINGLETON_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER7);
-}
-static inline int
-CREF_OMOD_SHARED(const rb_cref_t *cref)
-{
- return cref->flags & ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-CREF_OMOD_SHARED_SET(rb_cref_t *cref)
-{
- cref->flags |= ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
-{
- cref->flags &= ~((VALUE)RUBY_FL_USER6);
-}
-enum {
- RAISED_EXCEPTION = 1,
- RAISED_STACKOVERFLOW = 2,
- RAISED_NOMEMORY = 4
-};
-int rb_ec_set_raised(rb_execution_context_t *ec);
-int rb_ec_reset_raised(rb_execution_context_t *ec);
-int rb_ec_stack_check(rb_execution_context_t *ec);
-VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
-VALUE rb_make_exception(int argc, const VALUE *argv);
-__declspec(noreturn) void rb_method_name_error(VALUE, VALUE);
-__declspec(noreturn) void rb_fiber_start(rb_fiber_t*);
-__declspec(noreturn) void rb_print_undef(VALUE, ID, rb_method_visibility_t);
-__declspec(noreturn) void rb_print_undef_str(VALUE, VALUE);
-__declspec(noreturn) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t);
-__declspec(noreturn) void rb_vm_localjump_error(const char *,VALUE, int);
-__declspec(noreturn) void rb_vm_jump_tag_but_local_jump(int);
-VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
-rb_cref_t *rb_vm_cref(void);
-rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
-VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
-void rb_vm_set_progname(VALUE filename);
-VALUE rb_vm_cbase(void);
-VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
-VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
-VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, _Bool skip_internal);
-static inline char *
-rb_char_next(const char *p)
-{
- if (p) {
- int len = mblen(p, 2147483647);
- p += len > 0 ? len : 1;
- }
- return (char *)p;
-}
-
-const char *rb_obj_info(VALUE obj);
-const char *rb_raw_obj_info(char *const buff, const size_t buff_size, VALUE obj);
-VALUE rb_gc_disable_no_rest(void);
-struct rb_thread_struct;
-size_t rb_size_pool_slot_size(unsigned char pool_id);
-size_t rb_objspace_data_type_memsize(VALUE obj);
-void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
-void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
-int rb_objspace_markable_object_p(VALUE obj);
-int rb_objspace_internal_object_p(VALUE obj);
-int rb_objspace_marked_object_p(VALUE obj);
-void rb_objspace_each_objects(
- int (*callback)(void *start, void *end, size_t stride, void *data),
- void *data);
-void rb_objspace_each_objects_without_setup(
- int (*callback)(void *, void *, size_t, void *),
- void *data);
-size_t rb_gc_obj_slot_size(VALUE obj);
-
-
-struct rb_iseq_struct;
-int rb_dvar_defined(ID, const struct rb_iseq_struct *);
-int rb_local_defined(ID, const struct rb_iseq_struct *);
-const char *rb_insns_name(int i);
-VALUE rb_insns_name_array(void);
-int rb_iseq_cdhash_cmp(VALUE val, VALUE lit);
-st_index_t rb_iseq_cdhash_hash(VALUE a);
-int rb_vm_insn_addr2insn(const void *);
-int rb_vm_insn_decode(const VALUE encoded);
-extern _Bool ruby_vm_keep_script_lines;
-rb_event_flag_t rb_iseq_event_flags(const struct rb_iseq_struct *iseq, size_t pos);
-
-
-extern const int ruby_api_version[];
-typedef void (*rb_iseq_callback)(const rb_iseq_t *, void *);
-extern const ID rb_iseq_shared_exc_local_tbl[];
-static inline rb_snum_t
-ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
-{
- rb_snum_t cnt = ((iseq)->body)->variable.flip_count;
- ((iseq)->body)->variable.flip_count += 1;
- return cnt;
-}
-static inline VALUE *
-ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->variable.original_iseq;
-}
-static inline void
-ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
-{
- void *ptr = ((iseq)->body)->variable.original_iseq;
- ((iseq)->body)->variable.original_iseq = ((void*)0);
- if (ptr) {
- ruby_xfree(ptr);
- }
-}
-static inline VALUE *
-ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
-{
- return ((iseq)->body)->variable.original_iseq =
- ((VALUE *)ruby_xmalloc2((size), sizeof(VALUE)));
-}
-struct iseq_compile_data {
- const VALUE err_info;
- const VALUE catch_table_ary;
- struct iseq_label_data *start_label;
- struct iseq_label_data *end_label;
- struct iseq_label_data *redo_label;
- const rb_iseq_t *current_block;
- struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
- struct {
- struct iseq_compile_data_storage *storage_head;
- struct iseq_compile_data_storage *storage_current;
- } node;
- struct {
- struct iseq_compile_data_storage *storage_head;
- struct iseq_compile_data_storage *storage_current;
- } insn;
- _Bool in_rescue;
- int loopval_popped;
- int last_line;
- int label_no;
- int node_level;
- int isolated_depth;
- unsigned int ci_index;
- unsigned int ic_index;
- const rb_compile_option_t *option;
- struct rb_id_table *ivar_cache_table;
- const struct rb_builtin_function *builtin_function_table;
- const NODE *root_node;
-};
-static inline struct iseq_compile_data *
-ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
-{
- if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
- return iseq->aux.compile_data;
- }
- else {
- return ((void*)0);
- }
-}
-static inline void
-ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
-{
- iseq->aux.compile_data = (((struct iseq_compile_data *)ruby_xcalloc((1), sizeof(struct iseq_compile_data))));
- iseq->flags |= ((VALUE)RUBY_FL_USER6);
-}
-static inline void
-ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
-{
- iseq->flags &= ~((VALUE)RUBY_FL_USER6);
- iseq->aux.compile_data = ((void*)0);
-}
-static inline rb_iseq_t *
-iseq_imemo_alloc(void)
-{
- return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
-}
-VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt);
-void rb_ibf_load_iseq_complete(rb_iseq_t *iseq);
-const rb_iseq_t *rb_iseq_ibf_load(VALUE str);
-const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
-VALUE rb_iseq_ibf_load_extra_data(VALUE str);
-void rb_iseq_init_trace(rb_iseq_t *iseq);
-int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, _Bool target_bmethod);
-int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
-const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
-unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
-int rb_vm_insn_addr2opcode(const void *addr);
-VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
-VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc);
-VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
-void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
- VALUE locals, VALUE args,
- VALUE exception, VALUE body);
-void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena);
-VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
-VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
-unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
-int rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos);
-void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
-void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
-void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq);
-struct rb_iseq_constant_body *rb_iseq_constant_body_alloc(void);
-VALUE rb_iseqw_new(const rb_iseq_t *iseq);
-const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
-VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq);
-int rb_iseq_from_eval_p(const rb_iseq_t *iseq);
-VALUE rb_iseq_type(const rb_iseq_t *iseq);
-VALUE rb_iseq_label(const rb_iseq_t *iseq);
-VALUE rb_iseq_base_label(const rb_iseq_t *iseq);
-VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq);
-VALUE rb_iseq_method_name(const rb_iseq_t *iseq);
-void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
-void rb_iseq_remove_coverage_all(void);
-const rb_iseq_t *rb_method_iseq(VALUE body);
-const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
-struct rb_compile_option_struct {
- unsigned int inline_const_cache: 1;
- unsigned int peephole_optimization: 1;
- unsigned int tailcall_optimization: 1;
- unsigned int specialized_instruction: 1;
- unsigned int operands_unification: 1;
- unsigned int instructions_unification: 1;
- unsigned int stack_caching: 1;
- unsigned int frozen_string_literal: 1;
- unsigned int debug_frozen_string_literal: 1;
- unsigned int coverage_enabled: 1;
- int debug_level;
-};
-struct iseq_insn_info_entry {
- int line_no;
- int node_id;
- rb_event_flag_t events;
-};
-enum rb_catch_type {
- CATCH_TYPE_RESCUE = __builtin_choose_expr( __builtin_constant_p(1), ((VALUE)(1)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(1)),
- CATCH_TYPE_ENSURE = __builtin_choose_expr( __builtin_constant_p(2), ((VALUE)(2)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(2)),
- CATCH_TYPE_RETRY = __builtin_choose_expr( __builtin_constant_p(3), ((VALUE)(3)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(3)),
- CATCH_TYPE_BREAK = __builtin_choose_expr( __builtin_constant_p(4), ((VALUE)(4)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(4)),
- CATCH_TYPE_REDO = __builtin_choose_expr( __builtin_constant_p(5), ((VALUE)(5)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(5)),
- CATCH_TYPE_NEXT = __builtin_choose_expr( __builtin_constant_p(6), ((VALUE)(6)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(6))
-};
-struct iseq_catch_table_entry {
- enum rb_catch_type type;
- rb_iseq_t *iseq;
- unsigned int start;
- unsigned int end;
- unsigned int cont;
- unsigned int sp;
-};
-struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[];} __attribute__((packed));
-static inline int
-iseq_catch_table_bytes(int n)
-{
- enum {
- catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
- catch_table_entries_max = (2147483647 - __builtin_offsetof(struct iseq_catch_table, entries)) / catch_table_entry_size
- };
- if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
- return (int)(__builtin_offsetof(struct iseq_catch_table, entries) +
- n * catch_table_entry_size);
-}
-struct iseq_compile_data_storage {
- struct iseq_compile_data_storage *next;
- unsigned int pos;
- unsigned int size;
- char buff[];
-};
-enum defined_type {
- DEFINED_NOT_DEFINED,
- DEFINED_NIL = 1,
- DEFINED_IVAR,
- DEFINED_LVAR,
- DEFINED_GVAR,
- DEFINED_CVAR,
- DEFINED_CONST,
- DEFINED_METHOD,
- DEFINED_YIELD,
- DEFINED_ZSUPER,
- DEFINED_SELF,
- DEFINED_TRUE,
- DEFINED_FALSE,
- DEFINED_ASGN,
- DEFINED_EXPR,
- DEFINED_REF,
- DEFINED_FUNC,
- DEFINED_CONST_FROM
-};
-VALUE rb_iseq_defined_string(enum defined_type type);
-VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
-
-struct rb_thread_struct;
-struct rb_fiber_struct;
-struct rb_execution_context_struct;
-void rb_fiber_reset_root_local_storage(struct rb_thread_struct *);
-void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
-void rb_jit_cont_init(void);
-void rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data);
-void rb_jit_cont_finish(void);
-VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber);
-VALUE rb_fiberptr_self(struct rb_fiber_struct *fiber);
-unsigned int rb_fiberptr_blocking(struct rb_fiber_struct *fiber);
-struct rb_execution_context_struct * rb_fiberptr_get_ec(struct rb_fiber_struct *fiber);
-
-
-
-
-enum ruby_coderange_type {
- RUBY_ENC_CODERANGE_UNKNOWN = 0,
- RUBY_ENC_CODERANGE_7BIT = ((int)RUBY_FL_USER8),
- RUBY_ENC_CODERANGE_VALID = ((int)RUBY_FL_USER9),
- RUBY_ENC_CODERANGE_BROKEN = ((int)(RUBY_FL_USER8|RUBY_FL_USER9)),
- RUBY_ENC_CODERANGE_MASK = (RUBY_ENC_CODERANGE_7BIT|
- RUBY_ENC_CODERANGE_VALID|
- RUBY_ENC_CODERANGE_BROKEN)
-};
-__attribute__((__const__))
-static inline int
-rb_enc_coderange_clean_p(int cr)
-{
- return (cr ^ (cr >> 1)) & RUBY_ENC_CODERANGE_7BIT;
-}
-__attribute__((__const__))
-static inline _Bool
-RB_ENC_CODERANGE_CLEAN_P(enum ruby_coderange_type cr)
-{
- return rb_enc_coderange_clean_p(cr);
-}
-__attribute__((__pure__))
-static inline enum ruby_coderange_type
-RB_ENC_CODERANGE(VALUE obj)
-{
- VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENC_CODERANGE_MASK);
- return ((enum ruby_coderange_type)ret);
-}
-__attribute__((__pure__))
-static inline _Bool
-RB_ENC_CODERANGE_ASCIIONLY(VALUE obj)
-{
- return RB_ENC_CODERANGE(obj) == RUBY_ENC_CODERANGE_7BIT;
-}
-static inline void
-RB_ENC_CODERANGE_SET(VALUE obj, enum ruby_coderange_type cr)
-{
- RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
- RB_FL_SET_RAW(obj, cr);
-}
-static inline void
-RB_ENC_CODERANGE_CLEAR(VALUE obj)
-{
- RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
-}
-__attribute__((__const__))
-static inline enum ruby_coderange_type
-RB_ENC_CODERANGE_AND(enum ruby_coderange_type a, enum ruby_coderange_type b)
-{
- if (a == RUBY_ENC_CODERANGE_7BIT) {
- return b;
- }
- else if (a != RUBY_ENC_CODERANGE_VALID) {
- return RUBY_ENC_CODERANGE_UNKNOWN;
- }
- else if (b == RUBY_ENC_CODERANGE_7BIT) {
- return RUBY_ENC_CODERANGE_VALID;
- }
- else {
- return b;
- }
-}
-
-
-typedef unsigned char OnigUChar;
-typedef unsigned int OnigCodePoint;
-typedef unsigned int OnigCtype;
-typedef size_t OnigDistance;
-typedef ptrdiff_t OnigPosition;
-typedef unsigned int OnigCaseFoldType;
-extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
-typedef struct {
- int byte_len;
- int code_len;
- OnigCodePoint code[3];
-} OnigCaseFoldCodeItem;
-typedef struct {
- OnigCodePoint esc;
- OnigCodePoint anychar;
- OnigCodePoint anytime;
- OnigCodePoint zero_or_one_time;
- OnigCodePoint one_or_more_time;
- OnigCodePoint anychar_anytime;
-} OnigMetaCharTableType;
-typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
-typedef struct OnigEncodingTypeST {
- int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
- const char* name;
- int max_enc_len;
- int min_enc_len;
- int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc);
- int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc);
- int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc);
- int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc);
- int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc);
- int (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end);
- int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc);
- int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc);
- OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
- int (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
- int ruby_encoding_index;
- unsigned int flags;
-} OnigEncodingType;
-typedef const OnigEncodingType* OnigEncoding;
-extern const OnigEncodingType OnigEncodingASCII;
-extern
-int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
-extern
-int onigenc_mbclen(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
-extern
-OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
-extern
-int onigenc_init(void);
-extern
-int onigenc_set_default_encoding(OnigEncoding enc);
-extern
-OnigEncoding onigenc_get_default_encoding(void);
-extern
-OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
-extern
-OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
-extern
-int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
-extern
-int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p);
-extern
-int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p);
-typedef unsigned int OnigOptionType;
-typedef struct {
- unsigned int op;
- unsigned int op2;
- unsigned int behavior;
- OnigOptionType options;
- OnigMetaCharTableType meta_char_table;
-} OnigSyntaxType;
-extern const OnigSyntaxType OnigSyntaxASIS;
-extern const OnigSyntaxType OnigSyntaxPosixBasic;
-extern const OnigSyntaxType OnigSyntaxPosixExtended;
-extern const OnigSyntaxType OnigSyntaxEmacs;
-extern const OnigSyntaxType OnigSyntaxGrep;
-extern const OnigSyntaxType OnigSyntaxGnuRegex;
-extern const OnigSyntaxType OnigSyntaxJava;
-extern const OnigSyntaxType OnigSyntaxPerl58;
-extern const OnigSyntaxType OnigSyntaxPerl58_NG;
-extern const OnigSyntaxType OnigSyntaxPerl;
-extern const OnigSyntaxType OnigSyntaxRuby;
-extern const OnigSyntaxType OnigSyntaxPython;
-extern const OnigSyntaxType* OnigDefaultSyntax;
-struct re_registers {
- int allocated;
- int num_regs;
- OnigPosition* beg;
- OnigPosition* end;
-};
-typedef struct re_registers OnigRegion;
-typedef struct {
- OnigEncoding enc;
- OnigUChar* par;
- OnigUChar* par_end;
-} OnigErrorInfo;
-typedef struct {
- int lower;
- int upper;
- long base_num;
- long inner_num;
-} OnigRepeatRange;
-typedef void (*OnigWarnFunc)(const char* s);
-extern void onig_null_warn(const char* s);
-typedef struct re_pattern_buffer {
- unsigned char* p;
- unsigned int used;
- unsigned int alloc;
- int num_mem;
- int num_repeat;
- int num_null_check;
- int num_comb_exp_check;
- int num_call;
- unsigned int capture_history;
- unsigned int bt_mem_start;
- unsigned int bt_mem_end;
- int stack_pop_level;
- int repeat_range_alloc;
- OnigOptionType options;
- OnigRepeatRange* repeat_range;
- OnigEncoding enc;
- const OnigSyntaxType* syntax;
- void* name_table;
- OnigCaseFoldType case_fold_flag;
- int optimize;
- int threshold_len;
- int anchor;
- OnigDistance anchor_dmin;
- OnigDistance anchor_dmax;
- int sub_anchor;
- unsigned char *exact;
- unsigned char *exact_end;
- unsigned char map[256];
- int *int_map;
- int *int_map_backward;
- OnigDistance dmin;
- OnigDistance dmax;
- uint64_t timelimit;
- struct re_pattern_buffer* chain;
-} OnigRegexType;
-typedef OnigRegexType* OnigRegex;
-typedef OnigRegexType regex_t;
-typedef struct {
- int num_of_elements;
- OnigEncoding pattern_enc;
- OnigEncoding target_enc;
- const OnigSyntaxType* syntax;
- OnigOptionType option;
- OnigCaseFoldType case_fold_flag;
-} OnigCompileInfo;
-extern
-int onig_initialize(OnigEncoding encodings[], int n);
-extern
-int onig_init(void);
-extern
-int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...);
-extern
-void onig_set_warn_func(OnigWarnFunc f);
-extern
-void onig_set_verb_warn_func(OnigWarnFunc f);
-extern
-int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
-extern
-int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax);
-extern
-int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
-extern
-int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
-extern
-void onig_free(OnigRegex);
-extern
-void onig_free_body(OnigRegex);
-extern
-OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
-extern
-OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
-extern
-OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
-extern
-OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
-extern
-int onig_check_linear_time(OnigRegex reg);
-extern
-OnigRegion* onig_region_new(void);
-extern
-void onig_region_init(OnigRegion* region);
-extern
-void onig_region_free(OnigRegion* region, int free_self);
-extern
-void onig_region_copy(OnigRegion* to, const OnigRegion* from);
-extern
-void onig_region_clear(OnigRegion* region);
-extern
-int onig_region_resize(OnigRegion* region, int n);
-extern
-int onig_region_set(OnigRegion* region, int at, int beg, int end);
-extern
-int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
-extern
-int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region);
-extern
-int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
-extern
-int onig_number_of_names(const OnigRegexType *reg);
-extern
-int onig_number_of_captures(const OnigRegexType *reg);
-extern
-int onig_number_of_capture_histories(const OnigRegexType *reg);
-extern
-int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg);
-extern
-int onig_noname_group_capture_is_active(const OnigRegexType *reg);
-extern
-OnigEncoding onig_get_encoding(const OnigRegexType *reg);
-extern
-OnigOptionType onig_get_options(const OnigRegexType *reg);
-extern
-OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg);
-extern
-const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg);
-extern
-int onig_set_default_syntax(const OnigSyntaxType* syntax);
-extern
-void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from);
-extern
-unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax);
-extern
-unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax);
-extern
-unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax);
-extern
-OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax);
-extern
-void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op);
-extern
-void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2);
-extern
-void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior);
-extern
-void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options);
-extern
-int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
-extern
-void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from);
-extern
-OnigCaseFoldType onig_get_default_case_fold_flag(void);
-extern
-int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag);
-extern
-unsigned int onig_get_match_stack_limit_size(void);
-extern
-int onig_set_match_stack_limit_size(unsigned int size);
-extern
-unsigned int onig_get_parse_depth_limit(void);
-extern
-int onig_set_parse_depth_limit(unsigned int depth);
-extern
-int onig_end(void);
-extern
-const char* onig_version(void);
-extern
-const char* onig_copyright(void);
-
-
-extern VALUE rb_cEncoding;
-enum ruby_encoding_consts {
- RUBY_ENCODING_INLINE_MAX = 127,
- RUBY_ENCODING_SHIFT = (RUBY_FL_USHIFT+10),
- RUBY_ENCODING_MASK = (RUBY_ENCODING_INLINE_MAX<> RUBY_ENCODING_SHIFT;
- return ((int)ret);
-}
-typedef const OnigEncodingType rb_encoding;
-__declspec(noalias)
-int rb_char_to_option_kcode(int c, int *option, int *kcode);
-int rb_enc_replicate(const char *name, rb_encoding *src);
-int rb_define_dummy_encoding(const char *name);
-__attribute__((__pure__))
-int rb_enc_dummy_p(rb_encoding *enc);
-__attribute__((__pure__))
-int rb_enc_to_index(rb_encoding *enc);
-int rb_enc_get_index(VALUE obj);
-static inline int
-RB_ENCODING_GET(VALUE obj)
-{
- int encindex = RB_ENCODING_GET_INLINED(obj);
- if (encindex == RUBY_ENCODING_INLINE_MAX) {
- return rb_enc_get_index(obj);
- }
- else {
- return encindex;
- }
-}
-void rb_enc_set_index(VALUE obj, int encindex);
-static inline void
-RB_ENCODING_SET(VALUE obj, int encindex)
-{
- rb_enc_set_index(obj, encindex);
-}
-static inline void
-RB_ENCODING_CODERANGE_SET(VALUE obj, int encindex, enum ruby_coderange_type cr)
-{
- RB_ENCODING_SET(obj, encindex);
- RB_ENC_CODERANGE_SET(obj, cr);
-}
-__attribute__((__pure__))
-int rb_enc_capable(VALUE obj);
-int rb_enc_find_index(const char *name);
-int rb_enc_alias(const char *alias, const char *orig);
-int rb_to_encoding_index(VALUE obj);
-rb_encoding *rb_to_encoding(VALUE obj);
-rb_encoding *rb_find_encoding(VALUE obj);
-rb_encoding *rb_enc_get(VALUE obj);
-rb_encoding *rb_enc_compatible(VALUE str1, VALUE str2);
-rb_encoding *rb_enc_check(VALUE str1,VALUE str2);
-VALUE rb_enc_associate_index(VALUE obj, int encindex);
-VALUE rb_enc_associate(VALUE obj, rb_encoding *enc);
-void rb_enc_copy(VALUE dst, VALUE src);
-rb_encoding *rb_enc_from_index(int idx);
-rb_encoding *rb_enc_find(const char *name);
-static inline const char *
-rb_enc_name(rb_encoding *enc)
-{
- return enc->name;
-}
-static inline int
-rb_enc_mbminlen(rb_encoding *enc)
-{
- return enc->min_enc_len;
-}
-static inline int
-rb_enc_mbmaxlen(rb_encoding *enc)
-{
- return enc->max_enc_len;
-}
-int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
-int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
-unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc);
-static inline unsigned int
-rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc)
-{
- return rb_enc_codepoint_len(p, e, 0, enc);
-}
-static inline OnigCodePoint
-rb_enc_mbc_to_codepoint(const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- return (enc)->mbc_to_code((up),(ue),enc);
-}
-int rb_enc_codelen(int code, rb_encoding *enc);
-static inline int
-rb_enc_code_to_mbclen(int c, rb_encoding *enc)
-{
- OnigCodePoint uc = ((OnigCodePoint)c);
- return (enc)->code_to_mbclen(uc,enc);
-}
-static inline int
-rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
-{
- OnigCodePoint uc = ((OnigCodePoint)c);
- OnigUChar *ubuf = ((OnigUChar *)buf);
- return (enc)->code_to_mbc(uc,ubuf,enc);
-}
-static inline char *
-rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_prev_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_left_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_left_adjust_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_right_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- OnigUChar *ur = onigenc_get_right_adjust_char_head(enc, us, up, ue);
- return ((char *)ur);
-}
-static inline char *
-rb_enc_step_back(const char *s, const char *p, const char *e, int n, rb_encoding *enc)
-{
- const OnigUChar *us = ((const OnigUChar *)s);
- const OnigUChar *up = ((const OnigUChar *)p);
- const OnigUChar *ue = ((const OnigUChar *)e);
- const OnigUChar *ur = onigenc_step_back(enc, us, up, ue, n);
- return ((char *)ur);
-}
-static inline int
-rb_enc_asciicompat_inline(rb_encoding *enc)
-{
- return rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc);
-}
-static inline _Bool
-rb_enc_asciicompat(rb_encoding *enc)
-{
- if (rb_enc_mbminlen(enc) != 1) {
- return 0;
- }
- else if (rb_enc_dummy_p(enc)) {
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline _Bool
-rb_enc_str_asciicompat_p(VALUE str)
-{
- rb_encoding *enc = rb_enc_get(str);
- return rb_enc_asciicompat(enc);
-}
-VALUE rb_enc_from_encoding(rb_encoding *enc);
-__attribute__((__pure__))
-int rb_enc_unicode_p(rb_encoding *enc);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_ascii8bit_encoding(void);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_utf8_encoding(void);
-__attribute__((__returns_nonnull__))
-rb_encoding *rb_usascii_encoding(void);
-rb_encoding *rb_locale_encoding(void);
-rb_encoding *rb_filesystem_encoding(void);
-rb_encoding *rb_default_external_encoding(void);
-rb_encoding *rb_default_internal_encoding(void);
-__attribute__((__const__))
-int rb_ascii8bit_encindex(void);
-static inline _Bool
-RB_ENCODING_IS_ASCII8BIT(VALUE obj)
-{
- return RB_ENCODING_GET_INLINED(obj) == rb_ascii8bit_encindex();
-}
-__attribute__((__const__))
-int rb_utf8_encindex(void);
-__attribute__((__const__))
-int rb_usascii_encindex(void);
-int rb_locale_encindex(void);
-int rb_filesystem_encindex(void);
-VALUE rb_enc_default_external(void);
-VALUE rb_enc_default_internal(void);
-void rb_enc_set_default_external(VALUE encoding);
-void rb_enc_set_default_internal(VALUE encoding);
-VALUE rb_locale_charmap(VALUE klass);
-static inline _Bool
-rb_enc_is_newline(const char *p, const char *e, rb_encoding *enc)
-{
- OnigUChar *up = ((OnigUChar *)p);
- OnigUChar *ue = ((OnigUChar *)e);
- return (enc)->is_mbc_newline((up),(ue),enc);
-}
-static inline _Bool
-rb_enc_isctype(OnigCodePoint c, OnigCtype t, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,t,enc);
-}
-static inline _Bool
-rb_enc_isascii(OnigCodePoint c, rb_encoding *enc)
-{
- return ((c) < 128);
-}
-static inline _Bool
-rb_enc_isalpha(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,1,enc);
-}
-static inline _Bool
-rb_enc_islower(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,6,enc);
-}
-static inline _Bool
-rb_enc_isupper(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,10,enc);
-}
-static inline _Bool
-rb_enc_iscntrl(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,3,enc);
-}
-static inline _Bool
-rb_enc_ispunct(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,8,enc);
-}
-static inline _Bool
-rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,13,enc);
-}
-static inline _Bool
-rb_enc_isprint(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,7,enc);
-}
-static inline _Bool
-rb_enc_isspace(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,9,enc);
-}
-static inline _Bool
-rb_enc_isdigit(OnigCodePoint c, rb_encoding *enc)
-{
- return (enc)->is_code_ctype(c,4,enc);
-}
-__attribute__((__const__))
-int rb_enc_toupper(int c, rb_encoding *enc);
-__attribute__((__const__))
-int rb_enc_tolower(int c, rb_encoding *enc);
-
-
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_next(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_skip_prefix(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_last_separator(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-char *rb_enc_path_end(const char *path, const char *end, rb_encoding *enc);
-__attribute__((__nonnull__ (1, 4)))
-const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc);
-__attribute__((__nonnull__ (1, 3)))
-const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc);
-
-VALUE rb_enc_reg_new(const char *ptr, long len, rb_encoding *enc, int opts);
-
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 3)))
-VALUE rb_enc_sprintf(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__nonnull__ (2)))
-__attribute__((__format__(__printf__, 2, 0)))
-VALUE rb_enc_vsprintf(rb_encoding *enc, const char *fmt, va_list ap);
-__declspec(noreturn)
-__attribute__((__nonnull__ (3)))
-__attribute__((__format__(__printf__, 3, 4)))
-void rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...);
-
-VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc);
-__attribute__((__nonnull__ (1)))
-VALUE rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc);
-VALUE rb_enc_str_new_static(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc);
-__attribute__((__nonnull__ (1)))
-VALUE rb_enc_interned_str_cstr(const char *ptr, rb_encoding *enc);
-long rb_enc_strlen(const char *head, const char *tail, rb_encoding *enc);
-char *rb_enc_nth(const char *head, const char *tail, long nth, rb_encoding *enc);
-VALUE rb_obj_encoding(VALUE obj);
-VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
-VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc);
-VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_str_export_to_enc(VALUE obj, rb_encoding *enc);
-VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
-VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts);
-int rb_enc_str_coderange(VALUE str);
-long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr);
-int rb_enc_str_asciionly_p(VALUE str);
-__attribute__((__nonnull__ ()))
-long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-static inline VALUE
-rbimpl_enc_str_new_cstr(const char *str, rb_encoding *enc)
-{
- long len = rbimpl_strlen(str);
- return rb_enc_str_new_static(str, len, enc);
-}
-
-ID rb_intern3(const char *name, long len, rb_encoding *enc);
-__attribute__((__nonnull__ ()))
-int rb_enc_symname_p(const char *str, rb_encoding *enc);
-int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc);
-ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc);
-
-typedef enum {
- econv_invalid_byte_sequence,
- econv_undefined_conversion,
- econv_destination_buffer_full,
- econv_source_buffer_empty,
- econv_finished,
- econv_after_output,
- econv_incomplete_input
-} rb_econv_result_t;
-typedef struct rb_econv_t rb_econv_t;
-VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
-int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
-int rb_econv_prepare_options(VALUE opthash, VALUE *ecopts, int ecflags);
-int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
-rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
-rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
-rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
- const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
- unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
- int flags);
-void rb_econv_close(rb_econv_t *ec);
-int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
-int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
-int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
-VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
-int rb_econv_insert_output(rb_econv_t *ec,
- const unsigned char *str, size_t len, const char *str_encoding);
-const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
-void rb_econv_check_error(rb_econv_t *ec);
-VALUE rb_econv_make_exception(rb_econv_t *ec);
-int rb_econv_putbackable(rb_econv_t *ec);
-void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
-const char *rb_econv_asciicompat_encoding(const char *encname);
-VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
-VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
-VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
-VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
-VALUE rb_econv_append(rb_econv_t *ec, const char *bytesrc, long bytesize, VALUE dst, int flags);
-void rb_econv_binmode(rb_econv_t *ec);
-enum ruby_econv_flag_type {
- RUBY_ECONV_ERROR_HANDLER_MASK = 0x000000ff,
- RUBY_ECONV_INVALID_MASK = 0x0000000f,
- RUBY_ECONV_INVALID_REPLACE = 0x00000002,
- RUBY_ECONV_UNDEF_MASK = 0x000000f0,
- RUBY_ECONV_UNDEF_REPLACE = 0x00000020,
- RUBY_ECONV_UNDEF_HEX_CHARREF = 0x00000030,
- RUBY_ECONV_DECORATOR_MASK = 0x0001ff00,
- RUBY_ECONV_NEWLINE_DECORATOR_MASK = 0x00007f00,
- RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK = 0x00000f00,
- RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK = 0x00007000,
- RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR = 0x00000100,
- RUBY_ECONV_CRLF_NEWLINE_DECORATOR = 0x00001000,
- RUBY_ECONV_CR_NEWLINE_DECORATOR = 0x00002000,
- RUBY_ECONV_LF_NEWLINE_DECORATOR = 0x00004000,
- RUBY_ECONV_XML_TEXT_DECORATOR = 0x00008000,
- RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR = 0x00010000,
- RUBY_ECONV_STATEFUL_DECORATOR_MASK = 0x00f00000,
- RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR = 0x00100000,
- RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR =
- 0,
- RUBY_ECONV_PARTIAL_INPUT = 0x00020000,
- RUBY_ECONV_AFTER_OUTPUT = 0x00040000,
- RUBY_ECONV_FLAGS_PLACEHOLDER
-};
-VALUE rb_fstring(VALUE);
-VALUE rb_fstring_cstr(const char *str);
-VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc);
-int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
-int rb_str_symname_p(VALUE);
-VALUE rb_str_quote_unprintable(VALUE);
-char *rb_str_fill_terminator(VALUE str, const int termlen);
-void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
-VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
-VALUE rb_str_chomp_string(VALUE str, VALUE chomp);
-VALUE rb_external_str_with_enc(VALUE str, rb_encoding *eenc);
-VALUE rb_str_cat_conv_enc_opts(VALUE newstr, long ofs, const char *ptr, long len,
- rb_encoding *from, int ecflags, VALUE ecopts);
-VALUE rb_enc_str_scrub(rb_encoding *enc, VALUE str, VALUE repl);
-VALUE rb_str_escape(VALUE str);
-size_t rb_str_memsize(VALUE);
-char *rb_str_to_cstr(VALUE str);
-const char *ruby_escaped_char(int c);
-void rb_str_make_independent(VALUE str);
-int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
-int rb_ascii8bit_appendable_encoding_index(rb_encoding *enc, unsigned int code);
-VALUE rb_str_include(VALUE str, VALUE arg);
-static inline _Bool STR_EMBED_P(VALUE str);
-static inline _Bool STR_SHARED_P(VALUE str);
-static inline VALUE QUOTE(VALUE v);
-static inline VALUE QUOTE_ID(ID v);
-static inline _Bool is_ascii_string(VALUE str);
-static inline _Bool is_broken_string(VALUE str);
-static inline VALUE rb_str_eql_internal(const VALUE str1, const VALUE str2);
-VALUE rb_str_tmp_frozen_acquire(VALUE str);
-void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
-VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
-VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
-VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
-void rb_str_make_embedded(VALUE);
-size_t rb_str_size_as_embedded(VALUE);
-_Bool rb_str_reembeddable_p(VALUE);
-void rb_str_update_shared_ary(VALUE str, VALUE old_root, VALUE new_root);
-VALUE rb_fstring_new(const char *ptr, long len);
-VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
-VALUE rb_str_opt_plus(VALUE x, VALUE y);
-VALUE rb_str_concat_literals(size_t num, const VALUE *strary);
-VALUE rb_str_eql(VALUE str1, VALUE str2);
-VALUE rb_id_quote_unprintable(ID);
-VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
-struct rb_execution_context_struct;
-VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str);
-static inline VALUE
-QUOTE(VALUE v)
-{
- return rb_str_quote_unprintable(v);
-}
-static inline VALUE
-QUOTE_ID(ID i)
-{
- return rb_id_quote_unprintable(i);
-}
-static inline _Bool
-STR_EMBED_P(VALUE str)
-{
- return ! RB_FL_TEST_RAW(str, ((VALUE)RUBY_FL_USER1));
-}
-static inline _Bool
-STR_SHARED_P(VALUE str)
-{
- return RB_FL_ALL_RAW(str, ((VALUE)RUBY_FL_USER1) | ((VALUE)RUBY_FL_USER2));
-}
-static inline _Bool
-is_ascii_string(VALUE str)
-{
- return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_7BIT;
-}
-static inline _Bool
-is_broken_string(VALUE str)
-{
- return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_BROKEN;
-}
-static inline VALUE
-rb_str_eql_internal(const VALUE str1, const VALUE str2)
-{
- const long len = RSTRING_LEN(str1);
- const char *ptr1, *ptr2;
- if (len != RSTRING_LEN(str2)) return ((VALUE)RUBY_Qfalse);
- if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
- if ((ptr1 = RSTRING_PTR(str1)) == (ptr2 = RSTRING_PTR(str2)))
- return ((VALUE)RUBY_Qtrue);
- if (memcmp(ptr1, ptr2, len) == 0)
- return ((VALUE)RUBY_Qtrue);
- return ((VALUE)RUBY_Qfalse);
-}
-extern long rb_backtrace_length_limit;
-extern VALUE rb_eEAGAIN;
-extern VALUE rb_eEWOULDBLOCK;
-extern VALUE rb_eEINPROGRESS;
-__attribute__((__format__(__printf__, 3, 0)))
-void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
-__declspec(noreturn) void rb_async_bug_errno(const char *,int);
-const char *rb_builtin_type_name(int t);
-const char *rb_builtin_class_name(VALUE x);
-__attribute__((__format__(__printf__, (1), (3)))) void rb_warn_deprecated(const char *fmt, const char *suggest, ...);
-__attribute__((__format__(__printf__, (2), (4)))) void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...);
-__attribute__((__format__(__printf__, 6, 0)))
-VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_enc_warn(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__format__(__printf__, (2), (3)))) void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...);
-__attribute__((__format__(__printf__, (3), (4)))) void rb_syserr_enc_warning(int err, rb_encoding *enc, const char *fmt, ...);
-rb_warning_category_t rb_warning_category_from_name(VALUE category);
-_Bool rb_warning_category_enabled_p(rb_warning_category_t category);
-VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
-VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
-VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
-__attribute__((__format__(__printf__, (1), (2)))) VALUE rb_warning_string(const char *fmt, ...);
-__attribute__((__format__(__printf__, 2, 0)))
-__declspec(noreturn) void rb_vraise(VALUE, const char *, va_list);
-__declspec(noreturn) static inline void rb_raise_cstr(VALUE etype, const char *mesg);
-__declspec(noreturn) static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg);
-__declspec(noreturn) static inline void rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name);
-__declspec(noreturn) static inline void rb_name_err_raise(const char *mesg, VALUE recv, VALUE name);
-__declspec(noreturn) static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name);
-static inline void Check_Type(VALUE v, enum ruby_value_type t);
-static inline _Bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type);
-int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
-__declspec(noreturn) void rb_sys_fail_path_in(const char *func_name, VALUE path);
-__declspec(noreturn) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
-VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path);
-static inline void
-rb_raise_cstr_i(VALUE etype, VALUE mesg)
-{
- VALUE exc = rb_exc_new_str(etype, mesg);
- rb_exc_raise(exc);
-}
-static inline void
-rb_raise_cstr(VALUE etype, const char *mesg)
-{
- VALUE str = ((__builtin_constant_p(mesg) ? rbimpl_str_new_cstr : rb_str_new_cstr) (mesg));
- rb_raise_cstr_i(etype, str);
-}
-static inline void
-rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name)
-{
- VALUE exc = rb_name_err_new(mesg, recv, name);
- rb_exc_raise(exc);
-}
-static inline void
-rb_name_err_raise(const char *mesg, VALUE recv, VALUE name)
-{
- VALUE str = (__builtin_constant_p(mesg) ? rb_fstring_new((mesg), (long)strlen(mesg)) : (rb_fstring_cstr)(mesg));
- rb_name_err_raise_str(str, recv, name);
-}
-static inline void
-rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name)
-{
- VALUE exc = rb_key_err_new(mesg, recv, name);
- rb_exc_raise(exc);
-}
-static inline _Bool
-rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
-{
- return (__builtin_constant_p(RUBY_T_DATA) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_DATA)) : (RB_TYPE_P)((obj), (RUBY_T_DATA))) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type);
-}
-
-extern ID ruby_static_id_signo;
-extern ID ruby_static_id_status;
-VALUE rb_refinement_module_get_refined_class(VALUE module);
-void rb_class_modify_check(VALUE);
-__declspec(noreturn) VALUE rb_f_raise(int argc, VALUE *argv);
-VALUE rb_get_backtrace(VALUE info);
-void rb_call_end_proc(VALUE data);
-void rb_mark_end_proc(void);
-
-void Init_class_hierarchy(void);
-void Init_enc(void);
-void Init_ext(void);
-void Init_File(void);
-void Init_heap(void);
-int Init_enc_set_filesystem_encoding(void);
-void Init_newline(void);
-void Init_BareVM(void);
-void Init_vm_objects(void);
-void Init_vm_backtrace(void);
-void Init_vm_eval(void);static inline
-void Init_vm_stack_canary(void);
-void Init_eval_method(void);
-void rb_call_inits(void);
-
-VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
-__declspec(noreturn) void rb_undefined_alloc(VALUE klass);
-double rb_num_to_dbl(VALUE val);
-VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
-VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
-VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
-int rb_bool_expected(VALUE, const char *, int raise);
-static inline void RBASIC_CLEAR_CLASS(VALUE obj);
-static inline void RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass);
-static inline void RBASIC_SET_CLASS(VALUE obj, VALUE klass);
-int rb_opts_exception_p(VALUE opts, int default_value);
-__attribute__((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
-__attribute__((__const__)) VALUE rb_obj_not(VALUE obj);
-VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
-void rb_obj_copy_ivar(VALUE dest, VALUE obj);
-VALUE rb_false(VALUE obj);
-VALUE rb_convert_type_with_id(VALUE v, int t, const char* nam, ID mid);
-VALUE rb_obj_size(VALUE self, VALUE args, VALUE obj);
-VALUE rb_get_freeze_opt(int argc, VALUE *argv);
-static inline void
-RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass)
-{
- const VALUE *ptr = &((struct RBasic *)(obj))->klass;
- *(VALUE *)ptr = klass;
-}
-static inline void
-RBASIC_CLEAR_CLASS(VALUE obj)
-{
- RBASIC_SET_CLASS_RAW(obj, 0);
-}
-static inline void
-RBASIC_SET_CLASS(VALUE obj, VALUE klass)
-{
- VALUE oldv = RBASIC_CLASS(obj);
- RBASIC_SET_CLASS_RAW(obj, klass);
- (rb_obj_written((VALUE)(obj), (VALUE)(oldv), (VALUE)(klass), "./internal/object.h", 59));
-}
-
-struct rb_iseq_struct;
-VALUE rb_parser_set_yydebug(VALUE, VALUE);
-void *rb_parser_load_file(VALUE parser, VALUE name);
-void rb_parser_keep_script_lines(VALUE vparser);
-void rb_parser_error_tolerant(VALUE vparser);
-void rb_parser_keep_tokens(VALUE vparser);
-VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
-
-struct rb_block;
-struct rb_iseq_struct;
-VALUE rb_proc_location(VALUE self);
-st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
-int rb_block_pair_yield_optimizable(void);
-int rb_block_arity(void);
-int rb_block_min_max_arity(int *max);
-VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
-VALUE rb_callable_receiver(VALUE);
-VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
-VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
-VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
-VALUE rb_sym_to_proc(VALUE sym);
-
-VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
-VALUE rb_reg_check_preprocess(VALUE);
-long rb_reg_search0(VALUE, VALUE, long, int, int);
-VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
-_Bool rb_reg_start_with_p(VALUE re, VALUE str);
-VALUE rb_reg_hash(VALUE re);
-VALUE rb_reg_equal(VALUE re1, VALUE re2);
-void rb_backref_set_string(VALUE string, long pos, long len);
-void rb_match_unbusy(VALUE);
-int rb_match_count(VALUE match);
-int rb_match_nth_defined(int nth, VALUE match);
-VALUE rb_reg_new_ary(VALUE ary, int options);
-
-VALUE rb_to_symbol_type(VALUE obj);
-VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
-VALUE rb_sym_intern_ascii(const char *ptr, long len);
-VALUE rb_sym_intern_ascii_cstr(const char *ptr);
-int rb_is_const_name(VALUE name);
-int rb_is_class_name(VALUE name);
-int rb_is_instance_name(VALUE name);
-int rb_is_local_name(VALUE name);
-__attribute__((__pure__)) int rb_is_const_sym(VALUE sym);
-__attribute__((__pure__)) int rb_is_attrset_sym(VALUE sym);
-ID rb_make_internal_id(void);
-ID rb_make_temporary_id(size_t n);
-void rb_gc_free_dsymbol(VALUE);
-int rb_static_id_valid_p(ID id);
-
-struct rb_thread_struct;
-VALUE rb_obj_is_mutex(VALUE obj);
-VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
-void rb_thread_execute_interrupts(VALUE th);
-VALUE rb_get_coverages(void);
-int rb_get_coverage_mode(void);
-VALUE rb_default_coverage(int);
-VALUE rb_thread_shield_new(void);
-_Bool rb_thread_shield_owned(VALUE self);
-VALUE rb_thread_shield_wait(VALUE self);
-VALUE rb_thread_shield_release(VALUE self);
-VALUE rb_thread_shield_destroy(VALUE self);
-int rb_thread_to_be_killed(VALUE thread);
-void rb_mutex_allow_trap(VALUE self, int val);
-VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
-VALUE rb_mutex_owned_p(VALUE self);
-VALUE rb_exec_recursive_outer_mid(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h, ID mid);
-int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
-VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
-int ruby_thread_has_gvl_p(void);
-int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
-
-
-typedef struct {
- int coverage_sandboxed;
- intptr_t coverage_fd;
- unsigned int coverage_max_block_size;
-} __sanitizer_sandbox_arguments;
-void __sanitizer_set_report_path(const char *path);
-void __sanitizer_set_report_fd(void *fd);
-const char *__sanitizer_get_report_path();
-void __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);
-void __sanitizer_report_error_summary(const char *error_summary);
-uint16_t __sanitizer_unaligned_load16(const void *p);
-uint32_t __sanitizer_unaligned_load32(const void *p);
-uint64_t __sanitizer_unaligned_load64(const void *p);
-void __sanitizer_unaligned_store16(void *p, uint16_t x);
-void __sanitizer_unaligned_store32(void *p, uint32_t x);
-void __sanitizer_unaligned_store64(void *p, uint64_t x);
-int __sanitizer_acquire_crash_state();
-void __sanitizer_annotate_contiguous_container(const void *beg,
- const void *end,
- const void *old_mid,
- const void *new_mid);
-int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
- const void *end);
-const void *__sanitizer_contiguous_container_find_bad_address(const void *beg,
- const void *mid,
- const void *end);
-void __sanitizer_print_stack_trace(void);
-void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
- size_t out_buf_size);
-void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
- char *out_buf, size_t out_buf_size);
-void __sanitizer_set_death_callback(void (*callback)(void));
-void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
- const void *s2, size_t n, int result);
-void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
- const char *s2, size_t n, int result);
-void __sanitizer_weak_hook_strncasecmp(void *called_pc, const char *s1,
- const char *s2, size_t n, int result);
-void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
- const char *s2, int result);
-void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1,
- const char *s2, int result);
-void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1,
- const char *s2, char *result);
-void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1,
- const char *s2, char *result);
-void __sanitizer_weak_hook_memmem(void *called_pc,
- const void *s1, size_t len1,
- const void *s2, size_t len2, void *result);
-void __sanitizer_print_memory_profile(size_t top_percent,
- size_t max_number_of_contexts);
-void __sanitizer_start_switch_fiber(void **fake_stack_save,
- const void *bottom, size_t size);
-void __sanitizer_finish_switch_fiber(void *fake_stack_save,
- const void **bottom_old,
- size_t *size_old);
-int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
- size_t module_path_len,
- void **pc_offset);
-void __asan_poison_memory_region(void const volatile *addr, size_t size);
-void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
-int __asan_address_is_poisoned(void const volatile *addr);
-void *__asan_region_is_poisoned(void *beg, size_t size);
-void __asan_describe_address(void *addr);
-int __asan_report_present(void);
-void *__asan_get_report_pc(void);
-void *__asan_get_report_bp(void);
-void *__asan_get_report_sp(void);
-void *__asan_get_report_address(void);
-int __asan_get_report_access_type(void);
-size_t __asan_get_report_access_size(void);
-const char *__asan_get_report_description(void);
-const char *__asan_locate_address(void *addr, char *name, size_t name_size,
- void **region_address, size_t *region_size);
-size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size,
- int *thread_id);
-size_t __asan_get_free_stack(void *addr, void **trace, size_t size,
- int *thread_id);
-void __asan_get_shadow_mapping(size_t *shadow_scale, size_t *shadow_offset);
-void __asan_report_error(void *pc, void *bp, void *sp,
- void *addr, int is_write, size_t access_size);
-void __asan_set_death_callback(void (*callback)(void));
-void __asan_set_error_report_callback(void (*callback)(const char *));
-void __asan_on_error(void);
-void __asan_print_accumulated_stats(void);
-const char* __asan_default_options(void);
-void *__asan_get_current_fake_stack(void);
-void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
- void **end);
-void __asan_handle_no_return(void);
-int __asan_update_allocation_context(void* addr);
-
-
-
-struct rb_id_table;
-enum rb_id_table_iterator_result {
- ID_TABLE_CONTINUE = ST_CONTINUE,
- ID_TABLE_STOP = ST_STOP,
- ID_TABLE_DELETE = ST_DELETE,
- ID_TABLE_REPLACE = ST_REPLACE,
- ID_TABLE_ITERATOR_RESULT_END
-};
-struct rb_id_table *rb_id_table_create(size_t size);
-void rb_id_table_free(struct rb_id_table *tbl);
-void rb_id_table_clear(struct rb_id_table *tbl);
-size_t rb_id_table_memsize(const struct rb_id_table *tbl);
-int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val);
-int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp);
-int rb_id_table_delete(struct rb_id_table *tbl, ID id);
-typedef enum rb_id_table_iterator_result rb_id_table_update_value_callback_func_t(VALUE *val, void *data, int existing);
-typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data);
-typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data);
-void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data);
-void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data);
-void rb_id_table_foreach_values_with_replace(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, rb_id_table_update_value_callback_func_t *replace, void *data);
-size_t rb_id_table_size(const struct rb_id_table *tbl);
-
-typedef enum {
- CONST_DEPRECATED = 0x100,
- CONST_VISIBILITY_MASK = 0xff,
- CONST_PUBLIC = 0x00,
- CONST_PRIVATE,
- CONST_VISIBILITY_MAX
-} rb_const_flag_t;
-typedef struct rb_const_entry_struct {
- rb_const_flag_t flag;
- int line;
- VALUE value;
- VALUE file;
-} rb_const_entry_t;
-VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
-void rb_free_const_table(struct rb_id_table *tbl);
-VALUE rb_const_source_location(VALUE, ID);
-int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
-rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
-VALUE rb_public_const_get_at(VALUE klass, ID id);
-VALUE rb_public_const_get_from(VALUE klass, ID id);
-int rb_public_const_defined_from(VALUE klass, ID id);
-VALUE rb_const_source_location_at(VALUE, ID);
-void rb_gc_mark_global_tbl(void);
-void rb_gc_update_global_tbl(void);
-size_t rb_generic_ivar_memsize(VALUE);
-VALUE rb_search_class_path(VALUE);
-VALUE rb_attr_delete(VALUE, ID);
-void rb_autoload_str(VALUE mod, ID id, VALUE file);
-VALUE rb_autoload_at_p(VALUE, ID, int);
-__declspec(noreturn) VALUE rb_mod_const_missing(VALUE,VALUE);
-rb_gvar_getter_t *rb_gvar_getter_function_of(ID);
-rb_gvar_setter_t *rb_gvar_setter_function_of(ID);
-void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
-void rb_gvar_ractor_local(const char *name);
-static inline _Bool ROBJ_TRANSIENT_P(VALUE obj);
-static inline void ROBJ_TRANSIENT_SET(VALUE obj);
-static inline void ROBJ_TRANSIENT_UNSET(VALUE obj);
-struct gen_ivtbl;
-int rb_gen_ivtbl_get(VALUE obj, ID id, struct gen_ivtbl **ivtbl);
-int rb_obj_evacuate_ivs_to_hash_table(ID key, VALUE val, st_data_t arg);
-void rb_mark_generic_ivar(VALUE);
-void rb_mv_generic_ivar(VALUE src, VALUE dst);
-VALUE rb_const_missing(VALUE klass, VALUE name);
-int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
-void rb_iv_tbl_copy(VALUE dst, VALUE src);
-VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
-VALUE rb_gvar_get(ID);
-VALUE rb_gvar_set(ID, VALUE);
-VALUE rb_gvar_defined(ID);
-void rb_const_warn_if_deprecated(const rb_const_entry_t *, VALUE, ID);
-rb_shape_t * rb_grow_iv_list(VALUE obj);
-void rb_ensure_iv_list_size(VALUE obj, uint32_t len, uint32_t newsize);
-struct gen_ivtbl *rb_ensure_generic_iv_list_size(VALUE obj, rb_shape_t *shape, uint32_t newsize);
-attr_index_t rb_obj_ivar_set(VALUE obj, ID id, VALUE val);
-static inline _Bool
-ROBJ_TRANSIENT_P(VALUE obj)
-{
- return RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-static inline void
-ROBJ_TRANSIENT_SET(VALUE obj)
-{
- RB_FL_SET_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-static inline void
-ROBJ_TRANSIENT_UNSET(VALUE obj)
-{
- RB_FL_UNSET_RAW(obj, ((VALUE)RUBY_FL_USER2));
-}
-
-
-
-enum rb_mjit_func_state {
- MJIT_FUNC_NOT_COMPILED = 0,
- MJIT_FUNC_COMPILING = 1,
- MJIT_FUNC_FAILED = 2,
-};
-struct mjit_options {
- _Bool on;
- _Bool save_temps;
- _Bool warnings;
- _Bool debug;
- char* debug_flags;
- _Bool wait;
- unsigned int call_threshold;
- int verbose;
- int max_cache_size;
- _Bool pause;
- _Bool custom;
-};
-struct rb_mjit_compile_info {
- _Bool disable_ivar_cache;
- _Bool disable_exivar_cache;
- _Bool disable_send_cache;
- _Bool disable_inlining;
- _Bool disable_const_cache;
-};
-typedef VALUE (*jit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
-extern struct mjit_options mjit_opts;
-extern _Bool mjit_call_p;
-extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
-extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
-extern void rb_mjit_recompile_send(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq);
-extern void rb_mjit_recompile_const(const rb_iseq_t *iseq);
-extern void mjit_cancel_all(const char *reason);
-extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id);
-extern void mjit_init(const struct mjit_options *opts);
-extern void mjit_free_iseq(const rb_iseq_t *iseq);
-extern void mjit_update_references(const rb_iseq_t *iseq);
-extern void mjit_mark(void);
-extern void mjit_mark_cc_entries(const struct rb_iseq_constant_body *const body);
-extern void mjit_notify_waitpid(int exit_code);
-extern void rb_mjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop);
-extern void rb_mjit_cme_invalidate(rb_callable_method_entry_t *cme);
-extern void rb_mjit_before_ractor_spawn(void);
-extern void rb_mjit_constant_state_changed(ID id);
-extern void rb_mjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic, unsigned insn_idx);
-extern void rb_mjit_tracing_invalidate_all(rb_event_flag_t new_iseq_events);
-void mjit_child_after_fork(void);
-VALUE mjit_pause(_Bool wait_p);
-VALUE mjit_resume(void);
-void mjit_finish(_Bool close_handle_p);
-
-static inline _Bool rb_yjit_enabled_p(void) { return 0; }
-static inline unsigned rb_yjit_call_threshold(void) { return (2147483647 *2U +1U); }
-static inline void rb_yjit_invalidate_all_method_lookup_assumptions(void) {}
-static inline void rb_yjit_cme_invalidate(rb_callable_method_entry_t *cme) {}
-static inline void rb_yjit_collect_vm_usage_insn(int insn) {}
-static inline void rb_yjit_collect_binding_alloc(void) {}
-static inline void rb_yjit_collect_binding_set(void) {}
-static inline _Bool rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec) { return 0; }
-static inline void rb_yjit_init(void) {}
-static inline void rb_yjit_bop_redefined(int redefined_flag, enum ruby_basic_operators bop) {}
-static inline void rb_yjit_constant_state_changed(ID id) {}
-static inline void rb_yjit_iseq_mark(void *payload) {}
-static inline void rb_yjit_iseq_update_references(void *payload) {}
-static inline void rb_yjit_iseq_free(void *payload) {}
-static inline void rb_yjit_before_ractor_spawn(void) {}
-static inline void rb_yjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic, unsigned insn_idx) {}
-static inline void rb_yjit_tracing_invalidate_all(void) {}
-
-
-typedef struct rb_vm_struct ruby_vm_t;
-int ruby_vm_destruct(ruby_vm_t *vm);
-void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
-
-
-enum rb_debug_counter_type {
-RB_DEBUG_COUNTER_mc_inline_hit,
-RB_DEBUG_COUNTER_mc_inline_miss_klass,
-RB_DEBUG_COUNTER_mc_inline_miss_invalidated,
-RB_DEBUG_COUNTER_mc_inline_miss_empty,
-RB_DEBUG_COUNTER_mc_inline_miss_same_cc,
-RB_DEBUG_COUNTER_mc_inline_miss_same_cme,
-RB_DEBUG_COUNTER_mc_inline_miss_same_def,
-RB_DEBUG_COUNTER_mc_inline_miss_diff,
-RB_DEBUG_COUNTER_cvar_write_inline_hit,
-RB_DEBUG_COUNTER_cvar_read_inline_hit,
-RB_DEBUG_COUNTER_cvar_inline_miss,
-RB_DEBUG_COUNTER_cvar_class_invalidate,
-RB_DEBUG_COUNTER_cvar_include_invalidate,
-RB_DEBUG_COUNTER_mc_cme_complement,
-RB_DEBUG_COUNTER_mc_cme_complement_hit,
-RB_DEBUG_COUNTER_mc_search,
-RB_DEBUG_COUNTER_mc_search_notfound,
-RB_DEBUG_COUNTER_mc_search_super,
-RB_DEBUG_COUNTER_ci_packed,
-RB_DEBUG_COUNTER_ci_kw,
-RB_DEBUG_COUNTER_ci_nokw,
-RB_DEBUG_COUNTER_ci_runtime,
-RB_DEBUG_COUNTER_cc_new,
-RB_DEBUG_COUNTER_cc_temp,
-RB_DEBUG_COUNTER_cc_found_in_ccs,
-RB_DEBUG_COUNTER_cc_not_found_in_ccs,
-RB_DEBUG_COUNTER_cc_ent_invalidate,
-RB_DEBUG_COUNTER_cc_cme_invalidate,
-RB_DEBUG_COUNTER_cc_invalidate_leaf,
-RB_DEBUG_COUNTER_cc_invalidate_leaf_ccs,
-RB_DEBUG_COUNTER_cc_invalidate_leaf_callable,
-RB_DEBUG_COUNTER_cc_invalidate_tree,
-RB_DEBUG_COUNTER_cc_invalidate_tree_cme,
-RB_DEBUG_COUNTER_cc_invalidate_tree_callable,
-RB_DEBUG_COUNTER_cc_invalidate_negative,
-RB_DEBUG_COUNTER_ccs_free,
-RB_DEBUG_COUNTER_ccs_maxlen,
-RB_DEBUG_COUNTER_ccs_found,
-RB_DEBUG_COUNTER_ccs_not_found,
-RB_DEBUG_COUNTER_call0_public,
-RB_DEBUG_COUNTER_call0_other,
-RB_DEBUG_COUNTER_gccct_hit,
-RB_DEBUG_COUNTER_gccct_miss,
-RB_DEBUG_COUNTER_gccct_null,
-RB_DEBUG_COUNTER_iseq_num,
-RB_DEBUG_COUNTER_iseq_cd_num,
-RB_DEBUG_COUNTER_ccf_general,
-RB_DEBUG_COUNTER_ccf_iseq_setup,
-RB_DEBUG_COUNTER_ccf_iseq_setup_0start,
-RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start,
-RB_DEBUG_COUNTER_ccf_iseq_fix,
-RB_DEBUG_COUNTER_ccf_iseq_opt,
-RB_DEBUG_COUNTER_ccf_iseq_kw1,
-RB_DEBUG_COUNTER_ccf_iseq_kw2,
-RB_DEBUG_COUNTER_ccf_cfunc,
-RB_DEBUG_COUNTER_ccf_cfunc_with_frame,
-RB_DEBUG_COUNTER_ccf_ivar,
-RB_DEBUG_COUNTER_ccf_attrset,
-RB_DEBUG_COUNTER_ccf_method_missing,
-RB_DEBUG_COUNTER_ccf_zsuper,
-RB_DEBUG_COUNTER_ccf_bmethod,
-RB_DEBUG_COUNTER_ccf_opt_send,
-RB_DEBUG_COUNTER_ccf_opt_call,
-RB_DEBUG_COUNTER_ccf_opt_block_call,
-RB_DEBUG_COUNTER_ccf_opt_struct_aref,
-RB_DEBUG_COUNTER_ccf_opt_struct_aset,
-RB_DEBUG_COUNTER_ccf_super_method,
-RB_DEBUG_COUNTER_frame_push,
-RB_DEBUG_COUNTER_frame_push_method,
-RB_DEBUG_COUNTER_frame_push_block,
-RB_DEBUG_COUNTER_frame_push_class,
-RB_DEBUG_COUNTER_frame_push_top,
-RB_DEBUG_COUNTER_frame_push_cfunc,
-RB_DEBUG_COUNTER_frame_push_ifunc,
-RB_DEBUG_COUNTER_frame_push_eval,
-RB_DEBUG_COUNTER_frame_push_rescue,
-RB_DEBUG_COUNTER_frame_push_dummy,
-RB_DEBUG_COUNTER_frame_R2R,
-RB_DEBUG_COUNTER_frame_R2C,
-RB_DEBUG_COUNTER_frame_C2C,
-RB_DEBUG_COUNTER_frame_C2R,
-RB_DEBUG_COUNTER_ivar_get_ic_hit,
-RB_DEBUG_COUNTER_ivar_get_ic_miss,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject,
-RB_DEBUG_COUNTER_ivar_set_ic_hit,
-RB_DEBUG_COUNTER_ivar_set_ic_miss,
-RB_DEBUG_COUNTER_ivar_set_ic_miss_iv_hit,
-RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject,
-RB_DEBUG_COUNTER_ivar_get_base,
-RB_DEBUG_COUNTER_ivar_set_base,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_set,
-RB_DEBUG_COUNTER_ivar_get_cc_miss_set,
-RB_DEBUG_COUNTER_ivar_get_ic_miss_unset,
-RB_DEBUG_COUNTER_ivar_get_cc_miss_unset,
-RB_DEBUG_COUNTER_lvar_get,
-RB_DEBUG_COUNTER_lvar_get_dynamic,
-RB_DEBUG_COUNTER_lvar_set,
-RB_DEBUG_COUNTER_lvar_set_dynamic,
-RB_DEBUG_COUNTER_lvar_set_slowpath,
-RB_DEBUG_COUNTER_gc_count,
-RB_DEBUG_COUNTER_gc_minor_newobj,
-RB_DEBUG_COUNTER_gc_minor_malloc,
-RB_DEBUG_COUNTER_gc_minor_method,
-RB_DEBUG_COUNTER_gc_minor_capi,
-RB_DEBUG_COUNTER_gc_minor_stress,
-RB_DEBUG_COUNTER_gc_major_nofree,
-RB_DEBUG_COUNTER_gc_major_oldgen,
-RB_DEBUG_COUNTER_gc_major_shady,
-RB_DEBUG_COUNTER_gc_major_force,
-RB_DEBUG_COUNTER_gc_major_oldmalloc,
-RB_DEBUG_COUNTER_gc_enter_start,
-RB_DEBUG_COUNTER_gc_enter_mark_continue,
-RB_DEBUG_COUNTER_gc_enter_sweep_continue,
-RB_DEBUG_COUNTER_gc_enter_rest,
-RB_DEBUG_COUNTER_gc_enter_finalizer,
-RB_DEBUG_COUNTER_gc_isptr_trial,
-RB_DEBUG_COUNTER_gc_isptr_range,
-RB_DEBUG_COUNTER_gc_isptr_align,
-RB_DEBUG_COUNTER_gc_isptr_maybe,
-RB_DEBUG_COUNTER_obj_newobj,
-RB_DEBUG_COUNTER_obj_newobj_slowpath,
-RB_DEBUG_COUNTER_obj_newobj_wb_unprotected,
-RB_DEBUG_COUNTER_obj_free,
-RB_DEBUG_COUNTER_obj_promote,
-RB_DEBUG_COUNTER_obj_wb_unprotect,
-RB_DEBUG_COUNTER_obj_obj_embed,
-RB_DEBUG_COUNTER_obj_obj_transient,
-RB_DEBUG_COUNTER_obj_obj_ptr,
-RB_DEBUG_COUNTER_obj_obj_too_complex,
-RB_DEBUG_COUNTER_obj_str_ptr,
-RB_DEBUG_COUNTER_obj_str_embed,
-RB_DEBUG_COUNTER_obj_str_shared,
-RB_DEBUG_COUNTER_obj_str_nofree,
-RB_DEBUG_COUNTER_obj_str_fstr,
-RB_DEBUG_COUNTER_obj_ary_embed,
-RB_DEBUG_COUNTER_obj_ary_transient,
-RB_DEBUG_COUNTER_obj_ary_ptr,
-RB_DEBUG_COUNTER_obj_ary_extracapa,
-RB_DEBUG_COUNTER_obj_ary_shared_create,
-RB_DEBUG_COUNTER_obj_ary_shared,
-RB_DEBUG_COUNTER_obj_ary_shared_root_occupied,
-RB_DEBUG_COUNTER_obj_hash_empty,
-RB_DEBUG_COUNTER_obj_hash_1,
-RB_DEBUG_COUNTER_obj_hash_2,
-RB_DEBUG_COUNTER_obj_hash_3,
-RB_DEBUG_COUNTER_obj_hash_4,
-RB_DEBUG_COUNTER_obj_hash_5_8,
-RB_DEBUG_COUNTER_obj_hash_g8,
-RB_DEBUG_COUNTER_obj_hash_null,
-RB_DEBUG_COUNTER_obj_hash_ar,
-RB_DEBUG_COUNTER_obj_hash_st,
-RB_DEBUG_COUNTER_obj_hash_transient,
-RB_DEBUG_COUNTER_obj_hash_force_convert,
-RB_DEBUG_COUNTER_obj_struct_embed,
-RB_DEBUG_COUNTER_obj_struct_transient,
-RB_DEBUG_COUNTER_obj_struct_ptr,
-RB_DEBUG_COUNTER_obj_data_empty,
-RB_DEBUG_COUNTER_obj_data_xfree,
-RB_DEBUG_COUNTER_obj_data_imm_free,
-RB_DEBUG_COUNTER_obj_data_zombie,
-RB_DEBUG_COUNTER_obj_match_under4,
-RB_DEBUG_COUNTER_obj_match_ge4,
-RB_DEBUG_COUNTER_obj_match_ge8,
-RB_DEBUG_COUNTER_obj_match_ptr,
-RB_DEBUG_COUNTER_obj_iclass_ptr,
-RB_DEBUG_COUNTER_obj_class_ptr,
-RB_DEBUG_COUNTER_obj_module_ptr,
-RB_DEBUG_COUNTER_obj_bignum_ptr,
-RB_DEBUG_COUNTER_obj_bignum_embed,
-RB_DEBUG_COUNTER_obj_float,
-RB_DEBUG_COUNTER_obj_complex,
-RB_DEBUG_COUNTER_obj_rational,
-RB_DEBUG_COUNTER_obj_regexp_ptr,
-RB_DEBUG_COUNTER_obj_file_ptr,
-RB_DEBUG_COUNTER_obj_symbol,
-RB_DEBUG_COUNTER_obj_imemo_ment,
-RB_DEBUG_COUNTER_obj_imemo_iseq,
-RB_DEBUG_COUNTER_obj_imemo_env,
-RB_DEBUG_COUNTER_obj_imemo_tmpbuf,
-RB_DEBUG_COUNTER_obj_imemo_ast,
-RB_DEBUG_COUNTER_obj_imemo_cref,
-RB_DEBUG_COUNTER_obj_imemo_svar,
-RB_DEBUG_COUNTER_obj_imemo_throw_data,
-RB_DEBUG_COUNTER_obj_imemo_ifunc,
-RB_DEBUG_COUNTER_obj_imemo_memo,
-RB_DEBUG_COUNTER_obj_imemo_parser_strterm,
-RB_DEBUG_COUNTER_obj_imemo_callinfo,
-RB_DEBUG_COUNTER_obj_imemo_callcache,
-RB_DEBUG_COUNTER_obj_imemo_constcache,
-RB_DEBUG_COUNTER_artable_hint_hit,
-RB_DEBUG_COUNTER_artable_hint_miss,
-RB_DEBUG_COUNTER_artable_hint_notfound,
-RB_DEBUG_COUNTER_heap_xmalloc,
-RB_DEBUG_COUNTER_heap_xrealloc,
-RB_DEBUG_COUNTER_heap_xfree,
-RB_DEBUG_COUNTER_theap_alloc,
-RB_DEBUG_COUNTER_theap_alloc_fail,
-RB_DEBUG_COUNTER_theap_evacuate,
-RB_DEBUG_COUNTER_vm_sync_lock,
-RB_DEBUG_COUNTER_vm_sync_lock_enter,
-RB_DEBUG_COUNTER_vm_sync_lock_enter_nb,
-RB_DEBUG_COUNTER_vm_sync_lock_enter_cr,
-RB_DEBUG_COUNTER_vm_sync_barrier,
- RB_DEBUG_COUNTER_MAX
-};
-void rb_debug_counter_show_results(const char *msg);
-size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
-void ruby_debug_counter_reset(void);
-void ruby_debug_counter_show_at_exit(int enable);
-
-struct rb_subclass_entry {
- VALUE klass;
- struct rb_subclass_entry *next;
- struct rb_subclass_entry *prev;
-};
-struct rb_cvar_class_tbl_entry {
- uint32_t index;
- rb_serial_t global_cvar_state;
- VALUE class_value;
-};
-struct rb_classext_struct {
- VALUE *iv_ptr;
- struct rb_id_table *const_tbl;
- struct rb_id_table *callable_m_tbl;
- struct rb_id_table *cc_tbl;
- struct rb_id_table *cvc_tbl;
- size_t superclass_depth;
- VALUE *superclasses;
- struct rb_subclass_entry *subclasses;
- struct rb_subclass_entry *subclass_entry;
- struct rb_subclass_entry *module_subclass_entry;
- const VALUE origin_;
- const VALUE refined_class;
- rb_alloc_func_t allocator;
- const VALUE includer;
- uint32_t max_iv_count;
- uint32_t variation_count;
-};
-struct RClass {
- struct RBasic basic;
- VALUE super;
- struct rb_id_table *m_tbl;
-};
-typedef struct rb_subclass_entry rb_subclass_entry_t;
-typedef struct rb_classext_struct rb_classext_t;
-void rb_class_subclass_add(VALUE super, VALUE klass);
-void rb_class_remove_from_super_subclasses(VALUE);
-void rb_class_update_superclasses(VALUE);
-size_t rb_class_superclasses_memsize(VALUE);
-void rb_class_remove_subclass_head(VALUE);
-int rb_singleton_class_internal_p(VALUE sklass);
-VALUE rb_class_boot(VALUE);
-VALUE rb_class_s_alloc(VALUE klass);
-VALUE rb_module_s_alloc(VALUE klass);
-void rb_module_set_initialized(VALUE module);
-void rb_module_check_initializable(VALUE module);
-VALUE rb_make_metaclass(VALUE, VALUE);
-VALUE rb_include_class_new(VALUE, VALUE);
-void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
-void rb_class_detach_subclasses(VALUE);
-void rb_class_detach_module_subclasses(VALUE);
-void rb_class_remove_from_module_subclasses(VALUE);
-VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj);
-VALUE rb_class_undefined_instance_methods(VALUE mod);
-VALUE rb_special_singleton_class(VALUE);
-VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
-VALUE rb_singleton_class_get(VALUE obj);
-void rb_undef_methods_from(VALUE klass, VALUE super);
-static inline void RCLASS_SET_ORIGIN(VALUE klass, VALUE origin);
-static inline void RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass);
-static inline VALUE RCLASS_SUPER(VALUE klass);
-static inline VALUE RCLASS_SET_SUPER(VALUE klass, VALUE super);
-static inline void RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass);
-VALUE rb_class_inherited(VALUE, VALUE);
-VALUE rb_keyword_error_new(const char *, VALUE);
-static inline void
-RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
-{
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&(((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_))) unaligned_member_access_result = ((VALUE *)(&(((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_)));
- ; unaligned_member_access_result; }), (VALUE)(origin), "./internal/class.h", 142);
- if (klass != origin) RB_FL_SET(origin, ((VALUE)RUBY_FL_USER0));
-}
-static inline void
-RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass)
-{
- RB_FL_SET(iclass, ((VALUE)RUBY_FL_USER3));
-}
-static inline _Bool
-RICLASS_OWNS_M_TBL_P(VALUE iclass)
-{
- return RB_FL_TEST_RAW(iclass, ((VALUE)RUBY_FL_USER0) | ((VALUE)RUBY_FL_USER3)) == ((VALUE)RUBY_FL_USER0);
-}
-static inline void
-RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
-{
- rb_obj_write((VALUE)(iclass), __extension__({
- ;
- ; __typeof__((VALUE *)(&(((rb_classext_t *)((char *)(iclass) + sizeof(struct RClass)))->includer))) unaligned_member_access_result = ((VALUE *)(&(((rb_classext_t *)((char *)(iclass) + sizeof(struct RClass)))->includer)));
- ; unaligned_member_access_result; }), (VALUE)(klass), "./internal/class.h", 161);
-}
-static inline VALUE
-RCLASS_SUPER(VALUE klass)
-{
- return ((struct RClass *)(klass))->super;
-}
-static inline VALUE
-RCLASS_SET_SUPER(VALUE klass, VALUE super)
-{
- if (super) {
- rb_class_remove_from_super_subclasses(klass);
- rb_class_subclass_add(super, klass);
- }
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&((struct RClass *)(klass))->super)) unaligned_member_access_result = ((VALUE *)(&((struct RClass *)(klass))->super));
- ; unaligned_member_access_result; }), (VALUE)(super), "./internal/class.h", 177);
- rb_class_update_superclasses(klass);
- return super;
-}
-enum vm_call_flag_bits {
- VM_CALL_ARGS_SPLAT_bit,
- VM_CALL_ARGS_BLOCKARG_bit,
- VM_CALL_FCALL_bit,
- VM_CALL_VCALL_bit,
- VM_CALL_ARGS_SIMPLE_bit,
- VM_CALL_BLOCKISEQ_bit,
- VM_CALL_KWARG_bit,
- VM_CALL_KW_SPLAT_bit,
- VM_CALL_TAILCALL_bit,
- VM_CALL_SUPER_bit,
- VM_CALL_ZSUPER_bit,
- VM_CALL_OPT_SEND_bit,
- VM_CALL_KW_SPLAT_MUT_bit,
- VM_CALL__END
-};
-struct rb_callinfo_kwarg {
- int keyword_len;
- VALUE keywords[];
-};
-static inline size_t
-rb_callinfo_kwarg_bytes(int keyword_len)
-{
- return rb_size_mul_add_or_raise(
- keyword_len,
- sizeof(VALUE),
- sizeof(struct rb_callinfo_kwarg),
- rb_eRuntimeError);
-}
-struct rb_callinfo {
- VALUE flags;
- const struct rb_callinfo_kwarg *kwarg;
- VALUE mid;
- VALUE flag;
- VALUE argc;
-};
-static inline _Bool
-vm_ci_packed_p(const struct rb_callinfo *ci)
-{
- if ((__builtin_expect(!!(((VALUE)ci) & 0x01), 1))) {
- return 1;
- }
- else {
- ((void)0);
- return 0;
- }
-}
-static inline _Bool
-vm_ci_p(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci) || imemo_type_p((VALUE)ci, imemo_callinfo)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline ID
-vm_ci_mid(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (((VALUE)ci) >> (1 + 15 + 16)) & ((((VALUE)1)<<32) - 1);
- }
- else {
- return (ID)ci->mid;
- }
-}
-static inline unsigned int
-vm_ci_flag(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (unsigned int)((((VALUE)ci) >> (1 + 15)) & ((((VALUE)1)<<16) - 1));
- }
- else {
- return (unsigned int)ci->flag;
- }
-}
-static inline unsigned int
-vm_ci_argc(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return (unsigned int)((((VALUE)ci) >> (1)) & ((((VALUE)1)<<15) - 1));
- }
- else {
- return (unsigned int)ci->argc;
- }
-}
-static inline const struct rb_callinfo_kwarg *
-vm_ci_kwarg(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- return ((void*)0);
- }
- else {
- return ci->kwarg;
- }
-}
-static inline void
-vm_ci_dump(const struct rb_callinfo *ci)
-{
- if (vm_ci_packed_p(ci)) {
- ruby_debug_printf("packed_ci ID:%s flag:%x argc:%u\n",
- rb_id2name(vm_ci_mid(ci)), vm_ci_flag(ci), vm_ci_argc(ci));
- }
- else {
- rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 177, __func__);
- }
-}
-static inline const struct rb_callinfo *
-vm_ci_new_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
-{
- if ((((mid ) & ~((((VALUE)1)<<32) - 1)) ? 0 : ((flag) & ~((((VALUE)1)<<16) - 1)) ? 0 : ((argc) & ~((((VALUE)1)<<15) - 1)) ? 0 : (kwarg) ? 0 : 1)) {
- ((void)0);
- return ((const struct rb_callinfo *) ((((VALUE)(mid )) << (1 + 15 + 16)) | (((VALUE)(flag)) << (1 + 15)) | (((VALUE)(argc)) << (1)) | RUBY_FIXNUM_FLAG));
- }
- const _Bool debug = 0;
- if (debug) ruby_debug_printf("%s:%d ", file, line);
- const struct rb_callinfo *ci = (const struct rb_callinfo *)
- rb_imemo_new(imemo_callinfo,
- (VALUE)mid,
- (VALUE)flag,
- (VALUE)argc,
- (VALUE)kwarg);
- if (debug) rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 218, __func__);
- if (kwarg) {
- ((void)0);
- }
- else {
- ((void)0);
- }
- ((void)0);
- ((void)0);
- return ci;
-}
-static inline const struct rb_callinfo *
-vm_ci_new_runtime_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
-{
- ((void)0);
- return vm_ci_new_(mid, flag, argc, kwarg, file, line);
-}
-static inline _Bool
-vm_ci_markable(const struct rb_callinfo *ci)
-{
- if (! ci) {
- return 0;
- }
- else if (vm_ci_packed_p(ci)) {
- return 1;
- }
- else {
- ((void)0);
- return ! RB_FL_ANY_RAW((VALUE)ci, ((VALUE)RUBY_FL_USER4));
- }
-}
-typedef VALUE (*vm_call_handler)(
- struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *cfp,
- struct rb_calling_info *calling);
-struct rb_callcache {
- const VALUE flags;
- const VALUE klass;
- const struct rb_callable_method_entry_struct * const cme_;
- const vm_call_handler call_;
- union {
- struct {
- uintptr_t value;
- } attr;
- const enum method_missing_reason method_missing_reason;
- VALUE v;
- } aux_;
-};
-extern const struct rb_callcache *rb_vm_empty_cc(void);
-extern const struct rb_callcache *rb_vm_empty_cc_for_super(void);
-static inline void vm_cc_attr_index_set(const struct rb_callcache *cc, attr_index_t index, shape_id_t dest_shape_id);
-static inline void
-vm_cc_attr_index_initialize(const struct rb_callcache *cc, shape_id_t shape_id)
-{
- vm_cc_attr_index_set(cc, (attr_index_t)-1, shape_id);
-}
-static inline const struct rb_callcache *
-vm_cc_new(VALUE klass,
- const struct rb_callable_method_entry_struct *cme,
- vm_call_handler call)
-{
- const struct rb_callcache *cc = (const struct rb_callcache *)rb_imemo_new(imemo_callcache, (VALUE)cme, (VALUE)call, 0, klass);
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- ((void)0);
- return cc;
-}
-static inline _Bool
-vm_cc_class_check(const struct rb_callcache *cc, VALUE klass)
-{
- ((void)0);
- ((void)0);
- return cc->klass == klass;
-}
-static inline int
-vm_cc_markable(const struct rb_callcache *cc)
-{
- ((void)0);
- return RB_FL_TEST_RAW((VALUE)cc, ((VALUE)RUBY_FL_FREEZE)) == 0;
-}
-static inline const struct rb_callable_method_entry_struct *
-vm_cc_cme(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- return cc->cme_;
-}
-static inline vm_call_handler
-vm_cc_call(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- return cc->call_;
-}
-static inline attr_index_t
-vm_cc_attr_index(const struct rb_callcache *cc)
-{
- ((void)0);
- return (attr_index_t)((cc->aux_.attr.value & (((VALUE)-1) >> 32)) - 1);
-}
-static inline shape_id_t
-vm_cc_attr_index_dest_shape_id(const struct rb_callcache *cc)
-{
- ((void)0);
- return cc->aux_.attr.value >> ((8 * 8) - 32);
-}
-static inline void
-vm_cc_atomic_shape_and_index(const struct rb_callcache *cc, shape_id_t * shape_id, attr_index_t * index)
-{
- uintptr_t cache_value = cc->aux_.attr.value;
- *shape_id = (shape_id_t)(cache_value >> ((8 * 8) - 32));
- *index = (attr_index_t)(cache_value & (((VALUE)-1) >> 32)) - 1;
- return;
-}
-static inline void
-vm_ic_atomic_shape_and_index(const struct iseq_inline_iv_cache_entry *ic, shape_id_t * shape_id, attr_index_t * index)
-{
- uintptr_t cache_value = ic->value;
- *shape_id = (shape_id_t)(cache_value >> ((8 * 8) - 32));
- *index = (attr_index_t)(cache_value & (((VALUE)-1) >> 32)) - 1;
- return;
-}
-static inline shape_id_t
-vm_ic_attr_index_dest_shape_id(const struct iseq_inline_iv_cache_entry *ic)
-{
- return (shape_id_t)(ic->value >> ((8 * 8) - 32));
-}
-static inline unsigned int
-vm_cc_cmethod_missing_reason(const struct rb_callcache *cc)
-{
- ((void)0);
- return cc->aux_.method_missing_reason;
-}
-static inline _Bool
-vm_cc_invalidated_p(const struct rb_callcache *cc)
-{
- if (cc->klass && !((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))) {
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline _Bool
-vm_cc_valid_p(const struct rb_callcache *cc, const rb_callable_method_entry_t *cc_cme, VALUE klass)
-{
- ((void)0);
- if (cc->klass == klass && !((cc_cme)->flags & ((VALUE)RUBY_FL_USER9))) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static inline void
-vm_cc_call_set(const struct rb_callcache *cc, vm_call_handler call)
-{
- ((void)0);
- ((void)0);
- *(vm_call_handler *)&cc->call_ = call;
-}
-static inline void
-vm_cc_attr_index_set(const struct rb_callcache *cc, attr_index_t index, shape_id_t dest_shape_id)
-{
- uintptr_t *attr_value = (uintptr_t *)&cc->aux_.attr.value;
- if (!vm_cc_markable(cc)) {
- *attr_value = (uintptr_t)(((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32);
- return;
- }
- ((void)0);
- ((void)0);
- *attr_value = (attr_index_t)(index + 1) | ((uintptr_t)(dest_shape_id) << ((8 * 8) - 32));
-}
-static inline void
-vm_ic_attr_index_set(const rb_iseq_t *iseq, const struct iseq_inline_iv_cache_entry *ic, attr_index_t index, shape_id_t dest_shape_id)
-{
- *(uintptr_t *)&ic->value = ((uintptr_t)dest_shape_id << ((8 * 8) - 32)) | (attr_index_t)(index + 1);
-}
-static inline void
-vm_ic_attr_index_initialize(const struct iseq_inline_iv_cache_entry *ic, shape_id_t shape_id)
-{
- *(uintptr_t *)&ic->value = (uintptr_t)shape_id << ((8 * 8) - 32);
-}
-static inline void
-vm_cc_method_missing_reason_set(const struct rb_callcache *cc, enum method_missing_reason reason)
-{
- ((void)0);
- ((void)0);
- *(enum method_missing_reason *)&cc->aux_.method_missing_reason = reason;
-}
-static inline void
-vm_cc_invalidate(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- ((void)0);
- *(VALUE *)&cc->klass = 0;
- ((void)0);
-}
-struct rb_call_data {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
-};
-struct rb_class_cc_entries {
- int capa;
- int len;
- const struct rb_callable_method_entry_struct *cme;
- struct rb_class_cc_entries_entry {
- const struct rb_callinfo *ci;
- const struct rb_callcache *cc;
- } *entries;
-};
-void rb_vm_ccs_free(struct rb_class_cc_entries *ccs);
-
-struct RNode;
-VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
-ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
-struct RNode *ruby_debug_print_node(int level, int debug_level, const char *header, const struct RNode *node);
-int ruby_debug_print_indent(int level, int debug_level, int indent_level);
-void ruby_debug_gc_check_func(void);
-void ruby_set_debug_option(const char *str);
-extern enum ruby_debug_log_mode {
- ruby_debug_log_disabled = 0x00,
- ruby_debug_log_memory = 0x01,
- ruby_debug_log_stderr = 0x02,
- ruby_debug_log_file = 0x04,
-} ruby_debug_log_mode;
-__attribute__((__format__(__printf__, 4, 5)))
-void ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...);
-void ruby_debug_log_print(unsigned int n);
-_Bool ruby_debug_log_filter(const char *func_name, const char *file_name);
-
-typedef long OFFSET;
-typedef unsigned long lindex_t;
-typedef VALUE GENTRY;
-typedef rb_iseq_t *ISEQ;
-
-extern VALUE ruby_vm_const_missing_count;
-extern rb_serial_t ruby_vm_constant_cache_invalidations;
-extern rb_serial_t ruby_vm_constant_cache_misses;
-extern rb_serial_t ruby_vm_global_cvar_state;
-static inline void
-CC_SET_FASTPATH(const struct rb_callcache *cc, vm_call_handler func, _Bool enabled)
-{
- if ((__builtin_expect(!!(enabled), 1))) {
- vm_cc_call_set(cc, func);
- }
-}
-static inline struct vm_throw_data *
-THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
-{
- struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
- obj->throw_state = st;
- return obj;
-}
-static inline VALUE
-THROW_DATA_VAL(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->throw_obj;
-}
-static inline const rb_control_frame_t *
-THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->catch_frame;
-}
-static inline int
-THROW_DATA_STATE(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->throw_state;
-}
-static inline int
-THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
-{
- ((void)0);
- return obj->flags & ((VALUE)RUBY_FL_USER4);
-}
-static inline void
-THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
-{
- ((void)0);
- obj->catch_frame = cfp;
-}
-static inline void
-THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
-{
- ((void)0);
- obj->throw_state = st;
-}
-static inline void
-THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
-{
- if (imemo_throw_data_p((VALUE)obj) &&
- THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
- obj->flags |= ((VALUE)RUBY_FL_USER4);
- }
-}
-static inline _Bool
-vm_call_cacheable(const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- return (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) ||
- (rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) != METHOD_VISI_PROTECTED;
-}
-static inline _Bool
-vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- return !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) && vm_call_cacheable(ci, cc);
-}
-
-
-struct rb_ractor_local_storage_type {
- void (*mark)(void *ptr);
- void (*free)(void *ptr);
-};
-typedef struct rb_ractor_local_key_struct *rb_ractor_local_key_t;
-extern VALUE rb_cRactor;
-VALUE rb_ractor_stdin(void);
-VALUE rb_ractor_stdout(void);
-VALUE rb_ractor_stderr(void);
-void rb_ractor_stdin_set(VALUE io);
-void rb_ractor_stdout_set(VALUE io);
-void rb_ractor_stderr_set(VALUE io);
-rb_ractor_local_key_t rb_ractor_local_storage_value_newkey(void);
-VALUE rb_ractor_local_storage_value(rb_ractor_local_key_t key);
-_Bool rb_ractor_local_storage_value_lookup(rb_ractor_local_key_t key, VALUE *val);
-void rb_ractor_local_storage_value_set(rb_ractor_local_key_t key, VALUE val);
-extern const struct rb_ractor_local_storage_type rb_ractor_local_storage_type_free;
-rb_ractor_local_key_t rb_ractor_local_storage_ptr_newkey(const struct rb_ractor_local_storage_type *type);
-void *rb_ractor_local_storage_ptr(rb_ractor_local_key_t key);
-void rb_ractor_local_storage_ptr_set(rb_ractor_local_key_t key, void *ptr);
-VALUE rb_ractor_make_shareable(VALUE obj);
-VALUE rb_ractor_make_shareable_copy(VALUE obj);
-static inline _Bool
-rb_ractor_shareable_p(VALUE obj)
-{
- _Bool rb_ractor_shareable_p_continue(VALUE obj);
- if (RB_SPECIAL_CONST_P(obj)) {
- return 1;
- }
- else if (RB_FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)) {
- return 1;
- }
- else {
- return rb_ractor_shareable_p_continue(obj);
- }
-}
-enum rb_ractor_basket_type {
- basket_type_none,
- basket_type_ref,
- basket_type_copy,
- basket_type_move,
- basket_type_will,
- basket_type_deleted,
- basket_type_reserved,
-};
-struct rb_ractor_basket {
- _Bool exception;
- enum rb_ractor_basket_type type;
- VALUE v;
- VALUE sender;
-};
-struct rb_ractor_queue {
- struct rb_ractor_basket *baskets;
- int start;
- int cnt;
- int size;
- unsigned int serial;
- unsigned int reserved_cnt;
-};
-struct rb_ractor_waiting_list {
- int cnt;
- int size;
- rb_ractor_t **ractors;
-};
-enum rb_ractor_wait_status {
- wait_none = 0x00,
- wait_receiving = 0x01,
- wait_taking = 0x02,
- wait_yielding = 0x04,
- wait_moving = 0x08,
-};
-enum rb_ractor_wakeup_status {
- wakeup_none,
- wakeup_by_send,
- wakeup_by_yield,
- wakeup_by_take,
- wakeup_by_close,
- wakeup_by_interrupt,
- wakeup_by_retry,
-};
-struct rb_ractor_sync {
- rb_nativethread_lock_t lock;
- rb_nativethread_cond_t cond;
- struct rb_ractor_queue incoming_queue;
- struct rb_ractor_waiting_list taking_ractors;
- _Bool incoming_port_closed;
- _Bool outgoing_port_closed;
- struct ractor_wait {
- enum rb_ractor_wait_status status;
- enum rb_ractor_wakeup_status wakeup_status;
- struct rb_ractor_basket yielded_basket;
- struct rb_ractor_basket taken_basket;
- } wait;
-};
-enum ractor_status {
- ractor_created,
- ractor_running,
- ractor_blocking,
- ractor_terminated,
-};
-struct rb_ractor_struct {
- struct rb_ractor_pub pub;
- struct rb_ractor_sync sync;
- VALUE receiving_mutex;
- _Bool yield_atexit;
- rb_nativethread_cond_t barrier_wait_cond;
- struct {
- struct ccan_list_head set;
- unsigned int cnt;
- unsigned int blocking_cnt;
- unsigned int sleeper;
- struct rb_thread_sched sched;
- rb_execution_context_t *running_ec;
- rb_thread_t *main;
- } threads;
- VALUE thgroup_default;
- VALUE name;
- VALUE loc;
- enum ractor_status status_;
- struct ccan_list_node vmlr_node;
- st_table *local_storage;
- struct rb_id_table *idkey_local_storage;
- VALUE r_stdin;
- VALUE r_stdout;
- VALUE r_stderr;
- VALUE verbose;
- VALUE debug;
- rb_ractor_newobj_cache_t newobj_cache;
- struct gc_mark_func_data_struct {
- void *data;
- void (*mark_func)(VALUE v, void *data);
- } *mfd;
-};
-static inline VALUE
-rb_ractor_self(const rb_ractor_t *r)
-{
- return r->pub.self;
-}
-rb_ractor_t *rb_ractor_main_alloc(void);
-void rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *main_ractor, rb_thread_t *main_thread);
-void rb_ractor_atexit(rb_execution_context_t *ec, VALUE result);
-void rb_ractor_atexit_exception(rb_execution_context_t *ec);
-void rb_ractor_teardown(rb_execution_context_t *ec);
-void rb_ractor_receive_parameters(rb_execution_context_t *ec, rb_ractor_t *g, int len, VALUE *ptr);
-void rb_ractor_send_parameters(rb_execution_context_t *ec, rb_ractor_t *g, VALUE args);
-VALUE rb_thread_create_ractor(rb_ractor_t *g, VALUE args, VALUE proc);
-int rb_ractor_living_thread_num(const rb_ractor_t *);
-VALUE rb_ractor_thread_list(rb_ractor_t *r);
-_Bool rb_ractor_p(VALUE rv);
-void rb_ractor_living_threads_init(rb_ractor_t *r);
-void rb_ractor_living_threads_insert(rb_ractor_t *r, rb_thread_t *th);
-void rb_ractor_living_threads_remove(rb_ractor_t *r, rb_thread_t *th);
-void rb_ractor_blocking_threads_inc(rb_ractor_t *r, const char *file, int line);
-void rb_ractor_blocking_threads_dec(rb_ractor_t *r, const char *file, int line);
-void rb_ractor_vm_barrier_interrupt_running_thread(rb_ractor_t *r);
-void rb_ractor_terminate_interrupt_main_thread(rb_ractor_t *r);
-void rb_ractor_terminate_all(void);
-_Bool rb_ractor_main_p_(void);
-void rb_ractor_finish_marking(void);
-void rb_ractor_atfork(rb_vm_t *vm, rb_thread_t *th);
-VALUE rb_ractor_ensure_shareable(VALUE obj, VALUE name);
-_Bool rb_ractor_shareable_p_continue(VALUE obj);
-void rb_ractor_local_storage_delkey(rb_ractor_local_key_t key);
-static inline _Bool
-rb_ractor_main_p(void)
-{
- if (ruby_single_main_ractor) {
- return 1;
- }
- else {
- return rb_ractor_main_p_();
- }
-}
-static inline _Bool
-rb_ractor_status_p(rb_ractor_t *r, enum ractor_status status)
-{
- return r->status_ == status;
-}
-static inline void
-rb_ractor_sleeper_threads_inc(rb_ractor_t *r)
-{
- r->threads.sleeper++;
-}
-static inline void
-rb_ractor_sleeper_threads_dec(rb_ractor_t *r)
-{
- r->threads.sleeper--;
-}
-static inline void
-rb_ractor_sleeper_threads_clear(rb_ractor_t *r)
-{
- r->threads.sleeper = 0;
-}
-static inline int
-rb_ractor_sleeper_thread_num(rb_ractor_t *r)
-{
- return r->threads.sleeper;
-}
-static inline void
-rb_ractor_thread_switch(rb_ractor_t *cr, rb_thread_t *th)
-{
- if (cr->threads.running_ec != th->ec) {
- if (0) {
- ruby_debug_printf("rb_ractor_thread_switch ec:%p->%p\n",
- (void *)cr->threads.running_ec, (void *)th->ec);
- }
- }
- else {
- return;
- }
- if (cr->threads.running_ec != th->ec) {
- th->running_time_us = 0;
- }
- cr->threads.running_ec = th->ec;
- ((void)0);
-}
-static inline void
-rb_ractor_set_current_ec_(rb_ractor_t *cr, rb_execution_context_t *ec, const char *file, int line)
-{
- rb_current_ec_set(ec);
- ;
- ((void)0);
- cr->threads.running_ec = ec;
-}
-void rb_vm_ractor_blocking_cnt_inc(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
-void rb_vm_ractor_blocking_cnt_dec(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
-static inline uint32_t
-rb_ractor_id(const rb_ractor_t *r)
-{
- return r->pub.id;
-}
-
-_Bool rb_vm_locked_p(void);
-void rb_vm_lock_body(void);
-void rb_vm_unlock_body(void);
-struct rb_ractor_struct;
-void rb_vm_lock_enter_body_cr(struct rb_ractor_struct *cr, unsigned int *lev );
-void rb_vm_lock_enter_body_nb(unsigned int *lev );
-void rb_vm_lock_enter_body(unsigned int *lev );
-void rb_vm_lock_leave_body(unsigned int *lev );
-void rb_vm_barrier(void);
-extern struct rb_ractor_struct *ruby_single_main_ractor;
-static inline _Bool
-rb_multi_ractor_p(void)
-{
- if ((__builtin_expect(!!(ruby_single_main_ractor), 1))) {
- ((void)0);
- return 0;
- }
- else {
- return 1;
- }
-}
-static inline void
-rb_vm_lock(const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_body();
- }
-}
-static inline void
-rb_vm_unlock(const char *file, int line)
-{
- if (rb_multi_ractor_p()) {
- rb_vm_unlock_body();
- }
-}
-static inline void
-rb_vm_lock_enter(unsigned int *lev, const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_enter_body(lev );
- }
-}
-static inline void
-rb_vm_lock_enter_nb(unsigned int *lev, const char *file, int line)
-{
- ((void)0);
- if (rb_multi_ractor_p()) {
- rb_vm_lock_enter_body_nb(lev );
- }
-}
-static inline void
-rb_vm_lock_leave(unsigned int *lev, const char *file, int line)
-{
- if (rb_multi_ractor_p()) {
- rb_vm_lock_leave_body(lev );
- }
-}
-static inline void
-rb_vm_lock_enter_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
-{
- ((void)0);
- rb_vm_lock_enter_body_cr(cr, levp );
-}
-static inline void
-rb_vm_lock_leave_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
-{
- rb_vm_lock_leave_body(levp );
-}
-
-
-struct rb_builtin_function {
- const void * const func_ptr;
- const int argc;
- const int index;
- const char * const name;
- void (*compiler)(VALUE, long, unsigned, _Bool);
-};
-void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
-typedef VALUE (*rb_builtin_arity0_function_type)(rb_execution_context_t *ec, VALUE self);
-typedef VALUE (*rb_builtin_arity1_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE);
-typedef VALUE (*rb_builtin_arity2_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity3_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity4_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity5_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity6_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity7_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity8_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity9_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity10_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity11_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity12_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity13_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity14_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity15_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-static inline void rb_builtin_function_check_arity0(rb_builtin_arity0_function_type f){}
-static inline void rb_builtin_function_check_arity1(rb_builtin_arity1_function_type f){}
-static inline void rb_builtin_function_check_arity2(rb_builtin_arity2_function_type f){}
-static inline void rb_builtin_function_check_arity3(rb_builtin_arity3_function_type f){}
-static inline void rb_builtin_function_check_arity4(rb_builtin_arity4_function_type f){}
-static inline void rb_builtin_function_check_arity5(rb_builtin_arity5_function_type f){}
-static inline void rb_builtin_function_check_arity6(rb_builtin_arity6_function_type f){}
-static inline void rb_builtin_function_check_arity7(rb_builtin_arity7_function_type f){}
-static inline void rb_builtin_function_check_arity8(rb_builtin_arity8_function_type f){}
-static inline void rb_builtin_function_check_arity9(rb_builtin_arity9_function_type f){}
-static inline void rb_builtin_function_check_arity10(rb_builtin_arity10_function_type f){}
-static inline void rb_builtin_function_check_arity11(rb_builtin_arity11_function_type f){}
-static inline void rb_builtin_function_check_arity12(rb_builtin_arity12_function_type f){}
-static inline void rb_builtin_function_check_arity13(rb_builtin_arity13_function_type f){}
-static inline void rb_builtin_function_check_arity14(rb_builtin_arity14_function_type f){}
-static inline void rb_builtin_function_check_arity15(rb_builtin_arity15_function_type f){}static inline
-__attribute__((__pure__)) VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);static inline
-VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
-__attribute__((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
-static inline VALUE
-rb_vm_lvar(rb_execution_context_t *ec, int index)
-{
- return ec->cfp->ep[index];
-}
-struct builtin_binary {
- const char *feature;
- const unsigned char *bin;
- size_t bin_size;
-};
-
-
-struct ruby_dtrace_method_hook_args {
- const char *classname;
- const char *methodname;
- const char *filename;
- int line_no;
- volatile VALUE klass;
- volatile VALUE name;
-};
-__declspec(noinline) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *);
-VALUE rb_str_concat_literals(size_t, const VALUE*);
-__attribute__ ((__visibility__("default"))) extern
-VALUE rb_vm_exec(rb_execution_context_t *, _Bool);
-extern const char *const rb_debug_counter_names[];
-__attribute__((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
-static inline const VALUE *
-VM_EP_LEP(const VALUE *ep)
-{
- while (!VM_ENV_LOCAL_P(ep)) {
- ep = VM_ENV_PREV_EP(ep);
- }
- return ep;
-}
-static inline const rb_control_frame_t *
-rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
-{
- if (!ep) {
- return ((void*)0);
- }
- else {
- const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
- while (cfp < eocfp) {
- if (cfp->ep == ep) {
- return cfp;
- }
- cfp = ((cfp)+1);
- }
- return ((void*)0);
- }
-}static inline
-const VALUE *
-rb_vm_ep_local_ep(const VALUE *ep)
-{
- return VM_EP_LEP(ep);
-}
-__attribute__((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
-static inline const VALUE *
-VM_CF_LEP(const rb_control_frame_t * const cfp)
-{
- return VM_EP_LEP(cfp->ep);
-}
-static inline const VALUE *
-VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
-{
- return VM_ENV_PREV_EP(cfp->ep);
-}
-__attribute__((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
-static inline VALUE
-VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
-{
- const VALUE *ep = VM_CF_LEP(cfp);
- return VM_ENV_BLOCK_HANDLER(ep);
-}static inline
-int
-rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
-{
- return VM_FRAME_CFRAME_KW_P(cfp);
-}static inline
-VALUE
-rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
-{
- return VM_CF_BLOCK_HANDLER(cfp);
-}
-static struct rb_captured_block *
-VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
-{
- ((void)0);
- return (struct rb_captured_block *)&cfp->self;
-}
-static rb_control_frame_t *
-VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
-{
- rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
- ((void)0);
- ((void)0);
- return cfp;
-}
-static int
-VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
-{
- const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
- return ((void *)((block_handler) & ~0x03)) == captured;
-}
-static VALUE
-vm_passed_block_handler(rb_execution_context_t *ec)
-{
- VALUE block_handler = ec->passed_block_handler;
- ec->passed_block_handler = 0;
- vm_block_handler_verify(block_handler);
- return block_handler;
-}
-static rb_cref_t *
-vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev, int singleton)
-{
- VALUE refinements = ((VALUE)RUBY_Qnil);
- int omod_shared = 0;
- rb_cref_t *cref;
- union {
- rb_scope_visibility_t visi;
- VALUE value;
- } scope_visi;
- scope_visi.visi.method_visi = visi;
- scope_visi.visi.module_func = module_func;
- if (prev_cref != ((void*)0) && prev_cref != (void *)1 ) {
- refinements = CREF_REFINEMENTS(prev_cref);
- if (!RB_NIL_P(refinements)) {
- omod_shared = 1;
- CREF_OMOD_SHARED_SET(prev_cref);
- }
- }
- ((void)0);
- cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
- if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
- if (omod_shared) CREF_OMOD_SHARED_SET(cref);
- if (singleton) CREF_SINGLETON_SET(cref);
- return cref;
-}
-static rb_cref_t *
-vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int singleton)
-{
- return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0, singleton);
-}
-static rb_cref_t *
-vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
-{
- return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1, 0);
-}
-static int
-ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
-{
- return RB_SYMBOL_P(key) ? ST_DELETE : ST_CONTINUE;
-}
-static rb_cref_t *
-vm_cref_dup(const rb_cref_t *cref)
-{
- const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
- rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
- int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
- int singleton = CREF_SINGLETON(cref);
- new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
- if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
- VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
- rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
- CREF_REFINEMENTS_SET(new_cref, ref);
- CREF_OMOD_SHARED_UNSET(new_cref);
- }
- return new_cref;
-}static inline
-rb_cref_t *
-rb_vm_cref_dup_without_refinements(const rb_cref_t *cref)
-{
- const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
- rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
- int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
- int singleton = CREF_SINGLETON(cref);
- new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
- if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
- CREF_REFINEMENTS_SET(new_cref, ((VALUE)RUBY_Qnil));
- CREF_OMOD_SHARED_UNSET(new_cref);
- }
- return new_cref;
-}
-static rb_cref_t *
-vm_cref_new_toplevel(rb_execution_context_t *ec)
-{
- rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void*)0), 0, 0);
- VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
- if (top_wrapper) {
- cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0, 0);
- }
- return cref;
-}static inline
-rb_cref_t *
-rb_vm_cref_new_toplevel(void)
-{
- return vm_cref_new_toplevel(rb_current_execution_context(1));
-}
-static void
-vm_cref_dump(const char *mesg, const rb_cref_t *cref)
-{
- ruby_debug_printf("vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
- while (cref) {
- ruby_debug_printf("= cref| klass: %s\n", RSTRING_PTR(rb_class_path(CREF_CLASS(cref))));
- cref = CREF_NEXT(cref);
- }
-}static inline
-void
-rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
-{
- *((const VALUE **)&dst->as.captured.ep) = ep;
- (rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "./vm.c", 360));
-}
-static void
-vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
-{
- const rb_env_t *env = (rb_env_t *)envval;
- rb_obj_write((VALUE)(bindval), __extension__({
- ;
- ; __typeof__((VALUE *)(&bind->block.as.captured.code.iseq)) unaligned_member_access_result = ((VALUE *)(&bind->block.as.captured.code.iseq));
- ; unaligned_member_access_result; }), (VALUE)(env->iseq), "./vm.c", 367);
- rb_vm_block_ep_update(bindval, &bind->block, env->ep);
-}
-static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
-extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self,
- int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
- const rb_callable_method_entry_t *me);
-static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
-__declspec(noinline) static __attribute__((__cold__)) VALUE mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
-static VALUE
-mjit_check_iseq(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
-{
- uintptr_t mjit_state = (uintptr_t)(body->jit_func);
- __builtin_assume(((uintptr_t)(mjit_state) <= (uintptr_t)MJIT_FUNC_FAILED));
- switch ((enum rb_mjit_func_state)mjit_state) {
- case MJIT_FUNC_NOT_COMPILED:
- if (body->total_calls == mjit_opts.call_threshold) {
- rb_mjit_add_iseq_to_process(iseq);
- if ((__builtin_expect(!!(mjit_opts.wait && !((uintptr_t)(body->jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)), 0))) {
- return body->jit_func(ec, ec->cfp);
- }
- }
- break;
- case MJIT_FUNC_COMPILING:
- case MJIT_FUNC_FAILED:
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static inline VALUE
-jit_exec(rb_execution_context_t *ec)
-{
- const rb_iseq_t *iseq = ec->cfp->iseq;
- struct rb_iseq_constant_body *body = ((iseq)->body);
- _Bool yjit_enabled = rb_yjit_enabled_p();
- if (yjit_enabled || mjit_call_p) {
- body->total_calls++;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- jit_func_t func;
- if (yjit_enabled) {
- if (body->total_calls == rb_yjit_call_threshold()) {
- if (!rb_yjit_compile_iseq(iseq, ec)) {
- return ((VALUE)RUBY_Qundef);
- }
- }
- if ((func = body->jit_func) == 0) {
- return ((VALUE)RUBY_Qundef);
- }
- }
- else if ((__builtin_expect(!!(((uintptr_t)(func = body->jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)), 0))) {
- return mjit_check_iseq(ec, iseq, body);
- }
- return func(ec, ec->cfp);
-}
-
-VALUE rb_invcmp(VALUE, VALUE);
-
-struct ar_table_struct;
-typedef unsigned char ar_hint_t;
-enum ruby_rhash_flags {
- RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
- RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
- RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
- RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
- RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4),
- RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
- RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8),
- RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
- RHASH_LEV_SHIFT = (((VALUE)RUBY_FL_USHIFT) + 13),
- RHASH_LEV_MAX = 127,
-};
-struct RHash {
- struct RBasic basic;
- union {
- st_table *st;
- struct ar_table_struct *ar;
- } as;
- const VALUE ifnone;
- union {
- ar_hint_t ary[8];
- VALUE word;
- } ar_hint;
-};
-void rb_hash_st_table_set(VALUE hash, st_table *st);
-VALUE rb_hash_default_value(VALUE hash, VALUE key);
-VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
-long rb_dbl_long_hash(double d);
-st_table *rb_init_identtable(void);
-VALUE rb_to_hash_type(VALUE obj);
-VALUE rb_hash_key_str(VALUE);
-VALUE rb_hash_values(VALUE hash);
-VALUE rb_hash_rehash(VALUE hash);
-int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
-VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
-int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
-int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
-int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
-extern st_table *rb_hash_st_table(VALUE hash);
-VALUE rb_ident_hash_new_with_size(st_index_t size);
-static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
-static inline VALUE RHASH_IFNONE(VALUE h);
-static inline size_t RHASH_SIZE(VALUE h);
-static inline _Bool RHASH_EMPTY_P(VALUE h);
-static inline _Bool RHASH_AR_TABLE_P(VALUE h);
-static inline _Bool RHASH_ST_TABLE_P(VALUE h);
-static inline struct ar_table_struct *RHASH_AR_TABLE(VALUE h);
-static inline st_table *RHASH_ST_TABLE(VALUE h);
-static inline size_t RHASH_ST_SIZE(VALUE h);
-static inline void RHASH_ST_CLEAR(VALUE h);
-static inline _Bool RHASH_TRANSIENT_P(VALUE h);
-static inline void RHASH_SET_TRANSIENT_FLAG(VALUE h);
-static inline void RHASH_UNSET_TRANSIENT_FLAG(VALUE h);
-VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
-VALUE rb_ident_hash_new(void);
-int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg);
-VALUE rb_hash_new_with_size(st_index_t size);
-VALUE rb_hash_resurrect(VALUE hash);
-int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
-VALUE rb_hash_keys(VALUE hash);
-VALUE rb_hash_has_key(VALUE hash, VALUE key);
-VALUE rb_hash_compare_by_id_p(VALUE hash);
-st_table *rb_hash_tbl_raw(VALUE hash, const char *file, int line);
-VALUE rb_hash_compare_by_id(VALUE hash);
-static inline _Bool
-RHASH_AR_TABLE_P(VALUE h)
-{
- return ! RB_FL_TEST_RAW(h, RHASH_ST_TABLE_FLAG);
-}
-static inline struct ar_table_struct *
-RHASH_AR_TABLE(VALUE h)
-{
- return ((struct RHash *)(h))->as.ar;
-}
-static inline st_table *
-RHASH_ST_TABLE(VALUE h)
-{
- return ((struct RHash *)(h))->as.st;
-}
-static inline VALUE
-RHASH_IFNONE(VALUE h)
-{
- return ((struct RHash *)(h))->ifnone;
-}
-static inline size_t
-RHASH_SIZE(VALUE h)
-{
- if (RHASH_AR_TABLE_P(h)) {
- return RHASH_AR_TABLE_SIZE_RAW(h);
- }
- else {
- return RHASH_ST_SIZE(h);
- }
-}
-static inline _Bool
-RHASH_EMPTY_P(VALUE h)
-{
- return RHASH_SIZE(h) == 0;
-}
-static inline _Bool
-RHASH_ST_TABLE_P(VALUE h)
-{
- return ! RHASH_AR_TABLE_P(h);
-}
-static inline size_t
-RHASH_ST_SIZE(VALUE h)
-{
- return RHASH_ST_TABLE(h)->num_entries;
-}
-static inline void
-RHASH_ST_CLEAR(VALUE h)
-{
- RB_FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG);
- ((struct RHash *)(h))->as.ar = ((void*)0);
-}
-static inline unsigned
-RHASH_AR_TABLE_SIZE_RAW(VALUE h)
-{
- VALUE ret = RB_FL_TEST_RAW(h, RHASH_AR_TABLE_SIZE_MASK);
- ret >>= RHASH_AR_TABLE_SIZE_SHIFT;
- return (unsigned)ret;
-}
-static inline _Bool
-RHASH_TRANSIENT_P(VALUE h)
-{
- return RB_FL_TEST_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-static inline void
-RHASH_SET_TRANSIENT_FLAG(VALUE h)
-{
- RB_FL_SET_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-static inline void
-RHASH_UNSET_TRANSIENT_FLAG(VALUE h)
-{
- RB_FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG);
-}
-
-
-enum rb_int_parse_flags {
- RB_INT_PARSE_SIGN = 0x01,
- RB_INT_PARSE_UNDERSCORE = 0x02,
- RB_INT_PARSE_PREFIX = 0x04,
- RB_INT_PARSE_ALL = 0x07,
- RB_INT_PARSE_DEFAULT = 0x07,
-};
-struct RBignum {
- struct RBasic basic;
- union {
- struct {
- size_t len;
- unsigned int *digits;
- } heap;
- unsigned int ary[(8*3/4)];
- } as;
-};
-extern const char ruby_digitmap[];
-double rb_big_fdiv_double(VALUE x, VALUE y);
-VALUE rb_big_uminus(VALUE x);
-VALUE rb_big_hash(VALUE);
-VALUE rb_big_odd_p(VALUE);
-VALUE rb_big_even_p(VALUE);
-size_t rb_big_size(VALUE);
-VALUE rb_integer_float_cmp(VALUE x, VALUE y);
-VALUE rb_integer_float_eq(VALUE x, VALUE y);
-VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
-VALUE rb_big_comp(VALUE x);
-VALUE rb_big_aref(VALUE x, VALUE y);
-VALUE rb_big_abs(VALUE x);
-VALUE rb_big_size_m(VALUE big);
-VALUE rb_big_bit_length(VALUE big);
-VALUE rb_big_remainder(VALUE x, VALUE y);
-VALUE rb_big_gt(VALUE x, VALUE y);
-VALUE rb_big_ge(VALUE x, VALUE y);
-VALUE rb_big_lt(VALUE x, VALUE y);
-VALUE rb_big_le(VALUE x, VALUE y);
-VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
-VALUE rb_big_isqrt(VALUE n);
-static inline _Bool BIGNUM_SIGN(VALUE b);
-static inline _Bool BIGNUM_POSITIVE_P(VALUE b);
-static inline _Bool BIGNUM_NEGATIVE_P(VALUE b);
-static inline void BIGNUM_SET_SIGN(VALUE b, _Bool sign);
-static inline void BIGNUM_NEGATE(VALUE b);
-static inline size_t BIGNUM_LEN(VALUE b);
-static inline unsigned int *BIGNUM_DIGITS(VALUE b);
-static inline int BIGNUM_LENINT(VALUE b);
-static inline _Bool BIGNUM_EMBED_P(VALUE b);
-VALUE rb_big_mul_normal(VALUE x, VALUE y);
-VALUE rb_big_mul_balance(VALUE x, VALUE y);
-VALUE rb_big_mul_karatsuba(VALUE x, VALUE y);
-VALUE rb_big_mul_toom3(VALUE x, VALUE y);
-VALUE rb_big_sq_fast(VALUE x);
-VALUE rb_big_divrem_normal(VALUE x, VALUE y);
-VALUE rb_big2str_poweroftwo(VALUE x, int base);
-VALUE rb_big2str_generic(VALUE x, int base);
-VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
-VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
-VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
-VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
-VALUE rb_int128t2big(__int128 n);
-static inline _Bool
-BIGNUM_SIGN(VALUE b)
-{
- return RB_FL_TEST_RAW(b, ((VALUE)RUBY_FL_USER1));
-}
-static inline _Bool
-BIGNUM_POSITIVE_P(VALUE b)
-{
- return BIGNUM_SIGN(b);
-}
-static inline _Bool
-BIGNUM_NEGATIVE_P(VALUE b)
-{
- return ! BIGNUM_POSITIVE_P(b);
-}
-static inline void
-BIGNUM_SET_SIGN(VALUE b, _Bool sign)
-{
- if (sign) {
- RB_FL_SET_RAW(b, ((VALUE)RUBY_FL_USER1));
- }
- else {
- RB_FL_UNSET_RAW(b, ((VALUE)RUBY_FL_USER1));
- }
-}
-static inline void
-BIGNUM_NEGATE(VALUE b)
-{
- RB_FL_REVERSE_RAW(b, ((VALUE)RUBY_FL_USER1));
-}
-static inline size_t
-BIGNUM_LEN(VALUE b)
-{
- if (! BIGNUM_EMBED_P(b)) {
- return ((struct RBignum *)(b))->as.heap.len;
- }
- else {
- size_t ret = ((struct RBasic *)(b))->flags;
- ret &= (~(~(VALUE)0U << 3) << (((VALUE)RUBY_FL_USHIFT)+3));
- ret >>= (((VALUE)RUBY_FL_USHIFT)+3);
- return ret;
- }
-}
-static inline int
-BIGNUM_LENINT(VALUE b)
-{
- return rb_long2int_inline(BIGNUM_LEN(b));
-}
-static inline unsigned int *
-BIGNUM_DIGITS(VALUE b)
-{
- if (BIGNUM_EMBED_P(b)) {
- return ((struct RBignum *)(b))->as.ary;
- }
- else {
- return ((struct RBignum *)(b))->as.heap.digits;
- }
-}
-static inline _Bool
-BIGNUM_EMBED_P(VALUE b)
-{
- return RB_FL_TEST_RAW(b, ((VALUE)((VALUE)RUBY_FL_USER2)));
-}
-
-static inline uint16_t ruby_swap16(uint16_t);
-static inline uint32_t ruby_swap32(uint32_t);
-static inline uint64_t ruby_swap64(uint64_t);
-static inline unsigned nlz_int(unsigned x);
-static inline unsigned nlz_long(unsigned long x);
-static inline unsigned nlz_long_long(unsigned long long x);
-static inline unsigned nlz_intptr(uintptr_t x);
-static inline unsigned nlz_int32(uint32_t x);
-static inline unsigned nlz_int64(uint64_t x);
-static inline unsigned nlz_int128(unsigned __int128 x);
-static inline unsigned rb_popcount32(uint32_t x);
-static inline unsigned rb_popcount64(uint64_t x);
-static inline unsigned rb_popcount_intptr(uintptr_t x);
-static inline int ntz_int32(uint32_t x);
-static inline int ntz_int64(uint64_t x);
-static inline int ntz_intptr(uintptr_t x);
-static inline VALUE RUBY_BIT_ROTL(VALUE, int);
-static inline VALUE RUBY_BIT_ROTR(VALUE, int);
-static inline uint16_t
-ruby_swap16(uint16_t x)
-{
- return __builtin_bswap16(x);
-}
-static inline uint32_t
-ruby_swap32(uint32_t x)
-{
- return __builtin_bswap32(x);
-}
-static inline uint64_t
-ruby_swap64(uint64_t x)
-{
- return __builtin_bswap64(x);
-}
-static inline unsigned int
-nlz_int32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
- return x ? (unsigned int)__builtin_clz(x) : 32;
-}
-static inline unsigned int
-nlz_int64(uint64_t x)
-{
- if (x == 0) {
- return 64;
- }
- else if (sizeof(long) * 8 == 64) {
- return (unsigned int)__builtin_clzl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned int)__builtin_clzll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_int128(unsigned __int128 x)
-{
- uint64_t y = (uint64_t)(x >> 64);
- if (x == 0) {
- return 128;
- }
- else if (y == 0) {
- return (unsigned int)nlz_int64(x) + 64;
- }
- else {
- return (unsigned int)nlz_int64(y);
- }
-}
-static inline unsigned int
-nlz_int(unsigned int x)
-{
- if (sizeof(unsigned int) * 8 == 32) {
- return nlz_int32((uint32_t)x);
- }
- else if (sizeof(unsigned int) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_long(unsigned long x)
-{
- if (sizeof(unsigned long) * 8 == 32) {
- return nlz_int32((uint32_t)x);
- }
- else if (sizeof(unsigned long) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_long_long(unsigned long long x)
-{
- if (sizeof(unsigned long long) * 8 == 64) {
- return nlz_int64((uint64_t)x);
- }
- else if (sizeof(unsigned long long) * 8 == 128) {
- return nlz_int128((unsigned __int128)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-nlz_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) == sizeof(unsigned int)) {
- return nlz_int((unsigned int)x);
- }
- if (sizeof(uintptr_t) == sizeof(unsigned long)) {
- return nlz_long((unsigned long)x);
- }
- if (sizeof(uintptr_t) == sizeof(unsigned long long)) {
- return nlz_long_long((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-rb_popcount32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 >= 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT >= 32");
- return (unsigned int)__builtin_popcount(x);
-}
-static inline unsigned int
-rb_popcount64(uint64_t x)
-{
- if (sizeof(long) * 8 == 64) {
- return (unsigned int)__builtin_popcountl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned int)__builtin_popcountll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline unsigned int
-rb_popcount_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) * 8 == 64) {
- return rb_popcount64((uint64_t)x);
- }
- else if (sizeof(uintptr_t) * 8 == 32) {
- return rb_popcount32((uint32_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline int
-ntz_int32(uint32_t x)
-{
- __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
- return x ? (unsigned)__builtin_ctz(x) : 32;
-}
-static inline int
-ntz_int64(uint64_t x)
-{
- if (x == 0) {
- return 64;
- }
- else if (sizeof(long) * 8 == 64) {
- return (unsigned)__builtin_ctzl((unsigned long)x);
- }
- else if (sizeof(long long) * 8 == 64) {
- return (unsigned)__builtin_ctzll((unsigned long long)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline int
-ntz_intptr(uintptr_t x)
-{
- if (sizeof(uintptr_t) * 8 == 64) {
- return ntz_int64((uint64_t)x);
- }
- else if (sizeof(uintptr_t) * 8 == 32) {
- return ntz_int32((uint32_t)x);
- }
- else {
- __builtin_unreachable();
- }
-}
-static inline VALUE
-RUBY_BIT_ROTL(VALUE v, int n)
-{
- return __builtin_rotateleft64(v, n);
-}
-static inline VALUE
-RUBY_BIT_ROTR(VALUE v, int n)
-{
- return __builtin_rotateright64(v, n);
-}
-
-VALUE rb_int128t2big(__int128 n);
-static inline long rb_overflowed_fix_to_int(long x);
-static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y);
-static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp);
-static inline VALUE rb_fix_div_fix(VALUE x, VALUE y);
-static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y);
-static inline _Bool FIXNUM_POSITIVE_P(VALUE num);
-static inline _Bool FIXNUM_NEGATIVE_P(VALUE num);
-static inline _Bool FIXNUM_ZERO_P(VALUE num);
-static inline long
-rb_overflowed_fix_to_int(long x)
-{
- return (long)((unsigned long)(x >> 1) ^ (1LU << (8 * 8 - 1)));
-}
-static inline VALUE
-rb_fix_plus_fix(VALUE x, VALUE y)
-{
- long lz;
- if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
- return rb_int2big(rb_overflowed_fix_to_int(lz));
- }
- else {
- return (VALUE)lz;
- }
-}
-static inline VALUE
-rb_fix_minus_fix(VALUE x, VALUE y)
-{
- long lz;
- if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
- return rb_int2big(rb_overflowed_fix_to_int(lz));
- }
- else {
- return (VALUE)lz;
- }
-}
-static inline VALUE
-rb_fix_mul_fix(VALUE x, VALUE y)
-{
- long lx = rb_fix2long(x);
- long ly = rb_fix2long(y);
- return (((((__int128)lx * (__int128)ly) < (9223372036854775807L / 2) + 1) && (((__int128)lx * (__int128)ly) >= ((-9223372036854775807L -1L) / 2))) ? RB_INT2FIX((__int128)lx * (__int128)ly) : rb_int128t2big((__int128)lx * (__int128)ly));
-}
-static inline void
-rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
-{
- long x = rb_fix2long(a);
- long y = rb_fix2long(b);
- long div, mod;
- if (x == ((-9223372036854775807L -1L) / 2) && y == -1) {
- if (divp) *divp = rb_long2num_inline(-((-9223372036854775807L -1L) / 2));
- if (modp) *modp = RB_INT2FIX(0);
- return;
- }
- div = x / y;
- mod = x % y;
- if (y > 0 ? mod < 0 : mod > 0) {
- mod += y;
- div -= 1;
- }
- if (divp) *divp = RB_INT2FIX(div);
- if (modp) *modp = RB_INT2FIX(mod);
-}
-static inline VALUE
-rb_fix_div_fix(VALUE x, VALUE y)
-{
- VALUE div;
- rb_fix_divmod_fix(x, y, &div, ((void*)0));
- return div;
-}
-static inline VALUE
-rb_fix_mod_fix(VALUE x, VALUE y)
-{
- VALUE mod;
- rb_fix_divmod_fix(x, y, ((void*)0), &mod);
- return mod;
-}
-static inline _Bool
-FIXNUM_POSITIVE_P(VALUE num)
-{
- return (long)num > (long)__builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
-}
-static inline _Bool
-FIXNUM_NEGATIVE_P(VALUE num)
-{
- return (long)num < 0;
-}
-static inline _Bool
-FIXNUM_ZERO_P(VALUE num)
-{
- return num == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
-}
-enum ruby_num_rounding_mode {
- RUBY_NUM_ROUND_HALF_UP,
- RUBY_NUM_ROUND_HALF_EVEN,
- RUBY_NUM_ROUND_HALF_DOWN,
- RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP,
-};
-typedef double rb_float_value_type;
-struct RFloat {
- struct RBasic basic;
- rb_float_value_type float_value;
-};
-int rb_num_to_uint(VALUE val, unsigned int *ret);
-VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
-double ruby_float_step_size(double beg, double end, double unit, int excl);
-int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
-int rb_num_negative_p(VALUE);
-VALUE rb_int_succ(VALUE num);
-VALUE rb_float_uminus(VALUE num);
-VALUE rb_int_plus(VALUE x, VALUE y);
-VALUE rb_float_plus(VALUE x, VALUE y);
-VALUE rb_int_minus(VALUE x, VALUE y);
-VALUE rb_float_minus(VALUE x, VALUE y);
-VALUE rb_int_mul(VALUE x, VALUE y);
-VALUE rb_float_mul(VALUE x, VALUE y);
-VALUE rb_float_div(VALUE x, VALUE y);
-VALUE rb_int_idiv(VALUE x, VALUE y);
-VALUE rb_int_modulo(VALUE x, VALUE y);
-VALUE rb_int2str(VALUE num, int base);
-VALUE rb_fix_plus(VALUE x, VALUE y);
-VALUE rb_int_gt(VALUE x, VALUE y);
-VALUE rb_float_gt(VALUE x, VALUE y);
-VALUE rb_int_ge(VALUE x, VALUE y);
-enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
-double rb_int_fdiv_double(VALUE x, VALUE y);
-VALUE rb_int_pow(VALUE x, VALUE y);
-VALUE rb_float_pow(VALUE x, VALUE y);
-VALUE rb_int_cmp(VALUE x, VALUE y);
-VALUE rb_int_equal(VALUE x, VALUE y);
-VALUE rb_int_divmod(VALUE x, VALUE y);
-VALUE rb_int_and(VALUE x, VALUE y);
-VALUE rb_int_lshift(VALUE x, VALUE y);
-VALUE rb_int_div(VALUE x, VALUE y);
-int rb_int_positive_p(VALUE num);
-int rb_int_negative_p(VALUE num);
-VALUE rb_check_integer_type(VALUE);
-VALUE rb_num_pow(VALUE x, VALUE y);
-VALUE rb_float_ceil(VALUE num, int ndigits);
-VALUE rb_float_floor(VALUE x, int ndigits);
-VALUE rb_float_abs(VALUE flt);
-static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
-static inline int rb_num_positive_int_p(VALUE num);
-static inline int rb_num_negative_int_p(VALUE num);
-static inline double rb_float_flonum_value(VALUE v);
-static inline double rb_float_noflonum_value(VALUE v);
-static inline double rb_float_value_inline(VALUE v);
-static inline VALUE rb_float_new_inline(double d);
-static inline _Bool INT_POSITIVE_P(VALUE num);
-static inline _Bool INT_NEGATIVE_P(VALUE num);
-static inline _Bool FLOAT_ZERO_P(VALUE num);
-VALUE rb_flo_div_flo(VALUE x, VALUE y);
-double ruby_float_mod(double x, double y);
-VALUE rb_float_equal(VALUE x, VALUE y);
-int rb_float_cmp(VALUE x, VALUE y);
-VALUE rb_float_eql(VALUE x, VALUE y);
-VALUE rb_fix_aref(VALUE fix, VALUE idx);
-VALUE rb_int_zero_p(VALUE num);
-VALUE rb_int_even_p(VALUE num);
-VALUE rb_int_odd_p(VALUE num);
-VALUE rb_int_abs(VALUE num);
-VALUE rb_int_bit_length(VALUE num);
-VALUE rb_int_uminus(VALUE num);
-VALUE rb_int_comp(VALUE num);
-static inline _Bool
-INT_POSITIVE_P(VALUE num)
-{
- if (RB_FIXNUM_P(num)) {
- return FIXNUM_POSITIVE_P(num);
- }
- else {
- return BIGNUM_POSITIVE_P(num);
- }
-}
-static inline _Bool
-INT_NEGATIVE_P(VALUE num)
-{
- if (RB_FIXNUM_P(num)) {
- return FIXNUM_NEGATIVE_P(num);
- }
- else {
- return BIGNUM_NEGATIVE_P(num);
- }
-}
-static inline _Bool
-FLOAT_ZERO_P(VALUE num)
-{
- return rb_float_value_inline(num) == 0.0;
-}
-static inline VALUE
-rb_num_compare_with_zero(VALUE num, ID mid)
-{
- VALUE zero = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- VALUE r = rb_check_funcall(num, mid, 1, &zero);
- if (r == ((VALUE)RUBY_Qundef)) {
- rb_cmperr(num, zero);
- }
- return r;
-}
-static inline int
-rb_num_positive_int_p(VALUE num)
-{
- const ID mid = '>';
- if (RB_FIXNUM_P(num)) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return FIXNUM_POSITIVE_P(num);
- }
- else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return BIGNUM_POSITIVE_P(num);
- }
- return RB_TEST(rb_num_compare_with_zero(num, mid));
-}
-static inline int
-rb_num_negative_int_p(VALUE num)
-{
- const ID mid = '<';
- if (RB_FIXNUM_P(num)) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return FIXNUM_NEGATIVE_P(num);
- }
- else if ((__builtin_constant_p(RUBY_T_BIGNUM) ? rbimpl_RB_TYPE_P_fastpath((num), (RUBY_T_BIGNUM)) : (RB_TYPE_P)((num), (RUBY_T_BIGNUM)))) {
- if (rb_method_basic_definition_p(rb_cInteger, mid))
- return BIGNUM_NEGATIVE_P(num);
- }
- return RB_TEST(rb_num_compare_with_zero(num, mid));
-}
-static inline double
-rb_float_flonum_value(VALUE v)
-{
- if (v != (VALUE)0x8000000000000002) {
- union {
- double d;
- VALUE v;
- } t;
- VALUE b63 = (v >> 63);
- t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~(VALUE)0x03), 3);
- return t.d;
- }
- return 0.0;
-}
-static inline double
-rb_float_noflonum_value(VALUE v)
-{
- return ((struct RFloat *)(v))->float_value;
-}
-static inline double
-rb_float_value_inline(VALUE v)
-{
- if (RB_FLONUM_P(v)) {
- return rb_float_flonum_value(v);
- }
- return rb_float_noflonum_value(v);
-}
-static inline VALUE
-rb_float_new_inline(double d)
-{
- union {
- double d;
- VALUE v;
- } t;
- int bits;
- t.d = d;
- bits = (int)((VALUE)(t.v >> 60) & 0x7);
- if (t.v != 0x3000000000000000 &&
- !((bits-3) & ~0x01)) {
- return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02;
- }
- else if (t.v == (VALUE)0) {
- return 0x8000000000000002;
- }
- return rb_float_new_in_heap(d);
-}
-
-
-int ruby_fill_random_bytes(void *, size_t, int);
-
-
-enum {
- RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
- RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
- RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
- RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
-};
-struct RStruct {
- struct RBasic basic;
- union {
- struct {
- long len;
- const VALUE *ptr;
- } heap;
- const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
- } as;
-};
-VALUE rb_struct_init_copy(VALUE copy, VALUE s);
-VALUE rb_struct_lookup(VALUE s, VALUE idx);
-VALUE rb_struct_s_keyword_init(VALUE klass);
-static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
-static inline _Bool RSTRUCT_TRANSIENT_P(VALUE st);
-static inline void RSTRUCT_TRANSIENT_SET(VALUE st);
-static inline void RSTRUCT_TRANSIENT_UNSET(VALUE st);
-static inline long RSTRUCT_EMBED_LEN(VALUE st);
-static inline long internal_RSTRUCT_LEN(VALUE st);
-static inline int RSTRUCT_LENINT(VALUE st);
-static inline const VALUE *RSTRUCT_CONST_PTR(VALUE st);
-static inline void internal_RSTRUCT_SET(VALUE st, long k, VALUE v);
-static inline VALUE internal_RSTRUCT_GET(VALUE st, long k);
-static inline _Bool
-RSTRUCT_TRANSIENT_P(VALUE st)
-{
- return RB_FL_TEST_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline void
-RSTRUCT_TRANSIENT_SET(VALUE st)
-{
- RB_FL_SET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline void
-RSTRUCT_TRANSIENT_UNSET(VALUE st)
-{
- RB_FL_UNSET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
-}
-static inline long
-RSTRUCT_EMBED_LEN(VALUE st)
-{
- long ret = RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK);
- ret >>= RSTRUCT_EMBED_LEN_SHIFT;
- return ret;
-}
-static inline long
-internal_RSTRUCT_LEN(VALUE st)
-{
- if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
- return RSTRUCT_EMBED_LEN(st);
- }
- else {
- return ((struct RStruct *)(st))->as.heap.len;
- }
-}
-static inline int
-RSTRUCT_LENINT(VALUE st)
-{
- return rb_long2int_inline(internal_RSTRUCT_LEN(st));
-}
-static inline const VALUE *
-RSTRUCT_CONST_PTR(VALUE st)
-{
- const struct RStruct *p = ((struct RStruct *)(st));
- if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
- return p->as.ary;
- }
- else {
- return p->as.heap.ptr;
- }
-}
-static inline void
-internal_RSTRUCT_SET(VALUE st, long k, VALUE v)
-{
- rb_obj_write((VALUE)(st), __extension__({
- ;
- ; __typeof__((VALUE *)(&RSTRUCT_CONST_PTR(st)[k])) unaligned_member_access_result = ((VALUE *)(&RSTRUCT_CONST_PTR(st)[k]));
- ; unaligned_member_access_result; }), (VALUE)(v), "./internal/struct.h", 137);
-}
-static inline VALUE
-internal_RSTRUCT_GET(VALUE st, long k)
-{
- return RSTRUCT_CONST_PTR(st)[k];
-}
-static inline const VALUE *
-rb_struct_const_heap_ptr(VALUE st)
-{
- return ((struct RStruct *)(st))->as.heap.ptr;
-}
-
-struct gen_ivtbl {
- uint32_t numiv;
- VALUE ivptr[];
-};
-int rb_ivar_generic_ivtbl_lookup(VALUE obj, struct gen_ivtbl **);
-enum ruby_vminsn_type {
- YARVINSN_nop,
- YARVINSN_getlocal,
- YARVINSN_setlocal,
- YARVINSN_getblockparam,
- YARVINSN_setblockparam,
- YARVINSN_getblockparamproxy,
- YARVINSN_getspecial,
- YARVINSN_setspecial,
- YARVINSN_getinstancevariable,
- YARVINSN_setinstancevariable,
- YARVINSN_getclassvariable,
- YARVINSN_setclassvariable,
- YARVINSN_opt_getconstant_path,
- YARVINSN_getconstant,
- YARVINSN_setconstant,
- YARVINSN_getglobal,
- YARVINSN_setglobal,
- YARVINSN_putnil,
- YARVINSN_putself,
- YARVINSN_putobject,
- YARVINSN_putspecialobject,
- YARVINSN_putstring,
- YARVINSN_concatstrings,
- YARVINSN_anytostring,
- YARVINSN_toregexp,
- YARVINSN_intern,
- YARVINSN_newarray,
- YARVINSN_newarraykwsplat,
- YARVINSN_duparray,
- YARVINSN_duphash,
- YARVINSN_expandarray,
- YARVINSN_concatarray,
- YARVINSN_splatarray,
- YARVINSN_newhash,
- YARVINSN_newrange,
- YARVINSN_pop,
- YARVINSN_dup,
- YARVINSN_dupn,
- YARVINSN_swap,
- YARVINSN_opt_reverse,
- YARVINSN_topn,
- YARVINSN_setn,
- YARVINSN_adjuststack,
- YARVINSN_defined,
- YARVINSN_checkmatch,
- YARVINSN_checkkeyword,
- YARVINSN_checktype,
- YARVINSN_defineclass,
- YARVINSN_definemethod,
- YARVINSN_definesmethod,
- YARVINSN_send,
- YARVINSN_opt_send_without_block,
- YARVINSN_objtostring,
- YARVINSN_opt_str_freeze,
- YARVINSN_opt_nil_p,
- YARVINSN_opt_str_uminus,
- YARVINSN_opt_newarray_max,
- YARVINSN_opt_newarray_min,
- YARVINSN_invokesuper,
- YARVINSN_invokeblock,
- YARVINSN_leave,
- YARVINSN_throw,
- YARVINSN_jump,
- YARVINSN_branchif,
- YARVINSN_branchunless,
- YARVINSN_branchnil,
- YARVINSN_once,
- YARVINSN_opt_case_dispatch,
- YARVINSN_opt_plus,
- YARVINSN_opt_minus,
- YARVINSN_opt_mult,
- YARVINSN_opt_div,
- YARVINSN_opt_mod,
- YARVINSN_opt_eq,
- YARVINSN_opt_neq,
- YARVINSN_opt_lt,
- YARVINSN_opt_le,
- YARVINSN_opt_gt,
- YARVINSN_opt_ge,
- YARVINSN_opt_ltlt,
- YARVINSN_opt_and,
- YARVINSN_opt_or,
- YARVINSN_opt_aref,
- YARVINSN_opt_aset,
- YARVINSN_opt_aset_with,
- YARVINSN_opt_aref_with,
- YARVINSN_opt_length,
- YARVINSN_opt_size,
- YARVINSN_opt_empty_p,
- YARVINSN_opt_succ,
- YARVINSN_opt_not,
- YARVINSN_opt_regexpmatch2,
- YARVINSN_invokebuiltin,
- YARVINSN_opt_invokebuiltin_delegate,
- YARVINSN_opt_invokebuiltin_delegate_leave,
- YARVINSN_getlocal_WC_0,
- YARVINSN_getlocal_WC_1,
- YARVINSN_setlocal_WC_0,
- YARVINSN_setlocal_WC_1,
- YARVINSN_putobject_INT2FIX_0_,
- YARVINSN_putobject_INT2FIX_1_,
- YARVINSN_trace_nop,
- YARVINSN_trace_getlocal,
- YARVINSN_trace_setlocal,
- YARVINSN_trace_getblockparam,
- YARVINSN_trace_setblockparam,
- YARVINSN_trace_getblockparamproxy,
- YARVINSN_trace_getspecial,
- YARVINSN_trace_setspecial,
- YARVINSN_trace_getinstancevariable,
- YARVINSN_trace_setinstancevariable,
- YARVINSN_trace_getclassvariable,
- YARVINSN_trace_setclassvariable,
- YARVINSN_trace_opt_getconstant_path,
- YARVINSN_trace_getconstant,
- YARVINSN_trace_setconstant,
- YARVINSN_trace_getglobal,
- YARVINSN_trace_setglobal,
- YARVINSN_trace_putnil,
- YARVINSN_trace_putself,
- YARVINSN_trace_putobject,
- YARVINSN_trace_putspecialobject,
- YARVINSN_trace_putstring,
- YARVINSN_trace_concatstrings,
- YARVINSN_trace_anytostring,
- YARVINSN_trace_toregexp,
- YARVINSN_trace_intern,
- YARVINSN_trace_newarray,
- YARVINSN_trace_newarraykwsplat,
- YARVINSN_trace_duparray,
- YARVINSN_trace_duphash,
- YARVINSN_trace_expandarray,
- YARVINSN_trace_concatarray,
- YARVINSN_trace_splatarray,
- YARVINSN_trace_newhash,
- YARVINSN_trace_newrange,
- YARVINSN_trace_pop,
- YARVINSN_trace_dup,
- YARVINSN_trace_dupn,
- YARVINSN_trace_swap,
- YARVINSN_trace_opt_reverse,
- YARVINSN_trace_topn,
- YARVINSN_trace_setn,
- YARVINSN_trace_adjuststack,
- YARVINSN_trace_defined,
- YARVINSN_trace_checkmatch,
- YARVINSN_trace_checkkeyword,
- YARVINSN_trace_checktype,
- YARVINSN_trace_defineclass,
- YARVINSN_trace_definemethod,
- YARVINSN_trace_definesmethod,
- YARVINSN_trace_send,
- YARVINSN_trace_opt_send_without_block,
- YARVINSN_trace_objtostring,
- YARVINSN_trace_opt_str_freeze,
- YARVINSN_trace_opt_nil_p,
- YARVINSN_trace_opt_str_uminus,
- YARVINSN_trace_opt_newarray_max,
- YARVINSN_trace_opt_newarray_min,
- YARVINSN_trace_invokesuper,
- YARVINSN_trace_invokeblock,
- YARVINSN_trace_leave,
- YARVINSN_trace_throw,
- YARVINSN_trace_jump,
- YARVINSN_trace_branchif,
- YARVINSN_trace_branchunless,
- YARVINSN_trace_branchnil,
- YARVINSN_trace_once,
- YARVINSN_trace_opt_case_dispatch,
- YARVINSN_trace_opt_plus,
- YARVINSN_trace_opt_minus,
- YARVINSN_trace_opt_mult,
- YARVINSN_trace_opt_div,
- YARVINSN_trace_opt_mod,
- YARVINSN_trace_opt_eq,
- YARVINSN_trace_opt_neq,
- YARVINSN_trace_opt_lt,
- YARVINSN_trace_opt_le,
- YARVINSN_trace_opt_gt,
- YARVINSN_trace_opt_ge,
- YARVINSN_trace_opt_ltlt,
- YARVINSN_trace_opt_and,
- YARVINSN_trace_opt_or,
- YARVINSN_trace_opt_aref,
- YARVINSN_trace_opt_aset,
- YARVINSN_trace_opt_aset_with,
- YARVINSN_trace_opt_aref_with,
- YARVINSN_trace_opt_length,
- YARVINSN_trace_opt_size,
- YARVINSN_trace_opt_empty_p,
- YARVINSN_trace_opt_succ,
- YARVINSN_trace_opt_not,
- YARVINSN_trace_opt_regexpmatch2,
- YARVINSN_trace_invokebuiltin,
- YARVINSN_trace_opt_invokebuiltin_delegate,
- YARVINSN_trace_opt_invokebuiltin_delegate_leave,
- YARVINSN_trace_getlocal_WC_0,
- YARVINSN_trace_getlocal_WC_1,
- YARVINSN_trace_setlocal_WC_0,
- YARVINSN_trace_setlocal_WC_1,
- YARVINSN_trace_putobject_INT2FIX_0_,
- YARVINSN_trace_putobject_INT2FIX_1_,
- VM_INSTRUCTION_SIZE
-};
-extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid);
-extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
-extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2);
-extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
- int argc, const VALUE *argv, int priv);
-static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
-static VALUE
-ruby_vm_special_exception_copy(VALUE exc)
-{
- VALUE e = rb_obj_alloc(rb_class_real(RBASIC_CLASS(exc)));
- rb_obj_copy_ivar(e, exc);
- return e;
-}
-__declspec(noreturn) static void ec_stack_overflow(rb_execution_context_t *ec, int);
-static void
-ec_stack_overflow(rb_execution_context_t *ec, int setup)
-{
- VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
- ec->raised_flag = RAISED_STACKOVERFLOW;
- if (setup) {
- VALUE at = rb_ec_backtrace_object(ec);
- mesg = ruby_vm_special_exception_copy(mesg);
- rb_ivar_set(mesg, idBt, at);
- rb_ivar_set(mesg, idBt_locations, at);
- }
- ec->errinfo = mesg;
- rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
-}
-__declspec(noreturn) static void vm_stackoverflow(void);
-__declspec(noinline) static __attribute__((__cold__)) void vm_stackoverflow(void);
-static void
-vm_stackoverflow(void)
-{
- ec_stack_overflow(rb_current_execution_context(1), 1);
-}
-__declspec(noreturn) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
-static void
-rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
-{
- if (rb_during_gc()) {
- rb_bug("system stack overflow during GC. Faulty native extension?");
- }
- if (crit) {
- ec->raised_flag = RAISED_STACKOVERFLOW;
- ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
- rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
- }
- ec_stack_overflow(ec, 1);
-}
-__extension__ _Static_assert((-2) == -2, "VM_ENV_DATA_INDEX_ME_CREF" ": " "VM_ENV_DATA_INDEX_ME_CREF == -2");
-__extension__ _Static_assert((-1) == -1, "VM_ENV_DATA_INDEX_SPECVAL" ": " "VM_ENV_DATA_INDEX_SPECVAL == -1");
-__extension__ _Static_assert(( 0) == -0, "VM_ENV_DATA_INDEX_FLAGS" ": " "VM_ENV_DATA_INDEX_FLAGS == -0");
-static void
-vm_push_frame(rb_execution_context_t *ec,
- const rb_iseq_t *iseq,
- VALUE type,
- VALUE self,
- VALUE specval,
- VALUE cref_or_me,
- const VALUE *pc,
- VALUE *sp,
- int local_size,
- int stack_max)
-{
- rb_control_frame_t *const cfp = ((ec->cfp)-1);
- ;
- ((void)0);
- do { __extension__ _Static_assert(sizeof(*(sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*(sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*(cfp)) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*(cfp)) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&(sp)[(local_size + stack_max)]; if ((__builtin_expect(!!((cfp) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- ;
- for (int i=0; i < local_size; i++) {
- *sp++ = ((VALUE)RUBY_Qnil);
- }
- *sp++ = cref_or_me;
- *sp++ = specval ;
- *sp++ = type;
- *cfp = (const struct rb_control_frame_struct) {
- .pc = pc,
- .sp = sp,
- .iseq = iseq,
- .self = self,
- .ep = sp - 1,
- .block_code = ((void*)0),
- .__bp__ = sp,
- .jit_return = ((void*)0)
- };
- ec->cfp = cfp;
- if (0 == 2) {
- rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- }
- ;
-}static inline
-void
-rb_vm_pop_frame_no_int(rb_execution_context_t *ec)
-{
- rb_control_frame_t *cfp = ec->cfp;
- if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
- if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- ec->cfp = ((cfp)+1);
-}
-static inline int
-vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
-{
- VALUE flags = ep[( 0)];
- if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
- if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
- rb_vm_check_ints(ec);
- ec->cfp = ((cfp)+1);
- return flags & VM_FRAME_FLAG_FINISH;
-}
-static void
-rb_vm_pop_frame(rb_execution_context_t *ec)
-{
- vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
-}static inline
-VALUE
-rb_vm_push_frame_fname(rb_execution_context_t *ec, VALUE fname)
-{
- VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
- void *ptr = ruby_xcalloc(sizeof(struct rb_iseq_constant_body) + sizeof(struct rb_iseq_struct), 1);
- rb_imemo_tmpbuf_set_ptr(tmpbuf, ptr);
- struct rb_iseq_struct *dmy_iseq = (struct rb_iseq_struct *)ptr;
- struct rb_iseq_constant_body *dmy_body = (struct rb_iseq_constant_body *)&dmy_iseq[1];
- dmy_iseq->body = dmy_body;
- dmy_body->type = ISEQ_TYPE_TOP;
- dmy_body->location.pathobj = fname;
- vm_push_frame(ec,
- dmy_iseq,
- VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH,
- ec->cfp->self,
- 0,
- ((VALUE)RUBY_Qfalse),
- ((void*)0),
- ec->cfp->sp,
- 0,
- 0);
- return tmpbuf;
-}
-static inline VALUE
-rb_arity_error_new(int argc, int min, int max)
-{
- VALUE err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d", argc, min);
- if (min == max) {
- }
- else if (max == (-1)) {
- ((__builtin_constant_p("+") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((err_mess), ("+")));
- }
- else {
- rb_str_catf(err_mess, "..%d", max);
- }
- ((__builtin_constant_p(")") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((err_mess), (")")));
- return rb_exc_new_str(rb_eArgError, err_mess);
-}
-static void
-rb_error_arity(int argc, int min, int max)
-{
- rb_exc_raise(rb_arity_error_new(argc, min, max));
-}
-__declspec(noinline) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
-static void
-vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
-{
- rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
- VM_FORCE_WRITE(&ep[index], v);
- VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
- ((void)0);
-}
-static inline void
-vm_env_write(const VALUE *ep, int index, VALUE v)
-{
- VALUE flags = ep[( 0)];
- if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
- VM_STACK_ENV_WRITE(ep, index, v);
- }
- else {
- vm_env_write_slowpath(ep, index, v);
- }
-}
-static VALUE
-rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
-{
- if (block_handler == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- switch (vm_block_handler_type(block_handler)) {
- case block_handler_type_iseq:
- case block_handler_type_ifunc:
- return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
- case block_handler_type_symbol:
- return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
- case block_handler_type_proc:
- return VM_BH_TO_PROC(block_handler);
- default:
- __builtin_unreachable();
- }
- }
-}
-static inline struct vm_svar *
-lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
-{
- VALUE svar;
- if (lep && (ec == ((void*)0) || ec->root_lep != lep)) {
- svar = lep[(-2)];
- }
- else {
- svar = ec->root_svar;
- }
- ((void)0);
- return (struct vm_svar *)svar;
-}
-static inline void
-lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
-{
- ((void)0);
- if (lep && (ec == ((void*)0) || ec->root_lep != lep)) {
- vm_env_write(lep, (-2), (VALUE)svar);
- }
- else {
- rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), __extension__({
- ;
- ; __typeof__((VALUE *)(&ec->root_svar)) unaligned_member_access_result = ((VALUE *)(&ec->root_svar));
- ; unaligned_member_access_result; }), (VALUE)(svar), "./vm_insnhelper.c", 586);
- }
-}
-static VALUE
-lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
-{
- const struct vm_svar *svar = lep_svar(ec, lep);
- if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
- switch (key) {
- case VM_SVAR_LASTLINE:
- return svar->lastline;
- case VM_SVAR_BACKREF:
- return svar->backref;
- default: {
- const VALUE ary = svar->others;
- if (RB_NIL_P(ary)) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
- }
- }
- }
-}
-static struct vm_svar *
-svar_new(VALUE obj)
-{
- return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj);
-}
-static void
-lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
-{
- struct vm_svar *svar = lep_svar(ec, lep);
- if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
- lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
- }
- switch (key) {
- case VM_SVAR_LASTLINE:
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->lastline)) unaligned_member_access_result = ((VALUE *)(&svar->lastline));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 632);
- return;
- case VM_SVAR_BACKREF:
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->backref)) unaligned_member_access_result = ((VALUE *)(&svar->backref));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 635);
- return;
- default: {
- VALUE ary = svar->others;
- if (RB_NIL_P(ary)) {
- rb_obj_write((VALUE)(svar), __extension__({
- ;
- ; __typeof__((VALUE *)(&svar->others)) unaligned_member_access_result = ((VALUE *)(&svar->others));
- ; unaligned_member_access_result; }), (VALUE)(ary = rb_ary_new()), "./vm_insnhelper.c", 641);
- }
- rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
- }
- }
-}
-static inline VALUE
-vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
-{
- VALUE val;
- if (type == 0) {
- val = lep_svar_get(ec, lep, key);
- }
- else {
- VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
- if (type & 0x01) {
- switch (type >> 1) {
- case '&':
- val = rb_reg_last_match(backref);
- break;
- case '`':
- val = rb_reg_match_pre(backref);
- break;
- case '\'':
- val = rb_reg_match_post(backref);
- break;
- case '+':
- val = rb_reg_match_last(backref);
- break;
- default:
- rb_bug("unexpected back-ref");
- }
- }
- else {
- val = rb_reg_nth_match((int)(type >> 1), backref);
- }
- }
- return val;
-}
-__attribute__((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
-static rb_callable_method_entry_t *
-check_method_entry(VALUE obj, int can_be_svar)
-{
- if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0);
- switch (imemo_type(obj)) {
- case imemo_ment:
- return (rb_callable_method_entry_t *)obj;
- case imemo_cref:
- return ((void*)0);
- case imemo_svar:
- if (can_be_svar) {
- return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
- }
- default:
- return ((void*)0);
- }
-}
-static const rb_callable_method_entry_t *
-rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
-{
- const VALUE *ep = cfp->ep;
- rb_callable_method_entry_t *me;
- while (!VM_ENV_LOCAL_P(ep)) {
- if ((me = check_method_entry(ep[(-2)], 0)) != ((void*)0)) return me;
- ep = VM_ENV_PREV_EP(ep);
- }
- return check_method_entry(ep[(-2)], 1);
-}
-static const rb_iseq_t *
-method_entry_iseqptr(const rb_callable_method_entry_t *me)
-{
- switch (me->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- return me->def->body.iseq.iseqptr;
- default:
- return ((void*)0);
- }
-}
-static rb_cref_t *
-method_entry_cref(const rb_callable_method_entry_t *me)
-{
- switch (me->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- return me->def->body.iseq.cref;
- default:
- return ((void*)0);
- }
-}
-__attribute__((__pure__)) static rb_cref_t *check_cref(VALUE, int);
-static rb_cref_t *
-check_cref(VALUE obj, int can_be_svar)
-{
- if (obj == ((VALUE)RUBY_Qfalse)) return ((void*)0);
- switch (imemo_type(obj)) {
- case imemo_ment:
- return method_entry_cref((rb_callable_method_entry_t *)obj);
- case imemo_cref:
- return (rb_cref_t *)obj;
- case imemo_svar:
- if (can_be_svar) {
- return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
- }
- default:
- return ((void*)0);
- }
-}
-static inline rb_cref_t *
-vm_env_cref(const VALUE *ep)
-{
- rb_cref_t *cref;
- while (!VM_ENV_LOCAL_P(ep)) {
- if ((cref = check_cref(ep[(-2)], 0)) != ((void*)0)) return cref;
- ep = VM_ENV_PREV_EP(ep);
- }
- return check_cref(ep[(-2)], 1);
-}
-static int
-is_cref(const VALUE v, int can_be_svar)
-{
- if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) {
- switch (imemo_type(v)) {
- case imemo_cref:
- return 1;
- case imemo_svar:
- if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
- default:
- break;
- }
- }
- return 0;
-}
-static int
-vm_env_cref_by_cref(const VALUE *ep)
-{
- while (!VM_ENV_LOCAL_P(ep)) {
- if (is_cref(ep[(-2)], 0)) return 1;
- ep = VM_ENV_PREV_EP(ep);
- }
- return is_cref(ep[(-2)], 1);
-}
-static rb_cref_t *
-cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
-{
- const VALUE v = *vptr;
- rb_cref_t *cref, *new_cref;
- if ((__builtin_constant_p(RUBY_T_IMEMO) ? rbimpl_RB_TYPE_P_fastpath((v), (RUBY_T_IMEMO)) : (RB_TYPE_P)((v), (RUBY_T_IMEMO)))) {
- switch (imemo_type(v)) {
- case imemo_cref:
- cref = (rb_cref_t *)v;
- new_cref = vm_cref_dup(cref);
- if (parent) {
- rb_obj_write((VALUE)(parent), __extension__({
- ;
- ; __typeof__((VALUE *)(vptr)) unaligned_member_access_result = ((VALUE *)(vptr));
- ; unaligned_member_access_result; }), (VALUE)(new_cref), "./vm_insnhelper.c", 827);
- }
- else {
- VM_FORCE_WRITE(vptr, (VALUE)new_cref);
- }
- return (rb_cref_t *)new_cref;
- case imemo_svar:
- if (can_be_svar) {
- return cref_replace_with_duplicated_cref_each_frame(&((struct vm_svar *)v)->cref_or_me, 0, v);
- }
- case imemo_ment:
- rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
- default:
- break;
- }
- }
- return ((void*)0);
-}
-static rb_cref_t *
-vm_cref_replace_with_duplicated_cref(const VALUE *ep)
-{
- if (vm_env_cref_by_cref(ep)) {
- rb_cref_t *cref;
- VALUE envval;
- while (!VM_ENV_LOCAL_P(ep)) {
- envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
- if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void*)0)) {
- return cref;
- }
- ep = VM_ENV_PREV_EP(ep);
- }
- envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
- return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
- }
- else {
- rb_bug("vm_cref_dup: unreachable");
- }
-}
-static rb_cref_t *
-vm_get_cref(const VALUE *ep)
-{
- rb_cref_t *cref = vm_env_cref(ep);
- if (cref != ((void*)0)) {
- return cref;
- }
- else {
- rb_bug("vm_get_cref: unreachable");
- }
-}static inline
-rb_cref_t *
-rb_vm_get_cref(const VALUE *ep)
-{
- return vm_get_cref(ep);
-}
-static rb_cref_t *
-vm_ec_cref(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (cfp == ((void*)0)) {
- return ((void*)0);
- }
- return vm_get_cref(cfp->ep);
-}
-static const rb_cref_t *
-vm_get_const_key_cref(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- const rb_cref_t *key_cref = cref;
- while (cref) {
- if (RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
- RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_USER1))) {
- return key_cref;
- }
- cref = CREF_NEXT(cref);
- }
- return ((void*)0);
-}static inline
-void
-rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
-{
- rb_cref_t *new_cref;
- while (cref) {
- if (CREF_CLASS(cref) == old_klass) {
- new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
- *new_cref_ptr = new_cref;
- return;
- }
- new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
- cref = CREF_NEXT(cref);
- *new_cref_ptr = new_cref;
- new_cref_ptr = &new_cref->next;
- }
- *new_cref_ptr = ((void*)0);
-}
-static rb_cref_t *
-vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval, int singleton)
-{
- rb_cref_t *prev_cref = ((void*)0);
- if (ep) {
- prev_cref = vm_env_cref(ep);
- }
- else {
- rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
- if (cfp) {
- prev_cref = vm_env_cref(cfp->ep);
- }
- }
- return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval, singleton);
-}
-static inline VALUE
-vm_get_cbase(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- return CREF_CLASS_FOR_DEFINITION(cref);
-}
-static inline VALUE
-vm_get_const_base(const VALUE *ep)
-{
- const rb_cref_t *cref = vm_get_cref(ep);
- while (cref) {
- if (!CREF_PUSHED_BY_EVAL(cref)) {
- return CREF_CLASS_FOR_DEFINITION(cref);
- }
- cref = CREF_NEXT(cref);
- }
- return ((VALUE)RUBY_Qundef);
-}
-static inline void
-vm_check_if_namespace(VALUE klass)
-{
- if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS))) && !(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_MODULE)) : (RB_TYPE_P)((klass), (RUBY_T_MODULE)))) {
- rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
- }
-}
-static inline void
-vm_ensure_not_refinement_module(VALUE self)
-{
- if ((__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((self), (RUBY_T_MODULE)) : (RB_TYPE_P)((self), (RUBY_T_MODULE))) && RB_FL_TEST(self, RMODULE_IS_REFINEMENT)) {
- rb_warn("not defined at the refinement, but at the outer class/module");
- }
-}
-static inline VALUE
-vm_get_iclass(const rb_control_frame_t *cfp, VALUE klass)
-{
- return klass;
-}
-static inline VALUE
-vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
-{
- void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id);
- VALUE val;
- if (RB_NIL_P(orig_klass) && allow_nil) {
- const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
- const rb_cref_t *cref;
- VALUE klass = ((VALUE)RUBY_Qnil);
- while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
- root_cref = CREF_NEXT(root_cref);
- }
- cref = root_cref;
- while (cref && CREF_NEXT(cref)) {
- if (CREF_PUSHED_BY_EVAL(cref)) {
- klass = ((VALUE)RUBY_Qnil);
- }
- else {
- klass = CREF_CLASS(cref);
- }
- cref = CREF_NEXT(cref);
- if (!RB_NIL_P(klass)) {
- VALUE av, am = 0;
- rb_const_entry_t *ce;
- search_continue:
- if ((ce = rb_const_lookup(klass, id))) {
- rb_const_warn_if_deprecated(ce, klass, id);
- val = ce->value;
- if (RB_UNDEF_P(val)) {
- if (am == klass) break;
- am = klass;
- if (is_defined) return 1;
- if (rb_autoloading_value(klass, id, &av, ((void*)0))) return av;
- rb_autoload_load(klass, id);
- goto search_continue;
- }
- else {
- if (is_defined) {
- return 1;
- }
- else {
- if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) {
- if (!rb_ractor_shareable_p(val)) {
- rb_raise(rb_eRactorIsolationError,
- "can not access non-shareable objects in constant %""l""i" "\v""::%s by non-main ractor.", rb_class_path(klass), rb_id2name(id));
- }
- }
- return val;
- }
- }
- }
- }
- }
- if (root_cref && !RB_NIL_P(CREF_CLASS(root_cref))) {
- klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
- }
- else {
- klass = rb_class_of(ec->cfp->self);
- }
- if (is_defined) {
- return rb_const_defined(klass, id);
- }
- else {
- return rb_const_get(klass, id);
- }
- }
- else {
- vm_check_if_namespace(orig_klass);
- if (is_defined) {
- return rb_public_const_defined_from(orig_klass, id);
- }
- else {
- return rb_public_const_get_from(orig_klass, id);
- }
- }
-}static inline
-VALUE
-rb_vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, VALUE allow_nil)
-{
- return vm_get_ev_const(ec, orig_klass, id, allow_nil == ((VALUE)RUBY_Qtrue), 0);
-}
-static inline VALUE
-vm_get_ev_const_chain(rb_execution_context_t *ec, const ID *segments)
-{
- VALUE val = ((VALUE)RUBY_Qnil);
- int idx = 0;
- int allow_nil = 1;
- if (segments[0] == idNULL) {
- val = rb_cObject;
- idx++;
- allow_nil = 0;
- }
- while (segments[idx]) {
- ID id = segments[idx++];
- val = vm_get_ev_const(ec, val, id, allow_nil, 0);
- allow_nil = 0;
- }
- return val;
-}
-static inline VALUE
-vm_get_cvar_base(const rb_cref_t *cref, const rb_control_frame_t *cfp, int top_level_raise)
-{
- VALUE klass;
- if (!cref) {
- rb_bug("vm_get_cvar_base: no cref");
- }
- while (CREF_NEXT(cref) &&
- (RB_NIL_P(CREF_CLASS(cref)) || RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
- CREF_PUSHED_BY_EVAL(cref) || CREF_SINGLETON(cref))) {
- cref = CREF_NEXT(cref);
- }
- if (top_level_raise && !CREF_NEXT(cref)) {
- rb_raise(rb_eRuntimeError, "class variable access from toplevel");
- }
- klass = vm_get_iclass(cfp, CREF_CLASS(cref));
- if (RB_NIL_P(klass)) {
- rb_raise(rb_eTypeError, "no class variables available");
- }
- return klass;
-}
-__attribute__ ((__always_inline__)) static void fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, attr_index_t index, shape_id_t shape_id);
-static inline void
-fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, attr_index_t index, shape_id_t shape_id)
-{
- if (is_attr) {
- vm_cc_attr_index_set(cc, index, shape_id);
- }
- else {
- vm_ic_attr_index_set(iseq, ic, index, shape_id);
- }
-}
-__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, const rb_iseq_t *, IVC, const struct rb_callcache *, int);
-static inline VALUE
-vm_getivar(VALUE obj, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
-{
- VALUE val = ((VALUE)RUBY_Qundef);
- shape_id_t shape_id;
- VALUE * ivar_list;
- if (RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qnil);
- }
- shape_id = RBASIC_SHAPE_ID(obj);
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- ivar_list = ROBJECT_IVPTR(obj);
- ((void)0);
- break;
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- {
- if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) {
- goto general_path;
- }
- ivar_list = (((rb_classext_t *)((char *)(obj) + sizeof(struct RClass)))->iv_ptr);
- break;
- }
- default:
- if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) {
- struct gen_ivtbl *ivtbl;
- rb_gen_ivtbl_get(obj, id, &ivtbl);
- ivar_list = ivtbl->ivptr;
- }
- else {
- return ((VALUE)RUBY_Qnil);
- }
- }
- shape_id_t cached_id;
- attr_index_t index;
- if (is_attr) {
- vm_cc_atomic_shape_and_index(cc, &cached_id, &index);
- }
- else {
- vm_ic_atomic_shape_and_index(ic, &cached_id, &index);
- }
- if ((__builtin_expect(!!(cached_id == shape_id), 1))) {
- ((void)0);
- if (index == (attr_index_t)-1) {
- return ((VALUE)RUBY_Qnil);
- }
- val = ivar_list[index];
- ((void)0);
- }
- else {
- rb_shape_t *shape = rb_shape_get_shape_by_id(shape_id);
- if (shape_id == ((5 * 2) + 1)) {
- if (!rb_id_table_lookup(ROBJECT_IV_HASH(obj), id, &val)) {
- val = ((VALUE)RUBY_Qnil);
- }
- }
- else {
- if (rb_shape_get_iv_index(shape, id, &index)) {
- fill_ivar_cache(iseq, ic, cc, is_attr, index, shape_id);
- val = ivar_list[index];
- ((void)0);
- }
- else {
- if (is_attr) {
- vm_cc_attr_index_initialize(cc, shape_id);
- }
- else {
- vm_ic_attr_index_initialize(ic, shape_id);
- }
- val = ((VALUE)RUBY_Qnil);
- }
- }
- }
- ((void)0);
- return val;
-general_path:
- ((void)0);
- if (is_attr) {
- return rb_attr_get(obj, id);
- }
- else {
- return rb_ivar_get(obj, id);
- }
-}
-static void
-populate_cache(attr_index_t index, shape_id_t next_shape_id, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, _Bool is_attr)
-{
- ((void)0);
- if (is_attr) {
- vm_cc_attr_index_set(cc, index, next_shape_id);
- }
- else {
- vm_ic_attr_index_set(iseq, ic, index, next_shape_id);
- }
-}
-__attribute__ ((__always_inline__)) static VALUE vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr);
-__declspec(noinline) static VALUE vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic);
-__declspec(noinline) static VALUE vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc);
-static VALUE
-vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
-{
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- {
- do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
- attr_index_t index = rb_obj_ivar_set(obj, id, val);
- shape_id_t next_shape_id = ROBJECT_SHAPE_ID(obj);
- if (next_shape_id != ((5 * 2) + 1)) {
- populate_cache(index, next_shape_id, id, iseq, ic, cc, is_attr);
- }
- ((void)0);
- return val;
- }
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- {
- rb_ivar_set(obj, id, val);
- shape_id_t next_shape_id = rb_shape_get_shape_id(obj);
- rb_shape_t *next_shape = rb_shape_get_shape_by_id(next_shape_id);
- attr_index_t index;
- if (rb_shape_get_iv_index(next_shape, id, &index)) {
- if (index >= (attr_index_t)(-1)) {
- rb_raise(rb_eArgError, "too many instance variables");
- }
- populate_cache(index, next_shape_id, id, iseq, ic, cc, is_attr);
- }
- else {
- rb_bug("didn't find the id\n");
- }
- return val;
- }
- }
- ((void)0);
- return rb_ivar_set(obj, id, val);
-}
-static VALUE
-vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic)
-{
- return vm_setivar_slowpath(obj, id, val, iseq, ic, ((void*)0), 0);
-}
-static VALUE
-vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc)
-{
- return vm_setivar_slowpath(obj, id, val, ((void*)0), ((void*)0), cc, 1);
-}
-__declspec(noinline) static VALUE vm_setivar_default(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index);
-static VALUE
-vm_setivar_default(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index)
-{
- shape_id_t shape_id = RBASIC_SHAPE_ID(obj);
- struct gen_ivtbl *ivtbl = 0;
- if (shape_id == dest_shape_id) {
- ((void)0);
- rb_gen_ivtbl_get(obj, 0, &ivtbl);
- }
- else if (dest_shape_id != (((uintptr_t)1 << 32) - 1)) {
- rb_shape_t * dest_shape = rb_shape_get_shape_by_id(dest_shape_id);
- shape_id_t source_shape_id = dest_shape->parent_id;
- if (shape_id == source_shape_id && dest_shape->edge_name == id && dest_shape->type == SHAPE_IVAR) {
- ivtbl = rb_ensure_generic_iv_list_size(obj, dest_shape, index + 1);
- RBASIC_SET_SHAPE_ID(obj, dest_shape_id);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
- VALUE *ptr = ivtbl->ivptr;
- rb_obj_write((VALUE)(obj), __extension__({
- ;
- ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1423);
- ((void)0);
- return val;
-}
-static inline VALUE
-vm_setivar(VALUE obj, ID id, VALUE val, shape_id_t dest_shape_id, attr_index_t index)
-{
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- {
- ((void)0);
- shape_id_t shape_id = ROBJECT_SHAPE_ID(obj);
- ((void)0);
- if ((__builtin_expect(!!(shape_id == dest_shape_id), 1))) {
- ((void)0);
- ((void)0);
- }
- else if (dest_shape_id != (((uintptr_t)1 << 32) - 1)) {
- rb_shape_t *dest_shape = rb_shape_get_shape_by_id(dest_shape_id);
- shape_id_t source_shape_id = dest_shape->parent_id;
- if (shape_id == source_shape_id && dest_shape->edge_name == id) {
- ((void)0);
- ROBJECT_SET_SHAPE_ID(obj, dest_shape_id);
- ((void)0);
- ((void)0);
- }
- else {
- break;
- }
- }
- else {
- break;
- }
- VALUE *ptr = ROBJECT_IVPTR(obj);
- ((void)0);
- rb_obj_write((VALUE)(obj), __extension__({
- ;
- ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1469);
- ((void)0);
- return val;
- }
- break;
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- ((void)0);
- default:
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-update_classvariable_cache(const rb_iseq_t *iseq, VALUE klass, ID id, ICVARC ic)
-{
- VALUE defined_class = 0;
- VALUE cvar_value = rb_cvar_find(klass, id, &defined_class);
- if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((defined_class), (RUBY_T_ICLASS)))) {
- defined_class = ((struct RBasic *)(defined_class))->klass;
- }
- struct rb_id_table *rb_cvc_tbl = (((rb_classext_t *)((char *)(defined_class) + sizeof(struct RClass)))->cvc_tbl);
- if (!rb_cvc_tbl) {
- rb_bug("the cvc table should be set");
- }
- VALUE ent_data;
- if (!rb_id_table_lookup(rb_cvc_tbl, id, &ent_data)) {
- rb_bug("should have cvar cache entry");
- }
- struct rb_cvar_class_tbl_entry *ent = (void *)ent_data;
- ent->global_cvar_state = (ruby_vm_global_cvar_state);
- ic->entry = ent;
- (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "./vm_insnhelper.c", 1510));
- return cvar_value;
-}
-static inline VALUE
-vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, ICVARC ic)
-{
- const rb_cref_t *cref;
- if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state) && (__builtin_expect(!!(rb_ractor_main_p()), 1))) {
- ((void)0);
- VALUE v = rb_ivar_lookup(ic->entry->class_value, id, ((VALUE)RUBY_Qundef));
- ((void)0);
- return v;
- }
- cref = vm_get_cref(((((reg_cfp)->ep))));
- VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
- return update_classvariable_cache(iseq, klass, id, ic);
-}static inline
-VALUE
-rb_vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, ICVARC ic)
-{
- return vm_getclassvariable(iseq, cfp, id, ic);
-}
-static inline void
-vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, VALUE val, ICVARC ic)
-{
- const rb_cref_t *cref;
- if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state)) {
- ((void)0);
- rb_class_ivar_set(ic->entry->class_value, id, val);
- return;
- }
- cref = vm_get_cref(((((reg_cfp)->ep))));
- VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
- rb_cvar_set(klass, id, val);
- update_classvariable_cache(iseq, klass, id, ic);
-}static inline
-void
-rb_vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, VALUE val, ICVARC ic)
-{
- vm_setclassvariable(iseq, cfp, id, val, ic);
-}
-static inline VALUE
-vm_getinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, IVC ic)
-{
- return vm_getivar(obj, id, iseq, ic, ((void*)0), 0);
-}
-static inline void
-vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
-{
- if (RB_SPECIAL_CONST_P(obj)) {
- rb_error_frozen_object(obj);
- return;
- }
- shape_id_t dest_shape_id;
- attr_index_t index;
- vm_ic_atomic_shape_and_index(ic, &dest_shape_id, &index);
- if ((__builtin_expect(!!(RB_UNDEF_P(vm_setivar(obj, id, val, dest_shape_id, index))), 0))) {
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- if (!RB_UNDEF_P(vm_setivar_default(obj, id, val, dest_shape_id, index))) {
- return;
- }
- }
- vm_setivar_slowpath_ivar(obj, id, val, iseq, ic);
- }
-}static inline
-void
-rb_vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
-{
- vm_setinstancevariable(iseq, obj, id, val, ic);
-}
-static VALUE
-vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
-{
- if (RB_FIXNUM_P(err)) {
- ec->tag->state = RB_FIX2INT(err);
- }
- else if (RB_SYMBOL_P(err)) {
- ec->tag->state = RUBY_TAG_THROW;
- }
- else if (imemo_throw_data_p((VALUE)err)) {
- ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
- }
- else {
- ec->tag->state = RUBY_TAG_RAISE;
- }
- return err;
-}
-static VALUE
-vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
- const int flag, const VALUE throwobj)
-{
- const rb_control_frame_t *escape_cfp = ((void*)0);
- const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
- if (flag != 0) {
- }
- else if (state == RUBY_TAG_BREAK) {
- int is_orphan = 1;
- const VALUE *ep = ((((reg_cfp)->ep)));
- const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
- escape_cfp = reg_cfp;
- while (((base_iseq)->body)->type != ISEQ_TYPE_BLOCK) {
- if (((escape_cfp->iseq)->body)->type == ISEQ_TYPE_CLASS) {
- escape_cfp = ((escape_cfp)+1);
- ep = escape_cfp->ep;
- base_iseq = escape_cfp->iseq;
- }
- else {
- ep = VM_ENV_PREV_EP(ep);
- base_iseq = ((base_iseq)->body)->parent_iseq;
- escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
- ((void)0);
- }
- }
- if (VM_FRAME_LAMBDA_P(escape_cfp)) {
- is_orphan = 0;
- state = RUBY_TAG_RETURN;
- }
- else {
- ep = VM_ENV_PREV_EP(ep);
- while (escape_cfp < eocfp) {
- if (escape_cfp->ep == ep) {
- const rb_iseq_t *const iseq = escape_cfp->iseq;
- const VALUE epc = escape_cfp->pc - ((iseq)->body)->iseq_encoded;
- const struct iseq_catch_table *const ct = ((iseq)->body)->catch_table;
- unsigned int i;
- if (!ct) break;
- for (i=0; i < ct->size; i++) {
- const struct iseq_catch_table_entry *const entry =
- __extension__({
- ;
- ; __typeof__(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]);
- ; unaligned_member_access_result; });
- if (entry->type == CATCH_TYPE_BREAK &&
- entry->iseq == base_iseq &&
- entry->start < epc && entry->end >= epc) {
- if (entry->cont == epc) {
- is_orphan = 0;
- }
- break;
- }
- }
- break;
- }
- escape_cfp = ((escape_cfp)+1);
- }
- }
- if (is_orphan) {
- rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
- }
- }
- else if (state == RUBY_TAG_RETRY) {
- const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
- escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
- }
- else if (state == RUBY_TAG_RETURN) {
- const VALUE *current_ep = ((((reg_cfp)->ep)));
- const VALUE *target_ep = ((void*)0), *target_lep, *ep = current_ep;
- int in_class_frame = 0;
- int toplevel = 1;
- escape_cfp = reg_cfp;
- while (!VM_ENV_LOCAL_P(ep)) {
- if (VM_ENV_FLAGS(ep, VM_FRAME_FLAG_LAMBDA) && target_ep == ((void*)0)) {
- target_ep = ep;
- }
- ep = VM_ENV_PREV_EP(ep);
- }
- target_lep = ep;
- while (escape_cfp < eocfp) {
- const VALUE *lep = VM_CF_LEP(escape_cfp);
- if (!target_lep) {
- target_lep = lep;
- }
- if (lep == target_lep &&
- VM_FRAME_RUBYFRAME_P(escape_cfp) &&
- ((escape_cfp->iseq)->body)->type == ISEQ_TYPE_CLASS) {
- in_class_frame = 1;
- target_lep = 0;
- }
- if (lep == target_lep) {
- if (VM_FRAME_LAMBDA_P(escape_cfp)) {
- toplevel = 0;
- if (in_class_frame) {
- goto valid_return;
- }
- else {
- const VALUE *tep = current_ep;
- while (target_lep != tep) {
- if (escape_cfp->ep == tep) {
- if (tep == target_ep) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- tep = VM_ENV_PREV_EP(tep);
- }
- }
- }
- else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
- switch (((escape_cfp->iseq)->body)->type) {
- case ISEQ_TYPE_TOP:
- case ISEQ_TYPE_MAIN:
- if (toplevel) {
- if (in_class_frame) goto unexpected_return;
- if (target_ep == ((void*)0)) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- break;
- case ISEQ_TYPE_EVAL:
- case ISEQ_TYPE_CLASS:
- toplevel = 0;
- break;
- default:
- break;
- }
- }
- }
- if (escape_cfp->ep == target_lep && ((escape_cfp->iseq)->body)->type == ISEQ_TYPE_METHOD) {
- if (target_ep == ((void*)0)) {
- goto valid_return;
- }
- else {
- goto unexpected_return;
- }
- }
- escape_cfp = ((escape_cfp)+1);
- }
- unexpected_return:;
- rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
- valid_return:;
- }
- else {
- rb_bug("isns(throw): unsupported throw type");
- }
- ec->tag->state = state;
- return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
-}
-static VALUE
-vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- rb_num_t throw_state, VALUE throwobj)
-{
- const int state = (int)(throw_state & VM_THROW_STATE_MASK);
- const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
- if (state != 0) {
- return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
- }
- else {
- return vm_throw_continue(ec, throwobj);
- }
-}
-static inline void
-vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
-{
- int is_splat = flag & 0x01;
- rb_num_t space_size = num + is_splat;
- VALUE *base = sp - 1;
- const VALUE *ptr;
- rb_num_t len;
- const VALUE obj = ary;
- if (!(__builtin_constant_p(RUBY_T_ARRAY) ? rbimpl_RB_TYPE_P_fastpath((ary), (RUBY_T_ARRAY)) : (RB_TYPE_P)((ary), (RUBY_T_ARRAY))) && RB_NIL_P(ary = rb_check_array_type(ary))) {
- ary = obj;
- ptr = &ary;
- len = 1;
- }
- else {
- ptr = rb_array_const_ptr_transient(ary);
- len = (rb_num_t)rb_array_len(ary);
- }
- if (space_size == 0) {
- }
- else if (flag & 0x02) {
- rb_num_t i = 0, j;
- if (len < num) {
- for (i=0; i len) {
- *bptr = rb_ary_new();
- }
- else {
- *bptr = rb_ary_new_from_values(len - num, ptr + num);
- }
- }
- }
- (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
-}
-static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE vm_mtbl_dump(VALUE klass, ID target_mid);
-static struct rb_class_cc_entries *
-vm_ccs_create(VALUE klass, const rb_callable_method_entry_t *cme)
-{
- struct rb_class_cc_entries *ccs = ((struct rb_class_cc_entries *)ruby_xmalloc(sizeof(struct rb_class_cc_entries)));
- ccs->capa = 0;
- ccs->len = 0;
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->cme)) unaligned_member_access_result = ((VALUE *)(&ccs->cme));
- ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 1898);
- (((rb_callable_method_entry_t *)cme)->flags |= ((VALUE)RUBY_FL_USER8));
- ccs->entries = ((void*)0);
- return ccs;
-}
-static void
-vm_ccs_push(VALUE klass, struct rb_class_cc_entries *ccs, const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- if (! vm_cc_markable(cc)) {
- return;
- }
- else if (! vm_ci_markable(ci)) {
- return;
- }
- if ((__builtin_expect(!!(ccs->len == ccs->capa), 0))) {
- if (ccs->capa == 0) {
- ccs->capa = 1;
- ccs->entries = ((struct rb_class_cc_entries_entry *)ruby_xmalloc2((ccs->capa), sizeof(struct rb_class_cc_entries_entry)));
- }
- else {
- ccs->capa *= 2;
- ((ccs->entries) = ((struct rb_class_cc_entries_entry *)ruby_xrealloc2((void *)(ccs->entries), (ccs->capa), sizeof(struct rb_class_cc_entries_entry))));
- }
- }
- ((void)0);
- const int pos = ccs->len++;
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->entries[pos].ci)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].ci));
- ; unaligned_member_access_result; }), (VALUE)(ci), "./vm_insnhelper.c", 1927);
- rb_obj_write((VALUE)(klass), __extension__({
- ;
- ; __typeof__((VALUE *)(&ccs->entries[pos].cc)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 1928);
- if (0) {
- }
-}
-static const struct rb_callcache *
-vm_search_method_slowpath0(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
-{
- const struct rb_callcache *cc = rb_vm_search_method_slowpath(cd->ci, klass);
- cd->cc = cc;
- const struct rb_callcache *empty_cc =
- rb_vm_empty_cc();
- if (cd_owner && cc != empty_cc) (rb_obj_written((VALUE)(cd_owner), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cc), "./vm_insnhelper.c", 2110));
- ((void)0);
- return cc;
-}
-static const struct rb_callcache *
-vm_search_method_fastpath(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
-{
- const struct rb_callcache *cc = cd->cc;
- if ((__builtin_expect(!!(vm_cc_class_check(cc, klass)), 1))) {
- if ((__builtin_expect(!!(!((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))), 1))) {
- ((void)0);
- ((void)0);
- ((void)0);
- return cc;
- }
- ((void)0);
- }
- else {
- ((void)0);
- }
- return vm_search_method_slowpath0(cd_owner, cd, klass);
-}
-static const struct rb_callcache *
-vm_search_method(VALUE cd_owner, struct rb_call_data *cd, VALUE recv)
-{
- VALUE klass = rb_class_of(recv);
- ((void)0);
- ((void)0);
- return vm_search_method_fastpath(cd_owner, cd, klass);
-}
-typedef union {
- VALUE (*anyargs)();
- VALUE (*f00)(VALUE);
- VALUE (*f01)(VALUE, VALUE);
- VALUE (*f02)(VALUE, VALUE, VALUE);
- VALUE (*f03)(VALUE, VALUE, VALUE, VALUE);
- VALUE (*f04)(VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f05)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f06)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f07)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f08)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f09)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f10)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f11)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f12)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f13)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f14)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*f15)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
- VALUE (*fm1)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE);
-} __attribute__((__transparent_union__)) cfunc_type;
-static inline int
-check_cfunc(const rb_callable_method_entry_t *me, cfunc_type func)
-{
- if (! me) {
- return 0;
- }
- else {
- ((void)0);
- ((void)0);
- ((void)0);
- if (me->def->type != VM_METHOD_TYPE_CFUNC) {
- return 0;
- }
- else {
- return me->def->body.cfunc.func == func.anyargs;
- }
- }
-}
-static inline int
-vm_method_cfunc_is(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv, cfunc_type func)
-{
- ((void)0);
- const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
- return check_cfunc(vm_cc_cme(cc), func);
-}
-static inline _Bool
-FIXNUM_2_P(VALUE a, VALUE b)
-{
- long x = a;
- long y = b;
- long z = x & y & 1;
- return z == 1;
-}
-static inline _Bool
-FLONUM_2_P(VALUE a, VALUE b)
-{
- long x = a;
- long y = b;
- long z = ((x ^ 2) | (y ^ 2)) & 3;
- return !z;
-}
-static VALUE
-opt_equality_specialized(VALUE recv, VALUE obj)
-{
- if (FIXNUM_2_P(recv, obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (FLONUM_2_P(recv, obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (RB_STATIC_SYM_P(recv) && RB_STATIC_SYM_P(obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1)))) {
- goto compare_by_identity;
- }
- else if (RB_SPECIAL_CONST_P(recv)) {
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat && RB_FLOAT_TYPE_P(obj) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
- double a = rb_float_value_inline(recv);
- double b = rb_float_value_inline(obj);
- return ((a == b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RBASIC_CLASS(recv) == rb_cString && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
- if (recv == obj) {
- return ((VALUE)RUBY_Qtrue);
- }
- else if ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_STRING)) : (RB_TYPE_P)((obj), (RUBY_T_STRING)))) {
- return rb_str_eql_internal(obj, recv);
- }
- }
- return ((VALUE)RUBY_Qundef);
- compare_by_identity:
- return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static VALUE
-opt_equality(const rb_iseq_t *cd_owner, VALUE recv, VALUE obj, CALL_DATA cd)
-{
- ((void)0);
- VALUE val = opt_equality_specialized(recv, obj);
- if (!RB_UNDEF_P(val)) return val;
- if (!vm_method_cfunc_is(cd_owner, cd, recv, rb_obj_equal)) {
- return ((VALUE)RUBY_Qundef);
- }
- else {
- return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
-}
-extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
-extern VALUE rb_vm_call_with_refinements(rb_execution_context_t *, VALUE, ID, int, const VALUE *, int);
-static VALUE
-check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
-{
- switch (type) {
- case VM_CHECKMATCH_TYPE_WHEN:
- return pattern;
- case VM_CHECKMATCH_TYPE_RESCUE:
- if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
- rb_raise(rb_eTypeError, "class or module required for rescue clause");
- }
- case VM_CHECKMATCH_TYPE_CASE: {
- return rb_vm_call_with_refinements(ec, pattern, idEqq, 1, &target, 0);
- }
- default:
- rb_bug("check_match: unreachable");
- }
-}
-static inline VALUE
-double_cmp_lt(double a, double b)
-{
- ;
- return ((a < b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_le(double a, double b)
-{
- ;
- return ((a <= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_gt(double a, double b)
-{
- ;
- return ((a > b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE
-double_cmp_ge(double a, double b)
-{
- ;
- return ((a >= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
-}
-static inline VALUE *
-vm_base_ptr(const rb_control_frame_t *cfp)
-{
- return cfp->__bp__;
-}
-__declspec(noreturn) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
-__declspec(noreturn) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc);
-__declspec(noreturn) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
-VALUE rb_keyword_error_new(const char *error, VALUE keys);
-static VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv,
- enum method_missing_reason call_status, int kw_splat);
-__attribute__ ((__visibility__("default"))) extern
-const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
-struct args_info {
- VALUE *argv;
- int argc;
- int rest_index;
- int rest_dupped;
- const struct rb_callinfo_kwarg *kw_arg;
- VALUE *kw_argv;
- VALUE rest;
-};
-enum arg_setup_type {
- arg_setup_method,
- arg_setup_block
-};
-static inline void
-arg_rest_dup(struct args_info *args)
-{
- if (!args->rest_dupped) {
- args->rest = rb_ary_dup(args->rest);
- args->rest_dupped = 1;
- }
-}
-static inline int
-args_argc(struct args_info *args)
-{
- if (args->rest == ((VALUE)RUBY_Qfalse)) {
- return args->argc;
- }
- else {
- return args->argc + RARRAY_LENINT(args->rest) - args->rest_index;
- }
-}
-static inline void
-args_extend(struct args_info *args, const int min_argc)
-{
- int i;
- if (args->rest) {
- arg_rest_dup(args);
- ((void)0);
- for (i=args->argc + RARRAY_LENINT(args->rest); irest, ((VALUE)RUBY_Qnil));
- }
- }
- else {
- for (i=args->argc; iargv[args->argc++] = ((VALUE)RUBY_Qnil);
- }
- }
-}
-static inline void
-args_reduce(struct args_info *args, int over_argc)
-{
- if (args->rest) {
- const long len = rb_array_len(args->rest);
- if (len > over_argc) {
- arg_rest_dup(args);
- rb_ary_resize(args->rest, len - over_argc);
- return;
- }
- else {
- args->rest = ((VALUE)RUBY_Qfalse);
- over_argc -= len;
- }
- }
- ((void)0);
- args->argc -= over_argc;
-}
-static inline int
-args_check_block_arg0(struct args_info *args)
-{
- VALUE ary = ((VALUE)RUBY_Qnil);
- if (args->rest && rb_array_len(args->rest) == 1) {
- VALUE arg0 = RARRAY_AREF(args->rest, 0);
- ary = rb_check_array_type(arg0);
- }
- else if (args->argc == 1) {
- VALUE arg0 = args->argv[0];
- ary = rb_check_array_type(arg0);
- args->argv[0] = arg0;
- }
- if (!RB_NIL_P(ary)) {
- args->rest = ary;
- args->rest_index = 0;
- args->argc = 0;
- return 1;
- }
- return 0;
-}
-static inline void
-args_copy(struct args_info *args)
-{
- if (args->rest != ((VALUE)RUBY_Qfalse)) {
- int argc = args->argc;
- args->argc = 0;
- arg_rest_dup(args);
- while (args->rest_index > 0 && argc > 0) {
- RARRAY_ASET(args->rest, --args->rest_index, args->argv[--argc]);
- }
- while (argc > 0) {
- rb_ary_unshift(args->rest, args->argv[--argc]);
- }
- }
- else if (args->argc > 0) {
- args->rest = rb_ary_new_from_values(args->argc, args->argv);
- args->rest_index = 0;
- args->rest_dupped = 1;
- args->argc = 0;
- }
-}
-static inline const VALUE *
-args_rest_argv(struct args_info *args)
-{
- return rb_array_const_ptr_transient(args->rest) + args->rest_index;
-}
-static inline VALUE
-args_rest_array(struct args_info *args)
-{
- VALUE ary;
- if (args->rest) {
- ary = rb_ary_behead(args->rest, args->rest_index);
- args->rest_index = 0;
- args->rest = 0;
- }
- else {
- ary = rb_ary_new();
- }
- return ary;
-}
-static int
-args_kw_argv_to_hash(struct args_info *args)
-{
- const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
- const VALUE *const passed_keywords = kw_arg->keywords;
- const int kw_len = kw_arg->keyword_len;
- VALUE h = rb_hash_new_with_size(kw_len);
- const int kw_start = args->argc - kw_len;
- const VALUE * const kw_argv = args->argv + kw_start;
- int i;
- args->argc = kw_start + 1;
- for (i=0; iargv[args->argc - 1] = h;
- return args->argc;
-}
-static inline void
-args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
-{
- if (args->argc >= argc) {
- args->argc -= argc;
- args->argv += argc;
- }
- else {
- int i, j;
- const VALUE *argv = args_rest_argv(args);
- for (i=args->argc, j=0; irest_index += argc - args->argc;
- args->argc = 0;
- }
-}
-static inline void
-args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
-{
- long len;
- len = rb_array_len(args->rest);
- ruby_nonempty_memcpy((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- rb_ary_resize(args->rest, len - argc);
-}
-static inline int
-args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
-{
- int i;
- if (args->argc >= opt_max) {
- args->argc -= opt_max;
- args->argv += opt_max;
- i = opt_max;
- }
- else {
- int j;
- i = args->argc;
- args->argc = 0;
- if (args->rest) {
- int len = RARRAY_LENINT(args->rest);
- const VALUE *argv = rb_array_const_ptr_transient(args->rest);
- for (; irest_index < len; i++, args->rest_index++) {
- locals[i] = argv[args->rest_index];
- }
- }
- for (j=i; jbody)->param.keyword->table;
- const int req_key_num = ((iseq)->body)->param.keyword->required_num;
- const int key_num = ((iseq)->body)->param.keyword->num;
- const VALUE * const default_values = ((iseq)->body)->param.keyword->default_values;
- VALUE missing = 0;
- int i, di, found = 0;
- int unspecified_bits = 0;
- VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
- for (i=0; ibody)->param.flags.has_kwrest) {
- const int rest_hash_index = key_num + 1;
- locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
- }
- else {
- if (found != passed_keyword_len) {
- VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
- argument_kw_error(ec, iseq, "unknown", keys);
- }
- }
- if (RB_NIL_P(unspecified_bits_value)) {
- unspecified_bits_value = __builtin_choose_expr( __builtin_constant_p(unspecified_bits), ((VALUE)(unspecified_bits)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(unspecified_bits));
- }
- locals[key_num] = unspecified_bits_value;
-}
-static inline void
-args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals, int kw_flag)
-{
- if (RB_NIL_P(keyword_hash)) {
- keyword_hash = rb_hash_new();
- }
- else if (!(kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
- keyword_hash = rb_hash_dup(keyword_hash);
- }
- locals[0] = keyword_hash;
-}
-static inline void
-args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
-{
- VALUE block_handler = calling->block_handler;
- *locals = rb_vm_bh_to_procval(ec, block_handler);
-}
-struct fill_values_arg {
- VALUE *keys;
- VALUE *vals;
- int argc;
-};
-static int
-fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
-{
- struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
- int i = arg->argc++;
- arg->keys[i] = (VALUE)key;
- arg->vals[i] = (VALUE)val;
- return ST_CONTINUE;
-}
-static inline int
-ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq, unsigned int * kw_flag, VALUE * converted_keyword_hash)
-{
- if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) {
- keyword_hash = rb_to_hash_type(keyword_hash);
- }
- if (!(*kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit)) &&
- (((iseq)->body)->param.flags.has_kwrest ||
- ((iseq)->body)->param.flags.ruby2_keywords)) {
- *kw_flag |= (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- keyword_hash = rb_hash_dup(keyword_hash);
- }
- *converted_keyword_hash = keyword_hash;
- return !(((iseq)->body)->param.flags.has_kw) &&
- !(((iseq)->body)->param.flags.has_kwrest) &&
- RHASH_EMPTY_P(keyword_hash);
-}
-COLDFUNC static int
-setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
- struct rb_calling_info *const calling,
- const struct rb_callinfo *ci,
- VALUE * const locals, const enum arg_setup_type arg_setup_type) {
- const int min_argc = ((iseq)->body)->param.lead_num + ((iseq)->body)->param.post_num;
- const int max_argc = (((iseq)->body)->param.flags.has_rest == 0) ? min_argc + ((iseq)->body)->param.opt_num : (-1);
- int given_argc;
- unsigned int kw_flag = vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- int opt_pc = 0, allow_autosplat = !kw_flag;
- struct args_info args_body, *args;
- VALUE keyword_hash = ((VALUE)RUBY_Qnil);
- VALUE * const orig_sp = ec->cfp->sp;
- unsigned int i;
- VALUE flag_keyword_hash = 0;
- VALUE splat_flagged_keyword_hash = 0;
- VALUE converted_keyword_hash = 0;
- VALUE rest_last = 0;
- ;
- for (i=calling->argc; i<((iseq)->body)->param.size; i++) {
- locals[i] = ((VALUE)RUBY_Qnil);
- }
- ec->cfp->sp = &locals[i];
- args = &args_body;
- given_argc = args->argc = calling->argc;
- args->argv = locals;
- args->rest_dupped = 0;
- if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
- args->kw_arg = vm_ci_kwarg(ci);
- if (((iseq)->body)->param.flags.has_kw) {
- int kw_len = args->kw_arg->keyword_len;
- args->kw_argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len))));
- args->argc -= kw_len;
- given_argc -= kw_len;
- ruby_nonempty_memcpy((args->kw_argv), (locals + args->argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len)));
- }
- else {
- args->kw_argv = ((void*)0);
- given_argc = args_kw_argv_to_hash(args);
- kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- }
- }
- else {
- args->kw_arg = ((void*)0);
- args->kw_argv = ((void*)0);
- }
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
- int len;
- args->rest = locals[--args->argc];
- args->rest_index = 0;
- len = RARRAY_LENINT(args->rest);
- given_argc += len - 1;
- rest_last = RARRAY_AREF(args->rest, len - 1);
- if (!kw_flag && len > 0) {
- if ((__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((rest_last), (RUBY_T_HASH)) : (RB_TYPE_P)((rest_last), (RUBY_T_HASH))) &&
- (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
- splat_flagged_keyword_hash = rest_last;
- rest_last = rb_hash_dup(rest_last);
- kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
- }
- else {
- rest_last = 0;
- }
- }
- if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
- if (ignore_keyword_hash_p(rest_last, iseq, &kw_flag, &converted_keyword_hash)) {
- arg_rest_dup(args);
- rb_ary_pop(args->rest);
- given_argc--;
- kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- }
- else {
- if (rest_last != converted_keyword_hash) {
- rest_last = converted_keyword_hash;
- arg_rest_dup(args);
- RARRAY_ASET(args->rest, len - 1, rest_last);
- }
- if (((iseq)->body)->param.flags.ruby2_keywords && rest_last) {
- flag_keyword_hash = rest_last;
- }
- else if (((iseq)->body)->param.flags.has_kw || ((iseq)->body)->param.flags.has_kwrest) {
- arg_rest_dup(args);
- rb_ary_pop(args->rest);
- given_argc--;
- keyword_hash = rest_last;
- }
- }
- }
- }
- else {
- if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
- VALUE last_arg = args->argv[args->argc-1];
- if (ignore_keyword_hash_p(last_arg, iseq, &kw_flag, &converted_keyword_hash)) {
- args->argc--;
- given_argc--;
- kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
- }
- else {
- if (last_arg != converted_keyword_hash) {
- last_arg = converted_keyword_hash;
- args->argv[args->argc-1] = last_arg;
- }
- if (((iseq)->body)->param.flags.ruby2_keywords) {
- flag_keyword_hash = last_arg;
- }
- else if (((iseq)->body)->param.flags.has_kw || ((iseq)->body)->param.flags.has_kwrest) {
- args->argc--;
- given_argc--;
- keyword_hash = last_arg;
- }
- }
- }
- args->rest = ((VALUE)RUBY_Qfalse);
- }
- if (flag_keyword_hash && (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((flag_keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((flag_keyword_hash), (RUBY_T_HASH)))) {
- ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
- }
- if (kw_flag && ((iseq)->body)->param.flags.accepts_no_kwarg) {
- rb_raise(rb_eArgError, "no keywords accepted");
- }
- switch (arg_setup_type) {
- case arg_setup_method:
- break;
- case arg_setup_block:
- if (given_argc == (RB_NIL_P(keyword_hash) ? 1 : 2) &&
- allow_autosplat &&
- (min_argc > 0 || ((iseq)->body)->param.opt_num > 1) &&
- !((iseq)->body)->param.flags.ambiguous_param0 &&
- !((((iseq)->body)->param.flags.has_kw ||
- ((iseq)->body)->param.flags.has_kwrest)
- && max_argc == 1) &&
- args_check_block_arg0(args)) {
- given_argc = RARRAY_LENINT(args->rest);
- }
- break;
- }
- if (given_argc < min_argc) {
- if (arg_setup_type == arg_setup_block) {
- do { __extension__ _Static_assert(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((ec->cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((ec->cfp)->sp)[((min_argc))]; if ((__builtin_expect(!!(((ec->cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- given_argc = min_argc;
- args_extend(args, min_argc);
- }
- else {
- argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
- }
- }
- if (given_argc > max_argc && max_argc != (-1)) {
- if (arg_setup_type == arg_setup_block) {
- args_reduce(args, given_argc - max_argc);
- given_argc = max_argc;
- }
- else {
- argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
- }
- }
- if (((iseq)->body)->param.flags.has_lead) {
- args_setup_lead_parameters(args, ((iseq)->body)->param.lead_num, locals + 0);
- }
- if (((iseq)->body)->param.flags.has_rest || ((iseq)->body)->param.flags.has_post){
- args_copy(args);
- }
- if (((iseq)->body)->param.flags.has_post) {
- args_setup_post_parameters(args, ((iseq)->body)->param.post_num, locals + ((iseq)->body)->param.post_start);
- }
- if (((iseq)->body)->param.flags.has_opt) {
- int opt = args_setup_opt_parameters(args, ((iseq)->body)->param.opt_num, locals + ((iseq)->body)->param.lead_num);
- opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- }
- if (((iseq)->body)->param.flags.has_rest) {
- args_setup_rest_parameter(args, locals + ((iseq)->body)->param.rest_start);
- VALUE ary = *(locals + ((iseq)->body)->param.rest_start);
- VALUE index = rb_array_len(ary) - 1;
- if (splat_flagged_keyword_hash &&
- !((iseq)->body)->param.flags.ruby2_keywords &&
- !((iseq)->body)->param.flags.has_kw &&
- !((iseq)->body)->param.flags.has_kwrest &&
- RARRAY_AREF(ary, index) == splat_flagged_keyword_hash) {
- ((struct RHash *)rest_last)->basic.flags &= ~RHASH_PASS_AS_KEYWORDS;
- RARRAY_ASET(ary, index, rest_last);
- }
- }
- if (((iseq)->body)->param.flags.has_kw) {
- VALUE * const klocals = locals + ((iseq)->body)->param.keyword->bits_start - ((iseq)->body)->param.keyword->num;
- if (args->kw_argv != ((void*)0)) {
- const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
- args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
- }
- else if (!RB_NIL_P(keyword_hash)) {
- int kw_len = rb_long2int_inline(RHASH_SIZE(keyword_hash));
- struct fill_values_arg arg;
- arg.keys = args->kw_argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len * 2))));
- arg.vals = arg.keys + kw_len;
- arg.argc = 0;
- rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
- ((void)0);
- args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
- }
- else {
- ((void)0);
- args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals);
- }
- }
- else if (((iseq)->body)->param.flags.has_kwrest) {
- args_setup_kw_rest_parameter(keyword_hash, locals + ((iseq)->body)->param.keyword->rest_start, kw_flag);
- }
- else if (!RB_NIL_P(keyword_hash) && RHASH_SIZE(keyword_hash) > 0 && arg_setup_type == arg_setup_method) {
- argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
- }
- if (((iseq)->body)->param.flags.has_block) {
- if (((iseq)->body)->local_iseq == iseq) {
- }
- else {
- args_setup_block_parameter(ec, calling, locals + ((iseq)->body)->param.block_start);
- }
- }
- ec->cfp->sp = orig_sp;
- return opt_pc;
-}
-static void
-raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
-{
- VALUE at;
- if (iseq) {
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
- 0 , ((VALUE)RUBY_Qfalse) ,
- ((iseq)->body)->iseq_encoded,
- ec->cfp->sp, 0, 0 );
- at = rb_ec_backtrace_object(ec);
- rb_backtrace_use_iseq_first_lineno_for_last_location(at);
- rb_vm_pop_frame(ec);
- }
- else {
- at = rb_ec_backtrace_object(ec);
- }
- rb_ivar_set(exc, idBt_locations, at);
- rb_exc_set_backtrace(exc, at);
- rb_exc_raise(exc);
-}
-static void
-argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
-{
- VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
- if (((iseq)->body)->param.flags.has_kw) {
- const struct rb_iseq_param_keyword *const kw = ((iseq)->body)->param.keyword;
- const ID *keywords = kw->table;
- int req_key_num = kw->required_num;
- if (req_key_num > 0) {
- static const char required[] = "; required keywords";
- VALUE mesg = rb_attr_get(exc, idMesg);
- rb_str_resize(mesg, RSTRING_LEN(mesg)-1);
- rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
- ((__builtin_constant_p(":") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (":")));
- do {
- ((__builtin_constant_p(" ") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (" ")));
- rb_str_append(mesg, rb_id2str(*keywords++));
- ((__builtin_constant_p(",") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (",")));
- } while (--req_key_num);
- RSTRING_PTR(mesg)[RSTRING_LEN(mesg)-1] = ')';
- }
- }
- raise_argument_error(ec, iseq, exc);
-}
-static void
-argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
-{
- raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
-}
-static inline void
-vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- int argc = calling->argc;
- VALUE *argv = cfp->sp - argc;
- VALUE ary = argv[argc-1];
- ;
- cfp->sp--;
- if (!RB_NIL_P(ary)) {
- const VALUE *ptr = rb_array_const_ptr_transient(ary);
- long len = rb_array_len(ary), i;
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((len))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i = 0; i < len; i++) {
- *cfp->sp++ = ptr[i];
- }
- calling->argc += i - 1;
- }
-}
-static inline void
-vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci)
-{
- const VALUE *const passed_keywords = vm_ci_kwarg(ci)->keywords;
- const int kw_len = vm_ci_kwarg(ci)->keyword_len;
- const VALUE h = rb_hash_new_with_size(kw_len);
- VALUE *sp = cfp->sp;
- int i;
- for (i=0; isp -= kw_len - 1;
- calling->argc -= kw_len - 1;
- calling->kw_splat = 1;
-}
-static VALUE
-vm_to_proc(VALUE proc)
-{
- if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
- VALUE b;
- const rb_callable_method_entry_t *me =
- rb_callable_method_entry_with_refinements(rb_class_of(proc), idTo_proc, ((void*)0));
- if (me) {
- b = rb_vm_call0(rb_current_execution_context(1), proc, idTo_proc, 0, ((void*)0), me, 0);
- }
- else {
- b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc);
- }
- if (RB_NIL_P(b) || !rb_obj_is_proc(b)) {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (expected Proc)",
- rb_obj_classname(proc));
- }
- return b;
- }
- else {
- return proc;
- }
-}
-static VALUE
-refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
-{
- VALUE obj;
- ID mid;
- const rb_callable_method_entry_t *me = 0;
- rb_execution_context_t *ec;
- const VALUE symbol = RARRAY_AREF(callback_arg, 0);
- const VALUE refinements = RARRAY_AREF(callback_arg, 1);
- int kw_splat = rb_keyword_given_p();
- VALUE klass;
- if (argc-- < 1) {
- rb_raise(rb_eArgError, "no receiver given");
- }
- obj = *argv++;
- mid = rb_sym2id(symbol);
- for (klass = rb_class_of(obj); klass; klass = RCLASS_SUPER(klass)) {
- me = rb_callable_method_entry(klass, mid);
- if (me) {
- me = rb_resolve_refined_method_callable(refinements, me);
- if (me) break;
- }
- }
- ec = rb_current_execution_context(1);
- if (!RB_NIL_P(blockarg)) {
- vm_passed_block_handler_set(ec, blockarg);
- }
- if (!me) {
- return method_missing(ec, obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
- }
- return rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
-}
-static VALUE
-vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- const struct rb_callinfo *ci, const rb_iseq_t *blockiseq, const int is_super)
-{
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
- VALUE block_code = *(--reg_cfp->sp);
- if (RB_NIL_P(block_code)) {
- return 0;
- }
- else if (block_code == rb_block_param_proxy) {
- ((void)0);
- VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
- reg_cfp->block_code = (const void *) handler;
- return handler;
- }
- else if (RB_SYMBOL_P(block_code) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) {
- const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
- if (cref && !RB_NIL_P(cref->refinements)) {
- VALUE ref = cref->refinements;
- VALUE func = rb_hash_lookup(ref, block_code);
- if (RB_NIL_P(func)) {
- VALUE callback_arg = rb_ary_hidden_new(2);
- rb_ary_push(callback_arg, block_code);
- rb_ary_push(callback_arg, ref);
- RB_OBJ_FREEZE_RAW(callback_arg);
- func = rb_func_lambda_new(refine_sym_proc_call, callback_arg, 1, (-1));
- rb_hash_aset(ref, block_code, func);
- }
- block_code = func;
- }
- return block_code;
- }
- else {
- return vm_to_proc(block_code);
- }
- }
- else if (blockiseq != ((void*)0)) {
- struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
- captured->code.iseq = blockiseq;
- return VM_BH_FROM_ISEQ_BLOCK(captured);
- }
- else {
- if (is_super) {
- return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
- }
- else {
- return 0;
- }
- }
-}
-
-static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc, int param_size, int local_size);
-__attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size);
-static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc);
-static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
-static vm_call_handler vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size);
-static VALUE
-vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static _Bool
-rb_simple_iseq_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 0 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 0 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.accepts_no_kwarg == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}static inline
-__attribute__ ((__visibility__("default"))) _Bool
-rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 1 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 0 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.accepts_no_kwarg == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}static inline
-__attribute__ ((__visibility__("default"))) _Bool
-rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
-{
- return ((iseq)->body)->param.flags.has_opt == 0 &&
- ((iseq)->body)->param.flags.has_rest == 0 &&
- ((iseq)->body)->param.flags.has_post == 0 &&
- ((iseq)->body)->param.flags.has_kw == 1 &&
- ((iseq)->body)->param.flags.has_kwrest == 0 &&
- ((iseq)->body)->param.flags.has_block == 0;
-}
-static _Bool
-rb_splat_or_kwargs_p(const struct rb_callinfo *__restrict__ ci)
-{
- return (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)));
-}
-static inline void
-CALLER_SETUP_ARG(struct rb_control_frame_struct *__restrict__ cfp,
- struct rb_calling_info *__restrict__ calling,
- const struct rb_callinfo *__restrict__ ci)
-{
- if ((__builtin_expect(!!((vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
- VALUE final_hash;
- vm_caller_setup_arg_splat(cfp, calling);
- if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
- calling->argc > 0 &&
- (__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH)) : (RB_TYPE_P)(((final_hash = *(cfp->sp - 1))), (RUBY_T_HASH))) &&
- (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
- *(cfp->sp - 1) = rb_hash_dup(final_hash);
- calling->kw_splat = 1;
- }
- }
- if ((__builtin_expect(!!((vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)))), 0))) {
- if ((vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit))) {
- vm_caller_setup_arg_kw(cfp, calling, ci);
- }
- else {
- VALUE keyword_hash = cfp->sp[-1];
- if (!(__builtin_constant_p(RUBY_T_HASH) ? rbimpl_RB_TYPE_P_fastpath((keyword_hash), (RUBY_T_HASH)) : (RB_TYPE_P)((keyword_hash), (RUBY_T_HASH)))) {
- cfp->sp[-1] = rb_hash_dup(rb_to_hash_type(keyword_hash));
- }
- else if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
- cfp->sp[-1] = rb_hash_dup(keyword_hash);
- }
- }
- }
-}
-static inline void
-CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *__restrict__ cfp,
- struct rb_calling_info *__restrict__ calling,
- const struct rb_callinfo *__restrict__ ci)
-{
- if ((__builtin_expect(!!(calling->kw_splat), 0))) {
- if (RHASH_EMPTY_P(cfp->sp[-1])) {
- cfp->sp--;
- calling->argc--;
- calling->kw_splat = 0;
- }
- }
-}
-static VALUE
-vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt = calling->argc - lead_num;
- const int opt_num = ((iseq)->body)->param.opt_num;
- const int opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- const int param = ((iseq)->body)->param.size;
- const int local = ((iseq)->body)->local_table_size;
- const int delta = opt_num - opt;
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param - delta, local);
-}
-static VALUE
-vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt = calling->argc - lead_num;
- const int opt_pc = (int)((iseq)->body)->param.opt_table[opt];
- ((void)0);
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
-}
-static void
-args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
- VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
- VALUE *const locals);
-static VALUE
-vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- ((void)0);
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
- const int ci_kw_len = kw_arg->keyword_len;
- const VALUE * const ci_keywords = kw_arg->keywords;
- VALUE *argv = cfp->sp - calling->argc;
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- const int lead_num = ((iseq)->body)->param.lead_num;
- VALUE * const ci_kws = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
- ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
- args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static VALUE
-vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *__attribute__ ((__unused__)) ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- ((void)0);
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- VALUE * const argv = cfp->sp - calling->argc;
- VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
- int i;
- for (i=0; inum; i++) {
- klocals[i] = kw_param->default_values[i];
- }
- klocals[i] = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- int param = ((iseq)->body)->param.size;
- int local = ((iseq)->body)->local_table_size;
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
-}
-static inline int
-vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
- const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- _Bool cacheable_ci = vm_ci_markable(ci);
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
- if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
- rb_control_frame_t *cfp = ec->cfp;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- if (calling->argc != ((iseq)->body)->param.lead_num) {
- argument_arity_error(ec, iseq, calling->argc, ((iseq)->body)->param.lead_num, ((iseq)->body)->param.lead_num);
- }
- ((void)0);
- ((void)0);
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), cacheable_ci && vm_call_iseq_optimizable_p(ci, cc));
- return 0;
- }
- else if (rb_iseq_only_optparam_p(iseq)) {
- rb_control_frame_t *cfp = ec->cfp;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int opt_num = ((iseq)->body)->param.opt_num;
- const int argc = calling->argc;
- const int opt = argc - lead_num;
- if (opt < 0 || opt > opt_num) {
- argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num);
- }
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
- !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- else {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
- !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- ((void)0);
- for (int i=argc; ibody)->param.opt_table[opt];
- }
- else if (rb_iseq_only_kwparam_p(iseq) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
- const int lead_num = ((iseq)->body)->param.lead_num;
- const int argc = calling->argc;
- const struct rb_iseq_param_keyword *kw_param = ((iseq)->body)->param.keyword;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) {
- const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
- if (argc - kw_arg->keyword_len == lead_num) {
- const int ci_kw_len = kw_arg->keyword_len;
- const VALUE * const ci_keywords = kw_arg->keywords;
- VALUE * const ci_kws = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
- ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
- cacheable_ci && vm_call_cacheable(ci, cc));
- return 0;
- }
- }
- else if (argc == lead_num) {
- VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
- args_setup_kw_parameters(ec, iseq, ((void*)0), 0, ((void*)0), klocals);
- if (klocals[kw_param->num] == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0))) {
- CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
- cacheable_ci && vm_call_cacheable(ci, cc));
- }
- return 0;
- }
- }
- }
- return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
- ((void)0);
- const struct rb_callcache *cc = calling->cc;
- const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
- const int param_size = ((iseq)->body)->param.size;
- const int local_size = ((iseq)->body)->local_table_size;
- const int opt_pc = vm_callee_setup_arg(ec, calling, def_iseq_ptr(vm_cc_cme(cc)->def), cfp->sp - calling->argc, param_size, local_size);
- return vm_call_iseq_setup_2(ec, cfp, calling, opt_pc, param_size, local_size);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
- int opt_pc, int param_size, int local_size) {
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param_size, local_size);
- }
- else {
- return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
- }
-}
-static inline VALUE
-vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me,
- int opt_pc, int param_size, int local_size)
-{
- const rb_iseq_t *iseq = def_iseq_ptr(me->def);
- VALUE *argv = cfp->sp - calling->argc;
- VALUE *sp = argv + param_size;
- cfp->sp = argv - 1 ;
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
- calling->block_handler, (VALUE)me,
- ((iseq)->body)->iseq_encoded + opt_pc, sp,
- local_size - param_size,
- ((iseq)->body)->stack_max);
- return ((VALUE)RUBY_Qundef);
-}
-COLDFUNC static VALUE
-vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc) {
- const struct rb_callcache *cc = calling->cc;
- unsigned int i;
- VALUE *argv = cfp->sp - calling->argc;
- const rb_callable_method_entry_t *me = vm_cc_cme(cc);
- const rb_iseq_t *iseq = def_iseq_ptr(me->def);
- VALUE *src_argv = argv;
- VALUE *sp_orig, *sp;
- VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
- if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
- struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
- const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
- dst_captured->code.val = src_captured->code.val;
- if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
- calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
- }
- else {
- calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
- }
- }
- vm_pop_frame(ec, cfp, cfp->ep);
- cfp = ec->cfp;
- sp_orig = sp = cfp->sp;
- sp[0] = calling->recv;
- sp++;
- for (i=0; i < ((iseq)->body)->param.size; i++) {
- *sp++ = src_argv[i];
- }
- vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
- calling->recv, calling->block_handler, (VALUE)me,
- ((iseq)->body)->iseq_encoded + opt_pc, sp,
- ((iseq)->body)->local_table_size - ((iseq)->body)->param.size,
- ((iseq)->body)->stack_max);
- cfp->sp = sp_orig;
- return ((VALUE)RUBY_Qundef);
-}
-static void
-ractor_unsafe_check(void)
-{
- if (!rb_ractor_main_p()) {
- rb_raise(rb_eRactorUnsafeError, "ractor unsafe method called from not main ractor");
- }
-}
-static VALUE
-call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, rb_ary_new_from_values(argc, argv));
-}
-static VALUE
-call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(int, const VALUE *, VALUE) = (VALUE(*)(int, const VALUE *, VALUE))func;
- return (*f)(argc, argv, recv);
-}
-static VALUE
-call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
- return (*f)(recv);
-}
-static VALUE
-call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, argv[0]);
-}
-static VALUE
-call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1]);
-}
-static VALUE
-call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2]);
-}
-static VALUE
-call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- ractor_unsafe_check();
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-static VALUE
-ractor_safe_call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, rb_ary_new_from_values(argc, argv));
-}
-static VALUE
-ractor_safe_call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(int, const VALUE *, VALUE) = (VALUE(*)(int, const VALUE *, VALUE))func;
- return (*f)(argc, argv, recv);
-}
-static VALUE
-ractor_safe_call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
- return (*f)(recv);
-}
-static VALUE
-ractor_safe_call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
- return (*f)(recv, argv[0]);
-}
-static VALUE
-ractor_safe_call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1]);
-}
-static VALUE
-ractor_safe_call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2]);
-}
-static VALUE
-ractor_safe_call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-ractor_safe_call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-ractor_safe_call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-ractor_safe_call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-ractor_safe_call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-ractor_safe_call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-ractor_safe_call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-ractor_safe_call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-ractor_safe_call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-ractor_safe_call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-ractor_safe_call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-ractor_safe_call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
-{
- VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
- return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-static inline int
-vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
-{
- const int ov_flags = RAISED_STACKOVERFLOW;
- if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
- if ((((ec)->raised_flag & (ov_flags)) != 0)) {
- ((ec)->raised_flag &= ~(ov_flags));
- return 1;
- }
- return 0;
-}
-static inline
-const rb_method_cfunc_t *
-vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
-{
- return __extension__({
- ;
- ; __typeof__(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc);
- ; unaligned_member_access_result; });
-}
-static VALUE
-vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- VALUE val;
- const rb_callable_method_entry_t *me = vm_cc_cme(cc);
- const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
- int len = cfunc->argc;
- VALUE recv = calling->recv;
- VALUE block_handler = calling->block_handler;
- VALUE frame_type = VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL;
- int argc = calling->argc;
- int orig_argc = argc;
- if ((__builtin_expect(!!(calling->kw_splat), 0))) {
- frame_type |= VM_FRAME_FLAG_CFRAME_KW;
- }
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
- vm_push_frame(ec, ((void*)0), frame_type, recv,
- block_handler, (VALUE)me,
- 0, ec->cfp->sp, 0, 0);
- if (len >= 0) rb_check_arity(argc, len, len);
- reg_cfp->sp -= orig_argc + 1;
- val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
- ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)));
- rb_vm_pop_frame(ec);
- do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, val, 0); } } while (0);
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- return val;
-}
-static VALUE
-vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- ((void)0);
- CALLER_SETUP_ARG(reg_cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
- CC_SET_FASTPATH(calling->cc, vm_call_cfunc_with_frame, !rb_splat_or_kwargs_p(ci) && !calling->kw_splat);
- return vm_call_cfunc_with_frame(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- cfp->sp -= 1;
- VALUE ivar = vm_getivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, ((void*)0), ((void*)0), cc, 1);
- return ivar;
-}
-static VALUE
-vm_call_attrset_direct(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_callcache *cc, VALUE obj)
-{
- ((void)0);
- VALUE val = *(cfp->sp - 1);
- cfp->sp -= 2;
- attr_index_t index = vm_cc_attr_index(cc);
- shape_id_t dest_shape_id = vm_cc_attr_index_dest_shape_id(cc);
- ID id = vm_cc_cme(cc)->def->body.attr.id;
- do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
- VALUE res = vm_setivar(obj, id, val, dest_shape_id, index);
- if (RB_UNDEF_P(res)) {
- switch (RB_BUILTIN_TYPE(obj)) {
- case RUBY_T_OBJECT:
- case RUBY_T_CLASS:
- case RUBY_T_MODULE:
- break;
- default:
- {
- res = vm_setivar_default(obj, id, val, dest_shape_id, index);
- if (!RB_UNDEF_P(res)) {
- return res;
- }
- }
- }
- res = vm_setivar_slowpath_attr(obj, id, val, cc);
- }
- return res;
-}
-static VALUE
-vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- return vm_call_attrset_direct(ec, cfp, calling->cc, calling->recv);
-}static inline
-_Bool
-rb_vm_call_ivar_attrset_p(const vm_call_handler ch)
-{
- return (ch == vm_call_ivar || ch == vm_call_attrset);
-}
-static inline VALUE
-vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const VALUE *argv)
-{
- rb_proc_t *proc;
- VALUE val;
- const struct rb_callcache *cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- VALUE procv = cme->def->body.bmethod.proc;
- if (!RB_FL_TEST_RAW((procv), RUBY_FL_SHAREABLE) &&
- cme->def->body.bmethod.defined_ractor != rb_ractor_self(rb_ec_ractor_ptr(ec))) {
- rb_raise(rb_eRuntimeError, "defined with an un-shareable Proc in a different Ractor");
- }
- (((proc)) = (rb_proc_t*)((struct RData *)(((procv))))->data);
- val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, vm_cc_cme(cc));
- return val;
-}
-static VALUE
-vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE *argv;
- int argc;
- const struct rb_callinfo *ci = calling->ci;
- CALLER_SETUP_ARG(cfp, calling, ci);
- argc = calling->argc;
- argv = ((VALUE *)__builtin_alloca(rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))));
- ruby_nonempty_memcpy((argv), (cfp->sp - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- cfp->sp += - argc - 1;
- return vm_call_bmethod_body(ec, calling, argv);
-}static inline
-__attribute__ ((__visibility__("default"))) VALUE
-rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
-{
- VALUE klass = current_class;
- if ((__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) && RB_FL_TEST(klass, ((VALUE)RUBY_FL_USER0)) &&
- (__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((RBASIC_CLASS(klass)), (RUBY_T_CLASS)) : (RB_TYPE_P)((RBASIC_CLASS(klass)), (RUBY_T_CLASS)))) {
- klass = RBASIC_CLASS(klass);
- }
- while (RB_TEST(klass)) {
- VALUE owner = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_ICLASS)) : (RB_TYPE_P)((klass), (RUBY_T_ICLASS))) ? RBASIC_CLASS(klass) : klass;
- if (owner == target_owner) {
- return klass;
- }
- klass = RCLASS_SUPER(klass);
- }
- return current_class;
-}
-static const rb_callable_method_entry_t *
-aliased_callable_method_entry(const rb_callable_method_entry_t *me)
-{
- const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
- const rb_callable_method_entry_t *cme;
- if (orig_me->defined_class == 0) {
- VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner);
- ((void)0);
- cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
- if (me->def->alias_count + me->def->complemented_count == 0) {
- rb_obj_write((VALUE)(me), __extension__({
- ;
- ; __typeof__((VALUE *)(&me->def->body.alias.original_me)) unaligned_member_access_result = ((VALUE *)(&me->def->body.alias.original_me));
- ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 3417);
- }
- else {
- rb_method_definition_t *def =
- rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id);
- rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
- }
- }
- else {
- cme = (const rb_callable_method_entry_t *)orig_me;
- }
- ((void)0);
- return cme;
-}static inline
-const rb_callable_method_entry_t *
-rb_aliased_callable_method_entry(const rb_callable_method_entry_t *me)
-{
- return aliased_callable_method_entry(me);
-}
-static VALUE
-vm_call_alias(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = aliased_callable_method_entry(vm_cc_cme(calling->cc)), .call_ = vm_call_general, .aux_ = {{0}}, };
- return vm_call_method_each_type(ec, cfp, calling);
-}
-static enum method_missing_reason
-ci_missing_reason(const struct rb_callinfo *ci)
-{
- enum method_missing_reason stat = MISSING_NOENTRY;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
- return stat;
-}
-static VALUE vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
-static VALUE
-vm_call_symbol(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE symbol, int flags)
-{
- __builtin_assume(calling->argc >= 0);
- enum method_missing_reason missing_reason = MISSING_NOENTRY;
- int argc = calling->argc;
- VALUE recv = calling->recv;
- VALUE klass = rb_class_of(recv);
- ID mid = rb_check_id(&symbol);
- flags |= (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
- if ((__builtin_expect(!!(! mid), 0))) {
- mid = idMethodMissing;
- missing_reason = ci_missing_reason(ci);
- ec->method_missing_reason = missing_reason;
- int i = argc;
- do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- (((reg_cfp)->sp) += (((1))));
- __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), (&(*(((((reg_cfp)->sp)))-(i)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), 0));
- argc = ++calling->argc;
- if (rb_method_basic_definition_p(klass, idMethodMissing)) {
- (*(((((reg_cfp)->sp)))-(i)-1)) = symbol;
- int priv = vm_ci_flag(ci) & ((0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_VCALL_bit));
- const VALUE *argv = (((((reg_cfp)->sp)))-(argc));
- VALUE exc = rb_make_no_method_exception(
- rb_eNoMethodError, 0, recv, argc, argv, priv);
- rb_exc_raise(exc);
- }
- else {
- (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(symbol);
- }
- }
- calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = mid, .flag = flags, .argc = argc, .kwarg = vm_ci_kwarg(ci), };
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = klass, .cme_ = rb_callable_method_entry_with_refinements(klass, mid, ((void*)0)), .call_ = vm_call_general, .aux_ = { .method_missing_reason = missing_reason }, };
- if (flags & (0x01 << VM_CALL_FCALL_bit)) {
- return vm_call_method(ec, reg_cfp, calling);
- }
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- if (vm_cc_cme(cc) != ((void*)0)) {
- switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PUBLIC:
- return vm_call_method_each_type(ec, reg_cfp, calling);
- case METHOD_VISI_PRIVATE:
- vm_cc_method_missing_reason_set(cc, MISSING_PRIVATE);
- break;
- case METHOD_VISI_PROTECTED:
- vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
- break;
- default:
- __builtin_unreachable();
- }
- return vm_call_method_missing(ec, reg_cfp, calling);
- }
- return vm_call_method_nome(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- int i;
- VALUE sym;
- CALLER_SETUP_ARG(reg_cfp, calling, calling->ci);
- i = calling->argc - 1;
- if (calling->argc == 0) {
- rb_raise(rb_eArgError, "no method name given");
- }
- else {
- sym = (*(((((reg_cfp)->sp)))-(i)-1));
- if (i > 0) {
- __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(i)-1))), 0));
- }
- calling->argc -= 1;
- (((reg_cfp)->sp) -= (((1))));
- return vm_call_symbol(ec, reg_cfp, calling, calling->ci, sym, (0x01 << VM_CALL_FCALL_bit));
- }
-}
-static VALUE
-vm_call_method_missing_body(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling,
- const struct rb_callinfo *orig_ci, enum method_missing_reason reason)
-{
- ((void)0);
- VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
- unsigned int argc;
- CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
- argc = calling->argc + 1;
- unsigned int flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
- calling->argc = argc;
- do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- ;
- if (argc > 1) {
- __builtin___memmove_chk ((argv+1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc-1)), __builtin_object_size ((argv+1), 0));
- }
- argv[0] = rb_id2sym(vm_ci_mid(orig_ci));
- (((reg_cfp)->sp) += (((1))));
- ec->method_missing_reason = reason;
- calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = idMethodMissing, .flag = flag, .argc = argc, .kwarg = vm_ci_kwarg(orig_ci), };
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = rb_callable_method_entry_without_refinements(rb_class_of(calling->recv), idMethodMissing, ((void*)0)), .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- return vm_call_method(ec, reg_cfp, calling);
-}
-static VALUE
-vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- return vm_call_method_missing_body(ec, reg_cfp, calling, calling->ci, vm_cc_cmethod_missing_reason(calling->cc));
-}
-static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
-static VALUE
-vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, VALUE klass)
-{
- klass = RCLASS_SUPER(klass);
- const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, vm_ci_mid(calling->ci)) : ((void*)0);
- if (cme == ((void*)0)) {
- return vm_call_method_nome(ec, cfp, calling);
- }
- if (cme->def->type == VM_METHOD_TYPE_REFINED &&
- cme->def->body.refined.orig_me) {
- cme = refined_method_callable_without_refinement(cme);
- }
- calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = cme, .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- return vm_call_method_each_type(ec, cfp, calling);
-}
-static inline VALUE
-find_refinement(VALUE refinements, VALUE klass)
-{
- if (RB_NIL_P(refinements)) {
- return ((VALUE)RUBY_Qnil);
- }
- return rb_hash_lookup(refinements, klass);
-}
-__attribute__((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
-static rb_control_frame_t *
-current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
-{
- rb_control_frame_t *top_cfp = cfp;
- if (cfp->iseq && ((cfp->iseq)->body)->type == ISEQ_TYPE_BLOCK) {
- const rb_iseq_t *local_iseq = ((cfp->iseq)->body)->local_iseq;
- do {
- cfp = ((cfp)+1);
- if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
- return top_cfp;
- }
- } while (cfp->iseq != local_iseq);
- }
- return cfp;
-}
-static const rb_callable_method_entry_t *
-refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
-{
- const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
- const rb_callable_method_entry_t *cme;
- if (orig_me->defined_class == 0) {
- cme = ((void*)0);
- rb_notimplement();
- }
- else {
- cme = (const rb_callable_method_entry_t *)orig_me;
- }
- ((void)0);
- if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
- cme = ((void*)0);
- }
- return cme;
-}
-static const rb_callable_method_entry_t *
-search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ID mid = vm_ci_mid(calling->ci);
- const rb_cref_t *cref = vm_get_cref(cfp->ep);
- const struct rb_callcache * const cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- for (; cref; cref = CREF_NEXT(cref)) {
- const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), vm_cc_cme(cc)->owner);
- if (RB_NIL_P(refinement)) continue;
- const rb_callable_method_entry_t *const ref_me =
- rb_callable_method_entry(refinement, mid);
- if (ref_me) {
- if (vm_cc_call(cc) == vm_call_super_method) {
- const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
- const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
- if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
- continue;
- }
- }
- if (cme->def->type != VM_METHOD_TYPE_REFINED ||
- cme->def != ref_me->def) {
- cme = ref_me;
- }
- if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
- return cme;
- }
- }
- else {
- return ((void*)0);
- }
- }
- if (vm_cc_cme(cc)->def->body.refined.orig_me) {
- return refined_method_callable_without_refinement(vm_cc_cme(cc));
- }
- else {
- VALUE klass = RCLASS_SUPER(vm_cc_cme(cc)->defined_class);
- const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, mid) : ((void*)0);
- return cme;
- }
-}
-static VALUE
-vm_call_refined(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- struct rb_callcache *ref_cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE) | ((VALUE)RUBY_FL_EXIVAR), .klass = ((VALUE)RUBY_Qundef), .cme_ = search_refined_method(ec, cfp, calling), .call_ = vm_call_general, .aux_ = {{ 0 }}, };
- if (vm_cc_cme(ref_cc)) {
- calling->cc= ref_cc;
- return vm_call_method(ec, cfp, calling);
- }
- else {
- return vm_call_method_nome(ec, cfp, calling);
- }
-}
-static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, _Bool is_lambda, VALUE block_handler);
-__declspec(noinline) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler);
-static VALUE
-vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler)
-{
- int argc = calling->argc;
- if (argc > 0) __builtin___memmove_chk ((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)), __builtin_object_size ((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0));
- (((reg_cfp)->sp) -= (((1))));
- return vm_invoke_block(ec, reg_cfp, calling, ci, 0, block_handler);
-}
-static VALUE
-vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- const struct rb_callinfo *ci = calling->ci;
- VALUE procval = calling->recv;
- return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
-}
-static VALUE
-vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
- const struct rb_callinfo *ci = calling->ci;
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
- return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
- }
- else {
- calling->recv = rb_vm_bh_to_procval(ec, block_handler);
- calling->cc = rb_vm_search_method_slowpath(ci, rb_class_of(calling->recv));
- return vm_call_general(ec, reg_cfp, calling);
- }
-}
-static VALUE
-vm_call_opt_struct_aref0(rb_execution_context_t *ec, struct rb_calling_info *calling)
-{
- VALUE recv = calling->recv;
- ((void)0);
- ((void)0);
- ((void)0);
- const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
- return internal_RSTRUCT_GET(recv, off);
-}
-static VALUE
-vm_call_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE ret = vm_call_opt_struct_aref0(ec, calling);
- reg_cfp->sp -= 1;
- return ret;
-}
-static VALUE
-vm_call_opt_struct_aset0(rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE val)
-{
- VALUE recv = calling->recv;
- ((void)0);
- ((void)0);
- ((void)0);
- rb_check_frozen_inline(recv);
- const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
- internal_RSTRUCT_SET(recv, off, val);
- return val;
-}
-static VALUE
-vm_call_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- VALUE ret = vm_call_opt_struct_aset0(ec, calling, *(reg_cfp->sp - 1));
- reg_cfp->sp -= 2;
- return ret;
-}
-__declspec(noinline) static VALUE vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, const struct rb_callcache *cc);
-static VALUE
-vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
- const struct rb_callinfo *ci, const struct rb_callcache *cc)
-{
- switch (vm_cc_cme(cc)->def->body.optimized.type) {
- case OPTIMIZED_METHOD_TYPE_SEND:
- CC_SET_FASTPATH(cc, vm_call_opt_send, 1);
- return vm_call_opt_send(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_CALL:
- CC_SET_FASTPATH(cc, vm_call_opt_call, 1);
- return vm_call_opt_call(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
- CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1);
- return vm_call_opt_block_call(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_STRUCT_AREF:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 0, 0);
- CC_SET_FASTPATH(cc, vm_call_opt_struct_aref, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
- return vm_call_opt_struct_aref(ec, cfp, calling);
- case OPTIMIZED_METHOD_TYPE_STRUCT_ASET:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 1, 1);
- CC_SET_FASTPATH(cc, vm_call_opt_struct_aset, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
- return vm_call_opt_struct_aset(ec, cfp, calling);
- default:
- rb_bug("vm_call_method: unsupported optimized method type (%d)", vm_cc_cme(cc)->def->body.optimized.type);
- }
-}
-COLDFUNC static VALUE
-vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
- VALUE v;
- switch (cme->def->type) {
- case VM_METHOD_TYPE_ISEQ:
- CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
- return vm_call_iseq_setup(ec, cfp, calling);
- case VM_METHOD_TYPE_NOTIMPLEMENTED:
- case VM_METHOD_TYPE_CFUNC:
- CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
- return vm_call_cfunc(ec, cfp, calling);
- case VM_METHOD_TYPE_ATTRSET:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 1, 1);
- const unsigned int aset_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KWARG_bit));
- if (vm_cc_markable(cc)) {
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); };
- }
- else {
- cc = &((struct rb_callcache) {
- .flags = RUBY_T_IMEMO |
- (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) |
- ((VALUE)RUBY_FL_FREEZE) |
- ((VALUE)(((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32)) |
- ((VALUE)RUBY_FL_EXIVAR),
- .klass = cc->klass,
- .cme_ = cc->cme_,
- .call_ = cc->call_,
- .aux_ = {
- .attr = {
- .value = (((uintptr_t)1 << 32) - 1) << ((8 * 8) - 32),
- }
- },
- });
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset_direct(ec, cfp, cc, calling->recv); };
- }
- return v;
- case VM_METHOD_TYPE_IVAR:
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- rb_check_arity(calling->argc, 0, 0);
- vm_cc_attr_index_initialize(cc, (((uintptr_t)1 << 32) - 1));
- const unsigned int ivar_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
- if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_ivar(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_ivar, !(vm_ci_flag(ci) & ivar_mask)); v = vm_call_ivar(ec, cfp, calling); };
- return v;
- case VM_METHOD_TYPE_MISSING:
- vm_cc_method_missing_reason_set(cc, 0);
- CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
- return vm_call_method_missing(ec, cfp, calling);
- case VM_METHOD_TYPE_BMETHOD:
- CC_SET_FASTPATH(cc, vm_call_bmethod, 1);
- return vm_call_bmethod(ec, cfp, calling);
- case VM_METHOD_TYPE_ALIAS:
- CC_SET_FASTPATH(cc, vm_call_alias, 1);
- return vm_call_alias(ec, cfp, calling);
- case VM_METHOD_TYPE_OPTIMIZED:
- return vm_call_optimized(ec, cfp, calling, ci, cc);
- case VM_METHOD_TYPE_UNDEF:
- break;
- case VM_METHOD_TYPE_ZSUPER:
- return vm_call_zsuper(ec, cfp, calling, (((rb_classext_t *)((char *)(vm_cc_cme(cc)->defined_class) + sizeof(struct RClass)))->origin_));
- case VM_METHOD_TYPE_REFINED:
- return vm_call_refined(ec, cfp, calling);
- }
- rb_bug("vm_call_method: unsupported method type (%d)", vm_cc_cme(cc)->def->type);
-}
-__declspec(noreturn) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
-static VALUE
-vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const int stat = ci_missing_reason(ci);
- if (vm_ci_mid(ci) == idMethodMissing) {
- rb_control_frame_t *reg_cfp = cfp;
- VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
- vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
- }
- else {
- return vm_call_method_missing_body(ec, cfp, calling, ci, stat);
- }
-}
-static VALUE
-vm_defined_class_for_protected_call(const rb_callable_method_entry_t *me)
-{
- VALUE defined_class = me->defined_class;
- VALUE refined_class = (((rb_classext_t *)((char *)(defined_class) + sizeof(struct RClass)))->refined_class);
- return RB_NIL_P(refined_class) ? defined_class : refined_class;
-}
-static inline VALUE
-vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- const struct rb_callcache *cc = calling->cc;
- ((void)0);
- if (vm_cc_cme(cc) != ((void*)0)) {
- switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PUBLIC:
- return vm_call_method_each_type(ec, cfp, calling);
- case METHOD_VISI_PRIVATE:
- if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit))) {
- enum method_missing_reason stat = MISSING_PRIVATE;
- if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
- vm_cc_method_missing_reason_set(cc, stat);
- CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
- return vm_call_method_missing(ec, cfp, calling);
- }
- return vm_call_method_each_type(ec, cfp, calling);
- case METHOD_VISI_PROTECTED:
- if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_OPT_SEND_bit) | (0x01 << VM_CALL_FCALL_bit)))) {
- VALUE defined_class = vm_defined_class_for_protected_call(vm_cc_cme(cc));
- if (!rb_obj_is_kind_of(cfp->self, defined_class)) {
- vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
- return vm_call_method_missing(ec, cfp, calling);
- }
- else {
- ((void)0);
- struct rb_callcache cc_on_stack = *cc;
- RB_FL_SET_RAW((VALUE)&cc_on_stack, ((VALUE)RUBY_FL_FREEZE));
- calling->cc = &cc_on_stack;
- return vm_call_method_each_type(ec, cfp, calling);
- }
- }
- return vm_call_method_each_type(ec, cfp, calling);
- default:
- rb_bug("unreachable");
- }
- }
- else {
- return vm_call_method_nome(ec, cfp, calling);
- }
-}
-static VALUE
-vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_method(ec, reg_cfp, calling);
-}static inline
-void
-rb_vm_cc_general(const struct rb_callcache *cc)
-{
- ((void)0);
- ((void)0);
- *(vm_call_handler *)&cc->call_ = vm_call_general;
-}
-static VALUE
-vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- if (ec == ((void*)0)) rb_bug("unreachable");
- ((void)0);
- return vm_call_method(ec, reg_cfp, calling);
-}
-static inline VALUE
-vm_search_normal_superclass(VALUE klass)
-{
- if (RB_BUILTIN_TYPE(klass) == RUBY_T_ICLASS &&
- (__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((((struct RBasic *)(klass))->klass), (RUBY_T_MODULE)) : (RB_TYPE_P)((((struct RBasic *)(klass))->klass), (RUBY_T_MODULE))) &&
- RB_FL_TEST_RAW(((struct RBasic *)(klass))->klass, RMODULE_IS_REFINEMENT)) {
- klass = ((struct RBasic *)(klass))->klass;
- }
- klass = (((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->origin_);
- return RCLASS_SUPER(klass);
-}
-__declspec(noreturn) static void vm_super_outside(void);
-static void
-vm_super_outside(void)
-{
- rb_raise(rb_eNoMethodError, "super called outside of method");
-}
-static const struct rb_callcache *
-empty_cc_for_super(void)
-{
- return rb_vm_empty_cc_for_super();
-}
-static const struct rb_callcache *
-vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- VALUE current_defined_class;
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
- if (!me) {
- vm_super_outside();
- }
- current_defined_class = vm_defined_class_for_protected_call(me);
- if (RB_BUILTIN_TYPE(current_defined_class) != RUBY_T_MODULE &&
- reg_cfp->iseq != method_entry_iseqptr(me) &&
- !rb_obj_is_kind_of(recv, current_defined_class)) {
- VALUE m = (__builtin_constant_p(RUBY_T_ICLASS) ? rbimpl_RB_TYPE_P_fastpath((current_defined_class), (RUBY_T_ICLASS)) : (RB_TYPE_P)((current_defined_class), (RUBY_T_ICLASS))) ?
- (((rb_classext_t *)((char *)(current_defined_class) + sizeof(struct RClass)))->includer) : current_defined_class;
- if (m) {
- rb_raise(rb_eTypeError,
- "self has wrong type to call super in this context: "
- "%""l""i" "\v"" (expected %""l""i" "\v"")",
- rb_obj_class(recv), m);
- }
- }
- if (me->def->type == VM_METHOD_TYPE_BMETHOD && (vm_ci_flag(cd->ci) & (0x01 << VM_CALL_ZSUPER_bit))) {
- rb_raise(rb_eRuntimeError,
- "implicit argument passing of super from method defined"
- " by define_method() is not supported."
- " Specify all arguments explicitly.");
- }
- ID mid = me->def->original_id;
- cd->ci = vm_ci_new_runtime_(mid, vm_ci_flag(cd->ci), vm_ci_argc(cd->ci), vm_ci_kwarg(cd->ci), "./vm_insnhelper.c", 4186);
- (rb_obj_written((VALUE)(reg_cfp->iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cd->ci), "./vm_insnhelper.c", 4188));
- const struct rb_callcache *cc;
- VALUE klass = vm_search_normal_superclass(me->defined_class);
- if (!klass) {
- cc = vm_cc_new(klass, ((void*)0), vm_call_method_missing);
- rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 4197);
- }
- else {
- cc = vm_search_method_fastpath((VALUE)reg_cfp->iseq, cd, klass);
- const rb_callable_method_entry_t *cached_cme = vm_cc_cme(cc);
- if (cached_cme == ((void*)0)) {
- cd->cc = empty_cc_for_super();
- }
- else if (cached_cme->called_id != mid) {
- const rb_callable_method_entry_t *cme = rb_callable_method_entry(klass, mid);
- if (cme) {
- cc = vm_cc_new(klass, cme, vm_call_super_method);
- rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
- ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 4212);
- }
- else {
- cd->cc = cc = empty_cc_for_super();
- }
- }
- else {
- switch (cached_cme->def->type) {
- case VM_METHOD_TYPE_REFINED:
- case VM_METHOD_TYPE_ATTRSET:
- case VM_METHOD_TYPE_IVAR:
- vm_cc_call_set(cc, vm_call_super_method);
- break;
- default:
- break;
- }
- }
- }
- ((void)0);
- return cc;
-}
-static inline int
-block_proc_is_lambda(const VALUE procval)
-{
- rb_proc_t *proc;
- if (procval) {
- (((proc)) = (rb_proc_t*)((struct RData *)(((procval))))->data);
- return proc->is_lambda;
- }
- else {
- return 0;
- }
-}
-static VALUE
-vm_yield_with_cfunc(rb_execution_context_t *ec,
- const struct rb_captured_block *captured,
- VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
- const rb_callable_method_entry_t *me)
-{
- int is_lambda = 0;
- VALUE val, arg, blockarg;
- int frame_flag;
- const struct vm_ifunc *ifunc = captured->code.ifunc;
- if (is_lambda) {
- arg = rb_ary_new_from_values(argc, argv);
- }
- else if (argc == 0) {
- arg = ((VALUE)RUBY_Qnil);
- }
- else {
- arg = argv[0];
- }
- blockarg = rb_vm_bh_to_procval(ec, block_handler);
- frame_flag = VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME | (me ? VM_FRAME_FLAG_BMETHOD : 0);
- if (kw_splat) {
- frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
- }
- vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
- frame_flag,
- self,
- ((VALUE)((captured->ep)) | (0x01)),
- (VALUE)me,
- 0, ec->cfp->sp, 0, 0);
- val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
- rb_vm_pop_frame(ec);
- return val;
-}
-static VALUE
-vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
-{
- return rb_sym_proc_call(rb_sym2id(symbol), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
-}
-static inline int
-vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
-{
- int i;
- long len = rb_array_len(ary);
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((((iseq)->body)->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i=0; ibody)->param.lead_num; i++) {
- argv[i] = RARRAY_AREF(ary, i);
- }
- return i;
-}
-static inline VALUE
-vm_callee_setup_block_arg_arg0_check(VALUE *argv)
-{
- VALUE ary, arg0 = argv[0];
- ary = rb_check_array_type(arg0);
- ((void)0);
- return ary;
-}
-static int
-vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_callinfo *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
-{
- if (rb_simple_iseq_p(iseq)) {
- rb_control_frame_t *cfp = ec->cfp;
- VALUE arg0;
- CALLER_SETUP_ARG(cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
- if (arg_setup_type == arg_setup_block &&
- calling->argc == 1 &&
- ((iseq)->body)->param.flags.has_lead &&
- !((iseq)->body)->param.flags.ambiguous_param0 &&
- !RB_NIL_P(arg0 = vm_callee_setup_block_arg_arg0_check(argv))) {
- calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
- }
- if (calling->argc != ((iseq)->body)->param.lead_num) {
- if (arg_setup_type == arg_setup_block) {
- if (calling->argc < ((iseq)->body)->param.lead_num) {
- int i;
- do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((((iseq)->body)->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
- for (i=calling->argc; i<((iseq)->body)->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
- calling->argc = ((iseq)->body)->param.lead_num;
- }
- else if (calling->argc > ((iseq)->body)->param.lead_num) {
- calling->argc = ((iseq)->body)->param.lead_num;
- }
- }
- else {
- argument_arity_error(ec, iseq, calling->argc, ((iseq)->body)->param.lead_num, ((iseq)->body)->param.lead_num);
- }
- }
- return 0;
- }
- else {
- return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
- }
-}
-static int
-vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, int kw_splat, VALUE block_handler, enum arg_setup_type arg_setup_type)
-{
- struct rb_calling_info calling_entry, *calling;
- calling = &calling_entry;
- calling->argc = argc;
- calling->block_handler = block_handler;
- calling->kw_splat = kw_splat;
- calling->recv = ((VALUE)RUBY_Qundef);
- struct rb_callinfo dummy_ci = (struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = 0, .flag = (kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0), .argc = 0, .kwarg = 0, };
- return vm_callee_setup_block_arg(ec, calling, &dummy_ci, iseq, argv, arg_setup_type);
-}
-static VALUE
-vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
- const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
- const int arg_size = ((iseq)->body)->param.size;
- VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
- int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
- (((reg_cfp)->sp) = (((rsp))));
- vm_push_frame(ec, iseq,
- VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
- captured->self,
- ((VALUE)((captured->ep)) | (0x01)), 0,
- ((iseq)->body)->iseq_encoded + opt_pc,
- rsp + arg_size,
- ((iseq)->body)->local_table_size - arg_size, ((iseq)->body)->stack_max);
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
-{
- if (calling->argc < 1) {
- rb_raise(rb_eArgError, "no receiver given");
- }
- else {
- VALUE symbol = VM_BH_TO_SYMBOL(block_handler);
- CALLER_SETUP_ARG(reg_cfp, calling, ci);
- calling->recv = (*(((((reg_cfp)->sp)))-(--calling->argc)-1));
- return vm_call_symbol(ec, reg_cfp, calling, ci, symbol, 0);
- }
-}
-static VALUE
-vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
-{
- VALUE val;
- int argc;
- const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
- CALLER_SETUP_ARG(ec->cfp, calling, ci);
- CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
- argc = calling->argc;
- val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler, ((void*)0));
- ((((reg_cfp)->sp) -= (((argc)))));
- return val;
-}
-static VALUE
-vm_proc_to_block_handler(VALUE procval)
-{
- const struct rb_block *block = vm_proc_block(procval);
- switch (vm_block_type(block)) {
- case block_type_iseq:
- return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
- case block_type_ifunc:
- return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
- case block_type_symbol:
- return VM_BH_FROM_SYMBOL(block->as.symbol);
- case block_type_proc:
- return VM_BH_FROM_PROC(block->as.proc);
- }
- __builtin_unreachable();
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_invoke_proc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- while (vm_block_handler_type(block_handler) == block_handler_type_proc) {
- VALUE proc = VM_BH_TO_PROC(block_handler);
- is_lambda = block_proc_is_lambda(proc);
- block_handler = vm_proc_to_block_handler(proc);
- }
- return vm_invoke_block(ec, reg_cfp, calling, ci, is_lambda, block_handler);
-}
-static inline VALUE
-vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler)
-{
- VALUE (*func)(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
- struct rb_calling_info *calling, const struct rb_callinfo *ci,
- _Bool is_lambda, VALUE block_handler);
- switch (vm_block_handler_type(block_handler)) {
- case block_handler_type_iseq: func = vm_invoke_iseq_block; break;
- case block_handler_type_ifunc: func = vm_invoke_ifunc_block; break;
- case block_handler_type_proc: func = vm_invoke_proc_block; break;
- case block_handler_type_symbol: func = vm_invoke_symbol_block; break;
- default: rb_bug("vm_invoke_block: unreachable");
- }
- return func(ec, reg_cfp, calling, ci, is_lambda, block_handler);
-}
-static VALUE
-vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
-{
- const rb_execution_context_t *ec = rb_current_execution_context(1);
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- struct rb_captured_block *captured;
- if (cfp == 0) {
- rb_bug("vm_make_proc_with_iseq: unreachable");
- }
- captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
- captured->code.iseq = blockiseq;
- return rb_vm_make_proc(ec, captured, rb_cProc);
-}
-static VALUE
-vm_once_exec(VALUE iseq)
-{
- VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
- return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
-}
-static VALUE
-vm_once_clear(VALUE data)
-{
- union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
- is->once.running_thread = ((void*)0);
- return ((VALUE)RUBY_Qnil);
-}
-static _Bool
-check_respond_to_missing(VALUE obj, VALUE v)
-{
- VALUE args[2];
- VALUE r;
- args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
- r = rb_check_funcall(v, idRespond_to_missing, 2, args);
- if (!RB_UNDEF_P(r) && RB_TEST(r)) {
- return 1;
- }
- else {
- return 0;
- }
-}
-static _Bool
-vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
-{
- VALUE klass;
- enum defined_type type = (enum defined_type)op_type;
- switch (type) {
- case DEFINED_IVAR:
- return rb_ivar_defined((((((reg_cfp)))->self)), rb_sym2id(obj));
- break;
- case DEFINED_GVAR:
- return rb_gvar_defined(rb_sym2id(obj));
- break;
- case DEFINED_CVAR: {
- const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
- klass = vm_get_cvar_base(cref, (((reg_cfp))), 0);
- return rb_cvar_defined(klass, rb_sym2id(obj));
- break;
- }
- case DEFINED_CONST:
- case DEFINED_CONST_FROM: {
- _Bool allow_nil = type == DEFINED_CONST;
- klass = v;
- return vm_get_ev_const(ec, klass, rb_sym2id(obj), allow_nil, 1);
- break;
- }
- case DEFINED_FUNC:
- klass = rb_class_of(v);
- return rb_ec_obj_respond_to(ec, v, rb_sym2id(obj), 1);
- break;
- case DEFINED_METHOD:{
- VALUE klass = rb_class_of(v);
- const rb_method_entry_t *me = rb_method_entry_with_refinements(klass, rb_sym2id(obj), ((void*)0));
- if (me) {
- switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
- case METHOD_VISI_PRIVATE:
- break;
- case METHOD_VISI_PROTECTED:
- if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
- break;
- }
- case METHOD_VISI_PUBLIC:
- return 1;
- break;
- default:
- rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)));
- }
- }
- else {
- return check_respond_to_missing(obj, v);
- }
- break;
- }
- case DEFINED_YIELD:
- if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
- return 1;
- }
- break;
- case DEFINED_ZSUPER:
- {
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
- if (me) {
- VALUE klass = vm_search_normal_superclass(me->defined_class);
- ID id = me->def->original_id;
- return rb_method_boundp(klass, id, 0);
- }
- }
- break;
- case DEFINED_REF:{
- return vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), RB_FIX2INT(obj)) != ((VALUE)RUBY_Qnil);
- break;
- }
- default:
- rb_bug("unimplemented defined? type (VM)");
- break;
- }
- return 0;
-}static inline
-_Bool
-rb_vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
-{
- return vm_defined(ec, reg_cfp, op_type, obj, v);
-}
-static const VALUE *
-vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
-{
- rb_num_t i;
- const VALUE *ep = reg_ep;
- for (i = 0; i < lv; i++) {
- ep = ((VALUE *)((ep)[(-1)] & ~0x03));
- }
- return ep;
-}
-static VALUE
-vm_get_special_object(const VALUE *const reg_ep,
- enum vm_special_object_type type)
-{
- switch (type) {
- case VM_SPECIAL_OBJECT_VMCORE:
- return rb_mRubyVMFrozenCore;
- case VM_SPECIAL_OBJECT_CBASE:
- return vm_get_cbase(reg_ep);
- case VM_SPECIAL_OBJECT_CONST_BASE:
- return vm_get_const_base(reg_ep);
- default:
- rb_bug("putspecialobject insn: unknown value_type %d", type);
- }
-}
-static VALUE
-vm_concat_array(VALUE ary1, VALUE ary2st)
-{
- const VALUE ary2 = ary2st;
- VALUE tmp1 = rb_check_to_array(ary1);
- VALUE tmp2 = rb_check_to_array(ary2);
- if (RB_NIL_P(tmp1)) {
- tmp1 = rb_ary_new_from_args(1, ary1);
- }
- if (RB_NIL_P(tmp2)) {
- tmp2 = rb_ary_new_from_args(1, ary2);
- }
- if (tmp1 == ary1) {
- tmp1 = rb_ary_dup(ary1);
- }
- return rb_ary_concat(tmp1, tmp2);
-}static inline
-VALUE
-rb_vm_concat_array(VALUE ary1, VALUE ary2st)
-{
- return vm_concat_array(ary1, ary2st);
-}
-static VALUE
-vm_splat_array(VALUE flag, VALUE ary)
-{
- VALUE tmp = rb_check_to_array(ary);
- if (RB_NIL_P(tmp)) {
- return rb_ary_new_from_args(1, ary);
- }
- else if (RB_TEST(flag)) {
- return rb_ary_dup(tmp);
- }
- else {
- return tmp;
- }
-}static inline
-VALUE
-rb_vm_splat_array(VALUE flag, VALUE ary)
-{
- return vm_splat_array(flag, ary);
-}
-static VALUE
-vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
-{
- enum vm_check_match_type type = ((int)flag) & 0x03;
- if (flag & 0x04) {
- long i;
- const long n = rb_array_len(pattern);
- for (i = 0; i < n; i++) {
- VALUE v = RARRAY_AREF(pattern, i);
- VALUE c = check_match(ec, v, target, type);
- if (RB_TEST(c)) {
- return c;
- }
- }
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- return check_match(ec, pattern, target, type);
- }
-}
-static VALUE
-vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
-{
- const VALUE kw_bits = *(ep - bits);
- if (RB_FIXNUM_P(kw_bits)) {
- unsigned int b = (unsigned int)rb_fix2ulong(kw_bits);
- if ((idx < (32-1)) && (b & (0x01 << idx)))
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- ((void)0);
- if (rb_hash_has_key(kw_bits, __builtin_choose_expr( __builtin_constant_p(idx), ((VALUE)(idx)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(idx)))) return ((VALUE)RUBY_Qfalse);
- }
- return ((VALUE)RUBY_Qtrue);
-}
-static void
-vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
-{
- if (0 ||
- 0 ||
- 0 ||
- 0) {
- switch (flag) {
- case 0x0008:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0020:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0010:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- case 0x0040:
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
- return;
- }
- }
-}
-static VALUE
-vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
-{
- if (!rb_const_defined_at(cbase, id)) {
- return 0;
- }
- else if (((flags) & 0x08)) {
- return rb_public_const_get_at(cbase, id);
- }
- else {
- return rb_const_get_at(cbase, id);
- }
-}
-static VALUE
-vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
-{
- if (!(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS)))) {
- return 0;
- }
- else if (((flags) & 0x10)) {
- VALUE tmp = rb_class_real(RCLASS_SUPER(klass));
- if (tmp != super) {
- rb_raise(rb_eTypeError,
- "superclass mismatch for class %""l""i" "\v""",
- rb_id2str(id));
- }
- else {
- return klass;
- }
- }
- else {
- return klass;
- }
-}
-static VALUE
-vm_check_if_module(ID id, VALUE mod)
-{
- if (!(__builtin_constant_p(RUBY_T_MODULE) ? rbimpl_RB_TYPE_P_fastpath((mod), (RUBY_T_MODULE)) : (RB_TYPE_P)((mod), (RUBY_T_MODULE)))) {
- return 0;
- }
- else {
- return mod;
- }
-}
-static VALUE
-declare_under(ID id, VALUE cbase, VALUE c)
-{
- rb_set_class_path_string(c, cbase, rb_id2str(id));
- rb_const_set(cbase, id, c);
- return c;
-}
-static VALUE
-vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
-{
- VALUE s = ((flags) & 0x10) ? super : rb_cObject;
- VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
- rb_define_alloc_func(c, rb_get_alloc_func(c));
- rb_class_inherited(s, c);
- return c;
-}
-static VALUE
-vm_declare_module(ID id, VALUE cbase)
-{
- return declare_under(id, cbase, rb_module_new());
-}
-__declspec(noreturn) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
-static void
-unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
-{
- VALUE name = rb_id2str(id);
- VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
- name, type);
- VALUE location = rb_const_source_location_at(cbase, id);
- if (!RB_NIL_P(location)) {
- rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
- " previous definition of %""l""i" "\v"" was here",
- rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
- }
- rb_exc_raise(rb_exc_new_str(rb_eTypeError, message));
-}
-static VALUE
-vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
-{
- VALUE klass;
- if (((flags) & 0x10) && !(__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((super), (RUBY_T_CLASS)) : (RB_TYPE_P)((super), (RUBY_T_CLASS)))) {
- rb_raise(rb_eTypeError,
- "superclass must be an instance of Class (given an instance of %""l""i" "\v"")",
- rb_obj_class(super));
- }
- vm_check_if_namespace(cbase);
- rb_autoload_load(cbase, id);
- if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
- if (!vm_check_if_class(id, flags, super, klass))
- unmatched_redefinition("class", cbase, id, klass);
- return klass;
- }
- else {
- return vm_declare_class(id, flags, cbase, super);
- }
-}
-static VALUE
-vm_define_module(ID id, rb_num_t flags, VALUE cbase)
-{
- VALUE mod;
- vm_check_if_namespace(cbase);
- if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
- if (!vm_check_if_module(id, mod))
- unmatched_redefinition("module", cbase, id, mod);
- return mod;
- }
- else {
- return vm_declare_module(id, cbase);
- }
-}
-static VALUE
-vm_find_or_create_class_by_id(ID id,
- rb_num_t flags,
- VALUE cbase,
- VALUE super)
-{
- rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK);
- switch (type) {
- case VM_DEFINECLASS_TYPE_CLASS:
- return vm_define_class(id, flags, cbase, super);
- case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
- return rb_singleton_class(cbase);
- case VM_DEFINECLASS_TYPE_MODULE:
- return vm_define_module(id, flags, cbase);
- default:
- rb_bug("unknown defineclass type: %d", (int)type);
- }
-}
-static rb_method_visibility_t
-vm_scope_visibility_get(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (!vm_env_cref_by_cref(cfp->ep)) {
- return METHOD_VISI_PUBLIC;
- }
- else {
- return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
- }
-}
-static int
-vm_scope_module_func_check(const rb_execution_context_t *ec)
-{
- const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
- if (!vm_env_cref_by_cref(cfp->ep)) {
- return 0;
- }
- else {
- return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
- }
-}
-static void
-vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
-{
- VALUE klass;
- rb_method_visibility_t visi;
- rb_cref_t *cref = vm_ec_cref(ec);
- if (is_singleton) {
- klass = rb_singleton_class(obj);
- visi = METHOD_VISI_PUBLIC;
- }
- else {
- klass = CREF_CLASS_FOR_DEFINITION(cref);
- visi = vm_scope_visibility_get(ec);
- }
- if (RB_NIL_P(klass)) {
- rb_raise(rb_eTypeError, "no class/module to add method");
- }
- rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
- if (id == (__builtin_constant_p("initialize") ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, ("initialize")); }) : (rb_intern)("initialize")) && klass != rb_cObject && (__builtin_constant_p(RUBY_T_CLASS) ? rbimpl_RB_TYPE_P_fastpath((klass), (RUBY_T_CLASS)) : (RB_TYPE_P)((klass), (RUBY_T_CLASS))) && (rb_get_alloc_func(klass) == rb_class_allocate_instance)) {
- ((rb_classext_t *)((char *)(klass) + sizeof(struct RClass)))->max_iv_count = rb_estimate_iv_count(klass, (const rb_iseq_t *)iseqval);
- }
- if (!is_singleton && vm_scope_module_func_check(ec)) {
- klass = rb_singleton_class(klass);
- rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
- }
-}
-static VALUE
-vm_invokeblock_i(struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *reg_cfp,
- struct rb_calling_info *calling)
-{
- const struct rb_callinfo *ci = calling->ci;
- VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
- if (block_handler == 0) {
- rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
- }
- else {
- return vm_invoke_block(ec, (((reg_cfp))), calling, ci, 0, block_handler);
- }
-}
-static const struct rb_callcache *
-vm_search_method_wrap(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- return vm_search_method((VALUE)reg_cfp->iseq, cd, recv);
-}
-static const struct rb_callcache *
-vm_search_invokeblock(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
-{
- static const struct rb_callcache cc = {
- .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_FREEZE),
- .klass = 0,
- .cme_ = 0,
- .call_ = vm_invokeblock_i,
- .aux_ = {0},
- };
- return &cc;
-}
-static
-VALUE
-vm_sendish(
- struct rb_execution_context_struct *ec,
- struct rb_control_frame_struct *reg_cfp,
- struct rb_call_data *cd,
- VALUE block_handler,
- const struct rb_callcache *(*method_explorer)(const struct rb_control_frame_struct *cfp, struct rb_call_data *cd, VALUE recv)
-) {
- VALUE val = ((VALUE)RUBY_Qundef);
- const struct rb_callinfo *ci = cd->ci;
- const struct rb_callcache *cc;
- int argc = vm_ci_argc(ci);
- VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
- struct rb_calling_info calling = {
- .block_handler = block_handler,
- .kw_splat = (vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0,
- .recv = recv,
- .argc = argc,
- .ci = ci,
- };
- calling.cc = cc = method_explorer((((reg_cfp))), cd, recv);
- val = vm_cc_call(cc)(ec, (((reg_cfp))), &calling);
- if (!RB_UNDEF_P(val)) {
- return val;
- }
- else {
- do { (reg_cfp) = ec->cfp; } while (0);
- }
- if (((((((reg_cfp)))->iseq))->body)->catch_except_p) {
- VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
- return rb_vm_exec(ec, 1);
- }
- else if (RB_UNDEF_P(val = jit_exec(ec))) {
- VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
- return rb_vm_exec(ec, 0);
- }
- else {
- return val;
- }
-}
-VALUE rb_nil_to_s(VALUE);
-VALUE rb_true_to_s(VALUE);
-VALUE rb_false_to_s(VALUE);
-VALUE rb_int_to_s(int argc, VALUE *argv, VALUE x);
-VALUE rb_fix_to_s(VALUE);
-VALUE rb_mod_to_s(VALUE);
-VALUE rb_mod_name(VALUE);
-static VALUE
-vm_objtostring(const rb_iseq_t *iseq, VALUE recv, CALL_DATA cd)
-{
- int type = ((int)rb_type(recv));
- if (type == RUBY_T_STRING) {
- return recv;
- }
- const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
- switch (type) {
- case RUBY_T_SYMBOL:
- if (check_cfunc(vm_cc_cme(cc), rb_sym_to_s)) {
- return rb_sym2str(recv);
- }
- break;
- case RUBY_T_MODULE:
- case RUBY_T_CLASS:
- if (check_cfunc(vm_cc_cme(cc), rb_mod_to_s)) {
- VALUE val = rb_mod_name(recv);
- if (RB_NIL_P(val)) {
- val = rb_mod_to_s(recv);
- }
- return val;
- }
- break;
- case RUBY_T_NIL:
- if (check_cfunc(vm_cc_cme(cc), rb_nil_to_s)) {
- return rb_nil_to_s(recv);
- }
- break;
- case RUBY_T_TRUE:
- if (check_cfunc(vm_cc_cme(cc), rb_true_to_s)) {
- return rb_true_to_s(recv);
- }
- break;
- case RUBY_T_FALSE:
- if (check_cfunc(vm_cc_cme(cc), rb_false_to_s)) {
- return rb_false_to_s(recv);
- }
- break;
- case RUBY_T_FIXNUM:
- if (check_cfunc(vm_cc_cme(cc), rb_int_to_s)) {
- return rb_fix_to_s(recv);
- }
- break;
- }
- return ((VALUE)RUBY_Qundef);
-}
-static VALUE
-vm_opt_str_freeze(VALUE str, int bop, ID id)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
- return str;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
- if (num == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- VALUE result = *ptr;
- rb_snum_t i = num - 1;
- while (i-- > 0) {
- const VALUE v = *++ptr;
- if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 0))) == 0), 1)))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 2))) == 0), 1)))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 1))) == 0), 1)))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) > 0) {
- result = v;
- }
- }
- return result;
- }
- }
- else {
- return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMax, 0, ((void*)0), 0);
- }
-}static inline
-VALUE
-rb_vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- return vm_opt_newarray_max(ec, num, ptr);
-}
-static VALUE
-vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
- if (num == 0) {
- return ((VALUE)RUBY_Qnil);
- }
- else {
- VALUE result = *ptr;
- rb_snum_t i = num - 1;
- while (i-- > 0) {
- const VALUE v = *++ptr;
- if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 0))) == 0), 1)))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : (((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((v)), (RUBY_T_STRING)) : (RB_TYPE_P)(((v)), (RUBY_T_STRING))) && rb_class_of(v) == rb_cString) && ((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath(((result)), (RUBY_T_STRING)) : (RB_TYPE_P)(((result)), (RUBY_T_STRING))) && rb_class_of(result) == rb_cString) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 2))) == 0), 1)))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_CMP)]&((1 << 1))) == 0), 1)))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) < 0) {
- result = v;
- }
- }
- return result;
- }
- }
- else {
- return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMin, 0, ((void*)0), 0);
- }
-}static inline
-VALUE
-rb_vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
-{
- return vm_opt_newarray_min(ec, num, ptr);
-}
-static void
-vm_track_constant_cache(ID id, void *ic)
-{
- struct rb_id_table *const_cache = rb_current_vm()->constant_cache;
- VALUE lookup_result;
- st_table *ics;
- if (rb_id_table_lookup(const_cache, id, &lookup_result)) {
- ics = (st_table *)lookup_result;
- }
- else {
- ics = rb_st_init_numtable();
- rb_id_table_insert(const_cache, id, (VALUE)ics);
- }
- rb_st_insert(ics, (st_data_t) ic, (st_data_t) ((VALUE)RUBY_Qtrue));
-}
-static void
-vm_ic_track_const_chain(rb_control_frame_t *cfp, IC ic, const ID *segments)
-{
- { unsigned int _lev; rb_vm_lock_enter(&_lev, "./vm_insnhelper.c", 5291);;
- for (int i = 0; segments[i]; i++) {
- ID id = segments[i];
- if (id == idNULL) continue;
- vm_track_constant_cache(id, ic);
- }
- rb_vm_lock_leave(&_lev, "./vm_insnhelper.c", 5299); };
-}
-static inline _Bool
-vm_inlined_ic_hit_p(VALUE flags, VALUE value, const rb_cref_t *ic_cref, const VALUE *reg_ep)
-{
- if ((flags & ((VALUE)RUBY_FL_USER4)) || rb_ractor_main_p()) {
- ((void)0);
- return (ic_cref == ((void*)0) ||
- ic_cref == vm_get_cref(reg_ep));
- }
- return 0;
-}
-static _Bool
-vm_ic_hit_p(const struct iseq_inline_constant_cache_entry *ice, const VALUE *reg_ep)
-{
- ((void)0);
- return vm_inlined_ic_hit_p(ice->flags, ice->value, ice->ic_cref, reg_ep);
-}static inline
-_Bool
-rb_vm_ic_hit_p(IC ic, const VALUE *reg_ep)
-{
- return ic->entry && vm_ic_hit_p(ic->entry, reg_ep);
-}
-COLDFUNC static void
-vm_ic_update(const rb_iseq_t *iseq, IC ic, VALUE val, const VALUE *reg_ep, const VALUE *pc) {
- if (ruby_vm_const_missing_count > 0) {
- ruby_vm_const_missing_count = 0;
- ic->entry = ((void*)0);
- return;
- }
- struct iseq_inline_constant_cache_entry *ice = (struct iseq_inline_constant_cache_entry *)rb_imemo_new(imemo_constcache, 0, 0, 0, 0);
- rb_obj_write((VALUE)(ice), __extension__({
- ;
- ; __typeof__((VALUE *)(&ice->value)) unaligned_member_access_result = ((VALUE *)(&ice->value));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 5339);
- ice->ic_cref = vm_get_const_key_cref(reg_ep);
- if (rb_ractor_shareable_p(val)) ice->flags |= ((VALUE)RUBY_FL_USER4);
- rb_obj_write((VALUE)(iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&ic->entry)) unaligned_member_access_result = ((VALUE *)(&ic->entry));
- ; unaligned_member_access_result; }), (VALUE)(ice), "./vm_insnhelper.c", 5342);
- ((void)0);
- unsigned pos = (unsigned)(pc - ((iseq)->body)->iseq_encoded);
- rb_yjit_constant_ic_update(iseq, ic, pos);
- rb_mjit_constant_ic_update(iseq, ic, pos);
-}
-static VALUE
-vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
-{
- rb_thread_t *th = rb_ec_thread_ptr(ec);
- rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
- again:
- if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
- return is->once.value;
- }
- else if (is->once.running_thread == ((void*)0)) {
- VALUE val;
- is->once.running_thread = th;
- val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
- rb_obj_write((VALUE)(ec->cfp->iseq), __extension__({
- ;
- ; __typeof__((VALUE *)(&is->once.value)) unaligned_member_access_result = ((VALUE *)(&is->once.value));
- ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 5364);
- is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
- return val;
- }
- else if (is->once.running_thread == th) {
- return vm_once_exec((VALUE)iseq);
- }
- else {
- rb_vm_check_ints(ec);
- rb_thread_schedule();
- goto again;
- }
-}
-static OFFSET
-vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
-{
- switch (__extension__({ VALUE arg_obj = (key); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); })) {
- case -1:
- case RUBY_T_FLOAT:
- case RUBY_T_SYMBOL:
- case RUBY_T_BIGNUM:
- case RUBY_T_STRING:
- if (((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
- st_data_t val;
- if (RB_FLOAT_TYPE_P(key)) {
- double kval = rb_float_value_inline(key);
- if (!( sizeof(kval) == sizeof(float) ? __inline_isinff((float)(kval)) : sizeof(kval) == sizeof(double) ? __inline_isinfd((double)(kval)) : __inline_isinfl((long double)(kval))) && modf(kval, &kval) == 0.0) {
- key = (((kval) < (9223372036854775807L / 2) + 1) && ((kval) >= ((-9223372036854775807L -1L) / 2))) ? RB_INT2FIX((long)kval) : rb_dbl2big(kval);
- }
- }
- if (rb_hash_stlike_lookup(hash, key, &val)) {
- return rb_fix2long((VALUE)val);
- }
- else {
- return else_offset;
- }
- }
- }
- return 0;
-}
-__declspec(noreturn) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
-static void
-vm_stack_consistency_error(const rb_execution_context_t *ec,
- const rb_control_frame_t *cfp,
- const VALUE *bp)
-{
- const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
- const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
- static const char stack_consistency_error[] =
- "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
- rb_bug(stack_consistency_error, nsp, nbp);
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_plus(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_plus(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_plus_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- RBASIC_CLASS(obj) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
- return rb_str_opt_plus(recv, obj);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- RBASIC_CLASS(obj) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
- return rb_ary_plus(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_minus(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_minus(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_minus_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_mult(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_mult(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_mul_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_div(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_div(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
- return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
- return rb_flo_div_flo(recv, obj);
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
- return rb_flo_div_flo(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_mod(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_mod(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
- return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
- return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj) {
- if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not_equal)) {
- VALUE val = opt_equality(iseq, recv, obj, cd_eq);
- if (!RB_UNDEF_P(val)) {
- return ((!RB_TEST(val)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- }
- return ((VALUE)RUBY_Qundef);
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_lt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_lt(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv < (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_le(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_le(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv <= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_gt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_gt(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv > (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_ge(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_ge(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
- return (((long)recv >= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (FLONUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
- return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cFloat &&
- RBASIC_CLASS(obj) == rb_cFloat &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
- ;
- return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_ltlt(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_ltlt(VALUE recv, VALUE obj) {
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
- if ((__builtin_expect(!!((__builtin_constant_p(RUBY_T_STRING) ? rbimpl_RB_TYPE_P_fastpath((obj), (RUBY_T_STRING)) : (RB_TYPE_P)((obj), (RUBY_T_STRING)))), 1))) {
- return rb_str_buf_append(recv, obj);
- }
- else {
- return rb_str_concat(recv, obj);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
- return rb_ary_push(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_and(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_and(VALUE recv, VALUE obj) {
- VALUE ret = ((long) recv) & ((long) obj);
- if (RB_FIXNUM_P(ret) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
- return ret;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_or(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_or(VALUE recv, VALUE obj) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
- return recv | obj;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aref(VALUE recv, VALUE obj));
-static inline VALUE
-vm_opt_aref(VALUE recv, VALUE obj) {
- if (RB_SPECIAL_CONST_P(recv)) {
- if (FIXNUM_2_P(recv, obj) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
- return rb_fix_aref(recv, obj);
- }
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
- if (RB_FIXNUM_P(obj)) {
- return rb_ary_entry_internal(recv, rb_fix2long(obj));
- }
- else {
- return rb_ary_aref1(recv, obj);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
- return rb_hash_aref(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aset(VALUE recv, VALUE obj, VALUE set));
-static inline VALUE
-vm_opt_aset(VALUE recv, VALUE obj, VALUE set) {
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
- RB_FIXNUM_P(obj)) {
- rb_ary_store(recv, rb_fix2long(obj), set);
- return set;
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
- rb_hash_aset(recv, obj, set);
- return set;
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aref_with(VALUE recv, VALUE key));
-static inline VALUE
-vm_opt_aref_with(VALUE recv, VALUE key) {
- if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
- rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse) &&
- !RB_FL_TEST(recv, RHASH_PROC_DEFAULT)) {
- return rb_hash_aref(recv, key);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_aset_with(VALUE recv, VALUE key, VALUE val));
-static inline VALUE
-vm_opt_aset_with(VALUE recv, VALUE key, VALUE val) {
- if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
- rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
- return rb_hash_aset(recv, key, val);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_length(VALUE recv, int bop)
-{
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
- if (bop == BOP_EMPTY_P) {
- return rb_long2num_inline(RSTRING_LEN(recv));
- }
- else {
- return rb_str_length(recv);
- }
- }
- else if (RBASIC_CLASS(recv) == rb_cArray &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
- return rb_long2num_inline(rb_array_len(recv));
- }
- else if (RBASIC_CLASS(recv) == rb_cHash &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
- return __builtin_choose_expr( __builtin_constant_p(RHASH_SIZE(recv)), ((VALUE)(RHASH_SIZE(recv))) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(RHASH_SIZE(recv)));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_empty_p(VALUE recv)
-{
- switch (vm_opt_length(recv, BOP_EMPTY_P)) {
- case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
- case __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)): return ((VALUE)RUBY_Qtrue);
- default: return ((VALUE)RUBY_Qfalse);
- }
-}
-VALUE rb_false(VALUE obj);
-static VALUE
-vm_opt_nil_p(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv)
-{
- if (RB_NIL_P(recv) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
- return ((VALUE)RUBY_Qtrue);
- }
- else if (vm_method_cfunc_is(iseq, cd, recv, rb_false)) {
- return ((VALUE)RUBY_Qfalse);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-fix_succ(VALUE x)
-{
- switch (x) {
- case ~0UL:
- return __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
- case ((~0UL)>>(int)(1)):
- return rb_uint2big(1UL << (8 * 8 - 2));
- default:
- return x + 2;
- }
-}
-static VALUE
-vm_opt_succ(VALUE recv)
-{
- if (RB_FIXNUM_P(recv) &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
- return fix_succ(recv);
- }
- else if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
- return rb_str_succ(recv);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-ALWAYS_INLINE(static inline VALUE
-vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv));
-static inline VALUE
-vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv) {
- if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not)) {
- return ((!RB_TEST(recv)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-static VALUE
-vm_opt_regexpmatch2(VALUE recv, VALUE obj)
-{
- if (RB_SPECIAL_CONST_P(recv)) {
- return ((VALUE)RUBY_Qundef);
- }
- else if (RBASIC_CLASS(recv) == rb_cString &&
- rb_class_of(obj) == rb_cRegexp &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
- return rb_reg_match(obj, recv);
- }
- else if (RBASIC_CLASS(recv) == rb_cRegexp &&
- ((__builtin_expect(!!((ruby_vm_redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
- return rb_reg_match(recv, obj);
- }
- else {
- return ((VALUE)RUBY_Qundef);
- }
-}
-rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos);
-__declspec(noinline) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp);
-static inline void
-vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
- rb_event_flag_t pc_events, rb_event_flag_t target_event,
- rb_hook_list_t *global_hooks, rb_hook_list_t *const *local_hooks_ptr, VALUE val)
-{
- rb_event_flag_t event = pc_events & target_event;
- VALUE self = (((((reg_cfp)))->self));
- ((void)0);
- if (event & global_hooks->events) {
- reg_cfp->pc++;
- vm_dtrace(event, ec);
- rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
- reg_cfp->pc--;
- }
- rb_hook_list_t *local_hooks = *local_hooks_ptr;
- if (local_hooks != ((void*)0)) {
- if (event & local_hooks->events) {
- reg_cfp->pc++;
- rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
- reg_cfp->pc--;
- }
- }
-}static inline
-_Bool
-rb_vm_opt_cfunc_p(CALL_CACHE cc, int insn)
-{
- switch (insn) {
- case YARVINSN_opt_eq:
- return check_cfunc(vm_cc_cme(cc), rb_obj_equal);
- case YARVINSN_opt_nil_p:
- return check_cfunc(vm_cc_cme(cc), rb_false);
- case YARVINSN_opt_not:
- return check_cfunc(vm_cc_cme(cc), rb_obj_not);
- default:
- return 0;
- }
-}
-static void
-vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
-{
- const VALUE *pc = reg_cfp->pc;
- rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0020| 0x0040| 0x0100| 0x0200| 0x010000| 0x020000);
- rb_event_flag_t global_events = enabled_flags;
- if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
- return;
- }
- else {
- const rb_iseq_t *iseq = reg_cfp->iseq;
- VALUE iseq_val = (VALUE)iseq;
- size_t pos = pc - ((iseq)->body)->iseq_encoded;
- rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
- rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
- rb_hook_list_t *const *local_hooks_ptr = &iseq->aux.exec.local_hooks;
- rb_event_flag_t iseq_local_events = local_hooks != ((void*)0) ? local_hooks->events : 0;
- rb_hook_list_t *bmethod_local_hooks = ((void*)0);
- rb_hook_list_t **bmethod_local_hooks_ptr = ((void*)0);
- rb_event_flag_t bmethod_local_events = 0;
- const _Bool bmethod_frame = VM_FRAME_BMETHOD_P(reg_cfp);
- enabled_flags |= iseq_local_events;
- ((void)0);
- if (bmethod_frame) {
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
- ((void)0);
- bmethod_local_hooks = me->def->body.bmethod.hooks;
- bmethod_local_hooks_ptr = &me->def->body.bmethod.hooks;
- if (bmethod_local_hooks) {
- bmethod_local_events = bmethod_local_hooks->events;
- }
- }
- if ((pc_events & enabled_flags) == 0 && !bmethod_frame) {
- return;
- }
- else if (ec->trace_arg != ((void*)0)) {
- return;
- }
- else {
- rb_hook_list_t *global_hooks = rb_ec_ractor_hooks(ec);
- rb_event_flag_t bmethod_events = global_events | bmethod_local_events;
- if (0) {
- ruby_debug_printf("vm_trace>>%4d (%4x) - %s:%d %s\n",
- (int)pos,
- (int)pc_events,
- RSTRING_PTR(rb_iseq_path(iseq)),
- (int)rb_iseq_line_no(iseq, pos),
- RSTRING_PTR(rb_iseq_label(iseq)));
- }
- ((void)0);
- ((void)0);
- if ((pc_events & 0x0100) && bmethod_frame && (bmethod_events & 0x0008)) {
- vm_trace_hook(ec, reg_cfp, pc, 0x0008, 0x0008, global_hooks, bmethod_local_hooks_ptr, ((VALUE)RUBY_Qundef));
- }
- do { if ((pc_events & (0x0002 | 0x0008 | 0x0100)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0002 | 0x0008 | 0x0100), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks_ptr, (((VALUE)RUBY_Qundef))); } } while (0);
- do { if ((pc_events & (0x0004 | 0x0010 | 0x0200)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0004 | 0x0010 | 0x0200), global_hooks, local_hooks_ptr, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0);
- if ((pc_events & 0x0200) && bmethod_frame && (bmethod_events & 0x0010)) {
- vm_trace_hook(ec, reg_cfp, pc, 0x0010, 0x0010, global_hooks, bmethod_local_hooks_ptr, (*(((((reg_cfp)->sp)))-(0)-1)));
- }
- (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(iseq_val); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
- }
- }
-}static inline
-void Init_vm_stack_canary(void) { }
-static VALUE
-builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
- return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
-}
-static VALUE
-builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
- return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
-}
-static VALUE
-builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
- return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
-}
-static VALUE
-builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
- return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
-}
-static VALUE
-builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
- return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
-}
-static VALUE
-builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
- return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
-}
-static VALUE
-builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr6_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6);
- return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
-}
-static VALUE
-builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr7_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7);
- return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
-}
-static VALUE
-builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr8_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8);
- return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
-}
-static VALUE
-builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr9_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9);
- return (*(rb_invoke_funcptr9_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
-}
-static VALUE
-builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr10_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10);
- return (*(rb_invoke_funcptr10_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
-}
-static VALUE
-builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr11_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11);
- return (*(rb_invoke_funcptr11_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
-}
-static VALUE
-builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr12_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12);
- return (*(rb_invoke_funcptr12_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
-}
-static VALUE
-builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr13_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13);
- return (*(rb_invoke_funcptr13_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
-}
-static VALUE
-builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr14_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14);
- return (*(rb_invoke_funcptr14_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
-}
-static VALUE
-builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
-{
- typedef VALUE (*rb_invoke_funcptr15_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14, VALUE v15);
- return (*(rb_invoke_funcptr15_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
-}
-typedef VALUE (*builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr);
-static builtin_invoker
-lookup_builtin_invoker(int argc)
-{
- static const builtin_invoker invokers[] = {
- builtin_invoker0,
- builtin_invoker1,
- builtin_invoker2,
- builtin_invoker3,
- builtin_invoker4,
- builtin_invoker5,
- builtin_invoker6,
- builtin_invoker7,
- builtin_invoker8,
- builtin_invoker9,
- builtin_invoker10,
- builtin_invoker11,
- builtin_invoker12,
- builtin_invoker13,
- builtin_invoker14,
- builtin_invoker15,
- };
- return invokers[argc];
-}
-static inline VALUE
-invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const struct rb_builtin_function* bf, const VALUE *argv)
-{
- const _Bool canary_p = ((reg_cfp->iseq)->body)->builtin_inline_p;
- if (canary_p) {} else {};
- VALUE ret = (*lookup_builtin_invoker(bf->argc))(ec, reg_cfp->self, argv, (rb_insn_func_t)bf->func_ptr);
- if (canary_p) {(void)(YARVINSN_invokebuiltin);};
- return ret;
-}
-static VALUE
-vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
-{
- return invoke_bf(ec, cfp, bf, argv);
-}
-static VALUE
-vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
-{
- if (0) {
- fputs("vm_invoke_builtin_delegate: passing -> ", __stderrp);
- for (int i=0; iargc; i++) {
- ruby_debug_printf(":%s ", rb_id2name(((cfp->iseq)->body)->local_table[i+start_index]));
- }
- ruby_debug_printf("\n" "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
- }
- if (bf->argc == 0) {
- return invoke_bf(ec, cfp, bf, ((void*)0));
- }
- else {
- const VALUE *argv = cfp->ep - ((cfp->iseq)->body)->local_table_size - ( 3) + 1 + start_index;
- return invoke_bf(ec, cfp, bf, argv);
- }
-}static inline
-VALUE
-rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
-{
- const rb_control_frame_t *cfp = ec->cfp;
- return cfp->ep[index];
-}
-struct local_var_list {
- VALUE tbl;
-};
-static inline VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
-static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat, const rb_cref_t *cref, int is_lambda);
-static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
-static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
-static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
-VALUE rb_vm_exec(rb_execution_context_t *ec, _Bool jit_enable_p);
-static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
-static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
-static VALUE rb_eUncaughtThrow;
-static ID id_result, id_tag, id_value;
-typedef enum call_type {
- CALL_PUBLIC,
- CALL_FCALL,
- CALL_VCALL,
- CALL_PUBLIC_KW,
- CALL_FCALL_KW,
- CALL_TYPE_MAX
-} call_type;
-static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
-static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, const VALUE *argv);
-static inline void
-stack_check(rb_execution_context_t *ec)
-{
- if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
- rb_ec_stack_check(ec)) {
- ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
- rb_ec_stack_overflow(ec, 0);
- }
-}
-static void
-raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
- enum method_missing_reason last_call_status)
-{
- VALUE exc = rb_eNoMethodError;
- VALUE format = 0;
- if ((__builtin_expect(!!(argc == 0), 0))) {
- rb_raise(rb_eArgError, "no method name given");
- }
- else if ((__builtin_expect(!!(!RB_SYMBOL_P(argv[0])), 0))) {
- const VALUE e = rb_eArgError;
- rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
- rb_obj_class(argv[0]));
- }
- stack_check(ec);
- if (last_call_status & MISSING_PRIVATE) {
- format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
- }
- else if (last_call_status & MISSING_PROTECTED) {
- format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
- }
- else if (last_call_status & MISSING_VCALL) {
- format = rb_fstring_new(("undefined local variable or method `%s' for %s%s%s"), (sizeof("undefined local variable or method `%s' for %s%s%s" "") - 1));
- exc = rb_eNameError;
- }
- else if (last_call_status & MISSING_SUPER) {
- format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
- }
- {
- exc = rb_make_no_method_exception(exc, format, obj, argc, argv,
- last_call_status & (MISSING_FCALL|MISSING_VCALL));
- if (!(last_call_status & MISSING_MISSING)) {
- rb_vm_pop_cfunc_frame();
- }
- rb_exc_raise(exc);
- }
-}
-static void
-vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
- VALUE obj, int call_status)
-{
- vm_passed_block_handler_set(ec, 0);
- raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
-}
-static inline VALUE
-method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
-{
- VALUE *nargv, result, work, klass;
- VALUE block_handler = vm_passed_block_handler(ec);
- const rb_callable_method_entry_t *me;
- ec->method_missing_reason = call_status;
- if (id == idMethodMissing) {
- goto missing;
- }
- nargv = ((VALUE *) (((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca((argc + 1) * sizeof(VALUE))) : rb_alloc_tmp_buffer2(&(work), (argc + 1), sizeof(VALUE))));
- nargv[0] = rb_id2sym(id);
- ruby_nonempty_memcpy((nargv + 1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
- ++argc;
- argv = nargv;
- klass = rb_class_of(obj);
- if (!klass) goto missing;
- me = rb_callable_method_entry(klass, idMethodMissing);
- if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
- vm_passed_block_handler_set(ec, block_handler);
- result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
- if (work) rb_free_tmp_buffer(&(work));
- return result;
- missing:
- raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
- __builtin_unreachable();
-}
-static rb_control_frame_t *
-vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
-{
- if (VM_FRAME_RUBYFRAME_P(cfp)) {
- return (rb_control_frame_t *)cfp;
- }
- cfp = ((cfp)+1);
- while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
- if (VM_FRAME_RUBYFRAME_P(cfp)) {
- return (rb_control_frame_t *)cfp;
- }
- if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
- break;
- }
- cfp = ((cfp)+1);
- }
- return 0;
-}
-static void
-rb_vm_pop_cfunc_frame(void)
-{
- rb_execution_context_t *ec = rb_current_execution_context(1);
- rb_control_frame_t *cfp = ec->cfp;
- const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
- do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0);
- do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
- vm_pop_frame(ec, cfp, cfp->ep);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 5);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 0);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 1);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 2);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 3);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 4);
-}
-static VALUE
-vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
-{
- ((void)0);
- return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 5);
-}
-static const vm_call_handler vm_call_iseq_handlers[][6] = {
- {
- vm_call_iseq_setup_normal_0start_0params_0locals,
- vm_call_iseq_setup_normal_0start_0params_1locals,
- vm_call_iseq_setup_normal_0start_0params_2locals,
- vm_call_iseq_setup_normal_0start_0params_3locals,
- vm_call_iseq_setup_normal_0start_0params_4locals,
- vm_call_iseq_setup_normal_0start_0params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_1params_0locals,
- vm_call_iseq_setup_normal_0start_1params_1locals,
- vm_call_iseq_setup_normal_0start_1params_2locals,
- vm_call_iseq_setup_normal_0start_1params_3locals,
- vm_call_iseq_setup_normal_0start_1params_4locals,
- vm_call_iseq_setup_normal_0start_1params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_2params_0locals,
- vm_call_iseq_setup_normal_0start_2params_1locals,
- vm_call_iseq_setup_normal_0start_2params_2locals,
- vm_call_iseq_setup_normal_0start_2params_3locals,
- vm_call_iseq_setup_normal_0start_2params_4locals,
- vm_call_iseq_setup_normal_0start_2params_5locals,
- },
- {
- vm_call_iseq_setup_normal_0start_3params_0locals,
- vm_call_iseq_setup_normal_0start_3params_1locals,
- vm_call_iseq_setup_normal_0start_3params_2locals,
- vm_call_iseq_setup_normal_0start_3params_3locals,
- vm_call_iseq_setup_normal_0start_3params_4locals,
- vm_call_iseq_setup_normal_0start_3params_5locals,
- },
-};
-static inline vm_call_handler
-vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size)
-{
- if ((__builtin_expect(!!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
- return &vm_call_iseq_setup_tailcall_0start;
- }
- else if (0) {
- return &vm_call_iseq_setup_normal_0start;
- }
- else if (param_size <= 3 && local_size <= 5) {
- ((void)0);
- return vm_call_iseq_handlers[param_size][local_size];
- }
- else {
- return &vm_call_iseq_setup_normal_0start;
- }
-}
-
-#define MJIT_HEADER 1
-#undef _FORTIFY_SOURCE
-#define _FORTIFY_SOURCE 2
-#define RUBY_EXPORT 1
-#define _XOPEN_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _DARWIN_UNLIMITED_SELECT 1
-#define _REENTRANT 1
-#define __GCC_HAVE_DWARF2_CFI_ASM 1
-#define vm_exec rb_vm_exec
-#define RUBY_EVAL_INTERN_H
-#define RUBY_RUBY_H 1
-#define RBIMPL_CONFIG_H
-#define INCLUDE_RUBY_CONFIG_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_WCHAR_H 1
-#define STDC_HEADERS 1
-#define _ALL_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _GNU_SOURCE 1
-#define _HPUX_ALT_XOPEN_SOCKET_API 1
-#define _NETBSD_SOURCE 1
-#define _OPENBSD_SOURCE 1
-#define _POSIX_PTHREAD_SEMANTICS 1
-#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
-#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
-#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
-#define __STDC_WANT_LIB_EXT2__ 1
-#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
-#define _TANDEM_SOURCE 1
-#define __EXTENSIONS__ 1
-#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
-#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
-#define HAVE_STMT_AND_DECL_IN_EXPR 1
-#define HAVE_PTHREAD_H 1
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-#define HAVE_LIBPTHREAD 1
-#define THREAD_IMPL_H "thread_pthread.h"
-#define THREAD_IMPL_SRC "thread_pthread.c"
-#define BROKEN_CRYPT 1
-#define HAVE_CRT_EXTERNS_H 1
-#define HAVE_LIBDL 1
-#define HAVE_DIRENT_H 1
-#define HAVE__BOOL 1
-#define HAVE_STDBOOL_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_COPYFILE_H 1
-#define HAVE_GRP_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LANGINFO_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_LOCALE_H 1
-#define HAVE_MALLOC_MALLOC_H 1
-#define HAVE_PWD_H 1
-#define HAVE_SANITIZER_ASAN_INTERFACE_H 1
-#define HAVE_SANITIZER_MSAN_INTERFACE_H 1
-#define HAVE_STDALIGN_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_SYS_ATTR_H 1
-#define HAVE_SYS_FCNTL_H 1
-#define HAVE_SYS_FILE_H 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_RANDOM_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_UIO_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UCONTEXT_H 1
-#define HAVE_UTIME_H 1
-#define HAVE_X86INTRIN_H 1
-#define HAVE_X86INTRIN_H 1
-#define HAVE_TYPEOF 1
-#define restrict __restrict__
-#define HAVE_LONG_LONG 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF___INT64 0
-#define SIZEOF___INT128 16
-#define SIZEOF_OFF_T 8
-#define SIZEOF_VOIDP 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_CLOCK_T 8
-#define PACKED_STRUCT(x) x __attribute__((packed))
-#define USE_UNALIGNED_MEMBER_ACCESS 1
-#define PRI_LL_PREFIX "ll"
-#define HAVE_PID_T 1
-#define rb_pid_t pid_t
-#define SIGNEDNESS_OF_PID_T -1
-#define PIDT2NUM(v) INT2NUM(v)
-#define NUM2PIDT(v) NUM2INT(v)
-#define PRI_PIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_UID_T 1
-#define rb_uid_t uid_t
-#define SIGNEDNESS_OF_UID_T +1
-#define UIDT2NUM(v) UINT2NUM(v)
-#define NUM2UIDT(v) NUM2UINT(v)
-#define PRI_UIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_GID_T 1
-#define rb_gid_t gid_t
-#define SIGNEDNESS_OF_GID_T +1
-#define GIDT2NUM(v) UINT2NUM(v)
-#define NUM2GIDT(v) NUM2UINT(v)
-#define PRI_GIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_TIME_T 1
-#define rb_time_t time_t
-#define SIGNEDNESS_OF_TIME_T -1
-#define TIMET2NUM(v) LONG2NUM(v)
-#define NUM2TIMET(v) NUM2LONG(v)
-#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
-#define HAVE_DEV_T 1
-#define rb_dev_t dev_t
-#define SIGNEDNESS_OF_DEV_T -1
-#define DEVT2NUM(v) INT2NUM(v)
-#define NUM2DEVT(v) NUM2INT(v)
-#define PRI_DEVT_PREFIX PRI_INT_PREFIX
-#define HAVE_MODE_T 1
-#define rb_mode_t mode_t
-#define SIGNEDNESS_OF_MODE_T +1
-#define MODET2NUM(v) USHORT2NUM(v)
-#define NUM2MODET(v) NUM2USHORT(v)
-#define PRI_MODET_PREFIX PRI_SHORT_PREFIX
-#define HAVE_RLIM_T 1
-#define rb_rlim_t rlim_t
-#define SIGNEDNESS_OF_RLIM_T +1
-#define RLIM2NUM(v) ULL2NUM(v)
-#define NUM2RLIM(v) NUM2ULL(v)
-#define PRI_RLIM_PREFIX PRI_LL_PREFIX
-#define HAVE_OFF_T 1
-#define rb_off_t off_t
-#define SIGNEDNESS_OF_OFF_T -1
-#define OFFT2NUM(v) LL2NUM(v)
-#define NUM2OFFT(v) NUM2LL(v)
-#define PRI_OFFT_PREFIX PRI_LL_PREFIX
-#define HAVE_CLOCKID_T 1
-#define rb_clockid_t clockid_t
-#define SIGNEDNESS_OF_CLOCKID_T +1
-#define CLOCKID2NUM(v) UINT2NUM(v)
-#define NUM2CLOCKID(v) NUM2UINT(v)
-#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
-#define HAVE_VA_ARGS_MACRO 1
-#define HAVE__ALIGNOF 1
-#define CONSTFUNC(x) __attribute__ ((__const__)) x
-#define PUREFUNC(x) __attribute__ ((__pure__)) x
-#define NORETURN(x) __attribute__ ((__noreturn__)) x
-#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
-#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
-#define NOINLINE(x) __attribute__ ((__noinline__)) x
-#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
-#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
-#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
-#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
-#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
-#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
-#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
-#define WEAK(x) __attribute__ ((__weak__)) x
-#define HAVE_FUNC_WEAK 1
-#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
-#define HAVE_NULLPTR 1
-#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
-#define HAVE_GCC_ATOMIC_BUILTINS 1
-#define HAVE_GCC_SYNC_BUILTINS 1
-#define HAVE___BUILTIN_UNREACHABLE 1
-#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
-#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
-#define RUBY_FUNCTION_NAME_STRING __func__
-#define ENUM_OVER_INT 1
-#define HAVE_DECL_SYS_NERR 1
-#define HAVE_DECL_GETENV 1
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_PTRDIFF_T 8
-#define SIZEOF_DEV_T 4
-#define PRI_SIZE_PREFIX "z"
-#define PRI_PTRDIFF_PREFIX "t"
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
-#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T
-#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T
-#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
-#define HAVE_STRUCT_TIMESPEC 1
-#define HAVE_STRUCT_TIMEZONE 1
-#define HAVE_RB_FD_INIT 1
-#define HAVE_INT8_T 1
-#define SIZEOF_INT8_T 1
-#define HAVE_UINT8_T 1
-#define SIZEOF_UINT8_T 1
-#define HAVE_INT16_T 1
-#define SIZEOF_INT16_T 2
-#define HAVE_UINT16_T 1
-#define SIZEOF_UINT16_T 2
-#define HAVE_INT32_T 1
-#define SIZEOF_INT32_T 4
-#define HAVE_UINT32_T 1
-#define SIZEOF_UINT32_T 4
-#define HAVE_INT64_T 1
-#define SIZEOF_INT64_T 8
-#define HAVE_UINT64_T 1
-#define SIZEOF_UINT64_T 8
-#define HAVE_INT128_T 1
-#define int128_t __int128
-#define SIZEOF_INT128_T SIZEOF___INT128
-#define HAVE_UINT128_T 1
-#define uint128_t unsigned __int128
-#define SIZEOF_UINT128_T SIZEOF___INT128
-#define HAVE_INTPTR_T 1
-#define SIZEOF_INTPTR_T 8
-#define HAVE_UINTPTR_T 1
-#define SIZEOF_UINTPTR_T 8
-#define PRI_PTR_PREFIX "l"
-#define HAVE_SSIZE_T 1
-#define SIZEOF_SSIZE_T 8
-#define PRI_64_PREFIX "ll"
-#define GETGROUPS_T gid_t
-#define HAVE_ALLOCA_H 1
-#define HAVE_ALLOCA 1
-#define HAVE_DUP 1
-#define HAVE_DUP2 1
-#define HAVE_ACOSH 1
-#define HAVE_CBRT 1
-#define HAVE_CRYPT 1
-#define HAVE_ERF 1
-#define HAVE_FFS 1
-#define HAVE_FLOCK 1
-#define HAVE_HYPOT 1
-#define HAVE_LGAMMA_R 1
-#define HAVE_MEMMOVE 1
-#define HAVE_NAN 1
-#define HAVE_NEXTAFTER 1
-#define HAVE_STRCHR 1
-#define HAVE_STRERROR 1
-#define HAVE_STRLCAT 1
-#define HAVE_STRLCPY 1
-#define HAVE_STRSTR 1
-#define HAVE_TGAMMA 1
-#define HAVE_ISFINITE 1
-#define SPT_TYPE SPT_REUSEARGV
-#define HAVE_SIGNBIT 1
-#define HAVE_FORK 1
-#define vfork fork
-#define HAVE_WORKING_FORK 1
-#define HAVE__LONGJMP 1
-#define HAVE_ARC4RANDOM_BUF 1
-#define HAVE_ATAN2L 1
-#define HAVE_ATAN2F 1
-#define HAVE_CHMOD 1
-#define HAVE_CHOWN 1
-#define HAVE_CHROOT 1
-#define HAVE_CLOCK_GETTIME 1
-#define HAVE_COSH 1
-#define HAVE_DIRFD 1
-#define HAVE_DLOPEN 1
-#define HAVE_DLADDR 1
-#define HAVE_ENDGRENT 1
-#define HAVE_EXECL 1
-#define HAVE_EXECLE 1
-#define HAVE_EXECV 1
-#define HAVE_EXECVE 1
-#define HAVE_FCOPYFILE 1
-#define HAVE_FCHMOD 1
-#define HAVE_FCHOWN 1
-#define HAVE_FCNTL 1
-#define HAVE_FDOPENDIR 1
-#define HAVE_FGETATTRLIST 1
-#define HAVE_FMOD 1
-#define HAVE_FSTATAT 1
-#define HAVE_FSYNC 1
-#define HAVE_FTRUNCATE 1
-#define HAVE_GETATTRLIST 1
-#define HAVE_GETCWD 1
-#define HAVE_GETEGID 1
-#define HAVE_GETENTROPY 1
-#define HAVE_GETEUID 1
-#define HAVE_GETGID 1
-#define HAVE_GETGRNAM 1
-#define HAVE_GETGRNAM_R 1
-#define HAVE_GETGROUPS 1
-#define HAVE_GETLOGIN 1
-#define HAVE_GETLOGIN_R 1
-#define HAVE_GETPGID 1
-#define HAVE_GETPGRP 1
-#define HAVE_GETPPID 1
-#define HAVE_GETPRIORITY 1
-#define HAVE_GETPWNAM 1
-#define HAVE_GETPWNAM_R 1
-#define HAVE_GETPWUID 1
-#define HAVE_GETPWUID_R 1
-#define HAVE_GETRLIMIT 1
-#define HAVE_GETSID 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETUID 1
-#define HAVE_GMTIME_R 1
-#define HAVE_GRANTPT 1
-#define HAVE_INITGROUPS 1
-#define HAVE_IOCTL 1
-#define HAVE_ISSETUGID 1
-#define HAVE_KILL 1
-#define HAVE_KILLPG 1
-#define HAVE_LCHMOD 1
-#define HAVE_LCHOWN 1
-#define HAVE_LINK 1
-#define HAVE_LLABS 1
-#define HAVE_LOCKF 1
-#define HAVE_LOG2 1
-#define HAVE_LSTAT 1
-#define HAVE_LUTIMES 1
-#define HAVE_MALLOC_SIZE 1
-#define HAVE_MBLEN 1
-#define HAVE_MEMSET_S 1
-#define HAVE_WRITEV 1
-#define HAVE_MEMMEM 1
-#define HAVE_MKFIFO 1
-#define HAVE_MKNOD 1
-#define HAVE_MKTIME 1
-#define HAVE_MMAP 1
-#define HAVE_OPENAT 1
-#define HAVE_PCLOSE 1
-#define HAVE_PIPE 1
-#define HAVE_POLL 1
-#define HAVE_POPEN 1
-#define HAVE_POSIX_MADVISE 1
-#define HAVE_POSIX_MEMALIGN 1
-#define HAVE_PREAD 1
-#define HAVE_PWRITE 1
-#define HAVE_QSORT_R 1
-#define HAVE_READLINK 1
-#define HAVE_REALPATH 1
-#define HAVE_ROUND 1
-#define HAVE_SEEKDIR 1
-#define HAVE_SENDFILE 1
-#define HAVE_SETEGID 1
-#define HAVE_SETENV 1
-#define HAVE_SETEUID 1
-#define HAVE_SETGID 1
-#define HAVE_SETGROUPS 1
-#define HAVE_SETPGID 1
-#define HAVE_SETPGRP 1
-#define HAVE_SETREGID 1
-#define HAVE_SETREUID 1
-#define HAVE_SETRGID 1
-#define HAVE_SETRLIMIT 1
-#define HAVE_SETRUID 1
-#define HAVE_SETSID 1
-#define HAVE_SETUID 1
-#define HAVE_SHUTDOWN 1
-#define HAVE_SIGACTION 1
-#define HAVE_SIGALTSTACK 1
-#define HAVE_SIGPROCMASK 1
-#define HAVE_SINH 1
-#define HAVE_SYMLINK 1
-#define HAVE_SYSCONF 1
-#define HAVE_SYSTEM 1
-#define HAVE_TANH 1
-#define HAVE_TELLDIR 1
-#define HAVE_TIMEGM 1
-#define HAVE_TIMES 1
-#define HAVE_TRUNCATE 1
-#define HAVE_TZSET 1
-#define HAVE_UMASK 1
-#define HAVE_UNSETENV 1
-#define HAVE_UTIMENSAT 1
-#define HAVE_UTIMES 1
-#define HAVE_WAIT4 1
-#define HAVE_WAITPID 1
-#define HAVE___COSPI 1
-#define HAVE___SINPI 1
-#define __STDC_WANT_LIB_EXT1__ 1
-#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
-#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
-#define HAVE_BUILTIN___BUILTIN_CLZ 1
-#define HAVE_BUILTIN___BUILTIN_CLZL 1
-#define HAVE_BUILTIN___BUILTIN_CLZLL 1
-#define HAVE_BUILTIN___BUILTIN_CTZ 1
-#define HAVE_BUILTIN___BUILTIN_CTZLL 1
-#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
-#define HAVE_BUILTIN___BUILTIN_TRAP 1
-#define HAVE_BUILTIN___BUILTIN_EXPECT 1
-#define HAVE_BSD_QSORT_R 1
-#define ATAN2_INF_C99 1
-#define HAVE_CLOCK_GETRES 1
-#define HAVE_STRUCT_TM_TM_ZONE 1
-#define HAVE_TM_ZONE 1
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-#define HAVE_DAYLIGHT 1
-#define NEGATIVE_TIME_T 1
-#define POSIX_SIGNAL 1
-#define HAVE_SIG_T 1
-#define RSHIFT(x,y) ((x)>>(int)(y))
-#define HAVE__SC_CLK_TCK 1
-#define STACK_GROW_DIRECTION -1
-#define COROUTINE_H "coroutine/amd64/Context.h"
-#define HAVE_SCHED_YIELD 1
-#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
-#define HAVE_PTHREAD_ATTR_GETSTACK 1
-#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
-#define HAVE_PTHREAD_GET_STACKADDR_NP 1
-#define HAVE_PTHREAD_GET_STACKSIZE_NP 1
-#define HAVE_PTHREAD_SETNAME_NP 1
-#define HAVE_PTHREAD_SIGMASK 1
-#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(name)
-#define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t mc = (uc)->uc_mcontext
-#define HAVE_SYS_USER_H 1
-#define HAVE_CONST_PAGE_SIZE 1
-#define IOCTL_REQ_TYPE unsigned long
-#define NUM2IOCTLREQ(num) NUM2ULONG(num)
-#define HAVE_MACH_O_LOADER_H 1
-#define EXTSTATIC 1
-#define HAVE_LIBPROC_H 1
-#define HAVE_EXECINFO_H 1
-#define HAVE_LIBUNWIND_H 1
-#define HAVE_MACH_TASK_H 1
-#define HAVE_MACH_MACH_INIT_H 1
-#define HAVE_MACH_MACH_PORT_H 1
-#define HAVE_MACH_TASK_EXCEPTION_PORTS 1
-#define HAVE_BACKTRACE 1
-#define BROKEN_BACKTRACE 1
-#define DLEXT_MAXLEN 7
-#define DLEXT ".bundle"
-#define LIBDIR_BASENAME "lib"
-#define HAVE__SETJMP 1
-#define HAVE_SIGSETJMP 1
-#define RUBY_SETJMP(env) sigsetjmp((env),0)
-#define RUBY_LONGJMP(env,val) siglongjmp((env),val)
-#define RUBY_JMP_BUF sigjmp_buf
-#define USE_MJIT 1
-#define USE_YJIT 0
-#define LOAD_RELATIVE 1
-#define RUBY_PLATFORM "x86_64-darwin21"
-#define RBIMPL_COMPILER_SINCE_H
-#define RBIMPL_COMPILER_IS_H
-#define RBIMPL_COMPILER_IS(cc) RBIMPL_COMPILER_IS_ ## cc
-#define RBIMPL_COMPILER_IS_APPLE_H
-#define RBIMPL_COMPILER_IS_Apple 1
-#define RBIMPL_COMPILER_VERSION_MAJOR __clang_major__
-#define RBIMPL_COMPILER_VERSION_MINOR __clang_minor__
-#define RBIMPL_COMPILER_VERSION_PATCH __clang_patchlevel__
-#define RBIMPL_COMPILER_IS_CLANG_H
-#define RBIMPL_COMPILER_IS_Clang 0
-#define RBIMPL_COMPILER_IS_GCC_H
-#define RBIMPL_COMPILER_IS_INTEL_H
-#define RBIMPL_COMPILER_IS_Intel 0
-#define RBIMPL_COMPILER_IS_GCC 0
-#define RBIMPL_COMPILER_IS_MSVC_H
-#define RBIMPL_COMPILER_IS_MSVC 0
-#define RBIMPL_COMPILER_IS_SUNPRO_H
-#define RBIMPL_COMPILER_IS_SunPro 0
-#define RBIMPL_COMPILER_SINCE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR > (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR > (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH >= (z)))))))
-#define RBIMPL_COMPILER_BEFORE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR < (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR < (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH < (z)))))))
-#undef HAVE_PROTOTYPES
-#define HAVE_PROTOTYPES 1
-#undef HAVE_STDARG_PROTOTYPES
-#define HAVE_STDARG_PROTOTYPES 1
-#undef TOKEN_PASTE
-#define TOKEN_PASTE(x,y) x##y
-#define STRINGIZE(expr) STRINGIZE0(expr)
-#define STRINGIZE0(expr) #expr
-#define UNALIGNED_WORD_ACCESS 1
-#define RBIMPL_TEST3(q,w,e,...) e
-#define RBIMPL_TEST2(...) RBIMPL_TEST3(__VA_OPT__(,),1,0,0)
-#define RBIMPL_TEST1() RBIMPL_TEST2("ruby")
-#define HAVE___VA_OPT__
-#undef RBIMPL_TEST1
-#undef RBIMPL_TEST2
-#undef RBIMPL_TEST3
-#define USE_RVARGC 1
-#define __STDARG_H
-#define _VA_LIST
-#define va_start(ap,param) __builtin_va_start(ap, param)
-#define va_end(ap) __builtin_va_end(ap)
-#define va_arg(ap,type) __builtin_va_arg(ap, type)
-#define __va_copy(d,s) __builtin_va_copy(d,s)
-#define va_copy(dest,src) __builtin_va_copy(dest, src)
-#define __GNUC_VA_LIST 1
-#define RUBY_DEFINES_H 1
-#define _STDIO_H_
-#define __STDIO_H_
-#define _CDEFS_H_
-#define __BEGIN_DECLS
-#define __END_DECLS
-#define __P(protos) protos
-#define __CONCAT(x,y) x ## y
-#define __STRING(x) #x
-#define __const const
-#define __signed signed
-#define __volatile volatile
-#define __dead2 __attribute__((__noreturn__))
-#define __pure2 __attribute__((__const__))
-#define __stateful_pure __attribute__((__pure__))
-#define __unused __attribute__((__unused__))
-#define __used __attribute__((__used__))
-#define __cold __attribute__((__cold__))
-#define __returns_nonnull __attribute((returns_nonnull))
-#define __exported __attribute__((__visibility__("default")))
-#define __exported_push _Pragma("GCC visibility push(default)")
-#define __exported_pop _Pragma("GCC visibility pop")
-#define __deprecated __attribute__((__deprecated__))
-#define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
-#define __deprecated_enum_msg(_msg) __deprecated_msg(_msg)
-#define __kpi_deprecated(_msg)
-#define __unavailable __attribute__((__unavailable__))
-#define __kpi_unavailable
-#define __kpi_deprecated_arm64_macos_unavailable
-#define __dead
-#define __pure
-#define __restrict restrict
-#define __disable_tail_calls __attribute__((__disable_tail_calls__))
-#define __not_tail_called __attribute__((__not_tail_called__))
-#define __result_use_check __attribute__((__warn_unused_result__))
-#define __swift_unavailable(_msg) __attribute__((__availability__(swift, unavailable, message=_msg)))
-#define __abortlike __dead2 __cold __not_tail_called
-#define __header_inline inline
-#define __header_always_inline __header_inline __attribute__ ((__always_inline__))
-#define __unreachable_ok_push _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wunreachable-code\"")
-#define __unreachable_ok_pop _Pragma("clang diagnostic pop")
-#define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
-#define __printf0like(fmtarg,firstvararg) __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
-#define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
-#define __osloglike(fmtarg,firstvararg) __attribute__((__format__ (__os_log__, fmtarg, firstvararg)))
-#define __IDSTRING(name,string) static const char name[] __used = string
-#define __COPYRIGHT(s) __IDSTRING(copyright,s)
-#define __RCSID(s) __IDSTRING(rcsid,s)
-#define __SCCSID(s) __IDSTRING(sccsid,s)
-#define __PROJECT_VERSION(s) __IDSTRING(project_version,s)
-#define __FBSDID(s)
-#define __DECONST(type,var) __CAST_AWAY_QUALIFIER(var, const, type)
-#define __DEVOLATILE(type,var) __CAST_AWAY_QUALIFIER(var, volatile, type)
-#define __DEQUALIFY(type,var) __CAST_AWAY_QUALIFIER(var, const volatile, type)
-#define __alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
-#define __DARWIN_ONLY_64_BIT_INO_T 0
-#define __DARWIN_ONLY_UNIX_CONFORMANCE 1
-#define __DARWIN_ONLY_VERS_1050 0
-#define __DARWIN_UNIX03 1
-#define __DARWIN_64_BIT_INO_T 1
-#define __DARWIN_VERS_1050 1
-#define __DARWIN_NON_CANCELABLE 0
-#define __DARWIN_SUF_UNIX03
-#define __DARWIN_SUF_64_BIT_INO_T "$INODE64"
-#define __DARWIN_SUF_1050 "$1050"
-#define __DARWIN_SUF_NON_CANCELABLE
-#define __DARWIN_SUF_EXTSN "$DARWIN_EXTSN"
-#define __DARWIN_ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_UNIX03)
-#define __DARWIN_ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
-#define __DARWIN_ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
-#define __DARWIN_NOCANCEL(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE)
-#define __DARWIN_INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T)
-#define __DARWIN_1050(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050)
-#define __DARWIN_1050ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
-#define __DARWIN_1050INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T)
-#define __DARWIN_EXTSN(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN)
-#define __DARWIN_EXTSN_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN __DARWIN_SUF_NON_CANCELABLE)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_5(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_6(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_7(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_5(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_2(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_3(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_15_4(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_0(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_1(x)
-#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_2(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_0(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_5(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_6(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_7(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_8(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_9(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_3(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_2(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_1(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_4(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_5(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_6(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15(x) x
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_4(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_16(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_3(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_1(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_2(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_12_3(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_0(x)
-#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_1(x)
-#define __DARWIN_ALIAS_STARTING(_mac,_iphone,x) __DARWIN_ALIAS_STARTING_MAC_##_mac(x)
-#define ___POSIX_C_DEPRECATED_STARTING_198808L
-#define ___POSIX_C_DEPRECATED_STARTING_199009L
-#define ___POSIX_C_DEPRECATED_STARTING_199209L
-#define ___POSIX_C_DEPRECATED_STARTING_199309L
-#define ___POSIX_C_DEPRECATED_STARTING_199506L
-#define ___POSIX_C_DEPRECATED_STARTING_200112L
-#define ___POSIX_C_DEPRECATED_STARTING_200809L
-#define __POSIX_C_DEPRECATED(ver) ___POSIX_C_DEPRECATED_STARTING_##ver
-#define __DARWIN_C_ANSI 010000L
-#define __DARWIN_C_FULL 900000L
-#define __DARWIN_C_LEVEL __DARWIN_C_FULL
-#define __DARWIN_NO_LONG_LONG 0
-#define _DARWIN_FEATURE_64_BIT_INODE 1
-#define _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE 1
-#define _DARWIN_FEATURE_UNIX_CONFORMANCE 3
-#define __CAST_AWAY_QUALIFIER(variable,qualifier,type) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") _Pragma("GCC diagnostic ignored \"-Wcast-align\"") _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") ((type)(variable)) _Pragma("GCC diagnostic pop")
-#define __XNU_PRIVATE_EXTERN __attribute__((visibility("hidden")))
-#define __has_ptrcheck 0
-#define __single
-#define __unsafe_indexable
-#define __counted_by(N)
-#define __sized_by(N)
-#define __ended_by(E)
-#define __terminated_by(T)
-#define __null_terminated
-#define __ptrcheck_abi_assume_single()
-#define __ptrcheck_abi_assume_unsafe_indexable()
-#define __unsafe_forge_bidi_indexable(T,P,S) ((T)(P))
-#define __unsafe_forge_single(T,P) ((T)(P))
-#define __terminated_by_to_indexable(P) (P)
-#define __unsafe_terminated_by_to_indexable(P) (P)
-#define __null_terminated_to_indexable(P) (P)
-#define __unsafe_null_terminated_to_indexable(P) (P)
-#define __unsafe_terminated_by_from_indexable(T,P,...) (P)
-#define __unsafe_null_terminated_from_indexable(P,...) (P)
-#define __array_decay_dicards_count_in_parameters
-#define __unsafe_late_const
-#define __ASSUME_PTR_ABI_SINGLE_BEGIN __ptrcheck_abi_assume_single()
-#define __ASSUME_PTR_ABI_SINGLE_END __ptrcheck_abi_assume_unsafe_indexable()
-#define __header_indexable
-#define __header_bidi_indexable
-#define __compiler_barrier() __asm__ __volatile__("" ::: "memory")
-#define __enum_open __attribute__((__enum_extensibility__(open)))
-#define __enum_closed __attribute__((__enum_extensibility__(closed)))
-#define __enum_options __attribute__((__flag_enum__))
-#define __enum_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_open _name
-#define __enum_closed_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_closed _name
-#define __options_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_open __enum_options _name
-#define __options_closed_decl(_name,_type,...) typedef enum : _type __VA_ARGS__ __enum_closed __enum_options _name
-#define __kernel_ptr_semantics
-#define __kernel_data_semantics
-#define __kernel_dual_semantics
-#define __AVAILABILITY__
-#define __API_TO_BE_DEPRECATED 100000
-#define __API_TO_BE_DEPRECATED_MACOS 100000
-#define __API_TO_BE_DEPRECATED_IOS 100000
-#define __API_TO_BE_DEPRECATED_TVOS 100000
-#define __API_TO_BE_DEPRECATED_WATCHOS 100000
-#define __API_TO_BE_DEPRECATED_MACCATALYST 100000
-#define __API_TO_BE_DEPRECATED_DRIVERKIT 100000
-#define __AVAILABILITY_VERSIONS__
-#define __MAC_10_0 1000
-#define __MAC_10_1 1010
-#define __MAC_10_2 1020
-#define __MAC_10_3 1030
-#define __MAC_10_4 1040
-#define __MAC_10_5 1050
-#define __MAC_10_6 1060
-#define __MAC_10_7 1070
-#define __MAC_10_8 1080
-#define __MAC_10_9 1090
-#define __MAC_10_10 101000
-#define __MAC_10_10_2 101002
-#define __MAC_10_10_3 101003
-#define __MAC_10_11 101100
-#define __MAC_10_11_2 101102
-#define __MAC_10_11_3 101103
-#define __MAC_10_11_4 101104
-#define __MAC_10_12 101200
-#define __MAC_10_12_1 101201
-#define __MAC_10_12_2 101202
-#define __MAC_10_12_4 101204
-#define __MAC_10_13 101300
-#define __MAC_10_13_1 101301
-#define __MAC_10_13_2 101302
-#define __MAC_10_13_4 101304
-#define __MAC_10_14 101400
-#define __MAC_10_14_1 101401
-#define __MAC_10_14_4 101404
-#define __MAC_10_14_6 101406
-#define __MAC_10_15 101500
-#define __MAC_10_15_1 101501
-#define __MAC_10_15_4 101504
-#define __MAC_10_16 101600
-#define __MAC_11_0 110000
-#define __MAC_11_1 110100
-#define __MAC_11_3 110300
-#define __MAC_11_4 110400
-#define __MAC_11_5 110500
-#define __MAC_11_6 110600
-#define __MAC_12_0 120000
-#define __MAC_12_1 120100
-#define __MAC_12_2 120200
-#define __MAC_12_3 120300
-#define __MAC_13_0 130000
-#define __MAC_13_1 130100
-#define __IPHONE_2_0 20000
-#define __IPHONE_2_1 20100
-#define __IPHONE_2_2 20200
-#define __IPHONE_3_0 30000
-#define __IPHONE_3_1 30100
-#define __IPHONE_3_2 30200
-#define __IPHONE_4_0 40000
-#define __IPHONE_4_1 40100
-#define __IPHONE_4_2 40200
-#define __IPHONE_4_3 40300
-#define __IPHONE_5_0 50000
-#define __IPHONE_5_1 50100
-#define __IPHONE_6_0 60000
-#define __IPHONE_6_1 60100
-#define __IPHONE_7_0 70000
-#define __IPHONE_7_1 70100
-#define __IPHONE_8_0 80000
-#define __IPHONE_8_1 80100
-#define __IPHONE_8_2 80200
-#define __IPHONE_8_3 80300
-#define __IPHONE_8_4 80400
-#define __IPHONE_9_0 90000
-#define __IPHONE_9_1 90100
-#define __IPHONE_9_2 90200
-#define __IPHONE_9_3 90300
-#define __IPHONE_10_0 100000
-#define __IPHONE_10_1 100100
-#define __IPHONE_10_2 100200
-#define __IPHONE_10_3 100300
-#define __IPHONE_11_0 110000
-#define __IPHONE_11_1 110100
-#define __IPHONE_11_2 110200
-#define __IPHONE_11_3 110300
-#define __IPHONE_11_4 110400
-#define __IPHONE_12_0 120000
-#define __IPHONE_12_1 120100
-#define __IPHONE_12_2 120200
-#define __IPHONE_12_3 120300
-#define __IPHONE_12_4 120400
-#define __IPHONE_13_0 130000
-#define __IPHONE_13_1 130100
-#define __IPHONE_13_2 130200
-#define __IPHONE_13_3 130300
-#define __IPHONE_13_4 130400
-#define __IPHONE_13_5 130500
-#define __IPHONE_13_6 130600
-#define __IPHONE_13_7 130700
-#define __IPHONE_14_0 140000
-#define __IPHONE_14_1 140100
-#define __IPHONE_14_2 140200
-#define __IPHONE_14_3 140300
-#define __IPHONE_14_5 140500
-#define __IPHONE_14_6 140600
-#define __IPHONE_14_7 140700
-#define __IPHONE_14_8 140800
-#define __IPHONE_15_0 150000
-#define __IPHONE_15_1 150100
-#define __IPHONE_15_2 150200
-#define __IPHONE_15_3 150300
-#define __IPHONE_15_4 150400
-#define __IPHONE_16_0 160000
-#define __IPHONE_16_1 160100
-#define __IPHONE_16_2 160200
-#define __TVOS_9_0 90000
-#define __TVOS_9_1 90100
-#define __TVOS_9_2 90200
-#define __TVOS_10_0 100000
-#define __TVOS_10_0_1 100001
-#define __TVOS_10_1 100100
-#define __TVOS_10_2 100200
-#define __TVOS_11_0 110000
-#define __TVOS_11_1 110100
-#define __TVOS_11_2 110200
-#define __TVOS_11_3 110300
-#define __TVOS_11_4 110400
-#define __TVOS_12_0 120000
-#define __TVOS_12_1 120100
-#define __TVOS_12_2 120200
-#define __TVOS_12_3 120300
-#define __TVOS_12_4 120400
-#define __TVOS_13_0 130000
-#define __TVOS_13_2 130200
-#define __TVOS_13_3 130300
-#define __TVOS_13_4 130400
-#define __TVOS_14_0 140000
-#define __TVOS_14_1 140100
-#define __TVOS_14_2 140200
-#define __TVOS_14_3 140300
-#define __TVOS_14_5 140500
-#define __TVOS_14_6 140600
-#define __TVOS_14_7 140700
-#define __TVOS_15_0 150000
-#define __TVOS_15_1 150100
-#define __TVOS_15_2 150200
-#define __TVOS_15_3 150300
-#define __TVOS_15_4 150400
-#define __TVOS_16_0 160000
-#define __TVOS_16_1 160100
-#define __TVOS_16_2 160200
-#define __WATCHOS_1_0 10000
-#define __WATCHOS_2_0 20000
-#define __WATCHOS_2_1 20100
-#define __WATCHOS_2_2 20200
-#define __WATCHOS_3_0 30000
-#define __WATCHOS_3_1 30100
-#define __WATCHOS_3_1_1 30101
-#define __WATCHOS_3_2 30200
-#define __WATCHOS_4_0 40000
-#define __WATCHOS_4_1 40100
-#define __WATCHOS_4_2 40200
-#define __WATCHOS_4_3 40300
-#define __WATCHOS_5_0 50000
-#define __WATCHOS_5_1 50100
-#define __WATCHOS_5_2 50200
-#define __WATCHOS_5_3 50300
-#define __WATCHOS_6_0 60000
-#define __WATCHOS_6_1 60100
-#define __WATCHOS_6_2 60200
-#define __WATCHOS_7_0 70000
-#define __WATCHOS_7_1 70100
-#define __WATCHOS_7_2 70200
-#define __WATCHOS_7_3 70300
-#define __WATCHOS_7_4 70400
-#define __WATCHOS_7_5 70500
-#define __WATCHOS_7_6 70600
-#define __WATCHOS_8_0 80000
-#define __WATCHOS_8_1 80100
-#define __WATCHOS_8_3 80300
-#define __WATCHOS_8_4 80400
-#define __WATCHOS_8_5 80500
-#define __WATCHOS_9_0 90000
-#define __WATCHOS_9_1 90100
-#define __WATCHOS_9_2 90200
-#define MAC_OS_X_VERSION_10_0 1000
-#define MAC_OS_X_VERSION_10_1 1010
-#define MAC_OS_X_VERSION_10_2 1020
-#define MAC_OS_X_VERSION_10_3 1030
-#define MAC_OS_X_VERSION_10_4 1040
-#define MAC_OS_X_VERSION_10_5 1050
-#define MAC_OS_X_VERSION_10_6 1060
-#define MAC_OS_X_VERSION_10_7 1070
-#define MAC_OS_X_VERSION_10_8 1080
-#define MAC_OS_X_VERSION_10_9 1090
-#define MAC_OS_X_VERSION_10_10 101000
-#define MAC_OS_X_VERSION_10_10_2 101002
-#define MAC_OS_X_VERSION_10_10_3 101003
-#define MAC_OS_X_VERSION_10_11 101100
-#define MAC_OS_X_VERSION_10_11_2 101102
-#define MAC_OS_X_VERSION_10_11_3 101103
-#define MAC_OS_X_VERSION_10_11_4 101104
-#define MAC_OS_X_VERSION_10_12 101200
-#define MAC_OS_X_VERSION_10_12_1 101201
-#define MAC_OS_X_VERSION_10_12_2 101202
-#define MAC_OS_X_VERSION_10_12_4 101204
-#define MAC_OS_X_VERSION_10_13 101300
-#define MAC_OS_X_VERSION_10_13_1 101301
-#define MAC_OS_X_VERSION_10_13_2 101302
-#define MAC_OS_X_VERSION_10_13_4 101304
-#define MAC_OS_X_VERSION_10_14 101400
-#define MAC_OS_X_VERSION_10_14_1 101401
-#define MAC_OS_X_VERSION_10_14_4 101404
-#define MAC_OS_X_VERSION_10_14_6 101406
-#define MAC_OS_X_VERSION_10_15 101500
-#define MAC_OS_X_VERSION_10_15_1 101501
-#define MAC_OS_X_VERSION_10_16 101600
-#define MAC_OS_VERSION_11_0 110000
-#define MAC_OS_VERSION_12_0 120000
-#define MAC_OS_VERSION_13_0 130000
-#define __DRIVERKIT_19_0 190000
-#define __DRIVERKIT_20_0 200000
-#define __DRIVERKIT_21_0 210000
-#define __AVAILABILITY_INTERNAL__
-#define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
-#define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_13_1
-#define __AVAILABILITY_INTERNAL_DEPRECATED __attribute__((deprecated))
-#define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated(_msg)))
-#define __AVAILABILITY_INTERNAL_UNAVAILABLE __attribute__((unavailable))
-#define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import))
-#define __AVAILABILITY_INTERNAL_REGULAR
-#define __ENABLE_LEGACY_MAC_AVAILABILITY 1
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.1,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.1,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.1,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.1,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.1,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2 __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.2,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.2,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.2,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.2,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.2,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.2,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3 __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.3,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.3,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.3,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.3,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.3,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.3,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4 __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.4,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.4,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.4,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.4,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.4,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5 __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEPRECATED__MAC_10_7 __attribute__((availability(macosx,introduced=10.5.DEPRECATED..MAC.10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.5,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.5,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.5,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.5,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6 __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.6,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.6,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.6,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.6,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.6,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7 __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_13_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.13.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.7,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.7,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8 __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.8,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.8,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.8,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9 __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.9,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.9,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.9,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0 __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0 __attribute__((availability(macosx,introduced=10.0,deprecated=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.0,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.0,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.0,deprecated=10.5)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.0,deprecated=10.6)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.6,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.0,deprecated=10.7)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.7,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.0,deprecated=10.8)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.8,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.0,deprecated=10.9)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.9,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.0)))
-#define __AVAILABILITY_INTERNAL__MAC_10_1 __attribute__((availability(macosx,introduced=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10 __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11 __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12 __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.13,message=_msg)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.12,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12)))
-#define __AVAILABILITY_INTERNAL__MAC_10_13 __attribute__((availability(macosx,introduced=10.13)))
-#define __AVAILABILITY_INTERNAL__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.13.4)))
-#define __AVAILABILITY_INTERNAL__MAC_10_14 __attribute__((availability(macosx,introduced=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_14_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.14,deprecated=10.14)))
-#define __AVAILABILITY_INTERNAL__MAC_10_15 __attribute__((availability(macosx,introduced=10.15)))
-#define __AVAILABILITY_INTERNAL__MAC_NA __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
-#define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,unavailable)))
-#define __API_AVAILABLE_PLATFORM_macos(x) macos,introduced=x
-#define __API_AVAILABLE_PLATFORM_macosx(x) macosx,introduced=x
-#define __API_AVAILABLE_PLATFORM_ios(x) ios,introduced=x
-#define __API_AVAILABLE_PLATFORM_watchos(x) watchos,introduced=x
-#define __API_AVAILABLE_PLATFORM_tvos(x) tvos,introduced=x
-#define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
-#define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
-#define __API_AVAILABLE_PLATFORM_uikitformac(x) uikitformac,introduced=x
-#define __API_AVAILABLE_PLATFORM_driverkit(x) driverkit,introduced=x
-#define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))
-#define __API_AVAILABLE1(x) __API_A(x)
-#define __API_AVAILABLE2(x,y) __API_A(x) __API_A(y)
-#define __API_AVAILABLE3(x,y,z) __API_A(x) __API_A(y) __API_A(z)
-#define __API_AVAILABLE4(x,y,z,t) __API_A(x) __API_A(y) __API_A(z) __API_A(t)
-#define __API_AVAILABLE5(x,y,z,t,b) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b)
-#define __API_AVAILABLE6(x,y,z,t,b,m) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m)
-#define __API_AVAILABLE7(x,y,z,t,b,m,d) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m) __API_A(d)
-#define __API_AVAILABLE8(x,y,z,t,b,m,d,l) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m) __API_A(d) __API_A(l)
-#define __API_AVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_APPLY_TO any(record, enum, enum_constant, function, objc_method, objc_category, objc_protocol, objc_interface, objc_property, type_alias, variable, field)
-#define __API_RANGE_STRINGIFY(x) __API_RANGE_STRINGIFY2(x)
-#define __API_RANGE_STRINGIFY2(x) #x
-#define __API_A_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_AVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
-#define __API_AVAILABLE_BEGIN1(a) __API_A_BEGIN(a)
-#define __API_AVAILABLE_BEGIN2(a,b) __API_A_BEGIN(a) __API_A_BEGIN(b)
-#define __API_AVAILABLE_BEGIN3(a,b,c) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c)
-#define __API_AVAILABLE_BEGIN4(a,b,c,d) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d)
-#define __API_AVAILABLE_BEGIN5(a,b,c,d,e) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e)
-#define __API_AVAILABLE_BEGIN6(a,b,c,d,e,f) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f)
-#define __API_AVAILABLE_BEGIN7(a,b,c,d,e,f,g) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f) __API_A_BEGIN(g)
-#define __API_AVAILABLE_BEGIN8(a,b,c,d,e,f,g,h) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f) __API_A_BEGIN(g) __API_A_BEGIN(h)
-#define __API_AVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_DEPRECATED_PLATFORM_macos(x,y) macos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macosx(x,y) macosx,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_ios(x,y) ios,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_watchos(x,y) watchos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_tvos(x,y) tvos,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_uikitformac(x) uikitformac,introduced=x,deprecated=y
-#define __API_DEPRECATED_PLATFORM_driverkit(x,y) driverkit,introduced=x,deprecated=y
-#define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))
-#define __API_DEPRECATED_MSG2(msg,x) __API_D(msg,x)
-#define __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,x) __API_D(msg,y)
-#define __API_DEPRECATED_MSG4(msg,x,y,z) __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,z)
-#define __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_DEPRECATED_MSG4(msg,x,y,z) __API_D(msg,t)
-#define __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_D(msg,b)
-#define __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_D(msg,m)
-#define __API_DEPRECATED_MSG8(msg,x,y,z,t,b,m,d) __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_D(msg,d)
-#define __API_DEPRECATED_MSG9(msg,x,y,z,t,b,m,d,l) __API_DEPRECATED_MSG8(msg,x,y,z,t,b,m,d) __API_D(msg,l)
-#define __API_DEPRECATED_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_D_BEGIN(msg,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO)))
-#define __API_DEPRECATED_BEGIN_MSG2(msg,a) __API_D_BEGIN(msg,a)
-#define __API_DEPRECATED_BEGIN_MSG3(msg,a,b) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b)
-#define __API_DEPRECATED_BEGIN_MSG4(msg,a,b,c) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c)
-#define __API_DEPRECATED_BEGIN_MSG5(msg,a,b,c,d) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d)
-#define __API_DEPRECATED_BEGIN_MSG6(msg,a,b,c,d,e) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e)
-#define __API_DEPRECATED_BEGIN_MSG7(msg,a,b,c,d,e,f) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f)
-#define __API_DEPRECATED_BEGIN_MSG8(msg,a,b,c,d,e,f,g) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f) __API_D_BEGIN(msg,g)
-#define __API_DEPRECATED_BEGIN_MSG9(msg,a,b,c,d,e,f,g,h) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f) __API_D_BEGIN(msg,g) __API_D_BEGIN(msg,h)
-#define __API_DEPRECATED_BEGIN_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep)))
-#define __API_DEPRECATED_REP2(rep,x) __API_R(rep,x)
-#define __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,x) __API_R(rep,y)
-#define __API_DEPRECATED_REP4(rep,x,y,z) __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,z)
-#define __API_DEPRECATED_REP5(rep,x,y,z,t) __API_DEPRECATED_REP4(rep,x,y,z) __API_R(rep,t)
-#define __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_DEPRECATED_REP5(rep,x,y,z,t) __API_R(rep,b)
-#define __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_R(rep,m)
-#define __API_DEPRECATED_REP8(rep,x,y,z,t,b,m,d) __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_R(rep,d)
-#define __API_DEPRECATED_REP9(rep,x,y,z,t,b,m,d,l) __API_DEPRECATED_REP8(rep,x,y,z,t,b,m,d) __API_R(rep,l)
-#define __API_DEPRECATED_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO)))
-#define __API_DEPRECATED_BEGIN_REP2(rep,a) __API_R_BEGIN(rep,a)
-#define __API_DEPRECATED_BEGIN_REP3(rep,a,b) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b)
-#define __API_DEPRECATED_BEGIN_REP4(rep,a,b,c) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c)
-#define __API_DEPRECATED_BEGIN_REP5(rep,a,b,c,d) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d)
-#define __API_DEPRECATED_BEGIN_REP6(rep,a,b,c,d,e) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e)
-#define __API_DEPRECATED_BEGIN_REP7(rep,a,b,c,d,e,f) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f)
-#define __API_DEPRECATED_BEGIN_REP8(rep,a,b,c,d,e,f,g) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f) __API_R_BEGIN(rep,g)
-#define __API_DEPRECATED_BEGIN_REP9(rep,a,b,c,d,e,f,g,h) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f) __API_R_BEGIN(rep,g) __API_R_BEGIN(rep,h)
-#define __API_DEPRECATED_BEGIN_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
-#define __API_UNAVAILABLE_PLATFORM_macos macos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macosx macosx,unavailable
-#define __API_UNAVAILABLE_PLATFORM_ios ios,unavailable
-#define __API_UNAVAILABLE_PLATFORM_watchos watchos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_tvos tvos,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
-#define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
-#define __API_UNAVAILABLE_PLATFORM_uikitformac(x) uikitformac,unavailable
-#define __API_UNAVAILABLE_PLATFORM_driverkit driverkit,unavailable
-#define __API_U(x) __attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x)))
-#define __API_UNAVAILABLE1(x) __API_U(x)
-#define __API_UNAVAILABLE2(x,y) __API_U(x) __API_U(y)
-#define __API_UNAVAILABLE3(x,y,z) __API_UNAVAILABLE2(x,y) __API_U(z)
-#define __API_UNAVAILABLE4(x,y,z,t) __API_UNAVAILABLE3(x,y,z) __API_U(t)
-#define __API_UNAVAILABLE5(x,y,z,t,b) __API_UNAVAILABLE4(x,y,z,t) __API_U(b)
-#define __API_UNAVAILABLE6(x,y,z,t,b,m) __API_UNAVAILABLE5(x,y,z,t,b) __API_U(m)
-#define __API_UNAVAILABLE7(x,y,z,t,b,m,d) __API_UNAVAILABLE6(x,y,z,t,b,m) __API_U(d)
-#define __API_UNAVAILABLE8(x,y,z,t,b,m,d,l) __API_UNAVAILABLE7(x,y,z,t,b,m,d) __API_U(l)
-#define __API_UNAVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __API_U_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
-#define __API_UNAVAILABLE_BEGIN1(a) __API_U_BEGIN(a)
-#define __API_UNAVAILABLE_BEGIN2(a,b) __API_U_BEGIN(a) __API_U_BEGIN(b)
-#define __API_UNAVAILABLE_BEGIN3(a,b,c) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c)
-#define __API_UNAVAILABLE_BEGIN4(a,b,c,d) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d)
-#define __API_UNAVAILABLE_BEGIN5(a,b,c,d,e) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e)
-#define __API_UNAVAILABLE_BEGIN6(a,b,c,d,e,f) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f)
-#define __API_UNAVAILABLE_BEGIN7(a,b,c,d,e,f,g) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f) __API_U_BEGIN(g)
-#define __API_UNAVAILABLE_BEGIN8(a,b,c,d,e,f,g,h) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f) __API_U_BEGIN(g) __API_U_BEGIN(h)
-#define __API_UNAVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
-#define __swift_compiler_version_at_least(...) 1
-#define __SPI_AVAILABLE(...)
-#define __OSX_AVAILABLE_STARTING(_osx,_ios) __AVAILABILITY_INTERNAL##_osx
-#define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro,_osxDep,_iosIntro,_iosDep) __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep
-#define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro,_osxDep,_iosIntro,_iosDep,_msg) __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep##_MSG(_msg)
-#define __OS_AVAILABILITY(_target,_availability) __attribute__((availability(_target,_availability)))
-#define __OS_AVAILABILITY_MSG(_target,_availability,_msg) __attribute__((availability(_target,_availability,message=_msg)))
-#define __OSX_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(macosx_app_extension,unavailable,_msg)
-#define __IOS_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(ios_app_extension,unavailable,_msg)
-#define __OS_EXTENSION_UNAVAILABLE(_msg) __OSX_EXTENSION_UNAVAILABLE(_msg) __IOS_EXTENSION_UNAVAILABLE(_msg)
-#define __OSX_UNAVAILABLE __OS_AVAILABILITY(macosx,unavailable)
-#define __OSX_AVAILABLE(_vers) __OS_AVAILABILITY(macosx,introduced=_vers)
-#define __OSX_DEPRECATED(_start,_dep,_msg) __OSX_AVAILABLE(_start) __OS_AVAILABILITY_MSG(macosx,deprecated=_dep,_msg)
-#define __IOS_UNAVAILABLE __OS_AVAILABILITY(ios,unavailable)
-#define __IOS_PROHIBITED __OS_AVAILABILITY(ios,unavailable)
-#define __IOS_AVAILABLE(_vers) __OS_AVAILABILITY(ios,introduced=_vers)
-#define __IOS_DEPRECATED(_start,_dep,_msg) __IOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(ios,deprecated=_dep,_msg)
-#define __TVOS_UNAVAILABLE __OS_AVAILABILITY(tvos,unavailable)
-#define __TVOS_PROHIBITED __OS_AVAILABILITY(tvos,unavailable)
-#define __TVOS_AVAILABLE(_vers) __OS_AVAILABILITY(tvos,introduced=_vers)
-#define __TVOS_DEPRECATED(_start,_dep,_msg) __TVOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(tvos,deprecated=_dep,_msg)
-#define __WATCHOS_UNAVAILABLE __OS_AVAILABILITY(watchos,unavailable)
-#define __WATCHOS_PROHIBITED __OS_AVAILABILITY(watchos,unavailable)
-#define __WATCHOS_AVAILABLE(_vers) __OS_AVAILABILITY(watchos,introduced=_vers)
-#define __WATCHOS_DEPRECATED(_start,_dep,_msg) __WATCHOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(watchos,deprecated=_dep,_msg)
-#define __SWIFT_UNAVAILABLE __OS_AVAILABILITY(swift,unavailable)
-#define __SWIFT_UNAVAILABLE_MSG(_msg) __OS_AVAILABILITY_MSG(swift,unavailable,_msg)
-#define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE8, __API_AVAILABLE7, __API_AVAILABLE6, __API_AVAILABLE5, __API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1, 0)(__VA_ARGS__)
-#define __API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_AVAILABLE_BEGIN8, __API_AVAILABLE_BEGIN7, __API_AVAILABLE_BEGIN6, __API_AVAILABLE_BEGIN5, __API_AVAILABLE_BEGIN4, __API_AVAILABLE_BEGIN3, __API_AVAILABLE_BEGIN2, __API_AVAILABLE_BEGIN1, 0)(__VA_ARGS__)
-#define __API_AVAILABLE_END _Pragma("clang attribute pop")
-#define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG9, __API_DEPRECATED_MSG8,__API_DEPRECATED_MSG7,__API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP9,__API_DEPRECATED_REP8,__API_DEPRECATED_REP7,__API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_MSG9, __API_DEPRECATED_BEGIN_MSG8,__API_DEPRECATED_BEGIN_MSG7, __API_DEPRECATED_BEGIN_MSG6, __API_DEPRECATED_BEGIN_MSG5, __API_DEPRECATED_BEGIN_MSG4, __API_DEPRECATED_BEGIN_MSG3, __API_DEPRECATED_BEGIN_MSG2, __API_DEPRECATED_BEGIN_MSG1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_END _Pragma("clang attribute pop")
-#define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_REP9, __API_DEPRECATED_BEGIN_REP8,__API_DEPRECATED_BEGIN_REP7, __API_DEPRECATED_BEGIN_REP6, __API_DEPRECATED_BEGIN_REP5, __API_DEPRECATED_BEGIN_REP4, __API_DEPRECATED_BEGIN_REP3, __API_DEPRECATED_BEGIN_REP2, __API_DEPRECATED_BEGIN_REP1, 0)(__VA_ARGS__)
-#define __API_DEPRECATED_WITH_REPLACEMENT_END _Pragma("clang attribute pop")
-#define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE8,__API_UNAVAILABLE7,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1, 0)(__VA_ARGS__)
-#define __API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE_BEGIN8,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6, __API_UNAVAILABLE_BEGIN5, __API_UNAVAILABLE_BEGIN4, __API_UNAVAILABLE_BEGIN3, __API_UNAVAILABLE_BEGIN2, __API_UNAVAILABLE_BEGIN1, 0)(__VA_ARGS__)
-#define __API_UNAVAILABLE_END _Pragma("clang attribute pop")
-#define __SPI_DEPRECATED(...)
-#define __SPI_DEPRECATED_WITH_REPLACEMENT(...)
-#define __TYPES_H_
-#define _SYS__TYPES_H_
-#define _BSD_MACHINE__TYPES_H_
-#define _BSD_I386__TYPES_H_
-#define __DARWIN_NULL ((void *)0)
-#define _SYS__PTHREAD_TYPES_H_
-#define __PTHREAD_SIZE__ 8176
-#define __PTHREAD_ATTR_SIZE__ 56
-#define __PTHREAD_MUTEXATTR_SIZE__ 8
-#define __PTHREAD_MUTEX_SIZE__ 56
-#define __PTHREAD_CONDATTR_SIZE__ 8
-#define __PTHREAD_COND_SIZE__ 40
-#define __PTHREAD_ONCE_SIZE__ 8
-#define __PTHREAD_RWLOCK_SIZE__ 192
-#define __PTHREAD_RWLOCKATTR_SIZE__ 16
-#define __offsetof(type,field) __builtin_offsetof(type, field)
-#define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
-#define __strftimelike(fmtarg) __attribute__((__format__ (__strftime__, fmtarg, 0)))
-#define __DARWIN_WCHAR_MAX __WCHAR_MAX__
-#define __DARWIN_WCHAR_MIN (-0x7fffffff - 1)
-#define __DARWIN_WEOF ((__darwin_wint_t)-1)
-#define _VA_LIST_T
-#define _BSD_MACHINE_TYPES_H_
-#define _I386_MACHTYPES_H_
-#define _MACHTYPES_H_
-#define _INT8_T
-#define _INT16_T
-#define _INT32_T
-#define _INT64_T
-#define _U_INT8_T
-#define _U_INT16_T
-#define _U_INT32_T
-#define _U_INT64_T
-#define _INTPTR_T
-#define _UINTPTR_T
-#define USER_ADDR_NULL ((user_addr_t) 0)
-#define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr)))
-#define _SIZE_T
-#define NULL __DARWIN_NULL
-#define _SYS_STDIO_H_
-#define RENAME_SECLUDE 0x00000001
-#define RENAME_SWAP 0x00000002
-#define RENAME_EXCL 0x00000004
-#define RENAME_RESERVED1 0x00000008
-#define RENAME_NOFOLLOW_ANY 0x00000010
-#define _FSTDIO
-#define __SLBF 0x0001
-#define __SNBF 0x0002
-#define __SRD 0x0004
-#define __SWR 0x0008
-#define __SRW 0x0010
-#define __SEOF 0x0020
-#define __SERR 0x0040
-#define __SMBF 0x0080
-#define __SAPP 0x0100
-#define __SSTR 0x0200
-#define __SOPT 0x0400
-#define __SNPT 0x0800
-#define __SOFF 0x1000
-#define __SMOD 0x2000
-#define __SALC 0x4000
-#define __SIGN 0x8000
-#define _IOFBF 0
-#define _IOLBF 1
-#define _IONBF 2
-#define BUFSIZ 1024
-#define EOF (-1)
-#define FOPEN_MAX 20
-#define FILENAME_MAX 1024
-#define P_tmpdir "/var/tmp/"
-#define L_tmpnam 1024
-#define TMP_MAX 308915776
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#define stdin __stdinp
-#define stdout __stdoutp
-#define stderr __stderrp
-#define L_ctermid 1024
-#define _CTERMID_H_
-#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
-#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
-#define __sferror(p) (((p)->_flags & __SERR) != 0)
-#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
-#define __sfileno(p) ((p)->_file)
-#define getc_unlocked(fp) __sgetc(fp)
-#define putc_unlocked(x,fp) __sputc(x, fp)
-#define getchar_unlocked() getc_unlocked(stdin)
-#define putchar_unlocked(x) putc_unlocked(x, stdout)
-#define _OFF_T
-#define _SSIZE_T
-#define fropen(cookie,fn) funopen(cookie, fn, 0, 0, 0)
-#define fwopen(cookie,fn) funopen(cookie, 0, fn, 0, 0)
-#define feof_unlocked(p) __sfeof(p)
-#define ferror_unlocked(p) __sferror(p)
-#define clearerr_unlocked(p) __sclearerr(p)
-#define fileno_unlocked(p) __sfileno(p)
-#define _SECURE__STDIO_H_
-#define _SECURE__COMMON_H_
-#undef _USE_FORTIFY_LEVEL
-#define _USE_FORTIFY_LEVEL 2
-#define __darwin_obsz0(object) __builtin_object_size (object, 0)
-#define __darwin_obsz(object) __builtin_object_size (object, _USE_FORTIFY_LEVEL > 1 ? 1 : 0)
-#undef sprintf
-#define sprintf(str,...) __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
-#undef snprintf
-#define snprintf(str,len,...) __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
-#undef vsprintf
-#define vsprintf(str,format,ap) __builtin___vsprintf_chk (str, 0, __darwin_obsz(str), format, ap)
-#undef vsnprintf
-#define vsnprintf(str,len,format,ap) __builtin___vsnprintf_chk (str, len, 0, __darwin_obsz(str), format, ap)
-#define _SYS_TYPES_H_
-#define __SYS_APPLEAPIOPTS_H__
-#define __APPLE_API_STANDARD
-#define __APPLE_API_STABLE
-#define __APPLE_API_EVOLVING
-#define __APPLE_API_UNSTABLE
-#define __APPLE_API_PRIVATE
-#define __APPLE_API_OBSOLETE
-#define _BSD_MACHINE_ENDIAN_H_
-#define _I386__ENDIAN_H_
-#define _QUAD_HIGHWORD 1
-#define _QUAD_LOWWORD 0
-#define __DARWIN_LITTLE_ENDIAN 1234
-#define __DARWIN_BIG_ENDIAN 4321
-#define __DARWIN_PDP_ENDIAN 3412
-#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN
-#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
-#define BIG_ENDIAN __DARWIN_BIG_ENDIAN
-#define PDP_ENDIAN __DARWIN_PDP_ENDIAN
-#define BYTE_ORDER __DARWIN_BYTE_ORDER
-#define _SYS__ENDIAN_H_
-#define _OS__OSBYTEORDER_H
-#define __DARWIN_OSSwapConstInt16(x) ((__uint16_t)((((__uint16_t)(x) & 0xff00U) >> 8) | (((__uint16_t)(x) & 0x00ffU) << 8)))
-#define __DARWIN_OSSwapConstInt32(x) ((__uint32_t)((((__uint32_t)(x) & 0xff000000U) >> 24) | (((__uint32_t)(x) & 0x00ff0000U) >> 8) | (((__uint32_t)(x) & 0x0000ff00U) << 8) | (((__uint32_t)(x) & 0x000000ffU) << 24)))
-#define __DARWIN_OSSwapConstInt64(x) ((__uint64_t)((((__uint64_t)(x) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(x) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(x) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(x) & 0x00000000000000ffULL) << 56)))
-#define __DARWIN_OS_INLINE static inline
-#define _OS__OSBYTEORDERI386_H
-#define __DARWIN_OSSwapInt16(x) ((__uint16_t)(__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt16(x) : _OSSwapInt16(x)))
-#define __DARWIN_OSSwapInt32(x) (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt32(x) : _OSSwapInt32(x))
-#define __DARWIN_OSSwapInt64(x) (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x))
-#define ntohs(x) __DARWIN_OSSwapInt16(x)
-#define htons(x) __DARWIN_OSSwapInt16(x)
-#define ntohl(x) __DARWIN_OSSwapInt32(x)
-#define htonl(x) __DARWIN_OSSwapInt32(x)
-#define ntohll(x) __DARWIN_OSSwapInt64(x)
-#define htonll(x) __DARWIN_OSSwapInt64(x)
-#define NTOHL(x) (x) = ntohl((__uint32_t)x)
-#define NTOHS(x) (x) = ntohs((__uint16_t)x)
-#define NTOHLL(x) (x) = ntohll((__uint64_t)x)
-#define HTONL(x) (x) = htonl((__uint32_t)x)
-#define HTONS(x) (x) = htons((__uint16_t)x)
-#define HTONLL(x) (x) = htonll((__uint64_t)x)
-#define _U_CHAR
-#define _U_SHORT
-#define _U_INT
-#define _U_LONG
-#define _CADDR_T
-#define _DEV_T
-#define _BLKCNT_T
-#define _BLKSIZE_T
-#define _GID_T
-#define _IN_ADDR_T
-#define _IN_PORT_T
-#define _INO_T
-#define _INO64_T
-#define _KEY_T
-#define _MODE_T
-#define _NLINK_T
-#define _ID_T
-#define _PID_T
-#define _UID_T
-#define major(x) ((int32_t)(((u_int32_t)(x) >> 24) & 0xff))
-#define minor(x) ((int32_t)((x) & 0xffffff))
-#define makedev(x,y) ((dev_t)(((x) << 24) | (y)))
-#define _CLOCK_T
-#define _TIME_T
-#define _USECONDS_T
-#define _SUSECONDS_T
-#define _RSIZE_T
-#define _ERRNO_T
-#define _FD_SET
-#define __DARWIN_FD_SETSIZE 1024
-#define __DARWIN_NBBY 8
-#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY)
-#define __DARWIN_howmany(x,y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1))
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunguarded-availability-new"
-#pragma clang diagnostic pop
-#define __DARWIN_FD_SET(n,p) __darwin_fd_set((n), (p))
-#define __DARWIN_FD_CLR(n,p) __darwin_fd_clr((n), (p))
-#define __DARWIN_FD_ISSET(n,p) __darwin_fd_isset((n), (p))
-#define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
-#define __DARWIN_FD_COPY(f,t) bcopy(f, t, sizeof(*(f)))
-#define NBBY __DARWIN_NBBY
-#define NFDBITS __DARWIN_NFDBITS
-#define howmany(x,y) __DARWIN_howmany(x, y)
-#define FD_SETSIZE __DARWIN_FD_SETSIZE
-#define FD_SET(n,p) __DARWIN_FD_SET(n, p)
-#define FD_CLR(n,p) __DARWIN_FD_CLR(n, p)
-#define FD_ZERO(p) __DARWIN_FD_ZERO(p)
-#define FD_ISSET(n,p) __DARWIN_FD_ISSET(n, p)
-#define FD_COPY(f,t) __DARWIN_FD_COPY(f, t)
-#define _PTHREAD_ATTR_T
-#define _PTHREAD_COND_T
-#define _PTHREAD_CONDATTR_T
-#define _PTHREAD_MUTEX_T
-#define _PTHREAD_MUTEXATTR_T
-#define _PTHREAD_ONCE_T
-#define _PTHREAD_RWLOCK_T
-#define _PTHREAD_RWLOCKATTR_T
-#define _PTHREAD_T
-#define _PTHREAD_KEY_T
-#define _FSBLKCNT_T
-#define _FSFILCNT_T
-#define _SYS_STAT_H_
-#define _STRUCT_TIMESPEC struct timespec
-#define __DARWIN_STRUCT_STAT64_TIMES struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec;
-#define __DARWIN_STRUCT_STAT64 { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; __DARWIN_STRUCT_STAT64_TIMES off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; }
-#define st_atime st_atimespec.tv_sec
-#define st_mtime st_mtimespec.tv_sec
-#define st_ctime st_ctimespec.tv_sec
-#define st_birthtime st_birthtimespec.tv_sec
-#define S_IFMT 0170000
-#define S_IFIFO 0010000
-#define S_IFCHR 0020000
-#define S_IFDIR 0040000
-#define S_IFBLK 0060000
-#define S_IFREG 0100000
-#define S_IFLNK 0120000
-#define S_IFSOCK 0140000
-#define S_IFWHT 0160000
-#define S_IRWXU 0000700
-#define S_IRUSR 0000400
-#define S_IWUSR 0000200
-#define S_IXUSR 0000100
-#define S_IRWXG 0000070
-#define S_IRGRP 0000040
-#define S_IWGRP 0000020
-#define S_IXGRP 0000010
-#define S_IRWXO 0000007
-#define S_IROTH 0000004
-#define S_IWOTH 0000002
-#define S_IXOTH 0000001
-#define S_ISUID 0004000
-#define S_ISGID 0002000
-#define S_ISVTX 0001000
-#define S_ISTXT S_ISVTX
-#define S_IREAD S_IRUSR
-#define S_IWRITE S_IWUSR
-#define S_IEXEC S_IXUSR
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-#define S_ISWHT(m) (((m) & S_IFMT) == S_IFWHT)
-#define S_TYPEISMQ(buf) (0)
-#define S_TYPEISSEM(buf) (0)
-#define S_TYPEISSHM(buf) (0)
-#define S_TYPEISTMO(buf) (0)
-#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
-#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
-#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
-#define S_BLKSIZE 512
-#define UF_SETTABLE 0x0000ffff
-#define UF_NODUMP 0x00000001
-#define UF_IMMUTABLE 0x00000002
-#define UF_APPEND 0x00000004
-#define UF_OPAQUE 0x00000008
-#define UF_COMPRESSED 0x00000020
-#define UF_TRACKED 0x00000040
-#define UF_DATAVAULT 0x00000080
-#define UF_HIDDEN 0x00008000
-#define SF_SUPPORTED 0x009f0000
-#define SF_SETTABLE 0x3fff0000
-#define SF_SYNTHETIC 0xc0000000
-#define SF_ARCHIVED 0x00010000
-#define SF_IMMUTABLE 0x00020000
-#define SF_APPEND 0x00040000
-#define SF_RESTRICTED 0x00080000
-#define SF_NOUNLINK 0x00100000
-#define SF_FIRMLINK 0x00800000
-#define SF_DATALESS 0x40000000
-#define EF_MAY_SHARE_BLOCKS 0x00000001
-#define EF_NO_XATTRS 0x00000002
-#define EF_IS_SYNC_ROOT 0x00000004
-#define EF_IS_PURGEABLE 0x00000008
-#define EF_IS_SPARSE 0x00000010
-#define EF_IS_SYNTHETIC 0x00000020
-#define UTIME_NOW -1
-#define UTIME_OMIT -2
-#define _FILESEC_T
-#define _STDLIB_H_
-#define _SYS_WAIT_H_
-#define _SYS_SIGNAL_H_
-#define __DARWIN_NSIG 32
-#define NSIG __DARWIN_NSIG
-#define _BSD_MACHINE_SIGNAL_H_
-#define _I386_SIGNAL_H_ 1
-#define SIGHUP 1
-#define SIGINT 2
-#define SIGQUIT 3
-#define SIGILL 4
-#define SIGTRAP 5
-#define SIGABRT 6
-#define SIGIOT SIGABRT
-#define SIGEMT 7
-#define SIGFPE 8
-#define SIGKILL 9
-#define SIGBUS 10
-#define SIGSEGV 11
-#define SIGSYS 12
-#define SIGPIPE 13
-#define SIGALRM 14
-#define SIGTERM 15
-#define SIGURG 16
-#define SIGSTOP 17
-#define SIGTSTP 18
-#define SIGCONT 19
-#define SIGCHLD 20
-#define SIGTTIN 21
-#define SIGTTOU 22
-#define SIGIO 23
-#define SIGXCPU 24
-#define SIGXFSZ 25
-#define SIGVTALRM 26
-#define SIGPROF 27
-#define SIGWINCH 28
-#define SIGINFO 29
-#define SIGUSR1 30
-#define SIGUSR2 31
-#define SIG_DFL (void (*)(int))0
-#define SIG_IGN (void (*)(int))1
-#define SIG_HOLD (void (*)(int))5
-#define SIG_ERR ((void (*)(int))-1)
-#define _BSD_MACHINE__MCONTEXT_H_
-#define __I386_MCONTEXT_H_
-#define _MACH_MACHINE__STRUCTS_H_
-#define _MACH_I386__STRUCTS_H_
-#define _STRUCT_X86_THREAD_STATE32 struct __darwin_i386_thread_state
-#define _STRUCT_FP_CONTROL struct __darwin_fp_control
-#define FP_PREC_24B 0
-#define FP_PREC_53B 2
-#define FP_PREC_64B 3
-#define FP_RND_NEAR 0
-#define FP_RND_DOWN 1
-#define FP_RND_UP 2
-#define FP_CHOP 3
-#define _STRUCT_FP_STATUS struct __darwin_fp_status
-#define _STRUCT_MMST_REG struct __darwin_mmst_reg
-#define _STRUCT_XMM_REG struct __darwin_xmm_reg
-#define _STRUCT_YMM_REG struct __darwin_ymm_reg
-#define _STRUCT_ZMM_REG struct __darwin_zmm_reg
-#define _STRUCT_OPMASK_REG struct __darwin_opmask_reg
-#define FP_STATE_BYTES 512
-#define _STRUCT_X86_FLOAT_STATE32 struct __darwin_i386_float_state
-#define _STRUCT_X86_AVX_STATE32 struct __darwin_i386_avx_state
-#define _STRUCT_X86_AVX512_STATE32 struct __darwin_i386_avx512_state
-#define _STRUCT_X86_EXCEPTION_STATE32 struct __darwin_i386_exception_state
-#define _STRUCT_X86_DEBUG_STATE32 struct __darwin_x86_debug_state32
-#define _STRUCT_X86_INSTRUCTION_STATE struct __x86_instruction_state
-#define _X86_INSTRUCTION_STATE_MAX_INSN_BYTES (2448 - 64 - 4)
-#define _X86_INSTRUCTION_STATE_CACHELINE_SIZE 64
-#define _STRUCT_LAST_BRANCH_RECORD struct __last_branch_record
-#define _STRUCT_LAST_BRANCH_STATE struct __last_branch_state
-#define __LASTBRANCH_MAX 32
-#define _STRUCT_X86_PAGEIN_STATE struct __x86_pagein_state
-#define _STRUCT_X86_THREAD_STATE64 struct __darwin_x86_thread_state64
-#define _STRUCT_X86_THREAD_FULL_STATE64 struct __darwin_x86_thread_full_state64
-#define _STRUCT_X86_FLOAT_STATE64 struct __darwin_x86_float_state64
-#define _STRUCT_X86_AVX_STATE64 struct __darwin_x86_avx_state64
-#define _STRUCT_X86_AVX512_STATE64 struct __darwin_x86_avx512_state64
-#define _STRUCT_X86_EXCEPTION_STATE64 struct __darwin_x86_exception_state64
-#define _STRUCT_X86_DEBUG_STATE64 struct __darwin_x86_debug_state64
-#define _STRUCT_X86_CPMU_STATE64 struct __darwin_x86_cpmu_state64
-#define _STRUCT_MCONTEXT32 struct __darwin_mcontext32
-#define _STRUCT_MCONTEXT_AVX32 struct __darwin_mcontext_avx32
-#define _STRUCT_MCONTEXT_AVX512_32 struct __darwin_mcontext_avx512_32
-#define _STRUCT_MCONTEXT64 struct __darwin_mcontext64
-#define _STRUCT_MCONTEXT64_FULL struct __darwin_mcontext64_full
-#define _STRUCT_MCONTEXT_AVX64 struct __darwin_mcontext_avx64
-#define _STRUCT_MCONTEXT_AVX64_FULL struct __darwin_mcontext_avx64_full
-#define _STRUCT_MCONTEXT_AVX512_64 struct __darwin_mcontext_avx512_64
-#define _STRUCT_MCONTEXT_AVX512_64_FULL struct __darwin_mcontext_avx512_64_full
-#define _MCONTEXT_T
-#define _STRUCT_MCONTEXT _STRUCT_MCONTEXT64
-#define _STRUCT_SIGALTSTACK struct __darwin_sigaltstack
-#define _STRUCT_UCONTEXT struct __darwin_ucontext
-#define _SIGSET_T
-#define SIGEV_NONE 0
-#define SIGEV_SIGNAL 1
-#define SIGEV_THREAD 3
-#define ILL_NOOP 0
-#define ILL_ILLOPC 1
-#define ILL_ILLTRP 2
-#define ILL_PRVOPC 3
-#define ILL_ILLOPN 4
-#define ILL_ILLADR 5
-#define ILL_PRVREG 6
-#define ILL_COPROC 7
-#define ILL_BADSTK 8
-#define FPE_NOOP 0
-#define FPE_FLTDIV 1
-#define FPE_FLTOVF 2
-#define FPE_FLTUND 3
-#define FPE_FLTRES 4
-#define FPE_FLTINV 5
-#define FPE_FLTSUB 6
-#define FPE_INTDIV 7
-#define FPE_INTOVF 8
-#define SEGV_NOOP 0
-#define SEGV_MAPERR 1
-#define SEGV_ACCERR 2
-#define BUS_NOOP 0
-#define BUS_ADRALN 1
-#define BUS_ADRERR 2
-#define BUS_OBJERR 3
-#define TRAP_BRKPT 1
-#define TRAP_TRACE 2
-#define CLD_NOOP 0
-#define CLD_EXITED 1
-#define CLD_KILLED 2
-#define CLD_DUMPED 3
-#define CLD_TRAPPED 4
-#define CLD_STOPPED 5
-#define CLD_CONTINUED 6
-#define POLL_IN 1
-#define POLL_OUT 2
-#define POLL_MSG 3
-#define POLL_ERR 4
-#define POLL_PRI 5
-#define POLL_HUP 6
-#define sa_handler __sigaction_u.__sa_handler
-#define sa_sigaction __sigaction_u.__sa_sigaction
-#define SA_ONSTACK 0x0001
-#define SA_RESTART 0x0002
-#define SA_RESETHAND 0x0004
-#define SA_NOCLDSTOP 0x0008
-#define SA_NODEFER 0x0010
-#define SA_NOCLDWAIT 0x0020
-#define SA_SIGINFO 0x0040
-#define SA_USERTRAMP 0x0100
-#define SA_64REGSET 0x0200
-#define SA_USERSPACE_MASK (SA_ONSTACK | SA_RESTART | SA_RESETHAND | SA_NOCLDSTOP | SA_NODEFER | SA_NOCLDWAIT | SA_SIGINFO)
-#define SIG_BLOCK 1
-#define SIG_UNBLOCK 2
-#define SIG_SETMASK 3
-#define SI_USER 0x10001
-#define SI_QUEUE 0x10002
-#define SI_TIMER 0x10003
-#define SI_ASYNCIO 0x10004
-#define SI_MESGQ 0x10005
-#define SS_ONSTACK 0x0001
-#define SS_DISABLE 0x0004
-#define MINSIGSTKSZ 32768
-#define SIGSTKSZ 131072
-#define SV_ONSTACK SA_ONSTACK
-#define SV_INTERRUPT SA_RESTART
-#define SV_RESETHAND SA_RESETHAND
-#define SV_NODEFER SA_NODEFER
-#define SV_NOCLDSTOP SA_NOCLDSTOP
-#define SV_SIGINFO SA_SIGINFO
-#define sv_onstack sv_flags
-#define sigmask(m) (1 << ((m)-1))
-#define BADSIG SIG_ERR
-#define _SYS_RESOURCE_H_
-#define __CLANG_STDINT_H
-#define _STDINT_H_
-#define __WORDSIZE 64
-#define _UINT8_T
-#define _UINT16_T
-#define _UINT32_T
-#define _UINT64_T
-#define _INTMAX_T
-#define _UINTMAX_T
-#define INT8_C(v) (v)
-#define INT16_C(v) (v)
-#define INT32_C(v) (v)
-#define INT64_C(v) (v ## LL)
-#define UINT8_C(v) (v)
-#define UINT16_C(v) (v)
-#define UINT32_C(v) (v ## U)
-#define UINT64_C(v) (v ## ULL)
-#define INTMAX_C(v) (v ## L)
-#define UINTMAX_C(v) (v ## UL)
-#define INT8_MAX 127
-#define INT16_MAX 32767
-#define INT32_MAX 2147483647
-#define INT64_MAX 9223372036854775807LL
-#define INT8_MIN -128
-#define INT16_MIN -32768
-#define INT32_MIN (-INT32_MAX-1)
-#define INT64_MIN (-INT64_MAX-1)
-#define UINT8_MAX 255
-#define UINT16_MAX 65535
-#define UINT32_MAX 4294967295U
-#define UINT64_MAX 18446744073709551615ULL
-#define INT_LEAST8_MIN INT8_MIN
-#define INT_LEAST16_MIN INT16_MIN
-#define INT_LEAST32_MIN INT32_MIN
-#define INT_LEAST64_MIN INT64_MIN
-#define INT_LEAST8_MAX INT8_MAX
-#define INT_LEAST16_MAX INT16_MAX
-#define INT_LEAST32_MAX INT32_MAX
-#define INT_LEAST64_MAX INT64_MAX
-#define UINT_LEAST8_MAX UINT8_MAX
-#define UINT_LEAST16_MAX UINT16_MAX
-#define UINT_LEAST32_MAX UINT32_MAX
-#define UINT_LEAST64_MAX UINT64_MAX
-#define INT_FAST8_MIN INT8_MIN
-#define INT_FAST16_MIN INT16_MIN
-#define INT_FAST32_MIN INT32_MIN
-#define INT_FAST64_MIN INT64_MIN
-#define INT_FAST8_MAX INT8_MAX
-#define INT_FAST16_MAX INT16_MAX
-#define INT_FAST32_MAX INT32_MAX
-#define INT_FAST64_MAX INT64_MAX
-#define UINT_FAST8_MAX UINT8_MAX
-#define UINT_FAST16_MAX UINT16_MAX
-#define UINT_FAST32_MAX UINT32_MAX
-#define UINT_FAST64_MAX UINT64_MAX
-#define INTPTR_MAX 9223372036854775807L
-#define INTPTR_MIN (-INTPTR_MAX-1)
-#define UINTPTR_MAX 18446744073709551615UL
-#define INTMAX_MAX INTMAX_C(9223372036854775807)
-#define UINTMAX_MAX UINTMAX_C(18446744073709551615)
-#define INTMAX_MIN (-INTMAX_MAX-1)
-#define PTRDIFF_MIN INTMAX_MIN
-#define PTRDIFF_MAX INTMAX_MAX
-#define SIZE_MAX UINTPTR_MAX
-#define RSIZE_MAX (SIZE_MAX >> 1)
-#define WCHAR_MAX __WCHAR_MAX__
-#define WCHAR_MIN (-WCHAR_MAX-1)
-#define WINT_MIN INT32_MIN
-#define WINT_MAX INT32_MAX
-#define SIG_ATOMIC_MIN INT32_MIN
-#define SIG_ATOMIC_MAX INT32_MAX
-#define _STRUCT_TIMEVAL struct timeval
-#define PRIO_PROCESS 0
-#define PRIO_PGRP 1
-#define PRIO_USER 2
-#define PRIO_DARWIN_THREAD 3
-#define PRIO_DARWIN_PROCESS 4
-#define PRIO_MIN -20
-#define PRIO_MAX 20
-#define PRIO_DARWIN_BG 0x1000
-#define PRIO_DARWIN_NONUI 0x1001
-#define RUSAGE_SELF 0
-#define RUSAGE_CHILDREN -1
-#define ru_first ru_ixrss
-#define ru_last ru_nivcsw
-#define RUSAGE_INFO_V0 0
-#define RUSAGE_INFO_V1 1
-#define RUSAGE_INFO_V2 2
-#define RUSAGE_INFO_V3 3
-#define RUSAGE_INFO_V4 4
-#define RUSAGE_INFO_V5 5
-#define RUSAGE_INFO_V6 6
-#define RUSAGE_INFO_CURRENT RUSAGE_INFO_V6
-#define RU_PROC_RUNS_RESLIDE 0x00000001
-#define RLIM_INFINITY (((__uint64_t)1 << 63) - 1)
-#define RLIM_SAVED_MAX RLIM_INFINITY
-#define RLIM_SAVED_CUR RLIM_INFINITY
-#define RLIMIT_CPU 0
-#define RLIMIT_FSIZE 1
-#define RLIMIT_DATA 2
-#define RLIMIT_STACK 3
-#define RLIMIT_CORE 4
-#define RLIMIT_AS 5
-#define RLIMIT_RSS RLIMIT_AS
-#define RLIMIT_MEMLOCK 6
-#define RLIMIT_NPROC 7
-#define RLIMIT_NOFILE 8
-#define RLIM_NLIMITS 9
-#define _RLIMIT_POSIX_FLAG 0x1000
-#define RLIMIT_WAKEUPS_MONITOR 0x1
-#define RLIMIT_CPU_USAGE_MONITOR 0x2
-#define RLIMIT_THREAD_CPULIMITS 0x3
-#define RLIMIT_FOOTPRINT_INTERVAL 0x4
-#define WAKEMON_ENABLE 0x01
-#define WAKEMON_DISABLE 0x02
-#define WAKEMON_GET_PARAMS 0x04
-#define WAKEMON_SET_DEFAULTS 0x08
-#define WAKEMON_MAKE_FATAL 0x10
-#define CPUMON_MAKE_FATAL 0x1000
-#define FOOTPRINT_INTERVAL_RESET 0x1
-#define IOPOL_TYPE_DISK 0
-#define IOPOL_TYPE_VFS_ATIME_UPDATES 2
-#define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3
-#define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4
-#define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5
-#define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6
-#define IOPOL_TYPE_VFS_IGNORE_PERMISSIONS 7
-#define IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE 8
-#define IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES 9
-#define IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY 10
-#define IOPOL_SCOPE_PROCESS 0
-#define IOPOL_SCOPE_THREAD 1
-#define IOPOL_SCOPE_DARWIN_BG 2
-#define IOPOL_DEFAULT 0
-#define IOPOL_IMPORTANT 1
-#define IOPOL_PASSIVE 2
-#define IOPOL_THROTTLE 3
-#define IOPOL_UTILITY 4
-#define IOPOL_STANDARD 5
-#define IOPOL_APPLICATION IOPOL_STANDARD
-#define IOPOL_NORMAL IOPOL_IMPORTANT
-#define IOPOL_ATIME_UPDATES_DEFAULT 0
-#define IOPOL_ATIME_UPDATES_OFF 1
-#define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0
-#define IOPOL_MATERIALIZE_DATALESS_FILES_OFF 1
-#define IOPOL_MATERIALIZE_DATALESS_FILES_ON 2
-#define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0
-#define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME 1
-#define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0
-#define IOPOL_VFS_TRIGGER_RESOLVE_OFF 1
-#define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0
-#define IOPOL_VFS_CONTENT_PROTECTION_IGNORE 1
-#define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0
-#define IOPOL_VFS_IGNORE_PERMISSIONS_ON 1
-#define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0
-#define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1
-#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0
-#define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1
-#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT 0
-#define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON 1
-#define WNOHANG 0x00000001
-#define WUNTRACED 0x00000002
-#define _W_INT(w) (*(int *)&(w))
-#define WCOREFLAG 0200
-#define _WSTATUS(x) (_W_INT(x) & 0177)
-#define _WSTOPPED 0177
-#define WEXITSTATUS(x) ((_W_INT(x) >> 8) & 0x000000ff)
-#define WSTOPSIG(x) (_W_INT(x) >> 8)
-#define WIFCONTINUED(x) (_WSTATUS(x) == _WSTOPPED && WSTOPSIG(x) == 0x13)
-#define WIFSTOPPED(x) (_WSTATUS(x) == _WSTOPPED && WSTOPSIG(x) != 0x13)
-#define WIFEXITED(x) (_WSTATUS(x) == 0)
-#define WIFSIGNALED(x) (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0)
-#define WTERMSIG(x) (_WSTATUS(x))
-#define WCOREDUMP(x) (_W_INT(x) & WCOREFLAG)
-#define W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
-#define W_STOPCODE(sig) ((sig) << 8 | _WSTOPPED)
-#define WEXITED 0x00000004
-#define WSTOPPED 0x00000008
-#define WCONTINUED 0x00000010
-#define WNOWAIT 0x00000020
-#define WAIT_ANY (-1)
-#define WAIT_MYPGRP 0
-#define w_termsig w_T.w_Termsig
-#define w_coredump w_T.w_Coredump
-#define w_retcode w_T.w_Retcode
-#define w_stopval w_S.w_Stopval
-#define w_stopsig w_S.w_Stopsig
-#define _ALLOCA_H_
-#undef alloca
-#undef __alloca
-#define alloca(size) __alloca(size)
-#define __alloca(size) __builtin_alloca(size)
-#define _CT_RUNE_T
-#define _RUNE_T
-#define _WCHAR_T
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-#define RAND_MAX 0x7fffffff
-#define MB_CUR_MAX __mb_cur_max
-#define _MALLOC_UNDERSCORE_MALLOC_H_
-#define __bsearch_noescape __attribute__((__noescape__))
-#define __sort_noescape __attribute__((__noescape__))
-#define __STDDEF_H
-#define __need_ptrdiff_t
-#define __need_size_t
-#define __need_wchar_t
-#define __need_NULL
-#define __need_STDDEF_H_misc
-#define _PTRDIFF_T
-#undef __need_ptrdiff_t
-#undef __need_size_t
-#undef __need_wchar_t
-#undef NULL
-#define NULL ((void*)0)
-#undef __need_NULL
-#define __CLANG_MAX_ALIGN_T_DEFINED
-#define offsetof(t,d) __builtin_offsetof(t, d)
-#undef __need_STDDEF_H_misc
-#define _STRING_H_
-#define _STRINGS_H_
-#define _SECURE__STRINGS_H_
-#undef bcopy
-#define bcopy(src,dest,...) __builtin___memmove_chk (dest, src, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef bzero
-#define bzero(dest,...) __builtin___memset_chk (dest, 0, __VA_ARGS__, __darwin_obsz0 (dest))
-#define _SECURE__STRING_H_
-#define __HAS_FIXED_CHK_PROTOTYPES 1
-#undef memccpy
-#define memccpy(dest,...) __builtin___memccpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memcpy
-#define memcpy(dest,...) __builtin___memcpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memmove
-#define memmove(dest,...) __builtin___memmove_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef memset
-#define memset(dest,...) __builtin___memset_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
-#undef strcpy
-#define strcpy(dest,...) __builtin___strcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef stpcpy
-#define stpcpy(dest,...) __builtin___stpcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef stpncpy
-#define stpncpy(dest,...) __builtin___stpncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strlcpy
-#define strlcpy(dest,...) __builtin___strlcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strlcat
-#define strlcat(dest,...) __builtin___strlcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strncpy
-#define strncpy(dest,...) __builtin___strncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strcat
-#define strcat(dest,...) __builtin___strcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef strncat
-#define strncat(dest,...) __builtin___strncat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
-#undef __HAS_FIXED_CHK_PROTOTYPES
-#define __CLANG_INTTYPES_H
-#define _INTTYPES_H_
-#define __PRI_8_LENGTH_MODIFIER__ "hh"
-#define __PRI_64_LENGTH_MODIFIER__ "ll"
-#define __SCN_64_LENGTH_MODIFIER__ "ll"
-#define __PRI_MAX_LENGTH_MODIFIER__ "j"
-#define __SCN_MAX_LENGTH_MODIFIER__ "j"
-#define PRId8 __PRI_8_LENGTH_MODIFIER__ "d"
-#define PRIi8 __PRI_8_LENGTH_MODIFIER__ "i"
-#define PRIo8 __PRI_8_LENGTH_MODIFIER__ "o"
-#define PRIu8 __PRI_8_LENGTH_MODIFIER__ "u"
-#define PRIx8 __PRI_8_LENGTH_MODIFIER__ "x"
-#define PRIX8 __PRI_8_LENGTH_MODIFIER__ "X"
-#define PRId16 "hd"
-#define PRIi16 "hi"
-#define PRIo16 "ho"
-#define PRIu16 "hu"
-#define PRIx16 "hx"
-#define PRIX16 "hX"
-#define PRId32 "d"
-#define PRIi32 "i"
-#define PRIo32 "o"
-#define PRIu32 "u"
-#define PRIx32 "x"
-#define PRIX32 "X"
-#define PRId64 __PRI_64_LENGTH_MODIFIER__ "d"
-#define PRIi64 __PRI_64_LENGTH_MODIFIER__ "i"
-#define PRIo64 __PRI_64_LENGTH_MODIFIER__ "o"
-#define PRIu64 __PRI_64_LENGTH_MODIFIER__ "u"
-#define PRIx64 __PRI_64_LENGTH_MODIFIER__ "x"
-#define PRIX64 __PRI_64_LENGTH_MODIFIER__ "X"
-#define PRIdLEAST8 PRId8
-#define PRIiLEAST8 PRIi8
-#define PRIoLEAST8 PRIo8
-#define PRIuLEAST8 PRIu8
-#define PRIxLEAST8 PRIx8
-#define PRIXLEAST8 PRIX8
-#define PRIdLEAST16 PRId16
-#define PRIiLEAST16 PRIi16
-#define PRIoLEAST16 PRIo16
-#define PRIuLEAST16 PRIu16
-#define PRIxLEAST16 PRIx16
-#define PRIXLEAST16 PRIX16
-#define PRIdLEAST32 PRId32
-#define PRIiLEAST32 PRIi32
-#define PRIoLEAST32 PRIo32
-#define PRIuLEAST32 PRIu32
-#define PRIxLEAST32 PRIx32
-#define PRIXLEAST32 PRIX32
-#define PRIdLEAST64 PRId64
-#define PRIiLEAST64 PRIi64
-#define PRIoLEAST64 PRIo64
-#define PRIuLEAST64 PRIu64
-#define PRIxLEAST64 PRIx64
-#define PRIXLEAST64 PRIX64
-#define PRIdFAST8 PRId8
-#define PRIiFAST8 PRIi8
-#define PRIoFAST8 PRIo8
-#define PRIuFAST8 PRIu8
-#define PRIxFAST8 PRIx8
-#define PRIXFAST8 PRIX8
-#define PRIdFAST16 PRId16
-#define PRIiFAST16 PRIi16
-#define PRIoFAST16 PRIo16
-#define PRIuFAST16 PRIu16
-#define PRIxFAST16 PRIx16
-#define PRIXFAST16 PRIX16
-#define PRIdFAST32 PRId32
-#define PRIiFAST32 PRIi32
-#define PRIoFAST32 PRIo32
-#define PRIuFAST32 PRIu32
-#define PRIxFAST32 PRIx32
-#define PRIXFAST32 PRIX32
-#define PRIdFAST64 PRId64
-#define PRIiFAST64 PRIi64
-#define PRIoFAST64 PRIo64
-#define PRIuFAST64 PRIu64
-#define PRIxFAST64 PRIx64
-#define PRIXFAST64 PRIX64
-#define PRIdPTR "ld"
-#define PRIiPTR "li"
-#define PRIoPTR "lo"
-#define PRIuPTR "lu"
-#define PRIxPTR "lx"
-#define PRIXPTR "lX"
-#define PRIdMAX __PRI_MAX_LENGTH_MODIFIER__ "d"
-#define PRIiMAX __PRI_MAX_LENGTH_MODIFIER__ "i"
-#define PRIoMAX __PRI_MAX_LENGTH_MODIFIER__ "o"
-#define PRIuMAX __PRI_MAX_LENGTH_MODIFIER__ "u"
-#define PRIxMAX __PRI_MAX_LENGTH_MODIFIER__ "x"
-#define PRIXMAX __PRI_MAX_LENGTH_MODIFIER__ "X"
-#define SCNd8 __PRI_8_LENGTH_MODIFIER__ "d"
-#define SCNi8 __PRI_8_LENGTH_MODIFIER__ "i"
-#define SCNo8 __PRI_8_LENGTH_MODIFIER__ "o"
-#define SCNu8 __PRI_8_LENGTH_MODIFIER__ "u"
-#define SCNx8 __PRI_8_LENGTH_MODIFIER__ "x"
-#define SCNd16 "hd"
-#define SCNi16 "hi"
-#define SCNo16 "ho"
-#define SCNu16 "hu"
-#define SCNx16 "hx"
-#define SCNd32 "d"
-#define SCNi32 "i"
-#define SCNo32 "o"
-#define SCNu32 "u"
-#define SCNx32 "x"
-#define SCNd64 __SCN_64_LENGTH_MODIFIER__ "d"
-#define SCNi64 __SCN_64_LENGTH_MODIFIER__ "i"
-#define SCNo64 __SCN_64_LENGTH_MODIFIER__ "o"
-#define SCNu64 __SCN_64_LENGTH_MODIFIER__ "u"
-#define SCNx64 __SCN_64_LENGTH_MODIFIER__ "x"
-#define SCNdLEAST8 SCNd8
-#define SCNiLEAST8 SCNi8
-#define SCNoLEAST8 SCNo8
-#define SCNuLEAST8 SCNu8
-#define SCNxLEAST8 SCNx8
-#define SCNdLEAST16 SCNd16
-#define SCNiLEAST16 SCNi16
-#define SCNoLEAST16 SCNo16
-#define SCNuLEAST16 SCNu16
-#define SCNxLEAST16 SCNx16
-#define SCNdLEAST32 SCNd32
-#define SCNiLEAST32 SCNi32
-#define SCNoLEAST32 SCNo32
-#define SCNuLEAST32 SCNu32
-#define SCNxLEAST32 SCNx32
-#define SCNdLEAST64 SCNd64
-#define SCNiLEAST64 SCNi64
-#define SCNoLEAST64 SCNo64
-#define SCNuLEAST64 SCNu64
-#define SCNxLEAST64 SCNx64
-#define SCNdFAST8 SCNd8
-#define SCNiFAST8 SCNi8
-#define SCNoFAST8 SCNo8
-#define SCNuFAST8 SCNu8
-#define SCNxFAST8 SCNx8
-#define SCNdFAST16 SCNd16
-#define SCNiFAST16 SCNi16
-#define SCNoFAST16 SCNo16
-#define SCNuFAST16 SCNu16
-#define SCNxFAST16 SCNx16
-#define SCNdFAST32 SCNd32
-#define SCNiFAST32 SCNi32
-#define SCNoFAST32 SCNo32
-#define SCNuFAST32 SCNu32
-#define SCNxFAST32 SCNx32
-#define SCNdFAST64 SCNd64
-#define SCNiFAST64 SCNi64
-#define SCNoFAST64 SCNo64
-#define SCNuFAST64 SCNu64
-#define SCNxFAST64 SCNx64
-#define SCNdPTR "ld"
-#define SCNiPTR "li"
-#define SCNoPTR "lo"
-#define SCNuPTR "lu"
-#define SCNxPTR "lx"
-#define SCNdMAX __SCN_MAX_LENGTH_MODIFIER__ "d"
-#define SCNiMAX __SCN_MAX_LENGTH_MODIFIER__ "i"
-#define SCNoMAX __SCN_MAX_LENGTH_MODIFIER__ "o"
-#define SCNuMAX __SCN_MAX_LENGTH_MODIFIER__ "u"
-#define SCNxMAX __SCN_MAX_LENGTH_MODIFIER__ "x"
-#define __STDALIGN_H
-#define alignas _Alignas
-#define alignof _Alignof
-#define __alignas_is_defined 1
-#define __alignof_is_defined 1
-#define _UNISTD_H_
-#define _SYS_UNISTD_H_
-#define _POSIX_VERSION 200112L
-#define _POSIX2_VERSION 200112L
-#define _POSIX_VDISABLE ((unsigned char)'\377')
-#define _POSIX_THREAD_KEYS_MAX 128
-#define F_OK 0
-#define X_OK (1<<0)
-#define W_OK (1<<1)
-#define R_OK (1<<2)
-#define _READ_OK (1<<9)
-#define _WRITE_OK (1<<10)
-#define _EXECUTE_OK (1<<11)
-#define _DELETE_OK (1<<12)
-#define _APPEND_OK (1<<13)
-#define _RMFILE_OK (1<<14)
-#define _RATTR_OK (1<<15)
-#define _WATTR_OK (1<<16)
-#define _REXT_OK (1<<17)
-#define _WEXT_OK (1<<18)
-#define _RPERM_OK (1<<19)
-#define _WPERM_OK (1<<20)
-#define _CHOWN_OK (1<<21)
-#define _ACCESS_EXTENDED_MASK (_READ_OK | _WRITE_OK | _EXECUTE_OK | _DELETE_OK | _APPEND_OK | _RMFILE_OK | _REXT_OK | _WEXT_OK | _RATTR_OK | _WATTR_OK | _RPERM_OK | _WPERM_OK | _CHOWN_OK)
-#define SEEK_HOLE 3
-#define SEEK_DATA 4
-#define L_SET SEEK_SET
-#define L_INCR SEEK_CUR
-#define L_XTND SEEK_END
-#define ACCESSX_MAX_DESCRIPTORS 100
-#define ACCESSX_MAX_TABLESIZE (16 * 1024)
-#define _PC_LINK_MAX 1
-#define _PC_MAX_CANON 2
-#define _PC_MAX_INPUT 3
-#define _PC_NAME_MAX 4
-#define _PC_PATH_MAX 5
-#define _PC_PIPE_BUF 6
-#define _PC_CHOWN_RESTRICTED 7
-#define _PC_NO_TRUNC 8
-#define _PC_VDISABLE 9
-#define _PC_NAME_CHARS_MAX 10
-#define _PC_CASE_SENSITIVE 11
-#define _PC_CASE_PRESERVING 12
-#define _PC_EXTENDED_SECURITY_NP 13
-#define _PC_AUTH_OPAQUE_NP 14
-#define _PC_2_SYMLINKS 15
-#define _PC_ALLOC_SIZE_MIN 16
-#define _PC_ASYNC_IO 17
-#define _PC_FILESIZEBITS 18
-#define _PC_PRIO_IO 19
-#define _PC_REC_INCR_XFER_SIZE 20
-#define _PC_REC_MAX_XFER_SIZE 21
-#define _PC_REC_MIN_XFER_SIZE 22
-#define _PC_REC_XFER_ALIGN 23
-#define _PC_SYMLINK_MAX 24
-#define _PC_SYNC_IO 25
-#define _PC_XATTR_SIZE_BITS 26
-#define _PC_MIN_HOLE_SIZE 27
-#define _CS_PATH 1
-#define STDIN_FILENO 0
-#define STDOUT_FILENO 1
-#define STDERR_FILENO 2
-#define _XOPEN_VERSION 600
-#define _XOPEN_XCU_VERSION 4
-#define _POSIX_ADVISORY_INFO (-1)
-#define _POSIX_ASYNCHRONOUS_IO (-1)
-#define _POSIX_BARRIERS (-1)
-#define _POSIX_CHOWN_RESTRICTED 200112L
-#define _POSIX_CLOCK_SELECTION (-1)
-#define _POSIX_CPUTIME (-1)
-#define _POSIX_FSYNC 200112L
-#define _POSIX_IPV6 200112L
-#define _POSIX_JOB_CONTROL 200112L
-#define _POSIX_MAPPED_FILES 200112L
-#define _POSIX_MEMLOCK (-1)
-#define _POSIX_MEMLOCK_RANGE (-1)
-#define _POSIX_MEMORY_PROTECTION 200112L
-#define _POSIX_MESSAGE_PASSING (-1)
-#define _POSIX_MONOTONIC_CLOCK (-1)
-#define _POSIX_NO_TRUNC 200112L
-#define _POSIX_PRIORITIZED_IO (-1)
-#define _POSIX_PRIORITY_SCHEDULING (-1)
-#define _POSIX_RAW_SOCKETS (-1)
-#define _POSIX_READER_WRITER_LOCKS 200112L
-#define _POSIX_REALTIME_SIGNALS (-1)
-#define _POSIX_REGEXP 200112L
-#define _POSIX_SAVED_IDS 200112L
-#define _POSIX_SEMAPHORES (-1)
-#define _POSIX_SHARED_MEMORY_OBJECTS (-1)
-#define _POSIX_SHELL 200112L
-#define _POSIX_SPAWN (-1)
-#define _POSIX_SPIN_LOCKS (-1)
-#define _POSIX_SPORADIC_SERVER (-1)
-#define _POSIX_SYNCHRONIZED_IO (-1)
-#define _POSIX_THREAD_ATTR_STACKADDR 200112L
-#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
-#define _POSIX_THREAD_CPUTIME (-1)
-#define _POSIX_THREAD_PRIO_INHERIT (-1)
-#define _POSIX_THREAD_PRIO_PROTECT (-1)
-#define _POSIX_THREAD_PRIORITY_SCHEDULING (-1)
-#define _POSIX_THREAD_PROCESS_SHARED 200112L
-#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
-#define _POSIX_THREAD_SPORADIC_SERVER (-1)
-#define _POSIX_THREADS 200112L
-#define _POSIX_TIMEOUTS (-1)
-#define _POSIX_TIMERS (-1)
-#define _POSIX_TRACE (-1)
-#define _POSIX_TRACE_EVENT_FILTER (-1)
-#define _POSIX_TRACE_INHERIT (-1)
-#define _POSIX_TRACE_LOG (-1)
-#define _POSIX_TYPED_MEMORY_OBJECTS (-1)
-#define _POSIX2_C_BIND 200112L
-#define _POSIX2_C_DEV 200112L
-#define _POSIX2_CHAR_TERM 200112L
-#define _POSIX2_FORT_DEV (-1)
-#define _POSIX2_FORT_RUN 200112L
-#define _POSIX2_LOCALEDEF 200112L
-#define _POSIX2_PBS (-1)
-#define _POSIX2_PBS_ACCOUNTING (-1)
-#define _POSIX2_PBS_CHECKPOINT (-1)
-#define _POSIX2_PBS_LOCATE (-1)
-#define _POSIX2_PBS_MESSAGE (-1)
-#define _POSIX2_PBS_TRACK (-1)
-#define _POSIX2_SW_DEV 200112L
-#define _POSIX2_UPE 200112L
-#define __ILP32_OFF32 (-1)
-#define __ILP32_OFFBIG (-1)
-#define __LP64_OFF64 (1)
-#define __LPBIG_OFFBIG (1)
-#define _POSIX_V6_ILP32_OFF32 __ILP32_OFF32
-#define _POSIX_V6_ILP32_OFFBIG __ILP32_OFFBIG
-#define _POSIX_V6_LP64_OFF64 __LP64_OFF64
-#define _POSIX_V6_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _POSIX_V7_ILP32_OFF32 __ILP32_OFF32
-#define _POSIX_V7_ILP32_OFFBIG __ILP32_OFFBIG
-#define _POSIX_V7_LP64_OFF64 __LP64_OFF64
-#define _POSIX_V7_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _V6_ILP32_OFF32 __ILP32_OFF32
-#define _V6_ILP32_OFFBIG __ILP32_OFFBIG
-#define _V6_LP64_OFF64 __LP64_OFF64
-#define _V6_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _XBS5_ILP32_OFF32 __ILP32_OFF32
-#define _XBS5_ILP32_OFFBIG __ILP32_OFFBIG
-#define _XBS5_LP64_OFF64 __LP64_OFF64
-#define _XBS5_LPBIG_OFFBIG __LPBIG_OFFBIG
-#define _XOPEN_CRYPT (1)
-#define _XOPEN_ENH_I18N (1)
-#define _XOPEN_LEGACY (-1)
-#define _XOPEN_REALTIME (-1)
-#define _XOPEN_REALTIME_THREADS (-1)
-#define _XOPEN_SHM (1)
-#define _XOPEN_STREAMS (-1)
-#define _XOPEN_UNIX (1)
-#define _SC_ARG_MAX 1
-#define _SC_CHILD_MAX 2
-#define _SC_CLK_TCK 3
-#define _SC_NGROUPS_MAX 4
-#define _SC_OPEN_MAX 5
-#define _SC_JOB_CONTROL 6
-#define _SC_SAVED_IDS 7
-#define _SC_VERSION 8
-#define _SC_BC_BASE_MAX 9
-#define _SC_BC_DIM_MAX 10
-#define _SC_BC_SCALE_MAX 11
-#define _SC_BC_STRING_MAX 12
-#define _SC_COLL_WEIGHTS_MAX 13
-#define _SC_EXPR_NEST_MAX 14
-#define _SC_LINE_MAX 15
-#define _SC_RE_DUP_MAX 16
-#define _SC_2_VERSION 17
-#define _SC_2_C_BIND 18
-#define _SC_2_C_DEV 19
-#define _SC_2_CHAR_TERM 20
-#define _SC_2_FORT_DEV 21
-#define _SC_2_FORT_RUN 22
-#define _SC_2_LOCALEDEF 23
-#define _SC_2_SW_DEV 24
-#define _SC_2_UPE 25
-#define _SC_STREAM_MAX 26
-#define _SC_TZNAME_MAX 27
-#define _SC_ASYNCHRONOUS_IO 28
-#define _SC_PAGESIZE 29
-#define _SC_MEMLOCK 30
-#define _SC_MEMLOCK_RANGE 31
-#define _SC_MEMORY_PROTECTION 32
-#define _SC_MESSAGE_PASSING 33
-#define _SC_PRIORITIZED_IO 34
-#define _SC_PRIORITY_SCHEDULING 35
-#define _SC_REALTIME_SIGNALS 36
-#define _SC_SEMAPHORES 37
-#define _SC_FSYNC 38
-#define _SC_SHARED_MEMORY_OBJECTS 39
-#define _SC_SYNCHRONIZED_IO 40
-#define _SC_TIMERS 41
-#define _SC_AIO_LISTIO_MAX 42
-#define _SC_AIO_MAX 43
-#define _SC_AIO_PRIO_DELTA_MAX 44
-#define _SC_DELAYTIMER_MAX 45
-#define _SC_MQ_OPEN_MAX 46
-#define _SC_MAPPED_FILES 47
-#define _SC_RTSIG_MAX 48
-#define _SC_SEM_NSEMS_MAX 49
-#define _SC_SEM_VALUE_MAX 50
-#define _SC_SIGQUEUE_MAX 51
-#define _SC_TIMER_MAX 52
-#define _SC_NPROCESSORS_CONF 57
-#define _SC_NPROCESSORS_ONLN 58
-#define _SC_2_PBS 59
-#define _SC_2_PBS_ACCOUNTING 60
-#define _SC_2_PBS_CHECKPOINT 61
-#define _SC_2_PBS_LOCATE 62
-#define _SC_2_PBS_MESSAGE 63
-#define _SC_2_PBS_TRACK 64
-#define _SC_ADVISORY_INFO 65
-#define _SC_BARRIERS 66
-#define _SC_CLOCK_SELECTION 67
-#define _SC_CPUTIME 68
-#define _SC_FILE_LOCKING 69
-#define _SC_GETGR_R_SIZE_MAX 70
-#define _SC_GETPW_R_SIZE_MAX 71
-#define _SC_HOST_NAME_MAX 72
-#define _SC_LOGIN_NAME_MAX 73
-#define _SC_MONOTONIC_CLOCK 74
-#define _SC_MQ_PRIO_MAX 75
-#define _SC_READER_WRITER_LOCKS 76
-#define _SC_REGEXP 77
-#define _SC_SHELL 78
-#define _SC_SPAWN 79
-#define _SC_SPIN_LOCKS 80
-#define _SC_SPORADIC_SERVER 81
-#define _SC_THREAD_ATTR_STACKADDR 82
-#define _SC_THREAD_ATTR_STACKSIZE 83
-#define _SC_THREAD_CPUTIME 84
-#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85
-#define _SC_THREAD_KEYS_MAX 86
-#define _SC_THREAD_PRIO_INHERIT 87
-#define _SC_THREAD_PRIO_PROTECT 88
-#define _SC_THREAD_PRIORITY_SCHEDULING 89
-#define _SC_THREAD_PROCESS_SHARED 90
-#define _SC_THREAD_SAFE_FUNCTIONS 91
-#define _SC_THREAD_SPORADIC_SERVER 92
-#define _SC_THREAD_STACK_MIN 93
-#define _SC_THREAD_THREADS_MAX 94
-#define _SC_TIMEOUTS 95
-#define _SC_THREADS 96
-#define _SC_TRACE 97
-#define _SC_TRACE_EVENT_FILTER 98
-#define _SC_TRACE_INHERIT 99
-#define _SC_TRACE_LOG 100
-#define _SC_TTY_NAME_MAX 101
-#define _SC_TYPED_MEMORY_OBJECTS 102
-#define _SC_V6_ILP32_OFF32 103
-#define _SC_V6_ILP32_OFFBIG 104
-#define _SC_V6_LP64_OFF64 105
-#define _SC_V6_LPBIG_OFFBIG 106
-#define _SC_IPV6 118
-#define _SC_RAW_SOCKETS 119
-#define _SC_SYMLOOP_MAX 120
-#define _SC_ATEXIT_MAX 107
-#define _SC_IOV_MAX 56
-#define _SC_PAGE_SIZE _SC_PAGESIZE
-#define _SC_XOPEN_CRYPT 108
-#define _SC_XOPEN_ENH_I18N 109
-#define _SC_XOPEN_LEGACY 110
-#define _SC_XOPEN_REALTIME 111
-#define _SC_XOPEN_REALTIME_THREADS 112
-#define _SC_XOPEN_SHM 113
-#define _SC_XOPEN_STREAMS 114
-#define _SC_XOPEN_UNIX 115
-#define _SC_XOPEN_VERSION 116
-#define _SC_XOPEN_XCU_VERSION 121
-#define _SC_XBS5_ILP32_OFF32 122
-#define _SC_XBS5_ILP32_OFFBIG 123
-#define _SC_XBS5_LP64_OFF64 124
-#define _SC_XBS5_LPBIG_OFFBIG 125
-#define _SC_SS_REPL_MAX 126
-#define _SC_TRACE_EVENT_NAME_MAX 127
-#define _SC_TRACE_NAME_MAX 128
-#define _SC_TRACE_SYS_MAX 129
-#define _SC_TRACE_USER_EVENT_MAX 130
-#define _SC_PASS_MAX 131
-#define _SC_PHYS_PAGES 200
-#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2
-#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3
-#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4
-#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5
-#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6
-#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7
-#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8
-#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9
-#define _CS_POSIX_V6_LP64_OFF64_LIBS 10
-#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13
-#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14
-#define _CS_XBS5_ILP32_OFF32_CFLAGS 20
-#define _CS_XBS5_ILP32_OFF32_LDFLAGS 21
-#define _CS_XBS5_ILP32_OFF32_LIBS 22
-#define _CS_XBS5_ILP32_OFF32_LINTFLAGS 23
-#define _CS_XBS5_ILP32_OFFBIG_CFLAGS 24
-#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS 25
-#define _CS_XBS5_ILP32_OFFBIG_LIBS 26
-#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 27
-#define _CS_XBS5_LP64_OFF64_CFLAGS 28
-#define _CS_XBS5_LP64_OFF64_LDFLAGS 29
-#define _CS_XBS5_LP64_OFF64_LIBS 30
-#define _CS_XBS5_LP64_OFF64_LINTFLAGS 31
-#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS 32
-#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS 33
-#define _CS_XBS5_LPBIG_OFFBIG_LIBS 34
-#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 35
-#define _CS_DARWIN_USER_DIR 65536
-#define _CS_DARWIN_USER_TEMP_DIR 65537
-#define _CS_DARWIN_USER_CACHE_DIR 65538
-#define F_ULOCK 0
-#define F_LOCK 1
-#define F_TLOCK 2
-#define F_TEST 3
-#define _SYS_SELECT_H_
-#define _SYS__SELECT_H_
-#define _UUID_T
-#define __GETHOSTUUID_H
-#define SYNC_VOLUME_FULLSYNC 0x01
-#define SYNC_VOLUME_WAIT 0x02
-#define RBIMPL_DLLEXPORT_H
-#undef RUBY_EXTERN
-#define RUBY_EXTERN extern
-#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
-#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
-#define MJIT_STATIC static
-#define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN
-#define RBIMPL_SYMBOL_EXPORT_END() RUBY_SYMBOL_EXPORT_END
-#define RBIMPL_XMALLOC_H
-#define RBIMPL_ATTR_ALLOC_SIZE_H
-#define RBIMPL_HAS_ATTRIBUTE_H
-#define RBIMPL_HAVE___HAS_ATTRIBUTE 1
-#define RBIMPL_HAS_ATTRIBUTE(_) __has_attribute(_)
-#define RBIMPL_ATTR_ALLOC_SIZE(tuple) __attribute__((__alloc_size__ tuple))
-#define RBIMPL_ATTR_NODISCARD_H
-#define RBIMPL_HAS_C_ATTRIBUTE_H
-#define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
-#define RBIMPL_HAS_CPP_ATTRIBUTE_H
-#define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0
-#define RBIMPL_HAS_CPP_ATTRIBUTE(_) 0
-#define RBIMPL_ATTR_NODISCARD() __attribute__((__warn_unused_result__))
-#define RBIMPL_ATTR_NOEXCEPT_H
-#define RBIMPL_HAS_FEATURE_H
-#define RBIMPL_HAS_FEATURE(_) __has_feature(_)
-#define RBIMPL_ATTR_NOEXCEPT(_)
-#define RBIMPL_ATTR_RESTRICT_H
-#define RBIMPL_ATTR_RESTRICT() __attribute__((__malloc__))
-#define RBIMPL_ATTR_RETURNS_NONNULL_H
-#define RBIMPL_ATTR_RETURNS_NONNULL() __attribute__((__returns_nonnull__))
-#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
-#define xmalloc ruby_xmalloc
-#define xmalloc2 ruby_xmalloc2
-#define xcalloc ruby_xcalloc
-#define xrealloc ruby_xrealloc
-#define xrealloc2 ruby_xrealloc2
-#define xfree ruby_xfree
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_BACKWARD2_ASSUME_H
-#define RBIMPL_ASSUME_H
-#define RBIMPL_CAST_H
-#define RBIMPL_HAS_WARNING_H
-#define RBIMPL_HAS_WARNING(_) __has_warning(_)
-#define RBIMPL_WARNING_PUSH_H
-#define RBIMPL_WARNING_PRAGMA0(x) _Pragma(# x)
-#define RBIMPL_WARNING_PRAGMA1(x) RBIMPL_WARNING_PRAGMA0(clang diagnostic x)
-#define RBIMPL_WARNING_PRAGMA2(x,y) RBIMPL_WARNING_PRAGMA1(x # y)
-#define RBIMPL_WARNING_PUSH() RBIMPL_WARNING_PRAGMA1(push)
-#define RBIMPL_WARNING_POP() RBIMPL_WARNING_PRAGMA1(pop)
-#define RBIMPL_WARNING_ERROR(flag) RBIMPL_WARNING_PRAGMA2(error, flag)
-#define RBIMPL_WARNING_IGNORED(flag) RBIMPL_WARNING_PRAGMA2(ignored, flag)
-#define RBIMPL_CAST(expr) (expr)
-#define RBIMPL_HAS_BUILTIN_H
-#define RBIMPL_HAVE___HAS_BUILTIN 1
-#define RBIMPL_HAS_BUILTIN(_) __has_builtin(_)
-#define RBIMPL_UNREACHABLE_RETURN(_) __builtin_unreachable()
-#define RBIMPL_UNREACHABLE __builtin_unreachable
-#define RBIMPL_ASSUME __builtin_assume
-#define ASSUME RBIMPL_ASSUME
-#define UNREACHABLE RBIMPL_UNREACHABLE()
-#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN
-#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
-#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
-#define RUBY_BACKWARD2_ATTRIBUTES_H
-#define RBIMPL_ATTR_CONST_H
-#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H
-#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) __has_declspec_attribute(_)
-#define RBIMPL_ATTR_CONST() __attribute__((__const__))
-#define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST()
-#define RBIMPL_ATTR_DEPRECATED_H
-#define RBIMPL_HAS_EXTENSION_H
-#define RBIMPL_HAS_EXTENSION(_) __has_extension(_)
-#define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
-#define RBIMPL_ATTR_DEPRECATED_EXT(msg)
-#define RBIMPL_ATTR_ERROR_H
-#define RBIMPL_ATTR_ERROR(msg) __attribute__((__error__ msg))
-#define RBIMPL_ATTR_FORCEINLINE_H
-#define RBIMPL_ATTR_FORCEINLINE() __attribute__((__always_inline__)) inline
-#define RBIMPL_ATTR_FORMAT_H
-#define RBIMPL_ATTR_FORMAT(x,y,z) __attribute__((__format__(x, y, z)))
-#define RBIMPL_PRINTF_FORMAT __printf__
-#define RBIMPL_ATTR_MAYBE_UNUSED_H
-#define RBIMPL_ATTR_MAYBE_UNUSED() __attribute__((__unused__))
-#define RBIMPL_ATTR_NOINLINE_H
-#define RBIMPL_ATTR_NOINLINE() __declspec(noinline)
-#define RBIMPL_ATTR_NONNULL_H
-#define RBIMPL_ATTR_NONNULL(list) __attribute__((__nonnull__ list))
-#define RBIMPL_NONNULL_ARG(arg) RBIMPL_ASSERT_NOTHING
-#define RBIMPL_ATTR_NORETURN_H
-#define RBIMPL_ATTR_NORETURN() __declspec(noreturn)
-#define RBIMPL_ATTR_PURE_H
-#define RUBY_ASSERT_H
-#define RBIMPL_RUBY_DEBUG 0
-#define RBIMPL_NDEBUG 0
-#undef RUBY_DEBUG
-#undef RUBY_NDEBUG
-#undef NDEBUG
-#define RUBY_DEBUG 0
-#define RUBY_NDEBUG 1
-#define NDEBUG
-#undef RBIMPL_NDEBUG
-#undef RBIMPL_RUBY_DEBUG
-#define RBIMPL_ASSERT_NOTHING RBIMPL_CAST((void)0)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ASSERT_FUNC RUBY_FUNCTION_NAME_STRING
-#define RUBY_ASSERT_FAIL(mesg) rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
-#define RUBY_ASSERT_MESG(expr,mesg) (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg))
-#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
-#define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
-#define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
-#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) ((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING)
-#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
-#define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
-#define RBIMPL_ATTR_PURE() __attribute__((__pure__))
-#define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE()
-#define RBIMPL_ATTR_WARNING_H
-#define RBIMPL_ATTR_WARNING(msg) __attribute__((__warning__ msg))
-#undef CONSTFUNC
-#define CONSTFUNC(x) RBIMPL_ATTR_CONST() x
-#undef PUREFUNC
-#define PUREFUNC(x) RBIMPL_ATTR_PURE() x
-#undef DEPRECATED
-#define DEPRECATED(x) RBIMPL_ATTR_DEPRECATED(("")) x
-#undef DEPRECATED_BY
-#define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x
-#undef DEPRECATED_TYPE
-#define DEPRECATED_TYPE(mesg,decl) _Pragma("message \"DEPRECATED_TYPE is deprecated\""); decl RBIMPL_ATTR_DEPRECATED(mseg)
-#undef RUBY_CXX_DEPRECATED
-#define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg))
-#undef NOINLINE
-#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x
-#undef ERRORFUNC
-#define ERRORFUNC(mesg,x) RBIMPL_ATTR_ERROR(mesg) x
-#define HAVE_ATTRIBUTE_ERRORFUNC 1
-#undef WARNINGFUNC
-#define WARNINGFUNC(mesg,x) RBIMPL_ATTR_WARNING(mesg) x
-#define HAVE_ATTRIBUTE_WARNINGFUNC 1
-#undef COLDFUNC
-#define PRINTF_ARGS(decl,string_index,first_to_check) RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, (string_index), (first_to_check)) decl
-#undef RUBY_ATTR_ALLOC_SIZE
-#define RUBY_ATTR_ALLOC_SIZE RBIMPL_ATTR_ALLOC_SIZE
-#undef RUBY_ATTR_MALLOC
-#define RUBY_ATTR_MALLOC RBIMPL_ATTR_RESTRICT()
-#undef RUBY_ATTR_RETURNS_NONNULL
-#define RUBY_ATTR_RETURNS_NONNULL RBIMPL_ATTR_RETURNS_NONNULL()
-#define FUNC_MINIMIZED(x) x
-#define FUNC_UNOPTIMIZED(x) x
-#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) FUNC_MINIMIZED(type prot) {return (type)name args;}
-#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) FUNC_MINIMIZED(void prot) {name args;}
-#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
-#undef RUBY_FUNC_NONNULL
-#define RUBY_FUNC_NONNULL(n,x) RBIMPL_ATTR_NONNULL(n) x
-#undef NORETURN
-#define NORETURN(x) RBIMPL_ATTR_NORETURN() x
-#define NORETURN_STYLE_NEW
-#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
-#undef RB_UNUSED_VAR
-#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED()
-#define RUBY_BACKWARD2_BOOL_H
-#define RBIMPL_STDBOOL_H
-#define __STDBOOL_H
-#define bool _Bool
-#define true 1
-#define false 0
-#define __bool_true_false_are_defined 1
-#define FALSE false
-#define TRUE true
-#define RUBY_BACKWARD2_LONG_LONG_H
-#define HAVE_TRUE_LONG_LONG 1
-#define LONG_LONG RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wc++11-long-long) long long RBIMPL_WARNING_POP()
-#define RUBY_BACKWARD2_STDALIGN_H
-#define RBIMPL_STDALIGN_H
-#define RBIMPL_ALIGNAS(_) __declspec(align(_))
-#define RBIMPL_ALIGNOF(T) RB_GNUC_EXTENSION(_Alignof(T))
-#undef RUBY_ALIGNAS
-#undef RUBY_ALIGNOF
-#define RUBY_ALIGNAS RBIMPL_ALIGNAS
-#define RUBY_ALIGNOF RBIMPL_ALIGNOF
-#define RUBY_BACKWARD2_STDARG_H
-#undef _
-#define _(args) args
-#undef __
-#define __(args) args
-#define ANYARGS
-#define RBIMPL_DOSISH_H
-#define PATH_SEP ":"
-#define PATH_SEP_CHAR PATH_SEP[0]
-#define PATH_ENV "PATH"
-#define CASEFOLD_FILESYSTEM 0
-#define RUBY_MISSING_H 1
-#define __MATH_H__
-#define __MATH__
-#define HUGE_VAL __builtin_huge_val()
-#define HUGE_VALF __builtin_huge_valf()
-#define HUGE_VALL __builtin_huge_vall()
-#define NAN __builtin_nanf("0x7fc00000")
-#define INFINITY HUGE_VALF
-#define FP_NAN 1
-#define FP_INFINITE 2
-#define FP_ZERO 3
-#define FP_NORMAL 4
-#define FP_SUBNORMAL 5
-#define FP_SUPERNORMAL 6
-#undef FP_FAST_FMA
-#undef FP_FAST_FMAF
-#undef FP_FAST_FMAL
-#define FP_ILOGB0 (-2147483647 - 1)
-#define FP_ILOGBNAN (-2147483647 - 1)
-#define MATH_ERRNO 1
-#define MATH_ERREXCEPT 2
-#define math_errhandling (__math_errhandling())
-#define fpclassify(x) ( sizeof(x) == sizeof(float) ? __fpclassifyf((float)(x)) : sizeof(x) == sizeof(double) ? __fpclassifyd((double)(x)) : __fpclassifyl((long double)(x)))
-#define isnormal(x) ( sizeof(x) == sizeof(float) ? __inline_isnormalf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isnormald((double)(x)) : __inline_isnormall((long double)(x)))
-#define isfinite(x) ( sizeof(x) == sizeof(float) ? __inline_isfinitef((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isfinited((double)(x)) : __inline_isfinitel((long double)(x)))
-#define isinf(x) ( sizeof(x) == sizeof(float) ? __inline_isinff((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isinfd((double)(x)) : __inline_isinfl((long double)(x)))
-#define isnan(x) ( sizeof(x) == sizeof(float) ? __inline_isnanf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_isnand((double)(x)) : __inline_isnanl((long double)(x)))
-#define signbit(x) ( sizeof(x) == sizeof(float) ? __inline_signbitf((float)(x)) : sizeof(x) == sizeof(double) ? __inline_signbitd((double)(x)) : __inline_signbitl((long double)(x)))
-#define isgreater(x,y) __builtin_isgreater((x),(y))
-#define isgreaterequal(x,y) __builtin_isgreaterequal((x),(y))
-#define isless(x,y) __builtin_isless((x),(y))
-#define islessequal(x,y) __builtin_islessequal((x),(y))
-#define islessgreater(x,y) __builtin_islessgreater((x),(y))
-#define isunordered(x,y) __builtin_isunordered((x),(y))
-#define M_E 2.71828182845904523536028747135266250
-#define M_LOG2E 1.44269504088896340735992468100189214
-#define M_LOG10E 0.434294481903251827651128918916605082
-#define M_LN2 0.693147180559945309417232121458176568
-#define M_LN10 2.30258509299404568401799145468436421
-#define M_PI 3.14159265358979323846264338327950288
-#define M_PI_2 1.57079632679489661923132169163975144
-#define M_PI_4 0.785398163397448309615660845819875721
-#define M_1_PI 0.318309886183790671537767526745028724
-#define M_2_PI 0.636619772367581343075535053490057448
-#define M_2_SQRTPI 1.12837916709551257389615890312154517
-#define M_SQRT2 1.41421356237309504880168872420969808
-#define M_SQRT1_2 0.707106781186547524400844362104849039
-#define MAXFLOAT 0x1.fffffep+127f
-#define FP_SNAN FP_NAN
-#define FP_QNAN FP_NAN
-#define HUGE MAXFLOAT
-#define X_TLOSS 1.41484755040568800000e+16
-#define DOMAIN 1
-#define SING 2
-#define OVERFLOW 3
-#define UNDERFLOW 4
-#define TLOSS 5
-#define PLOSS 6
-#define _TIME_H_
-#define CLOCKS_PER_SEC ((clock_t)1000000)
-#define __CLOCK_AVAILABILITY __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
-#define CLOCK_REALTIME _CLOCK_REALTIME
-#define CLOCK_MONOTONIC _CLOCK_MONOTONIC
-#define CLOCK_MONOTONIC_RAW _CLOCK_MONOTONIC_RAW
-#define CLOCK_MONOTONIC_RAW_APPROX _CLOCK_MONOTONIC_RAW_APPROX
-#define CLOCK_UPTIME_RAW _CLOCK_UPTIME_RAW
-#define CLOCK_UPTIME_RAW_APPROX _CLOCK_UPTIME_RAW_APPROX
-#define CLOCK_PROCESS_CPUTIME_ID _CLOCK_PROCESS_CPUTIME_ID
-#define CLOCK_THREAD_CPUTIME_ID _CLOCK_THREAD_CPUTIME_ID
-#undef __CLOCK_AVAILABILITY
-#define TIME_UTC 1
-#define _SYS_TIME_H_
-#define _STRUCT_TIMEVAL64
-#define ITIMER_REAL 0
-#define ITIMER_VIRTUAL 1
-#define ITIMER_PROF 2
-#define TIMEVAL_TO_TIMESPEC(tv,ts) { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; }
-#define TIMESPEC_TO_TIMEVAL(tv,ts) { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; }
-#define DST_NONE 0
-#define DST_USA 1
-#define DST_AUST 2
-#define DST_WET 3
-#define DST_MET 4
-#define DST_EET 5
-#define DST_CAN 6
-#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
-#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
-#define timercmp(tvp,uvp,cmp) (((tvp)->tv_sec == (uvp)->tv_sec) ? ((tvp)->tv_usec cmp (uvp)->tv_usec) : ((tvp)->tv_sec cmp (uvp)->tv_sec))
-#define timeradd(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; if ((vvp)->tv_usec >= 1000000) { (vvp)->tv_sec++; (vvp)->tv_usec -= 1000000; } } while (0)
-#define timersub(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; if ((vvp)->tv_usec < 0) { (vvp)->tv_sec--; (vvp)->tv_usec += 1000000; } } while (0)
-#define timevalcmp(l,r,cmp) timercmp(l, r, cmp)
-#pragma GCC visibility push(default)
-#define HAVE_FINITE 1
-#define finite(x) isfinite(x)
-#pragma GCC visibility pop
-#define RUBY
-#define RB_GNUC_EXTENSION __extension__
-#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
-#define RUBY_MBCHAR_MAXSIZE INT_MAX
-#define FLUSH_REGISTER_WINDOWS ((void)0)
-#define RUBY_ABI_H
-#define RBIMPL_ANYARGS_H
-#define RBIMPL_ATTR_WEAKREF_H
-#define RBIMPL_ATTR_WEAKREF(sym) __attribute__((__weakref__(# sym)))
-#define RBIMPL_INTERN_CLASS_H
-#define RBIMPL_VALUE_H
-#define RBIMPL_STATIC_ASSERT_H
-#undef assert
-#undef __assert
-#define assert(e) ((void)0)
-#define _ASSERT_H_
-#define static_assert _Static_assert
-#define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert
-#define RBIMPL_STATIC_ASSERT(name,expr) RBIMPL_STATIC_ASSERT0(expr, # name ": " # expr)
-#define RUBY_BACKWARD2_LIMITS_H
-#define __CLANG_LIMITS_H
-#define _GCC_LIMITS_H_
-#define _LIMITS_H_
-#define _BSD_MACHINE_LIMITS_H_
-#define _I386_LIMITS_H_
-#define _I386__LIMITS_H_
-#define __DARWIN_CLK_TCK 100
-#define CHAR_BIT 8
-#define MB_LEN_MAX 6
-#define CLK_TCK __DARWIN_CLK_TCK
-#define SCHAR_MAX 127
-#define SCHAR_MIN (-128)
-#define UCHAR_MAX 255
-#define CHAR_MAX 127
-#define CHAR_MIN (-128)
-#define USHRT_MAX 65535
-#define SHRT_MAX 32767
-#define SHRT_MIN (-32768)
-#define UINT_MAX 0xffffffff
-#define INT_MAX 2147483647
-#define INT_MIN (-2147483647-1)
-#define ULONG_MAX 0xffffffffffffffffUL
-#define LONG_MAX 0x7fffffffffffffffL
-#define LONG_MIN (-0x7fffffffffffffffL-1)
-#define ULLONG_MAX 0xffffffffffffffffULL
-#define LLONG_MAX 0x7fffffffffffffffLL
-#define LLONG_MIN (-0x7fffffffffffffffLL-1)
-#define LONG_BIT 64
-#define SSIZE_MAX LONG_MAX
-#define WORD_BIT 32
-#define SIZE_T_MAX ULONG_MAX
-#define UQUAD_MAX ULLONG_MAX
-#define QUAD_MAX LLONG_MAX
-#define QUAD_MIN LLONG_MIN
-#define _SYS_SYSLIMITS_H_
-#define ARG_MAX (1024 * 1024)
-#define CHILD_MAX 266
-#define GID_MAX 2147483647U
-#define LINK_MAX 32767
-#define MAX_CANON 1024
-#define MAX_INPUT 1024
-#define NAME_MAX 255
-#define NGROUPS_MAX 16
-#define UID_MAX 2147483647U
-#define OPEN_MAX 10240
-#define PATH_MAX 1024
-#define PIPE_BUF 512
-#define BC_BASE_MAX 99
-#define BC_DIM_MAX 2048
-#define BC_SCALE_MAX 99
-#define BC_STRING_MAX 1000
-#define CHARCLASS_NAME_MAX 14
-#define COLL_WEIGHTS_MAX 2
-#define EQUIV_CLASS_MAX 2
-#define EXPR_NEST_MAX 32
-#define LINE_MAX 2048
-#define RE_DUP_MAX 255
-#define NZERO 20
-#define _POSIX_ARG_MAX 4096
-#define _POSIX_CHILD_MAX 25
-#define _POSIX_LINK_MAX 8
-#define _POSIX_MAX_CANON 255
-#define _POSIX_MAX_INPUT 255
-#define _POSIX_NAME_MAX 14
-#define _POSIX_NGROUPS_MAX 8
-#define _POSIX_OPEN_MAX 20
-#define _POSIX_PATH_MAX 256
-#define _POSIX_PIPE_BUF 512
-#define _POSIX_SSIZE_MAX 32767
-#define _POSIX_STREAM_MAX 8
-#define _POSIX_TZNAME_MAX 6
-#define _POSIX2_BC_BASE_MAX 99
-#define _POSIX2_BC_DIM_MAX 2048
-#define _POSIX2_BC_SCALE_MAX 99
-#define _POSIX2_BC_STRING_MAX 1000
-#define _POSIX2_EQUIV_CLASS_MAX 2
-#define _POSIX2_EXPR_NEST_MAX 32
-#define _POSIX2_LINE_MAX 2048
-#define _POSIX2_RE_DUP_MAX 255
-#define _POSIX_AIO_LISTIO_MAX 2
-#define _POSIX_AIO_MAX 1
-#define _POSIX_DELAYTIMER_MAX 32
-#define _POSIX_MQ_OPEN_MAX 8
-#define _POSIX_MQ_PRIO_MAX 32
-#define _POSIX_RTSIG_MAX 8
-#define _POSIX_SEM_NSEMS_MAX 256
-#define _POSIX_SEM_VALUE_MAX 32767
-#define _POSIX_SIGQUEUE_MAX 32
-#define _POSIX_TIMER_MAX 32
-#define _POSIX_CLOCKRES_MIN 20000000
-#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-#define _POSIX_THREAD_KEYS_MAX 128
-#define _POSIX_THREAD_THREADS_MAX 64
-#define PTHREAD_DESTRUCTOR_ITERATIONS 4
-#define PTHREAD_KEYS_MAX 512
-#define PTHREAD_STACK_MIN 8192
-#define _POSIX_HOST_NAME_MAX 255
-#define _POSIX_LOGIN_NAME_MAX 9
-#define _POSIX_SS_REPL_MAX 4
-#define _POSIX_SYMLINK_MAX 255
-#define _POSIX_SYMLOOP_MAX 8
-#define _POSIX_TRACE_EVENT_NAME_MAX 30
-#define _POSIX_TRACE_NAME_MAX 8
-#define _POSIX_TRACE_SYS_MAX 8
-#define _POSIX_TRACE_USER_EVENT_MAX 32
-#define _POSIX_TTY_NAME_MAX 9
-#define _POSIX2_CHARCLASS_NAME_MAX 14
-#define _POSIX2_COLL_WEIGHTS_MAX 2
-#define _POSIX_RE_DUP_MAX _POSIX2_RE_DUP_MAX
-#define OFF_MIN LLONG_MIN
-#define OFF_MAX LLONG_MAX
-#define PASS_MAX 128
-#define NL_ARGMAX 9
-#define NL_LANGMAX 14
-#define NL_MSGMAX 32767
-#define NL_NMAX 1
-#define NL_SETMAX 255
-#define NL_TEXTMAX 2048
-#define _XOPEN_IOV_MAX 16
-#define IOV_MAX 1024
-#define _XOPEN_NAME_MAX 255
-#define _XOPEN_PATH_MAX 1024
-#undef SCHAR_MIN
-#undef SCHAR_MAX
-#undef UCHAR_MAX
-#undef SHRT_MIN
-#undef SHRT_MAX
-#undef USHRT_MAX
-#undef INT_MIN
-#undef INT_MAX
-#undef UINT_MAX
-#undef LONG_MIN
-#undef LONG_MAX
-#undef ULONG_MAX
-#undef CHAR_BIT
-#undef CHAR_MIN
-#undef CHAR_MAX
-#define SCHAR_MAX __SCHAR_MAX__
-#define SHRT_MAX __SHRT_MAX__
-#define INT_MAX __INT_MAX__
-#define LONG_MAX __LONG_MAX__
-#define SCHAR_MIN (-__SCHAR_MAX__-1)
-#define SHRT_MIN (-__SHRT_MAX__ -1)
-#define INT_MIN (-__INT_MAX__ -1)
-#define LONG_MIN (-__LONG_MAX__ -1L)
-#define UCHAR_MAX (__SCHAR_MAX__*2 +1)
-#define USHRT_MAX (__SHRT_MAX__ *2 +1)
-#define UINT_MAX (__INT_MAX__ *2U +1U)
-#define ULONG_MAX (__LONG_MAX__ *2UL+1UL)
-#define CHAR_BIT __CHAR_BIT__
-#define CHAR_MIN SCHAR_MIN
-#define CHAR_MAX __SCHAR_MAX__
-#undef LLONG_MIN
-#undef LLONG_MAX
-#undef ULLONG_MAX
-#define LLONG_MAX __LONG_LONG_MAX__
-#define LLONG_MIN (-__LONG_LONG_MAX__-1LL)
-#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
-#undef LONG_LONG_MIN
-#undef LONG_LONG_MAX
-#undef ULONG_LONG_MAX
-#define LONG_LONG_MAX __LONG_LONG_MAX__
-#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL)
-#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
-#define SIGNED_VALUE long
-#define SIZEOF_VALUE SIZEOF_LONG
-#define PRI_VALUE_PREFIX "l"
-#define RBIMPL_VALUE_NULL 0UL
-#define RBIMPL_VALUE_ONE 1UL
-#define RBIMPL_VALUE_FULL ULONG_MAX
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_VM_H
-#pragma GCC visibility push(default)
-#define HAVE_RB_DEFINE_ALLOC_FUNC 1
-#pragma GCC visibility pop
-#define RBIMPL_METHOD_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_CFUNC_IS_rb_f_notimplement(f) __builtin_types_compatible_p( __typeof__(f), __typeof__(rb_f_notimplement))
-#define RBIMPL_ANYARGS_DISPATCH(expr,truthy,falsy) __builtin_choose_expr( __builtin_choose_expr( __builtin_constant_p(expr), (expr), 0), (truthy), (falsy))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_singleton_method_m2, rb_define_singleton_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_singleton_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_singleton_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_singleton_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_singleton_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_singleton_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_singleton_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_singleton_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_singleton_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_singleton_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_singleton_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_singleton_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_singleton_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_singleton_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_singleton_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_singleton_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_singleton_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_singleton_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_protected_method_m2, rb_define_protected_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_protected_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_protected_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_protected_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_protected_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_protected_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_protected_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_protected_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_protected_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_protected_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_protected_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_protected_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_protected_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_protected_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_protected_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_protected_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_protected_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_protected_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_private_method_m2, rb_define_private_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_private_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_private_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_private_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_private_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_private_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_private_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_private_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_private_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_private_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_private_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_private_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_private_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_private_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_private_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_private_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_private_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_private_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_module_function_m2, rb_define_module_function_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_module_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_module_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_module_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_module_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_module_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_module_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_module_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_module_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_module_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_module_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_module_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_module_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_module_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_module_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_module_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_module_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_module_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_global_function_m2, rb_define_global_function_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_global_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_global_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_global_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_global_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_global_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_global_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_global_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_global_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_global_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_global_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_global_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_global_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_global_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_global_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_global_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_global_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_global_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_id_m2, rb_define_method_id_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_id_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_id_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_id_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_id_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_id_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_id_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_id_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_id_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_id_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_id_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_id_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_id_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_id_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_id_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_id_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_id_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_id_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_m2, rb_define_method_m3)
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_singleton_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_protected_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_private_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_module_function_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_global_function_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_id_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n))
-#define RBIMPL_ANYARGS_DISPATCH_rb_define_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_notimpl, RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n))
-#define RBIMPL_ANYARGS_ATTRSET(sym) RBIMPL_ATTR_MAYBE_UNUSED() RBIMPL_ATTR_NONNULL(()) RBIMPL_ATTR_WEAKREF(sym)
-#define RBIMPL_ANYARGS_DECL(sym,...) RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _notimpl(__VA_ARGS__, VALUE(*)(int, const VALUE *, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m3(__VA_ARGS__, VALUE(*)(ANYARGS), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m2(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m1(__VA_ARGS__, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _02(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _03(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _04(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _05(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _06(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _07(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _08(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _09(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _10(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _11(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _12(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _13(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _14(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _15(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
-#define rb_define_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_method_id(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method_id((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_singleton_method(obj,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method((arity), (func))((obj), (mid), (func), (arity))
-#define rb_define_protected_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_private_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_private_method((arity), (func))((klass), (mid), (func), (arity))
-#define rb_define_module_function(mod,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_module_function((arity), (func))((mod), (mid), (func), (arity))
-#define rb_define_global_function(mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_global_function((arity), (func))((mid), (func), (arity))
-#define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func))
-#define RBIMPL_ARITHMETIC_H
-#define RBIMPL_ARITHMETIC_CHAR_H
-#define RBIMPL_ARITHMETIC_INT_H
-#define RBIMPL_ARITHMETIC_FIXNUM_H
-#define FIXABLE RB_FIXABLE
-#define FIXNUM_MAX RUBY_FIXNUM_MAX
-#define FIXNUM_MIN RUBY_FIXNUM_MIN
-#define NEGFIXABLE RB_NEGFIXABLE
-#define POSFIXABLE RB_POSFIXABLE
-#define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1)
-#define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN)
-#define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_))
-#define RUBY_FIXNUM_MAX (LONG_MAX / 2)
-#define RUBY_FIXNUM_MIN (LONG_MIN / 2)
-#define RBIMPL_ARITHMETIC_INTPTR_T_H
-#define rb_int_new rb_int2inum
-#define rb_uint_new rb_uint2inum
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_LONG_H
-#define RBIMPL_ATTR_ARTIFICIAL_H
-#define RBIMPL_ATTR_ARTIFICIAL() __attribute__((__artificial__))
-#define RBIMPL_ATTR_CONSTEXPR_H
-#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0
-#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
-#define RBIMPL_ATTR_CONSTEXPR(_)
-#define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
-#define RBIMPL_SPECIAL_CONSTS_H
-#define RBIMPL_ATTR_ENUM_EXTENSIBILITY_H
-#define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_) __attribute__((__enum_extensibility__(_)))
-#define USE_FLONUM 1
-#define RTEST RB_TEST
-#define FIXNUM_P RB_FIXNUM_P
-#define IMMEDIATE_P RB_IMMEDIATE_P
-#define NIL_P RB_NIL_P
-#define SPECIAL_CONST_P RB_SPECIAL_CONST_P
-#define STATIC_SYM_P RB_STATIC_SYM_P
-#define Qfalse RUBY_Qfalse
-#define Qnil RUBY_Qnil
-#define Qtrue RUBY_Qtrue
-#define Qundef RUBY_Qundef
-#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
-#define FLONUM_FLAG RUBY_FLONUM_FLAG
-#define FLONUM_MASK RUBY_FLONUM_MASK
-#define FLONUM_P RB_FLONUM_P
-#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
-#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
-#define RB_FIXNUM_P RB_FIXNUM_P
-#define RB_FLONUM_P RB_FLONUM_P
-#define RB_IMMEDIATE_P RB_IMMEDIATE_P
-#define RB_NIL_P RB_NIL_P
-#define RB_SPECIAL_CONST_P RB_SPECIAL_CONST_P
-#define RB_STATIC_SYM_P RB_STATIC_SYM_P
-#define RB_TEST RB_TEST
-#define RB_UNDEF_P RB_UNDEF_P
-#define RB_NIL_OR_UNDEF_P RB_NIL_OR_UNDEF_P
-#define RUBY_Qfalse RBIMPL_CAST((VALUE)RUBY_Qfalse)
-#define RUBY_Qtrue RBIMPL_CAST((VALUE)RUBY_Qtrue)
-#define RUBY_Qnil RBIMPL_CAST((VALUE)RUBY_Qnil)
-#define RUBY_Qundef RBIMPL_CAST((VALUE)RUBY_Qundef)
-#define FIX2LONG RB_FIX2LONG
-#define FIX2ULONG RB_FIX2ULONG
-#define INT2FIX RB_INT2FIX
-#define LONG2FIX RB_INT2FIX
-#define LONG2NUM RB_LONG2NUM
-#define NUM2LONG RB_NUM2LONG
-#define NUM2ULONG RB_NUM2ULONG
-#define RB_FIX2LONG rb_fix2long
-#define RB_FIX2ULONG rb_fix2ulong
-#define RB_LONG2FIX RB_INT2FIX
-#define RB_LONG2NUM rb_long2num_inline
-#define RB_NUM2LONG rb_num2long_inline
-#define RB_NUM2ULONG rb_num2ulong_inline
-#define RB_ULONG2NUM rb_ulong2num_inline
-#define ULONG2NUM RB_ULONG2NUM
-#define rb_fix_new RB_INT2FIX
-#define rb_long2int rb_long2int_inline
-#define RB_INT2FIX RB_INT2FIX
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#undef INT2FIX
-#define INT2FIX(i) __builtin_choose_expr( __builtin_constant_p(i), RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(i))
-#define RB_INT2NUM rb_int2num_inline
-#define RB_NUM2INT rb_num2int_inline
-#define RB_UINT2NUM rb_uint2num_inline
-#define FIX2INT RB_FIX2INT
-#define FIX2UINT RB_FIX2UINT
-#define INT2NUM RB_INT2NUM
-#define NUM2INT RB_NUM2INT
-#define NUM2UINT RB_NUM2UINT
-#define UINT2NUM RB_UINT2NUM
-#define RB_FIX2INT RB_FIX2INT
-#define RB_NUM2UINT RB_NUM2UINT
-#define RB_FIX2UINT RB_FIX2UINT
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare"
-#pragma clang diagnostic pop
-#define RBIMPL_RSTRING_H
-#define RBIMPL_RBASIC_H
-#define RBIMPL_ATTR_NOALIAS_H
-#define RBIMPL_ATTR_NOALIAS() __declspec(noalias)
-#define RBASIC(obj) RBIMPL_CAST((struct RBasic *)(obj))
-#define RBASIC_CLASS RBASIC_CLASS
-#define RBIMPL_RVALUE_EMBED_LEN_MAX 3
-#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
-#define RBIMPL_EMBED_LEN_MAX_OF(T) RBIMPL_CAST((int)(sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]) / (sizeof(T))))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_FL_TYPE_H
-#define RBIMPL_ATTR_FLAG_ENUM_H
-#define RBIMPL_ATTR_FLAG_ENUM() __attribute__((__flag_enum__))
-#define RBIMPL_VALUE_TYPE_H
-#define RBIMPL_CONSTANT_P_H
-#define RBIMPL_CONSTANT_P(expr) __builtin_constant_p(expr)
-#define RBIMPL_ERROR_H
-#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
-#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
-#pragma GCC visibility push(default)
-#define ruby_verbose (*rb_ruby_verbose_ptr())
-#define ruby_debug (*rb_ruby_debug_ptr())
-#pragma GCC visibility pop
-#define T_ARRAY RUBY_T_ARRAY
-#define T_BIGNUM RUBY_T_BIGNUM
-#define T_CLASS RUBY_T_CLASS
-#define T_COMPLEX RUBY_T_COMPLEX
-#define T_DATA RUBY_T_DATA
-#define T_FALSE RUBY_T_FALSE
-#define T_FILE RUBY_T_FILE
-#define T_FIXNUM RUBY_T_FIXNUM
-#define T_FLOAT RUBY_T_FLOAT
-#define T_HASH RUBY_T_HASH
-#define T_ICLASS RUBY_T_ICLASS
-#define T_IMEMO RUBY_T_IMEMO
-#define T_MASK RUBY_T_MASK
-#define T_MATCH RUBY_T_MATCH
-#define T_MODULE RUBY_T_MODULE
-#define T_MOVED RUBY_T_MOVED
-#define T_NIL RUBY_T_NIL
-#define T_NODE RUBY_T_NODE
-#define T_NONE RUBY_T_NONE
-#define T_OBJECT RUBY_T_OBJECT
-#define T_RATIONAL RUBY_T_RATIONAL
-#define T_REGEXP RUBY_T_REGEXP
-#define T_STRING RUBY_T_STRING
-#define T_STRUCT RUBY_T_STRUCT
-#define T_SYMBOL RUBY_T_SYMBOL
-#define T_TRUE RUBY_T_TRUE
-#define T_UNDEF RUBY_T_UNDEF
-#define T_ZOMBIE RUBY_T_ZOMBIE
-#define BUILTIN_TYPE RB_BUILTIN_TYPE
-#define DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
-#define RB_INTEGER_TYPE_P rb_integer_type_p
-#define SYMBOL_P RB_SYMBOL_P
-#define rb_type_p RB_TYPE_P
-#define RB_BUILTIN_TYPE RB_BUILTIN_TYPE
-#define RB_DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
-#define RB_FLOAT_TYPE_P RB_FLOAT_TYPE_P
-#define RB_SYMBOL_P RB_SYMBOL_P
-#define RB_TYPE_P RB_TYPE_P
-#define Check_Type Check_Type
-#define RBIMPL_ASSERT_TYPE(v,t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
-#define TYPE(_) RBIMPL_CAST((int)rb_type(_))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#undef RB_TYPE_P
-#define RB_TYPE_P(obj,t) (RBIMPL_CONSTANT_P(t) ? rbimpl_RB_TYPE_P_fastpath((obj), (t)) : (RB_TYPE_P)((obj), (t)))
-#define RBIMPL_HAVE_ENUM_ATTRIBUTE 1
-#define RBIMPL_WIDER_ENUM 1
-#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON)
-#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED)
-#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0)
-#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1)
-#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE)
-#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT)
-#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE)
-#define FL_UNTRUSTED RBIMPL_CAST((VALUE)RUBY_FL_UNTRUSTED)
-#define FL_SEEN_OBJ_ID RBIMPL_CAST((VALUE)RUBY_FL_SEEN_OBJ_ID)
-#define FL_EXIVAR RBIMPL_CAST((VALUE)RUBY_FL_EXIVAR)
-#define FL_FREEZE RBIMPL_CAST((VALUE)RUBY_FL_FREEZE)
-#define FL_USHIFT RBIMPL_CAST((VALUE)RUBY_FL_USHIFT)
-#define FL_USER0 RBIMPL_CAST((VALUE)RUBY_FL_USER0)
-#define FL_USER1 RBIMPL_CAST((VALUE)RUBY_FL_USER1)
-#define FL_USER2 RBIMPL_CAST((VALUE)RUBY_FL_USER2)
-#define FL_USER3 RBIMPL_CAST((VALUE)RUBY_FL_USER3)
-#define FL_USER4 RBIMPL_CAST((VALUE)RUBY_FL_USER4)
-#define FL_USER5 RBIMPL_CAST((VALUE)RUBY_FL_USER5)
-#define FL_USER6 RBIMPL_CAST((VALUE)RUBY_FL_USER6)
-#define FL_USER7 RBIMPL_CAST((VALUE)RUBY_FL_USER7)
-#define FL_USER8 RBIMPL_CAST((VALUE)RUBY_FL_USER8)
-#define FL_USER9 RBIMPL_CAST((VALUE)RUBY_FL_USER9)
-#define FL_USER10 RBIMPL_CAST((VALUE)RUBY_FL_USER10)
-#define FL_USER11 RBIMPL_CAST((VALUE)RUBY_FL_USER11)
-#define FL_USER12 RBIMPL_CAST((VALUE)RUBY_FL_USER12)
-#define FL_USER13 RBIMPL_CAST((VALUE)RUBY_FL_USER13)
-#define FL_USER14 RBIMPL_CAST((VALUE)RUBY_FL_USER14)
-#define FL_USER15 RBIMPL_CAST((VALUE)RUBY_FL_USER15)
-#define FL_USER16 RBIMPL_CAST((VALUE)RUBY_FL_USER16)
-#define FL_USER17 RBIMPL_CAST((VALUE)RUBY_FL_USER17)
-#define FL_USER18 RBIMPL_CAST((VALUE)RUBY_FL_USER18)
-#define FL_USER19 RBIMPL_CAST((VALUE)(unsigned int)RUBY_FL_USER19)
-#define ELTS_SHARED RUBY_ELTS_SHARED
-#define RB_OBJ_FREEZE rb_obj_freeze_inline
-#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
-#define RB_FL_ABLE RB_FL_ABLE
-#define RB_FL_ALL RB_FL_ALL
-#define RB_FL_ALL_RAW RB_FL_ALL_RAW
-#define RB_FL_ANY RB_FL_ANY
-#define RB_FL_ANY_RAW RB_FL_ANY_RAW
-#define RB_FL_REVERSE RB_FL_REVERSE
-#define RB_FL_REVERSE_RAW RB_FL_REVERSE_RAW
-#define RB_FL_SET RB_FL_SET
-#define RB_FL_SET_RAW RB_FL_SET_RAW
-#define RB_FL_TEST RB_FL_TEST
-#define RB_FL_TEST_RAW RB_FL_TEST_RAW
-#define RB_FL_UNSET RB_FL_UNSET
-#define RB_FL_UNSET_RAW RB_FL_UNSET_RAW
-#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
-#define RB_OBJ_FROZEN RB_OBJ_FROZEN
-#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define RB_OBJ_INFECT RB_OBJ_INFECT
-#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define RB_OBJ_TAINT RB_OBJ_TAINT
-#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define RB_OBJ_TAINTED RB_OBJ_TAINTED
-#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
-#define RB_OBJ_UNTRUST RB_OBJ_TAINT
-#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED
-#define FL_ABLE RB_FL_ABLE
-#define FL_ALL RB_FL_ALL
-#define FL_ALL_RAW RB_FL_ALL_RAW
-#define FL_ANY RB_FL_ANY
-#define FL_ANY_RAW RB_FL_ANY_RAW
-#define FL_REVERSE RB_FL_REVERSE
-#define FL_REVERSE_RAW RB_FL_REVERSE_RAW
-#define FL_SET RB_FL_SET
-#define FL_SET_RAW RB_FL_SET_RAW
-#define FL_TEST RB_FL_TEST
-#define FL_TEST_RAW RB_FL_TEST_RAW
-#define FL_UNSET RB_FL_UNSET
-#define FL_UNSET_RAW RB_FL_UNSET_RAW
-#define OBJ_FREEZE RB_OBJ_FREEZE
-#define OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
-#define OBJ_FROZEN RB_OBJ_FROZEN
-#define OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define OBJ_INFECT RB_OBJ_INFECT
-#define OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define OBJ_TAINT RB_OBJ_TAINT
-#define OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define OBJ_TAINTED RB_OBJ_TAINTED
-#define OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
-#define OBJ_UNTRUST RB_OBJ_UNTRUST
-#define OBJ_UNTRUSTED RB_OBJ_UNTRUSTED
-#define RBIMPL_FL_USER_N(n) RUBY_FL_USER##n = (1<<(RUBY_FL_USHIFT+n))
-#undef RBIMPL_FL_USER_N
-#undef RBIMPL_WIDER_ENUM
-#undef RBIMPL_HAVE_ENUM_ATTRIBUTE
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RSTRING(obj) RBIMPL_CAST((struct RString *)(obj))
-#define RSTRING_NOEMBED RSTRING_NOEMBED
-#define RSTRING_FSTR RSTRING_FSTR
-#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN
-#define RSTRING_LEN RSTRING_LEN
-#define RSTRING_LENINT RSTRING_LENINT
-#define RSTRING_PTR RSTRING_PTR
-#define RSTRING_END RSTRING_END
-#define StringValue(v) rb_string_value(&(v))
-#define StringValuePtr(v) rb_string_value_ptr(&(v))
-#define StringValueCStr(v) rb_string_value_cstr(&(v))
-#define SafeStringValue(v) StringValue(v)
-#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v); } while (0)
-#pragma GCC visibility push(default)
-#define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v)))
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic pop
-#define RSTRING_GETMEM(str,ptrvar,lenvar) __extension__ ({ struct RString rbimpl_str = rbimpl_rstring_getmem(str); (ptrvar) = rbimpl_str.as.heap.ptr; (lenvar) = rbimpl_str.as.heap.len; })
-#define RB_NUM2CHR rb_num2char_inline
-#define NUM2CHR RB_NUM2CHR
-#define CHR2FIX RB_CHR2FIX
-#define RB_CHR2FIX RB_CHR2FIX
-#define RBIMPL_ARITHMETIC_DOUBLE_H
-#define NUM2DBL rb_num2dbl
-#define RFLOAT_VALUE rb_float_value
-#define DBL2NUM rb_float_new
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_GID_T_H
-#define RBIMPL_ARITHMETIC_LONG_LONG_H
-#define RB_LL2NUM rb_ll2num_inline
-#define RB_ULL2NUM rb_ull2num_inline
-#define LL2NUM RB_LL2NUM
-#define ULL2NUM RB_ULL2NUM
-#define RB_NUM2LL rb_num2ll_inline
-#define RB_NUM2ULL rb_num2ull_inline
-#define NUM2LL RB_NUM2LL
-#define NUM2ULL RB_NUM2ULL
-#pragma GCC visibility push(default)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#define RBIMPL_ARITHMETIC_MODE_T_H
-#define RBIMPL_ARITHMETIC_OFF_T_H
-#define RBIMPL_ARITHMETIC_PID_T_H
-#define RBIMPL_ARITHMETIC_SHORT_H
-#define RB_NUM2SHORT rb_num2short_inline
-#define RB_NUM2USHORT rb_num2ushort
-#define NUM2SHORT RB_NUM2SHORT
-#define NUM2USHORT RB_NUM2USHORT
-#define USHORT2NUM RB_INT2FIX
-#define RB_FIX2SHORT rb_fix2short
-#define FIX2SHORT RB_FIX2SHORT
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ARITHMETIC_SIZE_T_H
-#define RB_SIZE2NUM RB_ULL2NUM
-#define RB_SSIZE2NUM RB_LL2NUM
-#define RB_NUM2SIZE RB_NUM2ULL
-#define RB_NUM2SSIZE RB_NUM2LL
-#define NUM2SIZET RB_NUM2SIZE
-#define SIZET2NUM RB_SIZE2NUM
-#define NUM2SSIZET RB_NUM2SSIZE
-#define SSIZET2NUM RB_SSIZE2NUM
-#define RBIMPL_ARITHMERIC_ST_DATA_T_H
-#define RUBY_ST_H 1
-#pragma GCC visibility push(default)
-#define ST_DATA_T_DEFINED
-#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
-#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
-#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
-#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
-#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
-#define st_init_table rb_st_init_table
-#define st_init_table_with_size rb_st_init_table_with_size
-#define st_init_numtable rb_st_init_numtable
-#define st_init_numtable_with_size rb_st_init_numtable_with_size
-#define st_init_strtable rb_st_init_strtable
-#define st_init_strtable_with_size rb_st_init_strtable_with_size
-#define st_init_strcasetable rb_st_init_strcasetable
-#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
-#define st_delete rb_st_delete
-#define st_delete_safe rb_st_delete_safe
-#define st_shift rb_st_shift
-#define st_insert rb_st_insert
-#define st_insert2 rb_st_insert2
-#define st_lookup rb_st_lookup
-#define st_get_key rb_st_get_key
-#define st_update rb_st_update
-#define st_foreach_with_replace rb_st_foreach_with_replace
-#define st_foreach rb_st_foreach
-#define st_foreach_check rb_st_foreach_check
-#define st_keys rb_st_keys
-#define st_keys_check rb_st_keys_check
-#define st_values rb_st_values
-#define st_values_check rb_st_values_check
-#define st_add_direct rb_st_add_direct
-#define st_free_table rb_st_free_table
-#define st_cleanup_safe rb_st_cleanup_safe
-#define st_clear rb_st_clear
-#define st_copy rb_st_copy
-#define st_numcmp rb_st_numcmp
-#define st_numhash rb_st_numhash
-#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
-#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
-#define st_strcasecmp rb_st_locale_insensitive_strcasecmp
-#define st_strncasecmp rb_st_locale_insensitive_strncasecmp
-#define st_memsize rb_st_memsize
-#define st_hash rb_st_hash
-#define st_hash_uint32 rb_st_hash_uint32
-#define st_hash_uint rb_st_hash_uint
-#define st_hash_end rb_st_hash_end
-#define st_hash_start(h) ((st_index_t)(h))
-#pragma GCC visibility pop
-#define ST2FIX RB_ST2FIX
-#define RB_ST2FIX RB_ST2FIX
-#define RBIMPL_ARITHMETIC_UID_T_H
-#define RBIMPL_CORE_H
-#define RBIMPL_RARRAY_H
-#define RBIMPL_RGENGC_H
-#undef USE_RGENGC
-#define USE_RGENGC 1
-#define USE_RINCGC 1
-#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
-#define RGENGC_WB_PROTECTED_ARRAY 1
-#define RGENGC_WB_PROTECTED_HASH 1
-#define RGENGC_WB_PROTECTED_STRUCT 1
-#define RGENGC_WB_PROTECTED_STRING 1
-#define RGENGC_WB_PROTECTED_OBJECT 1
-#define RGENGC_WB_PROTECTED_REGEXP 1
-#define RGENGC_WB_PROTECTED_CLASS 1
-#define RGENGC_WB_PROTECTED_FLOAT 1
-#define RGENGC_WB_PROTECTED_COMPLEX 1
-#define RGENGC_WB_PROTECTED_RATIONAL 1
-#define RGENGC_WB_PROTECTED_BIGNUM 1
-#define RGENGC_WB_PROTECTED_NODE_CREF 1
-#define RB_OBJ_WRITE(old,slot,young) RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
-#define RB_OBJ_WRITTEN(old,oldv,young) RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
-#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define OBJ_PROMOTED RB_OBJ_PROMOTED
-#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT
-#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
-#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
-#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
-#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define USE_TRANSIENT_HEAP 1
-#define RARRAY(obj) RBIMPL_CAST((struct RArray *)(obj))
-#define RARRAY_EMBED_FLAG RARRAY_EMBED_FLAG
-#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK
-#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
-#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
-#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
-#define RARRAY_LEN rb_array_len
-#define RARRAY_CONST_PTR rb_array_const_ptr
-#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient
-#define FIX_CONST_VALUE_PTR(x) (x)
-#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN
-#define RARRAY_LENINT RARRAY_LENINT
-#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P
-#define RARRAY_ASET RARRAY_ASET
-#define RARRAY_PTR RARRAY_PTR
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RARRAY_STMT(flag,ary,var,expr) do { RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); const VALUE rbimpl_ary = (ary); VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); expr; rb_array_ptr_use_end(rbimpl_ary, (flag)); } while (0)
-#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
-#define RARRAY_PTR_USE(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr)
-#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr)
-#define RARRAY_AREF(a,i) RARRAY_CONST_PTR_TRANSIENT(a)[i]
-#define RBIMPL_RBIGNUM_H
-#define RBIGNUM_SIGN rb_big_sign
-#define RBIGNUM_POSITIVE_P RBIGNUM_POSITIVE_P
-#define RBIGNUM_NEGATIVE_P RBIGNUM_NEGATIVE_P
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RCLASS_H
-#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
-#define RCLASS(obj) RBIMPL_CAST((struct RClass *)(obj))
-#define RMODULE RCLASS
-#define RCLASS_SUPER rb_class_get_superclass
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RDATA_H
-#define RUBY_UNTYPED_DATA_WARNING 1
-#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f))
-#define RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() RBIMPL_ATTR_WARNING(("untyped Data is unsafe; use TypedData instead")) RBIMPL_ATTR_DEPRECATED(("by TypedData"))
-#define RBIMPL_MACRO_SELECT(x,y) x ## y
-#define RUBY_MACRO_SELECT(x,y) RBIMPL_MACRO_SELECT(x, y)
-#define RDATA(obj) RBIMPL_CAST((struct RData *)(obj))
-#define DATA_PTR(obj) RDATA(obj)->data
-#define RUBY_DEFAULT_FREE RBIMPL_DATA_FUNC(-1)
-#define RUBY_NEVER_FREE RBIMPL_DATA_FUNC(0)
-#define RUBY_UNTYPED_DATA_FUNC(f) f RBIMPL_ATTRSET_UNTYPED_DATA_FUNC()
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap( (klass), (sval), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free))
-#define Data_Make_Struct0(result,klass,type,size,mark,free,sval) VALUE result = rb_data_object_zalloc( (klass), (size), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free)); (sval) = RBIMPL_CAST((type *)DATA_PTR(result)); RBIMPL_CAST( (void)(sval))
-#define Data_Make_Struct(klass,type,mark,free,sval) RB_GNUC_EXTENSION({ Data_Make_Struct0( data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj; })
-#define Data_Get_Struct(obj,type,sval) ((sval) = RBIMPL_CAST((type*)rb_data_object_get(obj)))
-#define rb_data_object_wrap_warning(klass,ptr,mark,free) RB_GNUC_EXTENSION( __builtin_choose_expr( __builtin_constant_p(klass) && !(klass), rb_data_object_wrap(klass, ptr, mark, free), (rb_data_object_wrap_warning)(klass, ptr, mark, free)))
-#define rb_data_object_wrap_0 rb_data_object_wrap
-#define rb_data_object_wrap_1 rb_data_object_wrap_warning
-#define rb_data_object_wrap_2 rb_data_object_wrap_
-#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_2, RUBY_UNTYPED_DATA_WARNING)
-#define rb_data_object_get_0 rb_data_object_get
-#define rb_data_object_get_1 rb_data_object_get_warning
-#define rb_data_object_get_2 rb_data_object_get_
-#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_2, RUBY_UNTYPED_DATA_WARNING)
-#define rb_data_object_make_0 rb_data_object_make
-#define rb_data_object_make_1 rb_data_object_make_warning
-#define rb_data_object_make_2 rb_data_object_make_
-#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_2, RUBY_UNTYPED_DATA_WARNING)
-#define RBIMPL_RFILE_H
-#define RFILE(obj) RBIMPL_CAST((struct RFile *)(obj))
-#define RBIMPL_RHASH_H
-#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
-#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
-#define RHASH_IFNONE(h) rb_hash_ifnone(h)
-#define RHASH_SIZE(h) rb_hash_size_num(h)
-#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
-#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_ROBJECT_H
-#define ROBJECT(obj) RBIMPL_CAST((struct RObject *)(obj))
-#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
-#define ROBJECT_EMBED ROBJECT_EMBED
-#define ROBJECT_IV_CAPACITY ROBJECT_IV_CAPACITY
-#define ROBJECT_IVPTR ROBJECT_IVPTR
-#define RBIMPL_RREGEXP_H
-#define RREGEXP(obj) RBIMPL_CAST((struct RRegexp *)(obj))
-#define RREGEXP_PTR(obj) (RREGEXP(obj)->ptr)
-#define RREGEXP_SRC RREGEXP_SRC
-#define RREGEXP_SRC_PTR RREGEXP_SRC_PTR
-#define RREGEXP_SRC_LEN RREGEXP_SRC_LEN
-#define RREGEXP_SRC_END RREGEXP_SRC_END
-#define RBIMPL_RSTRUCT_H
-#define RSTRUCT_PTR(st) rb_struct_ptr(st)
-#define RSTRUCT_LEN RSTRUCT_LEN
-#define RSTRUCT_SET RSTRUCT_SET
-#define RSTRUCT_GET RSTRUCT_GET
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_RTYPEDDATA_H
-#define HAVE_TYPE_RB_DATA_TYPE_T 1
-#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
-#define HAVE_RB_DATA_TYPE_T_PARENT 1
-#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
-#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
-#define RTYPEDDATA(obj) RBIMPL_CAST((struct RTypedData *)(obj))
-#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
-#define Check_TypedStruct(v,t) rb_check_typeddata(RBIMPL_CAST((VALUE)(v)), (t))
-#define RTYPEDDATA_P RTYPEDDATA_P
-#define RTYPEDDATA_TYPE RTYPEDDATA_TYPE
-#define RUBY_TYPED_FREE_IMMEDIATELY RUBY_TYPED_FREE_IMMEDIATELY
-#define RUBY_TYPED_FROZEN_SHAREABLE RUBY_TYPED_FROZEN_SHAREABLE
-#define RUBY_TYPED_WB_PROTECTED RUBY_TYPED_WB_PROTECTED
-#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
-#define TypedData_Make_Struct0(result,klass,type,size,data_type,sval) VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); RBIMPL_CAST( (void)(sval))
-#define TypedData_Make_Struct(klass,type,data_type,sval) RB_GNUC_EXTENSION({ TypedData_Make_Struct0( data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj; })
-#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type))))
-#define RBIMPL_CTYPE_H
-#define _CTYPE_H_
-#define __CTYPE_H_
-#define _RUNETYPE_H_
-#define _WINT_T
-#define _CACHED_RUNES (1 <<8 )
-#define _CRMASK (~(_CACHED_RUNES - 1))
-#define _RUNE_MAGIC_A "RuneMagA"
-#define _CTYPE_A 0x00000100L
-#define _CTYPE_C 0x00000200L
-#define _CTYPE_D 0x00000400L
-#define _CTYPE_G 0x00000800L
-#define _CTYPE_L 0x00001000L
-#define _CTYPE_P 0x00002000L
-#define _CTYPE_S 0x00004000L
-#define _CTYPE_U 0x00008000L
-#define _CTYPE_X 0x00010000L
-#define _CTYPE_B 0x00020000L
-#define _CTYPE_R 0x00040000L
-#define _CTYPE_I 0x00080000L
-#define _CTYPE_T 0x00100000L
-#define _CTYPE_Q 0x00200000L
-#define _CTYPE_SW0 0x20000000L
-#define _CTYPE_SW1 0x40000000L
-#define _CTYPE_SW2 0x80000000L
-#define _CTYPE_SW3 0xc0000000L
-#define _CTYPE_SWM 0xe0000000L
-#define _CTYPE_SWS 30
-#define __DARWIN_CTYPE_inline __header_inline
-#define __DARWIN_CTYPE_TOP_inline __header_inline
-#define _tolower(c) __tolower(c)
-#define _toupper(c) __toupper(c)
-#define ISASCII rb_isascii
-#define ISPRINT rb_isprint
-#define ISGRAPH rb_isgraph
-#define ISSPACE rb_isspace
-#define ISUPPER rb_isupper
-#define ISLOWER rb_islower
-#define ISALNUM rb_isalnum
-#define ISALPHA rb_isalpha
-#define ISDIGIT rb_isdigit
-#define ISXDIGIT rb_isxdigit
-#define ISBLANK rb_isblank
-#define ISCNTRL rb_iscntrl
-#define ISPUNCT rb_ispunct
-#define TOUPPER rb_toupper
-#define TOLOWER rb_tolower
-#define STRCASECMP st_locale_insensitive_strcasecmp
-#define STRNCASECMP st_locale_insensitive_strncasecmp
-#define STRTOUL ruby_strtoul
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_EVAL_H
-#pragma GCC visibility push(default)
-#define rb_funcall2 rb_funcallv
-#define rb_funcall3 rb_funcallv_public
-#pragma GCC visibility pop
-#define RBIMPL_EVENT_H
-#define RUBY_EVENT_NONE 0x0000
-#define RUBY_EVENT_LINE 0x0001
-#define RUBY_EVENT_CLASS 0x0002
-#define RUBY_EVENT_END 0x0004
-#define RUBY_EVENT_CALL 0x0008
-#define RUBY_EVENT_RETURN 0x0010
-#define RUBY_EVENT_C_CALL 0x0020
-#define RUBY_EVENT_C_RETURN 0x0040
-#define RUBY_EVENT_RAISE 0x0080
-#define RUBY_EVENT_ALL 0x00ff
-#define RUBY_EVENT_B_CALL 0x0100
-#define RUBY_EVENT_B_RETURN 0x0200
-#define RUBY_EVENT_THREAD_BEGIN 0x0400
-#define RUBY_EVENT_THREAD_END 0x0800
-#define RUBY_EVENT_FIBER_SWITCH 0x1000
-#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
-#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
-#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
-#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
-#define RUBY_EVENT_SWITCH 0x040000
-#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
-#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
-#define RUBY_INTERNAL_EVENT_GC_START 0x400000
-#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
-#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
-#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
-#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
-#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
-#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
-#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GLOB_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_GLOBALS_H
-#pragma GCC visibility push(default)
-#define RUBY_INTEGER_UNIFICATION 1
-#define CLASS_OF rb_class_of
-#pragma GCC visibility pop
-#define RBIMPL_INTERPRETER_H
-#pragma GCC visibility push(default)
-#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
-#pragma GCC visibility pop
-#define RBIMPL_ITERATOR_H
-#pragma GCC visibility push(default)
-#define RB_BLOCK_CALL_FUNC_STRICT 1
-#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
-#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
-#pragma GCC visibility pop
-#define RBIMPL_MEMORY_H
-#define DSIZE_T uint128_t
-#define RUBY_ALLOCV_LIMIT 1024
-#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
-#define RB_ALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xmalloc2((n), sizeof(type)))
-#define RB_ALLOC(type) RBIMPL_CAST((type *)ruby_xmalloc(sizeof(type)))
-#define RB_ZALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xcalloc((n), sizeof(type)))
-#define RB_ZALLOC(type) (RB_ZALLOC_N(type, 1))
-#define RB_REALLOC_N(var,type,n) ((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type))))
-#define ALLOCA_N(type,n) RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n))))
-#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
-#define RB_ALLOCV_N(type,v,n) RBIMPL_CAST((type *) (((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? ((v) = 0, alloca((n) * sizeof(type))) : rb_alloc_tmp_buffer2(&(v), (n), sizeof(type))))
-#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
-#define MEMZERO(p,type,n) memset((p), 0, rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMCPY(p1,p2,type,n) ruby_nonempty_memcpy((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
-#define ALLOC_N RB_ALLOC_N
-#define ALLOC RB_ALLOC
-#define ZALLOC_N RB_ZALLOC_N
-#define ZALLOC RB_ZALLOC
-#define REALLOC_N RB_REALLOC_N
-#define ALLOCV RB_ALLOCV
-#define ALLOCV_N RB_ALLOCV_N
-#define ALLOCV_END RB_ALLOCV_END
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_MODULE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_NEWOBJ_H
-#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj())
-#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags))
-#define NEWOBJ RB_NEWOBJ
-#define NEWOBJ_OF RB_NEWOBJ_OF
-#define OBJSETUP rb_obj_setup
-#define CLONESETUP rb_clone_setup
-#define DUPSETUP rb_dup_setup
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_SCAN_ARGS_H
-#define RBIMPL_ATTR_DIAGNOSE_IF_H
-#define RBIMPL_ATTR_DIAGNOSE_IF(_,__,___) RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(-Wgcc-compat) __attribute__((__diagnose_if__(_, __, ___))) RBIMPL_WARNING_POP()
-#define RBIMPL_INTERN_ARRAY_H
-#pragma GCC visibility push(default)
-#define rb_ary_tmp_new rb_ary_hidden_new
-#define rb_ary_new2 rb_ary_new_capa
-#define rb_ary_new3 rb_ary_new_from_args
-#define rb_ary_new4 rb_ary_new_from_values
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ERROR_H
-#define UNLIMITED_ARGUMENTS (-1)
-#define rb_exc_new2 rb_exc_new_cstr
-#define rb_exc_new3 rb_exc_new_str
-#define rb_check_arity rb_check_arity
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_check_frozen_internal(obj) do { VALUE frozen_obj = (obj); if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { rb_error_frozen_object(frozen_obj); } } while (0)
-#define rb_check_frozen rb_check_frozen_inline
-#define RBIMPL_INTERN_HASH_H
-#pragma GCC visibility push(default)
-#define st_foreach_safe rb_st_foreach_safe
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PROC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
-#define RB_SCAN_ARGS_KEYWORDS 1
-#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
-#define RB_NO_KEYWORDS 0
-#define RB_PASS_KEYWORDS 1
-#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p()
-#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_scan_args_isdigit(c) (RBIMPL_CAST((unsigned char)((c)-'0'))<10)
-#define rb_scan_args_count_end(fmt,ofs,vari) ((fmt)[ofs] ? -1 : (vari))
-#define rb_scan_args_count_block(fmt,ofs,vari) ((fmt)[ofs]!='&' ? rb_scan_args_count_end(fmt, ofs, vari) : rb_scan_args_count_end(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_hash(fmt,ofs,vari) ((fmt)[ofs]!=':' ? rb_scan_args_count_block(fmt, ofs, vari) : rb_scan_args_count_block(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_trail(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_hash(fmt, ofs, vari) : rb_scan_args_count_hash(fmt, (ofs)+1, (vari)+((fmt)[ofs]-'0')))
-#define rb_scan_args_count_var(fmt,ofs,vari) ((fmt)[ofs]!='*' ? rb_scan_args_count_trail(fmt, ofs, vari) : rb_scan_args_count_trail(fmt, (ofs)+1, (vari)+1))
-#define rb_scan_args_count_opt(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_var(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
-#define rb_scan_args_count_lead(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_opt(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
-#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
-#define rb_scan_args_verify(fmt,varc) RBIMPL_ASSERT_NOTHING
-#define rb_scan_args0(argc,argv,fmt,varc,vars) rb_scan_args_set(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
-#define rb_scan_args_kw0(kw_flag,argc,argv,fmt,varc,vars) rb_scan_args_set(kw_flag, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wgcc-compat"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wgcc-compat"
-#pragma clang diagnostic pop
-#define rb_scan_args_next_param() vars[vari++]
-#undef rb_scan_args_next_param
-#define rb_scan_args(argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args0( argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args)(argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
-#define rb_scan_args_kw(kw_flag,argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args_kw0( kw_flag, argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args_kw)(kw_flag, argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
-#define RBIMPL_SYMBOL_H
-#define RB_ID2SYM rb_id2sym
-#define RB_SYM2ID rb_sym2id
-#define ID2SYM RB_ID2SYM
-#define SYM2ID RB_SYM2ID
-#define CONST_ID_CACHE RUBY_CONST_ID_CACHE
-#define CONST_ID RUBY_CONST_ID
-#define rb_intern_const rb_intern_const
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_CONST_ID_CACHE(result,str) { static ID rb_intern_id_cache; rbimpl_intern_const(&rb_intern_id_cache, (str)); result rb_intern_id_cache; }
-#define RUBY_CONST_ID(var,str) do { static ID rbimpl_id; (var) = rbimpl_intern_const(&rbimpl_id, (str)); } while (0)
-#define rb_intern(str) (RBIMPL_CONSTANT_P(str) ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, (str)); }) : (rb_intern)(str))
-#define RBIMPL_VARIABLE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_BACKWARD2_INTTYPES_H
-#define PRI_INT_PREFIX ""
-#define PRI_LONG_PREFIX "l"
-#define PRI_SHORT_PREFIX "h"
-#define RUBY_PRI_VALUE_MARK "\v"
-#define PRIdVALUE PRI_VALUE_PREFIX"d"
-#define PRIoVALUE PRI_VALUE_PREFIX"o"
-#define PRIuVALUE PRI_VALUE_PREFIX"u"
-#define PRIxVALUE PRI_VALUE_PREFIX"x"
-#define PRIXVALUE PRI_VALUE_PREFIX"X"
-#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
-#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
-#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
-#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
-#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
-#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
-#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
-#define PRIdSIZE PRI_SIZE_PREFIX"d"
-#define PRIiSIZE PRI_SIZE_PREFIX"i"
-#define PRIoSIZE PRI_SIZE_PREFIX"o"
-#define PRIuSIZE PRI_SIZE_PREFIX"u"
-#define PRIxSIZE PRI_SIZE_PREFIX"x"
-#define PRIXSIZE PRI_SIZE_PREFIX"X"
-#pragma GCC visibility push(default)
-#define USE_SYMBOL_AS_METHOD_NAME 1
-#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
-#define FilePathStringValue(v) ((v) = rb_get_path(v))
-#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
-#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
-#define rb_varargs_argc_check(argc,vargc) __builtin_choose_expr(__builtin_constant_p(argc), (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : rb_varargs_bad_length(argc, vargc)), rb_varargs_argc_check_runtime(argc, vargc))
-#define RUBY_INTERN_H 1
-#define RBIMPL_INTERN_BIGNUM_H
-#pragma GCC visibility push(default)
-#define rb_big2int(x) rb_big2long(x)
-#define rb_big2uint(x) rb_big2ulong(x)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wc++11-long-long"
-#pragma clang diagnostic pop
-#define INTEGER_PACK_MSWORD_FIRST 0x01
-#define INTEGER_PACK_LSWORD_FIRST 0x02
-#define INTEGER_PACK_MSBYTE_FIRST 0x10
-#define INTEGER_PACK_LSBYTE_FIRST 0x20
-#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
-#define INTEGER_PACK_2COMP 0x80
-#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
-#define INTEGER_PACK_FORCE_BIGNUM 0x100
-#define INTEGER_PACK_NEGATIVE 0x200
-#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
-#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_COMPAR_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_COMPLEX_H
-#pragma GCC visibility push(default)
-#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
-#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
-#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
-#define rb_complex_new2(x,y) rb_complex_new((x), (y))
-#define rb_complex_add rb_complex_plus
-#define rb_complex_sub rb_complex_minus
-#define rb_complex_nagate rb_complex_uminus
-#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
-#define rb_Complex2(x,y) rb_Complex((x), (y))
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_CONT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_DIR_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ENUM_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_ENUMERATOR_H
-#define RBIMPL_INTERN_EVAL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
-#define SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) rb_enumeratorize_with_size_kw((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn), (kw_splat))
-#define RETURN_SIZED_ENUMERATOR(obj,argc,argv,size_fn) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR(obj, argc, argv, size_fn); } while (0)
-#define RETURN_SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat); } while (0)
-#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
-#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
-#define RBIMPL_INTERN_FILE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_GC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_IO_H
-#pragma GCC visibility push(default)
-#define rb_defout rb_stdout
-#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_LOAD_H
-#pragma GCC visibility push(default)
-#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f)
-#define HAVE_RB_EXT_RACTOR_SAFE 1
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_MARSHAL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_NUMERIC_H
-#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_OBJECT_H
-#pragma GCC visibility push(default)
-#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
-#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PARSE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_PROCESS_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RANDOM_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RANGE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RATIONAL_H
-#pragma GCC visibility push(default)
-#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
-#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
-#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
-#define rb_rational_new2(x,y) rb_rational_new((x), (y))
-#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
-#define rb_Rational2(x,y) rb_Rational((x), (y))
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RE_H
-#pragma GCC visibility push(default)
-#define rb_memcmp memcmp
-#define HAVE_RB_REG_NEW_STR 1
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_RUBY_H
-#pragma GCC visibility push(default)
-#define rb_argv rb_get_argv()
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SELECT_H
-#define RBIMPL_INTERN_SELECT_LARGESIZE_H
-#define rb_fd_ptr rb_fd_ptr
-#define rb_fd_max rb_fd_max
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SIGNAL_H
-#pragma GCC visibility push(default)
-#define posix_signal ruby_posix_signal
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_SPRINTF_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_STRING_H
-#pragma GCC visibility push(default)
-#define rb_str_dup_frozen rb_str_new_frozen
-#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
-#define rb_hash_uint(h,i) st_hash_uint((h), (i))
-#define rb_hash_end(h) st_hash_end(h)
-#define rb_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_str_new_static : rb_str_new) ((str), (len)))
-#define rb_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_new_cstr : rb_str_new_cstr) (str))
-#define rb_usascii_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_usascii_str_new_static : rb_usascii_str_new) ((str), (len)))
-#define rb_utf8_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_utf8_str_new_static : rb_utf8_str_new) ((str), (len)))
-#define rb_usascii_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_usascii_str_new_cstr : rb_usascii_str_new_cstr) (str))
-#define rb_utf8_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_utf8_str_new_cstr : rb_utf8_str_new_cstr) (str))
-#define rb_external_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_external_str_new_cstr : rb_external_str_new_cstr) (str))
-#define rb_locale_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_locale_str_new_cstr : rb_locale_str_new_cstr) (str))
-#define rb_str_buf_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_buf_new_cstr : rb_str_buf_new_cstr) (str))
-#define rb_str_cat_cstr(buf,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((buf), (str)))
-#define rb_exc_new_cstr(exc,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_exc_new_cstr : rb_exc_new_cstr) ((exc), (str)))
-#define rb_str_new2 rb_str_new_cstr
-#define rb_str_new3 rb_str_new_shared
-#define rb_str_new4 rb_str_new_frozen
-#define rb_str_new5 rb_str_new_with_class
-#define rb_str_buf_new2 rb_str_buf_new_cstr
-#define rb_usascii_str_new2 rb_usascii_str_new_cstr
-#define rb_str_buf_cat rb_str_cat
-#define rb_str_buf_cat2 rb_str_cat_cstr
-#define rb_str_cat2 rb_str_cat_cstr
-#define rb_strlen_lit(str) (sizeof(str "") - 1)
-#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
-#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
-#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
-#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
-#define rb_str_new_literal(str) rb_str_new_lit(str)
-#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
-#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
-#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_STRUCT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_THREAD_H
-#pragma GCC visibility push(default)
-#define RUBY_UBF_IO RBIMPL_CAST((rb_unblock_function_t *)-1)
-#define RUBY_UBF_PROCESS RBIMPL_CAST((rb_unblock_function_t *)-1)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_TIME_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RBIMPL_INTERN_VARIABLE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM 1
-#define HAVE_NATIVETHREAD
-#define InitVM(ext) {void InitVM_##ext(void);InitVM_##ext();}
-#define RUBY_SUBST_H 1
-#undef snprintf
-#undef vsnprintf
-#define snprintf ruby_snprintf
-#define vsnprintf ruby_vsnprintf
-#pragma GCC visibility pop
-#define RUBY_VM_CORE_H
-#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
-#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
-#define VMDEBUG 0
-#define _USER_SIGNAL_H
-#define sigaddset(set,signo) (*(set) |= __sigbits(signo), 0)
-#define sigdelset(set,signo) (*(set) &= ~__sigbits(signo), 0)
-#define sigismember(set,signo) ((*(set) & __sigbits(signo)) != 0)
-#define sigemptyset(set) (*(set) = 0, 0)
-#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
-#define RUBY_TOPLEVEL_ASSERT_H
-#undef assert
-#define assert RUBY_ASSERT_NDEBUG
-#define VM_ASSERT(expr) ((void)0)
-#define VM_UNREACHABLE(func) UNREACHABLE
-#define RUBY_DEBUG_THREAD_SCHEDULE()
-#define RUBY_ASSERT_MUTEX_OWNED(mutex) VM_ASSERT(rb_mutex_owned_p(mutex))
-#define RUBY_ASSERT_CRITICAL_SECTION_ENTER()
-#define RUBY_ASSERT_CRITICAL_SECTION_LEAVE()
-#define _BSD_SETJMP_H
-#define _JBLEN ((9 * 2) + 3 + 16)
-#define CCAN_LIST_H
-#undef assert
-#undef __assert
-#define assert(e) ((void)0)
-#define CCAN_STR_H
-#define stringify(expr) ccan_stringify_1(expr)
-#define ccan_stringify(expr) ccan_stringify_1(expr)
-#define ccan_stringify_1(expr) #expr
-#define CCAN_CONTAINER_OF_H
-#define CCAN_CHECK_TYPE_H
-#define ccan_check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
-#define ccan_check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
-#define ccan_container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - ccan_container_off(containing_type, member)) + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
-#define ccan_container_of_or_null(member_ptr,containing_type,member) ((containing_type *) ccan_container_of_or_null_(member_ptr, ccan_container_off(containing_type, member)) + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
-#define ccan_container_off(containing_type,member) offsetof(containing_type, member)
-#define ccan_container_of_var(member_ptr,container_var,member) ccan_container_of(member_ptr, typeof(*container_var), member)
-#define ccan_container_off_var(var,member) ccan_container_off(typeof(*var), member)
-#define CCAN_LIST_LOC __FILE__ ":" ccan_stringify(__LINE__)
-#define ccan_list_debug(h,loc) ((void)loc, h)
-#define ccan_list_debug_node(n,loc) ((void)loc, n)
-#define CCAN_LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
-#define CCAN_LIST_HEAD(name) struct ccan_list_head name = CCAN_LIST_HEAD_INIT(name)
-#define ccan_list_add_after(h,p,n) ccan_list_add_after_(h, p, n, CCAN_LIST_LOC)
-#define ccan_list_add(h,n) ccan_list_add_(h, n, CCAN_LIST_LOC)
-#define ccan_list_add_before(h,p,n) ccan_list_add_before_(h, p, n, CCAN_LIST_LOC)
-#define ccan_list_add_tail(h,n) ccan_list_add_tail_(h, n, CCAN_LIST_LOC)
-#define ccan_list_empty(h) ccan_list_empty_(h, CCAN_LIST_LOC)
-#define ccan_list_empty_nodebug(h) ccan_list_empty(h)
-#define ccan_list_del(n) ccan_list_del_(n, CCAN_LIST_LOC)
-#define ccan_list_del_init(n) ccan_list_del_init_(n, CCAN_LIST_LOC)
-#define ccan_list_swap(o,n) ccan_list_swap_(o, n, CCAN_LIST_LOC)
-#define ccan_list_entry(n,type,member) ccan_container_of(n, type, member)
-#define ccan_list_top(h,type,member) ((type *)ccan_list_top_((h), ccan_list_off_(type, member)))
-#define ccan_list_pop(h,type,member) ((type *)ccan_list_pop_((h), ccan_list_off_(type, member)))
-#define ccan_list_tail(h,type,member) ((type *)ccan_list_tail_((h), ccan_list_off_(type, member)))
-#define ccan_list_for_each(h,i,member) ccan_list_for_each_off(h, i, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_rev(h,i,member) ccan_list_for_each_rev_off(h, i, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_rev_safe(h,i,nxt,member) ccan_list_for_each_rev_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
-#define ccan_list_for_each_safe(h,i,nxt,member) ccan_list_for_each_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
-#define ccan_list_next(h,i,member) ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, __FILE__ ":" ccan_stringify(__LINE__)), (i)->member.next, ccan_list_off_var_((i), member)))
-#define ccan_list_prev(h,i,member) ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, __FILE__ ":" ccan_stringify(__LINE__)), (i)->member.prev, ccan_list_off_var_((i), member)))
-#define ccan_list_append_list(t,f) ccan_list_append_list_(t, f, __FILE__ ":" ccan_stringify(__LINE__))
-#define ccan_list_prepend_list(t,f) ccan_list_prepend_list_(t, f, CCAN_LIST_LOC)
-#define ccan_list_for_each_off_dir_(h,i,off,dir) for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, (off)); ccan_list_node_from_off_((void *)i, (off)) != &(h)->n; i = ccan_list_node_to_off_(ccan_list_node_from_off_((void *)i, (off))->dir, (off)))
-#define ccan_list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, (off)), nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, (off)); ccan_list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, (off)))
-#define ccan_list_for_each_off(h,i,off) ccan_list_for_each_off_dir_((h),(i),(off),next)
-#define ccan_list_for_each_rev_off(h,i,off) ccan_list_for_each_off_dir_((h),(i),(off),prev)
-#define ccan_list_for_each_safe_off(h,i,nxt,off) ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
-#define ccan_list_for_each_rev_safe_off(h,i,nxt,off) ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
-#define ccan_list_entry_off(n,type,off) ((type *)ccan_list_node_from_off_((n), (off)))
-#define ccan_list_head_off(h,type,off) ((type *)ccan_list_head_off((h), (off)))
-#define ccan_list_tail_off(h,type,off) ((type *)ccan_list_tail_((h), (off)))
-#define ccan_list_add_off(h,n,off) ccan_list_add((h), ccan_list_node_from_off_((n), (off)))
-#define ccan_list_del_off(n,off) ccan_list_del(ccan_list_node_from_off_((n), (off)))
-#define ccan_list_del_from_off(h,n,off) ccan_list_del_from(h, ccan_list_node_from_off_((n), (off)))
-#define ccan_list_off_(type,member) (ccan_container_off(type, member) + ccan_check_type(((type *)0)->member, struct ccan_list_node))
-#define ccan_list_off_var_(var,member) (ccan_container_off_var(var, member) + ccan_check_type(var->member, struct ccan_list_node))
-#define ccan_list_typeof(var) typeof(var)
-#define RUBY_ID_H
-#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
-#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
-#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
-#define ID_LOCAL RUBY_ID_LOCAL
-#define ID_INSTANCE RUBY_ID_INSTANCE
-#define ID_GLOBAL RUBY_ID_GLOBAL
-#define ID_ATTRSET RUBY_ID_ATTRSET
-#define ID_CONST RUBY_ID_CONST
-#define ID_CLASS RUBY_ID_CLASS
-#define ID_JUNK RUBY_ID_JUNK
-#define ID_INTERNAL RUBY_ID_INTERNAL
-#define symIFUNC ID2SYM(idIFUNC)
-#define symCFUNC ID2SYM(idCFUNC)
-#define RUBY_TOKEN_DOT2 128
-#define RUBY_TOKEN_DOT3 129
-#define RUBY_TOKEN_BDOT2 130
-#define RUBY_TOKEN_BDOT3 131
-#define RUBY_TOKEN_UPLUS 132
-#define RUBY_TOKEN_UMINUS 133
-#define RUBY_TOKEN_POW 134
-#define RUBY_TOKEN_CMP 135
-#define RUBY_TOKEN_LSHFT 136
-#define RUBY_TOKEN_RSHFT 137
-#define RUBY_TOKEN_LEQ 138
-#define RUBY_TOKEN_GEQ 139
-#define RUBY_TOKEN_EQ 140
-#define RUBY_TOKEN_EQQ 141
-#define RUBY_TOKEN_NEQ 142
-#define RUBY_TOKEN_MATCH 143
-#define RUBY_TOKEN_NMATCH 144
-#define RUBY_TOKEN_AREF 145
-#define RUBY_TOKEN_ASET 146
-#define RUBY_TOKEN_COLON2 147
-#define RUBY_TOKEN_ANDOP 148
-#define RUBY_TOKEN_OROP 149
-#define RUBY_TOKEN_ANDDOT 150
-#define RUBY_TOKEN(t) RUBY_TOKEN_##t
-#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<mem)
-#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), (VALUE)(b), __FILE__, __LINE__)
-#define SIZE_POOL_COUNT 5
-#define RCLASS_EXT_EMBEDDED (SIZE_POOL_COUNT > 1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define SIZED_REALLOC_N(x,y,z,w) REALLOC_N(x, y, z)
-#define ruby_sized_xrealloc ruby_sized_xrealloc_inlined
-#define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined
-#define ruby_sized_xfree ruby_sized_xfree_inlined
-#define IMEMO_DEBUG 0
-#define IMEMO_MASK 0x0f
-#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
-#define IMEMO_FL_USER0 FL_USER4
-#define IMEMO_FL_USER1 FL_USER5
-#define IMEMO_FL_USER2 FL_USER6
-#define IMEMO_FL_USER3 FL_USER7
-#define IMEMO_FL_USER4 FL_USER8
-#define IMEMO_FL_USER5 FL_USER9
-#define THROW_DATA_CONSUMED IMEMO_FL_USER0
-#define THROW_DATA_P(err) imemo_throw_data_p((VALUE)err)
-#define MEMO_CAST(m) ((struct MEMO *)(m))
-#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
-#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
-#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_hidden_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
-#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_hidden_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define IMEMO_TYPE_P(v,t) imemo_type_p((VALUE)v, t)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define END_OF_ENUMERATION(key)
-#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
-#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
-#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
-#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags |= IMEMO_FL_USER3)
-#define METHOD_ENTRY_CACHED(me) ((me)->flags & IMEMO_FL_USER4)
-#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
-#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
-#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
-#define VM_METHOD_TYPE_MINIMUM_BITS 4
-#define rb_iseq_t rb_iseq_t
-#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
-#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_NODE_H 1
-#define RNODE(obj) ((struct RNode *)(obj))
-#define NODE_FL_NEWLINE (((VALUE)1)<<7)
-#define NODE_TYPESHIFT 8
-#define NODE_TYPEMASK (((VALUE)0x7f)<flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
-#define nd_set_type(n,t) rb_node_set_type(n, t)
-#define nd_init_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<flags)>>NODE_LSHIFT)
-#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<nd_loc.beg_pos.column))
-#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
-#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
-#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
-#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
-#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
-#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
-#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
-#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
-#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
-#define nd_last_loc(n) ((n)->nd_loc.end_pos)
-#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
-#define nd_node_id(n) ((n)->node_id)
-#define nd_set_node_id(n,id) ((n)->node_id = (id))
-#define nd_head u1.node
-#define nd_alen u2.argc
-#define nd_next u3.node
-#define nd_cond u1.node
-#define nd_body u2.node
-#define nd_else u3.node
-#define nd_resq u2.node
-#define nd_ensr u3.node
-#define nd_1st u1.node
-#define nd_2nd u2.node
-#define nd_stts u1.node
-#define nd_entry u3.id
-#define nd_vid u1.id
-#define nd_var u1.node
-#define nd_iter u3.node
-#define nd_value u2.node
-#define nd_aid u3.id
-#define nd_lit u1.value
-#define nd_recv u1.node
-#define nd_mid u2.id
-#define nd_args u3.node
-#define nd_ainfo u3.args
-#define nd_defn u3.node
-#define nd_cpath u1.node
-#define nd_super u3.node
-#define nd_beg u1.node
-#define nd_end u2.node
-#define nd_state u3.state
-#define nd_nth u2.argc
-#define nd_alias u1.id
-#define nd_orig u2.id
-#define nd_undef u2.node
-#define nd_brace u2.argc
-#define nd_pconst u1.node
-#define nd_pkwargs u2.node
-#define nd_pkwrestarg u3.node
-#define nd_apinfo u3.apinfo
-#define nd_fpinfo u3.fpinfo
-#define nd_tbl u1.tbl
-#define nd_pid u1.id
-#define nd_plen u2.argc
-#define nd_cflag u2.id
-#define nd_cval u3.value
-#define nd_rval u2.value
-#define nd_tag u1.id
-#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
-#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
-#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
-#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
-#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
-#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
-#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
-#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
-#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
-#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
-#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
-#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
-#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
-#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
-#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
-#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
-#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
-#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
-#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
-#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
-#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
-#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
-#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
-#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
-#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
-#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
-#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
-#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
-#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
-#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
-#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
-#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
-#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
-#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,v,loc)
-#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
-#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
-#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
-#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
-#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
-#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
-#define NEW_OP_ASGN2(r,t,i,o,val,loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)
-#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
-#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
-#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
-#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
-#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,v,loc)
-#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
-#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
-#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
-#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
-#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
-#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
-#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
-#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
-#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
-#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
-#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
-#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
-#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
-#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
-#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
-#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
-#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
-#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
-#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
-#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
-#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
-#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
-#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
-#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
-#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
-#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
-#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
-#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
-#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
-#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
-#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
-#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
-#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
-#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
-#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
-#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
-#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
-#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
-#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
-#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
-#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
-#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
-#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
-#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
-#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
-#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
-#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
-#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
-#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
-#define NEW_ERROR(loc) NEW_NODE(NODE_ERROR,0,0,0,loc)
-#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
-#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
-#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
-#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
-#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
-#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_ATOMIC_H
-#define RUBY_ATOMIC_GENERIC_MACRO 1
-#define RUBY_ATOMIC_FETCH_ADD(var,val) rbimpl_atomic_fetch_add(&(var), (val))
-#define RUBY_ATOMIC_FETCH_SUB(var,val) rbimpl_atomic_fetch_sub(&(var), (val))
-#define RUBY_ATOMIC_OR(var,val) rbimpl_atomic_or(&(var), (val))
-#define RUBY_ATOMIC_EXCHANGE(var,val) rbimpl_atomic_exchange(&(var), (val))
-#define RUBY_ATOMIC_CAS(var,oldval,newval) rbimpl_atomic_cas(&(var), (oldval), (newval))
-#define RUBY_ATOMIC_SET(var,val) rbimpl_atomic_set(&(var), (val))
-#define RUBY_ATOMIC_ADD(var,val) rbimpl_atomic_add(&(var), (val))
-#define RUBY_ATOMIC_SUB(var,val) rbimpl_atomic_sub(&(var), (val))
-#define RUBY_ATOMIC_INC(var) rbimpl_atomic_inc(&(var))
-#define RUBY_ATOMIC_DEC(var) rbimpl_atomic_dec(&(var))
-#define RUBY_ATOMIC_SIZE_INC(var) rbimpl_atomic_size_inc(&(var))
-#define RUBY_ATOMIC_SIZE_DEC(var) rbimpl_atomic_size_dec(&(var))
-#define RUBY_ATOMIC_SIZE_EXCHANGE(var,val) rbimpl_atomic_size_exchange(&(var), (val))
-#define RUBY_ATOMIC_SIZE_CAS(var,oldval,newval) rbimpl_atomic_size_cas(&(var), (oldval), (newval))
-#define RUBY_ATOMIC_SIZE_ADD(var,val) rbimpl_atomic_size_add(&(var), (val))
-#define RUBY_ATOMIC_SIZE_SUB(var,val) rbimpl_atomic_size_sub(&(var), (val))
-#define RUBY_ATOMIC_PTR_EXCHANGE(var,val) RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val))
-#define RUBY_ATOMIC_PTR_CAS(var,oldval,newval) RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval)))
-#define RUBY_ATOMIC_VALUE_EXCHANGE(var,val) rbimpl_atomic_value_exchange(&(var), (val))
-#define RUBY_ATOMIC_VALUE_CAS(var,oldval,newval) rbimpl_atomic_value_cas(&(var), (oldval), (newval))
-#define ATOMIC_ADD(var,val) RUBY_ATOMIC_ADD(var, val)
-#define ATOMIC_CAS(var,oldval,newval) RUBY_ATOMIC_CAS(var, oldval, newval)
-#define ATOMIC_DEC(var) RUBY_ATOMIC_DEC(var)
-#define ATOMIC_EXCHANGE(var,val) RUBY_ATOMIC_EXCHANGE(var, val)
-#define ATOMIC_FETCH_ADD(var,val) RUBY_ATOMIC_FETCH_ADD(var, val)
-#define ATOMIC_FETCH_SUB(var,val) RUBY_ATOMIC_FETCH_SUB(var, val)
-#define ATOMIC_INC(var) RUBY_ATOMIC_INC(var)
-#define ATOMIC_OR(var,val) RUBY_ATOMIC_OR(var, val)
-#define ATOMIC_PTR_CAS(var,oldval,newval) RUBY_ATOMIC_PTR_CAS(var, oldval, newval)
-#define ATOMIC_PTR_EXCHANGE(var,val) RUBY_ATOMIC_PTR_EXCHANGE(var, val)
-#define ATOMIC_SET(var,val) RUBY_ATOMIC_SET(var, val)
-#define ATOMIC_SIZE_ADD(var,val) RUBY_ATOMIC_SIZE_ADD(var, val)
-#define ATOMIC_SIZE_CAS(var,oldval,newval) RUBY_ATOMIC_SIZE_CAS(var, oldval, newval)
-#define ATOMIC_SIZE_DEC(var) RUBY_ATOMIC_SIZE_DEC(var)
-#define ATOMIC_SIZE_EXCHANGE(var,val) RUBY_ATOMIC_SIZE_EXCHANGE(var, val)
-#define ATOMIC_SIZE_INC(var) RUBY_ATOMIC_SIZE_INC(var)
-#define ATOMIC_SIZE_SUB(var,val) RUBY_ATOMIC_SIZE_SUB(var, val)
-#define ATOMIC_SUB(var,val) RUBY_ATOMIC_SUB(var, val)
-#define ATOMIC_VALUE_CAS(var,oldval,val) RUBY_ATOMIC_VALUE_CAS(var, oldval, val)
-#define ATOMIC_VALUE_EXCHANGE(var,val) RUBY_ATOMIC_VALUE_EXCHANGE(var, val)
-#define RUBY_VM_OPTS_H
-#define OPT_TAILCALL_OPTIMIZATION 0
-#define OPT_PEEPHOLE_OPTIMIZATION 1
-#define OPT_SPECIALISED_INSTRUCTION 1
-#define OPT_INLINE_CONST_CACHE 1
-#define OPT_FROZEN_STRING_LITERAL 0
-#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
-#define OPT_THREADED_CODE 0
-#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
-#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
-#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
-#define OPT_CHECKED_RUN 1
-#define OPT_INLINE_METHOD_CACHE 1
-#define OPT_GLOBAL_METHOD_CACHE 1
-#define OPT_BLOCKINLINING 0
-#define OPT_IC_FOR_IVAR 1
-#define OPT_OPERANDS_UNIFICATION 1
-#define OPT_INSTRUCTIONS_UNIFICATION 0
-#define OPT_UNIFY_ALL_COMBINATION 0
-#define OPT_STACK_CACHING 0
-#define OPT_SUPPORT_JOKE 0
-#define OPT_SUPPORT_CALL_C_FUNCTION 0
-#define VM_COLLECT_USAGE_DETAILS 0
-#define RUBY_SHAPE_H
-#define SIZEOF_SHAPE_T 4
-#define SHAPE_IN_BASIC_FLAGS 1
-#define MAX_IVARS (attr_index_t)(-1)
-#define SHAPE_ID_NUM_BITS 32
-#define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1)
-#define SHAPE_FLAG_MASK (((VALUE)-1) >> SHAPE_ID_NUM_BITS)
-#define SHAPE_FLAG_SHIFT ((SIZEOF_VALUE * 8) - SHAPE_ID_NUM_BITS)
-#define SHAPE_BITMAP_SIZE 16384
-#define SHAPE_MAX_VARIATIONS 8
-#define MAX_SHAPE_ID (SHAPE_MASK - 1)
-#define INVALID_SHAPE_ID SHAPE_MASK
-#define ROOT_SHAPE_ID 0x0
-#define SPECIAL_CONST_SHAPE_ID (SIZE_POOL_COUNT * 2)
-#define OBJ_TOO_COMPLEX_SHAPE_ID (SPECIAL_CONST_SHAPE_ID + 1)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_THREAD_NATIVE_H 1
-#define _PTHREAD_H
-#define _SCHED_H_
-#define _PTHREAD_IMPL_H_
-#pragma clang assume_nonnull begin
-#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7
-#define _PTHREAD_ERRORCHECK_MUTEX_SIG_init 0x32AAABA1
-#define _PTHREAD_RECURSIVE_MUTEX_SIG_init 0x32AAABA2
-#define _PTHREAD_FIRSTFIT_MUTEX_SIG_init 0x32AAABA3
-#define _PTHREAD_COND_SIG_init 0x3CB0B1BB
-#define _PTHREAD_ONCE_SIG_init 0x30B1BCBA
-#define _PTHREAD_RWLOCK_SIG_init 0x2DA8B3B4
-#define SCHED_OTHER 1
-#define SCHED_FIFO 4
-#define SCHED_RR 2
-#define __SCHED_PARAM_SIZE__ 4
-#pragma clang assume_nonnull end
-#define _PTHREAD_QOS_H
-#define _SYS_QOS_H
-#define __QOS_ENUM(name,type,...) enum { __VA_ARGS__ }; typedef type name##_t
-#define __QOS_CLASS_AVAILABLE(...)
-#undef __QOS_CLASS_AVAILABLE
-#define __QOS_CLASS_AVAILABLE __API_AVAILABLE
-#undef __QOS_ENUM
-#define QOS_MIN_RELATIVE_PRIORITY (-15)
-#pragma clang assume_nonnull begin
-#pragma clang assume_nonnull end
-#define _MACH_PORT_T
-#pragma clang assume_nonnull begin
-#define pthread_cleanup_push(func,val) { struct __darwin_pthread_handler_rec __handler; pthread_t __self = pthread_self(); __handler.__routine = func; __handler.__arg = val; __handler.__next = __self->__cleanup_stack; __self->__cleanup_stack = &__handler;
-#define pthread_cleanup_pop(execute) __self->__cleanup_stack = __handler.__next; if (execute) (__handler.__routine)(__handler.__arg); }
-#define PTHREAD_CREATE_JOINABLE 1
-#define PTHREAD_CREATE_DETACHED 2
-#define PTHREAD_INHERIT_SCHED 1
-#define PTHREAD_EXPLICIT_SCHED 2
-#define PTHREAD_CANCEL_ENABLE 0x01
-#define PTHREAD_CANCEL_DISABLE 0x00
-#define PTHREAD_CANCEL_DEFERRED 0x02
-#define PTHREAD_CANCEL_ASYNCHRONOUS 0x00
-#define PTHREAD_CANCELED ((void *) 1)
-#define PTHREAD_SCOPE_SYSTEM 1
-#define PTHREAD_SCOPE_PROCESS 2
-#define PTHREAD_PROCESS_SHARED 1
-#define PTHREAD_PROCESS_PRIVATE 2
-#define PTHREAD_PRIO_NONE 0
-#define PTHREAD_PRIO_INHERIT 1
-#define PTHREAD_PRIO_PROTECT 2
-#define PTHREAD_MUTEX_NORMAL 0
-#define PTHREAD_MUTEX_ERRORCHECK 1
-#define PTHREAD_MUTEX_RECURSIVE 2
-#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
-#define PTHREAD_MUTEX_POLICY_FAIRSHARE_NP 1
-#define PTHREAD_MUTEX_POLICY_FIRSTFIT_NP 3
-#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWLOCK_SIG_init, {0}}
-#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
-#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {_PTHREAD_ERRORCHECK_MUTEX_SIG_init, {0}}
-#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {_PTHREAD_RECURSIVE_MUTEX_SIG_init, {0}}
-#define _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT defined(SWIFT_CLASS_EXTRA) && (!defined(SWIFT_SDK_OVERLAY_PTHREAD_EPOCH) || (SWIFT_SDK_OVERLAY_PTHREAD_EPOCH < 1))
-#define __PTHREAD_SWIFT_UNAVAILABLE_FROM_ASYNC(msg) __attribute__((__swift_attr__("@_unavailableFromAsync(message: \"" msg "\")")))
-#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
-#define PTHREAD_ONCE_INIT {_PTHREAD_ONCE_SIG_init, {0}}
-#define PTHREAD_JIT_WRITE_ALLOW_CALLBACKS_NP(...) __attribute__((__used__, __section__("__DATA_CONST,__pth_jit_func"))) static const pthread_jit_write_callback_t __pthread_jit_write_callback_allowlist[] = { __VA_ARGS__, NULL }
-#pragma clang assume_nonnull end
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define VM_INSN_INFO_TABLE_IMPL 2
-#define RUBY_NSIG NSIG
-#define RUBY_SIGCHLD (SIGCHLD)
-#define SIGCHLD_LOSSY (1)
-#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
-#define USE_SIGALTSTACK
-#define RB_ALTSTACK_INIT(var,altstack) var = rb_register_sigaltstack(altstack)
-#define RB_ALTSTACK_FREE(var) free(var)
-#define RB_ALTSTACK(var) var
-#define RUBY_THREAD_PTHREAD_H
-#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
-#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
-#undef except
-#undef try
-#undef leave
-#undef finally
-#define RB_THREAD_LOCAL_SPECIFIER _Thread_local
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM_THREAD_MODEL 2
-#define TAG_NONE RUBY_TAG_NONE
-#define TAG_RETURN RUBY_TAG_RETURN
-#define TAG_BREAK RUBY_TAG_BREAK
-#define TAG_NEXT RUBY_TAG_NEXT
-#define TAG_RETRY RUBY_TAG_RETRY
-#define TAG_REDO RUBY_TAG_REDO
-#define TAG_RAISE RUBY_TAG_RAISE
-#define TAG_THROW RUBY_TAG_THROW
-#define TAG_FATAL RUBY_TAG_FATAL
-#define TAG_MASK RUBY_TAG_MASK
-#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
-#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
-#define PATHOBJ_PATH 0
-#define PATHOBJ_REALPATH 1
-#define ISEQ_IS_SIZE(body) (body->ic_size + body->ivc_size + body->ise_size + body->icvarc_size)
-#define ISEQ_IS_IC_ENTRY(body,idx) (body->is_entries[(idx) + body->ise_size + body->icvarc_size + body->ivc_size].ic_cache);
-#define ISEQ_BODY(iseq) ((iseq)->body)
-#define USE_LAZY_LOAD 0
-#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
-#define VM_GLOBAL_CC_CACHE_TABLE_SIZE 1023
-#define RUBY_VM_SIZE_ALIGN 4096
-#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
-#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
-#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
-#define VM_DEBUG_BP_CHECK 0
-#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
-#define rb_execution_context_t rb_execution_context_t
-#define VM_CORE_H_EC_DEFINED 1
-#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
-#define VM_DEFINECLASS_FLAG_SCOPED 0x08
-#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
-#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
-#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
-#define VM_CHECKMATCH_TYPE_MASK 0x03
-#define VM_CHECKMATCH_ARRAY 0x04
-#define FUNC_FASTCALL(x) x
-#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
-#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
-#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
-#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
-#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
-#define VM_ENV_DATA_SIZE ( 3)
-#define VM_ENV_DATA_INDEX_ME_CREF (-2)
-#define VM_ENV_DATA_INDEX_SPECVAL (-1)
-#define VM_ENV_DATA_INDEX_FLAGS ( 0)
-#define VM_ENV_DATA_INDEX_ENV ( 1)
-#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
-#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
-#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
-#define VM_BLOCK_HANDLER_NONE 0
-#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
-#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
-#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
-#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
-#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_vm_register_special_exception(sp,e,m) rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m)))
-#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
-#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) do { STATIC_ASSERT(sizeof_sp, sizeof(*(sp)) == sizeof(VALUE)); STATIC_ASSERT(sizeof_cfp, sizeof(*(cfp)) == sizeof(rb_control_frame_t)); const struct rb_control_frame_struct *bound = (void *)&(sp)[(margin)]; if (UNLIKELY((cfp) <= &bound[1])) { vm_stackoverflow(); } } while (0)
-#define CHECK_VM_STACK_OVERFLOW(cfp,margin) CHECK_VM_STACK_OVERFLOW0((cfp), (cfp)->sp, (margin))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define GET_VM() rb_current_vm()
-#define GET_RACTOR() rb_current_ractor()
-#define GET_THREAD() rb_current_thread()
-#define GET_EC() rb_current_execution_context(true)
-#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
-#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
-#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
-#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
-#define RUBY_VM_SET_TERMINATE_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TERMINATE_INTERRUPT_MASK)
-#define RUBY_VM_SET_VM_BARRIER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, VM_BARRIER_INTERRUPT_MASK)
-#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
-#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
-#define EXEC_EVENT_HOOK_ORIG(ec_,hooks_,flag_,self_,id_,called_id_,klass_,data_,pop_p_) do { const rb_event_flag_t flag_arg_ = (flag_); rb_hook_list_t *hooks_arg_ = (hooks_); if (UNLIKELY((hooks_arg_)->events & (flag_arg_))) { rb_exec_event_hook_orig(ec_, hooks_arg_, flag_arg_, self_, id_, called_id_, klass_, data_, pop_p_); } } while (0)
-#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0)
-#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1)
-#pragma GCC visibility push(default)
-#define RUBY_EVENT_COVERAGE_LINE 0x010000
-#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
-#pragma GCC visibility pop
-#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
-#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
-#define ruby_setjmp(env) RUBY_SETJMP(env)
-#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
-#define _SYS_ERRNO_H_
-#define errno (*__error())
-#define EPERM 1
-#define ENOENT 2
-#define ESRCH 3
-#define EINTR 4
-#define EIO 5
-#define ENXIO 6
-#define E2BIG 7
-#define ENOEXEC 8
-#define EBADF 9
-#define ECHILD 10
-#define EDEADLK 11
-#define ENOMEM 12
-#define EACCES 13
-#define EFAULT 14
-#define ENOTBLK 15
-#define EBUSY 16
-#define EEXIST 17
-#define EXDEV 18
-#define ENODEV 19
-#define ENOTDIR 20
-#define EISDIR 21
-#define EINVAL 22
-#define ENFILE 23
-#define EMFILE 24
-#define ENOTTY 25
-#define ETXTBSY 26
-#define EFBIG 27
-#define ENOSPC 28
-#define ESPIPE 29
-#define EROFS 30
-#define EMLINK 31
-#define EPIPE 32
-#define EDOM 33
-#define ERANGE 34
-#define EAGAIN 35
-#define EWOULDBLOCK EAGAIN
-#define EINPROGRESS 36
-#define EALREADY 37
-#define ENOTSOCK 38
-#define EDESTADDRREQ 39
-#define EMSGSIZE 40
-#define EPROTOTYPE 41
-#define ENOPROTOOPT 42
-#define EPROTONOSUPPORT 43
-#define ESOCKTNOSUPPORT 44
-#define ENOTSUP 45
-#define EPFNOSUPPORT 46
-#define EAFNOSUPPORT 47
-#define EADDRINUSE 48
-#define EADDRNOTAVAIL 49
-#define ENETDOWN 50
-#define ENETUNREACH 51
-#define ENETRESET 52
-#define ECONNABORTED 53
-#define ECONNRESET 54
-#define ENOBUFS 55
-#define EISCONN 56
-#define ENOTCONN 57
-#define ESHUTDOWN 58
-#define ETOOMANYREFS 59
-#define ETIMEDOUT 60
-#define ECONNREFUSED 61
-#define ELOOP 62
-#define ENAMETOOLONG 63
-#define EHOSTDOWN 64
-#define EHOSTUNREACH 65
-#define ENOTEMPTY 66
-#define EPROCLIM 67
-#define EUSERS 68
-#define EDQUOT 69
-#define ESTALE 70
-#define EREMOTE 71
-#define EBADRPC 72
-#define ERPCMISMATCH 73
-#define EPROGUNAVAIL 74
-#define EPROGMISMATCH 75
-#define EPROCUNAVAIL 76
-#define ENOLCK 77
-#define ENOSYS 78
-#define EFTYPE 79
-#define EAUTH 80
-#define ENEEDAUTH 81
-#define EPWROFF 82
-#define EDEVERR 83
-#define EOVERFLOW 84
-#define EBADEXEC 85
-#define EBADARCH 86
-#define ESHLIBVERS 87
-#define EBADMACHO 88
-#define ECANCELED 89
-#define EIDRM 90
-#define ENOMSG 91
-#define EILSEQ 92
-#define ENOATTR 93
-#define EBADMSG 94
-#define EMULTIHOP 95
-#define ENODATA 96
-#define ENOLINK 97
-#define ENOSR 98
-#define ENOSTR 99
-#define EPROTO 100
-#define ETIME 101
-#define EOPNOTSUPP 102
-#define ENOPOLICY 103
-#define ENOTRECOVERABLE 104
-#define EOWNERDEAD 105
-#define EQFULL 106
-#define ELAST 106
-#define _SYS_PARAM_H_
-#define BSD 199506
-#define BSD4_3 1
-#define BSD4_4 1
-#define NeXTBSD 1995064
-#define NeXTBSD4_0 0
-#define MAXCOMLEN 16
-#define MAXINTERP 64
-#define MAXLOGNAME 255
-#define MAXUPRC CHILD_MAX
-#define NCARGS ARG_MAX
-#define NGROUPS NGROUPS_MAX
-#define NOFILE 256
-#define NOGROUP 65535
-#define MAXHOSTNAMELEN 256
-#define MAXDOMNAMELEN 256
-#define _BSD_MACHINE_PARAM_H_
-#define _I386_PARAM_H_
-#define _I386__PARAM_H_
-#define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1)
-#define __DARWIN_ALIGN(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
-#define __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
-#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
-#define ALIGNBYTES __DARWIN_ALIGNBYTES
-#define ALIGN(p) __DARWIN_ALIGN(p)
-#define NBPG 4096
-#define PGOFSET (NBPG-1)
-#define PGSHIFT 12
-#define DEV_BSIZE 512
-#define DEV_BSHIFT 9
-#define BLKDEV_IOSIZE 2048
-#define MAXPHYS (128 * 1024)
-#define CLSIZE 1
-#define CLSIZELOG2 0
-#define MSIZESHIFT 8
-#define MSIZE (1 << MSIZESHIFT)
-#define MCLSHIFT 11
-#define MCLBYTES (1 << MCLSHIFT)
-#define MBIGCLSHIFT 12
-#define MBIGCLBYTES (1 << MBIGCLSHIFT)
-#define M16KCLSHIFT 14
-#define M16KCLBYTES (1 << M16KCLSHIFT)
-#define MCLOFSET (MCLBYTES - 1)
-#define NMBCLUSTERS ((1024 * 1024) / MCLBYTES)
-#define ctos(x) (x)
-#define stoc(x) (x)
-#define ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT))
-#define dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT))
-#define dtob(x) ((x)<>PGSHIFT)
-#define btodb(bytes,devBlockSize) ((unsigned)(bytes) / devBlockSize)
-#define dbtob(db,devBlockSize) ((unsigned)(db) * devBlockSize)
-#define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
-#define STATUS_WORD(rpl,ipl) (((ipl) << 8) | (rpl))
-#define USERMODE(x) (((x) & 3) == 3)
-#define BASEPRI(x) (((x) & (255 << 8)) == 0)
-#define DELAY(n) { int N = (n); while (--N > 0); }
-#define PSWP 0
-#define PVM 4
-#define PINOD 8
-#define PRIBIO 16
-#define PVFS 20
-#define PZERO 22
-#define PSOCK 24
-#define PWAIT 32
-#define PLOCK 36
-#define PPAUSE 40
-#define PUSER 50
-#define MAXPRI 127
-#define PRIMASK 0x0ff
-#define PCATCH 0x100
-#define PTTYBLOCK 0x200
-#define PDROP 0x400
-#define PSPIN 0x800
-#define NBPW sizeof(int)
-#define CMASK 022
-#define NODEV (dev_t)(-1)
-#define CLBYTES (CLSIZE*NBPG)
-#define CLOFSET (CLSIZE*NBPG-1)
-#define claligned(x) ((((int)(x))&CLOFSET)==0)
-#define CLOFF CLOFSET
-#define CLSHIFT (PGSHIFT+CLSIZELOG2)
-#define clbase(i) (i)
-#define clrnd(i) (i)
-#define CBLOCK 64
-#define CBQSIZE (CBLOCK/NBBY)
-#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE)
-#define CROUND (CBLOCK - 1)
-#define MAXBSIZE (256 * 4096)
-#define MAXPHYSIO MAXPHYS
-#define MAXFRAG 8
-#define MAXPHYSIO_WIRED (16 * 1024 * 1024)
-#define MAXPATHLEN PATH_MAX
-#define MAXSYMLINKS 32
-#define setbit(a,i) (((unsigned char *)(a))[(i)/NBBY] |= 1u<<((i)%NBBY))
-#define clrbit(a,i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1u<<((i)%NBBY)))
-#define isset(a,i) (((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY)))
-#define isclr(a,i) ((((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY))) == 0)
-#define roundup(x,y) ((((x) % (y)) == 0) ? (x) : ((x) + ((y) - ((x) % (y)))))
-#define powerof2(x) ((((x)-1)&(x))==0)
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#define FSHIFT 11
-#define FSCALE (1<tag; _tag.lock_rec = rb_ec_vm_lock_rec(_ec);
-#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
-#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
-#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
-#define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var))
-#define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var))
-#define VAR_NOCLOBBERED(var) volatile var
-#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
-#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
-#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
-#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
-#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
-#define CREF_FL_SINGLETON IMEMO_FL_USER3
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
-#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
-#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
-#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
-#define CharNext(p) rb_char_next(p)
-#define RUBY_GC_H 1
-#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
-#define RB_GC_SAVE_MACHINE_CONTEXT(th) do { FLUSH_REGISTER_WINDOWS; setjmp((th)->ec->machine.regs); SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); } while (0)
-#define RUBY_MARK_FREE_DEBUG 0
-#define RUBY_MARK_ENTER(msg)
-#define RUBY_MARK_LEAVE(msg)
-#define RUBY_FREE_ENTER(msg)
-#define RUBY_FREE_LEAVE(msg)
-#define RUBY_GC_INFO if(0)printf
-#define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
-#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
-#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
-#define STACK_UPPER(x,a,b) (b)
-#define STACK_GROW_DIR_DETECTION
-#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
-#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_COMPILE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_CONT_H
-#define RUBY_ISEQ_H 1
-#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
-#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
-#define ISEQ_MBITS_SIZE sizeof(iseq_bits_t)
-#define ISEQ_MBITS_BITLENGTH (ISEQ_MBITS_SIZE * CHAR_BIT)
-#define ISEQ_MBITS_SET(buf,i) (buf[(i) / ISEQ_MBITS_BITLENGTH] |= ((iseq_bits_t)1 << ((i) % ISEQ_MBITS_BITLENGTH)))
-#define ISEQ_MBITS_SET_P(buf,i) ((buf[(i) / ISEQ_MBITS_BITLENGTH] >> ((i) % ISEQ_MBITS_BITLENGTH)) & 0x1)
-#define ISEQ_MBITS_BUFLEN(size) roomof(size, ISEQ_MBITS_BITLENGTH)
-#define USE_ISEQ_NODE_ID 1
-#define ISEQ_COVERAGE(iseq) ISEQ_BODY(iseq)->variable.coverage
-#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &ISEQ_BODY(iseq)->variable.coverage, cov)
-#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
-#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
-#define ISEQ_PC2BRANCHINDEX(iseq) ISEQ_BODY(iseq)->variable.pc2branchindex
-#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &ISEQ_BODY(iseq)->variable.pc2branchindex, h)
-#define ISEQ_FLIP_CNT(iseq) ISEQ_BODY(iseq)->variable.flip_count
-#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_C_CALL| RUBY_EVENT_C_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH)
-#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
-#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
-#define ISEQ_TRANSLATED IMEMO_FL_USER3
-#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW(((VALUE)iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
-#pragma GCC visibility push(default)
-#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
-#pragma GCC visibility pop
-#define INTERNAL_ERROR_H
-#define INTERNAL_STRING_H
-#define RUBY_ENCODING_H 1
-#define RUBY_INTERNAL_ENCODING_CODERANGE_H
-#pragma GCC visibility push(default)
-#define ENC_CODERANGE_MASK RUBY_ENC_CODERANGE_MASK
-#define ENC_CODERANGE_UNKNOWN RUBY_ENC_CODERANGE_UNKNOWN
-#define ENC_CODERANGE_7BIT RUBY_ENC_CODERANGE_7BIT
-#define ENC_CODERANGE_VALID RUBY_ENC_CODERANGE_VALID
-#define ENC_CODERANGE_BROKEN RUBY_ENC_CODERANGE_BROKEN
-#define ENC_CODERANGE_CLEAN_P(cr) RB_ENC_CODERANGE_CLEAN_P(cr)
-#define ENC_CODERANGE(obj) RB_ENC_CODERANGE(obj)
-#define ENC_CODERANGE_ASCIIONLY(obj) RB_ENC_CODERANGE_ASCIIONLY(obj)
-#define ENC_CODERANGE_SET(obj,cr) RB_ENC_CODERANGE_SET(obj,cr)
-#define ENC_CODERANGE_CLEAR(obj) RB_ENC_CODERANGE_CLEAR(obj)
-#define ENC_CODERANGE_AND(a,b) RB_ENC_CODERANGE_AND(a, b)
-#define ENCODING_CODERANGE_SET(obj,encindex,cr) RB_ENCODING_CODERANGE_SET(obj, encindex, cr)
-#define RB_ENC_CODERANGE RB_ENC_CODERANGE
-#define RB_ENC_CODERANGE_AND RB_ENC_CODERANGE_AND
-#define RB_ENC_CODERANGE_ASCIIONLY RB_ENC_CODERANGE_ASCIIONLY
-#define RB_ENC_CODERANGE_CLEAN_P RB_ENC_CODERANGE_CLEAN_P
-#define RB_ENC_CODERANGE_CLEAR RB_ENC_CODERANGE_CLEAR
-#define RB_ENC_CODERANGE_SET RB_ENC_CODERANGE_SET
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_CTYPE_H
-#define ONIGMO_H
-#define ONIGMO_VERSION_MAJOR 6
-#define ONIGMO_VERSION_MINOR 1
-#define ONIGMO_VERSION_TEENY 3
-#define ONIG_EXTERN RUBY_EXTERN
-#pragma GCC visibility push(default)
-#define UChar OnigUChar
-#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0)
-#define OnigCodePointMaskWidth 3
-#define OnigCodePointMask ((1<flags & ONIGENC_FLAG_UNICODE)
-#define ONIGENC_NAME(enc) ((enc)->name)
-#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc)
-#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) (enc)->is_allowed_reverse_match(s,end,enc)
-#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) (enc)->left_adjust_char_head(start, s, end, enc)
-#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc)
-#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc)
-#define ONIGENC_STEP_BACK(enc,start,s,end,n) onigenc_step_back((enc),(start),(s),(end),(n))
-#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n)
-#define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r))
-#define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r)
-#define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1)
-#define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1)
-#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n))
-#define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1)
-#define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r))
-#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc)
-#define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen(p,e,enc)
-#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len)
-#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc)
-#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len)
-#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc)
-#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc)
-#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc)
-#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc)
-#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) (enc)->property_name_to_ctype(enc,p,end)
-#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc)
-#define ONIGENC_IS_CODE_NEWLINE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE)
-#define ONIGENC_IS_CODE_GRAPH(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH)
-#define ONIGENC_IS_CODE_PRINT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT)
-#define ONIGENC_IS_CODE_ALNUM(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM)
-#define ONIGENC_IS_CODE_ALPHA(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA)
-#define ONIGENC_IS_CODE_LOWER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER)
-#define ONIGENC_IS_CODE_UPPER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER)
-#define ONIGENC_IS_CODE_CNTRL(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL)
-#define ONIGENC_IS_CODE_PUNCT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT)
-#define ONIGENC_IS_CODE_SPACE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE)
-#define ONIGENC_IS_CODE_BLANK(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK)
-#define ONIGENC_IS_CODE_DIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT)
-#define ONIGENC_IS_CODE_XDIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT)
-#define ONIGENC_IS_CODE_WORD(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD)
-#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) (enc)->get_ctype_code_range(ctype,sbout,ranges,enc)
-#define ONIG_NREGION 4
-#define ONIG_MAX_CAPTURE_GROUP_NUM 32767
-#define ONIG_MAX_BACKREF_NUM 1000
-#define ONIG_MAX_REPEAT_NUM 100000
-#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000
-#define ONIG_MAX_ERROR_MESSAGE_LEN 90
-#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE
-#define ONIG_OPTION_NONE 0U
-#define ONIG_OPTION_IGNORECASE 1U
-#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
-#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
-#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE
-#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1)
-#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1)
-#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1)
-#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1)
-#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
-#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
-#define ONIG_OPTION_NOTBOS (ONIG_OPTION_NOTEOL << 1)
-#define ONIG_OPTION_NOTEOS (ONIG_OPTION_NOTBOS << 1)
-#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_NOTEOS << 1)
-#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1)
-#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1)
-#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF
-#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
-#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
-#define ONIG_IS_OPTION_ON(options,option) ((options) & (option))
-#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
-#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
-#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended)
-#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs)
-#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
-#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
-#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
-#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58)
-#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG)
-#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
-#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
-#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython)
-#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
-#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0)
-#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1)
-#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2)
-#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3)
-#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4)
-#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5)
-#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6)
-#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7)
-#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8)
-#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9)
-#define ONIG_SYN_OP_VBAR_ALT (1U<<10)
-#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11)
-#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12)
-#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13)
-#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14)
-#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15)
-#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16)
-#define ONIG_SYN_OP_BRACKET_CC (1U<<17)
-#define ONIG_SYN_OP_ESC_W_WORD (1U<<18)
-#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19)
-#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20)
-#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21)
-#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22)
-#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23)
-#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24)
-#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25)
-#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26)
-#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27)
-#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28)
-#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29)
-#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30)
-#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31)
-#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0)
-#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1)
-#define ONIG_SYN_OP2_OPTION_PERL (1U<<2)
-#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3)
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4)
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5)
-#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6)
-#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7)
-#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8)
-#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9)
-#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10)
-#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11)
-#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12)
-#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13)
-#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14)
-#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15)
-#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16)
-#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17)
-#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19)
-#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20)
-#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21)
-#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22)
-#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23)
-#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24)
-#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25)
-#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26)
-#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27)
-#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28)
-#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29)
-#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30)
-#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31)
-#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31)
-#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0)
-#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1)
-#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2)
-#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3)
-#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4)
-#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5)
-#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6)
-#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7)
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8)
-#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9)
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10)
-#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11)
-#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20)
-#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21)
-#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22)
-#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23)
-#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24)
-#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25)
-#define ONIG_SYN_WARN_CC_DUP (1U<<26)
-#define ONIG_META_CHAR_ESCAPE 0
-#define ONIG_META_CHAR_ANYCHAR 1
-#define ONIG_META_CHAR_ANYTIME 2
-#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3
-#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4
-#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5
-#define ONIG_INEFFECTIVE_META_CHAR 0
-#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000)
-#define ONIG_NORMAL 0
-#define ONIG_MISMATCH -1
-#define ONIG_NO_SUPPORT_CONFIG -2
-#define ONIGERR_MEMORY -5
-#define ONIGERR_TYPE_BUG -6
-#define ONIGERR_PARSER_BUG -11
-#define ONIGERR_STACK_BUG -12
-#define ONIGERR_UNDEFINED_BYTECODE -13
-#define ONIGERR_UNEXPECTED_BYTECODE -14
-#define ONIGERR_MATCH_STACK_LIMIT_OVER -15
-#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
-#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
-#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
-#define ONIGERR_INVALID_ARGUMENT -30
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101
-#define ONIGERR_EMPTY_CHAR_CLASS -102
-#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103
-#define ONIGERR_END_PATTERN_AT_ESCAPE -104
-#define ONIGERR_END_PATTERN_AT_META -105
-#define ONIGERR_END_PATTERN_AT_CONTROL -106
-#define ONIGERR_META_CODE_SYNTAX -108
-#define ONIGERR_CONTROL_CODE_SYNTAX -109
-#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110
-#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111
-#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114
-#define ONIGERR_NESTED_REPEAT_OPERATOR -115
-#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116
-#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117
-#define ONIGERR_END_PATTERN_IN_GROUP -118
-#define ONIGERR_UNDEFINED_GROUP_OPTION -119
-#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121
-#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122
-#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123
-#define ONIGERR_INVALID_CONDITION_PATTERN -124
-#define ONIGERR_TOO_BIG_NUMBER -200
-#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201
-#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202
-#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203
-#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204
-#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205
-#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206
-#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207
-#define ONIGERR_INVALID_BACKREF -208
-#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209
-#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -210
-#define ONIGERR_TOO_SHORT_DIGITS -211
-#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212
-#define ONIGERR_EMPTY_GROUP_NAME -214
-#define ONIGERR_INVALID_GROUP_NAME -215
-#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216
-#define ONIGERR_UNDEFINED_NAME_REFERENCE -217
-#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218
-#define ONIGERR_MULTIPLEX_DEFINED_NAME -219
-#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220
-#define ONIGERR_NEVER_ENDING_RECURSION -221
-#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
-#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
-#define ONIGERR_INVALID_CODE_POINT_VALUE -400
-#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
-#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
-#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402
-#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403
-#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31
-#define ONIG_IS_CAPTURE_HISTORY_GROUP(r,i) ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])
-#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1
-#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2
-#define ONIG_TRAVERSE_CALLBACK_AT_BOTH ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST )
-#define ONIG_REGION_NOTPOS -1
-#define ONIG_NULL_WARN onig_null_warn
-#define ONIG_CHAR_TABLE_SIZE 256
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_ENCODING_H
-#define ONIGURUMA_H
-#define ONIGURUMA
-#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR
-#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR
-#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY
-#pragma GCC visibility push(default)
-#define ENCODING_INLINE_MAX RUBY_ENCODING_INLINE_MAX
-#define ENCODING_SHIFT RUBY_ENCODING_SHIFT
-#define ENCODING_MASK RUBY_ENCODING_MASK
-#define ENCODING_SET_INLINED(obj,i) RB_ENCODING_SET_INLINED(obj,i)
-#define ENCODING_SET(obj,i) RB_ENCODING_SET(obj,i)
-#define ENCODING_GET_INLINED(obj) RB_ENCODING_GET_INLINED(obj)
-#define ENCODING_GET(obj) RB_ENCODING_GET(obj)
-#define ENCODING_IS_ASCII8BIT(obj) RB_ENCODING_IS_ASCII8BIT(obj)
-#define ENCODING_MAXNAMELEN RUBY_ENCODING_MAXNAMELEN
-#define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret)
-#define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret)
-#define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret)
-#define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret)
-#define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret)
-#pragma GCC visibility pop
-#define RB_ENCODING_GET RB_ENCODING_GET
-#define RB_ENCODING_GET_INLINED RB_ENCODING_GET_INLINED
-#define RB_ENCODING_IS_ASCII8BIT RB_ENCODING_IS_ASCII8BIT
-#define RB_ENCODING_SET RB_ENCODING_SET
-#define RB_ENCODING_SET_INLINED RB_ENCODING_SET_INLINED
-#define rb_enc_asciicompat rb_enc_asciicompat
-#define rb_enc_code_to_mbclen rb_enc_code_to_mbclen
-#define rb_enc_codepoint rb_enc_codepoint
-#define rb_enc_left_char_head rb_enc_left_char_head
-#define rb_enc_mbc_to_codepoint rb_enc_mbc_to_codepoint
-#define rb_enc_mbcput rb_enc_mbcput
-#define rb_enc_mbmaxlen rb_enc_mbmaxlen
-#define rb_enc_mbminlen rb_enc_mbminlen
-#define rb_enc_name rb_enc_name
-#define rb_enc_prev_char rb_enc_prev_char
-#define rb_enc_right_char_head rb_enc_right_char_head
-#define rb_enc_step_back rb_enc_step_back
-#define rb_enc_str_asciicompat_p rb_enc_str_asciicompat_p
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_enc_is_newline rb_enc_is_newline
-#define rb_enc_isalnum rb_enc_isalnum
-#define rb_enc_isalpha rb_enc_isalpha
-#define rb_enc_isascii rb_enc_isascii
-#define rb_enc_isctype rb_enc_isctype
-#define rb_enc_isdigit rb_enc_isdigit
-#define rb_enc_islower rb_enc_islower
-#define rb_enc_isprint rb_enc_isprint
-#define rb_enc_iscntrl rb_enc_iscntrl
-#define rb_enc_ispunct rb_enc_ispunct
-#define rb_enc_isspace rb_enc_isspace
-#define rb_enc_isupper rb_enc_isupper
-#define RUBY_INTERNAL_ENCODING_PATHNAME_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_RE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_SPRINTF_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_STRING_H
-#pragma GCC visibility push(default)
-#define rb_enc_str_new(str,len,enc) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_enc_str_new_static: rb_enc_str_new) ((str), (len), (enc)))
-#define rb_enc_str_new_cstr(str,enc) ((RBIMPL_CONSTANT_P(str) ? rbimpl_enc_str_new_cstr : rb_enc_str_new_cstr) ((str), (enc)))
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_SYMBOL_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_INTERNAL_ENCODING_TRANSCODE_H
-#pragma GCC visibility push(default)
-#define ECONV_ERROR_HANDLER_MASK RUBY_ECONV_ERROR_HANDLER_MASK
-#define ECONV_INVALID_MASK RUBY_ECONV_INVALID_MASK
-#define ECONV_INVALID_REPLACE RUBY_ECONV_INVALID_REPLACE
-#define ECONV_UNDEF_MASK RUBY_ECONV_UNDEF_MASK
-#define ECONV_UNDEF_REPLACE RUBY_ECONV_UNDEF_REPLACE
-#define ECONV_UNDEF_HEX_CHARREF RUBY_ECONV_UNDEF_HEX_CHARREF
-#define ECONV_DECORATOR_MASK RUBY_ECONV_DECORATOR_MASK
-#define ECONV_NEWLINE_DECORATOR_MASK RUBY_ECONV_NEWLINE_DECORATOR_MASK
-#define ECONV_NEWLINE_DECORATOR_READ_MASK RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK
-#define ECONV_NEWLINE_DECORATOR_WRITE_MASK RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK
-#define ECONV_UNIVERSAL_NEWLINE_DECORATOR RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR
-#define ECONV_CRLF_NEWLINE_DECORATOR RUBY_ECONV_CRLF_NEWLINE_DECORATOR
-#define ECONV_CR_NEWLINE_DECORATOR RUBY_ECONV_CR_NEWLINE_DECORATOR
-#define ECONV_LF_NEWLINE_DECORATOR RUBY_ECONV_LF_NEWLINE_DECORATOR
-#define ECONV_XML_TEXT_DECORATOR RUBY_ECONV_XML_TEXT_DECORATOR
-#define ECONV_XML_ATTR_CONTENT_DECORATOR RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR
-#define ECONV_STATEFUL_DECORATOR_MASK RUBY_ECONV_STATEFUL_DECORATOR_MASK
-#define ECONV_XML_ATTR_QUOTE_DECORATOR RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR
-#define ECONV_DEFAULT_NEWLINE_DECORATOR RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR
-#define ECONV_PARTIAL_INPUT RUBY_ECONV_PARTIAL_INPUT
-#define ECONV_AFTER_OUTPUT RUBY_ECONV_AFTER_OUTPUT
-#pragma GCC visibility pop
-#define STR_NOEMBED FL_USER1
-#define STR_SHARED FL_USER2
-#undef rb_fstring_cstr
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
-#define rb_fstring_literal(str) rb_fstring_lit(str)
-#define rb_fstring_enc_lit(str,enc) rb_fstring_enc_new((str), rb_strlen_lit(str), (enc))
-#define rb_fstring_enc_literal(str,enc) rb_fstring_enc_lit(str, enc)
-#define rb_fstring_cstr(str) (__builtin_constant_p(str) ? rb_fstring_new((str), (long)strlen(str)) : (rb_fstring_cstr)(str))
-#undef Check_Type
-#define rb_raise_static(e,m) rb_raise_cstr_i((e), rb_str_new_static((m), rb_strlen_lit(m)))
-#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
-#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
-#define rb_syserr_new_path(err,path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
-#define rb_warn_deprecated_to_remove_at(removal,...) rb_warn_deprecated_to_remove(#removal, __VA_ARGS__)
-#define RUBY_VERSION_SINCE(major,minor) 0
-#define RUBY_VERSION_BEFORE(major,minor) 0
-#define RBIMPL_TODO0(x)
-#define RBIMPL_TODO(message) RBIMPL_TODO0("TODO: " message)
-#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_EVAL_H
-#define id_signo ruby_static_id_signo
-#define id_status ruby_static_id_status
-#define INTERNAL_INITS_H
-#define INTERNAL_OBJECT_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_PARSE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_PROC_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_RE_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_SYMBOL_H
-#undef rb_sym_intern_ascii_cstr
-#define rb_sym_intern_ascii_cstr(ptr) (__builtin_constant_p(ptr) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr))
-#define INTERNAL_THREAD_H
-#define COVERAGE_INDEX_LINES 0
-#define COVERAGE_INDEX_BRANCHES 1
-#define COVERAGE_TARGET_LINES 1
-#define COVERAGE_TARGET_BRANCHES 2
-#define COVERAGE_TARGET_METHODS 4
-#define COVERAGE_TARGET_ONESHOT_LINES 8
-#define COVERAGE_TARGET_EVAL 16
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_SANITIZERS_H
-#define SANITIZER_ASAN_INTERFACE_H
-#define SANITIZER_COMMON_INTERFACE_DEFS_H
-#define ASAN_POISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
-#define ASAN_UNPOISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
-#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE_ADDRESS(NOINLINE(x))
-#define __asan_poison_memory_region(x,y)
-#define __asan_unpoison_memory_region(x,y)
-#define __asan_region_is_poisoned(x,y) 0
-#define __msan_allocated_memory(x,y) ((void)(x), (void)(y))
-#define __msan_poison(x,y) ((void)(x), (void)(y))
-#define __msan_unpoison(x,y) ((void)(x), (void)(y))
-#define __msan_unpoison_string(x) ((void)(x))
-#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
-#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
-#define INTERNAL_VARIABLE_H
-#define CONSTANT_H
-#define RUBY_ID_TABLE_H 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
-#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
-#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define ROBJECT_TRANSIENT_FLAG FL_USER2
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_MJIT_H 1
-#define RUBY_H 1
-#define HAVE_RUBY_ATOMIC_H 1
-#define HAVE_RUBY_DEBUG_H 1
-#define HAVE_RUBY_DEFINES_H 1
-#define HAVE_RUBY_ENCODING_H 1
-#define HAVE_RUBY_FIBER_SCHEDULER_H 1
-#define HAVE_RUBY_INTERN_H 1
-#define HAVE_RUBY_IO_H 1
-#define HAVE_RUBY_MEMORY_VIEW_H 1
-#define HAVE_RUBY_MISSING_H 1
-#define HAVE_RUBY_ONIGMO_H 1
-#define HAVE_RUBY_ONIGURUMA_H 1
-#define HAVE_RUBY_RACTOR_H 1
-#define HAVE_RUBY_RANDOM_H 1
-#define HAVE_RUBY_RE_H 1
-#define HAVE_RUBY_REGEX_H 1
-#define HAVE_RUBY_RUBY_H 1
-#define HAVE_RUBY_ST_H 1
-#define HAVE_RUBY_THREAD_H 1
-#define HAVE_RUBY_THREAD_NATIVE_H 1
-#define HAVE_RUBY_UTIL_H 1
-#define HAVE_RUBY_VERSION_H 1
-#define HAVE_RUBY_VM_H 1
-#define MJIT_FUNC_STATE_P(jit_func) ((uintptr_t)(jit_func) <= (uintptr_t)MJIT_FUNC_FAILED)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define mjit_enabled true
-#define YJIT_H 1
-#define YJIT_STATS RUBY_DEBUG
-#define RUBY_VM_H 1
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_VM_CALLINFO_H
-#define USE_DEBUG_COUNTER 0
-#define RUBY_DEBUG_COUNTER_H 1
-#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_##name,
-#undef RB_DEBUG_COUNTER
-#define RB_DEBUG_COUNTER_INC(type) ((void)0)
-#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (!!(cond))
-#define RB_DEBUG_COUNTER_INC_IF(type,cond) (!!(cond))
-#define RB_DEBUG_COUNTER_ADD(type,num) ((void)0)
-#define RB_DEBUG_COUNTER_SETMAX(type,num) 0
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_CLASS_H
-#define RCLASS_EXT(c) ((rb_classext_t *)((char *)(c) + sizeof(struct RClass)))
-#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
-#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
-#define RCLASS_IVPTR(c) (RCLASS_EXT(c)->iv_ptr)
-#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
-#define RCLASS_CC_TBL(c) (RCLASS_EXT(c)->cc_tbl)
-#define RCLASS_CVC_TBL(c) (RCLASS_EXT(c)->cvc_tbl)
-#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
-#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
-#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
-#define RCLASS_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->subclass_entry)
-#define RCLASS_MODULE_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->module_subclass_entry)
-#define RCLASS_ALLOCATOR(c) (RCLASS_EXT(c)->allocator)
-#define RCLASS_SUBCLASSES(c) (RCLASS_EXT(c)->subclasses)
-#define RCLASS_SUPERCLASS_DEPTH(c) (RCLASS_EXT(c)->superclass_depth)
-#define RCLASS_SUPERCLASSES(c) (RCLASS_EXT(c)->superclasses)
-#define RICLASS_IS_ORIGIN FL_USER0
-#define RCLASS_CLONED FL_USER1
-#define RCLASS_SUPERCLASSES_INCLUDE_SELF FL_USER2
-#define RICLASS_ORIGIN_SHARED_MTBL FL_USER3
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
-#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
-#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
-#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
-#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
-#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
-#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
-#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
-#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
-#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
-#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
-#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
-#define VM_CALL_KW_SPLAT_MUT (0x01 << VM_CALL_KW_SPLAT_MUT_bit)
-#define USE_EMBED_CI 1
-#define CI_EMBED_TAG_bits 1
-#define CI_EMBED_ARGC_bits 15
-#define CI_EMBED_FLAG_bits 16
-#define CI_EMBED_ID_bits 32
-#define CI_EMBED_FLAG 0x01
-#define CI_EMBED_ARGC_SHFT (CI_EMBED_TAG_bits)
-#define CI_EMBED_ARGC_MASK ((((VALUE)1)<iseq)->iseq_encoded), (reg_cfp->pc - ISEQ_BODY(reg_cfp->iseq)->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), rb_iseq_line_no(reg_cfp->iseq, reg_pc - ISEQ_BODY(reg_cfp->iseq)->iseq_encoded)); } if (USE_INSNS_COUNTER) vm_insns_counter_count_insn(BIN(insn));
-#define INSN_DISPATCH_SIG(insn)
-#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
-#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
-#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
-#define INSN_DISPATCH() TC_DISPATCH(__START__) {
-#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
-#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
-#define START_OF_ORIGINAL_INSN(x) if (0) goto start_of_##x; start_of_##x:
-#define DISPATCH_ORIGINAL_INSN(x) goto start_of_##x;
-#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
-#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
-#define SCREG(r) (reg_##r)
-#define VM_DEBUG_STACKOVERFLOW 0
-#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
-#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
-#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
-#define RUBY_INSNHELPER_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define COLLECT_USAGE_INSN(insn)
-#define COLLECT_USAGE_OPERAND(insn,n,op)
-#define COLLECT_USAGE_REGISTER(reg,s)
-#define PUSH(x) (SET_SV(x), INC_SP(1))
-#define TOPN(n) (*(GET_SP()-(n)-1))
-#define POPN(n) (DEC_SP(n))
-#define POP() (DEC_SP(1))
-#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
-#define VM_REG_CFP (reg_cfp)
-#define VM_REG_PC (VM_REG_CFP->pc)
-#define VM_REG_SP (VM_REG_CFP->sp)
-#define VM_REG_EP (VM_REG_CFP->ep)
-#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
-#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
-#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
-#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
-#define GET_CURRENT_INSN() (*GET_PC())
-#define GET_OPERAND(n) (GET_PC()[(n)])
-#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
-#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
-#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
-#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
-#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
-#define GET_LEP() (VM_EP_LEP(GET_EP()))
-#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
-#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
-#define SET_SV(x) (*GET_SP() = rb_ractor_confirm_belonging(x))
-#define GET_ISEQ() (GET_CFP()->iseq)
-#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
-#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
-#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
-#define SETUP_CANARY(cond) if (cond) {} else {}
-#define CHECK_CANARY(cond,insn) if (cond) {(void)(insn);}
-#define GET_GLOBAL_CVAR_STATE() (ruby_vm_global_cvar_state)
-#define INC_GLOBAL_CVAR_STATE() (++ruby_vm_global_cvar_state)
-#define IS_ARGS_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT)
-#define IS_ARGS_KEYWORD(ci) (vm_ci_flag(ci) & VM_CALL_KWARG)
-#define IS_ARGS_KW_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT)
-#define IS_ARGS_KW_OR_KW_SPLAT(ci) (vm_ci_flag(ci) & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
-#define IS_ARGS_KW_SPLAT_MUT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT_MUT)
-#define RUBY_RACTOR_H 1
-#pragma GCC visibility push(default)
-#define RB_RACTOR_LOCAL_STORAGE_TYPE_FREE (&rb_ractor_local_storage_type_free)
-#pragma GCC visibility pop
-#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)
-#define RACTOR_CHECK_MODE (VM_CHECK_MODE || RUBY_DEBUG) && (SIZEOF_UINT64_T == SIZEOF_VALUE)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define rb_ractor_set_current_ec(cr,ec) rb_ractor_set_current_ec_(cr, ec, __FILE__, __LINE__)
-#define rb_ractor_confirm_belonging(obj) obj
-#define RUBY_VM_SYNC_H
-#define LOCATION_ARGS void
-#define LOCATION_PARAMS
-#define APPEND_LOCATION_ARGS
-#define APPEND_LOCATION_PARAMS
-#define RB_VM_LOCKED_P() rb_vm_locked_p()
-#define RB_VM_LOCK() rb_vm_lock(__FILE__, __LINE__)
-#define RB_VM_UNLOCK() rb_vm_unlock(__FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_CR_LEV(cr,levp) rb_vm_lock_enter_cr(cr, levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_LEAVE_CR_LEV(cr,levp) rb_vm_lock_leave_cr(cr, levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_LEV(levp) rb_vm_lock_enter(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_LEAVE_LEV(levp) rb_vm_lock_leave(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV(&_lev);
-#define RB_VM_LOCK_LEAVE() RB_VM_LOCK_LEAVE_LEV(&_lev); }
-#define RB_VM_LOCK_ENTER_LEV_NB(levp) rb_vm_lock_enter_nb(levp, __FILE__, __LINE__)
-#define RB_VM_LOCK_ENTER_NO_BARRIER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV_NB(&_lev);
-#define RB_VM_LOCK_LEAVE_NO_BARRIER() RB_VM_LOCK_LEAVE_LEV(&_lev); }
-#define ASSERT_vm_locking()
-#define ASSERT_vm_unlocking()
-#define BUILTIN_H_INCLUDED
-#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity,_compiler) { .name = _i < 0 ? NULL : #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i, .compiler = _compiler, }
-#define _PROBES_H
-#define DTRACE_PROBES_DISABLED 1
-#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
-#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
-#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
-#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
-#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_RAISE_ENABLED() 0
-#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
-#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
-#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
-#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
-#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
-#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
-#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
-#define RUBY_DTRACE_PARSE_END_ENABLED() 0
-#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
-#define RUBY_DTRACE_INSN_ENABLED() 0
-#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
-#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
-#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
-#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
-#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
-#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
-#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
-#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
-#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
-#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
-#define RUBY_PROBES_HELPER_H
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define RUBY_DTRACE_METHOD_HOOK(name,ec,klazz,id) do { if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, klazz, id, &args)) { RUBY_DTRACE_##name(args.classname, args.methodname, args.filename, args.line_no); } } } while (0)
-#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
-#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
-#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
-#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define INTERNAL_COMPAR_H
-#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
-#define CMP_OPTIMIZABLE(type) BASIC_OP_UNREDEFINED_P(BOP_CMP, type##_REDEFINED_OP_FLAG)
-#define OPTIMIZED_CMP(a,b) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(INTEGER)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(STRING)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(FLOAT)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b))
-#define INTERNAL_HASH_H
-#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
-#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
-#define RHASH(obj) ((struct RHash *)(obj))
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__)
-#pragma GCC visibility pop
-#define INTERNAL_NUMERIC_H
-#define INTERNAL_BIGNUM_H
-#define BDIGIT unsigned int
-#define SIZEOF_BDIGIT SIZEOF_INT
-#define BDIGIT_DBL unsigned LONG_LONG
-#define BDIGIT_DBL_SIGNED LONG_LONG
-#define PRI_BDIGIT_PREFIX ""
-#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
-#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
-#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
-#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
-#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
-#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
-#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
-#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
-#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
-#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
-#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
-#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
-#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
-#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
-#define RBIGNUM(obj) ((struct RBignum *)(obj))
-#define BIGNUM_SIGN_BIT FL_USER1
-#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
-#define BIGNUM_EMBED_LEN_NUMBITS 3
-#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
-#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
-#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RBIMPL_RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_BITS_H
-#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
-#define SIGNED_INTEGER_TYPE_P(T) (0 > ((T)0)-1)
-#define SIGNED_INTEGER_MIN(T) ((sizeof(T) == sizeof(int8_t)) ? ((T)INT8_MIN) : ((sizeof(T) == sizeof(int16_t)) ? ((T)INT16_MIN) : ((sizeof(T) == sizeof(int32_t)) ? ((T)INT32_MIN) : ((sizeof(T) == sizeof(int64_t)) ? ((T)INT64_MIN) : 0))))
-#define SIGNED_INTEGER_MAX(T) ((T)(SIGNED_INTEGER_MIN(T) ^ ((T)~(T)0)))
-#define UNSIGNED_INTEGER_MAX(T) ((T)~(T)0)
-#define MUL_OVERFLOW_P(a,b) __extension__ ({ __typeof__(a) c; __builtin_mul_overflow((a), (b), &c); })
-#define MUL_OVERFLOW_SIGNED_INTEGER_P(a,b,min,max) ( (a) == 0 ? 0 : (a) == -1 ? (b) < -(max) : (a) > 0 ? ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
-#define MUL_OVERFLOW_FIXNUM_P(a,b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX)
-#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
-#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
-#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
-#define bit_length(x) (unsigned int) (sizeof(x) <= sizeof(int32_t) ? 32 - nlz_int32((uint32_t)(x)) : sizeof(x) <= sizeof(int64_t) ? 64 - nlz_int64((uint64_t)(x)) : 128 - nlz_int128((uint128_t)(x)))
-#define swap16 ruby_swap16
-#define swap32 ruby_swap32
-#define swap64 ruby_swap64
-#define INTERNAL_FIXNUM_H
-#define DLONG int128_t
-#define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
-#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
-#define ROUND_FUNC(mode,name) ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down)
-#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name##_half_even args, name##_half_up args, name##_half_down args)
-#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
-#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
-#define roomof(x,y) (((x) + (y) - 1) / (y))
-#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
-#define RFLOAT(obj) ((struct RFloat *)(obj))
-#define rb_float_value rb_float_value_inline
-#define rb_float_new rb_float_new_inline
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#pragma GCC visibility push(default)
-#pragma GCC visibility pop
-#define INTERNAL_RANDOM_H
-#define INTERNAL_STRUCT_H
-#define RSTRUCT(obj) ((struct RStruct *)(obj))
-#define RSTRUCT_LEN internal_RSTRUCT_LEN
-#define RSTRUCT_SET internal_RSTRUCT_SET
-#define RSTRUCT_GET internal_RSTRUCT_GET
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define RUBY_TOPLEVEL_VARIABLE_H
-#define BIN(n) YARVINSN_##n
-#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE)
-#define vm_check_canary(ec,sp)
-#define vm_check_frame(a,b,c,d)
-#define vm_push_frame_debug_counter_inc(ec,cfp,t)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define ractor_incidental_shareable_p(cond,val) (!(cond) || rb_ractor_shareable_p(val))
-#define ractor_object_incidental_shareable_p(obj,val) ractor_incidental_shareable_p(rb_ractor_shareable_p(obj), val)
-#define ATTR_INDEX_NOT_SET (attr_index_t)-1
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t##_REDEFINED_OP_FLAG)
-#undef EQ_UNREDEFINED_P
-#define CHECK_CMP_NAN(a,b)
-#define KW_SPECIFIED_BITS_MAX (32-1)
-#define USE_OPT_HIST 0
-#define CHECK_CFP_CONSISTENCY(func) (LIKELY(vm_cfp_consistent_p(ec, reg_cfp)) ? (void)0 : rb_bug(func ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)))
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_CALL_METHOD_ATTR(var,func,nohook) if (UNLIKELY(ruby_vm_event_flags & (RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN))) { EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, Qundef); var = func; EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (var)); } else { nohook; var = func; }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define mexp_search_method vm_search_method_wrap
-#define mexp_search_super vm_search_super_method
-#define mexp_search_invokeblock vm_search_invokeblock
-#define id_cmp idCmp
-#undef id_cmp
-#define IMEMO_CONST_CACHE_SHAREABLE IMEMO_FL_USER0
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-#pragma clang diagnostic pop
-#define VM_TRACE_HOOK(target_event,val) do { if ((pc_events & (target_event)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (target_event), global_hooks, local_hooks_ptr, (val)); } } while (0)
-#undef VM_TRACE_HOOK
-#define id_mesg idMesg
diff --git a/ThirdParty/include/ruby/mac/x86_64-darwin/ruby/config.h b/ThirdParty/include/ruby/mac/x86_64-darwin/ruby/config.h
deleted file mode 100644
index 900c26c44..000000000
--- a/ThirdParty/include/ruby/mac/x86_64-darwin/ruby/config.h
+++ /dev/null
@@ -1,462 +0,0 @@
-#ifndef INCLUDE_RUBY_CONFIG_H
-#define INCLUDE_RUBY_CONFIG_H 1
-/* confdefs.h */
-#define HAVE_STDIO_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_WCHAR_H 1
-#define STDC_HEADERS 1
-#define _ALL_SOURCE 1
-#define _DARWIN_C_SOURCE 1
-#define _GNU_SOURCE 1
-#define _HPUX_ALT_XOPEN_SOCKET_API 1
-#define _NETBSD_SOURCE 1
-#define _OPENBSD_SOURCE 1
-#define _POSIX_PTHREAD_SEMANTICS 1
-#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
-#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
-#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
-#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
-#define __STDC_WANT_LIB_EXT2__ 1
-#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
-#define _TANDEM_SOURCE 1
-#define __EXTENSIONS__ 1
-#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
-#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
-#define HAVE_STMT_AND_DECL_IN_EXPR 1
-#define HAVE_PTHREAD_H 1
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-#define HAVE_LIBPTHREAD 1
-#define THREAD_IMPL_H "thread_pthread.h"
-#define THREAD_IMPL_SRC "thread_pthread.c"
-#define BROKEN_CRYPT 1
-#define HAVE_CRT_EXTERNS_H 1
-#define HAVE_LIBDL 1
-#define HAVE_DIRENT_H 1
-#define HAVE__BOOL 1
-#define HAVE_STDBOOL_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_COPYFILE_H 1
-#define HAVE_GRP_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LANGINFO_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_LOCALE_H 1
-#define HAVE_MALLOC_MALLOC_H 1
-#define HAVE_PWD_H 1
-#define HAVE_SANITIZER_ASAN_INTERFACE_H 1
-#define HAVE_SANITIZER_MSAN_INTERFACE_H 1
-#define HAVE_STDALIGN_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_SYS_ATTR_H 1
-#define HAVE_SYS_FCNTL_H 1
-#define HAVE_SYS_FILE_H 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_RANDOM_H 1
-#define HAVE_SYS_RESOURCE_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_UIO_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UCONTEXT_H 1
-#define HAVE_UTIME_H 1
-#define HAVE_X86INTRIN_H 1
-#if defined(__x86_64__)
-#define HAVE_X86INTRIN_H 1
-#endif
-#define HAVE_TYPEOF 1
-#define restrict __restrict__
-#define HAVE_LONG_LONG 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 8
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF___INT64 0
-#define SIZEOF___INT128 16
-#define SIZEOF_OFF_T 8
-#define SIZEOF_VOIDP 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_TIME_T 8
-#define SIZEOF_CLOCK_T 8
-#define PACKED_STRUCT(x) x __attribute__((packed))
-#define USE_UNALIGNED_MEMBER_ACCESS 1
-#define PRI_LL_PREFIX "ll"
-#define HAVE_PID_T 1
-#define rb_pid_t pid_t
-#define SIGNEDNESS_OF_PID_T -1
-#define PIDT2NUM(v) INT2NUM(v)
-#define NUM2PIDT(v) NUM2INT(v)
-#define PRI_PIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_UID_T 1
-#define rb_uid_t uid_t
-#define SIGNEDNESS_OF_UID_T +1
-#define UIDT2NUM(v) UINT2NUM(v)
-#define NUM2UIDT(v) NUM2UINT(v)
-#define PRI_UIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_GID_T 1
-#define rb_gid_t gid_t
-#define SIGNEDNESS_OF_GID_T +1
-#define GIDT2NUM(v) UINT2NUM(v)
-#define NUM2GIDT(v) NUM2UINT(v)
-#define PRI_GIDT_PREFIX PRI_INT_PREFIX
-#define HAVE_TIME_T 1
-#define rb_time_t time_t
-#define SIGNEDNESS_OF_TIME_T -1
-#define TIMET2NUM(v) LONG2NUM(v)
-#define NUM2TIMET(v) NUM2LONG(v)
-#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
-#define HAVE_DEV_T 1
-#define rb_dev_t dev_t
-#define SIGNEDNESS_OF_DEV_T -1
-#define DEVT2NUM(v) INT2NUM(v)
-#define NUM2DEVT(v) NUM2INT(v)
-#define PRI_DEVT_PREFIX PRI_INT_PREFIX
-#define HAVE_MODE_T 1
-#define rb_mode_t mode_t
-#define SIGNEDNESS_OF_MODE_T +1
-#define MODET2NUM(v) USHORT2NUM(v)
-#define NUM2MODET(v) NUM2USHORT(v)
-#define PRI_MODET_PREFIX PRI_SHORT_PREFIX
-#define HAVE_RLIM_T 1
-#define rb_rlim_t rlim_t
-#define SIGNEDNESS_OF_RLIM_T +1
-#define RLIM2NUM(v) ULL2NUM(v)
-#define NUM2RLIM(v) NUM2ULL(v)
-#define PRI_RLIM_PREFIX PRI_LL_PREFIX
-#define HAVE_OFF_T 1
-#define rb_off_t off_t
-#define SIGNEDNESS_OF_OFF_T -1
-#define OFFT2NUM(v) LL2NUM(v)
-#define NUM2OFFT(v) NUM2LL(v)
-#define PRI_OFFT_PREFIX PRI_LL_PREFIX
-#define HAVE_CLOCKID_T 1
-#define rb_clockid_t clockid_t
-#define SIGNEDNESS_OF_CLOCKID_T +1
-#define CLOCKID2NUM(v) UINT2NUM(v)
-#define NUM2CLOCKID(v) NUM2UINT(v)
-#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
-#define HAVE_VA_ARGS_MACRO 1
-#define HAVE__ALIGNOF 1
-#define CONSTFUNC(x) __attribute__ ((__const__)) x
-#define PUREFUNC(x) __attribute__ ((__pure__)) x
-#define NORETURN(x) __attribute__ ((__noreturn__)) x
-#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
-#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
-#define NOINLINE(x) __attribute__ ((__noinline__)) x
-#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
-#define NO_SANITIZE(san, x) __attribute__ ((__no_sanitize__(san))) x
-#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
-#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
-#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
-#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
-#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
-#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
-#define WEAK(x) __attribute__ ((__weak__)) x
-#define HAVE_FUNC_WEAK 1
-#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
-#define HAVE_NULLPTR 1
-#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
-#define HAVE_GCC_ATOMIC_BUILTINS 1
-#define HAVE_GCC_SYNC_BUILTINS 1
-#define HAVE___BUILTIN_UNREACHABLE 1
-#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
-#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
-#define RUBY_FUNCTION_NAME_STRING __func__
-#define ENUM_OVER_INT 1
-#define HAVE_DECL_SYS_NERR 1
-#define HAVE_DECL_GETENV 1
-#define SIZEOF_SIZE_T 8
-#define SIZEOF_PTRDIFF_T 8
-#define SIZEOF_DEV_T 4
-#define PRI_SIZE_PREFIX "z"
-#define PRI_PTRDIFF_PREFIX "t"
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
-#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
-#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T
-#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T
-#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1
-#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
-#define HAVE_STRUCT_TIMESPEC 1
-#define HAVE_STRUCT_TIMEZONE 1
-#define HAVE_RB_FD_INIT 1
-#define HAVE_INT8_T 1
-#define SIZEOF_INT8_T 1
-#define HAVE_UINT8_T 1
-#define SIZEOF_UINT8_T 1
-#define HAVE_INT16_T 1
-#define SIZEOF_INT16_T 2
-#define HAVE_UINT16_T 1
-#define SIZEOF_UINT16_T 2
-#define HAVE_INT32_T 1
-#define SIZEOF_INT32_T 4
-#define HAVE_UINT32_T 1
-#define SIZEOF_UINT32_T 4
-#define HAVE_INT64_T 1
-#define SIZEOF_INT64_T 8
-#define HAVE_UINT64_T 1
-#define SIZEOF_UINT64_T 8
-#define HAVE_INT128_T 1
-#define int128_t __int128
-#define SIZEOF_INT128_T SIZEOF___INT128
-#define HAVE_UINT128_T 1
-#define uint128_t unsigned __int128
-#define SIZEOF_UINT128_T SIZEOF___INT128
-#define HAVE_INTPTR_T 1
-#define SIZEOF_INTPTR_T 8
-#define HAVE_UINTPTR_T 1
-#define SIZEOF_UINTPTR_T 8
-#define PRI_PTR_PREFIX "l"
-#define HAVE_SSIZE_T 1
-#define SIZEOF_SSIZE_T 8
-#define PRI_64_PREFIX "ll"
-#define GETGROUPS_T gid_t
-#define HAVE_ALLOCA_H 1
-#define HAVE_ALLOCA 1
-#define HAVE_DUP 1
-#define HAVE_DUP2 1
-#define HAVE_ACOSH 1
-#define HAVE_CBRT 1
-#define HAVE_CRYPT 1
-#define HAVE_ERF 1
-#define HAVE_FFS 1
-#define HAVE_FLOCK 1
-#define HAVE_HYPOT 1
-#define HAVE_LGAMMA_R 1
-#define HAVE_MEMMOVE 1
-#define HAVE_NAN 1
-#define HAVE_NEXTAFTER 1
-#define HAVE_STRCHR 1
-#define HAVE_STRERROR 1
-#define HAVE_STRLCAT 1
-#define HAVE_STRLCPY 1
-#define HAVE_STRSTR 1
-#define HAVE_TGAMMA 1
-#define HAVE_ISFINITE 1
-#define SPT_TYPE SPT_REUSEARGV
-#define HAVE_SIGNBIT 1
-#define HAVE_FORK 1
-#define vfork fork
-#define HAVE_WORKING_FORK 1
-#define HAVE__LONGJMP 1
-#define HAVE_ARC4RANDOM_BUF 1
-#define HAVE_ATAN2L 1
-#define HAVE_ATAN2F 1
-#define HAVE_CHMOD 1
-#define HAVE_CHOWN 1
-#define HAVE_CHROOT 1
-#define HAVE_CLOCK_GETTIME 1
-#define HAVE_COSH 1
-#define HAVE_DIRFD 1
-#define HAVE_DLOPEN 1
-#define HAVE_DLADDR 1
-#define HAVE_ENDGRENT 1
-#define HAVE_EXECL 1
-#define HAVE_EXECLE 1
-#define HAVE_EXECV 1
-#define HAVE_EXECVE 1
-#define HAVE_FCOPYFILE 1
-#define HAVE_FCHMOD 1
-#define HAVE_FCHOWN 1
-#define HAVE_FCNTL 1
-#define HAVE_FDOPENDIR 1
-#define HAVE_FGETATTRLIST 1
-#define HAVE_FMOD 1
-#define HAVE_FSTATAT 1
-#define HAVE_FSYNC 1
-#define HAVE_FTRUNCATE 1
-#define HAVE_GETATTRLIST 1
-#define HAVE_GETCWD 1
-#define HAVE_GETEGID 1
-#define HAVE_GETENTROPY 1
-#define HAVE_GETEUID 1
-#define HAVE_GETGID 1
-#define HAVE_GETGRNAM 1
-#define HAVE_GETGRNAM_R 1
-#define HAVE_GETGROUPS 1
-#define HAVE_GETLOGIN 1
-#define HAVE_GETLOGIN_R 1
-#define HAVE_GETPGID 1
-#define HAVE_GETPGRP 1
-#define HAVE_GETPPID 1
-#define HAVE_GETPRIORITY 1
-#define HAVE_GETPWNAM 1
-#define HAVE_GETPWNAM_R 1
-#define HAVE_GETPWUID 1
-#define HAVE_GETPWUID_R 1
-#define HAVE_GETRLIMIT 1
-#define HAVE_GETSID 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETUID 1
-#define HAVE_GMTIME_R 1
-#define HAVE_GRANTPT 1
-#define HAVE_INITGROUPS 1
-#define HAVE_IOCTL 1
-#define HAVE_ISSETUGID 1
-#define HAVE_KILL 1
-#define HAVE_KILLPG 1
-#define HAVE_LCHMOD 1
-#define HAVE_LCHOWN 1
-#define HAVE_LINK 1
-#define HAVE_LLABS 1
-#define HAVE_LOCKF 1
-#define HAVE_LOG2 1
-#define HAVE_LSTAT 1
-#define HAVE_LUTIMES 1
-#define HAVE_MALLOC_SIZE 1
-#define HAVE_MBLEN 1
-#define HAVE_MEMSET_S 1
-#define HAVE_WRITEV 1
-#define HAVE_MEMMEM 1
-#define HAVE_MKFIFO 1
-#define HAVE_MKNOD 1
-#define HAVE_MKTIME 1
-#define HAVE_MMAP 1
-#define HAVE_OPENAT 1
-#define HAVE_PCLOSE 1
-#define HAVE_PIPE 1
-#define HAVE_POLL 1
-#define HAVE_POPEN 1
-#define HAVE_POSIX_MADVISE 1
-#define HAVE_POSIX_MEMALIGN 1
-#define HAVE_PREAD 1
-#define HAVE_PWRITE 1
-#define HAVE_QSORT_R 1
-#define HAVE_READLINK 1
-#define HAVE_REALPATH 1
-#define HAVE_ROUND 1
-#define HAVE_SEEKDIR 1
-#define HAVE_SENDFILE 1
-#define HAVE_SETEGID 1
-#define HAVE_SETENV 1
-#define HAVE_SETEUID 1
-#define HAVE_SETGID 1
-#define HAVE_SETGROUPS 1
-#define HAVE_SETPGID 1
-#define HAVE_SETPGRP 1
-#define HAVE_SETREGID 1
-#define HAVE_SETREUID 1
-#define HAVE_SETRGID 1
-#define HAVE_SETRLIMIT 1
-#define HAVE_SETRUID 1
-#define HAVE_SETSID 1
-#define HAVE_SETUID 1
-#define HAVE_SHUTDOWN 1
-#define HAVE_SIGACTION 1
-#define HAVE_SIGALTSTACK 1
-#define HAVE_SIGPROCMASK 1
-#define HAVE_SINH 1
-#define HAVE_SYMLINK 1
-#define HAVE_SYSCONF 1
-#define HAVE_SYSTEM 1
-#define HAVE_TANH 1
-#define HAVE_TELLDIR 1
-#define HAVE_TIMEGM 1
-#define HAVE_TIMES 1
-#define HAVE_TRUNCATE 1
-#define HAVE_TZSET 1
-#define HAVE_UMASK 1
-#define HAVE_UNSETENV 1
-#define HAVE_UTIMENSAT 1
-#define HAVE_UTIMES 1
-#define HAVE_WAIT4 1
-#define HAVE_WAITPID 1
-#define HAVE___COSPI 1
-#define HAVE___SINPI 1
-#if !defined __STDC_WANT_LIB_EXT1__
-#define __STDC_WANT_LIB_EXT1__ 1
-#endif /* !defined __STDC_WANT_LIB_EXT1__ */
-#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
-#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
-#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
-#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
-#define HAVE_BUILTIN___BUILTIN_CLZ 1
-#define HAVE_BUILTIN___BUILTIN_CLZL 1
-#define HAVE_BUILTIN___BUILTIN_CLZLL 1
-#define HAVE_BUILTIN___BUILTIN_CTZ 1
-#define HAVE_BUILTIN___BUILTIN_CTZLL 1
-#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
-#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
-#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
-#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
-#define HAVE_BUILTIN___BUILTIN_TRAP 1
-#define HAVE_BUILTIN___BUILTIN_EXPECT 1
-#define HAVE_BSD_QSORT_R 1
-#define ATAN2_INF_C99 1
-#define HAVE_CLOCK_GETRES 1
-#define HAVE_STRUCT_TM_TM_ZONE 1
-#define HAVE_TM_ZONE 1
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-#define HAVE_DAYLIGHT 1
-#define NEGATIVE_TIME_T 1
-#define POSIX_SIGNAL 1
-#define HAVE_SIG_T 1
-#define RSHIFT(x,y) ((x)>>(int)(y))
-#define HAVE__SC_CLK_TCK 1
-#define STACK_GROW_DIRECTION -1
-#define COROUTINE_H "coroutine/amd64/Context.h"
-#define HAVE_SCHED_YIELD 1
-#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
-#define HAVE_PTHREAD_ATTR_GETSTACK 1
-#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
-#define HAVE_PTHREAD_GET_STACKADDR_NP 1
-#define HAVE_PTHREAD_GET_STACKSIZE_NP 1
-#define HAVE_PTHREAD_SETNAME_NP 1
-#define HAVE_PTHREAD_SIGMASK 1
-#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(name)
-#define DEFINE_MCONTEXT_PTR(mc, uc) mcontext_t mc = (uc)->uc_mcontext
-#define HAVE_SYS_USER_H 1
-#define HAVE_CONST_PAGE_SIZE 1
-#define IOCTL_REQ_TYPE unsigned long
-#define NUM2IOCTLREQ(num) NUM2ULONG(num)
-#define HAVE_MACH_O_LOADER_H 1
-#define EXTSTATIC 1
-#define HAVE_LIBPROC_H 1
-#define HAVE_EXECINFO_H 1
-#define HAVE_LIBUNWIND_H 1
-#define HAVE_MACH_TASK_H 1
-#define HAVE_MACH_MACH_INIT_H 1
-#define HAVE_MACH_MACH_PORT_H 1
-#define HAVE_MACH_TASK_EXCEPTION_PORTS 1
-#define HAVE_BACKTRACE 1
-#define BROKEN_BACKTRACE 1
-#define DLEXT_MAXLEN 7
-#define DLEXT ".bundle"
-#define LIBDIR_BASENAME "lib"
-#define HAVE__SETJMP 1
-#define HAVE_SIGSETJMP 1
-#define RUBY_SETJMP(env) sigsetjmp((env),0)
-#define RUBY_LONGJMP(env,val) siglongjmp((env),val)
-#define RUBY_JMP_BUF sigjmp_buf
-#define USE_MJIT 1
-#define USE_YJIT 0
-#define LOAD_RELATIVE 1
-#define RUBY_PLATFORM "x86_64-darwin21"
-#endif /* INCLUDE_RUBY_CONFIG_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/assert.h b/ThirdParty/include/ruby/win32_x64/ruby/assert.h
index 0c052363b..acc5e5bbf 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/assert.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/assert.h
@@ -22,6 +22,7 @@
*/
#include "ruby/internal/assume.h"
#include "ruby/internal/attr/cold.h"
+#include "ruby/internal/attr/format.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/cast.h"
#include "ruby/internal/dllexport.h"
@@ -132,6 +133,11 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
RBIMPL_ATTR_NORETURN()
RBIMPL_ATTR_COLD()
void rb_assert_failure(const char *file, int line, const char *name, const char *expr);
+
+RBIMPL_ATTR_NORETURN()
+RBIMPL_ATTR_COLD()
+RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 5, 6)
+void rb_assert_failure_detail(const char *file, int line, const char *name, const char *expr, const char *fmt, ...);
RBIMPL_SYMBOL_EXPORT_END()
#ifdef RUBY_FUNCTION_NAME_STRING
@@ -147,8 +153,28 @@ RBIMPL_SYMBOL_EXPORT_END()
*
* @param mesg The message to display.
*/
-#define RUBY_ASSERT_FAIL(mesg) \
+#if defined(HAVE___VA_OPT__)
+# if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments")
+/* __VA_OPT__ is to be used for the zero variadic macro arguments
+ * cases. */
+RBIMPL_WARNING_IGNORED(-Wgnu-zero-variadic-macro-arguments)
+# endif
+# define RBIMPL_VA_OPT_ARGS(...) __VA_OPT__(,) __VA_ARGS__
+
+# define RUBY_ASSERT_FAIL(mesg, ...) \
+ rb_assert_failure##__VA_OPT__(_detail)( \
+ __FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#elif !defined(__cplusplus)
+# define RBIMPL_VA_OPT_ARGS(...)
+
+# define RUBY_ASSERT_FAIL(mesg, ...) \
rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
+#else
+# undef RBIMPL_VA_OPT_ARGS
+
+# define RUBY_ASSERT_FAIL(mesg) \
+ rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
+#endif
/**
* Asserts that the expression is truthy. If not aborts with the message.
@@ -156,15 +182,25 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param expr What supposedly evaluates to true.
* @param mesg The message to display on failure.
*/
-#define RUBY_ASSERT_MESG(expr, mesg) \
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG(expr, ...) \
+ (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_MESG(expr, mesg) \
(RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg))
+#endif
/**
* A variant of #RUBY_ASSERT that does not interface with #RUBY_DEBUG.
*
* @copydetails #RUBY_ASSERT
*/
-#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_ALWAYS(expr, ...) \
+ RUBY_ASSERT_MESG(expr, #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
+#endif
/**
* Asserts that the given expression is truthy if and only if #RUBY_DEBUG is truthy.
@@ -172,9 +208,18 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param expr What supposedly evaluates to true.
*/
#if RUBY_DEBUG
-# define RUBY_ASSERT(expr) RUBY_ASSERT_MESG((expr), #expr)
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT(expr, ...) \
+ RUBY_ASSERT_MESG((expr), #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+# else
+# define RUBY_ASSERT(expr) RUBY_ASSERT_MESG((expr), #expr)
+# endif
#else
-# define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT(/* expr, */...) RBIMPL_ASSERT_NOTHING
+# else
+# define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
+# endif
#endif
/**
@@ -187,9 +232,18 @@ RBIMPL_SYMBOL_EXPORT_END()
/* Currently `RUBY_DEBUG == ! defined(NDEBUG)` is always true. There is no
* difference any longer between this one and `RUBY_ASSERT`. */
#if defined(NDEBUG)
-# define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_NDEBUG(/* expr, */...) RBIMPL_ASSERT_NOTHING
+# else
+# define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
+# endif
#else
-# define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG((expr), #expr)
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_NDEBUG(expr, ...) \
+ RUBY_ASSERT_MESG((expr), #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+# else
+# define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG((expr), #expr)
+# endif
#endif
/**
@@ -197,10 +251,20 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param mesg The message to display on failure.
*/
#if RUBY_DEBUG
-# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) RUBY_ASSERT_MESG((expr), (mesg))
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG_WHEN(cond, /* expr, */...) \
+ RUBY_ASSERT_MESG(__VA_ARGS__)
+# else
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) RUBY_ASSERT_MESG((expr), (mesg))
+# endif
#else
-# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
+# if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, ...) \
+ ((cond) ? RUBY_ASSERT_MESG((expr), __VA_ARGS__) : RBIMPL_ASSERT_NOTHING)
+# else
+# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING)
+# endif
#endif
/**
@@ -210,7 +274,23 @@ RBIMPL_SYMBOL_EXPORT_END()
* @param cond Extra condition that shall hold for assertion to take effect.
* @param expr What supposedly evaluates to true.
*/
-#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
+#if defined(RBIMPL_VA_OPT_ARGS)
+# define RUBY_ASSERT_WHEN(cond, expr, ...) \
+ RUBY_ASSERT_MESG_WHEN(cond, expr, #expr RBIMPL_VA_OPT_ARGS(__VA_ARGS__))
+#else
+# define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
+#endif
+
+/**
+ * A variant of #RUBY_ASSERT that asserts when either #RUBY_DEBUG or built-in
+ * type of `obj` is `type`.
+ *
+ * @param obj Object to check its built-in typue.
+ * @param type Built-in type constant, T_ARRAY, T_STRING, etc.
+ */
+#define RUBY_ASSERT_BUILTIN_TYPE(obj, type) \
+ RUBY_ASSERT(RB_TYPE_P(obj, type), \
+ "Actual type is %s", rb_builtin_type_name(BUILTIN_TYPE(obj)))
/**
* This is either #RUBY_ASSERT or #RBIMPL_ASSUME, depending on #RUBY_DEBUG.
@@ -218,17 +298,19 @@ RBIMPL_SYMBOL_EXPORT_END()
* @copydetails #RUBY_ASSERT
*/
#if RUBY_DEBUG
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RUBY_ASSERT_ALWAYS(expr)
+# define RBIMPL_ASSERT_OR_ASSUME RUBY_ASSERT_ALWAYS
+#elif ! defined(RBIMPL_VA_OPT_ARGS)
+# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr)
#elif RBIMPL_COMPILER_BEFORE(Clang, 7, 0, 0)
# /* See commit 67d259c5dccd31fe49d417fec169977712ffdf10 */
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#elif defined(RUBY_ASSERT_NOASSUME)
# /* See commit d300a734414ef6de7e8eb563b7cc4389c455ed08 */
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#elif ! defined(RBIMPL_HAVE___ASSUME)
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
+# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING
#else
-# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr)
+# define RBIMPL_ASSERT_OR_ASSUME(expr, ...) RBIMPL_ASSUME(expr)
#endif
#endif /* RUBY_ASSERT_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/atomic.h b/ThirdParty/include/ruby/win32_x64/ruby/atomic.h
index 3eb80fbf7..18072f481 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/atomic.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/atomic.h
@@ -72,6 +72,8 @@ typedef unsigned int rb_atomic_t;
#elif defined(HAVE_GCC_SYNC_BUILTINS)
typedef unsigned int rb_atomic_t;
#elif defined(_WIN32)
+# include // to prevent macro redefinitions
+# include // for `LONG` and `Interlocked` functions
typedef LONG rb_atomic_t;
#elif defined(__sun) && defined(HAVE_ATOMIC_H)
typedef unsigned int rb_atomic_t;
@@ -138,6 +140,15 @@ typedef unsigned int rb_atomic_t;
#define RUBY_ATOMIC_CAS(var, oldval, newval) \
rbimpl_atomic_cas(&(var), (oldval), (newval))
+/**
+ * Atomic load. This loads `var` with an atomic intrinsic and returns
+ * its value.
+ *
+ * @param var A variable of ::rb_atomic_t
+ * @return What was stored in `var`j
+ */
+#define RUBY_ATOMIC_LOAD(var) rbimpl_atomic_load(&(var))
+
/**
* Identical to #RUBY_ATOMIC_EXCHANGE, except for the return type.
*
@@ -279,6 +290,17 @@ typedef unsigned int rb_atomic_t;
#define RUBY_ATOMIC_PTR_EXCHANGE(var, val) \
RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val))
+/**
+ * Identical to #RUBY_ATOMIC_LOAD, except it expects its arguments are `void*`.
+ * There are cases where ::rb_atomic_t is 32bit while `void*` is 64bit. This
+ * should be used for size related operations to support such platforms.
+ *
+ * @param var A variable of `void*`
+ * @return The value of `var` (without tearing)
+ */
+#define RUBY_ATOMIC_PTR_LOAD(var) \
+ RBIMPL_CAST(rbimpl_atomic_ptr_load((void **)&var))
+
/**
* Identical to #RUBY_ATOMIC_CAS, except it expects its arguments are `void*`.
* There are cases where ::rb_atomic_t is 32bit while `void*` is 64bit. This
@@ -291,7 +313,7 @@ typedef unsigned int rb_atomic_t;
* @retval otherwise Something else is at `var`; not updated.
*/
#define RUBY_ATOMIC_PTR_CAS(var, oldval, newval) \
- RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval)))
+ RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (void *)(oldval), (void *)(newval)))
/**
* Identical to #RUBY_ATOMIC_EXCHANGE, except it expects its arguments are
@@ -404,7 +426,7 @@ rbimpl_atomic_size_add(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
__sync_add_and_fetch(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
/* Ditto for `InterlockeExchangedAdd`. */
InterlockedExchangeAdd64(ptr, val);
@@ -456,13 +478,15 @@ rbimpl_atomic_size_inc(volatile size_t *ptr)
#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS)
rbimpl_atomic_size_add(ptr, 1);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
InterlockedIncrement64(ptr);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
atomic_inc_ulong(ptr);
#else
+ RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t));
+
rbimpl_atomic_size_add(ptr, 1);
#endif
@@ -538,7 +562,7 @@ rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
__sync_sub_and_fetch(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
const ssize_t neg = -1;
InterlockedExchangeAdd64(ptr, neg * val);
@@ -590,13 +614,15 @@ rbimpl_atomic_size_dec(volatile size_t *ptr)
#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS)
rbimpl_atomic_size_sub(ptr, 1);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
InterlockedDecrement64(ptr);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
atomic_dec_ulong(ptr);
#else
+ RBIMPL_STATIC_ASSERT(size_of_size_t, sizeof *ptr == sizeof(rb_atomic_t));
+
rbimpl_atomic_size_sub(ptr, 1);
#endif
@@ -688,7 +714,7 @@ rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
return __sync_lock_test_and_set(ptr, val);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
return InterlockedExchange64(ptr, val);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
@@ -746,6 +772,21 @@ rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val)
return RBIMPL_CAST((VALUE)sret);
}
+RBIMPL_ATTR_ARTIFICIAL()
+RBIMPL_ATTR_NOALIAS()
+RBIMPL_ATTR_NONNULL((1))
+static inline rb_atomic_t
+rbimpl_atomic_load(volatile rb_atomic_t *ptr)
+{
+#if 0
+
+#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#else
+ return rbimpl_atomic_fetch_add(ptr, 0);
+#endif
+}
+
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_NOALIAS()
RBIMPL_ATTR_NONNULL((1))
@@ -823,7 +864,7 @@ rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval)
#elif defined(HAVE_GCC_SYNC_BUILTINS)
return __sync_val_compare_and_swap(ptr, oldval, newval);
-#elif defined(_WIN32) && defined(_M_AMD64)
+#elif defined(_WIN64)
return InterlockedCompareExchange64(ptr, newval, oldval);
#elif defined(__sun) && defined(HAVE_ATOMIC_H) && (defined(_LP64) || defined(_I32LPx))
@@ -872,6 +913,22 @@ rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval)
#endif
}
+RBIMPL_ATTR_ARTIFICIAL()
+RBIMPL_ATTR_NOALIAS()
+RBIMPL_ATTR_NONNULL((1))
+static inline void *
+rbimpl_atomic_ptr_load(void **ptr)
+{
+#if 0
+
+#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#else
+ void *val = *ptr;
+ return rbimpl_atomic_ptr_cas(ptr, val, val);
+#endif
+}
+
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_NOALIAS()
RBIMPL_ATTR_NONNULL((1))
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/backward/2/attributes.h b/ThirdParty/include/ruby/win32_x64/ruby/backward/2/attributes.h
index 73acfc9dc..916d9e9d5 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/backward/2/attributes.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/backward/2/attributes.h
@@ -39,6 +39,7 @@
#include "ruby/internal/attr/noinline.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/noreturn.h"
+#include "ruby/internal/attr/packed_struct.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/restrict.h"
#include "ruby/internal/attr/returns_nonnull.h"
@@ -80,10 +81,8 @@
#undef NOINLINE
#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x
-#ifndef MJIT_HEADER
-# undef ALWAYS_INLINE
-# define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x
-#endif
+#undef ALWAYS_INLINE
+#define ALWAYS_INLINE(x) RBIMPL_ATTR_FORCEINLINE() x
#undef ERRORFUNC
#define ERRORFUNC(mesg, x) RBIMPL_ATTR_ERROR(mesg) x
@@ -147,17 +146,14 @@
#define NORETURN(x) RBIMPL_ATTR_NORETURN() x
#define NORETURN_STYLE_NEW
-#ifndef PACKED_STRUCT
-# define PACKED_STRUCT(x) x
-#endif
+#undef PACKED_STRUCT
+#define PACKED_STRUCT(x) \
+ RBIMPL_ATTR_PACKED_STRUCT_BEGIN() x RBIMPL_ATTR_PACKED_STRUCT_END()
-#ifndef PACKED_STRUCT_UNALIGNED
-# if UNALIGNED_WORD_ACCESS
-# define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
-# else
-# define PACKED_STRUCT_UNALIGNED(x) x
-# endif
-#endif
+#undef PACKED_STRUCT_UNALIGNED
+#define PACKED_STRUCT_UNALIGNED(x) \
+ RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() x \
+ RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END()
#undef RB_UNUSED_VAR
#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED()
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/config.h b/ThirdParty/include/ruby/win32_x64/ruby/config.h
index 014cd0176..26979946c 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/config.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/config.h
@@ -1,9 +1,10 @@
#ifndef INCLUDE_RUBY_CONFIG_H
#define INCLUDE_RUBY_CONFIG_H 1
-#if (_MSC_VER < 1920) || (_MSC_VER > 1939)
-#error MSC version unmatch: 1920..1939 is expected.
+#if (_MSC_VER < 1940)
+#error MSC version unmatch: 1940 or greater expected.
#endif
#define RUBY_MSVCRT_VERSION 140
+//#define _WIN32_WINNT _WIN32_WINNT_WIN8
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
@@ -57,9 +58,10 @@
#define FUNC_CDECL(x) __cdecl x
#define FUNC_FASTCALL(x) __fastcall x
#define RUBY_FUNCTION_NAME_STRING __FUNCTION__
-#define PACKED_STRUCT(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
-#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
+#define RBIMPL_ATTR_PACKED_STRUCT_BEGIN() __pragma(pack(push, 1))
+#define RBIMPL_ATTR_PACKED_STRUCT_END() __pragma(pack(pop))
#define RUBY_EXTERN extern __declspec(dllimport)
+#define RUBY_FUNC_EXPORTED extern __declspec(dllexport)
#define RUBY_ALIGNAS(n) __declspec(align(n))
#define RUBY_ALIGNOF __alignof
#define HAVE_DECL_SYS_NERR 1
@@ -74,6 +76,7 @@
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_STRUCT_TIMESPEC
+#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_INT8_T 1
#define HAVE_UINT8_T 1
@@ -127,6 +130,7 @@
#define HAVE_STRCHR 1
#define HAVE_STRSTR 1
#define HAVE_FLOCK 1
+#define HAVE_ISINF 1
#define HAVE_ISNAN 1
#define HAVE_FINITE 1
#define HAVE_NAN 1
@@ -199,5 +203,5 @@
#define RUBY_COREDLL "vcruntime140"
#define RUBY_PLATFORM "x64-mswin64_140"
#define RUBY_SITEARCH "x64-vcruntime140"
-#define USE_MJIT 0
+#define USE_RJIT 0
#endif /* INCLUDE_RUBY_CONFIG_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/debug.h b/ThirdParty/include/ruby/win32_x64/ruby/debug.h
index f95acdb17..f7c8e6ca8 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/debug.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/debug.h
@@ -10,6 +10,7 @@
* modify this file, provided that the conditions mentioned in the
* file COPYING are met. Consult the file for details.
*/
+#include "ruby/internal/attr/deprecated.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/returns_nonnull.h"
#include "ruby/internal/dllexport.h"
@@ -50,6 +51,25 @@ RBIMPL_ATTR_NONNULL((3))
*/
int rb_profile_frames(int start, int limit, VALUE *buff, int *lines);
+/**
+ * Queries mysterious "frame"s of the given range.
+ *
+ * A per-thread version of rb_profile_frames().
+ * Arguments and return values are the same with rb_profile_frames() with the
+ * exception of the first argument _thread_, which accepts the Thread to be
+ * profiled/queried.
+ *
+ * @param[in] thread The Ruby Thread to be profiled.
+ * @param[in] start Start position (0 means the topmost).
+ * @param[in] limit Number objects of `buff`.
+ * @param[out] buff Return buffer.
+ * @param[out] lines Return buffer.
+ * @return Number of objects filled into `buff`.
+ * @post `buff` is filled with backtrace pointers.
+ * @post `lines` is filled with `__LINE__` of each backtraces.
+ */
+int rb_profile_thread_frames(VALUE thread, int start, int limit, VALUE *buff, int *lines);
+
/**
* Queries the path of the passed backtrace.
*
@@ -596,48 +616,157 @@ VALUE rb_tracearg_object(rb_trace_arg_t *trace_arg);
/*
* Postponed Job API
- * rb_postponed_job_register and rb_postponed_job_register_one are
- * async-signal-safe and used via SIGPROF by the "stackprof" RubyGem
+ *
+ * This API is designed to be called from contexts where it is not safe to run Ruby
+ * code (e.g. because they do not hold the GVL or because GC is in progress), and
+ * defer a callback to run in a context where it _is_ safe. The primary intended
+ * users of this API is for sampling profilers like the "stackprof" gem; these work
+ * by scheduling the periodic delivery of a SIGPROF signal, and inside the C-level
+ * signal handler, deferring a job to collect a Ruby backtrace when it is next safe
+ * to do so.
+ *
+ * Ruby maintains a small, fixed-size postponed job table. An extension using this
+ * API should first call `rb_postponed_job_preregister` to register a callback
+ * function in this table and obtain a handle of type `rb_postponed_job_handle_t`
+ * to it. Subsequently, the callback can be triggered by calling
+ * `rb_postponed_job_trigger` with that handle, or the `data` associated with the
+ * callback function can be changed by calling `rb_postponed_job_preregister` again.
+ *
+ * Because the postponed job table is quite small (it only has 32 entries on most
+ * common systems), extensions should generally only preregister one or two `func`
+ * values.
+ *
+ * Historically, this API provided two functions `rb_postponed_job_register` and
+ * `rb_postponed_job_register_one`, which claimed to be fully async-signal-safe and
+ * would call back the provided `func` and `data` at an appropriate time. However,
+ * these functions were subject to race conditions which could cause crashes when
+ * racing with Ruby's internal use of them. These two functions are still present,
+ * but are marked as deprecated and have slightly changed semantics:
+ *
+ * * rb_postponed_job_register now works like rb_postponed_job_register_one i.e.
+ * `func` will only be executed at most one time each time Ruby checks for
+ * interrupts, no matter how many times it is registered
+ * * They are also called with the last `data` to be registered, not the first
+ * (which is how rb_postponed_job_register_one previously worked)
*/
+
/**
* Type of postponed jobs.
*
- * @param[in,out] arg What was passed to rb_postponed_job_register().
+ * @param[in,out] arg What was passed to `rb_postponed_job_preregister`
*/
typedef void (*rb_postponed_job_func_t)(void *arg);
/**
- * Registers a postponed job.
+ * The type of a handle returned from `rb_postponed_job_preregister` and
+ * passed to `rb_postponed_job_trigger`
+ */
+typedef unsigned int rb_postponed_job_handle_t;
+#define POSTPONED_JOB_HANDLE_INVALID ((rb_postponed_job_handle_t)UINT_MAX)
+
+/**
+ * Pre-registers a func in Ruby's postponed job preregistration table,
+ * returning an opaque handle which can be used to trigger the job later. Generally,
+ * this function will be called during the initialization routine of an extension.
*
- * There are situations when running a ruby program is not possible. For
- * instance when a program is in a signal handler; for another instance when
- * the GC is busy. On such situations however, there might be needs to do
- * something. We cannot but defer such operations until we are 100% sure it is
- * safe to execute them. This mechanism is called postponed jobs. This
- * function registers a new one. The registered job would eventually gets
- * executed.
+ * The returned handle can be used later to call `rb_postponed_job_trigger`. This will
+ * cause Ruby to call back into the registered `func` with `data` at a later time, in
+ * a context where the GVL is held and it is safe to perform Ruby allocations.
*
- * @param[in] flags (Unused) reserved for future extensions.
+ * If the given `func` was already pre-registered, this function will overwrite the
+ * stored data with the newly passed data, and return the same handle instance as
+ * was previously returned.
+ *
+ * If this function is called concurrently with the same `func`, then the stored data
+ * could be the value from either call (but will definitely be one of them).
+ *
+ * If this function is called to update the data concurrently with a call to
+ * `rb_postponed_job_trigger` on the same handle, it's undefined whether `func` will
+ * be called with the old data or the new data.
+ *
+ * Although the current implementation of this function is in fact async-signal-safe and
+ * has defined semantics when called concurrently on the same `func`, a future Ruby
+ * version might require that this method be called under the GVL; thus, programs which
+ * aim to be forward-compatible should call this method whilst holding the GVL.
+ *
+ * @param[in] flags Unused and ignored
+ * @param[in] func The function to be pre-registered
+ * @param[in] data The data to be pre-registered
+ * @retval POSTPONED_JOB_HANDLE_INVALID The job table is full; this registration
+ * did not succeed and no further registration will do so for
+ * the lifetime of the program.
+ * @retval otherwise A handle which can be passed to `rb_postponed_job_trigger`
+ */
+rb_postponed_job_handle_t rb_postponed_job_preregister(unsigned int flags, rb_postponed_job_func_t func, void *data);
+
+/**
+ * Triggers a pre-registered job registered with rb_postponed_job_preregister,
+ * scheduling it for execution the next time the Ruby VM checks for interrupts.
+ * The context in which the job is called in holds the GVL and is safe to perform
+ * Ruby allocations within (i.e. it is not during GC).
+ *
+ * This method is async-signal-safe and can be called from any thread, at any
+ * time, including in signal handlers.
+ *
+ * If this method is called multiple times, Ruby will coalesce this into only
+ * one call to the job the next time it checks for interrupts.
+ *
+ * @params[in] h A handle returned from rb_postponed_job_preregister
+ */
+void rb_postponed_job_trigger(rb_postponed_job_handle_t h);
+
+/**
+ * Schedules the given `func` to be called with `data` when Ruby next checks for
+ * interrupts. If this function is called multiple times in between Ruby checking
+ * for interrupts, then `func` will be called only once with the `data` value from
+ * the first call to this function.
+ *
+ * Like `rb_postponed_job_trigger`, the context in which the job is called
+ * holds the GVL and can allocate Ruby objects.
+ *
+ * This method essentially has the same semantics as:
+ *
+ * ```
+ * rb_postponed_job_trigger(rb_postponed_job_preregister(func, data));
+ * ```
+ *
+ * @note Previous versions of Ruby promised that the (`func`, `data`) pairs would
+ * be executed as many times as they were registered with this function; in
+ * reality this was always subject to race conditions and this function no
+ * longer provides this guarantee. Instead, multiple calls to this function
+ * can be coalesced into a single execution of the passed `func`, with the
+ * most recent `data` registered at that time passed in.
+ *
+ * @deprecated This interface implies that arbitrarily many `func`'s can be enqueued
+ * over the lifetime of the program, whilst in reality the registration
+ * slots for postponed jobs are a finite resource. This is made clearer
+ * by the `rb_postponed_job_preregister` and `rb_postponed_job_trigger`
+ * functions, and a future version of Ruby might delete this function.
+ *
+ * @param[in] flags Unused and ignored.
* @param[in] func Job body.
* @param[in,out] data Passed as-is to `func`.
- * @retval 0 Postponed job buffer is full. Failed.
- * @retval otherwise Opaque return value.
- * @post The passed job is postponed.
+ * @retval 0 Postponed job registration table is full. Failed.
+ * @retval 1 Registration succeeded.
+ * @post The passed job will run on the next interrupt check.
*/
+ RBIMPL_ATTR_DEPRECATED(("use rb_postponed_job_preregister and rb_postponed_job_trigger"))
int rb_postponed_job_register(unsigned int flags, rb_postponed_job_func_t func, void *data);
/**
- * Identical to rb_postponed_job_register_one(), except it additionally checks
- * for duplicated registration. In case the passed job is already in the
- * postponed job buffer this function does nothing.
+ * Identical to `rb_postponed_job_register`
+ *
+ * @deprecated This is deprecated for the same reason as `rb_postponed_job_register`
*
- * @param[in] flags (Unused) reserved for future extensions.
+ * @param[in] flags Unused and ignored.
* @param[in] func Job body.
* @param[in,out] data Passed as-is to `func`.
- * @retval 0 Postponed job buffer is full. Failed.
- * @retval otherwise Opaque return value.
+ * @retval 0 Postponed job registration table is full. Failed.
+ * @retval 1 Registration succeeded.
+ * @post The passed job will run on the next interrupt check.
*/
+ RBIMPL_ATTR_DEPRECATED(("use rb_postponed_job_preregister and rb_postponed_job_trigger"))
int rb_postponed_job_register_one(unsigned int flags, rb_postponed_job_func_t func, void *data);
/** @} */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/digest.h b/ThirdParty/include/ruby/win32_x64/ruby/digest.h
index 8a4c5b7e4..c5c37583a 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/digest.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/digest.h
@@ -40,7 +40,8 @@ rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \
for (; size > stride; size -= stride, ptr += stride) { \
name##_Update(ctx, ptr, stride); \
} \
- if (size > 0) name##_Update(ctx, ptr, size); \
+ /* Since size <= stride, size should fit into an unsigned int */ \
+ if (size > 0) name##_Update(ctx, ptr, (unsigned int)size); \
}
#define DEFINE_FINISH_FUNC_FROM_FINAL(name) \
@@ -63,10 +64,43 @@ rb_id_metadata(void)
return rb_intern_const("metadata");
}
+#if !defined(HAVE_RB_EXT_RESOLVE_SYMBOL)
+#elif !defined(RUBY_UNTYPED_DATA_WARNING)
+# error RUBY_UNTYPED_DATA_WARNING is not defined
+#elif RUBY_UNTYPED_DATA_WARNING
+/* rb_ext_resolve_symbol() has been defined since Ruby 3.3, but digest
+ * bundled with 3.3 didn't use it. */
+# define DIGEST_USE_RB_EXT_RESOLVE_SYMBOL 1
+#endif
+
static inline VALUE
rb_digest_make_metadata(const rb_digest_metadata_t *meta)
{
-#undef RUBY_UNTYPED_DATA_WARNING
-#define RUBY_UNTYPED_DATA_WARNING 0
+#if defined(EXTSTATIC) && EXTSTATIC
+ /* The extension is built as a static library, so safe to refer to
+ * rb_digest_wrap_metadata directly. */
+ extern VALUE rb_digest_wrap_metadata(const rb_digest_metadata_t *meta);
+ return rb_digest_wrap_metadata(meta);
+#else
+ /* The extension is built as a shared library, so we can't refer
+ * to rb_digest_wrap_metadata directly. */
+# ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL
+ /* If rb_ext_resolve_symbol() is available, use it to get the address of
+ * rb_digest_wrap_metadata. */
+ typedef VALUE (*wrapper_func_type)(const rb_digest_metadata_t *meta);
+ static wrapper_func_type wrapper;
+ if (!wrapper) {
+ wrapper = (wrapper_func_type)(uintptr_t)
+ rb_ext_resolve_symbol("digest.so", "rb_digest_wrap_metadata");
+ if (!wrapper) rb_raise(rb_eLoadError, "rb_digest_wrap_metadata not found");
+ }
+ return wrapper(meta);
+# else
+ /* If rb_ext_resolve_symbol() is not available, keep using untyped
+ * data. */
+# undef RUBY_UNTYPED_DATA_WARNING
+# define RUBY_UNTYPED_DATA_WARNING 0
return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta));
+# endif
+#endif
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/fiber/scheduler.h b/ThirdParty/include/ruby/win32_x64/ruby/fiber/scheduler.h
index 250b39b6d..b678bd0d1 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/fiber/scheduler.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/fiber/scheduler.h
@@ -97,7 +97,7 @@ VALUE rb_fiber_scheduler_get(void);
* current thread will call scheduler's `#close` method on finalisation
* (allowing the scheduler to properly manage all non-finished fibers).
* `scheduler` can be an object of any class corresponding to
- * `Fiber::SchedulerInterface`. Its implementation is up to the user.
+ * `Fiber::Scheduler` interface. Its implementation is up to the user.
*
* @param[in] scheduler The scheduler to set.
* @exception rb_eArgError `scheduler` does not conform the interface.
@@ -267,10 +267,10 @@ VALUE rb_fiber_scheduler_io_selectv(VALUE scheduler, int argc, VALUE *argv);
* Non-blocking read from the passed IO.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[out] buffer Return buffer.
- * @param[in] length Requested number of bytes to read.
- * @param[in] offset The offset in the buffer to read to.
+ * @param[in] io An io object to read from.
+ * @param[in] buffer The buffer to read to.
+ * @param[in] length The minimum number of bytes to read.
+ * @param[in] offset The offset in the buffer to read from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns `[-errno, size]`.
*/
@@ -280,9 +280,9 @@ VALUE rb_fiber_scheduler_io_read(VALUE scheduler, VALUE io, VALUE buffer, size_t
* Non-blocking write to the passed IO.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] buffer What to write.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] buffer The buffer to write from.
+ * @param[in] length The minimum number of bytes to write.
* @param[in] offset The offset in the buffer to write from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns `[-errno, size]`.
@@ -293,10 +293,10 @@ VALUE rb_fiber_scheduler_io_write(VALUE scheduler, VALUE io, VALUE buffer, size_
* Non-blocking read from the passed IO at the specified offset.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[in] from The offset in the given IO to read the data from.
- * @param[out] buffer The buffer to read the data to.
- * @param[in] length Requested number of bytes to read.
+ * @param[in] io An io object to read from.
+ * @param[in] from The offset to read from.
+ * @param[in] buffer The buffer to read to.
+ * @param[in] length The minimum number of bytes to read.
* @param[in] offset The offset in the buffer to read to.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns.
@@ -307,10 +307,10 @@ VALUE rb_fiber_scheduler_io_pread(VALUE scheduler, VALUE io, rb_off_t from, VALU
* Non-blocking write to the passed IO at the specified offset.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] from The offset in the given IO to write the data to.
- * @param[in] buffer The buffer to write the data from.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] from The offset to write to.
+ * @param[in] buffer The buffer to write from.
+ * @param[in] length The minimum number of bytes to write.
* @param[in] offset The offset in the buffer to write from.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns.
@@ -321,27 +321,55 @@ VALUE rb_fiber_scheduler_io_pwrite(VALUE scheduler, VALUE io, rb_off_t from, VAL
* Non-blocking read from the passed IO using a native buffer.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to read from.
- * @param[out] buffer Return buffer.
- * @param[in] size Size of the return buffer.
- * @param[in] length Requested number of bytes to read.
+ * @param[in] io An io object to read from.
+ * @param[in] base The memory to read to.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to read.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
* @return otherwise What `scheduler.io_read` returns.
*/
-VALUE rb_fiber_scheduler_io_read_memory(VALUE scheduler, VALUE io, void *buffer, size_t size, size_t length);
+VALUE rb_fiber_scheduler_io_read_memory(VALUE scheduler, VALUE io, void *base, size_t size, size_t length);
/**
* Non-blocking write to the passed IO using a native buffer.
*
* @param[in] scheduler Target scheduler.
- * @param[out] io An io object to write to.
- * @param[in] buffer What to write.
- * @param[in] size Size of the buffer.
- * @param[in] length Number of bytes to write.
+ * @param[in] io An io object to write to.
+ * @param[in] base The memory to write from.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to write.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
+ * @return otherwise What `scheduler.io_write` returns.
+ */
+VALUE rb_fiber_scheduler_io_write_memory(VALUE scheduler, VALUE io, const void *base, size_t size, size_t length);
+
+/**
+ * Non-blocking pread from the passed IO using a native buffer.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] io An io object to read from.
+ * @param[in] from The offset to read from.
+ * @param[in] base The memory to read to.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to read.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#io_read`.
+ * @return otherwise What `scheduler.io_read` returns.
+ */
+VALUE rb_fiber_scheduler_io_pread_memory(VALUE scheduler, VALUE io, rb_off_t from, void *base, size_t size, size_t length);
+
+/**
+ * Non-blocking pwrite to the passed IO using a native buffer.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] io An io object to write to.
+ * @param[in] from The offset to write from.
+ * @param[in] base The memory to write from.
+ * @param[in] size Size of the memory.
+ * @param[in] length The minimum number of bytes to write.
* @retval RUBY_Qundef `scheduler` doesn't have `#io_write`.
* @return otherwise What `scheduler.io_write` returns.
*/
-VALUE rb_fiber_scheduler_io_write_memory(VALUE scheduler, VALUE io, const void *buffer, size_t size, size_t length);
+VALUE rb_fiber_scheduler_io_pwrite_memory(VALUE scheduler, VALUE io, rb_off_t from, const void *base, size_t size, size_t length);
/**
* Non-blocking close the given IO.
@@ -363,6 +391,26 @@ VALUE rb_fiber_scheduler_io_close(VALUE scheduler, VALUE io);
*/
VALUE rb_fiber_scheduler_address_resolve(VALUE scheduler, VALUE hostname);
+struct rb_fiber_scheduler_blocking_operation_state {
+ void *result;
+ int saved_errno;
+};
+
+/**
+ * Defer the execution of the passed function to the scheduler.
+ *
+ * @param[in] scheduler Target scheduler.
+ * @param[in] function The function to run.
+ * @param[in] data The data to pass to the function.
+ * @param[in] unblock_function The unblock function to use to interrupt the operation.
+ * @param[in] data2 The data to pass to the unblock function.
+ * @param[in] flags Flags passed to `rb_nogvl`.
+ * @param[out] state The result and errno of the operation.
+ * @retval RUBY_Qundef `scheduler` doesn't have `#blocking_operation_wait`.
+ * @return otherwise What `scheduler.blocking_operation_wait` returns.
+ */
+VALUE rb_fiber_scheduler_blocking_operation_wait(VALUE scheduler, void* (*function)(void *), void *data, rb_unblock_function_t *unblock_function, void *data2, int flags, struct rb_fiber_scheduler_blocking_operation_state *state);
+
/**
* Create and schedule a non-blocking fiber.
*
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/intern.h b/ThirdParty/include/ruby/win32_x64/ruby/intern.h
index 2480e2e70..48e4cd546 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/intern.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/intern.h
@@ -36,7 +36,6 @@
#include "ruby/internal/intern/error.h"
#include "ruby/internal/intern/eval.h"
#include "ruby/internal/intern/file.h"
-#include "ruby/internal/intern/gc.h"
#include "ruby/internal/intern/hash.h"
#include "ruby/internal/intern/io.h"
#include "ruby/internal/intern/load.h"
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/abi.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/abi.h
index 44111a005..e6d1fa7e8 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/abi.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/abi.h
@@ -24,7 +24,7 @@
* In released versions of Ruby, this number is not defined since teeny
* versions of Ruby should guarantee ABI compatibility.
*/
-#define RUBY_ABI_VERSION 3
+#define RUBY_ABI_VERSION 1
/* Windows does not support weak symbols so ruby_abi_version will not exist
* in the shared library. */
@@ -33,7 +33,7 @@
#endif
#endif /* RUBY_ABI_VERSION */
-#ifdef RUBY_DLN_CHECK_ABI
+#if defined(RUBY_DLN_CHECK_ABI) && !defined(RUBY_EXPORT)
# ifdef __cplusplus
extern "C" {
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/anyargs.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/anyargs.h
index e3e1b6166..e4c6d155c 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/anyargs.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/anyargs.h
@@ -84,12 +84,15 @@
#elif defined(_WIN32) || defined(__CYGWIN__)
# /* Skip due to [Bug #16134] */
+# define RBIMPL_CAST_FN_PTR 1
#elif ! RBIMPL_HAS_ATTRIBUTE(transparent_union)
# /* :TODO: improve here, please find a way to support. */
+# define RBIMPL_CAST_FN_PTR 1
#elif ! defined(HAVE_VA_ARGS_MACRO)
# /* :TODO: improve here, please find a way to support. */
+# define RBIMPL_CAST_FN_PTR 1
#else
# /** @cond INTERNAL_MACRO */
@@ -348,6 +351,25 @@ RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
#endif /* __cplusplus */
+#if defined(RBIMPL_CAST_FN_PTR) && !defined(__cplusplus)
+/* In C23, K&R style prototypes are gone and so `void foo(ANYARGS)` became
+ * equivalent to `void foo(void)` unlike in earlier versions. This is a problem
+ * for rb_define_* functions since that makes all valid functions one can pass
+ * trip -Wincompatible-pointer-types, which we treat as errors. This is mostly
+ * not a problem for the __builtin_choose_expr path, but outside of that we
+ * need to add a cast for compatibility.
+ */
+#define rb_define_method(klass, mid, func, arity) rb_define_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_method_id(klass, mid, func, arity) rb_define_method_id((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_singleton_method(obj, mid, func, arity) rb_define_singleton_method((obj), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_protected_method(klass, mid, func, arity) rb_define_protected_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_private_method(klass, mid, func, arity) rb_define_private_method((klass), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_module_function(mod, mid, func, arity) rb_define_module_function((mod), (mid), (VALUE (*)(ANYARGS))(func), (arity))
+#define rb_define_global_function(mid, func, arity) rb_define_global_function((mid), (VALUE (*)(ANYARGS))(func), (arity))
+
+#undef RBIMPL_CAST_FN_PTR
+#endif /* defined(RBIMPL_CAST_FN_PTR) && !defined(__cplusplus) */
+
/**
* This macro is to properly cast a function parameter of *_define_method
* family. It has been around since 1.x era so you can maximise backwards
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/int.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/int.h
index 6bd8ec218..7b24d1688 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/int.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/int.h
@@ -254,7 +254,7 @@ static inline VALUE
rb_uint2num_inline(unsigned int v)
{
if (RB_POSFIXABLE(v))
- return RB_LONG2FIX(v);
+ return RB_LONG2FIX(RBIMPL_CAST((long)v));
else
return rb_uint2big(v);
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long.h
index 6b8fd8ffc..6c00dbceb 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long.h
@@ -114,11 +114,11 @@ RB_INT2FIX(long i)
/* :NOTE: VALUE can be wider than long. As j being unsigned, 2j+1 is fully
* defined. Also it can be compiled into a single LEA instruction. */
- const unsigned long j = i;
+ const unsigned long j = RBIMPL_CAST((unsigned long)i);
const unsigned long k = (j << 1) + RUBY_FIXNUM_FLAG;
- const long l = k;
+ const long l = RBIMPL_CAST((long)k);
const SIGNED_VALUE m = l; /* Sign extend */
- const VALUE n = m;
+ const VALUE n = RBIMPL_CAST((VALUE)m);
RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(n));
return n;
@@ -166,7 +166,7 @@ rbimpl_fix2long_by_idiv(VALUE x)
/* :NOTE: VALUE can be wider than long. (x-1)/2 never overflows because
* RB_FIXNUM_P(x) holds. Also it has no portability issue like y>>1
* below. */
- const SIGNED_VALUE y = x - RUBY_FIXNUM_FLAG;
+ const SIGNED_VALUE y = RBIMPL_CAST((SIGNED_VALUE)(x - RUBY_FIXNUM_FLAG));
const SIGNED_VALUE z = y / 2;
const long w = RBIMPL_CAST((long)z);
@@ -193,7 +193,7 @@ rbimpl_fix2long_by_shift(VALUE x)
/* :NOTE: VALUE can be wider than long. If right shift is arithmetic, this
* is noticeably faster than above. */
- const SIGNED_VALUE y = x;
+ const SIGNED_VALUE y = RBIMPL_CAST((SIGNED_VALUE)x);
const SIGNED_VALUE z = y >> 1;
const long w = RBIMPL_CAST((long)z);
@@ -252,7 +252,7 @@ static inline unsigned long
rb_fix2ulong(VALUE x)
{
RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x));
- return rb_fix2long(x);
+ return RBIMPL_CAST((unsigned long)rb_fix2long(x));
}
/**
@@ -323,7 +323,7 @@ static inline VALUE
rb_ulong2num_inline(unsigned long v)
{
if (RB_POSFIXABLE(v))
- return RB_LONG2FIX(v);
+ return RB_LONG2FIX(RBIMPL_CAST((long)v));
else
return rb_uint2big(v);
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long_long.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long_long.h
index 65dec8729..aab455c83 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long_long.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/long_long.h
@@ -127,7 +127,7 @@ static inline unsigned LONG_LONG
rb_num2ull_inline(VALUE x)
{
if (RB_FIXNUM_P(x))
- return RB_FIX2LONG(x);
+ return RBIMPL_CAST((unsigned LONG_LONG)RB_FIX2LONG(x));
else
return rb_num2ull(x);
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/st_data_t.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/st_data_t.h
index 3bff4ffc0..91776b3fc 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/st_data_t.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/arithmetic/st_data_t.h
@@ -58,7 +58,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_ST2FIX(st_data_t i)
{
- SIGNED_VALUE x = i;
+ SIGNED_VALUE x = RBIMPL_CAST((SIGNED_VALUE)i);
if (x >= 0) {
x &= RUBY_FIXNUM_MAX;
@@ -69,7 +69,7 @@ RB_ST2FIX(st_data_t i)
RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(x));
unsigned long y = RBIMPL_CAST((unsigned long)x);
- return RB_LONG2FIX(y);
+ return RB_LONG2FIX(RBIMPL_CAST((long)y));
}
#endif /* RBIMPL_ARITHMETIC_ST_DATA_T_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/noexcept.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/noexcept.h
index ea3001df2..7c3f92f1e 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/noexcept.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/noexcept.h
@@ -54,7 +54,7 @@
* get smarter and smarter. Today they can infer if it actually throws
* or not without any annotations by humans (correct me if I'm wrong).
*
- * - When an inline function attributed `noexcepr` actually _does_ throw an
+ * - When an inline function attributed `noexcept` actually _does_ throw an
* exception: they have to call `std::terminate` then (C++ standard
* mandates so). This means exception handling routines are actually
* enforced, not omitted. This doesn't impact runtime performance (The
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/nonstring.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/nonstring.h
new file mode 100644
index 000000000..5ad6ef2a8
--- /dev/null
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/nonstring.h
@@ -0,0 +1,40 @@
+#ifndef RBIMPL_ATTR_NONSTRING_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_ATTR_NONSTRING_H
+/**
+ * @file
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief Defines #RBIMPL_ATTR_NONSTRING.
+ */
+#include "ruby/internal/has/attribute.h"
+
+/** Wraps (or simulates) `__attribute__((nonstring))` */
+#if RBIMPL_HAS_ATTRIBUTE(nonstring)
+# define RBIMPL_ATTR_NONSTRING() __attribute__((nonstring))
+# if RBIMPL_COMPILER_SINCE(GCC, 15, 0, 0)
+# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
+# elif RBIMPL_COMPILER_SINCE(Clang, 21, 0, 0)
+# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
+# else
+# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
+# endif
+#else
+# define RBIMPL_ATTR_NONSTRING() /* void */
+# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
+#endif
+
+#endif /* RBIMPL_ATTR_NONSTRING_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/packed_struct.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/packed_struct.h
new file mode 100644
index 000000000..0678b9acc
--- /dev/null
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/attr/packed_struct.h
@@ -0,0 +1,43 @@
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_ATTR_PACKED_STRUCT_H
+/**
+ * @file
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief Defines #RBIMPL_ATTR_PACKED_STRUCT_BEGIN,
+ * #RBIMPL_ATTR_PACKED_STRUCT_END,
+ * #RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN, and
+ * #RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END.
+ */
+#include "ruby/internal/config.h"
+
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_BEGIN
+# define RBIMPL_ATTR_PACKED_STRUCT_BEGIN() /* void */
+#endif
+#ifndef RBIMPL_ATTR_PACKED_STRUCT_END
+# define RBIMPL_ATTR_PACKED_STRUCT_END() /* void */
+#endif
+
+#if UNALIGNED_WORD_ACCESS
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() RBIMPL_ATTR_PACKED_STRUCT_BEGIN()
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END() RBIMPL_ATTR_PACKED_STRUCT_END()
+#else
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN() /* void */
+# define RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END() /* void */
+#endif
+
+#endif
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/config.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/config.h
index aa63376d7..da070f097 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/config.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/config.h
@@ -148,8 +148,4 @@
# undef RBIMPL_TEST3
#endif /* HAVE_VA_ARGS_MACRO */
-#ifndef USE_RVARGC
-# define USE_RVARGC 1
-#endif
-
#endif /* RBIMPL_CONFIG_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rarray.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rarray.h
index c3bb40be2..73cc0f5dd 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rarray.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rarray.h
@@ -29,24 +29,12 @@
#include "ruby/internal/core/rbasic.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/fl_type.h"
-#include "ruby/internal/rgengc.h"
+#include "ruby/internal/gc.h"
#include "ruby/internal/stdbool.h"
#include "ruby/internal/value.h"
#include "ruby/internal/value_type.h"
#include "ruby/assert.h"
-/**
- * @private
- * @warning Do not touch this macro.
- * @warning It is an implementation detail.
- * @warning The value of this macro must match for ruby itself and all
- * extension libraries, otherwise serious memory corruption shall
- * occur.
- */
-#ifndef USE_TRANSIENT_HEAP
-# define USE_TRANSIENT_HEAP 1
-#endif
-
/**
* Convenient casting macro.
*
@@ -59,15 +47,9 @@
#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK
#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
-#if USE_TRANSIENT_HEAP
-# define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
-#else
-# define RARRAY_TRANSIENT_FLAG 0
-#endif
/** @endcond */
#define RARRAY_LEN rb_array_len /**< @alias{rb_array_len} */
#define RARRAY_CONST_PTR rb_array_const_ptr /**< @alias{rb_array_const_ptr} */
-#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient /**< @alias{rb_array_const_ptr_transient} */
/** @cond INTERNAL_MACRO */
#if defined(__fcc__) || defined(__fcc_version) || \
@@ -80,7 +62,6 @@
#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN
#define RARRAY_LENINT RARRAY_LENINT
-#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P
#define RARRAY_ASET RARRAY_ASET
#define RARRAY_PTR RARRAY_PTR
/** @endcond */
@@ -99,6 +80,8 @@
* here is at least incomplete.
*/
enum ruby_rarray_flags {
+ /* RUBY_FL_USER0 is for ELTS_SHARED */
+
/**
* This flag has something to do with memory footprint. If the array is
* "small" enough, ruby tries to be creative to abuse padding bits of
@@ -118,8 +101,6 @@ enum ruby_rarray_flags {
*/
RARRAY_EMBED_FLAG = RUBY_FL_USER1,
- /* RUBY_FL_USER2 is for ELTS_SHARED */
-
/**
* When an array employs embedded strategy (see ::RARRAY_EMBED_FLAG), these
* bits are used to store the number of elements actually filled into
@@ -130,30 +111,8 @@ enum ruby_rarray_flags {
* 3rd parties must not be aware that there even is more than one way to
* store array elements. It was a bad idea to expose this to them.
*/
-#if USE_RVARGC
RARRAY_EMBED_LEN_MASK = RUBY_FL_USER9 | RUBY_FL_USER8 | RUBY_FL_USER7 | RUBY_FL_USER6 |
RUBY_FL_USER5 | RUBY_FL_USER4 | RUBY_FL_USER3
-#else
- RARRAY_EMBED_LEN_MASK = RUBY_FL_USER4 | RUBY_FL_USER3
-#endif
-
-#if USE_TRANSIENT_HEAP
- ,
-
- /**
- * This flag has something to do with an array's "transiency". A transient
- * array is an array of young generation (of generational GC), who stores
- * its elements inside of dedicated memory pages called a transient heap.
- * Not every young generation share that storage scheme, but elder
- * generations must no join.
- *
- * @internal
- *
- * 3rd parties must not be aware that there even is more than one way to
- * store array elements. It was a bad idea to expose this to them.
- */
- RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13
-#endif
};
/**
@@ -163,13 +122,6 @@ enum ruby_rarray_flags {
enum ruby_rarray_consts {
/** Where ::RARRAY_EMBED_LEN_MASK resides. */
RARRAY_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 3
-
-#if !USE_RVARGC
- ,
-
- /** Max possible number elements that can be embedded. */
- RARRAY_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE)
-#endif
};
/** Ruby's array. */
@@ -228,16 +180,12 @@ struct RArray {
* to store its elements. In this case the length is encoded into the
* flags.
*/
-#if USE_RVARGC
/* This is a length 1 array because:
* 1. GCC has a bug that does not optimize C flexible array members
* (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452)
* 2. Zero length arrays are not supported by all compilers
*/
const VALUE ary[1];
-#else
- const VALUE ary[RARRAY_EMBED_LEN_MAX];
-#endif
} as;
};
@@ -264,16 +212,6 @@ VALUE *rb_ary_ptr_use_start(VALUE ary);
*/
void rb_ary_ptr_use_end(VALUE a);
-#if USE_TRANSIENT_HEAP
-/**
- * Destructively converts an array of transient backend into ordinal one.
- *
- * @param[out] a An object of ::RArray.
- * @pre `a` must be a transient array.
- * @post `a` gets out of transient heap, destructively.
- */
-void rb_ary_detransient(VALUE a);
-#endif
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
@@ -345,33 +283,6 @@ RARRAY_LENINT(VALUE ary)
return rb_long2int(RARRAY_LEN(ary));
}
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Queries if the array is a transient array.
- *
- * @param[in] ary Array in question.
- * @retval true Yes it is.
- * @retval false No it isn't.
- * @pre `ary` must be an instance of ::RArray.
- *
- * @internal
- *
- * @shyouhei doesn't understand the benefit of this function called from
- * extension libraries.
- */
-static inline bool
-RARRAY_TRANSIENT_P(VALUE ary)
-{
- RBIMPL_ASSERT_TYPE(ary, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- return RB_FL_ANY_RAW(ary, RARRAY_TRANSIENT_FLAG);
-#else
- return false;
-#endif
-}
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
/**
* @private
@@ -383,7 +294,7 @@ RBIMPL_ATTR_PURE_UNLESS_DEBUG()
* @return Its backend storage.
*/
static inline const VALUE *
-rb_array_const_ptr_transient(VALUE a)
+rb_array_const_ptr(VALUE a)
{
RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
@@ -395,101 +306,20 @@ rb_array_const_ptr_transient(VALUE a)
}
}
-#if ! USE_TRANSIENT_HEAP
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-#endif
-/**
- * @private
- *
- * This is an implementation detail of RARRAY_PTR(). People do not use it
- * directly.
- *
- * @param[in] a An object of ::RArray.
- * @return Its backend storage.
- * @post `a` is not a transient array.
- */
-static inline const VALUE *
-rb_array_const_ptr(VALUE a)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
-#endif
- return rb_array_const_ptr_transient(a);
-}
-
/**
* @private
*
* This is an implementation detail of #RARRAY_PTR_USE. People do not use it
* directly.
- *
- * @param[in] a An object of ::RArray.
- * @param[in] allow_transient Whether `a` can be transient or not.
- * @return Its backend storage.
- * @post `a` is not a transient array unless `allow_transient`.
*/
-static inline VALUE *
-rb_array_ptr_use_start(VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int allow_transient)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
-
-#if USE_TRANSIENT_HEAP
- if (!allow_transient) {
- if (RARRAY_TRANSIENT_P(a)) {
- rb_ary_detransient(a);
- }
- }
-#endif
-
- return rb_ary_ptr_use_start(a);
-}
-
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- *
- * @param[in] a An object of ::RArray.
- * @param[in] allow_transient Whether `a` can be transient or not.
- */
-static inline void
-rb_array_ptr_use_end(VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int allow_transient)
-{
- RBIMPL_ASSERT_TYPE(a, RUBY_T_ARRAY);
- rb_ary_ptr_use_end(a);
-}
-
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- */
-#define RBIMPL_RARRAY_STMT(flag, ary, var, expr) do { \
+#define RBIMPL_RARRAY_STMT(ary, var, expr) do { \
RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); \
const VALUE rbimpl_ary = (ary); \
- VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); \
+ VALUE *var = rb_ary_ptr_use_start(rbimpl_ary); \
expr; \
- rb_array_ptr_use_end(rbimpl_ary, (flag)); \
+ rb_ary_ptr_use_end(rbimpl_ary); \
} while (0)
-/**
- * @private
- *
- * This is an implementation detail of #RARRAY_PTR_USE. People do not use it
- * directly.
- */
-#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
-
/**
* Declares a section of code where raw pointers are used. In case you need to
* touch the raw C array instead of polite CAPIs, then that operation shall be
@@ -516,21 +346,11 @@ rb_array_ptr_use_end(VALUE a,
* them use it... Maybe some transition path can be implemented later.
*/
#define RARRAY_PTR_USE(ary, ptr_name, expr) \
- RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr)
-
-/**
- * Identical to #RARRAY_PTR_USE, except the pointer can be a transient one.
- *
- * @param ary An object of ::RArray.
- * @param ptr_name A variable name which points the C array in `expr`.
- * @param expr The expression that touches `ptr_name`.
- */
-#define RARRAY_PTR_USE_TRANSIENT(ary, ptr_name, expr) \
- RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr)
+ RBIMPL_RARRAY_STMT(ary, ptr_name, expr)
/**
* Wild use of a C pointer. This function accesses the backend storage
- * directly. This is slower than #RARRAY_PTR_USE_TRANSIENT. It exercises
+ * directly. This is slower than #RARRAY_PTR_USE. It exercises
* extra manoeuvres to protect our generational GC. Use of this function is
* considered archaic. Use a modern way instead.
*
@@ -565,7 +385,7 @@ RARRAY_PTR(VALUE ary)
static inline void
RARRAY_ASET(VALUE ary, long i, VALUE v)
{
- RARRAY_PTR_USE_TRANSIENT(ary, ptr,
+ RARRAY_PTR_USE(ary, ptr,
RB_OBJ_WRITE(ary, &ptr[i], v));
}
@@ -580,6 +400,6 @@ RARRAY_ASET(VALUE ary, long i, VALUE v)
* remains as it is due to that. If we could warn such usages we can set a
* transition path, but currently no way is found to do so.
*/
-#define RARRAY_AREF(a, i) RARRAY_CONST_PTR_TRANSIENT(a)[i]
+#define RARRAY_AREF(a, i) RARRAY_CONST_PTR(a)[i]
#endif /* RBIMPL_RARRAY_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rbasic.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rbasic.h
index 4617f743a..b3c9af042 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rbasic.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rbasic.h
@@ -56,22 +56,20 @@ enum ruby_rvalue_flags {
};
/**
- * Ruby's object's, base components. Every single ruby objects have them in
- * common.
+ * Ruby object's base components. All Ruby objects have them in common.
*/
struct
RUBY_ALIGNAS(SIZEOF_VALUE)
RBasic {
/**
- * Per-object flags. Each ruby objects have their own characteristics
- * apart from their classes. For instance whether an object is frozen or
- * not is not controlled by its class. This is where such properties are
- * stored.
+ * Per-object flags. Each Ruby object has its own characteristics apart
+ * from its class. For instance, whether an object is frozen or not is not
+ * controlled by its class. This is where such properties are stored.
*
* @see enum ::ruby_fl_type
*
- * @note This is ::VALUE rather than an enum for alignment purpose. Back
+ * @note This is ::VALUE rather than an enum for alignment purposes. Back
* in the 1990s there were no such thing like `_Alignas` in C.
*/
VALUE flags;
@@ -79,10 +77,10 @@ RBasic {
/**
* Class of an object. Every object has its class. Also, everything is an
* object in Ruby. This means classes are also objects. Classes have
- * their own classes, classes of classes have their classes, too ... and
- * it recursively continues forever.
+ * their own classes, classes of classes have their classes too, and it
+ * recursively continues forever.
*
- * Also note the `const` qualifier. In ruby an object cannot "change" its
+ * Also note the `const` qualifier. In Ruby, an object cannot "change" its
* class.
*/
const VALUE klass;
@@ -104,6 +102,9 @@ RBasic {
klass(RBIMPL_VALUE_NULL)
{
}
+# define RBASIC_INIT RBasic()
+#else
+# define RBASIC_INIT {RBIMPL_VALUE_NULL}
#endif
};
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rdata.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rdata.h
index 43ab3c01e..e4c146a71 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rdata.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rdata.h
@@ -37,12 +37,8 @@
#include "ruby/defines.h"
/** @cond INTERNAL_MACRO */
-#ifdef RUBY_UNTYPED_DATA_WARNING
-# /* Take that. */
-#elif defined(RUBY_EXPORT)
-# define RUBY_UNTYPED_DATA_WARNING 1
-#else
-# define RUBY_UNTYPED_DATA_WARNING 0
+#ifndef RUBY_UNTYPED_DATA_WARNING
+#define RUBY_UNTYPED_DATA_WARNING 1
#endif
#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f))
@@ -331,15 +327,6 @@ rb_data_object_get_warning(VALUE obj)
return rb_data_object_get(obj);
}
-#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P)
-# define rb_data_object_wrap_warning(klass, ptr, mark, free) \
- RB_GNUC_EXTENSION( \
- __builtin_choose_expr( \
- __builtin_constant_p(klass) && !(klass), \
- rb_data_object_wrap(klass, ptr, mark, free), \
- (rb_data_object_wrap_warning)(klass, ptr, mark, free)))
-#endif
-
/**
* This is an implementation detail of #Data_Make_Struct. People don't use it
* directly.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rfile.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rfile.h
index f8dddde9e..a0eb8cb83 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rfile.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rfile.h
@@ -25,7 +25,7 @@
/* rb_io_t is in ruby/io.h. The header file has historically not been included
* into ruby/ruby.h. We follow that tradition. */
-struct rb_io_t;
+struct rb_io;
/**
* Ruby's File and IO. Ruby's IO are not just file descriptors. They have
@@ -38,7 +38,7 @@ struct RFile {
struct RBasic basic;
/** IO's specific fields. */
- struct rb_io_t *fptr;
+ struct rb_io *fptr;
};
/**
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rhash.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rhash.h
index 61d2c15d8..897c57079 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rhash.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rhash.h
@@ -45,19 +45,6 @@
*/
#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- *
- * @internal
- *
- * Declaration of rb_hash_iter_lev() is at include/ruby/backward.h.
- */
-#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
-
/**
* @private
*
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rmatch.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rmatch.h
index 2d2fd897f..a528c2999 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rmatch.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rmatch.h
@@ -68,7 +68,7 @@ struct rmatch_offset {
};
/** Represents a match. */
-struct rmatch {
+struct rb_matchext_struct {
/**
* "Registers" of a match. This is a quasi-opaque struct that holds
* execution result of a match. Roughly resembles `&~`.
@@ -82,6 +82,8 @@ struct rmatch {
int char_offset_num_allocated;
};
+typedef struct rb_matchext_struct rb_matchext_t;
+
/**
* Regular expression execution context. When a regular expression "matches"
* to a string, it generates capture groups etc. This struct holds that info.
@@ -101,17 +103,14 @@ struct RMatch {
*/
VALUE str;
- /**
- * The result of this match.
- */
- struct rmatch *rmatch;
-
/**
* The expression of this match.
*/
VALUE regexp; /* RRegexp */
};
+#define RMATCH_EXT(m) ((rb_matchext_t *)((char *)(m) + sizeof(struct RMatch)))
+
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -139,8 +138,7 @@ static inline struct re_registers *
RMATCH_REGS(VALUE match)
{
RBIMPL_ASSERT_TYPE(match, RUBY_T_MATCH);
- RBIMPL_ASSERT_OR_ASSUME(RMATCH(match)->rmatch != NULL);
- return &RMATCH(match)->rmatch->regs;
+ return &RMATCH_EXT(match)->regs;
}
#endif /* RBIMPL_RMATCH_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/robject.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/robject.h
index b1c2e1b0a..c2bcae630 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/robject.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/robject.h
@@ -74,17 +74,6 @@ enum ruby_robject_flags {
ROBJECT_EMBED = RUBY_FL_USER1
};
-#if !USE_RVARGC
-/**
- * This is an enum because GDB wants it (rather than a macro). People need not
- * bother.
- */
-enum ruby_robject_consts {
- /** Max possible number of instance variables that can be embedded. */
- ROBJECT_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(VALUE)
-};
-#endif
-
struct st_table;
/**
@@ -118,7 +107,6 @@ struct RObject {
struct rb_id_table *iv_index_tbl;
} heap;
-#if USE_RVARGC
/* Embedded instance variables. When an object is small enough, it
* uses this area to store the instance variables.
*
@@ -128,23 +116,9 @@ struct RObject {
* 2. Zero length arrays are not supported by all compilers
*/
VALUE ary[1];
-#else
- /**
- * Embedded instance variables. When an object is small enough, it
- * uses this area to store the instance variables.
- */
- VALUE ary[ROBJECT_EMBED_LEN_MAX];
-#endif
} as;
};
-/* Offsets for YJIT */
-#ifndef __cplusplus
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IVPTR = offsetof(struct RObject, as.heap.ivptr);
-static const int32_t ROBJECT_OFFSET_AS_HEAP_IV_INDEX_TBL = offsetof(struct RObject, as.heap.iv_index_tbl);
-static const int32_t ROBJECT_OFFSET_AS_ARY = offsetof(struct RObject, as.ary);
-#endif
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rstring.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rstring.h
index e394ab7dc..35175ea94 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rstring.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rstring.h
@@ -42,13 +42,7 @@
/** @cond INTERNAL_MACRO */
#define RSTRING_NOEMBED RSTRING_NOEMBED
-#if !USE_RVARGC
-#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
-#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
-#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
-#endif
#define RSTRING_FSTR RSTRING_FSTR
-#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN
#define RSTRING_LEN RSTRING_LEN
#define RSTRING_LENINT RSTRING_LENINT
#define RSTRING_PTR RSTRING_PTR
@@ -162,21 +156,6 @@ enum ruby_rstring_flags {
*/
RSTRING_NOEMBED = RUBY_FL_USER1,
-#if !USE_RVARGC
- /**
- * When a string employs embedded strategy (see ::RSTRING_NOEMBED), these
- * bits are used to store the number of bytes actually filled into
- * ::RString::ary.
- *
- * @internal
- *
- * 3rd parties must not be aware that there even is more than one way to
- * store a string. Might better be hidden.
- */
- RSTRING_EMBED_LEN_MASK = RUBY_FL_USER2 | RUBY_FL_USER3 | RUBY_FL_USER4 |
- RUBY_FL_USER5 | RUBY_FL_USER6,
-#endif
-
/* Actually, string encodings are also encoded into the flags, using
* remaining bits.*/
@@ -202,20 +181,6 @@ enum ruby_rstring_flags {
RSTRING_FSTR = RUBY_FL_USER17
};
-#if !USE_RVARGC
-/**
- * This is an enum because GDB wants it (rather than a macro). People need not
- * bother.
- */
-enum ruby_rstring_consts {
- /** Where ::RSTRING_EMBED_LEN_MASK resides. */
- RSTRING_EMBED_LEN_SHIFT = RUBY_FL_USHIFT + 2,
-
- /** Max possible number of characters that can be embedded. */
- RSTRING_EMBED_LEN_MAX = RBIMPL_EMBED_LEN_MAX_OF(char) - 1
-};
-#endif
-
/**
* Ruby's String. A string in ruby conceptually has these information:
*
@@ -233,6 +198,13 @@ struct RString {
/** Basic part, including flags and class. */
struct RBasic basic;
+ /**
+ * Length of the string, not including terminating NUL character.
+ *
+ * @note This is in bytes.
+ */
+ long len;
+
/** String's specific fields. */
union {
@@ -241,14 +213,6 @@ struct RString {
* pattern.
*/
struct {
-
- /**
- * Length of the string, not including terminating NUL character.
- *
- * @note This is in bytes.
- */
- long len;
-
/**
* Pointer to the contents of the string. In the old days each
* string had dedicated memory regions. That is no longer true
@@ -279,24 +243,12 @@ struct RString {
/** Embedded contents. */
struct {
-#if USE_RVARGC
- long len;
/* This is a length 1 array because:
* 1. GCC has a bug that does not optimize C flexible array members
* (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102452)
* 2. Zero length arrays are not supported by all compilers
*/
char ary[1];
-#else
- /**
- * When a string is short enough, it uses this area to store the
- * contents themselves. This was impractical in the 20th century,
- * but these days 64 bit machines can typically hold 24 bytes here.
- * Could be sufficiently large. In this case the length is encoded
- * into the flags.
- */
- char ary[RSTRING_EMBED_LEN_MAX + 1];
-#endif
} embed;
} as;
};
@@ -402,75 +354,6 @@ void rb_check_safe_str(VALUE);
void rb_debug_rstring_null_ptr(const char *func);
RBIMPL_SYMBOL_EXPORT_END()
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Queries the length of the string.
- *
- * @param[in] str String in question.
- * @return Its length, in bytes.
- * @pre `str` must be an instance of ::RString, and must has its
- * ::RSTRING_NOEMBED flag off.
- *
- * @internal
- *
- * This was a macro before. It was inevitable to be public, since macros are
- * global constructs. But should it be forever? Now that it is a function,
- * @shyouhei thinks it could just be eliminated, hidden into implementation
- * details.
- */
-static inline long
-RSTRING_EMBED_LEN(VALUE str)
-{
- RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING);
- RBIMPL_ASSERT_OR_ASSUME(! RB_FL_ANY_RAW(str, RSTRING_NOEMBED));
-
-#if USE_RVARGC
- long f = RSTRING(str)->as.embed.len;
- return f;
-#else
- VALUE f = RBASIC(str)->flags;
- f &= RSTRING_EMBED_LEN_MASK;
- f >>= RSTRING_EMBED_LEN_SHIFT;
- return RBIMPL_CAST((long)f);
-#endif
-}
-
-RBIMPL_WARNING_PUSH()
-#if RBIMPL_COMPILER_IS(Intel)
-RBIMPL_WARNING_IGNORED(413)
-#endif
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * @private
- *
- * "Expands" an embedded string into an ordinal one. This is a function that
- * returns aggregated type. The returned struct always has its `as.heap.len`
- * an `as.heap.ptr` fields set appropriately.
- *
- * This is an implementation detail that 3rd parties should never bother.
- */
-static inline struct RString
-rbimpl_rstring_getmem(VALUE str)
-{
- RBIMPL_ASSERT_TYPE(str, RUBY_T_STRING);
-
- if (RB_FL_ANY_RAW(str, RSTRING_NOEMBED)) {
- return *RSTRING(str);
- }
- else {
- /* Expecting compilers to optimize this on-stack struct away. */
- struct RString retval;
- retval.as.heap.len = RSTRING_EMBED_LEN(str);
- retval.as.heap.ptr = RSTRING(str)->as.embed.ary;
- return retval;
- }
-}
-
-RBIMPL_WARNING_POP()
-
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -483,7 +366,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline long
RSTRING_LEN(VALUE str)
{
- return rbimpl_rstring_getmem(str).as.heap.len;
+ return RSTRING(str)->len;
}
RBIMPL_ATTR_ARTIFICIAL()
@@ -497,15 +380,13 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline char *
RSTRING_PTR(VALUE str)
{
- char *ptr = rbimpl_rstring_getmem(str).as.heap.ptr;
+ char *ptr = RB_FL_TEST_RAW(str, RSTRING_NOEMBED) ?
+ RSTRING(str)->as.heap.ptr :
+ RSTRING(str)->as.embed.ary;
- if (RB_UNLIKELY(! ptr)) {
+ if (RUBY_DEBUG && RB_UNLIKELY(! ptr)) {
/* :BEWARE: @shyouhei thinks that currently, there are rooms for this
- * function to return NULL. In the 20th century that was a pointless
- * concern. However struct RString can hold fake strings nowadays. It
- * seems no check against NULL are exercised around handling of them
- * (one of such usages is located in marshal.c, which scares
- * @shyouhei). Better check here for maximum safety.
+ * function to return NULL. Better check here for maximum safety.
*
* Also, this is not rb_warn() because RSTRING_PTR() can be called
* during GC (see what obj_info() does). rb_warn() needs to allocate
@@ -527,14 +408,17 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline char *
RSTRING_END(VALUE str)
{
- struct RString buf = rbimpl_rstring_getmem(str);
+ char *ptr = RB_FL_TEST_RAW(str, RSTRING_NOEMBED) ?
+ RSTRING(str)->as.heap.ptr :
+ RSTRING(str)->as.embed.ary;
+ long len = RSTRING_LEN(str);
- if (RB_UNLIKELY(! buf.as.heap.ptr)) {
+ if (RUBY_DEBUG && RB_UNLIKELY(!ptr)) {
/* Ditto. */
rb_debug_rstring_null_ptr("RSTRING_END");
}
- return &buf.as.heap.ptr[buf.as.heap.len];
+ return &ptr[len];
}
RBIMPL_ATTR_ARTIFICIAL()
@@ -563,16 +447,7 @@ RSTRING_LENINT(VALUE str)
* @param ptrvar Variable where its contents is stored.
* @param lenvar Variable where its length is stored.
*/
-#ifdef HAVE_STMT_AND_DECL_IN_EXPR
-# define RSTRING_GETMEM(str, ptrvar, lenvar) \
- __extension__ ({ \
- struct RString rbimpl_str = rbimpl_rstring_getmem(str); \
- (ptrvar) = rbimpl_str.as.heap.ptr; \
- (lenvar) = rbimpl_str.as.heap.len; \
- })
-#else
# define RSTRING_GETMEM(str, ptrvar, lenvar) \
((ptrvar) = RSTRING_PTR(str), \
(lenvar) = RSTRING_LEN(str))
-#endif /* HAVE_STMT_AND_DECL_IN_EXPR */
#endif /* RBIMPL_RSTRING_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rtypeddata.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rtypeddata.h
index bbf208867..6c19576c2 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rtypeddata.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/core/rtypeddata.h
@@ -114,6 +114,8 @@
#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
/** @endcond */
+#define TYPED_DATA_EMBEDDED 2
+
/**
* @private
*
@@ -137,6 +139,8 @@ rbimpl_typeddata_flags {
*/
RUBY_TYPED_FREE_IMMEDIATELY = 1,
+ RUBY_TYPED_EMBEDDABLE = 2,
+
/**
* This flag has something to do with Ractor. Multiple Ractors run without
* protecting each other. Sharing an object among Ractors is basically
@@ -173,10 +177,16 @@ rbimpl_typeddata_flags {
RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED, /* THIS FLAG DEPENDS ON Ruby version */
/**
- * This flag is mysterious. It seems nobody is currently using it. The
- * intention of this flag is also unclear. We need further investigations.
+ * This flag no longer in use
*/
- RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1 /* THIS FLAG DEPENDS ON Ruby version */
+ RUBY_TYPED_UNUSED = RUBY_FL_UNUSED6,
+
+ /**
+ * This flag determines whether marking and compaction should be carried out
+ * using the dmark/dcompact callback functions or whether we should mark
+ * declaratively using a list of references defined inside the data struct we're wrapping
+ */
+ RUBY_TYPED_DECL_MARKING = RUBY_FL_USER2
};
/**
@@ -347,16 +357,14 @@ struct RTypedData {
* data. This roughly resembles a Ruby level class (apart from method
* definition etc.)
*/
- const rb_data_type_t *type;
+ const rb_data_type_t *const type;
/**
* This has to be always 1.
*
* @internal
- *
- * Why, then, this is not a const ::VALUE?
*/
- VALUE typed_flag;
+ const VALUE typed_flag;
/** Pointer to the actual C level struct that you want to wrap. */
void *data;
@@ -456,7 +464,7 @@ RBIMPL_SYMBOL_EXPORT_END()
*/
#define TypedData_Make_Struct0(result, klass, type, size, data_type, sval) \
VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); \
- (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); \
+ (sval) = (type *)RTYPEDDATA_GET_DATA(result); \
RBIMPL_CAST(/*suppress unused variable warnings*/(void)(sval))
/**
@@ -507,6 +515,36 @@ RBIMPL_SYMBOL_EXPORT_END()
#define TypedData_Get_Struct(obj,type,data_type,sval) \
((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type))))
+static inline bool
+RTYPEDDATA_EMBEDDED_P(VALUE obj)
+{
+#if RUBY_DEBUG
+ if (RB_UNLIKELY(!RB_TYPE_P(obj, RUBY_T_DATA))) {
+ Check_Type(obj, RUBY_T_DATA);
+ RBIMPL_UNREACHABLE_RETURN(false);
+ }
+#endif
+
+ return RTYPEDDATA(obj)->typed_flag & TYPED_DATA_EMBEDDED;
+}
+
+static inline void *
+RTYPEDDATA_GET_DATA(VALUE obj)
+{
+#if RUBY_DEBUG
+ if (RB_UNLIKELY(!RB_TYPE_P(obj, RUBY_T_DATA))) {
+ Check_Type(obj, RUBY_T_DATA);
+ RBIMPL_UNREACHABLE_RETURN(false);
+ }
+#endif
+
+ /* We reuse the data pointer in embedded TypedData. We can't use offsetof
+ * since RTypedData a non-POD type in C++. */
+ const size_t embedded_typed_data_size = sizeof(struct RTypedData) - sizeof(void *);
+
+ return RTYPEDDATA_EMBEDDED_P(obj) ? (char *)obj + embedded_typed_data_size : RTYPEDDATA(obj)->data;
+}
+
RBIMPL_ATTR_PURE()
RBIMPL_ATTR_ARTIFICIAL()
/**
@@ -523,7 +561,8 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline bool
rbimpl_rtypeddata_p(VALUE obj)
{
- return RTYPEDDATA(obj)->typed_flag == 1;
+ VALUE typed_flag = RTYPEDDATA(obj)->typed_flag;
+ return typed_flag != 0 && typed_flag <= 3;
}
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/dllexport.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/dllexport.h
index 08a262209..71026e710 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/dllexport.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/dllexport.h
@@ -37,9 +37,7 @@
* ```
*/
#undef RUBY_EXTERN
-#if defined(MJIT_HEADER) && defined(_WIN32)
-# define RUBY_EXTERN extern __declspec(dllimport)
-#elif defined(RUBY_EXPORT)
+#if defined(RUBY_EXPORT)
# define RUBY_EXTERN extern
#elif defined(_WIN32)
# define RUBY_EXTERN extern __declspec(dllimport)
@@ -59,36 +57,6 @@
# define RUBY_FUNC_EXPORTED /* void */
#endif
-/**
- * @cond INTERNAL_MACRO
- *
- * These MJIT related macros are placed here because translate_mjit_header can
- * need them. Extension libraries should not touch.
- */
-
-/* These macros are used for functions which are exported only for MJIT
- and NOT ensured to be exported in future versions. */
-
-#if ! defined(MJIT_HEADER)
-# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#elif ! RBIMPL_COMPILER_IS(MSVC)
-# define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
-#else
-# define MJIT_FUNC_EXPORTED static
-#endif
-
-#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
-#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
-
-/* On mswin, MJIT header transformation can't be used since cl.exe can't output
- preprocessed output preserving macros. So this `MJIT_STATIC` is needed
- to force non-static function to static on MJIT header to avoid symbol conflict. */
-#ifdef MJIT_HEADER
-# define MJIT_STATIC static
-#else
-# define MJIT_STATIC
-#endif
-
/** @endcond */
/** Shortcut macro equivalent to `RUBY_SYMBOL_EXPORT_BEGIN extern "C" {`.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/encoding.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/encoding.h
index 4748ca806..a58f9f2b1 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/encoding.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/encoding.h
@@ -28,6 +28,7 @@
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/returns_nonnull.h"
#include "ruby/internal/dllexport.h"
+#include "ruby/internal/encoding/coderange.h"
#include "ruby/internal/value.h"
#include "ruby/internal/core/rbasic.h"
#include "ruby/internal/fl_type.h"
@@ -79,7 +80,7 @@ enum ruby_encoding_consts {
static inline void
RB_ENCODING_SET_INLINED(VALUE obj, int encindex)
{
- VALUE f = /* upcast */ encindex;
+ VALUE f = /* upcast */ RBIMPL_CAST((VALUE)encindex);
f <<= RUBY_ENCODING_SHIFT;
RB_FL_UNSET_RAW(obj, RUBY_ENCODING_MASK);
@@ -138,23 +139,6 @@ RBIMPL_ATTR_NOALIAS()
*/
int rb_char_to_option_kcode(int c, int *option, int *kcode);
-/**
- * Creates a new encoding, using the passed one as a template.
- *
- * @param[in] name Name of the creating encoding.
- * @param[in] src Template.
- * @exception rb_eArgError Duplicated or malformed `name`.
- * @return Replicated new encoding's index.
- * @post Encoding named `name` is created as a copy of `src`, whose index
- * is the return value.
- *
- * @internal
- *
- * `name` can be `NULL`, but that just raises an exception. OTOH it seems no
- * sanity check is done against `src`...?
- */
-int rb_enc_replicate(const char *name, rb_encoding *src);
-
/**
* Creates a new "dummy" encoding. Roughly speaking, an encoding is dummy when
* it is stateful. Notable example of dummy encoding are those defined in
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/string.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/string.h
index 6ed7ca1c9..2cfa91c01 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/string.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/encoding/string.h
@@ -30,7 +30,7 @@
RBIMPL_SYMBOL_EXPORT_BEGIN()
/**
- * Identical to rb_enc_str_new(), except it additionally takes an encoding.
+ * Identical to rb_str_new(), except it additionally takes an encoding.
*
* @param[in] ptr A memory region of `len` bytes length.
* @param[in] len Length of `ptr`, in bytes, not including the
@@ -307,13 +307,13 @@ RBIMPL_ATTR_NONNULL(())
/**
* Looks for the passed string in the passed buffer.
*
- * @param[in] x Buffer that potentially includes `y`.
+ * @param[in] x Query string.
* @param[in] m Number of bytes of `x`.
- * @param[in] y Query string.
+ * @param[in] y Buffer that potentially includes `x`.
* @param[in] n Number of bytes of `y`.
* @param[in] enc Encoding of both `x` and `y`.
* @retval -1 Not found.
- * @retval otherwise Found index in `x`.
+ * @retval otherwise Found index in `y`.
* @note This API can match at a non-character-boundary.
*/
long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/error.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/error.h
index 49e2276cb..3ff885b2b 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/error.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/error.h
@@ -50,7 +50,23 @@ typedef enum {
/** Warning is for experimental features. */
RB_WARN_CATEGORY_EXPERIMENTAL,
- RB_WARN_CATEGORY_ALL_BITS = 0x6 /* no RB_WARN_CATEGORY_NONE bit */
+ /** Warning is for performance issues (not enabled by -w). */
+ RB_WARN_CATEGORY_PERFORMANCE,
+
+ /** Warning is for checking unused block strictly */
+ RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK,
+
+ RB_WARN_CATEGORY_DEFAULT_BITS = (
+ (1U << RB_WARN_CATEGORY_DEPRECATED) |
+ (1U << RB_WARN_CATEGORY_EXPERIMENTAL) |
+ 0),
+
+ RB_WARN_CATEGORY_ALL_BITS = (
+ (1U << RB_WARN_CATEGORY_DEPRECATED) |
+ (1U << RB_WARN_CATEGORY_EXPERIMENTAL) |
+ (1U << RB_WARN_CATEGORY_PERFORMANCE) |
+ (1U << RB_WARN_CATEGORY_STRICT_UNUSED_BLOCK) |
+ 0)
} rb_warning_category_t;
/** for rb_readwrite_sys_fail first argument */
@@ -469,7 +485,7 @@ VALUE *rb_ruby_debug_ptr(void);
*/
#define ruby_debug (*rb_ruby_debug_ptr())
-/* reports if `-W' specified */
+/* reports if $VERBOSE is true */
RBIMPL_ATTR_NONNULL((1))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
/**
@@ -484,7 +500,8 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
* default, the method just emits its passed contents to ::rb_stderr using
* rb_io_write().
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE, it does
+ * nothing unless $VERBOSE is true.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*
* @internal
@@ -509,7 +526,7 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
* Issues a compile-time warning that happens at `__file__:__line__`. Purpose
* of this function being exposed to CAPI is unclear.
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE.
* @param[in] file The path corresponding to Ruby level `__FILE__`.
* @param[in] line The number corresponding to Ruby level `__LINE__`.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
@@ -522,19 +539,20 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
* Identical to rb_sys_fail(), except it does not raise an exception to render
* a warning instead.
*
- * @note This function is affected by the `-W` flag.
+ * @note This function is affected by the value of $VERBOSE.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*/
void rb_sys_warning(const char *fmt, ...);
-/* reports always */
+/* reports if $VERBOSE is not nil (so if it is true or false) */
RBIMPL_ATTR_COLD()
RBIMPL_ATTR_NONNULL((1))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 1, 2)
/**
- * Identical to rb_warning(), except it reports always regardless of runtime
- * `-W` flag.
+ * Identical to rb_warning(), except it reports unless $VERBOSE is nil.
*
+ * @note This function is affected by the value of $VERBOSE, it does
+ * nothing if $VERBOSE is nil.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
*/
void rb_warn(const char *fmt, ...);
@@ -543,8 +561,7 @@ RBIMPL_ATTR_COLD()
RBIMPL_ATTR_NONNULL((2))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3)
/**
- * Identical to rb_category_warning(), except it reports always regardless of
- * runtime `-W` flag.
+ * Identical to rb_category_warning(), except it reports unless $VERBOSE is nil.
*
* @param[in] cat Category e.g. deprecated.
* @param[in] fmt Format specifier string compatible with rb_sprintf().
@@ -554,8 +571,7 @@ void rb_category_warn(rb_warning_category_t cat, const char *fmt, ...);
RBIMPL_ATTR_NONNULL((1, 3))
RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
/**
- * Identical to rb_compile_warning(), except it reports always regardless of
- * runtime `-W` flag.
+ * Identical to rb_compile_warning(), except it reports unless $VERBOSE is nil.
*
* @param[in] file The path corresponding to Ruby level `__FILE__`.
* @param[in] line The number corresponding to Ruby level `__LINE__`.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/event.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/event.h
index 04b137a19..1d194ed61 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/event.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/event.h
@@ -23,6 +23,10 @@
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
+#ifdef HAVE_STDINT_H
+#include
+#endif
+
/* These macros are not enums because they are wider than int.*/
/**
@@ -54,6 +58,7 @@
#define RUBY_EVENT_THREAD_END 0x0800 /**< Encountered an end of a thread. */
#define RUBY_EVENT_FIBER_SWITCH 0x1000 /**< Encountered a `Fiber#yield`. */
#define RUBY_EVENT_SCRIPT_COMPILED 0x2000 /**< Encountered an `eval`. */
+#define RUBY_EVENT_RESCUE 0x4000 /**< Encountered a `rescue` statement. */
#define RUBY_EVENT_TRACEPOINT_ALL 0xffff /**< Bitmask of extended events. */
/** @} */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/fl_type.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/fl_type.h
index 7383426b2..f80f65ef8 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/fl_type.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/fl_type.h
@@ -57,8 +57,7 @@
#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON) /**< @old{RUBY_FL_SINGLETON} */
#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED) /**< @old{RUBY_FL_WB_PROTECTED} */
-#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0) /**< @old{RUBY_FL_PROMOTED0} */
-#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1) /**< @old{RUBY_FL_PROMOTED1} */
+#define FL_PROMOTED RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED) /**< @old{RUBY_FL_PROMOTED} */
#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE) /**< @old{RUBY_FL_FINALIZE} */
#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT) /**< @old{RUBY_FL_TAINT} */
#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE) /**< @old{RUBY_FL_SHAREABLE} */
@@ -111,13 +110,6 @@
#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
#define RB_OBJ_FROZEN RB_OBJ_FROZEN
#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
-#define RB_OBJ_INFECT RB_OBJ_INFECT
-#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
-#define RB_OBJ_TAINT RB_OBJ_TAINT
-#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE
-#define RB_OBJ_TAINTED RB_OBJ_TAINTED
-#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
-#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
#define RB_OBJ_UNTRUST RB_OBJ_TAINT
#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED
/** @endcond */
@@ -207,12 +199,15 @@ ruby_fl_type {
RUBY_FL_WB_PROTECTED = (1<<5),
/**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced promotion i.e. survived a garbage collection.
+ * Ruby objects are "generational". There are young objects & old objects.
+ * Young objects are prone to die & monitored relatively extensively by the
+ * garbage collector. Old objects tend to live longer & are monitored less
+ * frequently. When an object survives a GC, its age is incremented. When
+ * age is equal to RVALUE_OLD_AGE, the object becomes Old. This flag is set
+ * when an object becomes old, and is used by the write barrier to check if
+ * an old object should be considered for marking more frequently - as old
+ * objects that have references added between major GCs need to be remarked
+ * to prevent the referred object being mistakenly swept.
*
* @internal
*
@@ -220,41 +215,14 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_FL_PROMOTED0 = (1<<5),
+ RUBY_FL_PROMOTED = (1<<5),
/**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced two promotions i.e. survived garbage collections
- * twice.
+ * This flag is no longer in use
*
* @internal
- *
- * But honestly, @shyouhei doesn't think this flag should be visible from
- * 3rd parties. It must be an implementation detail that they should never
- * know. Might better be hidden.
- */
- RUBY_FL_PROMOTED1 = (1<<6),
-
- /**
- * This flag has something to do with our garbage collector. These days
- * ruby objects are "generational". There are those who are young and
- * those who are old. Young objects are prone to die; monitored relatively
- * extensively by the garbage collector. OTOH old objects tend to live
- * longer. They are relatively rarely considered. This flag is set when a
- * object experienced promotions i.e. survived more than one garbage
- * collections.
- *
- * @internal
- *
- * But honestly, @shyouhei doesn't think this flag should be visible from
- * 3rd parties. It must be an implementation detail that they should never
- * know. Might better be hidden.
*/
- RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0 | RUBY_FL_PROMOTED1,
+ RUBY_FL_UNUSED6 = (1<<6),
/**
* This flag has something to do with finalisers. A ruby object can have
@@ -283,7 +251,7 @@ ruby_fl_type {
# pragma deprecated(RUBY_FL_TAINT)
#endif
- = (1<<8),
+ = 0,
/**
* This flag has something to do with Ractor. Multiple Ractors run without
@@ -310,7 +278,7 @@ ruby_fl_type {
# pragma deprecated(RUBY_FL_UNTRUSTED)
#endif
- = (1<<8),
+ = 0,
/**
* This flag has something to do with object IDs. Unlike in the old days,
@@ -402,7 +370,7 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_ELTS_SHARED = RUBY_FL_USER2,
+ RUBY_ELTS_SHARED = RUBY_FL_USER0,
/**
* This flag has something to do with an object's class. There are kind of
@@ -427,7 +395,7 @@ ruby_fl_type {
* 3rd parties. It must be an implementation detail that they should never
* know. Might better be hidden.
*/
- RUBY_FL_SINGLETON = RUBY_FL_USER0,
+ RUBY_FL_SINGLETON = RUBY_FL_USER1,
};
enum {
@@ -489,7 +457,7 @@ RB_FL_ABLE(VALUE obj)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_TEST(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_TEST(). 3rd parties need not use
* this. Just always use RB_FL_TEST().
*
* @param[in] obj Object in question.
@@ -537,7 +505,7 @@ RB_FL_TEST(VALUE obj, VALUE flags)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_ANY(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_ANY(). 3rd parties need not use
* this. Just always use RB_FL_ANY().
*
* @param[in] obj Object in question.
@@ -571,7 +539,7 @@ RB_FL_ANY(VALUE obj, VALUE flags)
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_ALL(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_ALL(). 3rd parties need not use
* this. Just always use RB_FL_ALL().
*
* @param[in] obj Object in question.
@@ -607,7 +575,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_SET(). 3rd parties need not use
* this. Just always use RB_FL_SET().
*
* @param[out] obj Object in question.
@@ -627,7 +595,7 @@ rbimpl_fl_set_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_SET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_SET(). 3rd parties need not use
* this. Just always use RB_FL_SET().
*
* @param[out] obj Object in question.
@@ -667,7 +635,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_UNSET(). 3rd parties need not use
* this. Just always use RB_FL_UNSET().
*
* @param[out] obj Object in question.
@@ -687,7 +655,7 @@ rbimpl_fl_unset_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_UNSET(). 3rd parties need not use
+ * This is an implementation detail of RB_FL_UNSET(). 3rd parties need not use
* this. Just always use RB_FL_UNSET().
*
* @param[out] obj Object in question.
@@ -722,7 +690,7 @@ RBIMPL_ATTR_ARTIFICIAL()
/**
* @private
*
- * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not
+ * This is an implementation detail of RB_FL_REVERSE(). 3rd parties need not
* use this. Just always use RB_FL_REVERSE().
*
* @param[out] obj Object in question.
@@ -742,7 +710,7 @@ rbimpl_fl_reverse_raw_raw(struct RBasic *obj, VALUE flags)
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_FL_REVERSE(). 3rd parties need not
+ * This is an implementation detail of RB_FL_REVERSE(). 3rd parties need not
* use this. Just always use RB_FL_REVERSE().
*
* @param[out] obj Object in question.
@@ -787,6 +755,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline bool
RB_OBJ_TAINTABLE(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -804,6 +773,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline VALUE
RB_OBJ_TAINTED_RAW(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -821,6 +791,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline bool
RB_OBJ_TAINTED(VALUE obj)
{
+ (void)obj;
return false;
}
@@ -836,6 +807,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_TAINT_RAW(VALUE obj)
{
+ (void)obj;
return;
}
@@ -851,6 +823,7 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_TAINT(VALUE obj)
{
+ (void)obj;
return;
}
@@ -867,6 +840,8 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_INFECT_RAW(VALUE dst, VALUE src)
{
+ (void)dst;
+ (void)src;
return;
}
@@ -883,13 +858,15 @@ RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea."))
static inline void
RB_OBJ_INFECT(VALUE dst, VALUE src)
{
+ (void)dst;
+ (void)src;
return;
}
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_OBJ_FROZEN(). 3rd parties need not
+ * This is an implementation detail of RB_OBJ_FROZEN(). 3rd parties need not
* use this. Just always use RB_OBJ_FROZEN().
*
* @param[in] obj Object in question.
@@ -928,9 +905,21 @@ RB_OBJ_FROZEN(VALUE obj)
}
}
+RUBY_SYMBOL_EXPORT_BEGIN
+/**
+ * Prevents further modifications to the given object. ::rb_eFrozenError shall
+ * be raised if modification is attempted.
+ *
+ * @param[out] x Object in question.
+ * @exception rb_eNoMemError Failed to allocate memory for the frozen
+ * representation of the object.
+ */
+void rb_obj_freeze_inline(VALUE obj);
+RUBY_SYMBOL_EXPORT_END
+
RBIMPL_ATTR_ARTIFICIAL()
/**
- * This is an implenentation detail of RB_OBJ_FREEZE(). 3rd parties need not
+ * This is an implementation detail of RB_OBJ_FREEZE(). 3rd parties need not
* use this. Just always use RB_OBJ_FREEZE().
*
* @param[out] obj Object in question.
@@ -938,11 +927,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline void
RB_OBJ_FREEZE_RAW(VALUE obj)
{
- RB_FL_SET_RAW(obj, RUBY_FL_FREEZE);
+ rb_obj_freeze_inline(obj);
}
-RUBY_SYMBOL_EXPORT_BEGIN
-void rb_obj_freeze_inline(VALUE obj);
-RUBY_SYMBOL_EXPORT_END
-
#endif /* RBIMPL_FL_TYPE_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/gc.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/gc.h
index 66fc14e51..5ab3bb266 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/gc.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/gc.h
@@ -20,16 +20,379 @@
* extension libraries. They could be written in C++98.
* @brief Registering values to the GC.
*/
+#include "ruby/internal/config.h"
+
+#ifdef STDC_HEADERS
+# include /* size_t */
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+# include /* ssize_t */
+#endif
+
+#include "ruby/assert.h"
+#include "ruby/internal/attr/cold.h"
+#include "ruby/internal/attr/nonnull.h"
+#include "ruby/internal/attr/noreturn.h"
+#include "ruby/internal/attr/artificial.h"
+#include "ruby/internal/attr/maybe_unused.h"
+#include "ruby/internal/attr/pure.h"
#include "ruby/internal/dllexport.h"
+#include "ruby/internal/special_consts.h"
+#include "ruby/internal/stdbool.h"
#include "ruby/internal/value.h"
RBIMPL_SYMBOL_EXPORT_BEGIN()
+#define RUBY_REF_EDGE(s, p) offsetof(s, p)
+#define RUBY_REFS_LIST_PTR(l) (RUBY_DATA_FUNC)(uintptr_t)(l)
+#define RUBY_REF_END SIZE_MAX
+#define RUBY_REFERENCES(t) static const size_t t[]
+#define RUBY_REFERENCES_START(t) RUBY_REFERENCES(t) = {
+#define RUBY_REFERENCES_END RUBY_REF_END, };
+
+/* gc.c */
+
+RBIMPL_ATTR_COLD()
+RBIMPL_ATTR_NORETURN()
+/**
+ * Triggers out-of-memory error. If possible it raises ::rb_eNoMemError. But
+ * because we are running out of memory that is not always doable. This
+ * function tries hard to show something, but ultimately can die silently.
+ *
+ * @exception rb_eNoMemError Raises it if possible.
+ */
+void rb_memerror(void);
+
+RBIMPL_ATTR_PURE()
+/**
+ * Queries if the GC is busy.
+ *
+ * @retval 0 It isn't.
+ * @retval 1 It is.
+ */
+int rb_during_gc(void);
+
+RBIMPL_ATTR_NONNULL((1))
+/**
+ * Marks objects between the two pointers. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @pre Continuous memory region from `start` to `end` shall be fully
+ * addressable.
+ * @param[out] start Pointer to an array of objects.
+ * @param[out] end Pointer that terminates the array of objects.
+ * @post Objects from `start` (included) to `end` (excluded) are marked.
+ *
+ * @internal
+ *
+ * `end` can be NULL... But that just results in no-op.
+ */
+void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
+
+/**
+ * Identical to rb_mark_hash(), except it marks only values of the table and
+ * leave their associated keys unmarked. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_mark_tbl(struct st_table *tbl);
+
+/**
+ * Identical to rb_mark_tbl(), except it marks objects using
+ * rb_gc_mark_movable(). This is one of the GC utility functions that you can
+ * call when you design your own ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_mark_tbl_no_pin(struct st_table *tbl);
+
+/**
+ * Identical to rb_mark_hash(), except it marks only keys of the table and
+ * leave their associated values unmarked. This is one of the GC utility
+ * functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @warning Of course it can break GC. Leave it unused if unsure.
+ * @param[in] tbl A table to mark.
+ * @post Keys stored in `tbl` are marked.
+ */
+void rb_mark_set(struct st_table *tbl);
+
/**
- * Inform the garbage collector that `valptr` points to a live Ruby object that
- * should not be moved. Note that extensions should use this API on global
- * constants instead of assuming constants defined in Ruby are always alive.
- * Ruby code can remove global constants.
+ * Marks keys and values associated inside of the given table. This is one of
+ * the GC utility functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @param[in] tbl A table to mark.
+ * @post Objects stored in `tbl` are marked.
+ */
+void rb_mark_hash(struct st_table *tbl);
+
+/**
+ * Updates references inside of tables. After you marked values using
+ * rb_mark_tbl_no_pin(), the objects inside of the table could of course be
+ * moved. This function is to fixup those references. You can call this from
+ * your ::rb_data_type_struct::dcompact.
+ *
+ * @param[out] ptr A table that potentially includes moved references.
+ * @post Moved references, if any, are corrected.
+ */
+void rb_gc_update_tbl_refs(st_table *ptr);
+
+/**
+ * Identical to rb_gc_mark(), except it allows the passed value be a
+ * non-object. For instance pointers to different type of memory regions are
+ * allowed here. Such values are silently ignored. This is one of the GC
+ * utility functions that you can call when you design your own
+ * ::rb_data_type_struct::dmark.
+ *
+ * @param[out] obj A possible object.
+ * @post `obj` is marked, if possible.
+ */
+void rb_gc_mark_maybe(VALUE obj);
+
+/**
+ * Marks an object. This is one of the GC utility functions that you can call
+ * when you design your own ::rb_data_type_struct::dmark.
+ *
+ * @param[out] obj Arbitrary Ruby object.
+ * @post `obj` is marked.
+ */
+void rb_gc_mark(VALUE obj);
+
+/**
+ * Maybe this is the only function provided for C extensions to control the
+ * pinning of objects, so let us describe it in detail. These days Ruby's GC
+ * is copying. As far as an object's physical address is guaranteed unused, it
+ * can move around the object space. Our GC engine rearranges these objects
+ * after it reclaims unreachable objects from our object space, so that the
+ * space is compact (improves memory locality). This is called the
+ * "compaction" phase, and works well most of the time... as far as there are
+ * no C extensions. C extensions complicate the scenario because Ruby core
+ * cannot detect any use of the physical address of an object inside of C
+ * functions. In order to prevent memory corruptions, objects observable from
+ * C extensions are "pinned"; they stick to where they are born until they die,
+ * just in case any C extensions touch their raw pointers. This variant of
+ * scheme is called "Mostly-Copying" garbage collector. Authors of C
+ * extensions, however, can extremely carefully write them to become
+ * compaction-aware. To do so avoid referring to a Ruby object from inside of
+ * your struct in the first place. But if that is not possible, use this
+ * function from your ::rb_data_type_struct::dmark then. This way objects
+ * marked using it are considered movable. If you chose this way you have to
+ * manually fix up locations of such moved pointers using rb_gc_location().
+ *
+ * @see Bartlett, Joel F., "Compacting Garbage Collection with Ambiguous
+ * Roots", ACM SIGPLAN Lisp Pointers Volume 1 Issue 6 pp. 3-12,
+ * April-May-June, 1988. https://doi.org/10.1145/1317224.1317225
+ *
+ * @param[in] obj Object that is movable.
+ * @post Values stored in `tbl` are marked.
+ */
+void rb_gc_mark_movable(VALUE obj);
+
+/**
+ * Finds a new "location" of an object. An object can be moved on compaction.
+ * This function projects its new abode, or just returns the passed object if
+ * not moved. This is one of the GC utility functions that you can call when
+ * you design your own ::rb_data_type_struct::dcompact.
+ *
+ * @param[in] obj An object, possibly already moved to somewhere else.
+ * @return An object, which holds the current contents of former `obj`.
+ */
+VALUE rb_gc_location(VALUE obj);
+
+/**
+ * Triggers a GC process. This was the only GC entry point that we had at the
+ * beginning. Over time our GC evolved. Now what this function does is just a
+ * very simplified variation of the entire GC algorithms. A series of
+ * procedures kicked by this API is called a "full" GC.
+ *
+ * - It immediately scans the entire object space to sort the dead.
+ * - It immediately reclaims any single dead bodies to reuse later.
+ *
+ * It is worth noting that the procedures above do not include evaluations of
+ * finalisers. They run later.
+ *
+ * @internal
+ *
+ * Finalisers are deferred until we can handle interrupts. See
+ * `rb_postponed_job_flush` in vm_trace.c.
+ *
+ * Of course there are GC that are not "full". For instance this one and the
+ * GC which runs when we are running out of memory are different. See
+ * `gc_profile_record_flag` defined in gc.c for the kinds of GC.
+ *
+ * In spite of the name this is not what everything that a GC can trigger. As
+ * of writing it seems this function does not trigger compaction. But this
+ * might change in future.
+ */
+void rb_gc(void);
+
+/**
+ * Copy&paste an object's finaliser to another. This is one of the GC utility
+ * functions that you can call when you design your own `initialize_copy`,
+ * `initialize_dup`, `initialize_clone`.
+ *
+ * @param[out] dst Destination object.
+ * @param[in] src Source object.
+ * @post `dst` and `src` share the same finaliser.
+ *
+ * @internal
+ *
+ * But isn't it easier for you to call super, and let `Object#initialize_copy`
+ * call this function instead?
+ */
+void rb_gc_copy_finalizer(VALUE dst, VALUE src);
+
+/**
+ * (Re-) enables GC. This makes sense only after you called rb_gc_disable().
+ *
+ * @retval RUBY_Qtrue GC was disabled before.
+ * @retval RUBY_Qfalse GC was enabled before.
+ * @post GC is enabled.
+ *
+ * @internal
+ *
+ * This is one of such exceptional functions that does not raise both Ruby
+ * exceptions and C++ exceptions.
+ */
+VALUE rb_gc_enable(void);
+
+/**
+ * Disables GC. This prevents automatic GC runs when the process is running
+ * out of memory. Such situations shall result in rb_memerror(). However this
+ * does not prevent users from manually invoking rb_gc(). That should work.
+ * People abused this by disabling GC at the beginning of an event loop,
+ * process events without GC overheads, then manually force reclaiming garbage
+ * at the bottom of the loop. However because our GC is now much smarter than
+ * just calling rb_gc(), this technique is proven to be sub-optimal these days.
+ * It is believed that there is currently practically no needs of this
+ * function.
+ *
+ * @retval RUBY_Qtrue GC was disabled before.
+ * @retval RUBY_Qfalse GC was enabled before.
+ * @post GC is disabled.
+ */
+VALUE rb_gc_disable(void);
+
+/**
+ * Identical to rb_gc(), except the return value.
+ *
+ * @return Always returns ::RUBY_Qnil.
+ */
+VALUE rb_gc_start(void);
+
+/**
+ * Assigns a finaliser for an object. Each objects can have objects (typically
+ * blocks) that run immediately after that object dies. They are called
+ * finalisers of an object. This function associates a finaliser object with a
+ * target object.
+ *
+ * @note Note that finalisers run _after_ the object they finalise dies. You
+ * cannot for instance call its methods.
+ * @note If your finaliser references the object it finalises that object
+ * loses any chance to become a garbage; effectively leaks memory until
+ * the end of the process.
+ *
+ * @param[in] obj Target to finalise.
+ * @param[in] block Something `call`able.
+ * @exception rb_eRuntimeError Somehow `obj` cannot have finalisers.
+ * @exception rb_eFrozenError `obj` is frozen.
+ * @exception rb_eArgError `block` doesn't respond to `call`.
+ * @return The passed `block`.
+ * @post `block` runs after `obj` dies.
+ */
+VALUE rb_define_finalizer(VALUE obj, VALUE block);
+
+/**
+ * Modifies the object so that it has no finalisers at all. This function is
+ * mainly provided for symmetry. No practical usages can be thought of.
+ *
+ * @param[out] obj Object to clear its finalisers.
+ * @exception rb_eFrozenError `obj` is frozen.
+ * @return The passed `obj`.
+ * @post `obj` has no finalisers.
+ * @note There is no way to undefine a specific part of many finalisers
+ * that `obj` could have. All you can do is to clear them all.
+ */
+VALUE rb_undefine_finalizer(VALUE obj);
+
+/**
+ * Identical to rb_gc_stat(), with "count" parameter.
+ *
+ * @return Lifetime total number of runs of GC.
+ */
+size_t rb_gc_count(void);
+
+/**
+ * Obtains various GC related profiles. The parameter can be either a Symbol
+ * or a Hash. If a Hash is passed, it is filled with everything currently
+ * available. If a Symbol is passed just that portion is returned.
+ *
+ * Possible variations of keys you can pass here change from version to
+ * version. You can get the list of known keys by passing an empty hash and
+ * let it be filled.
+ *
+ * @param[in,out] key_or_buf A Symbol, or a Hash.
+ * @exception rb_eTypeError Neither Symbol nor Hash.
+ * @exception rb_eFrozenError Frozen hash is passed.
+ * @return In case a Hash is passed it returns 0. Otherwise the
+ * profile value associated with the given key is returned.
+ * @post In case a Hash is passed it is filled with values.
+ */
+size_t rb_gc_stat(VALUE key_or_buf);
+
+/**
+ * Obtains various info regarding the most recent GC run. This includes for
+ * instance the reason of the GC. The parameter can be either a Symbol or a
+ * Hash. If a Hash is passed, it is filled with everything currently
+ * available. If a Symbol is passed just that portion is returned.
+ *
+ * Possible variations of keys you can pass here change from version to
+ * version. You can get the list of known keys by passing an empty hash and
+ * let it be filled.
+ *
+ * @param[in,out] key_or_buf A Symbol, or a Hash.
+ * @exception rb_eTypeError Neither Symbol nor Hash.
+ * @exception rb_eFrozenError Frozen hash is passed.
+ * @return In case a Hash is passed it returns that hash. Otherwise
+ * the profile value associated with the given key is returned.
+ * @post In case a Hash is passed it is filled with values.
+ */
+VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
+
+/**
+ * Informs that there are external memory usages. Our GC runs when we are
+ * running out of memory. The amount of memory, however, can increase/decrease
+ * behind-the-scene. For instance DLLs can allocate memories using `mmap(2)`
+ * etc, which are opaque to us. Registering such external allocations using
+ * this function enables proper detection of how much memories an object used
+ * as a whole. That will trigger GCs more often than it would otherwise. You
+ * can also pass negative numbers here, to indicate that such external
+ * allocations are gone.
+ *
+ * @param[in] diff Amount of memory increased(+)/decreased(-).
+ */
+void rb_gc_adjust_memory_usage(ssize_t diff);
+
+/**
+ * Inform the garbage collector that the global or static variable pointed by
+ * `valptr` stores a live Ruby object that should not be moved. Note that
+ * extensions should use this API on global constants instead of assuming
+ * constants defined in Ruby are always alive. Ruby code can remove global
+ * constants.
+ *
+ * Because this registration itself has a possibility to trigger a GC, this
+ * function must be called before any GC-able objects is assigned to the
+ * address pointed by `valptr`.
*/
void rb_gc_register_address(VALUE *valptr);
@@ -54,4 +417,413 @@ void rb_gc_register_mark_object(VALUE object);
RBIMPL_SYMBOL_EXPORT_END()
+/**
+ * @private
+ *
+ * @deprecated This macro once was a thing in the old days, but makes no sense
+ * any longer today. Exists here for backwards compatibility
+ * only. You can safely forget about it.
+ */
+#undef USE_RGENGC
+#define USE_RGENGC 1
+
+/**
+ * @deprecated This macro seems broken. Setting this to anything other than
+ * zero just doesn't compile. We need to KonMari.
+ */
+#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT
+# define USE_RGENGC_LOGGING_WB_UNPROTECT 0
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RArray. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_ARRAY
+# define RGENGC_WB_PROTECTED_ARRAY 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RHash. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_HASH
+# define RGENGC_WB_PROTECTED_HASH 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RStruct. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_STRUCT
+# define RGENGC_WB_PROTECTED_STRUCT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RString. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_STRING
+# define RGENGC_WB_PROTECTED_STRING 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RObject. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_OBJECT
+# define RGENGC_WB_PROTECTED_OBJECT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RRegexp. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_REGEXP
+# define RGENGC_WB_PROTECTED_REGEXP 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RMatch. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_MATCH
+# define RGENGC_WB_PROTECTED_MATCH 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RClass. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_CLASS
+# define RGENGC_WB_PROTECTED_CLASS 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RFloat. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_FLOAT
+# define RGENGC_WB_PROTECTED_FLOAT 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RComplex. It has to be set at the time ruby itself compiles.
+ * Makes no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_COMPLEX
+# define RGENGC_WB_PROTECTED_COMPLEX 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RRational. It has to be set at the time ruby itself compiles.
+ * Makes no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_RATIONAL
+# define RGENGC_WB_PROTECTED_RATIONAL 1
+#endif
+
+/**
+ * @private
+ *
+ * This is a compile-time flag to enable/disable write barrier for
+ * struct ::RBignum. It has to be set at the time ruby itself compiles. Makes
+ * no sense for 3rd parties.
+ */
+#ifndef RGENGC_WB_PROTECTED_BIGNUM
+# define RGENGC_WB_PROTECTED_BIGNUM 1
+#endif
+
+/**
+ * @private
+ *
+ * @deprecated This macro once was a thing in the old days, but makes no sense
+ * any longer today. Exists here for backwards compatibility
+ * only. You can safely forget about it.
+ *
+ * @internal
+ *
+ * @shyouhei doesn't think anybody uses this right now.
+ */
+#ifndef RGENGC_WB_PROTECTED_NODE_CREF
+# define RGENGC_WB_PROTECTED_NODE_CREF 1
+#endif
+
+/**
+ * @defgroup rgengc Write barrier (WB) interfaces:
+ *
+ * @note The following core interfaces can be changed in the future. Please
+ * catch up if you want to insert WB into C-extensions correctly.
+ *
+ * @{
+ */
+
+/**
+ * Declaration of a "back" pointer. This is a write barrier for new reference
+ * from "old" generation to "young" generation. It writes `young` into
+ * `*slot`, which is a pointer inside of `old`.
+ *
+ * @param[in] old An old object.
+ * @param[in] slot A pointer inside of `old`.
+ * @param[out] young A young object.
+ */
+#define RB_OBJ_WRITE(old, slot, young) \
+ RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
+
+/**
+ * Identical to #RB_OBJ_WRITE(), except it doesn't write any values, but only a
+ * WB declaration. `oldv` is replaced value with `b` (not used in current
+ * Ruby).
+ *
+ * @param[in] old An old object.
+ * @param[in] oldv An object previously stored inside of `old`.
+ * @param[out] young A young object.
+ */
+#define RB_OBJ_WRITTEN(old, oldv, young) \
+ RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
+/** @} */
+
+#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW /**< @old{RB_OBJ_PROMOTED_RAW} */
+#define OBJ_PROMOTED RB_OBJ_PROMOTED /**< @old{RB_OBJ_PROMOTED} */
+#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT /**< @old{RB_OBJ_WB_UNPROTECT} */
+
+/**
+ * Asserts that the passed object is not fenced by write barriers. Objects of
+ * such property do not contribute to generational GCs. They are scanned
+ * always.
+ *
+ * @param[out] x An object that would not be protected by the barrier.
+ */
+#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
+
+/**
+ * Identical to #RB_OBJ_WB_UNPROTECT(), except it can also assert that the
+ * given object is of given type.
+ *
+ * @param[in] type One of `ARRAY`, `STRING`, etc.
+ * @param[out] obj An object of `type` that would not be protected.
+ *
+ * @internal
+ *
+ * @shyouhei doesn't understand why this has to be visible from extensions.
+ */
+#define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \
+ (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
+
+/**
+ * @private
+ *
+ * This is an implementation detail of rb_obj_wb_unprotect(). People don't use
+ * it directly.
+ */
+#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
+
+/** @cond INTERNAL_MACRO */
+#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
+#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
+/** @endcond */
+
+RBIMPL_SYMBOL_EXPORT_BEGIN()
+/**
+ * This is the implementation of #RB_OBJ_WRITE(). People don't use it
+ * directly.
+ *
+ * @param[in] old An object that points to `young`.
+ * @param[out] young An object that is referenced from `old`.
+ */
+void rb_gc_writebarrier(VALUE old, VALUE young);
+
+/**
+ * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
+ * directly.
+ *
+ * @param[out] obj An object that does not participate in WB.
+ */
+void rb_gc_writebarrier_unprotect(VALUE obj);
+
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+/**
+ * @private
+ *
+ * This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People
+ * don't use it directly.
+ *
+ * @param[in] objptr Don't know why this is a pointer to void but in
+ * reality this is a pointer to an object that is about
+ * to be un-protected.
+ * @param[in] filename Pass C's `__FILE__` here.
+ * @param[in] line Pass C's `__LINE__` here.
+ */
+void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
+#endif
+
+RBIMPL_SYMBOL_EXPORT_END()
+
+RBIMPL_ATTR_PURE_UNLESS_DEBUG()
+RBIMPL_ATTR_ARTIFICIAL()
+/**
+ * This is the implementation of #RB_OBJ_PROMOTED(). People don't use it
+ * directly.
+ *
+ * @param[in] obj An object to query.
+ * @retval true The object is "promoted".
+ * @retval false The object is young. Have not experienced GC at all.
+ */
+static inline bool
+RB_OBJ_PROMOTED_RAW(VALUE obj)
+{
+ RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj));
+ return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
+}
+
+RBIMPL_ATTR_PURE_UNLESS_DEBUG()
+RBIMPL_ATTR_ARTIFICIAL()
+/**
+ * Tests if the object is "promoted" -- that is, whether the object experienced
+ * one or more GC marks.
+ *
+ * @param[in] obj An object to query.
+ * @retval true The object is "promoted".
+ * @retval false The object is young. Have not experienced GC at all.
+ * @note Hello, is anyone actively calling this function? @shyouhei have
+ * never seen any actual usages outside of the GC implementation
+ * itself.
+ */
+static inline bool
+RB_OBJ_PROMOTED(VALUE obj)
+{
+ if (! RB_FL_ABLE(obj)) {
+ return false;
+ }
+ else {
+ return RB_OBJ_PROMOTED_RAW(obj);
+ }
+}
+
+/**
+ * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
+ * directly.
+ *
+ * @param[out] x An object that does not participate in WB.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return x
+ */
+static inline VALUE
+rb_obj_wb_unprotect(
+ VALUE x,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+ RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line);
+#endif
+ rb_gc_writebarrier_unprotect(x);
+ return x;
+}
+
+/**
+ * @private
+ *
+ * This is the implementation of #RB_OBJ_WRITTEN(). People don't use it
+ * directly.
+ *
+ * @param[in] a An old object.
+ * @param[in] oldv An object previously stored inside of `old`.
+ * @param[out] b A young object.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return a
+ */
+static inline VALUE
+rb_obj_written(
+ VALUE a,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ VALUE oldv,
+ VALUE b,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#if USE_RGENGC_LOGGING_WB_UNPROTECT
+ RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);
+#endif
+
+ if (!RB_SPECIAL_CONST_P(b)) {
+ rb_gc_writebarrier(a, b);
+ }
+
+ return a;
+}
+
+/**
+ * @private
+ *
+ * This is the implementation of #RB_OBJ_WRITE(). People don't use it
+ * directly.
+ *
+ * @param[in] a An old object.
+ * @param[in] slot A pointer inside of `old`.
+ * @param[out] b A young object.
+ * @param[in] filename C's `__FILE__` of the caller function.
+ * @param[in] line C's `__LINE__` of the caller function.
+ * @return a
+ */
+static inline VALUE
+rb_obj_write(
+ VALUE a, VALUE *slot, VALUE b,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ const char *filename,
+ RBIMPL_ATTR_MAYBE_UNUSED()
+ int line)
+{
+#ifdef RGENGC_LOGGING_WRITE
+ RGENGC_LOGGING_WRITE(a, slot, b, filename, line);
+#endif
+
+ *slot = b;
+
+ rb_obj_written(a, RUBY_Qundef /* ignore `oldv' now */, b, filename, line);
+ return a;
+}
+
+RBIMPL_ATTR_DEPRECATED(("Will be removed soon"))
+static inline void rb_gc_force_recycle(VALUE obj){}
+
#endif /* RBIMPL_GC_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/globals.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/globals.h
index 5a414fc47..60d8e5309 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/globals.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/globals.h
@@ -94,7 +94,7 @@ RUBY_EXTERN VALUE rb_cRegexp; /**< `Regexp` class. */
RUBY_EXTERN VALUE rb_cStat; /**< `File::Stat` class. */
RUBY_EXTERN VALUE rb_cString; /**< `String` class. */
RUBY_EXTERN VALUE rb_cStruct; /**< `Struct` class. */
-RUBY_EXTERN VALUE rb_cSymbol; /**< `Sumbol` class. */
+RUBY_EXTERN VALUE rb_cSymbol; /**< `Symbol` class. */
RUBY_EXTERN VALUE rb_cThread; /**< `Thread` class. */
RUBY_EXTERN VALUE rb_cTime; /**< `Time` class. */
RUBY_EXTERN VALUE rb_cTrueClass; /**< `TrueClass` class. */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/has/builtin.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/has/builtin.h
index 243ba2a34..8e7fb173d 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/has/builtin.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/has/builtin.h
@@ -48,6 +48,7 @@
# /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66970 */
# define RBIMPL_HAS_BUILTIN(_) (RBIMPL_HAS_BUILTIN_ ## _)
# define RBIMPL_HAS_BUILTIN___builtin_add_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0)
+# define RBIMPL_HAS_BUILTIN___builtin_add_overflow_p RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_alloca RBIMPL_COMPILER_SINCE(GCC, 0, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align RBIMPL_COMPILER_SINCE(GCC, 6, 1, 0)
# define RBIMPL_HAS_BUILTIN___builtin_assume 0
@@ -75,6 +76,7 @@
# define RBIMPL_HAS_BUILTIN___builtin_rotateright32 0
# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0
# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow RBIMPL_COMPILER_SINCE(GCC, 5, 1, 0)
+# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow_p RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
# define RBIMPL_HAS_BUILTIN___builtin_unreachable RBIMPL_COMPILER_SINCE(GCC, 4, 5, 0)
# /* Note that "0, 0, 0" might be inaccurate. */
@@ -82,6 +84,7 @@
# /* Take config.h definition when available */
# define RBIMPL_HAS_BUILTIN(_) ((RBIMPL_HAS_BUILTIN_ ## _)+0)
# define RBIMPL_HAS_BUILTIN___builtin_add_overflow HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW
+# define RBIMPL_HAS_BUILTIN___builtin_add_overflow_p HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW_P
# define RBIMPL_HAS_BUILTIN___builtin_alloca 0
# define RBIMPL_HAS_BUILTIN___builtin_alloca_with_align HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN
# define RBIMPL_HAS_BUILTIN___builtin_assume 0
@@ -107,6 +110,7 @@
# define RBIMPL_HAS_BUILTIN___builtin_rotateright64 0
# define RBIMPL_HAS_BUILTIN___builtin_popcountll HAVE_BUILTIN___BUILTIN_POPCOUNTLL
# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW
+# define RBIMPL_HAS_BUILTIN___builtin_sub_overflow_p HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW_P
# if defined(HAVE___BUILTIN_UNREACHABLE)
# define RBIMPL_HAS_BUILTIN___builtin_unreachable 1
# else
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/has/c_attribute.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/has/c_attribute.h
index c5c48867b..69b0f402c 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/has/c_attribute.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/has/c_attribute.h
@@ -21,11 +21,23 @@
* @brief Defines #RBIMPL_HAS_C_ATTRIBUTE.
*/
+#include "ruby/internal/has/extension.h"
+#include "ruby/internal/has/warning.h"
+
/** Wraps (or simulates) `__has_c_attribute`. */
#if defined(__cplusplus)
# /* Makes no sense. */
# define RBIMPL_HAS_C_ATTRIBUTE(_) 0
+#elif RBIMPL_HAS_EXTENSION(c_attributes)
+# /* Hmm. It seems Clang 17 has this macro defined even when -std=c99 mode,
+# * _and_ fails to compile complaining that attributes are C2X feature. We
+# * need to work around this nonsense. */
+# define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
+
+#elif RBIMPL_HAS_WARNING("-Wc2x-extensions")
+# define RBIMPL_HAS_C_ATTRIBUTE(_) 0
+
#elif defined(__has_c_attribute)
# define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/array.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/array.h
index 2262c6f0c..b2cc6b132 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/array.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/array.h
@@ -144,7 +144,13 @@ void rb_ary_free(VALUE ary);
*/
void rb_ary_modify(VALUE ary);
-/** @alias{rb_obj_freeze} */
+/**
+ * Freeze an array, preventing further modifications. The underlying buffer may
+ * be shrunk before freezing to conserve memory.
+ *
+ * @param[out] obj Object assumed to be an array to freeze.
+ * @see RB_OBJ_FREEZE()
+ */
VALUE rb_ary_freeze(VALUE obj);
RBIMPL_ATTR_PURE()
@@ -187,7 +193,7 @@ VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs);
* : (int i) -> T?
* | (int beg, int len) -> ::Array[T]?
* | (Range[int] r) -> ::Array[T]?
- * | (ArithmeticSequence as) -> ::Array[T]? # This also raises RagneError.
+ * | (ArithmeticSequence as) -> ::Array[T]? # This also raises RangeError.
* end
* ```
*/
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/bignum.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/bignum.h
index 43d68018d..c27f77a1f 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/bignum.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/bignum.h
@@ -51,7 +51,7 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
VALUE rb_big_new(size_t len, int sign);
/**
- * Queries if the passed bignum instance is a "bigzro". What is a bigzero?
+ * Queries if the passed bignum instance is a "bigzero". What is a bigzero?
* Well, bignums are for very big integers, but can also represent tiny ones
* like -1, 0, 1. Bigzero are instances of bignums whose values are zero.
* Knowing if a bignum is bigzero can be handy on occasions, like for instance
@@ -793,7 +793,7 @@ size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
* @exception rb_eTypeError `val` doesn't respond to `#to_int`.
* @retval (size_t)-1 Overflowed.
* @retval otherwise
- `((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)`,
+ * `((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)`,
* where val_numbits is the number of bits of `abs(val)`.
* @post If `nlz_bits_ret` is not `NULL` and there is no overflow,
* `(return_value * word_numbits - val_numbits)` is stored in
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/class.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/class.h
index 0fb2d001b..357af5d17 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/class.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/class.h
@@ -88,8 +88,8 @@ VALUE rb_define_class_id(ID id, VALUE super);
* @post `outer::id` refers the returned class.
* @note If a class named `id` is already defined and its superclass is
* `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_class_id_under(VALUE outer, ID id, VALUE super);
@@ -127,8 +127,8 @@ VALUE rb_define_module_id(ID id);
* constant is not a module.
* @return The created module.
* @post `outer::id` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_module_id_under(VALUE outer, ID id);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/error.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/error.h
index 9c153cbac..1fd9ec2f5 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/error.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/error.h
@@ -235,7 +235,9 @@ RBIMPL_ATTR_NORETURN()
* @param[in] max Maximum allowed `argc`.
* @exception rb_eArgError Always.
*/
-MJIT_STATIC void rb_error_arity(int argc, int min, int max);
+void rb_error_arity(int argc, int min, int max);
+
+void rb_str_modify(VALUE str);
RBIMPL_SYMBOL_EXPORT_END()
@@ -244,12 +246,7 @@ RBIMPL_SYMBOL_EXPORT_END()
*
* Does anyone use this? Remain not deleted for compatibility.
*/
-#define rb_check_frozen_internal(obj) do { \
- VALUE frozen_obj = (obj); \
- if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { \
- rb_error_frozen_object(frozen_obj); \
- } \
- } while (0)
+#define rb_check_frozen_internal rb_check_frozen
/** @alias{rb_check_frozen} */
static inline void
@@ -258,9 +255,16 @@ rb_check_frozen_inline(VALUE obj)
if (RB_UNLIKELY(RB_OBJ_FROZEN(obj))) {
rb_error_frozen_object(obj);
}
+
+ /* ref: internal CHILLED_STRING_P()
+ This is an implementation detail subject to change. */
+ if (RB_UNLIKELY(RB_TYPE_P(obj, T_STRING) && FL_TEST_RAW(obj, RUBY_FL_USER2 | RUBY_FL_USER3))) { // STR_CHILLED
+ rb_str_modify(obj);
+ }
}
-/** @alias{rb_check_frozen} */
+/* rb_check_frozen() is available as a symbol, but have
+ * the inline version take priority for native consumers. */
#define rb_check_frozen rb_check_frozen_inline
/**
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/gc.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/gc.h
deleted file mode 100644
index 2ee1d257d..000000000
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/gc.h
+++ /dev/null
@@ -1,392 +0,0 @@
-#ifndef RBIMPL_INTERN_GC_H /*-*-C++-*-vi:se ft=cpp:*/
-#define RBIMPL_INTERN_GC_H
-/**
- * @file
- * @author Ruby developers
- * @copyright This file is a part of the programming language Ruby.
- * Permission is hereby granted, to either redistribute and/or
- * modify this file, provided that the conditions mentioned in the
- * file COPYING are met. Consult the file for details.
- * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
- * implementation details. Don't take them as canon. They could
- * rapidly appear then vanish. The name (path) of this header file
- * is also an implementation detail. Do not expect it to persist
- * at the place it is now. Developers are free to move it anywhere
- * anytime at will.
- * @note To ruby-core: remember that this header can be possibly
- * recursively included from extension libraries written in C++.
- * Do not expect for instance `__VA_ARGS__` is always available.
- * We assume C99 for ruby itself but we don't assume languages of
- * extension libraries. They could be written in C++98.
- * @brief Public APIs related to ::rb_mGC.
- */
-#include "ruby/internal/config.h"
-
-#ifdef STDC_HEADERS
-# include /* size_t */
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-# include /* ssize_t */
-#endif
-
-#include "ruby/internal/attr/cold.h"
-#include "ruby/internal/attr/noreturn.h"
-#include "ruby/internal/attr/nonnull.h"
-#include "ruby/internal/attr/pure.h"
-#include "ruby/internal/dllexport.h"
-#include "ruby/internal/value.h"
-
-RBIMPL_SYMBOL_EXPORT_BEGIN()
-
-/* gc.c */
-
-RBIMPL_ATTR_COLD()
-RBIMPL_ATTR_NORETURN()
-/**
- * Triggers out-of-memory error. If possible it raises ::rb_eNoMemError. But
- * because we are running out of memory that is not always doable. This
- * function tries hard to show something, but ultimately can die silently.
- *
- * @exception rb_eNoMemError Raises it if possible.
- */
-void rb_memerror(void);
-
-RBIMPL_ATTR_PURE()
-/**
- * Queries if the GC is busy.
- *
- * @retval 0 It isn't.
- * @retval 1 It is.
- */
-int rb_during_gc(void);
-
-RBIMPL_ATTR_NONNULL((1))
-/**
- * Marks objects between the two pointers. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @pre Continuous memory region from `start` to `end` shall be fully
- * addressable.
- * @param[out] start Pointer to an array of objects.
- * @param[out] end Pointer that terminates the array of objects.
- * @post Objects from `start` (included) to `end` (excluded) are marked.
- *
- * @internal
- *
- * `end` can be NULL... But that just results in no-op.
- */
-void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
-
-/**
- * Identical to rb_mark_hash(), except it marks only values of the table and
- * leave their associated keys unmarked. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Values stored in `tbl` are marked.
- */
-void rb_mark_tbl(struct st_table *tbl);
-
-/**
- * Identical to rb_mark_tbl(), except it marks objects using
- * rb_gc_mark_movable(). This is one of the GC utility functions that you can
- * call when you design your own ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Values stored in `tbl` are marked.
- */
-void rb_mark_tbl_no_pin(struct st_table *tbl);
-
-/**
- * Identical to rb_mark_hash(), except it marks only keys of the table and
- * leave their associated values unmarked. This is one of the GC utility
- * functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @warning Of course it can break GC. Leave it unused if unsure.
- * @param[in] tbl A table to mark.
- * @post Keys stored in `tbl` are marked.
- */
-void rb_mark_set(struct st_table *tbl);
-
-/**
- * Marks keys and values associated inside of the given table. This is one of
- * the GC utility functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @param[in] tbl A table to mark.
- * @post Objects stored in `tbl` are marked.
- */
-void rb_mark_hash(struct st_table *tbl);
-
-/**
- * Updates references inside of tables. After you marked values using
- * rb_mark_tbl_no_pin(), the objects inside of the table could of course be
- * moved. This function is to fixup those references. You can call this from
- * your ::rb_data_type_struct::dcompact.
- *
- * @param[out] ptr A table that potentially includes moved references.
- * @post Moved references, if any, are corrected.
- */
-void rb_gc_update_tbl_refs(st_table *ptr);
-
-/**
- * Identical to rb_gc_mark(), except it allows the passed value be a
- * non-object. For instance pointers to different type of memory regions are
- * allowed here. Such values are silently ignored. This is one of the GC
- * utility functions that you can call when you design your own
- * ::rb_data_type_struct::dmark.
- *
- * @param[out] obj A possible object.
- * @post `obj` is marked, if possible.
- */
-void rb_gc_mark_maybe(VALUE obj);
-
-/**
- * Marks an object. This is one of the GC utility functions that you can call
- * when you design your own ::rb_data_type_struct::dmark.
- *
- * @param[out] obj Arbitrary Ruby object.
- * @post `obj` is marked.
- */
-void rb_gc_mark(VALUE obj);
-
-/**
- * Maybe this is the only function provided for C extensions to control the
- * pinning of objects, so let us describe it in detail. These days Ruby's GC
- * is copying. As far as an object's physical address is guaranteed unused, it
- * can move around the object space. Our GC engine rearranges these objects
- * after it reclaims unreachable objects from our object space, so that the
- * space is compact (improves memory locality). This is called the
- * "compaction" phase, and works well most of the time... as far as there are
- * no C extensions. C extensions complicate the scenario because Ruby core
- * cannot detect any use of the physical address of an object inside of C
- * functions. In order to prevent memory corruptions, objects observable from
- * C extensions are "pinned"; they stick to where they are born until they die,
- * just in case any C extensions touch their raw pointers. This variant of
- * scheme is called "Mostly-Copying" garbage collector. Authors of C
- * extensions, however, can extremely carefully write them to become
- * compaction-aware. To do so avoid referring to a Ruby object from inside of
- * your struct in the first place. But if that is not possible, use this
- * function from your ::rb_data_type_struct::dmark then. This way objects
- * marked using it are considered movable. If you chose this way you have to
- * manually fix up locations of such moved pointers using rb_gc_location().
- *
- * @see Bartlett, Joel F., "Compacting Garbage Collection with Ambiguous
- * Roots", ACM SIGPLAN Lisp Pointers Volume 1 Issue 6 pp. 3-12,
- * April-May-June, 1988. https://doi.org/10.1145/1317224.1317225
- *
- * @param[in] obj Object that is movable.
- * @post Values stored in `tbl` are marked.
- */
-void rb_gc_mark_movable(VALUE obj);
-
-/**
- * Finds a new "location" of an object. An object can be moved on compaction.
- * This function projects its new abode, or just returns the passed object if
- * not moved. This is one of the GC utility functions that you can call when
- * you design your own ::rb_data_type_struct::dcompact.
- *
- * @param[in] obj An object, possibly already moved to somewhere else.
- * @return An object, which holds the current contents of former `obj`.
- */
-VALUE rb_gc_location(VALUE obj);
-
-/**
- * Asserts that the passed object is no longer needed. Such objects are
- * reclaimed sooner or later so this function is not mandatory. But sometimes
- * you can know from your application knowledge that an object is surely dead
- * at some point. Calling this as a hint can be a polite way.
- *
- * @param[out] obj Object, dead.
- * @pre `obj` have never been passed to this function before.
- * @post `obj` could be invalidated.
- * @warning It is a failure to pass an object multiple times to this
- * function.
- * @deprecated This is now a no-op function.
- */
-RBIMPL_ATTR_DEPRECATED(("this is now a no-op function"))
-void rb_gc_force_recycle(VALUE obj);
-
-/**
- * Triggers a GC process. This was the only GC entry point that we had at the
- * beginning. Over time our GC evolved. Now what this function does is just a
- * very simplified variation of the entire GC algorithms. A series of
- * procedures kicked by this API is called a "full" GC.
- *
- * - It immediately scans the entire object space to sort the dead.
- * - It immediately reclaims any single dead bodies to reuse later.
- *
- * It is worth noting that the procedures above do not include evaluations of
- * finalisers. They run later.
- *
- * @internal
- *
- * Finalisers are deferred until we can handle interrupts. See
- * `rb_postponed_job_flush` in vm_trace.c.
- *
- * Of course there are GC that are not "full". For instance this one and the
- * GC which runs when we are running out of memory are different. See
- * `gc_profile_record_flag` defined in gc.c for the kinds of GC.
- *
- * In spite of the name this is not what everything that a GC can trigger. As
- * of writing it seems this function does not trigger compaction. But this
- * might change in future.
- */
-void rb_gc(void);
-
-/**
- * Copy&paste an object's finaliser to another. This is one of the GC utility
- * functions that you can call when you design your own `initialize_copy`,
- * `initialize_dup`, `initialize_clone`.
- *
- * @param[out] dst Destination object.
- * @param[in] src Source object.
- * @post `dst` and `src` share the same finaliser.
- *
- * @internal
- *
- * But isn't it easier for you to call super, and let `Object#initialize_copy`
- * call this function instead?
- */
-void rb_gc_copy_finalizer(VALUE dst, VALUE src);
-
-/**
- * (Re-) enables GC. This makes sense only after you called rb_gc_disable().
- *
- * @retval RUBY_Qtrue GC was disabled before.
- * @retval RUBY_Qfalse GC was enabled before.
- * @post GC is enabled.
- *
- * @internal
- *
- * This is one of such exceptional functions that does not raise both Ruby
- * exceptions and C++ exceptions.
- */
-VALUE rb_gc_enable(void);
-
-/**
- * Disables GC. This prevents automatic GC runs when the process is running
- * out of memory. Such situations shall result in rb_memerror(). However this
- * does not prevent users from manually invoking rb_gc(). That should work.
- * People abused this by disabling GC at the beginning of an event loop,
- * process events without GC overheads, then manually force reclaiming garbage
- * at the bottom of the loop. However because our GC is now much smarter than
- * just calling rb_gc(), this technique is proven to be sub-optimal these days.
- * It is believed that there is currently practically no needs of this
- * function.
- *
- * @retval RUBY_Qtrue GC was disabled before.
- * @retval RUBY_Qfalse GC was enabled before.
- * @post GC is disabled.
- */
-VALUE rb_gc_disable(void);
-
-/**
- * Identical to rb_gc(), except the return value.
- *
- * @return Always returns ::RUBY_Qnil.
- */
-VALUE rb_gc_start(void);
-
-/**
- * Assigns a finaliser for an object. Each objects can have objects (typically
- * blocks) that run immediately after that object dies. They are called
- * finalisers of an object. This function associates a finaliser object with a
- * target object.
- *
- * @note Note that finalisers run _after_ the object they finalise dies. You
- * cannot for instance call its methods.
- * @note If your finaliser references the object it finalises that object
- * loses any chance to become a garbage; effectively leaks memory until
- * the end of the process.
- *
- * @param[in] obj Target to finalise.
- * @param[in] block Something `call`able.
- * @exception rb_eRuntimeError Somehow `obj` cannot have finalisers.
- * @exception rb_eFrozenError `obj` is frozen.
- * @exception rb_eArgError `block` doesn't respond to `call`.
- * @return The passed `block`.
- * @post `block` runs after `obj` dies.
- */
-VALUE rb_define_finalizer(VALUE obj, VALUE block);
-
-/**
- * Modifies the object so that it has no finalisers at all. This function is
- * mainly provided for symmetry. No practical usages can be thought of.
- *
- * @param[out] obj Object to clear its finalisers.
- * @exception rb_eFrozenError `obj` is frozen.
- * @return The passed `obj`.
- * @post `obj` has no finalisers.
- * @note There is no way to undefine a specific part of many finalisers
- * that `obj` could have. All you can do is to clear them all.
- */
-VALUE rb_undefine_finalizer(VALUE obj);
-
-/**
- * Identical to rb_gc_stat(), with "count" parameter.
- *
- * @return Lifetime total number of runs of GC.
- */
-size_t rb_gc_count(void);
-
-/**
- * Obtains various GC related profiles. The parameter can be either a Symbol
- * or a Hash. If a Hash is passed, it is filled with everything currently
- * available. If a Symbol is passed just that portion is returned.
- *
- * Possible variations of keys you can pass here change from version to
- * version. You can get the list of known keys by passing an empty hash and
- * let it be filled.
- *
- * @param[in,out] key_or_buf A Symbol, or a Hash.
- * @exception rb_eTypeError Neither Symbol nor Hash.
- * @exception rb_eFrozenError Frozen hash is passed.
- * @return In case a Hash is passed it returns 0. Otherwise the
- * profile value associated with the given key is returned.
- * @post In case a Hash is passed it is filled with values.
- */
-size_t rb_gc_stat(VALUE key_or_buf);
-
-/**
- * Obtains various info regarding the most recent GC run. This includes for
- * instance the reason of the GC. The parameter can be either a Symbol or a
- * Hash. If a Hash is passed, it is filled with everything currently
- * available. If a Symbol is passed just that portion is returned.
- *
- * Possible variations of keys you can pass here change from version to
- * version. You can get the list of known keys by passing an empty hash and
- * let it be filled.
- *
- * @param[in,out] key_or_buf A Symbol, or a Hash.
- * @exception rb_eTypeError Neither Symbol nor Hash.
- * @exception rb_eFrozenError Frozen hash is passed.
- * @return In case a Hash is passed it returns that hash. Otherwise
- * the profile value associated with the given key is returned.
- * @post In case a Hash is passed it is filled with values.
- */
-VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
-
-/**
- * Informs that there are external memory usages. Our GC runs when we are
- * running out of memory. The amount of memory, however, can increase/decrease
- * behind-the-scene. For instance DLLs can allocate memories using `mmap(2)`
- * etc, which are opaque to us. Registering such external allocations using
- * this function enables proper detection of how much memories an object used
- * as a whole. That will trigger GCs more often than it would otherwise. You
- * can also pass negative numbers here, to indicate that such external
- * allocations are gone.
- *
- * @param[in] diff Amount of memory increased(+)/decreased(-).
- */
-void rb_gc_adjust_memory_usage(ssize_t diff);
-
-RBIMPL_SYMBOL_EXPORT_END()
-
-#endif /* RBIMPL_INTERN_GC_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/io.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/io.h
index 02c249723..b9eb258cc 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/io.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/io.h
@@ -385,7 +385,7 @@ VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io);
* @param[in] fd Target file descriptor.
* @param[in] flags Flags, e.g. `O_CREAT|O_EXCL`
* @param[in] path The path of the file that backs `fd`, for diagnostics.
- * @return An allocated instance of ::rb_cIO.
+ * @return An allocated instance of ::rb_cIO with the autoclose flag set.
* @note Leave `path` NULL if you don't know.
*/
VALUE rb_io_fdopen(int fd, int flags, const char *path);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/load.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/load.h
index 288a16c2e..9ceb98c2e 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/load.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/load.h
@@ -176,6 +176,43 @@ VALUE rb_f_require(VALUE self, VALUE feature);
*/
VALUE rb_require_string(VALUE feature);
+/**
+ * Resolves and returns a symbol of a function in the native extension
+ * specified by the feature and symbol names. Extensions will use this function
+ * to access the symbols provided by other native extensions.
+ *
+ * @param[in] feature Name of a feature, e.g. `"json"`.
+ * @param[in] symbol Name of a symbol defined by the feature.
+ * @return The resolved symbol of a function, defined and externed by the
+ * specified feature. It may be NULL if the feature is not loaded,
+ * the feature is not extension, or the symbol is not found.
+ */
+void *rb_ext_resolve_symbol(const char *feature, const char *symbol);
+
+/**
+ * This macro is to provide backwards compatibility. It provides a way to
+ * define function prototypes and resolving function symbols in a safe way.
+ *
+ * ```CXX
+ * // prototypes
+ * #ifdef HAVE_RB_EXT_RESOLVE_SYMBOL
+ * VALUE *(*other_extension_func)(VALUE,VALUE);
+ * #else
+ * VALUE other_extension_func(VALUE);
+ * #endif
+ *
+ * // in Init_xxx()
+ * #ifdef HAVE_RB_EXT_RESOLVE_SYMBOL
+ * other_extension_func = \
+ * (VALUE(*)(VALUE,VALUE))rb_ext_resolve_symbol(fname, sym_name);
+ * if (other_extension_func == NULL) {
+ * // raise your own error
+ * }
+ * #endif
+ * ```
+ */
+#define HAVE_RB_EXT_RESOLVE_SYMBOL 1
+
/**
* @name extension configuration
* @{
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/object.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/object.h
index b9ffa57c0..9daad7d04 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/object.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/object.h
@@ -151,13 +151,12 @@ VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
* @return An allocated, not yet initialised instance of `klass`.
* @note It calls the allocator defined by rb_define_alloc_func(). You
* cannot use this function to define an allocator. Use
- * rb_newobj_of(), #TypedData_Make_Struct or others, instead.
+ * TypedData_Make_Struct or others, instead.
* @note Usually prefer rb_class_new_instance() to rb_obj_alloc() and
* rb_obj_call_init().
* @see rb_class_new_instance()
* @see rb_obj_call_init()
* @see rb_define_alloc_func()
- * @see rb_newobj_of()
* @see #TypedData_Make_Struct
*/
VALUE rb_obj_alloc(VALUE klass);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/process.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/process.h
index 7a7b24ed4..cfa5e1316 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/process.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/process.h
@@ -30,6 +30,15 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
/* process.c */
+/**
+ * Wait for the specified process to terminate, reap it, and return its status.
+ *
+ * @param[in] pid The process ID to wait for.
+ * @param[in] flags The flags to pass to waitpid(2).
+ * @return VALUE An instance of Process::Status.
+ */
+VALUE rb_process_status_wait(rb_pid_t pid, int flags);
+
/**
* Sets the "last status", or the `$?`.
*
@@ -247,7 +256,7 @@ rb_pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen);
*
* @internal
*
- * This function might or might not exist depending on `./confiugre` result.
+ * This function might or might not exist depending on `./configure` result.
* It must be a portability hell. Better not use.
*/
VALUE rb_proc_times(VALUE _);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/re.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/re.h
index 31f559327..4dd58b469 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/re.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/re.h
@@ -87,11 +87,6 @@ void rb_match_busy(VALUE md);
* @retval RUBY_Qfalse There is a `n`-th capture and is empty.
* @retval RUBY_Qtrue There is a `n`-th capture that has something.
*
- * @internal
- *
- * @shyouhei wonders: why there are both rb_reg_match_defined() and
- * rb_match_nth_defined, which are largely the same things, but do not share
- * their implementations at all?
*/
VALUE rb_reg_nth_defined(int n, VALUE md);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select.h
index fabc287cd..6ba84c6e6 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select.h
@@ -76,7 +76,7 @@ struct timeval;
*
* Although any file descriptors are possible here, it makes completely no
* sense to pass a descriptor that is not `O_NONBLOCK`. If you want to know
- * the reason for this limitatuon in detail, you might find this thread super
+ * the reason for this limitation in detail, you might find this thread super
* interesting: https://lkml.org/lkml/2004/10/6/117
*/
int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select/win32.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select/win32.h
index edaf7a852..b7301e63f 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select/win32.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/select/win32.h
@@ -206,7 +206,7 @@ rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src)
* property we heavily touch the internals of MSVCRT. We `CreateFile` a
* `"NUL"` alongside of a socket and directly manipulate its `struct ioinfo`.
* This is of course a very dirty hack. If we could design the API today we
- * could use `CancellIoEx`. But we are older than that Win32 API.
+ * could use `CancelIoEx`. But we are older than that Win32 API.
*/
static inline int
rb_fd_select(int n, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout)
@@ -253,7 +253,7 @@ rb_fd_max(const rb_fdset_t *f)
const fd_set *p = f->fdset;
RBIMPL_ASSERT_OR_ASSUME(p);
- return p->fd_count;
+ return RBIMPL_CAST((int)p->fd_count);
}
#endif /* RBIMPL_INTERN_SELECT_WIN32_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/signal.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/signal.h
index 84f755840..477378865 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/signal.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/signal.h
@@ -97,7 +97,7 @@ RBIMPL_ATTR_NONNULL(())
* - Case #11: When signo and PID are both negative, the behaviour of this
* function depends on how `killpg(3)` works. On Linux, it seems such
* attempt is strictly prohibited and `Errno::EINVAL` is raised. But on
- * macOS, it seems it tries to to send the signal actually to the process
+ * macOS, it seems it tries to send the signal actually to the process
* group.
*
* @note Above description is in fact different from how `kill(2)` works.
@@ -113,12 +113,6 @@ RBIMPL_ATTR_NONNULL(())
*/
VALUE rb_f_kill(int argc, const VALUE *argv);
-/* This must be private, @shyouhei guesses. */
-#ifdef POSIX_SIGNAL
-#define posix_signal ruby_posix_signal
-void (*posix_signal(int, void (*)(int)))(int);
-#endif
-
RBIMPL_ATTR_PURE()
/**
* Queries the name of the signal. It returns for instance `"KILL"` for
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/string.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/string.h
index 3083125e5..4573ec126 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/string.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/string.h
@@ -412,7 +412,7 @@ VALUE rb_utf8_str_new_static(const char *ptr, long len);
/**
* Identical to rb_interned_str(), except it takes a Ruby's string instead of
- * C's. It can also be seen as a routine identical to to rb_str_new_shared(),
+ * C's. It can also be seen as a routine identical to rb_str_new_shared(),
* except it returns an infamous "f"string.
*
* @param[in] str An object of ::RString.
@@ -454,7 +454,7 @@ VALUE rb_interned_str(const char *ptr, long len);
RBIMPL_ATTR_NONNULL(())
/**
* Identical to rb_interned_str(), except it assumes the passed pointer is a
- * pointer to a C's string. It can also be seen as a routine identical to to
+ * pointer to a C's string. It can also be seen as a routine identical to
* rb_str_to_interned_str(), except it takes a C's string instead of Ruby's.
* Or it can also be seen as a routine identical to rb_str_new_cstr(), except
* it returns an infamous "f"string.
@@ -1686,10 +1686,10 @@ rbimpl_exc_new_cstr(VALUE exc, const char *str)
* Length of a string literal.
*
* @param[in] str A C String literal.
- * @return An integer constant expression that represents `str`'s length,
- * in bytes, not including the terminating NUL character.
+ * @return An integer constant expression that represents the number of
+ * `str`'s elements, not including the terminating NUL character.
*/
-#define rb_strlen_lit(str) (sizeof(str "") - 1)
+#define rb_strlen_lit(str) ((sizeof(str "") / sizeof(str ""[0])) - 1)
/**
* Identical to rb_str_new_static(), except it cannot take string variables.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/struct.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/struct.h
index 312cf444e..16b3fad4e 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/struct.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/struct.h
@@ -46,14 +46,16 @@ VALUE rb_struct_new(VALUE klass, ...);
*
* @param[in] name Name of the class.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post Global toplevel constant `name` is defined.
* @note `name` is allowed to be a null pointer. This function creates
* an anonymous struct class then.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -70,14 +72,16 @@ RBIMPL_ATTR_NONNULL((2))
* @param[out] space Namespace that the defining class shall reside.
* @param[in] name Name of the class.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post `name` is a constant under `space`.
* @note In contrast to rb_struct_define(), it doesn't make any sense to
* pass a null pointer to this function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_struct_define_under(VALUE space, const char *name, ...);
@@ -164,10 +168,10 @@ VALUE rb_struct_alloc_noinit(VALUE klass);
* @param[in] super Superclass of the defining class.
* @param[in] func Must be 0 for extension libraries.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `name` is not a constant name.
* @exception rb_eTypeError `name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post Global toplevel constant `name` is defined.
* @note `name` is allowed to be a null pointer. This function creates
@@ -187,17 +191,35 @@ RBIMPL_ATTR_NONNULL((2))
* @param[in] super Superclass of the defining class.
* @param[in] alloc Must be 0 for extension libraries.
* @param[in] ... Arbitrary number of `const char*`, terminated by
- * zero. Each of which are the name of fields.
+ * NULL. Each of which are the name of fields.
* @exception rb_eNameError `class_name` is not a constant name.
* @exception rb_eTypeError `class_name` is already taken.
- * @exception rb_eArgError Duplicated field name.
+ * @exception rb_eArgError Duplicated field name.
* @return The defined class.
* @post `class_name` is a constant under `outer`.
* @note In contrast to rb_struct_define_without_accessor(), it doesn't
* make any sense to pass a null name.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
+/**
+ * Defines an anonymous data class.
+ *
+ * @endinternal
+ *
+ * @param[in] super Superclass of the defining class. Must be a
+ * descendant of ::rb_cData, or 0 as ::rb_cData.
+ * @param[in] ... Arbitrary number of `const char*`, terminated by
+ * NULL. Each of which are the name of fields.
+ * @exception rb_eArgError Duplicated field name.
+ * @return The defined class.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
+ */
+VALUE rb_data_define(VALUE super, ...);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RBIMPL_INTERN_STRUCT_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/vm.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/vm.h
index 76af796b5..29e0c7f53 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/vm.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/intern/vm.h
@@ -229,8 +229,7 @@ void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func);
* restrict creation of an instance of a class. For example it rarely makes
* sense for a DB adaptor class to allow programmers creating DB row objects
* without querying the DB itself. You can kill sporadic creation of such
- * objects then, by nullifying the allocator function using this API. Your
- * object shall be allocated using #RB_NEWOBJ_OF() directly.
+ * objects then, by nullifying the allocator function using this API.
*
* @param[out] klass The class to modify.
* @pre `klass` must be an instance of Class.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/interpreter.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/interpreter.h
index 662d39c0e..a10e7ad2d 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/interpreter.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/interpreter.h
@@ -141,7 +141,7 @@ void ruby_show_copyright(void);
*
* @param[in] addr A pointer somewhere on the stack, near its bottom.
*/
-void ruby_init_stack(volatile VALUE *addr);
+void ruby_init_stack(void *addr);
/**
* Initializes the VM and builtin libraries.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/memory.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/memory.h
index 6884db195..cd099f85d 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/memory.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/memory.h
@@ -40,7 +40,12 @@
#if defined(_MSC_VER) && defined(_WIN64)
# include
+# if defined(_M_AMD64)
# pragma intrinsic(_umul128)
+# endif
+# if defined(_M_ARM64)
+# pragma intrinsic(__umulh)
+# endif
#endif
#include "ruby/internal/attr/alloc_size.h"
@@ -56,13 +61,14 @@
#include "ruby/internal/has/builtin.h"
#include "ruby/internal/stdalign.h"
#include "ruby/internal/stdbool.h"
+#include "ruby/internal/stdckdint.h"
#include "ruby/internal/xmalloc.h"
#include "ruby/backward/2/limits.h"
#include "ruby/backward/2/long_long.h"
#include "ruby/backward/2/assume.h"
#include "ruby/defines.h"
-/** @cond INTENAL_MACRO */
+/** @cond INTERNAL_MACRO */
/* Make alloca work the best possible way. */
#if defined(alloca)
@@ -402,7 +408,8 @@ typedef uint128_t DSIZE_T;
/**
* @private
*
- * This is an implementation detail of rbimpl_size_mul_overflow().
+ * This is an implementation detail of rbimpl_size_mul_overflow() and
+ * rbimpl_size_add_overflow().
*
* @internal
*
@@ -410,9 +417,9 @@ typedef uint128_t DSIZE_T;
* nothing more than std::variant if we could use recent C++, but
* reality is we cannot.
*/
-struct rbimpl_size_mul_overflow_tag {
- bool left; /**< Whether overflow happened or not. */
- size_t right; /**< Multiplication result. */
+struct rbimpl_size_overflow_tag {
+ bool overflowed; /**< Whether overflow happened or not. */
+ size_t result; /**< Calculation result. */
};
RBIMPL_SYMBOL_EXPORT_BEGIN()
@@ -482,6 +489,18 @@ RBIMPL_ATTR_NORETURN()
*/
void ruby_malloc_size_overflow(size_t x, size_t y);
+RBIMPL_ATTR_NORETURN()
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @exception rb_eArgError `x` + `y` would integer overflow.
+ */
+void ruby_malloc_add_size_overflow(size_t x, size_t y);
+
#ifdef HAVE_RB_GC_GUARDED_PTR_VAL
volatile VALUE *rb_gc_guarded_ptr_val(volatile VALUE *ptr, VALUE val);
#endif
@@ -554,39 +573,46 @@ RBIMPL_ATTR_CONST()
*
* @param[in] x Arbitrary value.
* @param[in] y Arbitrary value.
- * @return `{ left, right }`, where `left` is whether there is an integer
- * overflow or not, and `right` is a (possibly overflowed) result
- * of `x` * `y`.
+ * @return `{ overflowed, result }`, where `overflowed` is whether there is
+ * an integer overflow or not, and `result` is a (possibly
+ * overflowed) result of `x` * `y`.
*
* @internal
*
* This is in fact also an implementation detail of ruby_xmalloc2() etc.
*/
-static inline struct rbimpl_size_mul_overflow_tag
+static inline struct rbimpl_size_overflow_tag
rbimpl_size_mul_overflow(size_t x, size_t y)
{
- struct rbimpl_size_mul_overflow_tag ret = { false, 0, };
+ struct rbimpl_size_overflow_tag ret = { false, 0, };
+
+#if defined(ckd_mul)
+ ret.overflowed = ckd_mul(&ret.result, x, y);
-#if RBIMPL_HAS_BUILTIN(__builtin_mul_overflow)
- ret.left = __builtin_mul_overflow(x, y, &ret.right);
+#elif RBIMPL_HAS_BUILTIN(__builtin_mul_overflow)
+ ret.overflowed = __builtin_mul_overflow(x, y, &ret.result);
#elif defined(DSIZE_T)
RB_GNUC_EXTENSION DSIZE_T dx = x;
RB_GNUC_EXTENSION DSIZE_T dy = y;
RB_GNUC_EXTENSION DSIZE_T dz = dx * dy;
- ret.left = dz > SIZE_MAX;
- ret.right = RBIMPL_CAST((size_t)dz);
+ ret.overflowed = dz > SIZE_MAX;
+ ret.result = RBIMPL_CAST((size_t)dz);
-#elif defined(_MSC_VER) && defined(_WIN64)
+#elif defined(_MSC_VER) && defined(_M_AMD64)
unsigned __int64 dp = 0;
unsigned __int64 dz = _umul128(x, y, &dp);
- ret.left = RBIMPL_CAST((bool)dp);
- ret.right = RBIMPL_CAST((size_t)dz);
+ ret.overflowed = RBIMPL_CAST((bool)dp);
+ ret.result = RBIMPL_CAST((size_t)dz);
+
+#elif defined(_MSC_VER) && defined(_M_ARM64)
+ ret.overflowed = __umulh(x, y) != 0;
+ ret.result = x * y;
#else
/* https://wiki.sei.cmu.edu/confluence/display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap */
- ret.left = (y != 0) && (x > SIZE_MAX / y);
- ret.right = x * y;
+ ret.overflowed = (y != 0) && (x > SIZE_MAX / y);
+ ret.result = x * y;
#endif
return ret;
@@ -610,11 +636,11 @@ rbimpl_size_mul_overflow(size_t x, size_t y)
static inline size_t
rbimpl_size_mul_or_raise(size_t x, size_t y)
{
- struct rbimpl_size_mul_overflow_tag size =
+ struct rbimpl_size_overflow_tag size =
rbimpl_size_mul_overflow(x, y);
- if (RB_LIKELY(! size.left)) {
- return size.right;
+ if (RB_LIKELY(! size.overflowed)) {
+ return size.result;
}
else {
ruby_malloc_size_overflow(x, y);
@@ -622,6 +648,81 @@ rbimpl_size_mul_or_raise(size_t x, size_t y)
}
}
+#if defined(__DOXYGEN__)
+RBIMPL_ATTR_CONSTEXPR(CXX14)
+#elif RBIMPL_COMPILER_SINCE(GCC, 7, 0, 0)
+RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70507 */
+#elif RBIMPL_COMPILER_SINCE(Clang, 7, 0, 0)
+RBIMPL_ATTR_CONSTEXPR(CXX14) /* https://bugs.llvm.org/show_bug.cgi?id=37633 */
+#endif
+RBIMPL_ATTR_CONST()
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @return `{ overflowed, result }`, where `overflowed` is whether there is
+ * an integer overflow or not, and `result` is a (possibly
+ * overflowed) result of `x` + `y`.
+ *
+ * @internal
+ */
+static inline struct rbimpl_size_overflow_tag
+rbimpl_size_add_overflow(size_t x, size_t y)
+{
+ struct rbimpl_size_overflow_tag ret = { false, 0, };
+
+#if defined(ckd_add)
+ ret.overflowed = ckd_add(&ret.result, x, y);
+
+#elif RBIMPL_HAS_BUILTIN(__builtin_add_overflow)
+ ret.overflowed = __builtin_add_overflow(x, y, &ret.result);
+
+#elif defined(DSIZE_T)
+ RB_GNUC_EXTENSION DSIZE_T dx = x;
+ RB_GNUC_EXTENSION DSIZE_T dy = y;
+ RB_GNUC_EXTENSION DSIZE_T dz = dx + dy;
+ ret.overflowed = dz > SIZE_MAX;
+ ret.result = (size_t)dz;
+
+#else
+ ret.result = x + y;
+ ret.overflowed = ret.result < y;
+
+#endif
+
+ return ret;
+}
+
+/**
+ * @private
+ *
+ * This is an implementation detail. People don't use this directly.
+ *
+ * @param[in] x Arbitrary value.
+ * @param[in] y Arbitrary value.
+ * @exception rb_eArgError Multiplication could integer overflow.
+ * @return `x` + `y`.
+ *
+ * @internal
+ */
+static inline size_t
+rbimpl_size_add_or_raise(size_t x, size_t y)
+{
+ struct rbimpl_size_overflow_tag size =
+ rbimpl_size_add_overflow(x, y);
+
+ if (RB_LIKELY(!size.overflowed)) {
+ return size.result;
+ }
+ else {
+ ruby_malloc_add_size_overflow(x, y);
+ RBIMPL_UNREACHABLE_RETURN(0);
+ }
+}
+
/**
* This is an implementation detail of #RB_ALLOCV_N(). People don't use this
* directly.
@@ -639,7 +740,7 @@ rbimpl_size_mul_or_raise(size_t x, size_t y)
static inline void *
rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
{
- const size_t total_size = rbimpl_size_mul_or_raise(count, elsize);
+ const size_t total_size = rbimpl_size_mul_or_raise(RBIMPL_CAST((size_t)count), elsize);
const size_t cnt = (total_size + sizeof(VALUE) - 1) / sizeof(VALUE);
return rb_alloc_tmp_buffer_with_count(store, total_size, cnt);
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/module.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/module.h
index d678dd210..97b0b2b8b 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/module.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/module.h
@@ -56,8 +56,8 @@ RBIMPL_ATTR_NONNULL(())
* @post Top-level constant named `name` refers the returned class.
* @note If a class named `name` is already defined and its superclass is
* `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -75,8 +75,8 @@ RBIMPL_ATTR_NONNULL(())
* constant is not a module.
* @return The created module.
* @post Top-level constant named `name` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move modules returned by this
+ * function. They are immortal.
*
* @internal
*
@@ -103,8 +103,8 @@ RBIMPL_ATTR_NONNULL(())
* @post `outer::name` refers the returned class.
* @note If a class named `name` is already defined and its superclass
* is `super`, the function just returns the defined class.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move classes returned by this
+ * function. They are immortal.
*/
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super);
@@ -118,8 +118,8 @@ RBIMPL_ATTR_NONNULL(())
* the constant is not a class.
* @return The created module.
* @post `outer::name` refers the returned module.
- * @note The compaction GC does not move classes returned by this
- * function.
+ * @note The GC does not collect nor move modules returned by this
+ * function. They are immortal.
*/
VALUE rb_define_module_under(VALUE outer, const char *name);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/newobj.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/newobj.h
index a8a5557a2..6eee2fa5f 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/newobj.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/newobj.h
@@ -29,63 +29,14 @@
#include "ruby/internal/value.h"
#include "ruby/assert.h"
-/**
- * Declares, allocates, then assigns a new object to the given variable.
- *
- * @param obj Variable name.
- * @param type Variable type.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, not initialised.
- * @note Modern programs tend to use #NEWOBJ_OF instead.
- *
- * @internal
- *
- * :FIXME: Should we deprecate it?
- */
-#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj())
-
-/**
- * Identical to #RB_NEWOBJ, except it also accepts the allocating object's
- * class and flags.
- *
- * @param obj Variable name.
- * @param type Variable type.
- * @param klass Object's class.
- * @param flags Object's flags.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, filled with the arguments.
- */
-#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags))
-
-#define NEWOBJ RB_NEWOBJ /**< @old{RB_NEWOBJ} */
-#define NEWOBJ_OF RB_NEWOBJ_OF /**< @old{RB_NEWOBJ_OF} */
#define OBJSETUP rb_obj_setup /**< @old{rb_obj_setup} */
#define CLONESETUP rb_clone_setup /**< @old{rb_clone_setup} */
#define DUPSETUP rb_dup_setup /**< @old{rb_dup_setup} */
RBIMPL_SYMBOL_EXPORT_BEGIN()
-/**
- * This is the implementation detail of #RB_NEWOBJ.
- *
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, not initialised.
- */
-VALUE rb_newobj(void);
-
-/**
- * This is the implementation detail of #RB_NEWOBJ_OF.
- *
- * @param klass Object's class.
- * @param flags Object's flags.
- * @exception rb_eNoMemError No space left.
- * @return An allocated object, filled with the arguments.
- */
-VALUE rb_newobj_of(VALUE klass, VALUE flags);
-
/**
* Fills common fields in the object.
*
- * @note Prefer rb_newobj_of() to this function.
* @param[in,out] obj A Ruby object to be set up.
* @param[in] klass `obj` will belong to this class.
* @param[in] type One of ::ruby_value_type.
@@ -172,6 +123,8 @@ RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#clone works."))
static inline void
rb_clone_setup(VALUE clone, VALUE obj)
{
+ (void)clone;
+ (void)obj;
return;
}
@@ -189,6 +142,8 @@ RBIMPL_ATTR_DEPRECATED(("This is no longer how Object#dup works."))
static inline void
rb_dup_setup(VALUE dup, VALUE obj)
{
+ (void)dup;
+ (void)obj;
return;
}
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/rgengc.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/rgengc.h
deleted file mode 100644
index 7ea04442f..000000000
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/rgengc.h
+++ /dev/null
@@ -1,443 +0,0 @@
-#ifndef RBIMPL_RGENGC_H /*-*-C++-*-vi:se ft=cpp:*/
-#define RBIMPL_RGENGC_H
-/**
- * @file
- * @author Ruby developers
- * @copyright This file is a part of the programming language Ruby.
- * Permission is hereby granted, to either redistribute and/or
- * modify this file, provided that the conditions mentioned in the
- * file COPYING are met. Consult the file for details.
- * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
- * implementation details. Don't take them as canon. They could
- * rapidly appear then vanish. The name (path) of this header file
- * is also an implementation detail. Do not expect it to persist
- * at the place it is now. Developers are free to move it anywhere
- * anytime at will.
- * @note To ruby-core: remember that this header can be possibly
- * recursively included from extension libraries written in C++.
- * Do not expect for instance `__VA_ARGS__` is always available.
- * We assume C99 for ruby itself but we don't assume languages of
- * extension libraries. They could be written in C++98.
- * @brief RGENGC write-barrier APIs.
- * @see Sasada, K., "Gradual write-barrier insertion into a Ruby
- * interpreter", in proceedings of the 2019 ACM SIGPLAN
- * International Symposium on Memory Management (ISMM 2019), pp
- * 115-121, 2019. https://doi.org/10.1145/3315573.3329986
- */
-#include "ruby/internal/attr/artificial.h"
-#include "ruby/internal/attr/maybe_unused.h"
-#include "ruby/internal/attr/pure.h"
-#include "ruby/internal/dllexport.h"
-#include "ruby/internal/special_consts.h"
-#include "ruby/internal/stdbool.h"
-#include "ruby/internal/value.h"
-#include "ruby/assert.h"
-
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- */
-#undef USE_RGENGC
-#define USE_RGENGC 1
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable incremental GC feature. It
- * has to be set at the time ruby itself compiles. Makes no sense for 3rd
- * parties. It is safe for them to set this though; that just doesn't change
- * anything.
- */
-#ifndef USE_RINCGC
-# define USE_RINCGC 1
-#endif
-
-/**
- * @deprecated This macro seems broken. Setting this to anything other than
- * zero just doesn't compile. We need to KonMari.
- */
-#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT
-# define USE_RGENGC_LOGGING_WB_UNPROTECT 0
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RArray. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_ARRAY
-# define RGENGC_WB_PROTECTED_ARRAY 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RHash. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_HASH
-# define RGENGC_WB_PROTECTED_HASH 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RStruct. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_STRUCT
-# define RGENGC_WB_PROTECTED_STRUCT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RString. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_STRING
-# define RGENGC_WB_PROTECTED_STRING 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RObject. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_OBJECT
-# define RGENGC_WB_PROTECTED_OBJECT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RRegexp. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_REGEXP
-# define RGENGC_WB_PROTECTED_REGEXP 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RClass. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_CLASS
-# define RGENGC_WB_PROTECTED_CLASS 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RFloat. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_FLOAT
-# define RGENGC_WB_PROTECTED_FLOAT 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RComplex. It has to be set at the time ruby itself compiles.
- * Makes no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_COMPLEX
-# define RGENGC_WB_PROTECTED_COMPLEX 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RRational. It has to be set at the time ruby itself compiles.
- * Makes no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_RATIONAL
-# define RGENGC_WB_PROTECTED_RATIONAL 1
-#endif
-
-/**
- * @private
- *
- * This is a compile-time flag to enable/disable write barrier for
- * struct ::RBignum. It has to be set at the time ruby itself compiles. Makes
- * no sense for 3rd parties.
- */
-#ifndef RGENGC_WB_PROTECTED_BIGNUM
-# define RGENGC_WB_PROTECTED_BIGNUM 1
-#endif
-
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- *
- * @internal
- *
- * @shyouhei doesn't think anybody uses this right now.
- */
-#ifndef RGENGC_WB_PROTECTED_NODE_CREF
-# define RGENGC_WB_PROTECTED_NODE_CREF 1
-#endif
-
-/**
- * @defgroup rgengc Write barrier (WB) interfaces:
- *
- * @note The following core interfaces can be changed in the future. Please
- * catch up if you want to insert WB into C-extensions correctly.
- *
- * @{
- */
-
-/**
- * Declaration of a "back" pointer. This is a write barrier for new reference
- * from "old" generation to "young" generation. It writes `young` into
- * `*slot`, which is a pointer inside of `old`.
- *
- * @param[in] old An old object.
- * @param[in] slot A pointer inside of `old`.
- * @param[out] young A young object.
- */
-#define RB_OBJ_WRITE(old, slot, young) \
- RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
-
-/**
- * Identical to #RB_OBJ_WRITE(), except it doesn't write any values, but only a
- * WB declaration. `oldv` is replaced value with `b` (not used in current
- * Ruby).
- *
- * @param[in] old An old object.
- * @param[in] oldv An object previously stored inside of `old`.
- * @param[out] young A young object.
- */
-#define RB_OBJ_WRITTEN(old, oldv, young) \
- RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
-/** @} */
-
-#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW /**< @old{RB_OBJ_PROMOTED_RAW} */
-#define OBJ_PROMOTED RB_OBJ_PROMOTED /**< @old{RB_OBJ_PROMOTED} */
-#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT /**< @old{RB_OBJ_WB_UNPROTECT} */
-
-/**
- * Asserts that the passed object is not fenced by write barriers. Objects of
- * such property do not contribute to generational GCs. They are scanned
- * always.
- *
- * @param[out] x An object that would not be protected by the barrier.
- */
-#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
-
-/**
- * Identical to #RB_OBJ_WB_UNPROTECT(), except it can also assert that the
- * given object is of given type.
- *
- * @param[in] type One of `ARRAY`, `STRING`, etc.
- * @param[out] obj An object of `type` that would not be protected.
- *
- * @internal
- *
- * @shyouhei doesn't understand why this has to be visible from extensions.
- */
-#define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \
- (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj)
-
-/**
- * @private
- *
- * This is an implementation detail of rb_obj_wb_unprotect(). People don't use
- * it directly.
- */
-#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
-
-/** @cond INTERNAL_MACRO */
-#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
-#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
-/** @endcond */
-
-RBIMPL_SYMBOL_EXPORT_BEGIN()
-/**
- * This is the implementation of #RB_OBJ_WRITE(). People don't use it
- * directly.
- *
- * @param[in] old An object that points to `young`.
- * @param[out] young An object that is referenced from `old`.
- */
-void rb_gc_writebarrier(VALUE old, VALUE young);
-
-/**
- * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
- * directly.
- *
- * @param[out] obj An object that does not participate in WB.
- */
-void rb_gc_writebarrier_unprotect(VALUE obj);
-
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
-/**
- * @private
- *
- * This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People
- * don't use it directly.
- *
- * @param[in] objptr Don't know why this is a pointer to void but in
- * reality this is a pointer to an object that is about
- * to be un-protected.
- * @param[in] filename Pass C's `__FILE__` here.
- * @param[in] line Pass C's `__LINE__` here.
- */
-void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
-#endif
-
-RBIMPL_SYMBOL_EXPORT_END()
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * This is the implementation of #RB_OBJ_PROMOTED(). People don't use it
- * directly.
- *
- * @param[in] obj An object to query.
- * @retval true The object is "promoted".
- * @retval false The object is young. Have not experienced GC at all.
- */
-static inline bool
-RB_OBJ_PROMOTED_RAW(VALUE obj)
-{
- RBIMPL_ASSERT_OR_ASSUME(RB_FL_ABLE(obj));
- return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
-}
-
-RBIMPL_ATTR_PURE_UNLESS_DEBUG()
-RBIMPL_ATTR_ARTIFICIAL()
-/**
- * Tests if the object is "promoted" -- that is, whether the object experienced
- * one or more GC marks.
- *
- * @param[in] obj An object to query.
- * @retval true The object is "promoted".
- * @retval false The object is young. Have not experienced GC at all.
- * @note Hello, is anyone actively calling this function? @shyouhei have
- * never seen any actual usages outside of the GC implementation
- * itself.
- */
-static inline bool
-RB_OBJ_PROMOTED(VALUE obj)
-{
- if (! RB_FL_ABLE(obj)) {
- return false;
- }
- else {
- return RB_OBJ_PROMOTED_RAW(obj);
- }
-}
-
-/**
- * This is the implementation of #RB_OBJ_WB_UNPROTECT(). People don't use it
- * directly.
- *
- * @param[out] x An object that does not participate in WB.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return x
- */
-static inline VALUE
-rb_obj_wb_unprotect(
- VALUE x,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
- RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line);
-#endif
- rb_gc_writebarrier_unprotect(x);
- return x;
-}
-
-/**
- * @private
- *
- * This is the implementation of #RB_OBJ_WRITTEN(). People don't use it
- * directly.
- *
- * @param[in] a An old object.
- * @param[in] oldv An object previously stored inside of `old`.
- * @param[out] b A young object.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return a
- */
-static inline VALUE
-rb_obj_written(
- VALUE a,
- RBIMPL_ATTR_MAYBE_UNUSED()
- VALUE oldv,
- VALUE b,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#if USE_RGENGC_LOGGING_WB_UNPROTECT
- RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);
-#endif
-
- if (!RB_SPECIAL_CONST_P(b)) {
- rb_gc_writebarrier(a, b);
- }
-
- return a;
-}
-
-/**
- * @private
- *
- * This is the implementation of #RB_OBJ_WRITE(). People don't use it
- * directly.
- *
- * @param[in] a An old object.
- * @param[in] slot A pointer inside of `old`.
- * @param[out] b A young object.
- * @param[in] filename C's `__FILE__` of the caller function.
- * @param[in] line C's `__LINE__` of the caller function.
- * @return a
- */
-static inline VALUE
-rb_obj_write(
- VALUE a, VALUE *slot, VALUE b,
- RBIMPL_ATTR_MAYBE_UNUSED()
- const char *filename,
- RBIMPL_ATTR_MAYBE_UNUSED()
- int line)
-{
-#ifdef RGENGC_LOGGING_WRITE
- RGENGC_LOGGING_WRITE(a, slot, b, filename, line);
-#endif
-
- *slot = b;
-
- rb_obj_written(a, RUBY_Qundef /* ignore `oldv' now */, b, filename, line);
- return a;
-}
-
-#endif /* RBIMPL_RGENGC_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/scan_args.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/scan_args.h
index 1ed2bf636..2dbc1ee7b 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/scan_args.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/scan_args.h
@@ -75,7 +75,7 @@
* Pass keywords if current method is called with keywords, useful for argument
* delegation
*/
-#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p()
+#define RB_PASS_CALLED_KEYWORDS !!rb_keyword_given_p()
/** @} */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/special_consts.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/special_consts.h
index dc0a6b41d..1e2636da4 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/special_consts.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/special_consts.h
@@ -156,7 +156,7 @@ RB_TEST(VALUE obj)
*
* RTEST(v) can be 0 if and only if (v == Qfalse || v == Qnil).
*/
- return obj & ~RUBY_Qnil;
+ return obj & RBIMPL_CAST((VALUE)~RUBY_Qnil);
}
RBIMPL_ATTR_CONST()
@@ -226,7 +226,7 @@ RB_NIL_OR_UNDEF_P(VALUE obj)
*
* NIL_OR_UNDEF_P(v) can be true only when v is Qundef or Qnil.
*/
- const VALUE mask = ~(RUBY_Qundef ^ RUBY_Qnil);
+ const VALUE mask = RBIMPL_CAST((VALUE)~(RUBY_Qundef ^ RUBY_Qnil));
const VALUE common_bits = RUBY_Qundef & RUBY_Qnil;
return (obj & mask) == common_bits;
}
@@ -326,7 +326,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_SPECIAL_CONST_P(VALUE obj)
{
- return RB_IMMEDIATE_P(obj) || obj == RUBY_Qfalse;
+ return (obj == RUBY_Qfalse) || RB_IMMEDIATE_P(obj);
}
RBIMPL_ATTR_CONST()
@@ -346,7 +346,7 @@ RBIMPL_ATTR_CONSTEXPR(CXX11)
static inline VALUE
rb_special_const_p(VALUE obj)
{
- return RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
+ return (unsigned int)RB_SPECIAL_CONST_P(obj) * RUBY_Qtrue;
}
/**
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/static_assert.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/static_assert.h
index 594c2b291..7f00bc21e 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/static_assert.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/static_assert.h
@@ -23,6 +23,7 @@
#include
#include "ruby/internal/has/extension.h"
#include "ruby/internal/compiler_since.h"
+#include "ruby/internal/attr/maybe_unused.h"
/** @cond INTERNAL_MACRO */
#if defined(__cplusplus) && defined(__cpp_static_assert)
@@ -71,7 +72,7 @@
#else
# define RBIMPL_STATIC_ASSERT(name, expr) \
- typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
+ RBIMPL_ATTR_MAYBE_UNUSED() typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
#endif
#endif /* RBIMPL_STATIC_ASSERT_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/stdbool.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/stdbool.h
index 1ca61136b..5d9026434 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/stdbool.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/stdbool.h
@@ -27,25 +27,13 @@
#elif defined(__cplusplus)
# /* bool is a keyword in C++. */
-# if defined(HAVE_STDBOOL_H) && (__cplusplus >= 201103L)
-# include
-# endif
-#
# ifndef __bool_true_false_are_defined
# define __bool_true_false_are_defined
# endif
-#elif defined(HAVE_STDBOOL_H)
-# /* Take stdbool.h definition. */
+#else
+# /* Take stdbool.h definition. It exists since GCC 3.0 and VS 2015. */
# include
-
-#elif !defined(HAVE__BOOL)
-typedef unsigned char _Bool;
-# /* See also http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2229.htm */
-# define bool _Bool
-# define true ((_Bool)+1)
-# define false ((_Bool)+0)
-# define __bool_true_false_are_defined
#endif
#endif /* RBIMPL_STDBOOL_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/stdckdint.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/stdckdint.h
new file mode 100644
index 000000000..e5b5b8b75
--- /dev/null
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/stdckdint.h
@@ -0,0 +1,68 @@
+#ifndef RBIMPL_STDCKDINT_H /*-*-C++-*-vi:se ft=cpp:*/
+#define RBIMPL_STDCKDINT_H
+/**
+ * @author Ruby developers
+ * @copyright This file is a part of the programming language Ruby.
+ * Permission is hereby granted, to either redistribute and/or
+ * modify this file, provided that the conditions mentioned in the
+ * file COPYING are met. Consult the file for details.
+ * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are
+ * implementation details. Don't take them as canon. They could
+ * rapidly appear then vanish. The name (path) of this header file
+ * is also an implementation detail. Do not expect it to persist
+ * at the place it is now. Developers are free to move it anywhere
+ * anytime at will.
+ * @note To ruby-core: remember that this header can be possibly
+ * recursively included from extension libraries written in C++.
+ * Do not expect for instance `__VA_ARGS__` is always available.
+ * We assume C99 for ruby itself but we don't assume languages of
+ * extension libraries. They could be written in C++98.
+ * @brief C23 shim for
+ */
+#include "ruby/internal/config.h"
+#include "ruby/internal/cast.h"
+#include "ruby/internal/has/builtin.h"
+#include "ruby/internal/stdbool.h"
+
+#ifdef __has_include
+# if __has_include()
+# /* Conforming C23 situation; e.g. recent clang */
+# define RBIMPL_HAVE_STDCKDINT_H
+# endif
+#endif
+
+#ifdef HAVE_STDCKDINT_H
+# /* Some OSes (most notably FreeBSD) have this file. */
+# define RBIMPL_HAVE_STDCKDINT_H
+#endif
+
+#ifdef __cplusplus
+# /* It seems OS/Compiler provided stdckdint.h tend not support C++ yet.
+# * Situations could improve someday but in a meantime let us work around.
+# */
+# undef RBIMPL_HAVE_STDCKDINT_H
+#endif
+
+#ifdef RBIMPL_HAVE_STDCKDINT_H
+# /* Take that. */
+# include
+
+#elif RBIMPL_HAS_BUILTIN(__builtin_add_overflow)
+# define ckd_add(x, y, z) RBIMPL_CAST((bool)__builtin_add_overflow((y), (z), (x)))
+# define ckd_sub(x, y, z) RBIMPL_CAST((bool)__builtin_sub_overflow((y), (z), (x)))
+# define ckd_mul(x, y, z) RBIMPL_CAST((bool)__builtin_mul_overflow((y), (z), (x)))
+# define __STDC_VERSION_STDCKDINT_H__ 202311L
+
+#/* elif defined(__cplusplus) */
+#/* :TODO: if we assume C++11 we can use `` to implement them. */
+
+#else
+# /* intentionally leave them undefined */
+# /* to make `#ifdef ckd_add` etc. work as intended. */
+# undef ckd_add
+# undef ckd_sub
+# undef ckd_mul
+# undef __STDC_VERSION_STDCKDINT_H__
+#endif
+
+#endif /* RBIMPL_STDCKDINT_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/symbol.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/symbol.h
index 869a31115..3ffc5abc2 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/symbol.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/symbol.h
@@ -121,10 +121,17 @@ ID rb_intern_str(VALUE str);
* Retrieves the name mapped to the given id.
*
* @param[in] id An id to query.
- * @retval NULL No such id ever existed in the history.
+ * @retval NULL Unknown id.
* @retval otherwise A name that the id represents.
* @note The return value is managed by the interpreter. Don't pass it
* to free().
+ * @note The underlying name can contain internal NUL bytes, so the return
+ * value might be a truncated representation due to the nature of C
+ * strings.
+ * @note This C string is backed by an underlying Ruby string. The Ruby
+ * string may move during GC compaction which would make this
+ * C string point to invalid memory. Do not use the return value
+ * of this function after a potential GC entry point.
*/
const char *rb_id2name(ID id);
@@ -186,7 +193,8 @@ ID rb_check_id(volatile VALUE *namep);
ID rb_to_id(VALUE str);
/**
- * Identical to rb_id2name(), except it returns a Ruby's String instead of C's.
+ * Identical to rb_id2name(), except it returns a frozen Ruby String instead of
+ * a C String.
*
* @param[in] id An id to query.
* @retval RUBY_Qfalse No such id ever existed in the history.
@@ -201,14 +209,14 @@ ID rb_to_id(VALUE str);
VALUE rb_id2str(ID id);
/**
- * Identical to rb_id2str(), except it takes an instance of ::rb_cSymbol rather
- * than an ::ID.
+ * Obtain a frozen string representation of a symbol (not including the leading
+ * colon). Done without any object allocations.
*
- * @param[in] id An id to query.
- * @retval RUBY_Qfalse No such id ever existed in the history.
- * @retval otherwise An instance of ::rb_cString with the name of id.
+ * @param[in] symbol A ::rb_cSymbol instance to query.
+ * @return A frozen instance of ::rb_cString with the name of `symbol`.
+ * @note This does not create a permanent ::ID using the symbol.
*/
-VALUE rb_sym2str(VALUE id);
+VALUE rb_sym2str(VALUE symbol);
/**
* Identical to rb_intern_str(), except it generates a dynamic symbol if
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/value_type.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/value_type.h
index 977f60a00..aedd0abe4 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/value_type.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/value_type.h
@@ -96,10 +96,11 @@
#define RB_TYPE_P RB_TYPE_P
#define Check_Type Check_Type
-#if !RUBY_DEBUG
-# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
+#ifdef RBIMPL_VA_OPT_ARGS
+# define RBIMPL_ASSERT_TYPE(v, t) \
+ RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t), "actual type: %d", rb_type(v))
#else
-# define RBIMPL_ASSERT_TYPE Check_Type
+# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t))
#endif
/** @endcond */
@@ -443,7 +444,7 @@ Check_Type(VALUE v, enum ruby_value_type t)
}
unexpected_type:
- rb_unexpected_type(v, t);
+ rb_unexpected_type(v, RBIMPL_CAST((int)t));
}
#endif /* RBIMPL_VALUE_TYPE_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/internal/xmalloc.h b/ThirdParty/include/ruby/win32_x64/ruby/internal/xmalloc.h
index 57552e4e7..132bc478c 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/internal/xmalloc.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/internal/xmalloc.h
@@ -283,110 +283,6 @@ void ruby_xfree(void *ptr)
RBIMPL_ATTR_NOEXCEPT(free(ptr))
;
-#if USE_GC_MALLOC_OBJ_INFO_DETAILS
-# define ruby_xmalloc(s1) ruby_xmalloc_with_location(s1, __FILE__, __LINE__)
-# define ruby_xmalloc2(s1, s2) ruby_xmalloc2_with_location(s1, s2, __FILE__, __LINE__)
-# define ruby_xcalloc(s1, s2) ruby_xcalloc_with_location(s1, s2, __FILE__, __LINE__)
-# define ruby_xrealloc(ptr, s1) ruby_xrealloc_with_location(ptr, s1, __FILE__, __LINE__)
-# define ruby_xrealloc2(ptr, s1, s2) ruby_xrealloc2_with_location(ptr, s1, s2, __FILE__, __LINE__)
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1))
-void *ruby_xmalloc_body(size_t size)
-RBIMPL_ATTR_NOEXCEPT(malloc(size))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1,2))
-void *ruby_xmalloc2_body(size_t nelems, size_t elemsiz)
-RBIMPL_ATTR_NOEXCEPT(malloc(nelems * elemsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RESTRICT()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((1,2))
-void *ruby_xcalloc_body(size_t nelems, size_t elemsiz)
-RBIMPL_ATTR_NOEXCEPT(calloc(nelems, elemsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((2))
-void *ruby_xrealloc_body(void *ptr, size_t newsiz)
-RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newsiz))
-;
-
-RBIMPL_ATTR_NODISCARD()
-RBIMPL_ATTR_RETURNS_NONNULL()
-RBIMPL_ATTR_ALLOC_SIZE((2,3))
-void *ruby_xrealloc2_body(void *ptr, size_t newelems, size_t newsiz)
-RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newelems * newsiz))
-;
-
-RUBY_EXTERN const char *ruby_malloc_info_file;
-RUBY_EXTERN int ruby_malloc_info_line;
-
-static inline void *
-ruby_xmalloc_with_location(size_t s, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xmalloc_body(s);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xmalloc2_with_location(size_t s1, size_t s2, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xmalloc2_body(s1, s2);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xcalloc_with_location(size_t s1, size_t s2, const char *file, int line)
-{
- void *ptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- ptr = ruby_xcalloc_body(s1, s2);
- ruby_malloc_info_file = NULL;
- return ptr;
-}
-
-static inline void *
-ruby_xrealloc_with_location(void *ptr, size_t s, const char *file, int line)
-{
- void *rptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- rptr = ruby_xrealloc_body(ptr, s);
- ruby_malloc_info_file = NULL;
- return rptr;
-}
-
-static inline void *
-ruby_xrealloc2_with_location(void *ptr, size_t s1, size_t s2, const char *file, int line)
-{
- void *rptr;
- ruby_malloc_info_file = file;
- ruby_malloc_info_line = line;
- rptr = ruby_xrealloc2_body(ptr, s1, s2);
- ruby_malloc_info_file = NULL;
- return rptr;
-}
-#endif
-
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RBIMPL_XMALLOC_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/io.h b/ThirdParty/include/ruby/win32_x64/ruby/io.h
index 88029b1bb..d2fd3ed31 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/io.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/io.h
@@ -49,11 +49,11 @@
/** @endcond */
#include "ruby/internal/attr/const.h"
+#include "ruby/internal/attr/packed_struct.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
-#include "ruby/backward/2/attributes.h" /* PACKED_STRUCT_UNALIGNED */
// IO#wait, IO#wait_readable, IO#wait_writable, IO#wait_priority are defined by this implementation.
#define RUBY_IO_WAIT_METHODS
@@ -78,17 +78,20 @@ RUBY_EXTERN VALUE rb_eIOTimeoutError;
*
* This is visible from extension libraries because `io/wait` wants it.
*/
-typedef enum {
+enum rb_io_event {
RUBY_IO_READABLE = RB_WAITFD_IN, /**< `IO::READABLE` */
RUBY_IO_WRITABLE = RB_WAITFD_OUT, /**< `IO::WRITABLE` */
RUBY_IO_PRIORITY = RB_WAITFD_PRI, /**< `IO::PRIORITY` */
-} rb_io_event_t;
+};
+
+typedef enum rb_io_event rb_io_event_t;
/**
* IO buffers. This is an implementation detail of ::rb_io_t::wbuf and
* ::rb_io_t::rbuf. People don't manipulate it directly.
*/
-PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t {
+RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN()
+struct rb_io_internal_buffer {
/** Pointer to the underlying memory region, of at least `capa` bytes. */
char *ptr; /* off + len <= capa */
@@ -101,10 +104,10 @@ PACKED_STRUCT_UNALIGNED(struct rb_io_buffer_t {
/** Designed capacity of the buffer. */
int capa;
-});
+} RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END();
/** @alias{rb_io_buffer_t} */
-typedef struct rb_io_buffer_t rb_io_buffer_t;
+typedef struct rb_io_internal_buffer rb_io_buffer_t;
/** Decomposed encoding flags (e.g. `"enc:enc2""`). */
/*
@@ -113,7 +116,7 @@ typedef struct rb_io_buffer_t rb_io_buffer_t;
* e1 NULL force_encoding(e1) convert str.encoding to e1
* e1 e2 convert from e2 to e1 convert str.encoding to e2
*/
-struct rb_io_enc_t {
+struct rb_io_encoding {
/** Internal encoding. */
rb_encoding *enc;
/** External encoding. */
@@ -134,40 +137,51 @@ struct rb_io_enc_t {
VALUE ecopts;
};
+#ifndef HAVE_RB_IO_T
+#define HAVE_RB_IO_T 1
/** Ruby's IO, metadata and buffers. */
-typedef struct rb_io_t {
-
+struct rb_io {
/** The IO's Ruby level counterpart. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE self;
/** stdio ptr for read/write, if available. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
FILE *stdio_file;
/** file descriptor. */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_descriptor"))
int fd;
/** mode flags: FMODE_XXXs */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_mode"))
int mode;
/** child's pid (for pipes) */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_pid_t pid;
/** number of lines read */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int lineno;
/** pathname for file */
+ RBIMPL_ATTR_DEPRECATED(("rb_io_path"))
VALUE pathv;
/** finalize proc */
- void (*finalize)(struct rb_io_t*,int);
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
+ void (*finalize)(struct rb_io*,int);
/** Write buffer. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t wbuf;
/**
* (Byte) read buffer. Note also that there is a field called
* ::rb_io_t::cbuf, which also concerns read IO.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t rbuf;
/**
@@ -175,20 +189,25 @@ typedef struct rb_io_t {
*
* @see rb_io_set_write_io()
*/
+ RBIMPL_ATTR_DEPRECATED(("rb_io_get_write_io"))
VALUE tied_io_for_writing;
- struct rb_io_enc_t encs; /**< Decomposed encoding flags. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
+ struct rb_io_encoding encs; /**< Decomposed encoding flags. */
/** Encoding converter used when reading from this IO. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_econv_t *readconv;
/**
* rb_io_ungetc() destination. This buffer is read before checking
* ::rb_io_t::rbuf
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_io_buffer_t cbuf;
/** Encoding converter used when writing to this IO. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
rb_econv_t *writeconv;
/**
@@ -197,21 +216,25 @@ typedef struct rb_io_t {
* conversion from encoding X to encoding Y does not exist, Ruby finds an
* encoding Z that bridges the two, so that X to Z to Y conversion happens.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE writeconv_asciicompat;
/** Whether ::rb_io_t::writeconv is already set up. */
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int writeconv_initialized;
/**
* Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before
* initialising ::rb_io_t::writeconv.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
int writeconv_pre_ecflags;
/**
* Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising
* ::rb_io_t::writeconv.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE writeconv_pre_ecopts;
/**
@@ -221,25 +244,21 @@ typedef struct rb_io_t {
*
* This of course doesn't help inter-process IO interleaves, though.
*/
+ RBIMPL_ATTR_DEPRECATED(("with no replacement"))
VALUE write_lock;
/**
* The timeout associated with this IO when performing blocking operations.
*/
+ RBIMPL_ATTR_DEPRECATED(("rb_io_timeout/rb_io_set_timeout"))
VALUE timeout;
-} rb_io_t;
+};
+#endif
-/** @alias{rb_io_enc_t} */
-typedef struct rb_io_enc_t rb_io_enc_t;
+typedef struct rb_io rb_io_t;
-/**
- * @private
- *
- * @deprecated This macro once was a thing in the old days, but makes no sense
- * any longer today. Exists here for backwards compatibility
- * only. You can safely forget about it.
- */
-#define HAVE_RB_IO_T 1
+/** @alias{rb_io_enc_t} */
+typedef struct rb_io_encoding rb_io_enc_t;
/**
* @name Possible flags for ::rb_io_t::mode
@@ -330,7 +349,16 @@ typedef struct rb_io_enc_t rb_io_enc_t;
* Setting this one and #FMODE_BINMODE at the same time is a contradiction.
*/
#define FMODE_TEXTMODE 0x00001000
-/* #define FMODE_PREP 0x00010000 */
+/**
+ * This flag means that an IO object is wrapping an "external" file descriptor,
+ * which is owned by something outside the Ruby interpreter (usually a C extension).
+ * Ruby will not close this file when the IO object is garbage collected.
+ * If this flag is set, then IO#autoclose? is false, and vice-versa.
+ *
+ * This flag was previously called FMODE_PREP internally.
+ */
+#define FMODE_EXTERNAL 0x00010000
+
/* #define FMODE_SIGNAL_ON_EPIPE 0x00020000 */
/**
@@ -344,6 +372,18 @@ typedef struct rb_io_enc_t rb_io_enc_t;
/** @} */
+/**
+ * Allocate a new IO object, with the given file descriptor.
+ */
+VALUE rb_io_open_descriptor(VALUE klass, int descriptor, int mode, VALUE path, VALUE timeout, struct rb_io_encoding *encoding);
+
+/**
+ * Returns whether or not the underlying IO is closed.
+ *
+ * @return Whether the underlying IO is closed.
+ */
+VALUE rb_io_closed_p(VALUE io);
+
/**
* Queries the underlying IO pointer.
*
@@ -414,14 +454,14 @@ rb_io_t *rb_io_make_open_file(VALUE obj);
* like this:
*
* ```CXX
- * typedef struct rb_io_t {
+ * typedef struct rb_io {
* FILE *f; // stdio ptr for read/write
* FILE *f2; // additional ptr for rw pipes
* int mode; // mode flags
* int pid; // child's pid (for pipes)
* int lineno; // number of lines read
* char *path; // pathname for file
- * void (*finalize) _((struct rb_io_t*,int)); // finalize proc
+ * void (*finalize) _((struct rb_io*,int)); // finalize proc
* } rb_io_t;
*```
*
@@ -702,6 +742,12 @@ VALUE rb_io_set_write_io(VALUE io, VALUE w);
*/
void rb_io_set_nonblock(rb_io_t *fptr);
+/**
+ * Returns the path for the given IO.
+ *
+ */
+VALUE rb_io_path(VALUE io);
+
/**
* Returns an integer representing the numeric file descriptor for
* io.
@@ -711,6 +757,12 @@ void rb_io_set_nonblock(rb_io_t *fptr);
*/
int rb_io_descriptor(VALUE io);
+/**
+ * Get the mode of the IO.
+ *
+ */
+int rb_io_mode(VALUE io);
+
/**
* This function breaks down the option hash that `IO#initialize` takes into
* components. This is an implementation detail of rb_io_extract_modeenc()
@@ -912,6 +964,9 @@ VALUE rb_io_wait(VALUE io, VALUE events, VALUE timeout);
* }
* ```
*
+ * On timeout, ::RUBY_Qfalse is returned. Unless you are specifically handling
+ * the timeouts, you should typically raise ::rb_eIOTimeoutError in this case.
+ *
* @param[in] error System errno.
* @param[in] io An IO object to wait.
* @param[in] events An integer set of interests.
@@ -920,19 +975,19 @@ VALUE rb_io_wait(VALUE io, VALUE events, VALUE timeout);
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
* @retval RUBY_Qfalse Operation timed out.
+ * @retval RUBY_Qnil Operation failed for some other reason (errno).
* @retval Otherwise Actual events reached.
*
- * @internal
- *
- * This function to return ::RUBY_Qfalse on timeout could be unintended. It
- * seems timeout feature has some rough edge.
*/
VALUE rb_io_maybe_wait(int error, VALUE io, VALUE events, VALUE timeout);
/**
* Blocks until the passed IO is ready for reading, if that makes sense for the
- * passed errno. This is a special case of rb_io_maybe_wait() that only
- * concerns for reading.
+ * passed errno. This is a special case of rb_io_maybe_wait() that is
+ * only concerned with reading and handles the timeout.
+ *
+ * If you do not want the default timeout handling, consider using
+ * ::rb_io_maybe_wait directly.
*
* @param[in] error System errno.
* @param[in] io An IO object to wait.
@@ -940,15 +995,18 @@ VALUE rb_io_maybe_wait(int error, VALUE io, VALUE events, VALUE timeout);
* @exception rb_eIOError `io` is not open.
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
- * @retval 0 Operation timed out.
+ * @exception rb_eIOTimeoutError The wait operation timed out.
* @retval Otherwise Always returns ::RUBY_IO_READABLE.
*/
int rb_io_maybe_wait_readable(int error, VALUE io, VALUE timeout);
/**
* Blocks until the passed IO is ready for writing, if that makes sense for the
- * passed errno. This is a special case of rb_io_maybe_wait() that only
- * concernsfor writing.
+ * passed errno. This is a special case of rb_io_maybe_wait() that is
+ * only concerned with writing, and handles the timeout.
+ *
+ * If you do not want the default timeout handling, consider using
+ * ::rb_io_maybe_wait directly.
*
* @param[in] error System errno.
* @param[in] io An IO object to wait.
@@ -956,7 +1014,7 @@ int rb_io_maybe_wait_readable(int error, VALUE io, VALUE timeout);
* @exception rb_eIOError `io` is not open.
* @exception rb_eRangeError `timeout` is out of range.
* @exception rb_eSystemCallError `select(2)` failed for some reason.
- * @retval 0 Operation timed out.
+ * @exception rb_eIOTimeoutError The wait operation timed out.
* @retval Otherwise Always returns ::RUBY_IO_WRITABLE.
*/
int rb_io_maybe_wait_writable(int error, VALUE io, VALUE timeout);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/io/buffer.h b/ThirdParty/include/ruby/win32_x64/ruby/io/buffer.h
index 88e559806..e4d98bf05 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/io/buffer.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/io/buffer.h
@@ -23,10 +23,18 @@ RBIMPL_SYMBOL_EXPORT_BEGIN()
#define RUBY_IO_BUFFER_VERSION 2
+// The `IO::Buffer` class.
RUBY_EXTERN VALUE rb_cIOBuffer;
+
+// The operating system page size.
RUBY_EXTERN size_t RUBY_IO_BUFFER_PAGE_SIZE;
+
+// The default buffer size, usually a (small) multiple of the page size.
+// Can be overridden by the RUBY_IO_BUFFER_DEFAULT_SIZE environment variable.
RUBY_EXTERN size_t RUBY_IO_BUFFER_DEFAULT_SIZE;
+// Represents the internal state of the buffer.
+// More than one flag can be set at a time.
enum rb_io_buffer_flags {
// The memory in the buffer is owned by someone else.
// More specifically, it means that someone else owns the buffer and we shouldn't try to resize it.
@@ -49,21 +57,22 @@ enum rb_io_buffer_flags {
RB_IO_BUFFER_PRIVATE = 64,
// The buffer is read-only and cannot be modified.
- RB_IO_BUFFER_READONLY = 128
+ RB_IO_BUFFER_READONLY = 128,
+
+ // The buffer is backed by a file.
+ RB_IO_BUFFER_FILE = 256,
};
+// Represents the endian of the data types.
enum rb_io_buffer_endian {
+ // The least significant units are put first.
RB_IO_BUFFER_LITTLE_ENDIAN = 4,
RB_IO_BUFFER_BIG_ENDIAN = 8,
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
- RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
-#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#if defined(WORDS_BIGENDIAN)
RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
-#elif REG_DWORD == REG_DWORD_LITTLE_ENDIAN
+#else
RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
-#elif REG_DWORD == REG_DWORD_BIG_ENDIAN
- RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
#endif
RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN
@@ -75,9 +84,14 @@ VALUE rb_io_buffer_map(VALUE io, size_t size, rb_off_t offset, enum rb_io_buffer
VALUE rb_io_buffer_lock(VALUE self);
VALUE rb_io_buffer_unlock(VALUE self);
int rb_io_buffer_try_unlock(VALUE self);
+
VALUE rb_io_buffer_free(VALUE self);
+VALUE rb_io_buffer_free_locked(VALUE self);
-int rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size);
+// Access the internal buffer and flags. Validates the pointers.
+// The points may not remain valid if the source buffer is manipulated.
+// Consider using rb_io_buffer_lock if needed.
+enum rb_io_buffer_flags rb_io_buffer_get_bytes(VALUE self, void **base, size_t *size);
void rb_io_buffer_get_bytes_for_reading(VALUE self, const void **base, size_t *size);
void rb_io_buffer_get_bytes_for_writing(VALUE self, void **base, size_t *size);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/memory_view.h b/ThirdParty/include/ruby/win32_x64/ruby/memory_view.h
index 1ddca2d46..42309d5af 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/memory_view.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/memory_view.h
@@ -47,10 +47,10 @@ typedef struct {
char format;
/** :FIXME: what is a "native" size is unclear. */
- unsigned native_size_p: 1;
+ bool native_size_p;
/** Endian of the component */
- unsigned little_endian_p: 1;
+ bool little_endian_p;
/** The component's offset. */
size_t offset;
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/onigmo.h b/ThirdParty/include/ruby/win32_x64/ruby/onigmo.h
index 8d7c60170..db290cd47 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/onigmo.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/onigmo.h
@@ -636,6 +636,7 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
+#define ONIGERR_TIMEOUT -23
/* general error */
#define ONIGERR_INVALID_ARGUMENT -30
/* syntax error */
@@ -744,8 +745,6 @@ typedef struct {
typedef struct {
int lower;
int upper;
- long base_num;
- long inner_num;
} OnigRepeatRange;
typedef void (*OnigWarnFunc)(const char* s);
@@ -846,6 +845,8 @@ void onig_free(OnigRegex);
ONIG_EXTERN
void onig_free_body(OnigRegex);
ONIG_EXTERN
+int onig_reg_copy(OnigRegex* reg, OnigRegex orig_reg);
+ONIG_EXTERN
OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
ONIG_EXTERN
OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/random.h b/ThirdParty/include/ruby/win32_x64/ruby/random.h
index 39bdb6f3e..f3df0d96f 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/random.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/random.h
@@ -11,7 +11,7 @@
*
* This is a set of APIs to roll your own subclass of ::rb_cRandom. An
* illustrative example of such PRNG can be found at
- * `ext/-test-/ramdom/loop.c`.
+ * `ext/-test-/random/loop.c`.
*/
#include "ruby/ruby.h"
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/re.h b/ThirdParty/include/ruby/win32_x64/ruby/re.h
index 3892d6e7f..f86d6f26c 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/re.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/re.h
@@ -18,6 +18,7 @@
#include
+#include "ruby/onigmo.h"
#include "ruby/regex.h"
#include "ruby/internal/core/rmatch.h"
#include "ruby/internal/dllexport.h"
@@ -125,6 +126,30 @@ VALUE rb_reg_quote(VALUE str);
*/
regex_t *rb_reg_prepare_re(VALUE re, VALUE str);
+/**
+ * Runs a regular expression match using function `match`. Performs preparation,
+ * error handling, and memory cleanup.
+ *
+ * @param[in] re Target regular expression.
+ * @param[in] str What `re` is about to run on.
+ * @param[in] match The function to run to match `str` against `re`.
+ * @param[in] args Pointer to arguments to pass into `match`.
+ * @param[out] regs Registers on a successful match.
+ * @exception rb_eArgError `re` does not fit for `str`.
+ * @exception rb_eEncCompatError `re` and `str` are incompatible.
+ * @exception rb_eRegexpError `re` is malformed.
+ * @return Match position on a successful match, `ONIG_MISMATCH` otherwise.
+ *
+ * @internal
+ *
+ * The type `regex_t *` is defined in ``, _and_
+ * _conflicts_ with POSIX's ``. We can no longer save the situation
+ * at this point. Just don't mix the two.
+ */
+OnigPosition rb_reg_onig_match(VALUE re, VALUE str,
+ OnigPosition (*match)(regex_t *reg, VALUE str, struct re_registers *regs, void *args),
+ void *args, struct re_registers *regs);
+
/**
* Duplicates a match data. This is roughly the same as `onig_region_copy()`,
* except it tries to GC when there is not enough memory.
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/ruby.h b/ThirdParty/include/ruby/win32_x64/ruby/ruby.h
index 444940ca3..035f02c70 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/ruby.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/ruby.h
@@ -43,7 +43,6 @@
#include "ruby/internal/method.h"
#include "ruby/internal/module.h"
#include "ruby/internal/newobj.h"
-#include "ruby/internal/rgengc.h"
#include "ruby/internal/scan_args.h"
#include "ruby/internal/special_consts.h"
#include "ruby/internal/symbol.h"
@@ -98,8 +97,10 @@ VALUE rb_get_path(VALUE obj);
VALUE rb_get_path_no_checksafe(VALUE);
/**
- * @deprecated This macro is an alias of #FilePathValue now. The part that did
- * "String" was deleted. It remains here because of no harm.
+ * This macro actually does the same thing as #FilePathValue now. The "String"
+ * part indicates that this is for when a string is treated like a pathname,
+ * rather than the actual pathname on the file systems. For examples:
+ * `Dir.fnmatch?`, `File.join`, `File.basename`, etc.
*/
#define FilePathStringValue(v) ((v) = rb_get_path(v))
@@ -271,6 +272,124 @@ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 0)
*/
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#include
+
+/**
+ * @name Errno handling routines for userland threads
+ * @note POSIX chapter 2 section 3 states that for each thread of a process,
+ * the value of `errno` shall not be affected by function calls or
+ * assignments to `errno` by other threads.
+ *
+ * Soooo this `#define errno` below seems like a noob mistake at first sight.
+ * If you look at its actual implementation, the functions are just adding one
+ * level of indirection. It doesn't make any sense sorry? But yes! @ko1 told
+ * @shyouhei that this is inevitable.
+ *
+ * The ultimate reason is because Ruby now has N:M threads implemented.
+ * Threads of that sort change their context in user land. A function can be
+ * "transferred" between threads in middle of their executions. Let us for
+ * instance consider:
+ *
+ * ```cxx
+ * void foo()
+ * {
+ * auto i = errno;
+ * close(0);
+ * errno = i;
+ * }
+ * ```
+ *
+ * This function (if ran under our Ractor) could change its running thread at
+ * the `close` function. But the two `errno` invocations are different! Look
+ * how the source code above is compiled by clang 17 with `-O3` flag @ Linux:
+ *
+ * ```
+ * foo(int): # @foo(int)
+ * push rbp
+ * push r14
+ * push rbx
+ * mov ebx, edi
+ * call __errno_location@PLT
+ * mov r14, rax
+ * mov ebp, dword ptr [rax]
+ * mov edi, ebx
+ * call close@PLT
+ * mov dword ptr [r14], ebp
+ * pop rbx
+ * pop r14
+ * pop rbp
+ * ret
+ * ```
+ *
+ * Notice how `__errno_location@PLT` is `call`-ed only once. The compiler
+ * assumes that the location of `errno` does not change during a function call.
+ * Sadly this is no longer true for us. The `close@PLT` now changes threads,
+ * which should also change where `errno` is stored.
+ *
+ * With the `#define errno` below the compilation result changes to this:
+ *
+ * ```
+ * foo(int): # @foo(int)
+ * push rbp
+ * push rbx
+ * push rax
+ * mov ebx, edi
+ * call rb_errno_ptr()@PLT
+ * mov ebp, dword ptr [rax]
+ * mov edi, ebx
+ * call close@PLT
+ * call rb_errno_ptr()@PLT
+ * mov dword ptr [rax], ebp
+ * add rsp, 8
+ * pop rbx
+ * pop rbp
+ * ret
+ * ```
+ *
+ * Which fixes the problem.
+ */
+
+/**
+ * Identical to system `errno`.
+ *
+ * @return The last set `errno` number.
+ */
+int rb_errno(void);
+
+/**
+ * Set the errno.
+ *
+ * @param err New `errno`.
+ * @post `errno` is now set to `err`.
+ */
+void rb_errno_set(int err);
+
+/**
+ * The location of `errno`
+ *
+ * @return The (thread-specific) location of `errno`.
+ */
+int *rb_errno_ptr(void);
+
+/**
+ * Not sure if it is necessary for extension libraries but this is where the
+ * "bare" errno is located.
+ *
+ * @return The location of `errno`.
+ */
+static inline int *
+rb_orig_errno_ptr(void)
+{
+ return &errno;
+}
+
+#define rb_orig_errno errno /**< System-provided original `errno`. */
+#undef errno
+#define errno (*rb_errno_ptr()) /**< Ractor-aware version of `errno`. */
+
+/** @} */
+
+
/** @cond INTERNAL_MACRO */
#if RBIMPL_HAS_WARNING("-Wgnu-zero-variadic-macro-arguments")
# /* Skip it; clang -pedantic doesn't like the following */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/st.h b/ThirdParty/include/ruby/win32_x64/ruby/st.h
index 1e4bb8068..f35ab4360 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/st.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/st.h
@@ -98,6 +98,8 @@ struct st_table {
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
+size_t rb_st_table_size(const struct st_table *tbl);
+#define st_table_size rb_st_table_size
st_table *rb_st_init_table(const struct st_hash_type *);
#define st_init_table rb_st_init_table
st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t);
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/thread.h b/ThirdParty/include/ruby/win32_x64/ruby/thread.h
index 0b5b1ca0f..7cbefc977 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/thread.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/thread.h
@@ -59,6 +59,19 @@
*/
#define RB_NOGVL_UBF_ASYNC_SAFE (0x2)
+/**
+ * Passing this flag to rb_nogvl() indicates that the passed function
+ * is safe to offload to a background thread or work pool. In other words, the
+ * function is safe to run using a fiber scheduler's `blocking_operation_wait`.
+ * hook.
+ *
+ * If your function depends on thread-local storage, or thread-specific data
+ * operations/data structures, you should not set this flag, as
+ * these operations may behave differently (or fail) when run in a different
+ * thread/context (e.g. unlocking a mutex).
+ */
+#define RB_NOGVL_OFFLOAD_SAFE (0x4)
+
/** @} */
RBIMPL_SYMBOL_EXPORT_BEGIN()
@@ -190,14 +203,59 @@ void *rb_nogvl(void *(*func)(void *), void *data1,
*/
#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_
-#define RUBY_INTERNAL_THREAD_EVENT_STARTED 1 << 0 /** thread started */
+/**
+ * Declare the current Ruby thread should acquire a dedicated
+ * native thread on M:N thread scheduler.
+ *
+ * If a C extension (or a library which the extension relies on) should
+ * keep to run on a native thread (e.g. using thread-local-storage),
+ * this function allocates a dedicated native thread for the thread.
+ *
+ * @return `false` if the thread already running on a dedicated native
+ * thread. Otherwise `true`.
+ */
+bool rb_thread_lock_native_thread(void);
+
+/**
+ * Triggered when a new thread is started.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
+#define RUBY_INTERNAL_THREAD_EVENT_STARTED 1 << 0
+
+/**
+* Triggered when a thread attempt to acquire the GVL.
+*
+* @note The callback will be called *without* the GVL held.
+*/
#define RUBY_INTERNAL_THREAD_EVENT_READY 1 << 1 /** acquiring GVL */
+
+/**
+ * Triggered when a thread successfully acquired the GVL.
+ *
+ * @note The callback will be called *with* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_RESUMED 1 << 2 /** acquired GVL */
+
+/**
+ * Triggered when a thread released the GVL.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_SUSPENDED 1 << 3 /** released GVL */
+
+/**
+ * Triggered when a thread exits.
+ *
+ * @note The callback will be called *without* the GVL held.
+ */
#define RUBY_INTERNAL_THREAD_EVENT_EXITED 1 << 4 /** thread terminated */
+
#define RUBY_INTERNAL_THREAD_EVENT_MASK 0xff /** All Thread events */
-typedef void rb_internal_thread_event_data_t; // for future extension.
+typedef struct rb_internal_thread_event_data {
+ VALUE thread;
+} rb_internal_thread_event_data_t;
typedef void (*rb_internal_thread_event_callback)(rb_event_flag_t event,
const rb_internal_thread_event_data_t *event_data,
@@ -211,7 +269,12 @@ typedef struct rb_internal_thread_event_hook rb_internal_thread_event_hook_t;
* @param[in] events A set of events that `func` should run.
* @param[in] data Passed as-is to `func`.
* @return An opaque pointer to the hook, to unregister it later.
- * @note This functionality is a noop on Windows.
+ * @note This functionality is a noop on Windows and WebAssembly.
+ * @note The callback will be called without the GVL held, except for the
+ * RESUMED event.
+ * @note Callbacks are not guaranteed to be executed on the native threads
+ * that corresponds to the Ruby thread. To identify which Ruby thread
+ * the event refers to, you must use `event_data->thread`.
* @warning This function MUST not be called from a thread event callback.
*/
rb_internal_thread_event_hook_t *rb_internal_thread_add_event_hook(
@@ -223,13 +286,53 @@ rb_internal_thread_event_hook_t *rb_internal_thread_add_event_hook(
* Unregister the passed hook.
*
* @param[in] hook. The hook to unregister.
- * @return Wether the hook was found and unregistered.
- * @note This functionality is a noop on Windows.
+ * @return Whether the hook was found and unregistered.
+ * @note This functionality is a noop on Windows and WebAssembly.
* @warning This function MUST not be called from a thread event callback.
*/
bool rb_internal_thread_remove_event_hook(
rb_internal_thread_event_hook_t * hook);
+
+typedef int rb_internal_thread_specific_key_t;
+#define RB_INTERNAL_THREAD_SPECIFIC_KEY_MAX 8
+/**
+ * Create a key to store thread specific data.
+ *
+ * These APIs are designed for tools using
+ * rb_internal_thread_event_hook APIs.
+ *
+ * Note that only `RB_INTERNAL_THREAD_SPECIFIC_KEY_MAX` keys
+ * can be created. raises `ThreadError` if exceeded.
+ *
+ * Usage:
+ * // at initialize time:
+ * int tool_key; // gvar
+ * Init_tool() {
+ * tool_key = rb_internal_thread_specific_key_create();
+ * }
+ *
+ * // at any timing:
+ * rb_internal_thread_specific_set(thread, tool_key, per_thread_data);
+ * ...
+ * per_thread_data = rb_internal_thread_specific_get(thread, tool_key);
+ */
+rb_internal_thread_specific_key_t rb_internal_thread_specific_key_create(void);
+
+/**
+ * Get thread and tool specific data.
+ *
+ * This function is async signal safe and thread safe.
+ */
+void *rb_internal_thread_specific_get(VALUE thread_val, rb_internal_thread_specific_key_t key);
+
+/**
+ * Set thread and tool specific data.
+ *
+ * This function is async signal safe and thread safe.
+ */
+void rb_internal_thread_specific_set(VALUE thread_val, rb_internal_thread_specific_key_t key, void *data);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RUBY_THREAD_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/thread_native.h b/ThirdParty/include/ruby/win32_x64/ruby/thread_native.h
index c23b15e13..8217a6751 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/thread_native.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/thread_native.h
@@ -28,6 +28,11 @@ typedef union rb_thread_lock_union {
CRITICAL_SECTION crit;
} rb_nativethread_lock_t;
+struct rb_thread_cond_struct {
+ struct cond_event_entry *next;
+ struct cond_event_entry *prev;
+};
+
typedef struct rb_thread_cond_struct rb_nativethread_cond_t;
#elif defined(HAVE_PTHREAD_H)
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/util.h b/ThirdParty/include/ruby/win32_x64/ruby/util.h
index e8727a320..12e69c4b8 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/util.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/util.h
@@ -33,9 +33,20 @@
RBIMPL_SYMBOL_EXPORT_BEGIN()
-/** an approximation of ceil(n * log10(2)), up to 65536 at least */
+/** an approximation of ceil(n * log10(2)), up to 1,048,576 (1<<20)
+ * without overflow within 32-bit calculation
+ */
#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999)
+/** an approximation of decimal representation size for n-bytes */
+#define DECIMAL_SIZE_OF_BYTES(n) DECIMAL_SIZE_OF_BITS((n) * CHAR_BIT)
+
+/**
+ * An approximation of decimal representation size. `expr` may be a
+ * type name
+ */
+#define DECIMAL_SIZE_OF(expr) DECIMAL_SIZE_OF_BYTES(sizeof(expr))
+
/**
* Character to number mapping like `'a'` -> `10`, `'b'` -> `11` etc. For
* punctuation etc., the value is -1. "36" terminology comes from the fact
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/version.h b/ThirdParty/include/ruby/win32_x64/ruby/version.h
index 18b3abc8d..e9113177d 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/version.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/version.h
@@ -67,7 +67,7 @@
* Minor version. As of writing this version changes annually. Greater
* version doesn't mean "better"; they just mean years passed.
*/
-#define RUBY_API_VERSION_MINOR 2
+#define RUBY_API_VERSION_MINOR 4
/**
* Teeny version. This digit is kind of reserved these days. Kept 0 for the
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/vm.h b/ThirdParty/include/ruby/win32_x64/ruby/vm.h
index 3458c28be..877978095 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/vm.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/vm.h
@@ -49,6 +49,13 @@ int ruby_vm_destruct(ruby_vm_t *vm);
*/
void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
+/**
+ * Returns whether the Ruby VM will free all memory at shutdown.
+ *
+ * @return true if free-at-exit is enabled, false otherwise.
+ */
+bool ruby_free_at_exit_p(void);
+
RBIMPL_SYMBOL_EXPORT_END()
#endif /* RUBY_VM_H */
diff --git a/ThirdParty/include/ruby/win32_x64/ruby/win32.h b/ThirdParty/include/ruby/win32_x64/ruby/win32.h
index 197eb8a80..80e1418a1 100644
--- a/ThirdParty/include/ruby/win32_x64/ruby/win32.h
+++ b/ThirdParty/include/ruby/win32_x64/ruby/win32.h
@@ -35,6 +35,7 @@ extern "C++" { /* template without extern "C++" */
#endif
#include
#include
+#include
#if !defined(_MSC_VER) || _MSC_VER >= 1400
#include
#endif
@@ -125,8 +126,15 @@ typedef unsigned int uintptr_t;
#define O_SHARE_DELETE 0x20000000 /* for rb_w32_open(), rb_w32_wopen() */
typedef int clockid_t;
+#if defined(__MINGW32__)
+#undef CLOCK_PROCESS_CPUTIME_ID
+#undef CLOCK_THREAD_CPUTIME_ID
+#undef CLOCK_REALTIME_COARSE
+#endif
+#if defined(HAVE_CLOCK_GETTIME) && !defined(CLOCK_REALTIME)
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC 1
+#endif
#undef utime
#undef lseek
@@ -147,8 +155,10 @@ typedef int clockid_t;
#define open rb_w32_uopen
#define close(h) rb_w32_close(h)
#define fclose(f) rb_w32_fclose(f)
-#define read(f, b, s) rb_w32_read(f, b, s)
-#define write(f, b, s) rb_w32_write(f, b, s)
+#define read(f, b, s) rb_w32_read(f, b, s)
+#define write(f, b, s) rb_w32_write(f, b, s)
+#define pread(f, b, s, o) rb_w32_pread(f, b, s, o)
+#define pwrite(f, b, s, o) rb_w32_pwrite(f, b, s, o)
#define getpid() rb_w32_getpid()
#undef HAVE_GETPPID
#define HAVE_GETPPID 1
@@ -716,6 +726,8 @@ int rb_w32_fclose(FILE*);
int rb_w32_pipe(int[2]);
ssize_t rb_w32_read(int, void *, size_t);
ssize_t rb_w32_write(int, const void *, size_t);
+ssize_t rb_w32_pread(int, void *, size_t, rb_off_t offset);
+ssize_t rb_w32_pwrite(int, const void *, size_t, rb_off_t offset);
rb_off_t rb_w32_lseek(int, rb_off_t, int);
int rb_w32_uutime(const char *, const struct utimbuf *);
int rb_w32_uutimes(const char *, const struct timeval *);
diff --git a/ThirdParty/lib/Debug/x64/x64-ucrt-ruby320.lib b/ThirdParty/lib/Debug/x64/x64-ucrt-ruby320.lib
deleted file mode 100644
index 409e28b67..000000000
Binary files a/ThirdParty/lib/Debug/x64/x64-ucrt-ruby320.lib and /dev/null differ
diff --git a/ThirdParty/lib/Debug/x64/x64-ucrt-ruby340.lib b/ThirdParty/lib/Debug/x64/x64-ucrt-ruby340.lib
new file mode 100644
index 000000000..6dc27d085
Binary files /dev/null and b/ThirdParty/lib/Debug/x64/x64-ucrt-ruby340.lib differ
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/Ruby b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/Ruby
deleted file mode 100755
index 2242ced8f..000000000
Binary files a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/Ruby and /dev/null differ
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.dylib b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.dylib
deleted file mode 120000
index c5684c940..000000000
--- a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.dylib
+++ /dev/null
@@ -1 +0,0 @@
-libruby.3.2.dylib
\ No newline at end of file
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/Resources/Info.plist b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/Resources/Info.plist
similarity index 100%
rename from ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/Resources/Info.plist
rename to ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/Resources/Info.plist
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/Ruby b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/Ruby
new file mode 100755
index 000000000..aaf941ada
Binary files /dev/null and b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/Ruby differ
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/_CodeSignature/CodeResources b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/_CodeSignature/CodeResources
new file mode 100644
index 000000000..466c526e8
--- /dev/null
+++ b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/_CodeSignature/CodeResources
@@ -0,0 +1,16883 @@
+
+
+
+
+ files
+
+ Resources/Info.plist
+
+ mdb3MP/WP8Aryl0jWmY8QYSWOiU=
+
+
+ files2
+
+ Resources/Info.plist
+
+ hash2
+
+ Zt3Ta2Vn7BIb6nHxG7lFQGiXX79D/SoaD4IYetHPWHs=
+
+
+ lib/libcrypto.3.dylib
+
+ hash2
+
+ m6pnjuHEbwhh8T6E8vUZN6t+4CT9P3pneeoL/vo3fvs=
+
+
+ lib/libcrypto.dylib
+
+ symlink
+ libcrypto.3.dylib
+
+ lib/libffi.dylib
+
+ hash2
+
+ oDw3xx19lWR7ct49kjPg7XQNOEFCI460iUmKdwEVxHU=
+
+
+ lib/libruby.dylib
+
+ hash2
+
+ 9tAPqNj92ZUJngjdgfscKoZ+j4d7PgBCzd3P1sFgZMA=
+
+
+ lib/libssl.3.dylib
+
+ hash2
+
+ Aafcos4iSkHPu4sYeLCNoncnlUx9F1CYAApx4XeHFgQ=
+
+
+ lib/libssl.dylib
+
+ symlink
+ libssl.3.dylib
+
+ lib/libyaml.dylib
+
+ hash2
+
+ eOtCcklL3u8Be982Q0eOx1vTfkqI+ftD4pLRW+lrxqs=
+
+
+ lib/pkgconfig/ruby-3.4.pc
+
+ hash2
+
+ PHIv9PYk2tNNljP/yeSiKQtX/amxnN8EjgZCoixSD34=
+
+
+ lib/ruby/3.4.0/English.rb
+
+ hash2
+
+ Od6NlEpk1nFaC3gzhUY7NsieAqIxCvU4Pkof1sKreQU=
+
+
+ lib/ruby/3.4.0/arm64-darwin/rbconfig.rb
+
+ hash2
+
+ qHRqwj6idMQIxEQTZtGL4ZiurEYOi9DUx1hIW0g50gU=
+
+
+ lib/ruby/3.4.0/benchmark.rb
+
+ hash2
+
+ Mj3fe+3tgcIT5yJPy5yD7UXSeZ/iv1qhgAIXi7QzRZ8=
+
+
+ lib/ruby/3.4.0/bundled_gems.rb
+
+ hash2
+
+ Z05oRX2MlpozWHBzV6d5RbXf5EjUjDistUj/v+gmwTI=
+
+
+ lib/ruby/3.4.0/bundler.rb
+
+ hash2
+
+ DAABVyRZDBXRSJV59I6qJ6AYWNEOwsRk7wGMijgfg54=
+
+
+ lib/ruby/3.4.0/bundler/build_metadata.rb
+
+ hash2
+
+ 5qoIIgpmjsvjJXA9sYp3nuphHspAAqvtpqGEWC+0G1A=
+
+
+ lib/ruby/3.4.0/bundler/capistrano.rb
+
+ hash2
+
+ ErDJK5ZOwn0pjrl3HwtUvPmBqdnvRjnEMWGPcN2Zlz0=
+
+
+ lib/ruby/3.4.0/bundler/checksum.rb
+
+ hash2
+
+ cTI4VrPfMY2zoqrssYji0w1GLahyhH1oB4uyDsnG6+A=
+
+
+ lib/ruby/3.4.0/bundler/ci_detector.rb
+
+ hash2
+
+ QClXb1jP2uytzFP3FZs80FUeb4z3n3cgStM5Z/wOrQI=
+
+
+ lib/ruby/3.4.0/bundler/cli.rb
+
+ hash2
+
+ wyzsC30DyG3KHyB6Uu+3L2TTjSh9/uW+9poPziv4CSw=
+
+
+ lib/ruby/3.4.0/bundler/cli/add.rb
+
+ hash2
+
+ RSVt2wke6d7uVN8pCsicsz2PbIhUwGIylI+R270X1yE=
+
+
+ lib/ruby/3.4.0/bundler/cli/binstubs.rb
+
+ hash2
+
+ QIRfZ8VBkvWUBIU6RquWGpDcY4kOH1rVpc7BTn4rWvg=
+
+
+ lib/ruby/3.4.0/bundler/cli/cache.rb
+
+ hash2
+
+ z3yku+/BEjLzP4UKOWnS+DlCmbEbdVsUocTBrW89Sn0=
+
+
+ lib/ruby/3.4.0/bundler/cli/check.rb
+
+ hash2
+
+ U00vGaptATarF+g/LALjunSNw0Dol5OhuwlK/0tdVcw=
+
+
+ lib/ruby/3.4.0/bundler/cli/clean.rb
+
+ hash2
+
+ Xz3SMxcn2NHwlBmVNI/Qcd43t76Fl6nm2qkFFS6urhA=
+
+
+ lib/ruby/3.4.0/bundler/cli/common.rb
+
+ hash2
+
+ JBDvJk/xDM3aj7IbCNs0vD9AY9WNgpqaofXo2zo834I=
+
+
+ lib/ruby/3.4.0/bundler/cli/config.rb
+
+ hash2
+
+ icQjq6twgtMCNCSzcSQyZyC+OX6tj0tTNY3EaNCW9DQ=
+
+
+ lib/ruby/3.4.0/bundler/cli/console.rb
+
+ hash2
+
+ NL0ocvqH2aiA9SnkZfZkxEok4GKTICMXHms3WdU7OD4=
+
+
+ lib/ruby/3.4.0/bundler/cli/doctor.rb
+
+ hash2
+
+ LWCj2gxS9nAtua4JU30HBmT1GZACKfCcpc9Gj/HaoRM=
+
+
+ lib/ruby/3.4.0/bundler/cli/doctor/diagnose.rb
+
+ hash2
+
+ 7pGmPnz2hHXc0dLV/no45x8caf5e673XruHb1k00y2o=
+
+
+ lib/ruby/3.4.0/bundler/cli/doctor/ssl.rb
+
+ hash2
+
+ 5kDesWtl8WPigmHGBkhHiqm04/qOZfisUhtUP1NqRfw=
+
+
+ lib/ruby/3.4.0/bundler/cli/exec.rb
+
+ hash2
+
+ TVe2oExYhSPQlnGoOwFSMSpUEz7sL8slrUFidgywPWU=
+
+
+ lib/ruby/3.4.0/bundler/cli/fund.rb
+
+ hash2
+
+ t4VAZWPmDLJE6J2M1xhYKgzGB6kLXl0vtloELE1pqN4=
+
+
+ lib/ruby/3.4.0/bundler/cli/gem.rb
+
+ hash2
+
+ xFYytcgzDXz7kyG8bdh3ZBqmYZuUzupCCI1UB0f7NIU=
+
+
+ lib/ruby/3.4.0/bundler/cli/info.rb
+
+ hash2
+
+ VA5E51l9fZKxag0ffRrbRzAJ/CqDXTo6zi644NNqRrI=
+
+
+ lib/ruby/3.4.0/bundler/cli/init.rb
+
+ hash2
+
+ hv1m8R9qeiOmJeip6h/EbwVCP9iSTTqM5hQgwQzai6E=
+
+
+ lib/ruby/3.4.0/bundler/cli/inject.rb
+
+ hash2
+
+ 1w2GhvnWTMaOtUry1npX9c8hPXlNonMH3PCphwa5zsg=
+
+
+ lib/ruby/3.4.0/bundler/cli/install.rb
+
+ hash2
+
+ 2wWah1MSs8uuW8+dQbvt0chCDHwIkWk7YrQvvuqWG8c=
+
+
+ lib/ruby/3.4.0/bundler/cli/issue.rb
+
+ hash2
+
+ lWy5CWwX8tJTk0ufD3A6BFjmMbi2I7+/Ea9Ifj6A/vc=
+
+
+ lib/ruby/3.4.0/bundler/cli/list.rb
+
+ hash2
+
+ yCDXfrl58j8C+xTfYcUePlOQuCJHfFpEe7y2CaICZCU=
+
+
+ lib/ruby/3.4.0/bundler/cli/lock.rb
+
+ hash2
+
+ b7ctw8q5jyakKmUbDqZTQ15Yi5rF1Mo30+CqSuD+lv0=
+
+
+ lib/ruby/3.4.0/bundler/cli/open.rb
+
+ hash2
+
+ q9/zYu1eM5Eia2Cpw/Ftx6kaQkzDYBoa6pBNW5n6clM=
+
+
+ lib/ruby/3.4.0/bundler/cli/outdated.rb
+
+ hash2
+
+ UVTWhXtnfVAe38Q2TsSjy7Xw3fU+SWvjoKgRqP93P0A=
+
+
+ lib/ruby/3.4.0/bundler/cli/platform.rb
+
+ hash2
+
+ E+7J9Vh15M2t42FmxVOGEgpyYYbjrRrEHSzgvW6zqic=
+
+
+ lib/ruby/3.4.0/bundler/cli/plugin.rb
+
+ hash2
+
+ HBnJ2Ppdc0Q1BmwgmQOvf2nseDfmAmtwh3UN2pJopkk=
+
+
+ lib/ruby/3.4.0/bundler/cli/pristine.rb
+
+ hash2
+
+ IftGOR8B9L9J4chJwUkhMOGQAKw+ByfhaZhp4qXqK60=
+
+
+ lib/ruby/3.4.0/bundler/cli/remove.rb
+
+ hash2
+
+ 8LqoHYeQPylvDDHQmbSZte3DxuX+MJQokRMAey/Ig20=
+
+
+ lib/ruby/3.4.0/bundler/cli/show.rb
+
+ hash2
+
+ gOdVVECUYKmqFbB9/ZQ+0VvK6+oGKPJzV9JwNjymDE4=
+
+
+ lib/ruby/3.4.0/bundler/cli/update.rb
+
+ hash2
+
+ tIhQ5cER4E/hHGl3BEMYlh0lD9dmY2CwGx3UKSd3Np0=
+
+
+ lib/ruby/3.4.0/bundler/cli/viz.rb
+
+ hash2
+
+ HHozqOCzclZ4bqQ/XMPK+Sh8SWiZ+2aeyqKlM3xy6bA=
+
+
+ lib/ruby/3.4.0/bundler/compact_index_client.rb
+
+ hash2
+
+ f+Y9ho1rWJn7JqIaxtPQWvEyoF71ZnlPHtPBTyXLb/U=
+
+
+ lib/ruby/3.4.0/bundler/compact_index_client/cache.rb
+
+ hash2
+
+ 2TWYDAzWglDWfHUEaE1EXnWYyVfDOTWfm7JuMKXhEEE=
+
+
+ lib/ruby/3.4.0/bundler/compact_index_client/cache_file.rb
+
+ hash2
+
+ nUjJhq2TZgdJzLeYtRf7dDrg94aGJLTD0Ma3HtuokQo=
+
+
+ lib/ruby/3.4.0/bundler/compact_index_client/parser.rb
+
+ hash2
+
+ 6m1tVphzHr7R4udSPbgdhVbEtHcvNbup1vNvnmp4Qes=
+
+
+ lib/ruby/3.4.0/bundler/compact_index_client/updater.rb
+
+ hash2
+
+ 2WlS/e8z5iud+cJUCQPhKUP7CwmXnJIocrLNTu6DACU=
+
+
+ lib/ruby/3.4.0/bundler/constants.rb
+
+ hash2
+
+ XCvQR1+o6Ja88PdIP6ryLMwLk3vCFtgDw/f8MKAsJQw=
+
+
+ lib/ruby/3.4.0/bundler/current_ruby.rb
+
+ hash2
+
+ JztSaZT2oF86j41b0ETNA0PBQRYNojAJW079vTL3WQw=
+
+
+ lib/ruby/3.4.0/bundler/definition.rb
+
+ hash2
+
+ Z1shYXqgGqpPAcB6DFhVQkGbOPdK9EuO16rHMb81wSw=
+
+
+ lib/ruby/3.4.0/bundler/dependency.rb
+
+ hash2
+
+ akVL8T476nA8PVT5Ev8+G8fC78BnQe3IERawYVdIdIU=
+
+
+ lib/ruby/3.4.0/bundler/deployment.rb
+
+ hash2
+
+ vCXo3VntmL7D+GDZyf/Aoqk2pRop0nnjdOYcvkyMLlw=
+
+
+ lib/ruby/3.4.0/bundler/deprecate.rb
+
+ hash2
+
+ 99x+0k3V/qsUwV5PO3bERsL82iiT1BhTIaOqr/ERg+E=
+
+
+ lib/ruby/3.4.0/bundler/digest.rb
+
+ hash2
+
+ ttqXiWalwwFpP4i1X1ntdL4dUtsfUIwbsEm0ox4TMz4=
+
+
+ lib/ruby/3.4.0/bundler/dsl.rb
+
+ hash2
+
+ /p6F5T9e+B6ZpMhVGdOYZr443609rfaWV3zRfvhhyz8=
+
+
+ lib/ruby/3.4.0/bundler/endpoint_specification.rb
+
+ hash2
+
+ smF2vNortgqpsUEdFcRDqwsA16C/bKW16ognBpzERvE=
+
+
+ lib/ruby/3.4.0/bundler/env.rb
+
+ hash2
+
+ ad5NNsk37vEPoGxaYAFBV9pvPTipkw7Kn3Ne0iULLXs=
+
+
+ lib/ruby/3.4.0/bundler/environment_preserver.rb
+
+ hash2
+
+ 88xuR0c6kX8R5BSrqMEazcB4EAIt3CL/tPbIqLrfsJk=
+
+
+ lib/ruby/3.4.0/bundler/errors.rb
+
+ hash2
+
+ 9G3QcCvuj7f1ZuG5pWCGlP6ufRdQdHLOppoKxrsgUJI=
+
+
+ lib/ruby/3.4.0/bundler/feature_flag.rb
+
+ hash2
+
+ 4KhxAG6IaXL7gy0Vf7UDiivqCNskt96GnzvkQVop+2o=
+
+
+ lib/ruby/3.4.0/bundler/fetcher.rb
+
+ hash2
+
+ xYvRmLHD/pLBtUMiQkDLD2HmNTvZPwknLCoL30ZWHo8=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/base.rb
+
+ hash2
+
+ 5i5NhMqH0nuhzH68D56Rhm7LJ3ZN+RKDTXvljZafXlM=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/compact_index.rb
+
+ hash2
+
+ wybuvpmuJUbE5ppqcUXar80/ZPm+4ep8ivPfMOtQRBE=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/dependency.rb
+
+ hash2
+
+ EgvgiFxZl0FS3WS0MVEiuBCtP2jH3n6v6iAaAPs8k9U=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/downloader.rb
+
+ hash2
+
+ mBvAANYrfkjBeZ/0daDIEPxu4vXb1w7E2HoUJFE9yE4=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/gem_remote_fetcher.rb
+
+ hash2
+
+ AXKjScNIpwUx+0SRHoUncGCptZCGLjI76OTmMQ1pPqA=
+
+
+ lib/ruby/3.4.0/bundler/fetcher/index.rb
+
+ hash2
+
+ 0261l1AyZ/3JcHTws+YwcVvaJPXaZMOcQGe1VaJ6fIY=
+
+
+ lib/ruby/3.4.0/bundler/force_platform.rb
+
+ hash2
+
+ nXwSp+dtWRw1S4nhVcuIKCmrNTeGSLSbnrDMQ8zmj00=
+
+
+ lib/ruby/3.4.0/bundler/friendly_errors.rb
+
+ hash2
+
+ qvo8xAo6TyOxidt1jZGR6FbjPuXLyT2ifQmd5ZeGvJQ=
+
+
+ lib/ruby/3.4.0/bundler/gem_helper.rb
+
+ hash2
+
+ okkDDStWUdx5CbUgW/1WiCbdV+sc2/nS+jo42TiXTlA=
+
+
+ lib/ruby/3.4.0/bundler/gem_helpers.rb
+
+ hash2
+
+ Aii/5Vbnu6DzBWxnh1EtKBV25jnEJ9SUqwnTu5DXgz4=
+
+
+ lib/ruby/3.4.0/bundler/gem_tasks.rb
+
+ hash2
+
+ LX7xZWX1EcPM3+QagPNdQdICmPwkM+MzhuzunaajHPM=
+
+
+ lib/ruby/3.4.0/bundler/gem_version_promoter.rb
+
+ hash2
+
+ rxQ7mXB44i0bJk8QgZjYAe7JOL1DCYWYw49lvE9zwWk=
+
+
+ lib/ruby/3.4.0/bundler/graph.rb
+
+ hash2
+
+ EMQFZig5UIvKcS5udxLOtqDxCNzIlc1fjCkVHVI7ByE=
+
+
+ lib/ruby/3.4.0/bundler/index.rb
+
+ hash2
+
+ GRGOmDAxSWN7aFPS6v662jGzCIEtYCYUkuT2n035ce0=
+
+
+ lib/ruby/3.4.0/bundler/injector.rb
+
+ hash2
+
+ 1CpRPjMenOzJFe0ccpID4yh6wKt22HmwT8eDeIfJBEk=
+
+
+ lib/ruby/3.4.0/bundler/inline.rb
+
+ hash2
+
+ BoRPO2UNi2NWBmgLdcdjbJ3Tzf/Qr2FVU8EKH1R9cDg=
+
+
+ lib/ruby/3.4.0/bundler/installer.rb
+
+ hash2
+
+ H28RZML36p2TBNMlBWdzfGXTKnVaWOMyznPP1Z0CIGc=
+
+
+ lib/ruby/3.4.0/bundler/installer/gem_installer.rb
+
+ hash2
+
+ ZxOg8vE8yXX9o7wuukWuh7eqrcNPNq1d5ZZ22ZrOB1o=
+
+
+ lib/ruby/3.4.0/bundler/installer/parallel_installer.rb
+
+ hash2
+
+ 0nNO9lIAzohdskscVzZn9DhZZYWfqW1jkHRaQ55TXLI=
+
+
+ lib/ruby/3.4.0/bundler/installer/standalone.rb
+
+ hash2
+
+ v3N+vpDP6a70tQBf0OcQd8OPvBmnvhgn2yVPRTtuHQo=
+
+
+ lib/ruby/3.4.0/bundler/lazy_specification.rb
+
+ hash2
+
+ csByVQgagGMbNsqxFHRRBzJnpNgn+ske1NCN4xdbcPY=
+
+
+ lib/ruby/3.4.0/bundler/lockfile_generator.rb
+
+ hash2
+
+ KqS6M36FwUxjQ+wNo3rzn6+ZtxJilV5cweqXasp5VbE=
+
+
+ lib/ruby/3.4.0/bundler/lockfile_parser.rb
+
+ hash2
+
+ Kac2VKPqDARGOuxgV9XWblIPjSaZ0N3E3TDJ75ygAWI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-add.1
+
+ hash2
+
+ sAlUsvUqytTyT/YAH7P51/F1Boq+4xCMNhMockBCdQY=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-add.1.ronn
+
+ hash2
+
+ 7axd1i5gGr3KPoShO21IoHyzWrKRSaqs+tbv+dwmCx0=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-binstubs.1
+
+ hash2
+
+ +pHbWA2wP1Fp3CXS33TZUX93VSP5/+mGnducv9GXbyk=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-binstubs.1.ronn
+
+ hash2
+
+ HPYIxX+lH3YxvfK41pNg7Y8csMx2jMRQVfEE7A2Q0Bc=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-cache.1
+
+ hash2
+
+ pZ/oIpQQA2HnPiqEAIZUZOwfbC+EJNP1scUNz/okTUI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-cache.1.ronn
+
+ hash2
+
+ p30z1Bj/5XNqcTg2zHE0DyKh9ISBheHUiH7sWqMJeFM=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-check.1
+
+ hash2
+
+ xOd/SVk0nuU+yWB5J80AH4cC46MwVN6AVe9sbilW1lE=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-check.1.ronn
+
+ hash2
+
+ 9ZxK6Ka1fEtGFSDd1ptbTB/bnuSRuBk0QIYhOQaLpwM=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-clean.1
+
+ hash2
+
+ 5yyg/4TTFK9ao0U80R7d/oG2kU/1UzVILg3QNZ5HE9U=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-clean.1.ronn
+
+ hash2
+
+ 0oUNTrpMfUnOxz+0VOy2a59ebeLW4azB0PAn9c/anKI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-config.1
+
+ hash2
+
+ xAg8KO6vfxinqkgk7bsYp6fDCZZ207eaFvicHPIv7ZU=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-config.1.ronn
+
+ hash2
+
+ L5XqvcBnu1/4PmhtZnuRyFJWSxTPUrdnnDKmFIt84eQ=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-console.1
+
+ hash2
+
+ FgW/0yzcqn9FntDlhN72ft9Ox0Ixve2ug2WYfjHpSW0=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-console.1.ronn
+
+ hash2
+
+ 2JGXETU+eNxftspJxkesDUaAkCiGRtWCjWpGFHrL+aI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-doctor.1
+
+ hash2
+
+ b/dquvNmSSGTIS/il4wubNXv/8KtV8pOiodhWFPhCqQ=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-doctor.1.ronn
+
+ hash2
+
+ AmwcZhWNjo/laLysw+l/qhpYFCcnAmyfRXEEZzjXXn4=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-env.1
+
+ hash2
+
+ Z8w5SeuX73lXLRd6eQlHrcBixM8Jolz3TzpsBN4aq4s=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-env.1.ronn
+
+ hash2
+
+ fvZqXhcl/ZmUeNnMsBl+ZJZw2uPbzwjD8nd6Osj27wA=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-exec.1
+
+ hash2
+
+ RQImD5hdJ2fia07cqfIRN1TZqdbMdCvTovFR3L7VG0s=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-exec.1.ronn
+
+ hash2
+
+ szSHe8x4SK+im9wtEKwq/E3+ixnPecmBq3+6ZNKZsAc=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-fund.1
+
+ hash2
+
+ YuQLqVEX5x7voZJUsQ1xe6+xHEGBWphh5H2hutqdWZQ=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-fund.1.ronn
+
+ hash2
+
+ t9cLvh5RGXhAclJlssCJbRxfcAGXDBYVnfhQDFA2ZZI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-gem.1
+
+ hash2
+
+ 23O1abz5p8yALYNDOddB2J69a6XeopwqT4kHLWn8HtE=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-gem.1.ronn
+
+ hash2
+
+ g0jHZZe5IdZm+Dkxdz78MZIDUUSVobXMbSvrV6/WPrs=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-help.1
+
+ hash2
+
+ OqCkGHZf/TkENwxKcYRNtGsk1QCDVBzmYNW4z3scHz4=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-help.1.ronn
+
+ hash2
+
+ UTA6HPM6btqyUMOOu3chYcOszWBV2RDLo3r3/Z8DXqY=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-info.1
+
+ hash2
+
+ bMOOFn9rXiB2Yysr7fyXUnchxzM7PtSpa4cK5+UIv8g=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-info.1.ronn
+
+ hash2
+
+ Mt94cYNRj3a6LrORATHvJYtqwY4NC6KMXfcC9vWQp7U=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-init.1
+
+ hash2
+
+ Bf8bT7o8lGWo+dqMYm/BOB6F3W0i3UomOOFD4r80oYo=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-init.1.ronn
+
+ hash2
+
+ cuAOcFj3OYksite1Wf7p1JakHDtFzzJAR84jFgcovHU=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-inject.1
+
+ hash2
+
+ 7rbqzrwcg8epze+w+thBkWIPzXoLT1g5j2zQzmZGiMU=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-inject.1.ronn
+
+ hash2
+
+ 5kMz/K6iq6N75jzBOEAy63rDP6qBrmAZWx4+/OIp0hg=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-install.1
+
+ hash2
+
+ VfitQBdCLk7CRYs5/divYJnjDybJgpQZQZqyvpdnZDo=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-install.1.ronn
+
+ hash2
+
+ Mh/0pFk0ak/4fRR4VOE5de0nK/9vXedq4tqmHvk2HOI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-issue.1
+
+ hash2
+
+ 6oKKM88tJM6E/W4Mx9Ee51tnAcI+jvPXFPmS3R+WS54=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-issue.1.ronn
+
+ hash2
+
+ CmgioPS80cuW1V8773YTAptMQSTQTURN5pG9IREg0BU=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-licenses.1
+
+ hash2
+
+ 1b1iMqJGSWqQ0koa7OkB3lRM8Vts37SGs59jHWZfPd0=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-licenses.1.ronn
+
+ hash2
+
+ ayghaE19Q0TYtXIFKItzST8AqTUMO9N8POH/ZFPYrls=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-list.1
+
+ hash2
+
+ 36dHvtPCocJKq/XxWtEikEoqT1huyc/VPsCWYRTqvow=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-list.1.ronn
+
+ hash2
+
+ k1/3m0nFwc1vhMhM8in1btaK2uoc7TAgYKLPjWJpWAA=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-lock.1
+
+ hash2
+
+ YTlXvKP9zcZ6WWkJyVulCXJfaJfGj7FnJoZM5GC81xY=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-lock.1.ronn
+
+ hash2
+
+ Qe80SJxYBIB7QfKDryvRZZ/tJPvJ6pqtx97YHcVD86s=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-open.1
+
+ hash2
+
+ l0b+z51khBCnrbo/OJ68DTcGEAGgeBjLqh0J1qg7/5I=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-open.1.ronn
+
+ hash2
+
+ 0XwldEoYU1vpEkfaktQ5P7thmBuDvg5SexNVFbG/TFM=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-outdated.1
+
+ hash2
+
+ 11tvc+BoL1b+n+Mn1AAj3gKL2d9yoEcHBDj2c29aIgk=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-outdated.1.ronn
+
+ hash2
+
+ ZhGexLRdQrsI3rYZwEC6gbJc0FS3xurvFNtjbsjAiF8=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-platform.1
+
+ hash2
+
+ rrCHOraynmcgn29SXuTOBUAgLr4NTJoymD4y5sCY+9A=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-platform.1.ronn
+
+ hash2
+
+ 0McnnSXV2cRsZZUwNyxVA8kShspumYJBgsnRgOw1rCw=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-plugin.1
+
+ hash2
+
+ WQBqTlZxD4h5m5ZzeCFPbOaz5pvb0LoA2lGpcSxU59Y=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-plugin.1.ronn
+
+ hash2
+
+ cG7cq5ubHaFmSOzJECQDzFPwfxRcnlG6mIwk+tG8Qco=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-pristine.1
+
+ hash2
+
+ hoe2AyX3p2cWsUaVmlCfBbBul+xK8VLwRh6wfdPmJX4=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-pristine.1.ronn
+
+ hash2
+
+ 1YPQbSlDJ2NTUyI7HpZLK7RYqE1AS0RzO7pKyxVmOSs=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-remove.1
+
+ hash2
+
+ /l2NNOonzIbxfqv30D2XIAydLQ3eYuKrt44QTzacMwk=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-remove.1.ronn
+
+ hash2
+
+ 6QYRCZdKwheI4ycnpep3WAstA6dIEmOe0ldx8qs0zkI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-show.1
+
+ hash2
+
+ uM+sKVa23Fl/x4O1FWis2ws6oYgifMscTXzgNS+qQas=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-show.1.ronn
+
+ hash2
+
+ r+0SUzzzoq6lK5HhTbN752FR7uVfDSrVneCLqRMj0QI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-update.1
+
+ hash2
+
+ OhCnllOlklGtZK+ipzGCvgpd8qygyKWSCwXx3B1hHLU=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-update.1.ronn
+
+ hash2
+
+ p4i6bembWvijbua78HV3KscJjDLNbSv6oUrf3A0jX/o=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-version.1
+
+ hash2
+
+ KYaSePNfT9ajl/zO3NQQlMBBLa8eKMPsCXUtA7CKlwA=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-version.1.ronn
+
+ hash2
+
+ THGVlc0hqntEMga0BlFU/duZEYZBeSfxojMcfBtB2Rw=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-viz.1
+
+ hash2
+
+ 4x/hVnQpL+yiJXiG4h0XGWx0/bfyMysTo4FtlM+3HWo=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle-viz.1.ronn
+
+ hash2
+
+ Xyri+ut1vubUNOVF1Gp4jwYTBs296/HT+6U9ns7SLUI=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle.1
+
+ hash2
+
+ NAB11ZXWwqksUiZvqHpHHy31UdLDbsRnYVKQl9p5AN0=
+
+
+ lib/ruby/3.4.0/bundler/man/bundle.1.ronn
+
+ hash2
+
+ STv80LwXnl42Oo3AAP+8ModK1vILkxzv1IXyt4iLKso=
+
+
+ lib/ruby/3.4.0/bundler/man/gemfile.5
+
+ hash2
+
+ iZQ624AhXzOzLPo/XWITixM6lxjRpmODcBl5Tahs2ac=
+
+
+ lib/ruby/3.4.0/bundler/man/gemfile.5.ronn
+
+ hash2
+
+ SEpiN3fBC0BLnorYrmeqDRk27RfZX0+RUiWtdVLPN/U=
+
+
+ lib/ruby/3.4.0/bundler/match_metadata.rb
+
+ hash2
+
+ K5U2zM2sSL6zFG2/tjlDNP3fhTeqPtXdJ4JenwSxG/I=
+
+
+ lib/ruby/3.4.0/bundler/match_platform.rb
+
+ hash2
+
+ NmXevTL+EUo6B1KOgfWNJsf8CqGUwpP68av/OOcE5Vk=
+
+
+ lib/ruby/3.4.0/bundler/match_remote_metadata.rb
+
+ hash2
+
+ AZsCxEtZfvUFoueghswyXhNOlRel8351gaU1Q9F6MRo=
+
+
+ lib/ruby/3.4.0/bundler/materialization.rb
+
+ hash2
+
+ ZShcIppD/CViUooBJEQZGynhQyaa5Oty9xlDpsB+7cQ=
+
+
+ lib/ruby/3.4.0/bundler/mirror.rb
+
+ hash2
+
+ Vvb3ItXa26mpDEkzV/VdorkbmfgLfJnKFHxi9Axl5WU=
+
+
+ lib/ruby/3.4.0/bundler/plugin.rb
+
+ hash2
+
+ /c8o6TdHMqrf2eYW54K3a7qUjy7dV0SqvPAFy3SzXVU=
+
+
+ lib/ruby/3.4.0/bundler/plugin/api.rb
+
+ hash2
+
+ FksomyyY4QUPWrkgsrjxpBGdIL3AScF5Ljy+BzFUjHE=
+
+
+ lib/ruby/3.4.0/bundler/plugin/api/source.rb
+
+ hash2
+
+ aa5JZqdTVt1j70epUqWahvE96OA+PC6x717iJ+X1WJU=
+
+
+ lib/ruby/3.4.0/bundler/plugin/dsl.rb
+
+ hash2
+
+ iNiVaT1sRROM5r/DK9qoFkEgUXIyewJ/TzKkwGWPiOk=
+
+
+ lib/ruby/3.4.0/bundler/plugin/events.rb
+
+ hash2
+
+ +Rc8Wfkpd77MAalqoS6W27iW/qBUP2BuBvEVweTnnKI=
+
+
+ lib/ruby/3.4.0/bundler/plugin/index.rb
+
+ hash2
+
+ /2mcF+CUy60wi8sGLB5sXiSX2yUU/dkQO1dy7Xk2Vbk=
+
+
+ lib/ruby/3.4.0/bundler/plugin/installer.rb
+
+ hash2
+
+ 6u5/uTDGFjGaddFUZOYE5wTUDnFRIlG0ytBb44t/CaI=
+
+
+ lib/ruby/3.4.0/bundler/plugin/installer/git.rb
+
+ hash2
+
+ tIFV4SJM/G4nbQIUhBz3kZauZs/OvOLG4TsAl0FoLxs=
+
+
+ lib/ruby/3.4.0/bundler/plugin/installer/path.rb
+
+ hash2
+
+ RS+jOSCAkzrDXM2gPJX2mzyhMBJtj8sqX0m8bNNHiNo=
+
+
+ lib/ruby/3.4.0/bundler/plugin/installer/rubygems.rb
+
+ hash2
+
+ JitfqJcO8HFqAJYs6AuYxStOPVxItLdZ+Yxgy0fJ8Xo=
+
+
+ lib/ruby/3.4.0/bundler/plugin/source_list.rb
+
+ hash2
+
+ pouDpXgSMiB/ESlQryN3nIWtTmWf+4nV54Aqu0+B5Tk=
+
+
+ lib/ruby/3.4.0/bundler/process_lock.rb
+
+ hash2
+
+ fKyf4X+1+8oOgrLMWVuC57xgrcJpWUepIsuNI2Q42Yg=
+
+
+ lib/ruby/3.4.0/bundler/remote_specification.rb
+
+ hash2
+
+ eCOs8B14CI2XxJ76dCuPXG5FIZUqHXd/etNfTUarQyE=
+
+
+ lib/ruby/3.4.0/bundler/resolver.rb
+
+ hash2
+
+ D9ZL55oNVXmWHT3frfnxrtTAZB3EfMtRcOc1nifweTY=
+
+
+ lib/ruby/3.4.0/bundler/resolver/base.rb
+
+ hash2
+
+ Zoxgi+ziKJhDpNDbbmclyUf6cT2ujUjkkjqFocDkKgw=
+
+
+ lib/ruby/3.4.0/bundler/resolver/candidate.rb
+
+ hash2
+
+ TACkoWC/xrFx5Gze3C+EJE8PEjkTWPBRTCA5zhP+3wA=
+
+
+ lib/ruby/3.4.0/bundler/resolver/incompatibility.rb
+
+ hash2
+
+ f2mzFDpZxh1Ab6dH2StLaapMxPBy3mckRUZvK7rh2dI=
+
+
+ lib/ruby/3.4.0/bundler/resolver/package.rb
+
+ hash2
+
+ H/oaVq8U5JWjb/psrGo2yIXnPLfkIZn8JfUe+4AwmXA=
+
+
+ lib/ruby/3.4.0/bundler/resolver/root.rb
+
+ hash2
+
+ SmtoqxWVR2mFy0yXEH4dib3Zh4sMXQdYJ8GUcnFJcqg=
+
+
+ lib/ruby/3.4.0/bundler/resolver/spec_group.rb
+
+ hash2
+
+ xoU1oqVkY8eHjjjZjOiA1q9rKxDMr6PuFu+bYwUfUm8=
+
+
+ lib/ruby/3.4.0/bundler/resolver/strategy.rb
+
+ hash2
+
+ NT8m6oCydqCNofh2xCp82VPFn8jJytKQlceeQHwxOps=
+
+
+ lib/ruby/3.4.0/bundler/retry.rb
+
+ hash2
+
+ thONj9bjGrYpH/ViTLjLP15IAWLBLN9jI/7ERJ49Zjo=
+
+
+ lib/ruby/3.4.0/bundler/ruby_dsl.rb
+
+ hash2
+
+ 7a76FSyfPHjy7+obhLfBv26BlMABnyemjFx/sxd6sKk=
+
+
+ lib/ruby/3.4.0/bundler/ruby_version.rb
+
+ hash2
+
+ ymExROUCp3E5sCX5pbc+OnxiQTK/QmgFpXFb2udIHoU=
+
+
+ lib/ruby/3.4.0/bundler/rubygems_ext.rb
+
+ hash2
+
+ IOmIuIiK6hy+P8OhbjXpUXxdKHVxXwlPGh7U6JYbHkc=
+
+
+ lib/ruby/3.4.0/bundler/rubygems_gem_installer.rb
+
+ hash2
+
+ qRDMcgTy1J3tJltFOYlSRrvoNOqz7NTv1oT47v5+njE=
+
+
+ lib/ruby/3.4.0/bundler/rubygems_integration.rb
+
+ hash2
+
+ GdC4fc+xkmh/XQs5JcXe49eeCzgMY5lWTrzbWkmgDrg=
+
+
+ lib/ruby/3.4.0/bundler/runtime.rb
+
+ hash2
+
+ R4+XOwTB3iewjbtsvnQ1LcFHpm6y5lnJTajwvJ5ecGo=
+
+
+ lib/ruby/3.4.0/bundler/safe_marshal.rb
+
+ hash2
+
+ dCbcU8T1U4KAJQrPQXx+ZcFc2UdHw1LvfCHaL6KryUg=
+
+
+ lib/ruby/3.4.0/bundler/self_manager.rb
+
+ hash2
+
+ uo3myvMq3DbjHR/mSrzYbWGxwGHtn24vOkiOMWJvP+A=
+
+
+ lib/ruby/3.4.0/bundler/settings.rb
+
+ hash2
+
+ XzpGejA2Hw/UNHlczLNOBEYIAkddKDlToYhOOTn3E0U=
+
+
+ lib/ruby/3.4.0/bundler/settings/validator.rb
+
+ hash2
+
+ W4vV6N3kU6ZoNJnkvToLHJ5nhJmCrHL+CG5HKMrMFTc=
+
+
+ lib/ruby/3.4.0/bundler/setup.rb
+
+ hash2
+
+ kbeOIBvcHcqGa13/FxfjS3yy8MPHKBaym7vsxNBFoNw=
+
+
+ lib/ruby/3.4.0/bundler/shared_helpers.rb
+
+ hash2
+
+ IM9wTpvJbVeeQqttTDKKUS7ClN35nsyOKVdtA2XUCr8=
+
+
+ lib/ruby/3.4.0/bundler/similarity_detector.rb
+
+ hash2
+
+ rqfXer5HHuUGSOhWliHv67Mdc3tsgC0uAdij4KqCh0E=
+
+
+ lib/ruby/3.4.0/bundler/source.rb
+
+ hash2
+
+ Z7QoAVqA6NIM5UC6AfnreG44IpRcoXJepOBrlB+cf98=
+
+
+ lib/ruby/3.4.0/bundler/source/gemspec.rb
+
+ hash2
+
+ COFpdM0J4AsvfpJYwJsLkZ973AyeqG9AUI45hpmwJOs=
+
+
+ lib/ruby/3.4.0/bundler/source/git.rb
+
+ hash2
+
+ m7HerP7pCkjpmvzWntAs/JyJjCPfENVkoC2900b7gTA=
+
+
+ lib/ruby/3.4.0/bundler/source/git/git_proxy.rb
+
+ hash2
+
+ hh5yf3MaiYHu1+3CiEeW8wT3k0S3D9oIIz26uxr1/S8=
+
+
+ lib/ruby/3.4.0/bundler/source/metadata.rb
+
+ hash2
+
+ 8Zf4YJkSdcH9bDGdvtFBeorjGVJwKu15pp44xvWRTIk=
+
+
+ lib/ruby/3.4.0/bundler/source/path.rb
+
+ hash2
+
+ 8IHfRVTJvgMu2LJWdzIqSOXVkZOav8vAKhQpZ6sp3Ag=
+
+
+ lib/ruby/3.4.0/bundler/source/path/installer.rb
+
+ hash2
+
+ GnOuJ2xdMrkmwZuH+xoh3cv6yo8KDlc9ME8/XEqwvyU=
+
+
+ lib/ruby/3.4.0/bundler/source/rubygems.rb
+
+ hash2
+
+ t0GVqdS962Oq3eF6DFYLIvOw72AeR+lXdUrIir1rsZI=
+
+
+ lib/ruby/3.4.0/bundler/source/rubygems/remote.rb
+
+ hash2
+
+ Xp5DNupqKSEwAwbOo+abxhWbO8OTUCArrkgAXAu5UQc=
+
+
+ lib/ruby/3.4.0/bundler/source/rubygems_aggregate.rb
+
+ hash2
+
+ TlOOTHqOQ+BPEy+K4zwVObt0vL0CssZlKBEHzDaCOVY=
+
+
+ lib/ruby/3.4.0/bundler/source_list.rb
+
+ hash2
+
+ 0aBNCdueU7PF65y3DOMtER041WZkZFIQGAtSbTjGGCo=
+
+
+ lib/ruby/3.4.0/bundler/source_map.rb
+
+ hash2
+
+ oxsFDCyxF0WzgzPJJSZA0QEvsMVwkmxwu2ZVSMaDetM=
+
+
+ lib/ruby/3.4.0/bundler/spec_set.rb
+
+ hash2
+
+ uZ47TcXusGI1dESZzoEfjTbVQaDu0QpEiprcWRLZxfM=
+
+
+ lib/ruby/3.4.0/bundler/stub_specification.rb
+
+ hash2
+
+ fT0hmLI38X59KJ9F2cpgdPyEG92zKGCCuCKm32JhOPk=
+
+
+ lib/ruby/3.4.0/bundler/templates/Executable
+
+ hash2
+
+ PwPkn529jquShgKRsID5jkB+kveFamcR2Ce2EvCEcHY=
+
+
+ lib/ruby/3.4.0/bundler/templates/Executable.bundler
+
+ hash2
+
+ 8Hg06q2f6ZxzHjljiP7/PLWI+btQ8LGcJO1TZuZjuB0=
+
+
+ lib/ruby/3.4.0/bundler/templates/Executable.standalone
+
+ hash2
+
+ AiZBMax9fNK8o5J3yUPcpxw7ScpQWlGin2HJo5TKBa0=
+
+
+ lib/ruby/3.4.0/bundler/templates/Gemfile
+
+ hash2
+
+ UHVr8grIoKPQgVgao9pmnHCxDAXdXTM06RmG7BES8E8=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/CHANGELOG.md.tt
+
+ hash2
+
+ H6SR2BgTAyICeenaJvUegCPEUoG4U5ZCrIJxVHof5KU=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
+
+ hash2
+
+ 8CsFfuZEpPfnIhVrhJfWuJMhAcogg0JdgpeQeX1vU48=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/Cargo.toml.tt
+
+ hash2
+
+ GbemP0+enlZhERrRXwQ9kn1f8H1nWYQCvg0DoaxCT48=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/Gemfile.tt
+
+ hash2
+
+ Co7CirzQcQ1eXW0Aa4ltB5GTC/EfVLSLwfb4Xcxiu7w=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/LICENSE.txt.tt
+
+ hash2
+
+ tYc5DofcGoo+5bunxYQbmywMUVIboJzNhihj1F/dOh0=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/README.md.tt
+
+ hash2
+
+ AZBMFSz/aVjzNdP32ASDRHwsvXLl8i3jKcIaD9YVcyg=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/Rakefile.tt
+
+ hash2
+
+ kIT0kb0PUq+2n4cfp23MGNhbS3nK2jdz2ufMblY3pO8=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/bin/console.tt
+
+ hash2
+
+ LhXXtzybrbpl4S7akDd5cPOqCX7PUSzUj2uPNmv3x8k=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/bin/setup.tt
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/circleci/config.yml.tt
+
+ hash2
+
+ stUqK5kUvXI8bSLf10tncYfhrkl3SQKiwQMsJ0jGhgI=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/exe/newgem.tt
+
+ hash2
+
+ 2uJKg3pQ3GWWU1lT6JO0ym8iuJ/R2WFbkcj6EwS3tMU=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/Cargo.toml.tt
+
+ hash2
+
+ XAHL5TL1YFkrRM4wrPvALu2SCoyTjMlOC9eVFEgjg9o=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt
+
+ hash2
+
+ bHtUrCfrCZrpDagF2L9XF6nY4lxsn2xUCQ3dhANC+yw=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt
+
+ hash2
+
+ dwVmGn0q+hwwB3+5/Tbj8H6Iazaq+KRErQ231ZjhIQE=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/newgem.c.tt
+
+ hash2
+
+ maaninn9eqHh0l4ylsyxX3LSvbjLwqr6K/bedX40CgE=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/newgem.h.tt
+
+ hash2
+
+ 4IoOw8jARb1Q1JcMJKTR1KisrOQCAUyML1MeL9UiwYU=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/ext/newgem/src/lib.rs.tt
+
+ hash2
+
+ jMaj6/3jviPhva5lDqm2M6K52CjiM+z8jYBiAE26DbY=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/github/workflows/main.yml.tt
+
+ hash2
+
+ 8hCVJXYTZfODw6H+Yi0kyR0CJbGZOWtZd1YI9aCVz+M=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/gitignore.tt
+
+ hash2
+
+ 0CHT5HPXs07EBHWJzNqh/zd4KvJT8oArlWohCcrjwXo=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/gitlab-ci.yml.tt
+
+ hash2
+
+ 4YmcSS7ND1g2CBIPeKSD2AZnIPOTSQAW39ayeT84JeU=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/lib/newgem.rb.tt
+
+ hash2
+
+ 2n6B3ueR9tDhqkyssditSGDzZbY4eCA9GPJoa4MEYfY=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/lib/newgem/version.rb.tt
+
+ hash2
+
+ 6n9tAF6bkBGO/VK9bdvOHw1fHccpuoSP4WMZ1taZVR0=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/newgem.gemspec.tt
+
+ hash2
+
+ 5fhZ4DiM+ZrIXgHfavo6zx/+djZplUrHBO2QV4gbTvI=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/rspec.tt
+
+ hash2
+
+ BiReJdfPRrT73ie1+qDfDUEQ4RkY7rWEjeSrKv+Je1k=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/rubocop.yml.tt
+
+ hash2
+
+ c/pEdI4Z6FQFdDNROX1UtTXGZWSRFQWgNA5rsA+lS98=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/sig/newgem.rbs.tt
+
+ hash2
+
+ TlVwC8Fn6ch1f9jeq15pBXJgqnU7Ggl9Vgd1JPHw6sU=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/spec/newgem_spec.rb.tt
+
+ hash2
+
+ GZsrYaNiBLqUimuy5mzJJpc5kqgVBKvqC28yg0cqpYk=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/spec/spec_helper.rb.tt
+
+ hash2
+
+ 98BBtc2t6dwQp1oUgsVxX/Zq5sYhYv8ha62ouryjZng=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/standard.yml.tt
+
+ hash2
+
+ NR6GR4xAvVPiaQwUjQADJj0rIX29gMA6qFGjN+l7oCQ=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/test/minitest/test_helper.rb.tt
+
+ hash2
+
+ 2Q6VIBIqNcuTZfJaI2XrHqs0NW/Zkwa3SqWYF3MtUvQ=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/test/minitest/test_newgem.rb.tt
+
+ hash2
+
+ SH77I8PPE93JY6j/KlhxoX5WYs78pKf4FsooEEeb9sA=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt
+
+ hash2
+
+ Xm8coxHuYMOV51XoD6OhMW8SnrPwJgt9fgnmiSHttUw=
+
+
+ lib/ruby/3.4.0/bundler/templates/newgem/test/test-unit/test_helper.rb.tt
+
+ hash2
+
+ /GKRQr07gcp2QrRDst5WVZSBDd6X5+frLJUrujK2ANA=
+
+
+ lib/ruby/3.4.0/bundler/ui.rb
+
+ hash2
+
+ gFWaPBGOIaQj+v4z9To3QKzl/4HZc9PVMxxWk+Q5EXI=
+
+
+ lib/ruby/3.4.0/bundler/ui/rg_proxy.rb
+
+ hash2
+
+ vB/3bamn5iqGBDMjfF8LncdHAQ5Xz4us0kwOCg947CM=
+
+
+ lib/ruby/3.4.0/bundler/ui/shell.rb
+
+ hash2
+
+ 8mbDxZo1amcBHQ9IfsJSFc6lOxtySx+spu4XS7GXQ2g=
+
+
+ lib/ruby/3.4.0/bundler/ui/silent.rb
+
+ hash2
+
+ eLfdoUnXdYYgRdnqtj2mC7Gqbx/FBLjzas+N+3TcqNA=
+
+
+ lib/ruby/3.4.0/bundler/uri_credentials_filter.rb
+
+ hash2
+
+ cZ1m8yTtLZDCyuMteBgq5snyG62Wa/JCzcyZD5OC43s=
+
+
+ lib/ruby/3.4.0/bundler/uri_normalizer.rb
+
+ hash2
+
+ zO/FVihFgK5v7iAPgLxO01Dns3ybzyYwixJMCBiriQ0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/connection_pool/lib/connection_pool.rb
+
+ hash2
+
+ URGfEv8rgKFmhSzy1/fWp6FfaQ1mW17v5U1qMW+GB74=
+
+
+ lib/ruby/3.4.0/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
+
+ hash2
+
+ b41A+m2MhCcRI4ZyTe4I3j2rY9DVMsuv97nVPBqaPdU=
+
+
+ lib/ruby/3.4.0/bundler/vendor/connection_pool/lib/connection_pool/version.rb
+
+ hash2
+
+ 57zo1Kna27JhnMEiShtcarz/O6EC2/KBsRK0P3agZE0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
+
+ hash2
+
+ BtOFd+dTeM8FFZ3aNipOAP+Wzy9L3osZ60CUmFVOjeU=
+
+
+ lib/ruby/3.4.0/bundler/vendor/fileutils/lib/fileutils.rb
+
+ hash2
+
+ Cum4dBR+D5giz6hsZ05hRb2PeTmmbvD8KBiZUcTyQtM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
+
+ hash2
+
+ +bga8TvKuoqQRMKXhwiTeUMxcz2MpW993YuR/CEfNK8=
+
+
+ lib/ruby/3.4.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
+
+ hash2
+
+ Cxb1C5D06KLQZ+g1P2nfgeIV6Aze9SeOH98PhYn9luA=
+
+
+ lib/ruby/3.4.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
+
+ hash2
+
+ WZbq5wecD2Djs+gN5HF5xISRH3GfTFsHt1ZnN6LnQ20=
+
+
+ lib/ruby/3.4.0/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
+
+ hash2
+
+ oL9pBSwpOznDaJAm0UTUqwiIw/YY1OixBBJb/A/JuXI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub.rb
+
+ hash2
+
+ CA+sa/+5Yls28G+ZSli2+AWskq9X91soZyeyfFMn+Io=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
+
+ hash2
+
+ J7InOD6p01NU2rHAuF87yBGMPQB21gttlc1mvxt4xS8=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb
+
+ hash2
+
+ coQVPDvRlTnBypbTOAMPXBuOUe4DL83g63icfF7fTpM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb
+
+ hash2
+
+ qwrzMMFAwcIcgir/LGj8fJf/HoI1YImfcIdROwvkSxI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb
+
+ hash2
+
+ u24Yy3BSoDC+gIBTepXl5LjvwXQSgISs7s7KqOY6Ufw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/package.rb
+
+ hash2
+
+ odF8FTOvyROxS8Po22x0sFS5//p8p65MQU9XJGMlrlM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb
+
+ hash2
+
+ UTuI+/yv8xGJZUE9jPxdnAYd/jUU0Aufu6vLd36ShpQ=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb
+
+ hash2
+
+ 51jPXFWyuILfV73Iej3oIimBriYk0TiWpeQQd2eILbA=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb
+
+ hash2
+
+ 93I/pI5m3Mveg12LFDP+HJMDN07ydKXiM6kl8sw/Cb4=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
+
+ hash2
+
+ roFXTEx1AcouveIH7G5f9M1f/bZsDCbScEoVxaRqnl8=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb
+
+ hash2
+
+ CJLWUOdEscVFRYDkgQUfgp2+S0pRnDQGOk+fMvMGRfM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/term.rb
+
+ hash2
+
+ E5r/nbqXY7BbCbzT5b7XXMqgLe7JAroK5E1IE52D16s=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/version.rb
+
+ hash2
+
+ kv6eD7n/0Sik1FpO4jSCg6e9+bqR/YpsOSHfcq1+K1A=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb
+
+ hash2
+
+ fbbFIj3IVnYGixzJM3INHmbtT61yH+LBI9omtluCmcI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
+
+ hash2
+
+ AckG/z+ihO/3qMRRXn8h6yAKRvmhttxgFSBLNEzJWJw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
+
+ hash2
+
+ FA78f+D5i8bytfdn9V5UQ7y6fh/1V9OZynTVIlX77Lc=
+
+
+ lib/ruby/3.4.0/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
+
+ hash2
+
+ 7qYEYIPzWenNs3bx4dLFICGEIzI19U6C9Q9Wxm7J2Eg=
+
+
+ lib/ruby/3.4.0/bundler/vendor/securerandom/lib/securerandom.rb
+
+ hash2
+
+ kWbja54qw7BbfllnmfShr7GyIW5BsSxJwzUjG5jQ24o=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor.rb
+
+ hash2
+
+ oC9wUA6KGQ5vVfbWvYaaDzXEMoh9ecsWNR0iSkFr49s=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions.rb
+
+ hash2
+
+ Vqrhuz+u+vOsGkKX6emklK5S5JjwO2fH0ntLtA2D6wc=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/create_file.rb
+
+ hash2
+
+ YAIsXsgXuqKerd0rxvA3yBSmEBRRJqbv+6DrROUWpWM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/create_link.rb
+
+ hash2
+
+ WvieFuOXybFV6sXG0/GdlxsptiXDYkN9pgMYrX08Qt8=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/directory.rb
+
+ hash2
+
+ //G4IdmbaABVZgUU86yT+hEZLvcNHoG1FVTYCfx36og=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/empty_directory.rb
+
+ hash2
+
+ YyH53wJNlEZNNF9AZGbjyjn3ZL7eTy0pxQJQ1mMNnaQ=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb
+
+ hash2
+
+ Wmjfb99UQslzzRJ1GPS3xyIWsxmOKlMVNtW1AkJVjZU=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb
+
+ hash2
+
+ 2jSaJV7Dae05DwITo4Job36WFCHgnP+xhDTnA5YsAVc=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/base.rb
+
+ hash2
+
+ CMwhIFJe3b1UzzUv2gUSMnZvgr0eZvEc79oT8Xhom8Y=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/command.rb
+
+ hash2
+
+ gUxmnn4CsicKWXfvhgPG3wdvXbCkjRpkvo7XGQpWR4w=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
+
+ hash2
+
+ yyGhOEdQP5y6gUcyVnH9CFiajVf0hSC/Ln+TEQkGt/w=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/error.rb
+
+ hash2
+
+ J7ENAkIhKiVdG23XXyKxgxPNSsITEg6bs7JB5bxBPfw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/group.rb
+
+ hash2
+
+ K9OvYm+fp/pnyfkL6yeWTGWE0eNynRjW9fTZXRdq+o0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/invocation.rb
+
+ hash2
+
+ QwmsYA6LfU1uyp8Xhs5ZJ7TD3+U7siILm7KSPuQpT+o=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/line_editor.rb
+
+ hash2
+
+ n+aCr4r0gV2n/KlTxQHudC2zfavnC0a+4Vw2VTzkQTk=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/line_editor/basic.rb
+
+ hash2
+
+ n76ev0Vnhw9V/GUhrWQ0k1MhKc762RJXsUF/MFXMstg=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/line_editor/readline.rb
+
+ hash2
+
+ 4YKHsXFHEuBhHPgYIcoGVm5ImygsdEYTlWvkoz9M/No=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/nested_context.rb
+
+ hash2
+
+ a7x8WOvzf49i/AkMEnEKYXQfwxSfi5czIRPAQWKmnlQ=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/parser.rb
+
+ hash2
+
+ hdUzzhqOMlcp//GOnYcVizn1aZNiBAGH/Hc+GsqONNE=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/parser/argument.rb
+
+ hash2
+
+ ZUQJ9wOJHOIg25iFll0V+x1MDExF7yKcOyAu/wey/Ts=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/parser/arguments.rb
+
+ hash2
+
+ zxdqd0y7lx1kEZRneY/qsngkt8xnxRFL8jg1N94vKs4=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/parser/option.rb
+
+ hash2
+
+ 03f6pOnxoJIfJoN79teAAFe+QHe2C7b+ykt+u1DFc6g=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/parser/options.rb
+
+ hash2
+
+ ifZ8sC7VeT/eT9Yd/jr196FPbuB6fKaMiI3qNoB/fV8=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/rake_compat.rb
+
+ hash2
+
+ P7K/76DoPWVuiwXmB6qXpl4vVs9on89NXQuF4/DzAOE=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/runner.rb
+
+ hash2
+
+ pSHTAISkRfpsxL6FY/SUBFVyhR99/cajeEt0JI7xDjI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell.rb
+
+ hash2
+
+ ugqUr7jM0u+2x3ByjPXPIFsUSnijQaUu3gouG+udOYc=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/basic.rb
+
+ hash2
+
+ CnauU6luHoxFZgsLAaOmcRNsY6k4TgoZP7VtiwRqNTI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/color.rb
+
+ hash2
+
+ FXjZ1nddmul8KiXrvd51+nROzeD6VEzuNIuUTj/IZow=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/column_printer.rb
+
+ hash2
+
+ S6Tgbcwnicovs0H7orRR4p5w7zdKZ3xTRp/hbyXqU/o=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/html.rb
+
+ hash2
+
+ pPonxRKVgAaWijzZriDu5dRmcNVySLlVZkfiua86QM0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/table_printer.rb
+
+ hash2
+
+ vN1NZqWShte5CaGcRLw1JnS/+IBWgmwod9wHAKhX8jc=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/terminal.rb
+
+ hash2
+
+ rZ5p7+TZWIcWI9kLQXvKy3+hv//9pECSdYRXte7HiII=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb
+
+ hash2
+
+ EQc/AQSxj9KBEYUTA7CtIIJa/BBtoMAByBI23vXyngM=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/util.rb
+
+ hash2
+
+ goFKMs2VYwHrxArTHz1E70y/cGIB3//xbcmSEfIX9gw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/thor/lib/thor/version.rb
+
+ hash2
+
+ 85lfC1/MvF2R7I1vICaLjRh2YfcXTySIYY1lHHMW+C0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/tsort/lib/tsort.rb
+
+ hash2
+
+ osIx12kl3jZ7oU8tqYbBuHLDgDyvsVyXCLkhZP0Ej4c=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri.rb
+
+ hash2
+
+ X5mVZpzq2/JPZf7H0a1cjaCWOKVolywuDpgTvLXFvsw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/common.rb
+
+ hash2
+
+ hRpYayvGRLVHdwr64rs22Vlkuzh+nHkc2AwHMKYIvTg=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/file.rb
+
+ hash2
+
+ NL6wJeBoJBNtV+ZUm4NR5K9dUSSju60W8+zN3mSXmjQ=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/ftp.rb
+
+ hash2
+
+ jG8y+9Obfq8WnNkoa/mqTlpVVG4qXF6urQ7sC/1N6zI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/generic.rb
+
+ hash2
+
+ MtOz4SuTOZBGOckeY/kujnM5enATy/Umu9Ak1a1BZ6M=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/http.rb
+
+ hash2
+
+ LC6pLUJdvh+My+Igul24Bcg7nEP5VJnMS8D/pE0CUXY=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/https.rb
+
+ hash2
+
+ RpQi8F3FVAzZHjGLSDAAZMGBt/4wDLQsGjMUHIcI+8w=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/ldap.rb
+
+ hash2
+
+ fqYjUFT/kCHQeAnYX2XkBz+Qc61qNo62SnZjXzD9um0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/ldaps.rb
+
+ hash2
+
+ BKsM/d/09UbjfC1m9XY4jQWJAH/oLpphl6cPdBXa6zs=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/mailto.rb
+
+ hash2
+
+ rXQAzxCBL2lkrcdqZcUzRwG9pvox0FiMk6jSE0NTSGg=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
+
+ hash2
+
+ lRR48C69alCk1nf0rgunrzouGdsBz+r09mVr42eHlk0=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
+
+ hash2
+
+ I/Q3uEd/d1+uhyiteVPZWgIYR4m4wrR1NGPMaFu24hw=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/version.rb
+
+ hash2
+
+ HIotYn0i44DDTiapPuVnTTr+Ae6FuzpOEXDkGoEczjI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/ws.rb
+
+ hash2
+
+ 26LQvvEIsfoJK6inHQ0doXauieucP0bzPwAfC45VyGI=
+
+
+ lib/ruby/3.4.0/bundler/vendor/uri/lib/uri/wss.rb
+
+ hash2
+
+ buYAvao1WQheCXQxvvCmYidGVzjyoh4Viihwv6OntzA=
+
+
+ lib/ruby/3.4.0/bundler/vendored_fileutils.rb
+
+ hash2
+
+ EvR7IVXUCOAJGK+ixltBeO5rAghfCeEMFAw+Eavn70c=
+
+
+ lib/ruby/3.4.0/bundler/vendored_net_http.rb
+
+ hash2
+
+ 6LhiV/E/XePRsMi9iMQsENaS5zUmyTZzZnWJPjCqdMs=
+
+
+ lib/ruby/3.4.0/bundler/vendored_persistent.rb
+
+ hash2
+
+ hxqc5K4hMFGWUUjQ7Cjd/lszalnqlUcjYez0inwR54A=
+
+
+ lib/ruby/3.4.0/bundler/vendored_pub_grub.rb
+
+ hash2
+
+ bgcg1rszeol0LvW1ewNOjl0BXWnSMWNzpZAAmo3SXE0=
+
+
+ lib/ruby/3.4.0/bundler/vendored_securerandom.rb
+
+ hash2
+
+ RwByCXLaxsHRIH0h8B1qCbzUCpGzSWQfqMB3Ls/STWo=
+
+
+ lib/ruby/3.4.0/bundler/vendored_thor.rb
+
+ hash2
+
+ L4sGIIzqVD4SxIBukLP5TZL3eYawI4QimVAeYTnPkzk=
+
+
+ lib/ruby/3.4.0/bundler/vendored_timeout.rb
+
+ hash2
+
+ nVHUPNtCxXJecmeIWpuCybIHrKuNYDoghgIuov8Vt4A=
+
+
+ lib/ruby/3.4.0/bundler/vendored_tsort.rb
+
+ hash2
+
+ ONovBabmCyaeIYY/FnLeOagNZf6kMJD+0NKCZ6NRNwI=
+
+
+ lib/ruby/3.4.0/bundler/vendored_uri.rb
+
+ hash2
+
+ FbqfQvR70+TR/HG0Krvx77D2rrEKQl0GsZukAoUa9dk=
+
+
+ lib/ruby/3.4.0/bundler/version.rb
+
+ hash2
+
+ tl7tNkoAu7lprlWeasslTNfvtKSoQtKkEnKtlmHif70=
+
+
+ lib/ruby/3.4.0/bundler/vlad.rb
+
+ hash2
+
+ ElgPvGwU9x/Xtq/+GbxKuiBcEpDM5KFk2g5dWLh9FQo=
+
+
+ lib/ruby/3.4.0/bundler/worker.rb
+
+ hash2
+
+ 5fsGVS0i1Xcxmtf4A3S/VNzHJWLXEZ5JyrjA2Rnh4a4=
+
+
+ lib/ruby/3.4.0/bundler/yaml_serializer.rb
+
+ hash2
+
+ i2kimdRFzbqBZXd2DFI+Q/cG0cNzacpgH15KoHOt++A=
+
+
+ lib/ruby/3.4.0/cgi.rb
+
+ hash2
+
+ qR007Uc8WfVJqkRUk30hlIRmH3AOBrqNZBz/CNkz8Mg=
+
+
+ lib/ruby/3.4.0/cgi/cookie.rb
+
+ hash2
+
+ c+/tWExeSEAxcyAfoaQPoIQv1R9ZoUqhxEKCvzsESro=
+
+
+ lib/ruby/3.4.0/cgi/core.rb
+
+ hash2
+
+ ooRliGLM/UW8zirn4HgZZdBYCPDH/jbmSd/SDN2Xk74=
+
+
+ lib/ruby/3.4.0/cgi/html.rb
+
+ hash2
+
+ VZd8iwYcSF69lXkzI902DIKuUCuPnXpKNF4CvW6km68=
+
+
+ lib/ruby/3.4.0/cgi/session.rb
+
+ hash2
+
+ FkQxYkVMGiveAQLtT3xEaYN9ygqF7QtEE5fLMvylGOw=
+
+
+ lib/ruby/3.4.0/cgi/session/pstore.rb
+
+ hash2
+
+ W69ka1oJhsUoR5A6gpSyVITbbmib6Hs1Er3q2oPNx3A=
+
+
+ lib/ruby/3.4.0/cgi/util.rb
+
+ hash2
+
+ lxegC5kX3qJfkCObMvL5CIgHk3FrF6SP4K+sUHwXTBw=
+
+
+ lib/ruby/3.4.0/coverage.rb
+
+ hash2
+
+ 2gyG3HqTGOxhKJf9ioSxLu53RZvAbyYrAUjaG2lqjN8=
+
+
+ lib/ruby/3.4.0/date.rb
+
+ hash2
+
+ q7HMEmO6Xtfu/gVobzrhDpKJxE660jWl+reRA2oT2Cw=
+
+
+ lib/ruby/3.4.0/delegate.rb
+
+ hash2
+
+ 8Hqn004xrZsAF2Aj5rMBNDNEtU+fuh5EWxsNVq2RSaE=
+
+
+ lib/ruby/3.4.0/did_you_mean.rb
+
+ hash2
+
+ pVZ7bwphM7cEYRXik4wlvPxJqQf/Q1Shy/oiv1lhlEQ=
+
+
+ lib/ruby/3.4.0/did_you_mean/core_ext/name_error.rb
+
+ hash2
+
+ R04FWThkfJGKGvSWnTQqOHeFdYE3iAJBRkM6BSF5yew=
+
+
+ lib/ruby/3.4.0/did_you_mean/experimental.rb
+
+ hash2
+
+ E+mz7uNpbKZ+hLsKbzmJ2NMRfK+wjnT+Zxle9fsYBBc=
+
+
+ lib/ruby/3.4.0/did_you_mean/formatter.rb
+
+ hash2
+
+ m6cOyzwQx/lxBtX8vI39hSqsJHs4DXRvvZ4VY/JLISw=
+
+
+ lib/ruby/3.4.0/did_you_mean/formatters/plain_formatter.rb
+
+ hash2
+
+ TBHiKTuyNXuugyhg9V5MiMLHArjpuvI9cTbBBdle0gw=
+
+
+ lib/ruby/3.4.0/did_you_mean/formatters/verbose_formatter.rb
+
+ hash2
+
+ ZeH4wvxJZlCECkvePuE30ONqr+SCPvVZHT0byyBMZeY=
+
+
+ lib/ruby/3.4.0/did_you_mean/jaro_winkler.rb
+
+ hash2
+
+ HHDxvYp0qXQ7I+9hC2Nkd+GAZ8lt0QoyQWfnd3/ckac=
+
+
+ lib/ruby/3.4.0/did_you_mean/levenshtein.rb
+
+ hash2
+
+ ruoitDsVZ6KzHoHlZia5jFO+eJPJ0v/dHiJY8XloOMM=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checker.rb
+
+ hash2
+
+ TyUcB8G2y1ZyzEcxcoiv7Pe+Tp2Vi4+j7iOvhgrcCyc=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/key_error_checker.rb
+
+ hash2
+
+ P582hNp48MH38BXHGHeAB5GDtDxhddG6xFMNzHJS5FA=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/method_name_checker.rb
+
+ hash2
+
+ Th1UsxnmwbbT2G4IAxI5GTzygwz0veaqCVWeSXsDsmM=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/name_error_checkers.rb
+
+ hash2
+
+ pUB2jKCalsSyUNK0NU4epW4GAlKC8FbldfaxpfcXsKY=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
+
+ hash2
+
+ XgXmM9J8jj8oqDzkUYGyy5nQxPvwUAaSBWUNL+urLQs=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
+
+ hash2
+
+ qAoOhlfrpeI+WdfCKbgD662XGGjlvUCLMYH8iwWKbYE=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/null_checker.rb
+
+ hash2
+
+ VnYrKX9+ZVrKnziUK5hgw0aq2KfXVJwWrr5giH1scHQ=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb
+
+ hash2
+
+ ioi7BlLD5UAUKVVOM6b8B+OIOCDUec3krrm5STimHO8=
+
+
+ lib/ruby/3.4.0/did_you_mean/spell_checkers/require_path_checker.rb
+
+ hash2
+
+ HF19gG6hVQ5ZK/Kwq3yzRRofmmc0cD3wwEY+GhB/w2Q=
+
+
+ lib/ruby/3.4.0/did_you_mean/tree_spell_checker.rb
+
+ hash2
+
+ VuCYPQNEBkZrJT0Zd26FUoUoqmL7U4+hM8XEOyEswOg=
+
+
+ lib/ruby/3.4.0/did_you_mean/verbose.rb
+
+ hash2
+
+ kmZTRLsJ1m8ZuMF2H2Fd7i8+EMheMhXxvi1xfTE8IQ0=
+
+
+ lib/ruby/3.4.0/did_you_mean/version.rb
+
+ hash2
+
+ evzGKbzHdL5hN0CTb1rhYtB+qI13cg5au3ROKID+xAU=
+
+
+ lib/ruby/3.4.0/digest.rb
+
+ hash2
+
+ E+Vln/SAlhyTp6jcQ6oeMGfE4awbFuwCTrZGl6NsSYw=
+
+
+ lib/ruby/3.4.0/digest/loader.rb
+
+ hash2
+
+ yoWSNJXbpYkGlkWivrTyOwHnKmn8sJQBvuoqJk9/Fhw=
+
+
+ lib/ruby/3.4.0/digest/sha2.rb
+
+ hash2
+
+ VQy0NO78pngTOKPoDZDOlIWb62Lk3L3YHiab3Ztgzg0=
+
+
+ lib/ruby/3.4.0/digest/sha2/loader.rb
+
+ hash2
+
+ RC6iUVjuD2vFeMI9bWI54rT6TI+6xtejEDrpoZYGaXM=
+
+
+ lib/ruby/3.4.0/digest/version.rb
+
+ hash2
+
+ Y47G8Tf0Ze2Vmdfaukm02ebTQ97d4Btm95nOqBW9yjU=
+
+
+ lib/ruby/3.4.0/erb.rb
+
+ hash2
+
+ VctPgs/zKMAHa1V8qAaeikiReFDRdZ6zX5zprNIwp2c=
+
+
+ lib/ruby/3.4.0/erb/compiler.rb
+
+ hash2
+
+ hR1sCJSNvhVhHsQYb9rLk2qyZ/heTI3wfMPDQva3AM8=
+
+
+ lib/ruby/3.4.0/erb/def_method.rb
+
+ hash2
+
+ xy5hEBqTiHe2figHyZPIC5Ei3q7TL7+yAthz9/XM36U=
+
+
+ lib/ruby/3.4.0/erb/util.rb
+
+ hash2
+
+ piKvD6hdoKGG/EdE4ZE3IGRWzF8PRmROtiYgOuv6tc4=
+
+
+ lib/ruby/3.4.0/erb/version.rb
+
+ hash2
+
+ GPk1+VZ7kBo5ZDzgLMQ5hyPlE5R+59zmGRFmM05tcOQ=
+
+
+ lib/ruby/3.4.0/error_highlight.rb
+
+ hash2
+
+ hON9qA1ORBpKIaXkW0IAUv6mpMzrO6hXISiLLSTJLgQ=
+
+
+ lib/ruby/3.4.0/error_highlight/base.rb
+
+ hash2
+
+ LBQh7WeryJsSqGwR998bNve3hdVQo064UeIL4W4E3y0=
+
+
+ lib/ruby/3.4.0/error_highlight/core_ext.rb
+
+ hash2
+
+ CAneegBoRTJeg2zaJzgAfCJ2q/xXBBo9Q5DMZVfncYY=
+
+
+ lib/ruby/3.4.0/error_highlight/formatter.rb
+
+ hash2
+
+ x4XJDD9i6vXTR+Adpq09EhcAyVtbSSe3TtCLVYv3Ets=
+
+
+ lib/ruby/3.4.0/error_highlight/version.rb
+
+ hash2
+
+ dcGmYcNiMuTvvUT9YHanOpDciXSKWoXQtDCQG2mztZA=
+
+
+ lib/ruby/3.4.0/expect.rb
+
+ hash2
+
+ Rq1ENUgzUDLaNA7xKxFHn2fbcHWhW92bb4iqg1O8wO8=
+
+
+ lib/ruby/3.4.0/fiddle.rb
+
+ hash2
+
+ bll38N7TN9eQg5RVddFxbFBSgk1ZHT5w1pfvt2Cx/g4=
+
+
+ lib/ruby/3.4.0/fiddle/closure.rb
+
+ hash2
+
+ qjNbbyHKA1BV7J3nH2V4xXxl9j4wikQtr3sEJlEX0S4=
+
+
+ lib/ruby/3.4.0/fiddle/cparser.rb
+
+ hash2
+
+ f6uSTQY8UxTLIVWtSHoDiZ0NfOf4ZhJFR5eQVX5eCu8=
+
+
+ lib/ruby/3.4.0/fiddle/ffi_backend.rb
+
+ hash2
+
+ sy91ZHh9MlOxeI2hP92M2HZDjFdnbKGTtoj9p8iTPYY=
+
+
+ lib/ruby/3.4.0/fiddle/function.rb
+
+ hash2
+
+ dgtRWWr1zdvecY9Ow4OZuH/iO7kPEaCBC00UAqF+CUA=
+
+
+ lib/ruby/3.4.0/fiddle/import.rb
+
+ hash2
+
+ YwDT+t6pL0QkCJwWMc4QfmsYHedLSTuyD6WkKAHTo2U=
+
+
+ lib/ruby/3.4.0/fiddle/pack.rb
+
+ hash2
+
+ byasGxKByjmNOrKE30aaRRdnVKR0nqhOidDaxk5tQ4o=
+
+
+ lib/ruby/3.4.0/fiddle/struct.rb
+
+ hash2
+
+ Je5pRY28R3qE7xAnYUAfksEqPZuhpVSTJ3/seEeqmxI=
+
+
+ lib/ruby/3.4.0/fiddle/types.rb
+
+ hash2
+
+ fVIHIfHA0Z5y4Si32vZlxl0OFVWZ+yovlDha8PwrcqU=
+
+
+ lib/ruby/3.4.0/fiddle/value.rb
+
+ hash2
+
+ fW6A5fL5JA56BWuS2q+IhnRn1BKozUEadP6No0CBVGw=
+
+
+ lib/ruby/3.4.0/fiddle/version.rb
+
+ hash2
+
+ q007Qv8nuYZgMYhUi+88B8r0fkfTklRLAx9RG2QaBMI=
+
+
+ lib/ruby/3.4.0/fileutils.rb
+
+ hash2
+
+ PmskdmSAmZ/VF+RgyrTzBznYAJ76K1QQ8vOv4Nh9SSI=
+
+
+ lib/ruby/3.4.0/find.rb
+
+ hash2
+
+ Tok+Gx0zX+wvxZBGg6SBwKjuTyPXWfcTym/Lddhpe+g=
+
+
+ lib/ruby/3.4.0/forwardable.rb
+
+ hash2
+
+ vkGMgNLJokkx4YNuPCH0qo4jXQmNHTx7iTs5yFZMjcM=
+
+
+ lib/ruby/3.4.0/forwardable/impl.rb
+
+ hash2
+
+ cp6oPaXXemJrz0ZBhamLxIsMC3/NgNk+kdOQayTH7PA=
+
+
+ lib/ruby/3.4.0/io/console/size.rb
+
+ hash2
+
+ jeiR4ljFnhMngf4svqDHTfi+NYgR/MlH2O1I95ebdtE=
+
+
+ lib/ruby/3.4.0/ipaddr.rb
+
+ hash2
+
+ 8LY9cNKZ6uEsm0FjJLn7EUD7tTKzUlPDe40SoVDVHi8=
+
+
+ lib/ruby/3.4.0/irb.rb
+
+ hash2
+
+ emPeDcaGLDmFbaXfwxUuUaNoOf7YuNFqxlEURo3J960=
+
+
+ lib/ruby/3.4.0/irb/cmd/nop.rb
+
+ hash2
+
+ tYU78zLpFn7eC+AEozsbDLkwmRrPocNfNg4m/ymM0LY=
+
+
+ lib/ruby/3.4.0/irb/color.rb
+
+ hash2
+
+ Y79n6yQZLrjgF9stJa/4Abu/2WHEO3Hm0eMKmXRcBHs=
+
+
+ lib/ruby/3.4.0/irb/color_printer.rb
+
+ hash2
+
+ bUgpJe0LYdLV02LcQRsqwuMGNvTLIzWGTnqwpddNpNI=
+
+
+ lib/ruby/3.4.0/irb/command.rb
+
+ hash2
+
+ xAYgroW/fwLSYrWYPRMi2v5kIX1ruoazcCRWg7W+XaU=
+
+
+ lib/ruby/3.4.0/irb/command/backtrace.rb
+
+ hash2
+
+ toVE2OCvwGPsRUvHqyv48h3IoKzniEzFuMsoFGxp/70=
+
+
+ lib/ruby/3.4.0/irb/command/base.rb
+
+ hash2
+
+ i2FBpn+qCdloiLC0R/2ItEzTzVMWF+cIT6IglKE+7pY=
+
+
+ lib/ruby/3.4.0/irb/command/break.rb
+
+ hash2
+
+ ypwaFOlDCFHE1rHBmKFZ0OHWeib0qNKnm/miiS6tHvo=
+
+
+ lib/ruby/3.4.0/irb/command/catch.rb
+
+ hash2
+
+ T1fW8kai5UbI4scWrlBtBlMkjZOnYxLhTZaPgCYVjrQ=
+
+
+ lib/ruby/3.4.0/irb/command/cd.rb
+
+ hash2
+
+ M7wEGmQvufnNEWfPQCHAMj1Y61cKGn61isqsD8sP088=
+
+
+ lib/ruby/3.4.0/irb/command/chws.rb
+
+ hash2
+
+ 7ebtwdb+lyt2CjA+K1CLm31aUjsMTezQkg7qTGjxyNU=
+
+
+ lib/ruby/3.4.0/irb/command/context.rb
+
+ hash2
+
+ 4KMs4m7RGRp2bWMNt9fgKe9S05dhxMuAB8NCafdiMmg=
+
+
+ lib/ruby/3.4.0/irb/command/continue.rb
+
+ hash2
+
+ B7zKbCdCdSOawVk9gYCEe1TkpAmQDrrtpSYJirhPgSU=
+
+
+ lib/ruby/3.4.0/irb/command/debug.rb
+
+ hash2
+
+ zPpn+yUOq+OVgr5rEo6GyC4QC19H42Qgc8zhTF3vXHE=
+
+
+ lib/ruby/3.4.0/irb/command/delete.rb
+
+ hash2
+
+ yAxcRAf6iYmng/EUrMLN6Jv8mGSx55D5Mdq46jEn6Bk=
+
+
+ lib/ruby/3.4.0/irb/command/disable_irb.rb
+
+ hash2
+
+ gdOAb9cZb5pPZx6MjxOr1tjtHT9WmMNeiWmxzK+S9XM=
+
+
+ lib/ruby/3.4.0/irb/command/edit.rb
+
+ hash2
+
+ A3cJ06U2MXx6LRZJQcwPtW/WywSujFdN8kMBYW7OywM=
+
+
+ lib/ruby/3.4.0/irb/command/exit.rb
+
+ hash2
+
+ 52qSokhWXDIxqRdLdlgVC8Ndb6UOVSYFcOVwWfxTiHI=
+
+
+ lib/ruby/3.4.0/irb/command/finish.rb
+
+ hash2
+
+ hxPW3rQdSI4x27J72MjhgyDbPCcVQ2USYWoXHU4fSAc=
+
+
+ lib/ruby/3.4.0/irb/command/force_exit.rb
+
+ hash2
+
+ HORn2FUXU/78ND5jGHLfdiRAE6YAL3bXE9iKMZq0uew=
+
+
+ lib/ruby/3.4.0/irb/command/help.rb
+
+ hash2
+
+ 5N76JglPTkqIU7fVlR1QiMpKkbparIXTBUvZvNrF9/Y=
+
+
+ lib/ruby/3.4.0/irb/command/history.rb
+
+ hash2
+
+ GjOTX7zW+8Y1Tfe2wrIjZav1qIWG521GwQRhOG7ALl0=
+
+
+ lib/ruby/3.4.0/irb/command/info.rb
+
+ hash2
+
+ kp3Sc81hvXR0ibVwpqDG1i3T8pfFjGWYXxnOk5DEUi8=
+
+
+ lib/ruby/3.4.0/irb/command/internal_helpers.rb
+
+ hash2
+
+ UMTy/JQWEwbSDlbSJufP52NUFuGzrAKBwMk3nlU5Q+4=
+
+
+ lib/ruby/3.4.0/irb/command/irb_info.rb
+
+ hash2
+
+ Qqf90aPSNPsePTpJMAaZVIX5zpbxGNXew4BZHcigtRc=
+
+
+ lib/ruby/3.4.0/irb/command/load.rb
+
+ hash2
+
+ wZr5VhAOSPTit+Xl1UwwOCH9yVxFugcM4Alu4DnX7DY=
+
+
+ lib/ruby/3.4.0/irb/command/ls.rb
+
+ hash2
+
+ mibNLkGMlqOfO9IdTAlVlNxdy6pINJ8HavjlpcH75bw=
+
+
+ lib/ruby/3.4.0/irb/command/measure.rb
+
+ hash2
+
+ rcA0Mczc8GyFBd29ptMjvgyxyDbuVLATHbZTCQvGGFM=
+
+
+ lib/ruby/3.4.0/irb/command/next.rb
+
+ hash2
+
+ NY88czYgdykbY4YGKhBaHi1qf//OA9d2HLADVyL0SLQ=
+
+
+ lib/ruby/3.4.0/irb/command/pushws.rb
+
+ hash2
+
+ Yfv3oSRROmy13OmylR6+A+EUDQQGpTFDoXi0kvhkra4=
+
+
+ lib/ruby/3.4.0/irb/command/show_doc.rb
+
+ hash2
+
+ TcqGGeAAH9ZBX0Aup53oA+3KBfUGUcGTS5sdSXRHV6c=
+
+
+ lib/ruby/3.4.0/irb/command/show_source.rb
+
+ hash2
+
+ zHXpJBfyOlux8jfplz41q67JY4ceb6RMFgYvUFD4Ovk=
+
+
+ lib/ruby/3.4.0/irb/command/step.rb
+
+ hash2
+
+ FMqcE0oB2Y4sHJpdQgae/uQXOHDz8AGjnWQ5FHp86IQ=
+
+
+ lib/ruby/3.4.0/irb/command/subirb.rb
+
+ hash2
+
+ RbYPEp3udtuNhak6LSYT82lQCcoUaKnkrYLCMRNdG1o=
+
+
+ lib/ruby/3.4.0/irb/command/whereami.rb
+
+ hash2
+
+ 4dTqEuMt9tGF/nb7MKuhPyQhWEdC3Hhap65iK0tAEhM=
+
+
+ lib/ruby/3.4.0/irb/completion.rb
+
+ hash2
+
+ bbt8jEyRIU+y/BzTQ3Mx6T8H8/0oPhq4yD+/jwdrJEE=
+
+
+ lib/ruby/3.4.0/irb/context.rb
+
+ hash2
+
+ /dWruB6rkZZhyySoJSas3TfKjwMtsh4rEGY61mp4mSM=
+
+
+ lib/ruby/3.4.0/irb/debug.rb
+
+ hash2
+
+ 9mZCimAcMbvuQNoPSdFpndPlT/56tKvxy1OBTGaSVkw=
+
+
+ lib/ruby/3.4.0/irb/debug/ui.rb
+
+ hash2
+
+ Ix6erIpAKwsd+WBPW+RIQZoXhhprqF+XBITMdMaNsZQ=
+
+
+ lib/ruby/3.4.0/irb/default_commands.rb
+
+ hash2
+
+ cZ1PjJxKAnuT2PFHOqQhv0KaKIx7XAdi1P8tLBVYCpc=
+
+
+ lib/ruby/3.4.0/irb/easter-egg.rb
+
+ hash2
+
+ j5IAOM84GSl78QmkrGUEDPzgiq7aabf/tsmwTGYqekM=
+
+
+ lib/ruby/3.4.0/irb/ext/change-ws.rb
+
+ hash2
+
+ ewkWlX7723nwR9y/hxCRpa/xbo+yDBHX2WI558TZDgA=
+
+
+ lib/ruby/3.4.0/irb/ext/eval_history.rb
+
+ hash2
+
+ n+ABygUgHN7A4Vs9pYZfrSHwKgXspyI5DOWt13gWJKM=
+
+
+ lib/ruby/3.4.0/irb/ext/loader.rb
+
+ hash2
+
+ 7Vsu3moCOcx7Cj4r8IW6vn5gCBjfUK0bDVThdxQdOAQ=
+
+
+ lib/ruby/3.4.0/irb/ext/multi-irb.rb
+
+ hash2
+
+ H7+0o773ZhXfr/HNXqM7FVdHZcRxHfVI32G80mrt3s4=
+
+
+ lib/ruby/3.4.0/irb/ext/tracer.rb
+
+ hash2
+
+ EvXrhx1m9jsCbaiMjicIfBxX+PocKmp4gvlwsO41uv0=
+
+
+ lib/ruby/3.4.0/irb/ext/use-loader.rb
+
+ hash2
+
+ nz1jAlXKBn7LHFn+eeNUw3V77+w9jNBR12avEcd5JVM=
+
+
+ lib/ruby/3.4.0/irb/ext/workspaces.rb
+
+ hash2
+
+ 4WwWS+oMMaQrDHxv71+f399rJbu9/qk51W/8/fKjUOY=
+
+
+ lib/ruby/3.4.0/irb/frame.rb
+
+ hash2
+
+ 5aceg/zaV21sR2ZrS0K0WrSqpvo1eh5YaL2iTGxQfgc=
+
+
+ lib/ruby/3.4.0/irb/help.rb
+
+ hash2
+
+ Wy9/2yD1R+9ZN5d9UOwIaWTug3WqE5bdKhrRlmDdLLg=
+
+
+ lib/ruby/3.4.0/irb/helper_method.rb
+
+ hash2
+
+ g4zH8UHCxHQhpuSwVULZvBrEp4GnXdaC/31vnIpg5pc=
+
+
+ lib/ruby/3.4.0/irb/helper_method/base.rb
+
+ hash2
+
+ VGJFxpFIrXQnAhBRjxDrN6qHhHtKIDFNr1WXdMrB+3A=
+
+
+ lib/ruby/3.4.0/irb/helper_method/conf.rb
+
+ hash2
+
+ 8tQGKfe9xQb/Exjbde5WpvX4nDAjpzkwe506ET8Vxqs=
+
+
+ lib/ruby/3.4.0/irb/history.rb
+
+ hash2
+
+ dvpvlOohghMzlnr8D+lxN1KhwI6THEQwJ4LQuWC4/J0=
+
+
+ lib/ruby/3.4.0/irb/init.rb
+
+ hash2
+
+ z9qL6DfePyeL9hoST9MSMJxPNfX/1laCOZLHJ+MkDBo=
+
+
+ lib/ruby/3.4.0/irb/input-method.rb
+
+ hash2
+
+ mTx2+v+m0vNSBC0vHL7Vj7uTYEG4tIW5mYucD2F4jRU=
+
+
+ lib/ruby/3.4.0/irb/inspector.rb
+
+ hash2
+
+ 3c1fbCAWRFzdvm59RrI2eDymd5LZo/oeazJgrrc24hw=
+
+
+ lib/ruby/3.4.0/irb/lc/error.rb
+
+ hash2
+
+ X7JgLi4n2TI+5i74dfgynCgGkLwOSdxXlKvFOSaVwjw=
+
+
+ lib/ruby/3.4.0/irb/lc/help-message
+
+ hash2
+
+ GZD78+B66ab/3DI3Fa6blntV4pE0RZSudwrJ2fz4Vs8=
+
+
+ lib/ruby/3.4.0/irb/lc/ja/error.rb
+
+ hash2
+
+ neEGmICttpzpv12yns0lBluKnEV1PIHR5NFqkS7hptA=
+
+
+ lib/ruby/3.4.0/irb/lc/ja/help-message
+
+ hash2
+
+ 82/pzueISs8YssTQeygxzmJjCOrLdO3/EvOuea0PX+o=
+
+
+ lib/ruby/3.4.0/irb/locale.rb
+
+ hash2
+
+ tAHaQBQq2S2NaxxgB1MtSd4BHHr5WBDBftE6QTuXimc=
+
+
+ lib/ruby/3.4.0/irb/nesting_parser.rb
+
+ hash2
+
+ WVcvnUOSHk/c3wYqrcPiIPVkFBqmDwEdoPLLixn/WZc=
+
+
+ lib/ruby/3.4.0/irb/notifier.rb
+
+ hash2
+
+ NWPWcqzDSgqATZK5yYz8Ds9Rjrte9DA0kscDtUmsS40=
+
+
+ lib/ruby/3.4.0/irb/output-method.rb
+
+ hash2
+
+ UJjP1CqVoXXFV1dfUq+rGcDx4aK5sdLhhY3UdIBiGD8=
+
+
+ lib/ruby/3.4.0/irb/pager.rb
+
+ hash2
+
+ O0hx/ythZKRcadI2Kbae9kxQguWpNNfHGgU9e8UqXy0=
+
+
+ lib/ruby/3.4.0/irb/ruby-lex.rb
+
+ hash2
+
+ bJ7/Il93uujkNKAlKIYyT06OnseYXqEZYRqqTaWILnk=
+
+
+ lib/ruby/3.4.0/irb/ruby_logo.aa
+
+ hash2
+
+ aI06/2wo+2j3wJfBn25ZZdYC/7lCn34VM1PFqOlOdPM=
+
+
+ lib/ruby/3.4.0/irb/source_finder.rb
+
+ hash2
+
+ HGE2sMcDO0dEoyTFmceK83bvVw4NYKuBiwuaDVx6qT4=
+
+
+ lib/ruby/3.4.0/irb/statement.rb
+
+ hash2
+
+ POoYaTz19VsMWVuyfctsQnLGtgeSRtPQsZ0Hq9QzA8U=
+
+
+ lib/ruby/3.4.0/irb/version.rb
+
+ hash2
+
+ w24T4/Ef71V/sEt7iW8eotuF/n6bV3ZNnKeiFrvchUY=
+
+
+ lib/ruby/3.4.0/irb/workspace.rb
+
+ hash2
+
+ rDlo8hpdGl8UDYCSeeDXc3HkM2hi/cI6xeiroK/xkLU=
+
+
+ lib/ruby/3.4.0/irb/ws-for-case-2.rb
+
+ hash2
+
+ UPosplNNDfJNvIk9MvSU9z971qEfhBlVIPbsHuwnRks=
+
+
+ lib/ruby/3.4.0/irb/xmp.rb
+
+ hash2
+
+ rNfpOyGZPIjwMiZL0SM3fSOcpjHlXU1fGORve3z8dbw=
+
+
+ lib/ruby/3.4.0/json.rb
+
+ hash2
+
+ JsOvE3I6XoRp8b7NKTgGe10GykSflwQaNTk9cDrkZBg=
+
+
+ lib/ruby/3.4.0/json/add/bigdecimal.rb
+
+ hash2
+
+ qBUHPXqUKHLnkRU+bXt3eo0rRke3KvmEd9MgbAUlubU=
+
+
+ lib/ruby/3.4.0/json/add/complex.rb
+
+ hash2
+
+ /Qh9gYob+4WJ2nOqdTu9twi/54hS3zpt7J0bYR35mwE=
+
+
+ lib/ruby/3.4.0/json/add/core.rb
+
+ hash2
+
+ A85J++OT3UMp0omwhx04ERcd0HH8Qe1h3zGQAcPl7SY=
+
+
+ lib/ruby/3.4.0/json/add/date.rb
+
+ hash2
+
+ gCb32lySVepYW/ltaLBskOJ8Osx0VaS23kVjcmDdo1Y=
+
+
+ lib/ruby/3.4.0/json/add/date_time.rb
+
+ hash2
+
+ xC/2G/ylS5fMWXtZaZ4DaCkcis2htXhokKlGCr8NGe4=
+
+
+ lib/ruby/3.4.0/json/add/exception.rb
+
+ hash2
+
+ uZTexIXDhKRE7QbvHu8XyUIGgTAw0SC8/zFdhq7RhZk=
+
+
+ lib/ruby/3.4.0/json/add/ostruct.rb
+
+ hash2
+
+ b5c1+tok/pVDcc/ZRXmjz2DMT9C541p+/Td52PY0ODc=
+
+
+ lib/ruby/3.4.0/json/add/range.rb
+
+ hash2
+
+ t97y4ffsAEeDDtQqhf6umFGO6AwOfVMQDixgzk+Ymt4=
+
+
+ lib/ruby/3.4.0/json/add/rational.rb
+
+ hash2
+
+ kZTLehEhtvt1bVJjKf4E5zk1SDLksLodM2JNWrXvzxk=
+
+
+ lib/ruby/3.4.0/json/add/regexp.rb
+
+ hash2
+
+ QamVg/HdR8GHg9EO/iF4okwUBWXExmbbB5BrqdWxDc4=
+
+
+ lib/ruby/3.4.0/json/add/set.rb
+
+ hash2
+
+ YIJ4p86WbGrpOqvo9U0Iez5vZqC56c4rHD4/YVRs8l8=
+
+
+ lib/ruby/3.4.0/json/add/struct.rb
+
+ hash2
+
+ 5oSEhSBcV5bbdtOcrRv6cR2/rMVSqVZ6a6Cp+zhIj4I=
+
+
+ lib/ruby/3.4.0/json/add/symbol.rb
+
+ hash2
+
+ lsXVBTbA6nLXwBSMF1eWcRUZeLvfFY1ciZDjbf0d/nU=
+
+
+ lib/ruby/3.4.0/json/add/time.rb
+
+ hash2
+
+ ntGU29ttI7gUyLXQDcwc20RoWJ/k1pzukxZzWbCCtQM=
+
+
+ lib/ruby/3.4.0/json/common.rb
+
+ hash2
+
+ UtLM1ijpcSb4WVahHIMZjgWwZc5CGRKDOzMRHIibFtg=
+
+
+ lib/ruby/3.4.0/json/ext.rb
+
+ hash2
+
+ cv+VO1v7QOPKPzFr9L3BDaaJ4HTFK8gdz8aFFSASPW8=
+
+
+ lib/ruby/3.4.0/json/ext/generator/state.rb
+
+ hash2
+
+ 3WLw09aBbsdAhciBxbsA6QsxggKbcGtVSOl8uHF0u6A=
+
+
+ lib/ruby/3.4.0/json/generic_object.rb
+
+ hash2
+
+ n/1aEBSHt34wk5GAQDW1ezySc4miMMtMJI9Fc47A+04=
+
+
+ lib/ruby/3.4.0/json/version.rb
+
+ hash2
+
+ UpaDGsdU2hK/NHTf1/MkhtOuaUOkIeqQEgLCv7ebfzg=
+
+
+ lib/ruby/3.4.0/logger.rb
+
+ hash2
+
+ uHkMrh6Vp9+zIoi2kgzyMprlFYsBQlv/8Onhm6QoD+g=
+
+
+ lib/ruby/3.4.0/logger/errors.rb
+
+ hash2
+
+ Y4MPuTw6XNQYXaehFH54yV+CUlv6AsPkgdJ92qeVRpk=
+
+
+ lib/ruby/3.4.0/logger/formatter.rb
+
+ hash2
+
+ eYWA3+PG2eAYesoJ4AGg9CObmYe5/SC3MKD+iNf1yAA=
+
+
+ lib/ruby/3.4.0/logger/log_device.rb
+
+ hash2
+
+ OKX69dYCxCMvqSt87YHUO0Ayv92zYRD/fryVI9NIRcM=
+
+
+ lib/ruby/3.4.0/logger/period.rb
+
+ hash2
+
+ b6Jo7s8OOZGm5poGfRwXKKXRaY03j/edotlAcTtGXQ8=
+
+
+ lib/ruby/3.4.0/logger/severity.rb
+
+ hash2
+
+ ooCMWL+RWE4H6oVVujuEPWnyaH8vGjUwZ4r8iQpIRvE=
+
+
+ lib/ruby/3.4.0/logger/version.rb
+
+ hash2
+
+ nsx83U6aG3Qx9SyQZP1kAP8/o0JIwoUWGNwg5rAWS+k=
+
+
+ lib/ruby/3.4.0/mkmf.rb
+
+ hash2
+
+ 5nw+8vHxyv1ZaroAViXntvdcdW/+G2unmx/hDOhO5V4=
+
+
+ lib/ruby/3.4.0/monitor.rb
+
+ hash2
+
+ 8oAWpxCGOVFXDxeXPJ/r34beAp5ZNPfBlFtbbkHXHmE=
+
+
+ lib/ruby/3.4.0/net/http.rb
+
+ hash2
+
+ +8e4j+0BpktUu+AQHe85/b+wYhOwuLa3G1o5+CMX5No=
+
+
+ lib/ruby/3.4.0/net/http/exceptions.rb
+
+ hash2
+
+ zi2cFdJCfWDZGTUWRWWWw026oW+bfSH/QJzFLGBnnrc=
+
+
+ lib/ruby/3.4.0/net/http/generic_request.rb
+
+ hash2
+
+ rjQsx2onEyNWwqFnddZ9K7jOefpcM8RIaxxm2DXiLn4=
+
+
+ lib/ruby/3.4.0/net/http/header.rb
+
+ hash2
+
+ ke6qVh3dWfGzz43wkXY8HIIo/zJstzEWEK7ZpXIvcCk=
+
+
+ lib/ruby/3.4.0/net/http/proxy_delta.rb
+
+ hash2
+
+ HIehZLc4v8gu9uCVJu8v5/QRg2E0IjM6uRIuzfBZ2kw=
+
+
+ lib/ruby/3.4.0/net/http/request.rb
+
+ hash2
+
+ +XEDmKnjlhn+XiSaTXc5nSoZePtyDEWhDmNK01BZfbo=
+
+
+ lib/ruby/3.4.0/net/http/requests.rb
+
+ hash2
+
+ HqbwmlIAW/wqhDShnZVgTNqPsfS9zy+cwhSWKWJIH2o=
+
+
+ lib/ruby/3.4.0/net/http/response.rb
+
+ hash2
+
+ n9DEDBTXUBp4lmYQU9nGEx7u4jdYtx+eoyLEBgQBojQ=
+
+
+ lib/ruby/3.4.0/net/http/responses.rb
+
+ hash2
+
+ 7O+i9QtkDQXyH9YBnkFMwMflXMYJlGrevV9BvGSAl/o=
+
+
+ lib/ruby/3.4.0/net/http/status.rb
+
+ hash2
+
+ 42Q5cVoa3HrxGBvelT8x/WWgVWj1Kgqv2+iFt5cxP3U=
+
+
+ lib/ruby/3.4.0/net/https.rb
+
+ hash2
+
+ tl1O2ijvjgHnmO7tADQbX2Xkpk/YNMjf7LIfhsa1qoo=
+
+
+ lib/ruby/3.4.0/net/protocol.rb
+
+ hash2
+
+ PQEd+jgvpcyQ42GfLcVsR+KiniUIHZBRW/wdqAdxuog=
+
+
+ lib/ruby/3.4.0/objspace.rb
+
+ hash2
+
+ 4hAko7RKXPGlpM8GsLSO1Z15trNyOlq1wY7jufx2y5Y=
+
+
+ lib/ruby/3.4.0/objspace/trace.rb
+
+ hash2
+
+ uWxKcCi6PhBArLqrqpJLvRgxswG6/0/sUmnzPBLWSko=
+
+
+ lib/ruby/3.4.0/open-uri.rb
+
+ hash2
+
+ tda4uHttEk1L6w7LAaWOixGrxOObS2yffAPrZ3Xjs80=
+
+
+ lib/ruby/3.4.0/open3.rb
+
+ hash2
+
+ hkCsdLoK8EgK1j4xckQ2gpUIFMa6tf+3nOmgJ/Ak4Ig=
+
+
+ lib/ruby/3.4.0/open3/version.rb
+
+ hash2
+
+ HSJcTT4AW1Q6nSo+p8PeoqGL3AbJxkmsroSKDLPchs0=
+
+
+ lib/ruby/3.4.0/openssl.rb
+
+ hash2
+
+ zC1d2ko+GTdpvP7LNpUU/6aSg7Gs12sxDZdtVmJiAy4=
+
+
+ lib/ruby/3.4.0/openssl/asn1.rb
+
+ hash2
+
+ ostBCINL1Lvl23fKJN1FO9p/gGVauymSSXO+YKhw6WQ=
+
+
+ lib/ruby/3.4.0/openssl/bn.rb
+
+ hash2
+
+ TEuUmTOoSXRMBthgAvJwLBSkPtcTy2EbVQ2HNsOIoqQ=
+
+
+ lib/ruby/3.4.0/openssl/buffering.rb
+
+ hash2
+
+ OwwxXcGZRPdvwnZF65+c549pBXOvChrywSqVHn3aIPU=
+
+
+ lib/ruby/3.4.0/openssl/cipher.rb
+
+ hash2
+
+ CHQ2CYOCu+k7kMrK1rM7ftY6z3xwFL3+ibDVFcHgJZs=
+
+
+ lib/ruby/3.4.0/openssl/digest.rb
+
+ hash2
+
+ ihX03UyYwiwk997+no8+X2IpjVHK8y+dh0sX40qd/Do=
+
+
+ lib/ruby/3.4.0/openssl/hmac.rb
+
+ hash2
+
+ yDvzJfncRG6g0k2qa9Q+1RUKkotFJ8fREtUXOpuIIJw=
+
+
+ lib/ruby/3.4.0/openssl/marshal.rb
+
+ hash2
+
+ DCK067iIb9VHaWC815WemR6MuNs5vUC9OGQxi363NCQ=
+
+
+ lib/ruby/3.4.0/openssl/pkcs5.rb
+
+ hash2
+
+ b1O7LdIb0jvScpJVPSvDXH9/iW+XfYeLFk0G/n0dv2k=
+
+
+ lib/ruby/3.4.0/openssl/pkey.rb
+
+ hash2
+
+ 2YWORb/lgG652khBW/IG1aHLQC56r7AUYmbzwh+fAkc=
+
+
+ lib/ruby/3.4.0/openssl/ssl.rb
+
+ hash2
+
+ CtMkh3Hs0H9u3Mp9HEnTxCaHjcAEXZesj3TpHI1DklE=
+
+
+ lib/ruby/3.4.0/openssl/version.rb
+
+ hash2
+
+ j5/XY6lLMA9VwHv493NBO568ZiCSiKBcEf3vC/B2fuk=
+
+
+ lib/ruby/3.4.0/openssl/x509.rb
+
+ hash2
+
+ +KogWJ+qdWtGey7PfBYH2Ik2HGvacsLVlSt359yhjyE=
+
+
+ lib/ruby/3.4.0/optionparser.rb
+
+ hash2
+
+ BeaI/9QJ4cbNOhLaDUlFjP8Yzk9puxYsMt6FyVnALcA=
+
+
+ lib/ruby/3.4.0/optparse.rb
+
+ hash2
+
+ T0gDcKj2FY2AyVfV7TgYCMhiha3/EN4ociHjyX+g7ZA=
+
+
+ lib/ruby/3.4.0/optparse/ac.rb
+
+ hash2
+
+ FUeOceX91y55mWmKEhPCvyKgs4XHwp1XRWlwQUc1QhI=
+
+
+ lib/ruby/3.4.0/optparse/date.rb
+
+ hash2
+
+ zfesYbF8yEZ0iJbmYVK7XQiMOEYd5Yqb7ZIlh555duQ=
+
+
+ lib/ruby/3.4.0/optparse/kwargs.rb
+
+ hash2
+
+ tnBrkHkuFJFtXhHOesq0ZKOLGAcayHaPwERIlLpCOWo=
+
+
+ lib/ruby/3.4.0/optparse/shellwords.rb
+
+ hash2
+
+ owYMQaTABvLbvLNs+1GLIwmDuoGCTUeLcwWCzLf49mo=
+
+
+ lib/ruby/3.4.0/optparse/time.rb
+
+ hash2
+
+ 54wQazSf3C8q+APVZeDuST3pZ/9KiZ9Xq/NVJo+AImw=
+
+
+ lib/ruby/3.4.0/optparse/uri.rb
+
+ hash2
+
+ Ua6W4CFwxq7xpt7Y4C3aBS1cIgJ+fLDIqH7cP8/MOoo=
+
+
+ lib/ruby/3.4.0/optparse/version.rb
+
+ hash2
+
+ GVvmhAJvEbDK2Qmw2vEkIeBikligJ++G5t5RqSr72Bc=
+
+
+ lib/ruby/3.4.0/ostruct.rb
+
+ hash2
+
+ IvXIZ45TYIsyeMwXpIn3TaKKagjvO32VsloM3bGCymA=
+
+
+ lib/ruby/3.4.0/pathname.rb
+
+ hash2
+
+ fgMjKjUCbZwjTlwuziPRZUWEacmTmJfZ5BecFCGgsKI=
+
+
+ lib/ruby/3.4.0/pp.rb
+
+ hash2
+
+ rPFIuJ2aVs7Kizd3bJ0FYwpupC3gjioO1HMno6gPh9c=
+
+
+ lib/ruby/3.4.0/prettyprint.rb
+
+ hash2
+
+ 6SbL8fLQh4KFnTv+H+cKuFnRUw8njGMrd3G/2G6LpEM=
+
+
+ lib/ruby/3.4.0/prism.rb
+
+ hash2
+
+ LO1efXm8PeVk7ddEezCpqzTYpml1OvJpGKb8ddP0V1k=
+
+
+ lib/ruby/3.4.0/prism/compiler.rb
+
+ hash2
+
+ 1qxVFjyr3WEEf6iRe4CeQDO13QK6nZWfJuXeXBNVGuU=
+
+
+ lib/ruby/3.4.0/prism/desugar_compiler.rb
+
+ hash2
+
+ mC5/bjoNq/qLjfm9F/JKAGzpFqbPF20NdOxrIv3ZEm8=
+
+
+ lib/ruby/3.4.0/prism/dispatcher.rb
+
+ hash2
+
+ xjvk3db7i/e//zyniETUu6r4/TtFfGzDhpHsdOcPeQ4=
+
+
+ lib/ruby/3.4.0/prism/dsl.rb
+
+ hash2
+
+ aJbQZ4ZG5eCqPBVfeXTyur0obE63AK0gDPxE2H3Q6sM=
+
+
+ lib/ruby/3.4.0/prism/ffi.rb
+
+ hash2
+
+ tAYJXgdtd16DyqJc6JevV1NcDhZt6zwlDM202/4wOEY=
+
+
+ lib/ruby/3.4.0/prism/inspect_visitor.rb
+
+ hash2
+
+ yc4GnVViwoI/ljg5Z0ksvuXJuNHbR12tVz4cqbwR53g=
+
+
+ lib/ruby/3.4.0/prism/lex_compat.rb
+
+ hash2
+
+ lu645Aca5FyF9AA9+xqUzFuCSHy+1IpLQsMcAt0EXCc=
+
+
+ lib/ruby/3.4.0/prism/mutation_compiler.rb
+
+ hash2
+
+ FZL83d2urO9zrSFWaOPh3ucBlhygy7SiIoPOL0D01+s=
+
+
+ lib/ruby/3.4.0/prism/node.rb
+
+ hash2
+
+ KHlf4LMat9ySepZumPUrpHoqnza6OVIMM0648PMppgU=
+
+
+ lib/ruby/3.4.0/prism/node_ext.rb
+
+ hash2
+
+ F80NgwmrnQir5S91KhBQENmmm9Zvu+kiiQTVjCbGUaA=
+
+
+ lib/ruby/3.4.0/prism/pack.rb
+
+ hash2
+
+ 1IIQ48LlAreRmUA8N9DSg3i9/mVml8ozBvNnfzMW7EM=
+
+
+ lib/ruby/3.4.0/prism/parse_result.rb
+
+ hash2
+
+ k/XsCClgNgGKfFMvHOY0kah2Nlqrp54PWXsx5YmyV10=
+
+
+ lib/ruby/3.4.0/prism/parse_result/comments.rb
+
+ hash2
+
+ 6Mvocno7hVRUzsZnC6dsoaN+GJ7KyN3Qjd63vBGpIuY=
+
+
+ lib/ruby/3.4.0/prism/parse_result/errors.rb
+
+ hash2
+
+ 4LgF9pCc6jvDiORT0iwLZuKJch6RudUWqaNj5tJwbbI=
+
+
+ lib/ruby/3.4.0/prism/parse_result/newlines.rb
+
+ hash2
+
+ m8j51FUQKKaetdZIK/GBRo/JdzyXScIVyHXmcqaxyuQ=
+
+
+ lib/ruby/3.4.0/prism/pattern.rb
+
+ hash2
+
+ I29F7zx6jI0OkaXRbF/tWcox3nandC4sDtK3GDSqrfg=
+
+
+ lib/ruby/3.4.0/prism/polyfill/append_as_bytes.rb
+
+ hash2
+
+ s7/px3SBO0PBBMdceqJiqwdnFcrENJl+LqgLUVCf6zc=
+
+
+ lib/ruby/3.4.0/prism/polyfill/byteindex.rb
+
+ hash2
+
+ 27FQZlIRzQBrM+R/wgf6gLnZDcrRQwj+nR+g9RKzVVI=
+
+
+ lib/ruby/3.4.0/prism/polyfill/scan_byte.rb
+
+ hash2
+
+ YL2SsyP1K10NUPTb8Q1vtiljcqkIzNg6eq7epOeHEvc=
+
+
+ lib/ruby/3.4.0/prism/polyfill/unpack1.rb
+
+ hash2
+
+ UsomDnkkHckYaNaT6UBCBRUOMAWU3wYQDJSQM5m077o=
+
+
+ lib/ruby/3.4.0/prism/polyfill/warn.rb
+
+ hash2
+
+ VVt6m6l1QoiY3CgrceBXr7ZzYP5DfZ4NEAsX+ugPi6I=
+
+
+ lib/ruby/3.4.0/prism/reflection.rb
+
+ hash2
+
+ azQEW3wa4RRYwzJm7R6LKEnDu3igYu+/RJWB31qEofk=
+
+
+ lib/ruby/3.4.0/prism/relocation.rb
+
+ hash2
+
+ /Zy+uxp//k+7t1fHHTDmnW7jLWfw+Tc42mkNlFFLDeQ=
+
+
+ lib/ruby/3.4.0/prism/serialize.rb
+
+ hash2
+
+ 1UU9hoEFbPUA16YSHEvaEknXoXjysSM77gXhkvmzVZk=
+
+
+ lib/ruby/3.4.0/prism/string_query.rb
+
+ hash2
+
+ MFAAc+QmHIYuOaNeMHinM4dtXm4Dd9BR5nI+FdO0CwQ=
+
+
+ lib/ruby/3.4.0/prism/translation.rb
+
+ hash2
+
+ OjK0pp65fT7qeFpaW210f2n7YmtCg0cgaUtAu0wWBu4=
+
+
+ lib/ruby/3.4.0/prism/translation/parser.rb
+
+ hash2
+
+ V98aS+QC9pDlM1trmMZlkHoxGLouUKb6SRQzjla5oiA=
+
+
+ lib/ruby/3.4.0/prism/translation/parser/builder.rb
+
+ hash2
+
+ yobqeVq+BiJeErS9TAHM/ipMd14QQwbl4eAJXWdNoQs=
+
+
+ lib/ruby/3.4.0/prism/translation/parser/compiler.rb
+
+ hash2
+
+ ApyoKMtI6n4/BuiMgADRCzkJCgpMu/QgZerSUypOjrA=
+
+
+ lib/ruby/3.4.0/prism/translation/parser/lexer.rb
+
+ hash2
+
+ wVi8oNudKMbAdVjyce9kRmPCfZ4RXKvepmV88vUhJ8Q=
+
+
+ lib/ruby/3.4.0/prism/translation/parser33.rb
+
+ hash2
+
+ KjLVxGAsNmEP3FZkT20PmZmcAHEOpenbLE7421FQ/Gs=
+
+
+ lib/ruby/3.4.0/prism/translation/parser34.rb
+
+ hash2
+
+ N+T2NqlZz5JYL0LiMpxm5GSUWvQIMw3SKPxvS1XVpDc=
+
+
+ lib/ruby/3.4.0/prism/translation/parser35.rb
+
+ hash2
+
+ xhiQyXHwscwrPuUReKjGR7vQRSINrF+D6BjQpzl7dnk=
+
+
+ lib/ruby/3.4.0/prism/translation/parser_current.rb
+
+ hash2
+
+ Jm5KXqhJOKSwVsxg/ph0sHIWSsly/VZpx6k4x2eQUwM=
+
+
+ lib/ruby/3.4.0/prism/translation/ripper.rb
+
+ hash2
+
+ yulqj4ys5smfqZGeQGJ/xuCd0qN0De564NhpjgZl65s=
+
+
+ lib/ruby/3.4.0/prism/translation/ripper/sexp.rb
+
+ hash2
+
+ wPksamHPupjzWcr2Fssq2OtFY9zohAPRO4Es4hmkGt8=
+
+
+ lib/ruby/3.4.0/prism/translation/ripper/shim.rb
+
+ hash2
+
+ njdtjMD4XDXhujUj3ZWUadLPK36j5ta8J+i7UClRWcA=
+
+
+ lib/ruby/3.4.0/prism/translation/ruby_parser.rb
+
+ hash2
+
+ ScipxW2xj2KpHXZSNl1ytA0yju0ninYlM2SHR1eNNZE=
+
+
+ lib/ruby/3.4.0/prism/visitor.rb
+
+ hash2
+
+ N0KNKas85r1lTVY0C6QnJ4JCL/A8cgKOpRfuScFdwd0=
+
+
+ lib/ruby/3.4.0/pstore.rb
+
+ hash2
+
+ KnCfG1emM7KiyWeCsHQJfCDoPLHVA51ViNMTMdQX9MI=
+
+
+ lib/ruby/3.4.0/psych.rb
+
+ hash2
+
+ dxJ7U1chl7vnfpS2R0TS62i7+hKvnNBwISnpXf32WBo=
+
+
+ lib/ruby/3.4.0/psych/class_loader.rb
+
+ hash2
+
+ jzUWBw+aKZOWrGaJPjDks63AFxsSQl4UOpM4nvaBDto=
+
+
+ lib/ruby/3.4.0/psych/coder.rb
+
+ hash2
+
+ f/ZJZ47CO8jjGdAJT/GO1TBaz5U/4KlKtAc+dPYV92s=
+
+
+ lib/ruby/3.4.0/psych/core_ext.rb
+
+ hash2
+
+ IVMvabFwc0TkRRvMrk3bIeYI1bzLiKGsVu9bYs2gjr0=
+
+
+ lib/ruby/3.4.0/psych/exception.rb
+
+ hash2
+
+ +9s/txMf7lWw3jyKzPw+xk5iPNYBDNnfqsBQ+agoI1Q=
+
+
+ lib/ruby/3.4.0/psych/handler.rb
+
+ hash2
+
+ e5Za1WkAG19g8X+gKZf1lIQ4qMYznzKQcBkj5YTWdPA=
+
+
+ lib/ruby/3.4.0/psych/handlers/document_stream.rb
+
+ hash2
+
+ FgU8bB2zagkwBBC5pUceVkK4x5aDN+hSlgYDq1Mf5VU=
+
+
+ lib/ruby/3.4.0/psych/handlers/recorder.rb
+
+ hash2
+
+ QY2s8WpENRX2xTomWEJYhL7hKHRfFbAa97zbjzsHcik=
+
+
+ lib/ruby/3.4.0/psych/json/ruby_events.rb
+
+ hash2
+
+ my989ZguHPYhWeYkWtPu6DtnJFqE0PHLtwH0jaOTB4k=
+
+
+ lib/ruby/3.4.0/psych/json/stream.rb
+
+ hash2
+
+ IS7D3aoORV+d7Wr4BxTauPTHL3gETfj81r7p6r5KPCs=
+
+
+ lib/ruby/3.4.0/psych/json/tree_builder.rb
+
+ hash2
+
+ tHVNPoTvYHiZMF/IFTQ25jqTfQYxwYM/QB5891oJjdk=
+
+
+ lib/ruby/3.4.0/psych/json/yaml_events.rb
+
+ hash2
+
+ /KT4DX66E8RHUBTztYQAjCDRXkgyPM8h1MyWGwJNaKs=
+
+
+ lib/ruby/3.4.0/psych/nodes.rb
+
+ hash2
+
+ 0BDC/tu98B1lnOn9UU1Jp2/CSueBHjo9jTGUiMPj5kc=
+
+
+ lib/ruby/3.4.0/psych/nodes/alias.rb
+
+ hash2
+
+ 0kWkxCK1YYM/WPJUXXdl+WKT8P15Kv+YMHMBMxUagC0=
+
+
+ lib/ruby/3.4.0/psych/nodes/document.rb
+
+ hash2
+
+ ZYRz5lihxWQXgPGEapQvv59OMBNlj1VMxsbkjV7HSNE=
+
+
+ lib/ruby/3.4.0/psych/nodes/mapping.rb
+
+ hash2
+
+ 5uwKif2eRXy704K/R/Tf2JNZKWV253pqGMDGVV3JcYY=
+
+
+ lib/ruby/3.4.0/psych/nodes/node.rb
+
+ hash2
+
+ bTgzzzy+7uNYwZH/824h3CIiTwe1Uxyd9LnHhJyKs+M=
+
+
+ lib/ruby/3.4.0/psych/nodes/scalar.rb
+
+ hash2
+
+ Ogn2ZJhvOGP3twC9NSkmZFFebFbrF9ci7UQwPdld0xI=
+
+
+ lib/ruby/3.4.0/psych/nodes/sequence.rb
+
+ hash2
+
+ vdrKCJT8k2cNXlDtJQpsoRnngXbKlgU2VN271Jzh/P4=
+
+
+ lib/ruby/3.4.0/psych/nodes/stream.rb
+
+ hash2
+
+ PMQIz4AdPdFqRLnv+GZh6o06tZLshQXwhNp9ZnX7QLI=
+
+
+ lib/ruby/3.4.0/psych/omap.rb
+
+ hash2
+
+ RrT2p2utR/HsUApZPpYCCKwwUFlYGtWlUO4kQF4cXaI=
+
+
+ lib/ruby/3.4.0/psych/parser.rb
+
+ hash2
+
+ L+A6+upw7bthMy4B1T0ya3LZrNppysuYDxYibpSAOkI=
+
+
+ lib/ruby/3.4.0/psych/scalar_scanner.rb
+
+ hash2
+
+ x1RdZ/4sSkqQ+xvCsJHYzBUI54HGm7ih/HjlOiWSO3w=
+
+
+ lib/ruby/3.4.0/psych/set.rb
+
+ hash2
+
+ potZ/wui3AUMXSJOPMNbYtLMXALqI6rsgl7yCGSlTJk=
+
+
+ lib/ruby/3.4.0/psych/stream.rb
+
+ hash2
+
+ QdXzkyMIrWn3ft2qJRW83HGgN1bzWMR3b3Wk+rzj1Lw=
+
+
+ lib/ruby/3.4.0/psych/streaming.rb
+
+ hash2
+
+ XllQjL9ka2HXKshdrqsfJz5oBV1ilHMh8aSRzhxj7xI=
+
+
+ lib/ruby/3.4.0/psych/syntax_error.rb
+
+ hash2
+
+ upiTp5DTTsIYPuY/KALGn0IXhVvvNjt7qE9sQLuD3X4=
+
+
+ lib/ruby/3.4.0/psych/tree_builder.rb
+
+ hash2
+
+ Cls8PY+ClkLnvzVmz+4RKeQmVBvc9FZIb1sZw0sKxDI=
+
+
+ lib/ruby/3.4.0/psych/versions.rb
+
+ hash2
+
+ ZdcRxpb6E/gVRzKb5+xRT1assRDD2PChVbsUm9yvT0c=
+
+
+ lib/ruby/3.4.0/psych/visitors.rb
+
+ hash2
+
+ y4sM8CdTIK+qL2V1AjOHAvDt9zcsEP84clzYoZ7garM=
+
+
+ lib/ruby/3.4.0/psych/visitors/depth_first.rb
+
+ hash2
+
+ JofBXN5CCxyx5SFLxihiFRWcl6BojPl1kgzCVj+vg40=
+
+
+ lib/ruby/3.4.0/psych/visitors/emitter.rb
+
+ hash2
+
+ H6Vi+lZJ7VfVFhw16ahf/BN0InOdDvj85UKMTbH7UZs=
+
+
+ lib/ruby/3.4.0/psych/visitors/json_tree.rb
+
+ hash2
+
+ IhVsE229af8F983x1CgiMqUBweZ73wEbcswlig/Ho6U=
+
+
+ lib/ruby/3.4.0/psych/visitors/to_ruby.rb
+
+ hash2
+
+ 4QqlGS30d/UxI4+gGB4EF09Z5Xk4kUnKXDYls4fdwek=
+
+
+ lib/ruby/3.4.0/psych/visitors/visitor.rb
+
+ hash2
+
+ IutrCOTsGrtuBJXX1RJB9P5rXE6Ho6Seo+zD7wHpCHA=
+
+
+ lib/ruby/3.4.0/psych/visitors/yaml_tree.rb
+
+ hash2
+
+ zki31lPKcQNUK/68SeUnps+f3hQZVmUAwItmXW2QaWQ=
+
+
+ lib/ruby/3.4.0/psych/y.rb
+
+ hash2
+
+ l82l4R2bU8taVyChk/U1FI7Kx7v4uNd7+5O0jVGTKFQ=
+
+
+ lib/ruby/3.4.0/random/formatter.rb
+
+ hash2
+
+ mnh76ZwoH5jIq8NKtnUhvnM6cpfxVqffSW3yzLQXQ34=
+
+
+ lib/ruby/3.4.0/rdoc.rb
+
+ hash2
+
+ 5SsF6kfvp7k09vlPvo96vKBcik208vuq3C7e+FALtMY=
+
+
+ lib/ruby/3.4.0/rdoc/code_object.rb
+
+ hash2
+
+ eAhdg4BSMQDzVoUE/TazhKjRuUg0nxecW94YowvaVgg=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/alias.rb
+
+ hash2
+
+ ut6m0vD1rZNEei6bo6QL0/U/kgYptOvIS8jASIqMwrc=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/anon_class.rb
+
+ hash2
+
+ C52lW3AhA1JqfPKZdo9t+/XNBLO+QCg3qYul/QQkRTA=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/any_method.rb
+
+ hash2
+
+ BmneWTxDSLqcSsiiBszlSwyJS4efFacfZaOzoBKWCYI=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/attr.rb
+
+ hash2
+
+ tobe23P+gAp89iZL9eBbSvUd4zt6Aeof+FRS/91Lf5I=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/class_module.rb
+
+ hash2
+
+ 2fTCp+fQ5cIPqD5s99o2GpcLxP1AaxypgHMOzwAXV8Y=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/constant.rb
+
+ hash2
+
+ LRz938wh46Un8dBvVBuAQUIhi4ZZiPZHBNFv/c0XrAw=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/context.rb
+
+ hash2
+
+ Qf9E2+lwJYzTQaIe5xmSdiLBUsS3QiE0H5+e4QQFHcs=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/context/section.rb
+
+ hash2
+
+ PGXtk02sxxhUggb1hqPbiqcx5R7wfiG728Bu4PZEZkw=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/extend.rb
+
+ hash2
+
+ /5vHmGZnuRGr/msDHCUFYemtqZvZBLH9+BcXk2EQMMg=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/ghost_method.rb
+
+ hash2
+
+ phSX8kwcNTywKDF8v6vbLEHdwslPuGJIy+GEJ7TxlC8=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/include.rb
+
+ hash2
+
+ l4pMxw+PV9m+50A94iLBiol2LOpTIS/s40kFjm7Ag+Q=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/meta_method.rb
+
+ hash2
+
+ OsMYdLivaHLP5MncJBZU1j4dWiFWo4NmPHAE/L/vLH8=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/method_attr.rb
+
+ hash2
+
+ ZXU1igY5vR7GKQ5j811c1VBvTtgTXZ+n7lFmKYO3mVs=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/mixin.rb
+
+ hash2
+
+ /emf80uAZ3Mm//Nq6dGHzYkpt7UEYI8QsKaLQGzii94=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/normal_class.rb
+
+ hash2
+
+ atm8LykrZ6BlI3wb2NLCGfiGtACA7Ci2e7jhP9y6EA8=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/normal_module.rb
+
+ hash2
+
+ ls86i1pPqN8rLSJJ7LjEOx4OIN9xXumZAEXqNZkmt78=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/require.rb
+
+ hash2
+
+ 9PyUhwI0DCQ5e9UYtBDaO8yFJ8sh2O6E4GbMjb5YzKI=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/single_class.rb
+
+ hash2
+
+ eOUEHDeSOj/92qDoHg3jSJazttEAJwEzx1eX7PEVgIk=
+
+
+ lib/ruby/3.4.0/rdoc/code_object/top_level.rb
+
+ hash2
+
+ beutJE8lVyTo3ALyxakYSsl92s+42i27UmBdoJEjhUw=
+
+
+ lib/ruby/3.4.0/rdoc/code_objects.rb
+
+ hash2
+
+ j+c+9gzuG2clfPoOR26duz7iYsRBW7hiBRV+0jeD/fI=
+
+
+ lib/ruby/3.4.0/rdoc/comment.rb
+
+ hash2
+
+ /MlRksn5du3uPMBTjXs/OrhzhhCbQf0Bbr4cZAigOpQ=
+
+
+ lib/ruby/3.4.0/rdoc/cross_reference.rb
+
+ hash2
+
+ vIbvtPekuZtBeDmJAspPXuFyvgvLvZgPiHTveKtbL1U=
+
+
+ lib/ruby/3.4.0/rdoc/encoding.rb
+
+ hash2
+
+ Ceer2UHD7hMEY+EC5zqY9OWQgVGz/isCkikBI7XLGPA=
+
+
+ lib/ruby/3.4.0/rdoc/erb_partial.rb
+
+ hash2
+
+ /tlcYrX8sNa1uZP+XqhhRMn+rylZ1ROEsEZHxJjfr+c=
+
+
+ lib/ruby/3.4.0/rdoc/erbio.rb
+
+ hash2
+
+ zEUuYlJqGC+2na5gT+g82IzUWB8cxUeveL1nuT0P45M=
+
+
+ lib/ruby/3.4.0/rdoc/generator.rb
+
+ hash2
+
+ ghxICRs/8yE7z67KmYc6RgTxh90FazAcgFHm0N3fGDs=
+
+
+ lib/ruby/3.4.0/rdoc/generator/darkfish.rb
+
+ hash2
+
+ eRyiBFODwdPW1drzSzbdTePCRtbm8zhHFbwEogFvIMQ=
+
+
+ lib/ruby/3.4.0/rdoc/generator/json_index.rb
+
+ hash2
+
+ n8/Y+0VFKdO1TpXXKCQ+E4A5ZQMcHmquo+eXQor9k6k=
+
+
+ lib/ruby/3.4.0/rdoc/generator/markup.rb
+
+ hash2
+
+ 1t+Q46yJPQ5cdZX3u2VpFx9wcKpNcvY1grTacKCXgMk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/pot.rb
+
+ hash2
+
+ 41iBN04F77jmFVtusXt7LZAotEvvJUKVbsbXmnMi8lY=
+
+
+ lib/ruby/3.4.0/rdoc/generator/pot/message_extractor.rb
+
+ hash2
+
+ X2510LQ6oZW11ThKODtZDHf+M6ffOCUGhZ3jvwvB1Uk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/pot/po.rb
+
+ hash2
+
+ Uf3T37qofuUiC0UEw0ZlYjtkt89KAw5Sff4Q1Xx5Du4=
+
+
+ lib/ruby/3.4.0/rdoc/generator/pot/po_entry.rb
+
+ hash2
+
+ k77GpELZLC5m6QnUYe4pu9mqjjbfmmCtGS02RQGwnRI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/ri.rb
+
+ hash2
+
+ QPT15YY2TAx40hmvGmfC9mo3gcTdgCyze5n+GThc4Oo=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_footer.rhtml
+
+ hash2
+
+ lKiL4OA6wRhFENg3QRPPwUMil61AbZvG4KPDJt4eCOw=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_head.rhtml
+
+ hash2
+
+ BWesXyk/mlOPd8N8fMeRWgD2uWBHt+m7SujgjvRncmk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
+
+ hash2
+
+ PqiTS6/bOAnIlY4jNILpWNxRFp2Z7QbRqhHHzjqzH14=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_extends.rhtml
+
+ hash2
+
+ Cj9ldAlKc3fHf4OuXXHiNZhgjeuPC8bMYWNeoOUuGko=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_includes.rhtml
+
+ hash2
+
+ 9djsXBugGpbNts7QDs0gU9CnqLyFLq2yL6YeTrQ+Fo0=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_installed.rhtml
+
+ hash2
+
+ BtdlBqAw8J1PdGtY6JunjsQJVMxcK62juaCBl9zleJw=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_methods.rhtml
+
+ hash2
+
+ 02OHlqru4nZDVVYnoGVpZeA4Eq6ewPZADE9CFasXFOc=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml
+
+ hash2
+
+ ScIQVbyic6QIdHqFZYvShuvye4Qp4Rg/3QzvrcWQawk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_pages.rhtml
+
+ hash2
+
+ dsyUClwReumMqsc9XuAXwbwD9VoNd0a19ZEtk65F7LE=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_parent.rhtml
+
+ hash2
+
+ j51DGJ5K0TKTgMLY8oNim4zq9+i8/BAYcaL/oke/ja4=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_search.rhtml
+
+ hash2
+
+ 03jDgjCarVQR4lrsyUzOKbVNnDxnTsLtHWEhVrQ7qDA=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_sections.rhtml
+
+ hash2
+
+ bQDQr35PX6LueXSKVHnNKmMYJvFkcV5OOeeN8YnT6tU=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml
+
+ hash2
+
+ HG2gtrZp6wKbAixUIGHuN48Ewkf/fK6pQaraOKbzPWo=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml
+
+ hash2
+
+ 4EP5kD+Pf5WZObZ6bLIzX42q7VX2Pi0S9d7lZXDEa9U=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/class.rhtml
+
+ hash2
+
+ xwRzMzxEhjjnXOtIjzDsG+BaFVkwb3oQ/he8kvmQZuA=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/css/fonts.css
+
+ hash2
+
+ uDzSYCMWGygF7GV01RJ1lXSwi3kZERMJqGXr+xDeobc=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/css/rdoc.css
+
+ hash2
+
+ wsyZXpeItRdymsp4P4iLkSa+tbIbb5q0zLiyaAvRJF4=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf
+
+ hash2
+
+ 304Fq4cfZyJUh4q1gheSY5jRAft216Y1H0aHKyijCv0=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf
+
+ hash2
+
+ QnvMxdZYQtyelHCFwcLFXYY+lejCaIVlDyWr5hcXpnQ=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf
+
+ hash2
+
+ 4gTpyitmItaN/v4BJ8Itwi8mJKa3dBbC3or7XvXnE3Q=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf
+
+ hash2
+
+ pfHiv2/cMwnIoLeifveV4bKXbDRHewmtW1vCahP1Tb4=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf
+
+ hash2
+
+ qTfIEYsicdCQdl/bNXX2WQIMq4svQP/mMMSVdNJzP0Q=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf
+
+ hash2
+
+ 8UQTf1V4Bccyf8SxTR1zD24YIuASQXAlH/G81yOmk/E=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/add.png
+
+ hash2
+
+ wGpS3zNh3zgKAqRRWaCFjW982MvD9x/3MqZdbCXqavY=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/arrow_up.png
+
+ hash2
+
+ fRC65kyAZzW01DzIK20IeNgO4a0RV9SD4hZniJuxEMI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/brick.png
+
+ hash2
+
+ iuEjd+BdYJXIrcC9zZdNChpdHnzAMSndVfa4VhipKuU=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/brick_link.png
+
+ hash2
+
+ Fu//PfzQhLHqABWtUbq0h8Uec6TNPXOLQzwn5YaFJbQ=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/bug.png
+
+ hash2
+
+ cl7KG/Xqsc+AD1viCWVlAxJlQ5M+OqtfHZHmc8uLdR4=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/bullet_black.png
+
+ hash2
+
+ NTIpnpUHH/ikYrCF2tyASuF9ryCqBWnf0l3X0m7huTo=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png
+
+ hash2
+
+ 91ERWUPekfwnJHOk2zh1x2x61cHTQyzhv3lW3PeuSuk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png
+
+ hash2
+
+ aMA45l1OA8BsStWfEeGZ7RcbUrLRsj8c79LPGMPQzqI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/date.png
+
+ hash2
+
+ rg7fDrRJQ3C3w9Nz0yaK3WOoY3VQy3pmSLAzybINR0A=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/delete.png
+
+ hash2
+
+ zgeotQIuWaG96WkLcgpr8Q/Jdn22US0U6/8nguxitb8=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/find.png
+
+ hash2
+
+ +Ddp0e2CMtrbWzvVv39AkvQyhy2jL1BpFzlRTQVaN38=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/loadingAnimation.gif
+
+ hash2
+
+ 5pq9fgzILzNuYf6oieQG7Lvrfs4d+WAjG3qboNHdFnY=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/macFFBgHack.png
+
+ hash2
+
+ Ao68Fa1EglZjUHPr7a8SggBiJ/TO9oqEAsbE1wAZlKg=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/package.png
+
+ hash2
+
+ NCdlRyfNoj+bEj8xSo8hxuvgupTEgopNaRNcwdBIuDI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/page_green.png
+
+ hash2
+
+ RH6bBiuglMayDXJ9VzoLuADbEjSZX/IBOhjLMnhHTV0=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/page_white_text.png
+
+ hash2
+
+ Qc/s8rxBFcnwd8MfQDTuwt9ZWmjSoRd/rtW7La/7kec=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/page_white_width.png
+
+ hash2
+
+ iEViFPhHD/PFw9iiHrPfa3m8NZQpSdXNOBY6uCp29cY=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/plugin.png
+
+ hash2
+
+ olP82vbfrFdoJSvhh32GMHHTwYHbAGVuPQfXmsaksWM=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/ruby.png
+
+ hash2
+
+ IUeu5mMBQdkqHsgEU2c3qcXGi2a8rQ3XLo7exYexCrk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/tag_blue.png
+
+ hash2
+
+ xn4beumQszDAgSuJoVgMMknjWRe6AL3XgYxPu0xuNgI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/tag_green.png
+
+ hash2
+
+ xT8LuuJKhWG1gK7ng5gDYwyscZZXKsWI7LoGe6LPUZo=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/transparent.png
+
+ hash2
+
+ I7EOWQ/uvm2LA2ACf68KBTihwIjWp4+EB1CUAOqkmQ0=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/wrench.png
+
+ hash2
+
+ lc/ijvKOZ5zWqy+cqYH5lFdC5f4jmxz6SUDGzYpIexI=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/wrench_orange.png
+
+ hash2
+
+ d85u5vzHc5sIhR4sU7/u13RroGgnqIN3tkd8fb8aDKw=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/images/zoom.png
+
+ hash2
+
+ O9oBc4POtZHF4FGdv1D8tohhVsEspUhWARm30DtU5Bk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/index.rhtml
+
+ hash2
+
+ 7UUZ0VuZ+6qo+ShEKeTJqiuHWucaRp4j1pAP8FJ8wTY=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/js/darkfish.js
+
+ hash2
+
+ Ybv3aeZCwIVAvUh6X/4Zk2Y9pB16EpNWcX+eRArm0z8=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/js/search.js
+
+ hash2
+
+ u3iYgDsn1r/RYNhRBOBIEvx2tJEtkYdOQuK2NbNg+Xk=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/page.rhtml
+
+ hash2
+
+ yacs+ckZMCOwCKS2MpqzhMSLiT+iwkNZytyj63H/qnc=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/servlet_not_found.rhtml
+
+ hash2
+
+ hGCOTYoKTpQNTy8xnH+7KF7Oj9MjPHkv+p2s4IS7eCU=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/servlet_root.rhtml
+
+ hash2
+
+ ZAQA831yRheLOhmgbRE/8EG3Z5ZJQ7dvobynU79urcw=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/darkfish/table_of_contents.rhtml
+
+ hash2
+
+ 6Gs2Owu2WIKYiU1al13lpZsC2bpM9rc9eYsMOiLwPPw=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/json_index/js/navigation.js
+
+ hash2
+
+ alIzsHQ4yAdjhHB2ZXyRgI6lsmldiwXvfl02uYYnvCU=
+
+
+ lib/ruby/3.4.0/rdoc/generator/template/json_index/js/searcher.js
+
+ hash2
+
+ 4bVGfdRLBaE+e3mKnBSZVOmGEIlXXcr4swJInES8NZo=
+
+
+ lib/ruby/3.4.0/rdoc/i18n.rb
+
+ hash2
+
+ VyIAKYk58z+T4Qbsi/l4kP+enSAY2JQvZIvLiBySbNI=
+
+
+ lib/ruby/3.4.0/rdoc/i18n/locale.rb
+
+ hash2
+
+ tdv44d9WSCY5DpS2yWr+pd0+gD/U/g2MYiEVB+HwBjY=
+
+
+ lib/ruby/3.4.0/rdoc/i18n/text.rb
+
+ hash2
+
+ gL3vCTJkMYRd3lkd0fGz5siDZn8N0OMKoUjhInkbLfg=
+
+
+ lib/ruby/3.4.0/rdoc/known_classes.rb
+
+ hash2
+
+ 14zfAkQxubfo2UVhjmra2ziG253XUx7IYKzAnDgQGUw=
+
+
+ lib/ruby/3.4.0/rdoc/markdown.rb
+
+ hash2
+
+ RAh+s1YMTN34i3qpIaApQqxxg4P9qO8KXLQ8szmNoXc=
+
+
+ lib/ruby/3.4.0/rdoc/markdown/entities.rb
+
+ hash2
+
+ vcMpaR5gmYwYTEeBL59bNfkHfzBeJ7OlDUoTciVEPfQ=
+
+
+ lib/ruby/3.4.0/rdoc/markdown/literals.rb
+
+ hash2
+
+ M5undMLeucxCQUofogRR38uAmbY6GoUVJhWbvS9t6V8=
+
+
+ lib/ruby/3.4.0/rdoc/markup.rb
+
+ hash2
+
+ Whf05HOHN/7VFkiRCGD8ChRUzVd6VJ2Fq6GQb4GoJjU=
+
+
+ lib/ruby/3.4.0/rdoc/markup/attr_changer.rb
+
+ hash2
+
+ Ly+DiHpgIjojWN66FSap3DMfAz+ObtVdGoJQjZs6/3o=
+
+
+ lib/ruby/3.4.0/rdoc/markup/attr_span.rb
+
+ hash2
+
+ oc9RkTzz+x0Zu7+iBGsc1LIRdV4lCSpYuEgovxemAow=
+
+
+ lib/ruby/3.4.0/rdoc/markup/attribute_manager.rb
+
+ hash2
+
+ 0Ad2uyfOx0jPga9/6Hs7TWfWmODbyvZDgTSi35MZ+iI=
+
+
+ lib/ruby/3.4.0/rdoc/markup/attributes.rb
+
+ hash2
+
+ V8OQg8vDdxBH64HbosLKiJo5Sd0tj4yeZ+n1DXoyBqk=
+
+
+ lib/ruby/3.4.0/rdoc/markup/blank_line.rb
+
+ hash2
+
+ QQYe9n2Z5dUo+9nfBaXR8OTx6K6NTnL2tP8SiSwJcOw=
+
+
+ lib/ruby/3.4.0/rdoc/markup/block_quote.rb
+
+ hash2
+
+ 4PJPIvPiiYPodacdRtnrJcpT1ijwzz7NHZcYHNCMxmc=
+
+
+ lib/ruby/3.4.0/rdoc/markup/document.rb
+
+ hash2
+
+ Fr3JOGvjOP/fZ0YkMfXidvhrGeFsoLh0Q4TnAeDOzAw=
+
+
+ lib/ruby/3.4.0/rdoc/markup/formatter.rb
+
+ hash2
+
+ WzGCTZuKDNQbbBvn029zfQijlemF1dFD4qqt7Ufhrxo=
+
+
+ lib/ruby/3.4.0/rdoc/markup/hard_break.rb
+
+ hash2
+
+ uc5VUtDPF9sFqc9c4K1pvavhFI/WzWeB5OkMBDzJdNc=
+
+
+ lib/ruby/3.4.0/rdoc/markup/heading.rb
+
+ hash2
+
+ WjIjjr3pHMADJ179qEBmqwMAuHLpn94B3tr8DEcOS9M=
+
+
+ lib/ruby/3.4.0/rdoc/markup/include.rb
+
+ hash2
+
+ 4DNtK9kYH0bForvTi3Sp9jno9hn745WOAqd9vWjOKRc=
+
+
+ lib/ruby/3.4.0/rdoc/markup/indented_paragraph.rb
+
+ hash2
+
+ ddaRqjvX3xBLiD0DnoLh/J3afkUtjaE6VsT3c5pyYB4=
+
+
+ lib/ruby/3.4.0/rdoc/markup/list.rb
+
+ hash2
+
+ dS6DFRDwzl7fZnfE8ghPhhDBs9tB9Sm13FqTaQCVGi8=
+
+
+ lib/ruby/3.4.0/rdoc/markup/list_item.rb
+
+ hash2
+
+ MKWwaWrM4btD5p2qYPzxhDG8IUHDyStOblD8ifNPECY=
+
+
+ lib/ruby/3.4.0/rdoc/markup/paragraph.rb
+
+ hash2
+
+ D4F10dFFnIxVt1xXz95up8HqX2solBC5mbJ/tZGx3PU=
+
+
+ lib/ruby/3.4.0/rdoc/markup/parser.rb
+
+ hash2
+
+ lPbeCUonEiqk+kdTOZQ17VD58wMmR4V83x/dHhMcUB8=
+
+
+ lib/ruby/3.4.0/rdoc/markup/pre_process.rb
+
+ hash2
+
+ WHtt00HLn1n1u18GqliQ44uAQJryWiRhUVOAZZGWyW4=
+
+
+ lib/ruby/3.4.0/rdoc/markup/raw.rb
+
+ hash2
+
+ bi/Xh8wWgKR7E3e9Dq8BuNauDBbnTEfVHbDoSNYbpr8=
+
+
+ lib/ruby/3.4.0/rdoc/markup/regexp_handling.rb
+
+ hash2
+
+ ll4sxVeo5YZ4Vp6CfqiOg2vuZTStGMHLcwkApcNbyMo=
+
+
+ lib/ruby/3.4.0/rdoc/markup/rule.rb
+
+ hash2
+
+ IAvnd+peHphiTpW60T8ca2ACZHehv4CzZYaLPrXzfrg=
+
+
+ lib/ruby/3.4.0/rdoc/markup/table.rb
+
+ hash2
+
+ U2CQQ91oyzLC73ZL1Yt3OQ8fmYcvB6Hq0lZNKS7n/CU=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_ansi.rb
+
+ hash2
+
+ XML7pRTjV4uGtMnRRmJIJCfAgCbIUjmjmBXGliUIK+0=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_bs.rb
+
+ hash2
+
+ 8zzmVHm+nSfu2XYwZemA6ukqSXw/sg7mJu2L8Vb8kIo=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_html.rb
+
+ hash2
+
+ oNWaxCtbxJ184S00sIoHYDVDllrhSuXuqOq0dc4uwQg=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_html_crossref.rb
+
+ hash2
+
+ AIfTI3J9f/V4k+kawkk3jq/fGH9NoHG5XD9IRd9WL5M=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_html_snippet.rb
+
+ hash2
+
+ ylnXZH5AZ/rrSINEPLFbB6B9hZwNvXu0mHwCHC1hfpo=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_joined_paragraph.rb
+
+ hash2
+
+ Si866xu95I/GlNw6nM6XR/oFrR09eQ9XjxivSoPw0to=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_label.rb
+
+ hash2
+
+ FMJ/lCjrDXvQROlFSzcyS0PArvyE64nH4zO8h0SvY3w=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_markdown.rb
+
+ hash2
+
+ vKyA/d59T3bv1FnnoYFabJjE1K51gt0sPmjZTHu+T9M=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_rdoc.rb
+
+ hash2
+
+ tdBWuGnGTHbhf3L7WHKr8IDdxWkWRqtr9MLOYaB8nPo=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_table_of_contents.rb
+
+ hash2
+
+ eIAmEOKSo50MEuoLuxxbVkvWuadWCHiQyTzcrcSHo7g=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_test.rb
+
+ hash2
+
+ Wra6T3ZumDcKDudiphbMPunegLj4bKrd+2UQ8oOQoGI=
+
+
+ lib/ruby/3.4.0/rdoc/markup/to_tt_only.rb
+
+ hash2
+
+ cCjh7nSGUdRMjFeD9gs50FrIWhDmn83bLMpgyN+BsVc=
+
+
+ lib/ruby/3.4.0/rdoc/markup/verbatim.rb
+
+ hash2
+
+ DOWRXxrqi4oMWsnO6NF5epyEYgJuwNWWDy+M5Br9yHE=
+
+
+ lib/ruby/3.4.0/rdoc/options.rb
+
+ hash2
+
+ wONCZfLdbJ1YY5+92/issbj7wrDM5BTxhn0xHi/KXI0=
+
+
+ lib/ruby/3.4.0/rdoc/parser.rb
+
+ hash2
+
+ SJonuLgJbHCX6kN5TO7yT+mNvxYHdBvynfwwqD8ODKE=
+
+
+ lib/ruby/3.4.0/rdoc/parser/c.rb
+
+ hash2
+
+ MsA44ReY3RUgLdCbLJeVrDJ/09cios3raMnQPsnIEsg=
+
+
+ lib/ruby/3.4.0/rdoc/parser/changelog.rb
+
+ hash2
+
+ 5QZ0syvlUPZLjQBZB4pti1oS5/G7QHAqw5RfO4Z/96A=
+
+
+ lib/ruby/3.4.0/rdoc/parser/markdown.rb
+
+ hash2
+
+ TxV+feDyBM83ycowCtzQ0xuD8wExEmMTA6/tMpiC1mY=
+
+
+ lib/ruby/3.4.0/rdoc/parser/prism_ruby.rb
+
+ hash2
+
+ Kha57oMXptgHKFai1d/zFlFYERNMNzfWUF2NygWdcnQ=
+
+
+ lib/ruby/3.4.0/rdoc/parser/rd.rb
+
+ hash2
+
+ aElYJMRj9UzULNK/RLL28nleI8xOL1/l2zfAtcXD8bk=
+
+
+ lib/ruby/3.4.0/rdoc/parser/ripper_state_lex.rb
+
+ hash2
+
+ FGSZISWwYcuGrdqqbDedzpoH1MHCliXb0Iu1s3BzkYs=
+
+
+ lib/ruby/3.4.0/rdoc/parser/ruby.rb
+
+ hash2
+
+ SsW1vZqmR4APnIrfn1iMPt7fniB51vn2fawLhnwK7jE=
+
+
+ lib/ruby/3.4.0/rdoc/parser/ruby_tools.rb
+
+ hash2
+
+ ckRtOtRMUAkvbiidiC8ocWRxP4Is2uFywoBAsVD3Nck=
+
+
+ lib/ruby/3.4.0/rdoc/parser/simple.rb
+
+ hash2
+
+ Mdfx9TZCgOSN6jrKCE/jMqE5quSFr5bfInu2JAqyVpc=
+
+
+ lib/ruby/3.4.0/rdoc/parser/text.rb
+
+ hash2
+
+ NNMxgKWNIXPCFrNxJZLbDtECevRmpAJM5ROLvXr43wo=
+
+
+ lib/ruby/3.4.0/rdoc/rd.rb
+
+ hash2
+
+ Nibz9GHXfGmlvN5CZKSd87YW41vVazuNdnPWc9K1ljI=
+
+
+ lib/ruby/3.4.0/rdoc/rd/block_parser.rb
+
+ hash2
+
+ ieim2GrXk0+CpLKZ9UfhC95RWC9l7g6ArFzwghQdP+g=
+
+
+ lib/ruby/3.4.0/rdoc/rd/inline.rb
+
+ hash2
+
+ mhe2zJ+5gA/Iz7Iw6u6rQar1lGJEaD9eXXJDCcwW3wk=
+
+
+ lib/ruby/3.4.0/rdoc/rd/inline_parser.rb
+
+ hash2
+
+ jnnjJs/kfaPo6vdDA6XLDIDp3w2zl2wXLl13LsWctfo=
+
+
+ lib/ruby/3.4.0/rdoc/rdoc.rb
+
+ hash2
+
+ kGG6RkNKReDKXKv0yZ3JDz5/KJiG41g2YgHwLKjwdX4=
+
+
+ lib/ruby/3.4.0/rdoc/ri.rb
+
+ hash2
+
+ RELjbARN6APSXnL/VVSOunHQAVDqkLZQVTWGgT2JZNo=
+
+
+ lib/ruby/3.4.0/rdoc/ri/driver.rb
+
+ hash2
+
+ RH29TDQNfSg/cE9QL0hunX3NaJ9B+Gm6HLb5pcJKMS8=
+
+
+ lib/ruby/3.4.0/rdoc/ri/formatter.rb
+
+ hash2
+
+ KuPu18gz7p5TSR4DJBBJFFuCQeHYQB/BnlWiq1IdUTs=
+
+
+ lib/ruby/3.4.0/rdoc/ri/paths.rb
+
+ hash2
+
+ ael+Sb/StvkoM6uVPrzfJ6KG6o4bwS/a+6HZzk8WhFg=
+
+
+ lib/ruby/3.4.0/rdoc/ri/store.rb
+
+ hash2
+
+ x1EiDV6wptSFwr0kQZZhm1e6NTQI8nWQzXvlxMMe5Bs=
+
+
+ lib/ruby/3.4.0/rdoc/ri/task.rb
+
+ hash2
+
+ kruecR+H2KV+MzIaAw8hBIOI7v9dcw9QuHx1EdrWp78=
+
+
+ lib/ruby/3.4.0/rdoc/rubygems_hook.rb
+
+ hash2
+
+ T+uyna/J1R5kXFvg2zuasxEfvAZ62/Fia+2/4ndis1A=
+
+
+ lib/ruby/3.4.0/rdoc/servlet.rb
+
+ hash2
+
+ tQP5ISIePOD4f7abuEO7QaLnh8OvMps+fxxNdL4GJTs=
+
+
+ lib/ruby/3.4.0/rdoc/stats.rb
+
+ hash2
+
+ AD8jNatKP7nge1kJ3KQaxzbLfCgx7/fv/JrLss9ubvM=
+
+
+ lib/ruby/3.4.0/rdoc/stats/normal.rb
+
+ hash2
+
+ aMKjqOrKUhvq8gdz9rkiRu03oHGjjKoeUIwRnqJ4v5k=
+
+
+ lib/ruby/3.4.0/rdoc/stats/quiet.rb
+
+ hash2
+
+ bJJwcUcMVWnAMZIK3lUmKCNdEOWPwf3aODm1OmOtqcM=
+
+
+ lib/ruby/3.4.0/rdoc/stats/verbose.rb
+
+ hash2
+
+ KX4ZTAETxYvqv0kz0AnJ7XzGGTRDNz5pO97dKbqKFsE=
+
+
+ lib/ruby/3.4.0/rdoc/store.rb
+
+ hash2
+
+ 58+0okeOvg8yFAopCJ4TaOglW1Hoczk8gzDyRABNUx8=
+
+
+ lib/ruby/3.4.0/rdoc/task.rb
+
+ hash2
+
+ lai0iIYo1375sN9vXOJCyMletc2JMyfe7axIcibh4rA=
+
+
+ lib/ruby/3.4.0/rdoc/text.rb
+
+ hash2
+
+ IWDUjWO07WOS5i/I44DNo1yxEXBwkovynSHwyj1v2uo=
+
+
+ lib/ruby/3.4.0/rdoc/token_stream.rb
+
+ hash2
+
+ uS7NgfsbIVo/RXkvhiSVn+6N4zCDQSUQN22m2C4Qmms=
+
+
+ lib/ruby/3.4.0/rdoc/tom_doc.rb
+
+ hash2
+
+ 8nvxo6nkLSCtddmVIP+4BYV21dz3AChH3URFSlZ89TI=
+
+
+ lib/ruby/3.4.0/rdoc/version.rb
+
+ hash2
+
+ SAzvP2cFPzYdhudOJUl46Rq/1gwq2yHmf8DxzSsjxi0=
+
+
+ lib/ruby/3.4.0/readline.rb
+
+ hash2
+
+ GlGaFxKRE5GJF+gUMWjcEOr1gES4oGAGnVm4vXP+RVg=
+
+
+ lib/ruby/3.4.0/reline.rb
+
+ hash2
+
+ vtZbRjASkSMBPG5Zhd/zkUAzzYhK2ZU1gRHDtzlqIyw=
+
+
+ lib/ruby/3.4.0/reline/config.rb
+
+ hash2
+
+ C+m/qGD0c+FwLPxg9JOn8ZbAJ7/2hqDzTl+H6al5uTU=
+
+
+ lib/ruby/3.4.0/reline/face.rb
+
+ hash2
+
+ 6yZpPmvvUINKdgRFRsF5XbbIFTLMYHAqt7ZLbCEzaJ0=
+
+
+ lib/ruby/3.4.0/reline/history.rb
+
+ hash2
+
+ sdRbfJ2uUsQdcZmru4B6mXyTAhCnTJUqxcchS0fTAR0=
+
+
+ lib/ruby/3.4.0/reline/io.rb
+
+ hash2
+
+ CM7QIry2/Ku0QmrfgRlHOb4pVCo2af7p6fOtZ8GU/0s=
+
+
+ lib/ruby/3.4.0/reline/io/ansi.rb
+
+ hash2
+
+ ZBY/uddi+9ny63Z58aatMZI1T2MD1oMScUtRQ5LaUFg=
+
+
+ lib/ruby/3.4.0/reline/io/dumb.rb
+
+ hash2
+
+ EL2jgICbIv4ZPtgDMWZsJKwfcHaOKRT+ScQykyp5RVo=
+
+
+ lib/ruby/3.4.0/reline/io/windows.rb
+
+ hash2
+
+ Niim4qGhaEctizRaHPZN5dXKi92dWNA4Y4PE2kQ7taU=
+
+
+ lib/ruby/3.4.0/reline/key_actor.rb
+
+ hash2
+
+ Ls3hcJrOVCflfRLH6uQ1bwQyqdGO94OybHZc2Xk16To=
+
+
+ lib/ruby/3.4.0/reline/key_actor/base.rb
+
+ hash2
+
+ q8XfGXXxClcINJhJylss5qC3UKdBE/NktFb/Fa2xpr0=
+
+
+ lib/ruby/3.4.0/reline/key_actor/composite.rb
+
+ hash2
+
+ 9R8KLhOACwyjYdcVvPLWOa1o8JJyA82pTeJ9x5rPZ9c=
+
+
+ lib/ruby/3.4.0/reline/key_actor/emacs.rb
+
+ hash2
+
+ fsEHGBcOZITYo32E9OPj+bri9AZP2gW5DPJUqa6AlQA=
+
+
+ lib/ruby/3.4.0/reline/key_actor/vi_command.rb
+
+ hash2
+
+ Yvl6lJuyxhcOHaxg0zsIoaDUGl4oQeWnv/Xa6tc4l7g=
+
+
+ lib/ruby/3.4.0/reline/key_actor/vi_insert.rb
+
+ hash2
+
+ 0unHlNmt66TjbUzZG5APcMySxxVtE0VqkVOQY8UTuxw=
+
+
+ lib/ruby/3.4.0/reline/key_stroke.rb
+
+ hash2
+
+ pdPROlwe0lZKbe3GQrYpJJtdJADLiys1tUkID1BsnTU=
+
+
+ lib/ruby/3.4.0/reline/kill_ring.rb
+
+ hash2
+
+ 1S5QgjwmocDpYSTYdFwesz91404xDQxIImuBH2cKrXA=
+
+
+ lib/ruby/3.4.0/reline/line_editor.rb
+
+ hash2
+
+ zZj0kPFguSRdpqf2GJlpepyitbTwgZjAkuJ6qD6aKEE=
+
+
+ lib/ruby/3.4.0/reline/unicode.rb
+
+ hash2
+
+ 2EHx8BzHkoElJ4v5djbT50KJGFhnZtiswEQAX6sLEsw=
+
+
+ lib/ruby/3.4.0/reline/unicode/east_asian_width.rb
+
+ hash2
+
+ eY8zwvMffMQRSWK+TC6g7fugN3NAGKm09gyEctC5s6c=
+
+
+ lib/ruby/3.4.0/reline/version.rb
+
+ hash2
+
+ ilgSQanJQLlHF0OmKT15um9I0E93q7CjcMFSE7XkCsw=
+
+
+ lib/ruby/3.4.0/resolv.rb
+
+ hash2
+
+ l3x0JV7NPppl5bJnDgZhcSGCU86H/wr9LjtNvBwxF2M=
+
+
+ lib/ruby/3.4.0/ripper.rb
+
+ hash2
+
+ KvV+Qpe2pa2fpFL87w0UQbNCJcWb5T0W8eu0Chorgj8=
+
+
+ lib/ruby/3.4.0/ripper/core.rb
+
+ hash2
+
+ QI2Nsin7SFcqdSMLmJmE7twQf9NK4tGnxeobvhnsm7I=
+
+
+ lib/ruby/3.4.0/ripper/filter.rb
+
+ hash2
+
+ r6O8nY0jKkw+YV/wNDEGa2Frl4UB1A8csprdOEw+t9k=
+
+
+ lib/ruby/3.4.0/ripper/lexer.rb
+
+ hash2
+
+ bbTFJHglnSl5pc8ydG93x4BNtkcdxqez/Tp5zF5yYgk=
+
+
+ lib/ruby/3.4.0/ripper/sexp.rb
+
+ hash2
+
+ 1UKSzZa3yiz9ljRPzAm50+/AQ/zG1rj+B816bT3m3Xs=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/assembler.rb
+
+ hash2
+
+ YWIHjcDV7dW3EywiiQB2PEerNQNKEVPCbtERO/KCjV8=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/block.rb
+
+ hash2
+
+ +fzXX4hgMynDwQnbo8JkJHDbVxLEGnJ5FdY6QQgMF4E=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/branch_stub.rb
+
+ hash2
+
+ DxpPalxP+OPWobtI8Y0gQ8NuhzCW1XggZPkngOM3uiw=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/c_pointer.rb
+
+ hash2
+
+ qMDC1k7N8jzSxZ7t+mDsDln7cS0SUyCey+gt6FYIjSY=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/c_type.rb
+
+ hash2
+
+ erdwhyDYt6w3K1HSOc39uH9qPUzIWILFS92et8gxgiA=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/code_block.rb
+
+ hash2
+
+ HPD0GqgSAjh+VUVEdOH8t47Z+p4noCudgf86VUX1k24=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/compiler.rb
+
+ hash2
+
+ f0SrzGw8cufrjN0sX3VNwXY40Pg2QN9/tl2tABkkXms=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/context.rb
+
+ hash2
+
+ imIkT1J6CSA+SnvjpF/s9rFMChT519PenDMTvcxePkQ=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/entry_stub.rb
+
+ hash2
+
+ EYAwXU62tXv0NtutcBeDDzso7FRiPO/8ubck8Cl8b2Y=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/exit_compiler.rb
+
+ hash2
+
+ kwpjn7RapFbV/ID5wqK3+SVri80A4Nq14ZgYFkwh5XE=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/hooks.rb
+
+ hash2
+
+ EX5ps5JLh0X+O5RQESUj/xk86FUS0VcexUwPvhRQsVA=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/insn_compiler.rb
+
+ hash2
+
+ kk6aOt26B4/kjmAg7fxLVLvqDjhm4f6tdNWS2A+FJkE=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/instruction.rb
+
+ hash2
+
+ ycm/hd99Ig+0TQDZVVj1vwFLj++MhdNMQ2PmgNF70SE=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/invariants.rb
+
+ hash2
+
+ aB7Pn/I1FFxGf5ie5mNUa2xNbL2R8XdbukCmKVoXtlk=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/jit_state.rb
+
+ hash2
+
+ v5hXUIayZw6yCFWj0LF4M1qS2a6NEBZEQT90JG/eqtA=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/stats.rb
+
+ hash2
+
+ WC0DykwcEv3y+hveLZZU42dMjX+ILnEUOCKTuRUZxNE=
+
+
+ lib/ruby/3.4.0/ruby_vm/rjit/type.rb
+
+ hash2
+
+ PtdY6jD+X2DdgrH80ovPU22YsJNNi5pNVzXELWp6Ei0=
+
+
+ lib/ruby/3.4.0/rubygems.rb
+
+ hash2
+
+ 0CjCvY7TGJGDl0uKtsmso/Pj7AqcF5+2gtfzD9Trwno=
+
+
+ lib/ruby/3.4.0/rubygems/available_set.rb
+
+ hash2
+
+ f7tT+X/Y2iTi+S1kghOGVCFUl0qIZLzALKoG/h2bB3M=
+
+
+ lib/ruby/3.4.0/rubygems/basic_specification.rb
+
+ hash2
+
+ uEz83l5Amg1wmBwlG1ea9QF/nsqGcvkuVB/GbxjLzyc=
+
+
+ lib/ruby/3.4.0/rubygems/bundler_version_finder.rb
+
+ hash2
+
+ y3KI+bAjt9tD3KfCR7yc3taJ1XM4e8Z2lJH4cYdZKrs=
+
+
+ lib/ruby/3.4.0/rubygems/ci_detector.rb
+
+ hash2
+
+ VYYJrYY3y1Z4Flgt9r/DMbcT+l29Xc1IuEZtPV2dow8=
+
+
+ lib/ruby/3.4.0/rubygems/command.rb
+
+ hash2
+
+ cjKPn1DmILBudh5/isvmVvI7WnsybD+AwUAQLUsd8Oo=
+
+
+ lib/ruby/3.4.0/rubygems/command_manager.rb
+
+ hash2
+
+ gHKxAbGS6yVj/rMgecCZaDwyP9Eq195nI69gVe6BmZA=
+
+
+ lib/ruby/3.4.0/rubygems/commands/build_command.rb
+
+ hash2
+
+ whYxARQzeacvD4oV+bNSjk5FJ+aN3YKMK9GK+jH0c/A=
+
+
+ lib/ruby/3.4.0/rubygems/commands/cert_command.rb
+
+ hash2
+
+ Dlb0e/4ZOyp0XzyOMbPsPSu08HtLtcWjlKwJqfkNBrk=
+
+
+ lib/ruby/3.4.0/rubygems/commands/check_command.rb
+
+ hash2
+
+ vWXC9U/+GMrmajMIsTjIIKne7KzJe5YARavGqdXs/Zc=
+
+
+ lib/ruby/3.4.0/rubygems/commands/cleanup_command.rb
+
+ hash2
+
+ oG8sxkIlSTyTLObMrqWfvX1nlf/bEY3WIXEbW/hEGzE=
+
+
+ lib/ruby/3.4.0/rubygems/commands/contents_command.rb
+
+ hash2
+
+ lbeFA5nPKshVZJcNix8e86vLYl8CkOchAvIbZvSTSp8=
+
+
+ lib/ruby/3.4.0/rubygems/commands/dependency_command.rb
+
+ hash2
+
+ w/bjltgOC8+Xnh8JNgRH4cHkmgMc1xtLch+nKe2MnOY=
+
+
+ lib/ruby/3.4.0/rubygems/commands/environment_command.rb
+
+ hash2
+
+ vd0nW3LPBFgABxffWFow7rWQ5QBLCEToOSOm3Ik8DgA=
+
+
+ lib/ruby/3.4.0/rubygems/commands/exec_command.rb
+
+ hash2
+
+ /gpWgvHtPG6d2kv7L1dajjt4WHLjZYhvjv8QsdSi11c=
+
+
+ lib/ruby/3.4.0/rubygems/commands/fetch_command.rb
+
+ hash2
+
+ 8e7LnnsjrySqq/lqrXur015TLlXurPc3mqE1YdTYBQQ=
+
+
+ lib/ruby/3.4.0/rubygems/commands/generate_index_command.rb
+
+ hash2
+
+ ZF6KubQreFgJjCWuEdzXNnxikkoCEi5YetvbQqHa/GQ=
+
+
+ lib/ruby/3.4.0/rubygems/commands/help_command.rb
+
+ hash2
+
+ /nh57bfYDOLpunluUeVMv18/Rdw502pp8WJ+o+0c/No=
+
+
+ lib/ruby/3.4.0/rubygems/commands/info_command.rb
+
+ hash2
+
+ 7W6Sh5hAgfNMWHZBbP+tL+a8vjCBiB4NlKuNiAfmCtY=
+
+
+ lib/ruby/3.4.0/rubygems/commands/install_command.rb
+
+ hash2
+
+ 4GxBHzq0Jg2XVgDn22L58/Z/6EFTRNm2SNDVDE+XY1Y=
+
+
+ lib/ruby/3.4.0/rubygems/commands/list_command.rb
+
+ hash2
+
+ k3L/M4GLxCnrgLwL9N2QmSbkq/jVu7J+aAe3iG6Q3ZU=
+
+
+ lib/ruby/3.4.0/rubygems/commands/lock_command.rb
+
+ hash2
+
+ h5HI/k2x5ULJBm1cMfbnjUhPcFNTEKcLovJzJLp7Dlo=
+
+
+ lib/ruby/3.4.0/rubygems/commands/mirror_command.rb
+
+ hash2
+
+ gg1pfJBRTLjb6gJA1p0TtYO+56oFEn1PmHHLJbcgO9o=
+
+
+ lib/ruby/3.4.0/rubygems/commands/open_command.rb
+
+ hash2
+
+ OASBdBVCZfy8guVBos5kGtlFgusPjv6j2Wt8WvsD9g4=
+
+
+ lib/ruby/3.4.0/rubygems/commands/outdated_command.rb
+
+ hash2
+
+ ch49E+1iVTxOSLDn6FtGWSw4CU1jIpwj1wlRi/0qaqE=
+
+
+ lib/ruby/3.4.0/rubygems/commands/owner_command.rb
+
+ hash2
+
+ 0Yptfofao8jbUF/zLZTc2LJRzHerTV1i5OetEXEOHr4=
+
+
+ lib/ruby/3.4.0/rubygems/commands/pristine_command.rb
+
+ hash2
+
+ 4ltbHHxJgRy6D99YQ9C/DLsWsZsx538ljUAw7zOMKNA=
+
+
+ lib/ruby/3.4.0/rubygems/commands/push_command.rb
+
+ hash2
+
+ vhAmKsU7h5/yKLfB1Q6bJhpcK5Fg6Y9JxQ2oAI/XPFk=
+
+
+ lib/ruby/3.4.0/rubygems/commands/query_command.rb
+
+ hash2
+
+ HPMqASY49k+t0xEjAuMyVNY5zJ7AoQNufEPCo209Kc4=
+
+
+ lib/ruby/3.4.0/rubygems/commands/rdoc_command.rb
+
+ hash2
+
+ NB5Am5BMhHWHmzN2yUWKbOhRvUuPyZPaW0JEBsSkvPw=
+
+
+ lib/ruby/3.4.0/rubygems/commands/rebuild_command.rb
+
+ hash2
+
+ 6c4M0HfeXJ12Kc98S9Be+k8A757BKw4z1cV4vokS+9M=
+
+
+ lib/ruby/3.4.0/rubygems/commands/search_command.rb
+
+ hash2
+
+ KlzB9AI7pvXtkXPozuWvE9fwG9ERJWwzGZfFdlHNWTs=
+
+
+ lib/ruby/3.4.0/rubygems/commands/server_command.rb
+
+ hash2
+
+ LDBffWm+ul3nFQvZYp3otNkRXh1s9I3ZbYdXetw/JMk=
+
+
+ lib/ruby/3.4.0/rubygems/commands/setup_command.rb
+
+ hash2
+
+ kwoL7YDdBIYvMzbik+5SKCa281AJSddKwIZznnT52V8=
+
+
+ lib/ruby/3.4.0/rubygems/commands/signin_command.rb
+
+ hash2
+
+ G9JKYaoFYyBJV7VqcOBYPM8pNdWTrvwmSS/UhfI0zDs=
+
+
+ lib/ruby/3.4.0/rubygems/commands/signout_command.rb
+
+ hash2
+
+ Pmm33CSN0lSTduRcAnqce+htkJ/YKlmr+fpAaay8lgs=
+
+
+ lib/ruby/3.4.0/rubygems/commands/sources_command.rb
+
+ hash2
+
+ 2iD1ngKuoJo+zmqjE0B8393LIwomncINJhFuLO7cTQM=
+
+
+ lib/ruby/3.4.0/rubygems/commands/specification_command.rb
+
+ hash2
+
+ BQUg4Kh7Q3XdGleBLf007jogG9zOzPFPsL815bulX+4=
+
+
+ lib/ruby/3.4.0/rubygems/commands/stale_command.rb
+
+ hash2
+
+ l+ouiZ9hYR+LVet/7iRdiQsqOa0pUxyJdOQ1WVZFutQ=
+
+
+ lib/ruby/3.4.0/rubygems/commands/uninstall_command.rb
+
+ hash2
+
+ RpZSMyVU56I1JBIEm5ORjez+AnNLr94aXRVHb+dyabY=
+
+
+ lib/ruby/3.4.0/rubygems/commands/unpack_command.rb
+
+ hash2
+
+ reXSqY3oexze8r8tyecf/64jYNNY8MJ90WyFSdy0eOs=
+
+
+ lib/ruby/3.4.0/rubygems/commands/update_command.rb
+
+ hash2
+
+ i0hv+eLlffW1HTOeO7f7NlA2HOGFYh8ktB5Kl01b3Yw=
+
+
+ lib/ruby/3.4.0/rubygems/commands/which_command.rb
+
+ hash2
+
+ +IiQ1CfExl++9+aM7qiJQnQ/aJyyGihpt/RYN/GeqKk=
+
+
+ lib/ruby/3.4.0/rubygems/commands/yank_command.rb
+
+ hash2
+
+ SxCIRwTLkEpXWc4j3O18RZ9S4XAFGx+pbMCSXXpxbIM=
+
+
+ lib/ruby/3.4.0/rubygems/compatibility.rb
+
+ hash2
+
+ nBktGqepBUCMiZiAFWzBunMXGX7emyB+URXyXFv+nMI=
+
+
+ lib/ruby/3.4.0/rubygems/config_file.rb
+
+ hash2
+
+ 0UbAzIZGfedrTZdT0Uy7d1P2GbSDkxLKoVQtsoxmIKM=
+
+
+ lib/ruby/3.4.0/rubygems/core_ext/kernel_gem.rb
+
+ hash2
+
+ +4xM2dFLtf85jWvG57LV6gEMHG5JuW0KsGb3Xi1mZDg=
+
+
+ lib/ruby/3.4.0/rubygems/core_ext/kernel_require.rb
+
+ hash2
+
+ 0RpR0YF/ZFNrN82gepJlloYIGA3QZ/IK2Ht1nybe2C0=
+
+
+ lib/ruby/3.4.0/rubygems/core_ext/kernel_warn.rb
+
+ hash2
+
+ dygm/g6+mXJaHs7sqSl/zqwQDM+cNG7L9U3F1iYpJD8=
+
+
+ lib/ruby/3.4.0/rubygems/core_ext/tcpsocket_init.rb
+
+ hash2
+
+ hyKITiLIg+poVt/nOcvaIuDxkhlwX31uQLsaecnFdao=
+
+
+ lib/ruby/3.4.0/rubygems/defaults.rb
+
+ hash2
+
+ EwpVMaEjW7rcUVavt69bo6yKdUNsiGg0tLg14Bjj1eM=
+
+
+ lib/ruby/3.4.0/rubygems/defaults/operating_system.rb
+
+ hash2
+
+ IGD/4baEpsTEneXCA0IKzyRM3SHVz1QlFEwiF6l6Cu8=
+
+
+ lib/ruby/3.4.0/rubygems/dependency.rb
+
+ hash2
+
+ fG2lRutRVJA6q89oJ0x6jXbWK46gFYXdK7dYoC6cQdg=
+
+
+ lib/ruby/3.4.0/rubygems/dependency_installer.rb
+
+ hash2
+
+ +hKWhqNAFyYVycf5XJKWNXYqjP3/FhSEUk5VaFt8S+E=
+
+
+ lib/ruby/3.4.0/rubygems/dependency_list.rb
+
+ hash2
+
+ IQIDW5bRbxG1EW/E/do3tR+KaZFtYY3ONZnahYgmJqM=
+
+
+ lib/ruby/3.4.0/rubygems/deprecate.rb
+
+ hash2
+
+ aox7x1BGgvYli/soqbFGCLu+PRehQz2z17wPsndxtEs=
+
+
+ lib/ruby/3.4.0/rubygems/doctor.rb
+
+ hash2
+
+ 6J26gPGhAZHB8k/DAvtXluNllOiOUt9ujbwjBJ8dMks=
+
+
+ lib/ruby/3.4.0/rubygems/errors.rb
+
+ hash2
+
+ hLCXOtiE+/rNw4o5vXzTPYT4WMfZvOoz7ndKV8WRZr0=
+
+
+ lib/ruby/3.4.0/rubygems/exceptions.rb
+
+ hash2
+
+ f00BqRAIFvBDCAwQDHCNjgPEqo6qO5t5e+CNoujX04w=
+
+
+ lib/ruby/3.4.0/rubygems/ext.rb
+
+ hash2
+
+ zy7OM1p8IPnnrKI4w37Gpd/gITY5X4cjJyRe9fSMgMA=
+
+
+ lib/ruby/3.4.0/rubygems/ext/build_error.rb
+
+ hash2
+
+ 4fzl3bjJxkCfTFjb3BBlvNjsjlqLWWz0rWwXH4hDl9I=
+
+
+ lib/ruby/3.4.0/rubygems/ext/builder.rb
+
+ hash2
+
+ +rMCYdvoBDAO3jt/wBq/oqWm9dGaIbJRGwOisyv5i8E=
+
+
+ lib/ruby/3.4.0/rubygems/ext/cargo_builder.rb
+
+ hash2
+
+ 0YP1uRvKNxz7yriWalmGN1IDwXih/DO81uaULT7jk8M=
+
+
+ lib/ruby/3.4.0/rubygems/ext/cargo_builder/link_flag_converter.rb
+
+ hash2
+
+ xVdjVzLk1eF6a9LTwv8RYL2aokFq+gIvVbp+8o+Irvc=
+
+
+ lib/ruby/3.4.0/rubygems/ext/cmake_builder.rb
+
+ hash2
+
+ k5SLy2e6ubeciYQRGTnfnrOPqu48cnzLVpKr9bNjPD8=
+
+
+ lib/ruby/3.4.0/rubygems/ext/configure_builder.rb
+
+ hash2
+
+ SQrEfE7mztV4fuS1W0wpySk6Si0d6M2O2TuNZoesK78=
+
+
+ lib/ruby/3.4.0/rubygems/ext/ext_conf_builder.rb
+
+ hash2
+
+ i2gFCdatdMOOxST6GV2abFzBmAw/FjiyekAGlBzO+A0=
+
+
+ lib/ruby/3.4.0/rubygems/ext/rake_builder.rb
+
+ hash2
+
+ vr8UHxODs2Ufqt+32WCfxbewbBQwy2c9iTIS6I02w3E=
+
+
+ lib/ruby/3.4.0/rubygems/gem_runner.rb
+
+ hash2
+
+ HNJ0Luq8yLziSrVLiDac3dufUREFK6Y8ntB346SBqss=
+
+
+ lib/ruby/3.4.0/rubygems/gemcutter_utilities.rb
+
+ hash2
+
+ WVMGM7HwfaAGnWbLjshd5cOldsfIuodgLlp58gUlakU=
+
+
+ lib/ruby/3.4.0/rubygems/gemcutter_utilities/webauthn_listener.rb
+
+ hash2
+
+ 3fQj0I7j8t5sPTjgATU45pj6CbSHUHjoRWANJ1mndvI=
+
+
+ lib/ruby/3.4.0/rubygems/gemcutter_utilities/webauthn_listener/response.rb
+
+ hash2
+
+ F4mD1vfk2gsmyuCYJFivyDnNz+1QtlyIkeD8YmZ/Zt8=
+
+
+ lib/ruby/3.4.0/rubygems/gemcutter_utilities/webauthn_poller.rb
+
+ hash2
+
+ CReX6YfHurLin++97pxPsYIsCGx6KI6Hib7km933hQ4=
+
+
+ lib/ruby/3.4.0/rubygems/gemspec_helpers.rb
+
+ hash2
+
+ xoGPGNRlAXClZzwRX1RH9ud79UTdiX6enTBMqES7uGY=
+
+
+ lib/ruby/3.4.0/rubygems/install_default_message.rb
+
+ hash2
+
+ kWQ20GBc+Tmxtjo+vmjowQp0vc5vVHOKnywDVoIV4pg=
+
+
+ lib/ruby/3.4.0/rubygems/install_message.rb
+
+ hash2
+
+ RI096nVF8JZZDqkoqWDJ+y0pOP4gu3lEcICkHjPhPK0=
+
+
+ lib/ruby/3.4.0/rubygems/install_update_options.rb
+
+ hash2
+
+ 3NAPJYEcQFRIwVGs1tqeV4m4mzhjSF0TbyKJ8tgvj70=
+
+
+ lib/ruby/3.4.0/rubygems/installer.rb
+
+ hash2
+
+ JixRmnK4XOACVSPJEjLH0pbfyvx0gSYdKiwFZFmvj1o=
+
+
+ lib/ruby/3.4.0/rubygems/installer_uninstaller_utils.rb
+
+ hash2
+
+ wowcZ75PyoJV1VyrRnJD0CeCRXL5IkCZWl2FZIN4ANo=
+
+
+ lib/ruby/3.4.0/rubygems/local_remote_options.rb
+
+ hash2
+
+ lukCvtOXsyQbZ0EKjy/f8RTVu1BzLyOSTelL+uyroNM=
+
+
+ lib/ruby/3.4.0/rubygems/name_tuple.rb
+
+ hash2
+
+ eaWiGu4KYYIEEdLaIWA4a8tv+4PBtIYvRgqdpcva1YA=
+
+
+ lib/ruby/3.4.0/rubygems/openssl.rb
+
+ hash2
+
+ grnRspjutdlJgblQzUv2ig022ximL+bJsLgCML+ko5c=
+
+
+ lib/ruby/3.4.0/rubygems/package.rb
+
+ hash2
+
+ cSMQGEaGyaK7aSqG9UT9fi8PvpEeq9vjTjX+Oe6bRoY=
+
+
+ lib/ruby/3.4.0/rubygems/package/digest_io.rb
+
+ hash2
+
+ HE1N3xR/T93nGOIdsj3y8+WW58/x1oBZv1QGPORJjMM=
+
+
+ lib/ruby/3.4.0/rubygems/package/file_source.rb
+
+ hash2
+
+ iV+RmtFvtHzl0RQOGNkEehVMSyJ1P3U1j9jva2Ykkog=
+
+
+ lib/ruby/3.4.0/rubygems/package/io_source.rb
+
+ hash2
+
+ Ls1PudQMAEECQ13nLyV3S60jxbO+aS+RpsKBPhUGe/U=
+
+
+ lib/ruby/3.4.0/rubygems/package/old.rb
+
+ hash2
+
+ wfpex2BprpsCu2y0RuRYv298zOQhEND8VnG5NJbwPw4=
+
+
+ lib/ruby/3.4.0/rubygems/package/source.rb
+
+ hash2
+
+ LjCwvXx0ld+uiVwm7D58UaplojmDS1fRoTBknmmTslM=
+
+
+ lib/ruby/3.4.0/rubygems/package/tar_header.rb
+
+ hash2
+
+ KxavIcs1N21eiu108LuTAVpgouYZt3EiHJirMhSZwKw=
+
+
+ lib/ruby/3.4.0/rubygems/package/tar_reader.rb
+
+ hash2
+
+ ZO/tkMXLKuznr5G58MBPi2WVy7f4CjWZeZGtBVPKCt0=
+
+
+ lib/ruby/3.4.0/rubygems/package/tar_reader/entry.rb
+
+ hash2
+
+ zM+Oih+hjA5KT0GKlXrYVzCCY8WtvannI5vVfcoE2Gg=
+
+
+ lib/ruby/3.4.0/rubygems/package/tar_writer.rb
+
+ hash2
+
+ aga2rHvoo7+ZxpfC+MMTUnV60JiNLjSb8NWynwK1cLk=
+
+
+ lib/ruby/3.4.0/rubygems/package_task.rb
+
+ hash2
+
+ 8M5wrn8x9FRClsJ8WAUG8jt6q3TgsbNYqZhhoMbLVgg=
+
+
+ lib/ruby/3.4.0/rubygems/path_support.rb
+
+ hash2
+
+ 63Du4Lra376eiSGqAPEU+7+H0eUuZHf1akf88yTYuus=
+
+
+ lib/ruby/3.4.0/rubygems/platform.rb
+
+ hash2
+
+ dB0D6SBpBjlALFo5qEq9J+m1+ek9VWkXDTojqmJne7Q=
+
+
+ lib/ruby/3.4.0/rubygems/psych_tree.rb
+
+ hash2
+
+ ts4agUuB3EFrepcyDY6AVhqG5YR3ZoiVuipYNaalrW0=
+
+
+ lib/ruby/3.4.0/rubygems/query_utils.rb
+
+ hash2
+
+ 8Pb7jLbWcIDFEg9YBuYDqriwP7tn+d7w6jgHX6aIVm0=
+
+
+ lib/ruby/3.4.0/rubygems/rdoc.rb
+
+ hash2
+
+ uNjjv3jEKcUgPaVWbNxcQofQSX2dLWI18VomaJy0NuM=
+
+
+ lib/ruby/3.4.0/rubygems/remote_fetcher.rb
+
+ hash2
+
+ e9/74HBDUt4n9E8dS5l5mkaHJh1luDvyt0MHhjPUaNo=
+
+
+ lib/ruby/3.4.0/rubygems/request.rb
+
+ hash2
+
+ RzTn7T1r7j9PeyhXSKldt9ReXNSXOnagFPCbORRfW9E=
+
+
+ lib/ruby/3.4.0/rubygems/request/connection_pools.rb
+
+ hash2
+
+ aeYzSL4+bIm46oueCNQk6q41kPcmZOiy3hHwozBwvQU=
+
+
+ lib/ruby/3.4.0/rubygems/request/http_pool.rb
+
+ hash2
+
+ Ne02A4TwNHgBc8fTPHvKUxE+NknEz3MqaaSQJyB6TIk=
+
+
+ lib/ruby/3.4.0/rubygems/request/https_pool.rb
+
+ hash2
+
+ TZumXcqes5jQdTNPbl0TI6dH1coHxyAzRTQ2VuieN04=
+
+
+ lib/ruby/3.4.0/rubygems/request_set.rb
+
+ hash2
+
+ AVYelaIKr4hWr3cKBN/I9efcVNt/6kVParqB+JT7DNI=
+
+
+ lib/ruby/3.4.0/rubygems/request_set/gem_dependency_api.rb
+
+ hash2
+
+ LMDQYcRrPR4VZC+ZmpOIblxOfofeGYGMcTn6u1MMb8Y=
+
+
+ lib/ruby/3.4.0/rubygems/request_set/lockfile.rb
+
+ hash2
+
+ gAfgqwpf1Mb56UV9+ezfD3j9RRwlsMZaYYWk2dTXkfc=
+
+
+ lib/ruby/3.4.0/rubygems/request_set/lockfile/parser.rb
+
+ hash2
+
+ eNKe03JVNflVIiuuEmrLwrxWKaVjWy4PKPcUb5jYnpg=
+
+
+ lib/ruby/3.4.0/rubygems/request_set/lockfile/tokenizer.rb
+
+ hash2
+
+ vNP1Q+rgObeCVYHxXGjKxGaToi3bB55vWTOjeEBV1N0=
+
+
+ lib/ruby/3.4.0/rubygems/requirement.rb
+
+ hash2
+
+ drVsR8ozcs3MhYKdlilsu1kjUE/0ZPZVbenJ/MvNyRM=
+
+
+ lib/ruby/3.4.0/rubygems/resolver.rb
+
+ hash2
+
+ 7zIfc5YspW5wszrQHIJdtxzFuHwBYwsm+TyXGDRjzVc=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/activation_request.rb
+
+ hash2
+
+ GdItVZ04VzN515bkfeby0BrrrRh/sBz8eRH40xymzpI=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/api_set.rb
+
+ hash2
+
+ UA1bmquh+co6cega06shO6s44BFXNXhQeqB+J8oqZCQ=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/api_set/gem_parser.rb
+
+ hash2
+
+ 6RVesEe7s083R83mRuvb3XJ50L6EEYXVqqPZjsX5kW0=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/api_specification.rb
+
+ hash2
+
+ x2FpGh28sfw6fcMb32FC4FRGYn0UfU+y8cnvdkkuBd0=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/best_set.rb
+
+ hash2
+
+ nNANO/7mcP5umzMBjAjkyt2djJa570UvUegBXWQ1gOc=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/composed_set.rb
+
+ hash2
+
+ r2YiAnsvPUZOydX0L3o7crVNEm0WhgRd5EwuWceyMdQ=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/conflict.rb
+
+ hash2
+
+ d61qx/B+eERsIv7VU5rbVwYsAqtDm36S0csG+kOqCDk=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/current_set.rb
+
+ hash2
+
+ XDy7/3+QI/QY+/A9ghT5m1jc5GuG/MhJRNKPn4KZd8Y=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/dependency_request.rb
+
+ hash2
+
+ t1cq7Bv3bIYmk9CzybBBlruCmP7X7UU7bHh8Z0DExOI=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/git_set.rb
+
+ hash2
+
+ H6XPZALCq28tvyQiGGbNo4PisbthTjalSPKf+417w0o=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/git_specification.rb
+
+ hash2
+
+ lchz2ilWByeY1uvWwBzGh1rO2jZBcCRq89BNHRQzZVY=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/index_set.rb
+
+ hash2
+
+ 7QUmtxiadCZEsrhTa/u2fj+VhEACNAhU/5TCbcTTxXg=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/index_specification.rb
+
+ hash2
+
+ WB/aAkzgluGCxrz14olOXp2hLVQLDJEZir3SmaZByto=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/installed_specification.rb
+
+ hash2
+
+ prZjoevTd3CLSQfJTB8cazhL0rjIhi9n78/MfH1RRYQ=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/installer_set.rb
+
+ hash2
+
+ 9pht7iIv3TlYXn82A0pxLZyC+V1UJG8Hby27olZk8J0=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/local_specification.rb
+
+ hash2
+
+ p2XXCn8+l68wv2vcOQks4kvRQr4596ADn1Ygd4YGJYc=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/lock_set.rb
+
+ hash2
+
+ lRAyHwiRh/zsrd04HyBSVa/g/s749TijXBu9Qf8qyKQ=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/lock_specification.rb
+
+ hash2
+
+ 6HBzd42Wv2ed6E5a0XlBKpFw5iIFvVzRkoJ3/judMF4=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/requirement_list.rb
+
+ hash2
+
+ NiwuVrOnAG6EoKDJwrcA5KIyRIlLPdrv1jyMjFB4quU=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/set.rb
+
+ hash2
+
+ Xy5HilepQAnQFk1Df29s9VnydAGWs/Gt7ZJO1ovak0I=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/source_set.rb
+
+ hash2
+
+ D6o3f8OqfT+FsbBHtcUOdlcPJmDpKOPj9Cv9ZsWvqkk=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/spec_specification.rb
+
+ hash2
+
+ XSF0gX5/nzl7vtj9Ed1P9zVw0/Id2uiJ83i/s4frsPM=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/specification.rb
+
+ hash2
+
+ v9HO30oYlkxkFrDUvOlTJkTBBhdGRXh0d+pxMHy4zyA=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/stats.rb
+
+ hash2
+
+ 6g9JingHV3rUecNLS+hGW24wJPvUB8kbNxJyyuvLGjc=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/vendor_set.rb
+
+ hash2
+
+ Fnro50G4RH1jVooVV5nIrwSJ/s3UvYP8X4R6Wbd3GnY=
+
+
+ lib/ruby/3.4.0/rubygems/resolver/vendor_specification.rb
+
+ hash2
+
+ unbf9b/FkED6GwUwswTrRsn/Fexk5IMeYjX0Y+Iznqo=
+
+
+ lib/ruby/3.4.0/rubygems/s3_uri_signer.rb
+
+ hash2
+
+ /ZyxYhn0kQjdfZWnyiqiefckh4yFFcIHYyTiZQmlF9Y=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal.rb
+
+ hash2
+
+ Mhise0pDQwNy97MRmhsfcK3CAL6/1+UHIhf6V7AuPj4=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal/elements.rb
+
+ hash2
+
+ JIQ0ID4YDbzQTkdeL/pCzSPySauB78zo/xIpXLjM+Pk=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal/reader.rb
+
+ hash2
+
+ eJeM9zMIGS3ng9yL/XFpYXOhjVWlgvKEGkfVKwB9Wag=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal/visitors/stream_printer.rb
+
+ hash2
+
+ heE0jR3E1rwmEe77ykedj9HCpgQretl2QRaXK9XoXYk=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal/visitors/to_ruby.rb
+
+ hash2
+
+ yClx3SrkOdHoxa92zopGt1acvsWBDtXPwnZa4WXHP7E=
+
+
+ lib/ruby/3.4.0/rubygems/safe_marshal/visitors/visitor.rb
+
+ hash2
+
+ rdTdaXiXhxnLbiAfnznEzTyMzTOnNFfrrAoDK9yNIjQ=
+
+
+ lib/ruby/3.4.0/rubygems/safe_yaml.rb
+
+ hash2
+
+ kZXlSaKKXe9TlWiqmTVG7mNKVFKBY2ATalTwse0e/GU=
+
+
+ lib/ruby/3.4.0/rubygems/security.rb
+
+ hash2
+
+ FRo57+TKfzbN5rEtPPiq/bNn/QGsZ1OKuI8g57rmlcY=
+
+
+ lib/ruby/3.4.0/rubygems/security/policies.rb
+
+ hash2
+
+ GHoZRHMNNoaJvYNtR1EnZdYNBnZoKECdkeZ3qpBnFWE=
+
+
+ lib/ruby/3.4.0/rubygems/security/policy.rb
+
+ hash2
+
+ wXuQLCsuBNzMbeNoroLx8o/CHnSrFMSkU7OzKvq7c7o=
+
+
+ lib/ruby/3.4.0/rubygems/security/signer.rb
+
+ hash2
+
+ hJ2HlF4bopxNjv9OWKFCcZNwyudCUyTG4/q4OJ16H04=
+
+
+ lib/ruby/3.4.0/rubygems/security/trust_dir.rb
+
+ hash2
+
+ N7Z0t2roKJIAMKyAvRpkvWypRZvgxVFyeDGPDhObUP8=
+
+
+ lib/ruby/3.4.0/rubygems/security_option.rb
+
+ hash2
+
+ 3PqTsfT59GdNeDVSeLLbRKPSISdlT5eQBkgWUdQwYtA=
+
+
+ lib/ruby/3.4.0/rubygems/source.rb
+
+ hash2
+
+ 0exoonVxg3FuiKTvZ/dgvsCH52aFLQo830qjLywF7CQ=
+
+
+ lib/ruby/3.4.0/rubygems/source/git.rb
+
+ hash2
+
+ Q3fuoox0/hkhh9q2IX8mryQ4q70sblUOWPZI2+BC6T4=
+
+
+ lib/ruby/3.4.0/rubygems/source/installed.rb
+
+ hash2
+
+ DCI77n3/X4kJX7t1MHhOZX3EHOojbJCK4csc66VO9w8=
+
+
+ lib/ruby/3.4.0/rubygems/source/local.rb
+
+ hash2
+
+ 30/C7WmlVUz3lvawoghuyZcyyzNVTglM7vYCM6d5o5A=
+
+
+ lib/ruby/3.4.0/rubygems/source/lock.rb
+
+ hash2
+
+ EMka0eHg/aJKN0JIJd44eGVVyiJ/Tjz6hrY3QeVF7rU=
+
+
+ lib/ruby/3.4.0/rubygems/source/specific_file.rb
+
+ hash2
+
+ oUzVB0XfE7wYX5PJxfQnlLbpbrsD2UvGbmuHfzzet8M=
+
+
+ lib/ruby/3.4.0/rubygems/source/vendor.rb
+
+ hash2
+
+ O06/aKzuZvpM/OgamN/YDCjI8omkqaJ3/JxJAzpSqzE=
+
+
+ lib/ruby/3.4.0/rubygems/source_list.rb
+
+ hash2
+
+ EBTBRDh4eUqsTj60oTcBg3xiXIahQ6PaKVeCIpVetRI=
+
+
+ lib/ruby/3.4.0/rubygems/spec_fetcher.rb
+
+ hash2
+
+ O97wW8Muz3srz9FvHvLx5IimbgbwAs2Z3mW8jEK02Rg=
+
+
+ lib/ruby/3.4.0/rubygems/specification.rb
+
+ hash2
+
+ vPiZRNY/CCxUR0rxAcZBlgWsXCU0OE3rzhHqsObq5DQ=
+
+
+ lib/ruby/3.4.0/rubygems/specification_policy.rb
+
+ hash2
+
+ AFoS1so8WexRArBdMbndeBU+um9eI8rdkyj0lQzs8QY=
+
+
+ lib/ruby/3.4.0/rubygems/specification_record.rb
+
+ hash2
+
+ maC5dAGFqeHR0KVKs0TXdHGQPYFiARTlnwdwViL5ge4=
+
+
+ lib/ruby/3.4.0/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem
+
+ hash2
+
+ 32iEGZi3/QmKlRf+lx6XiQvg/JO74bKh72Pr3qMRHIA=
+
+
+ lib/ruby/3.4.0/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
+
+ hash2
+
+ a9xZ+JdjGveBHjIBy8WOWZneJgCuhmdFSjRRTuz9g4E=
+
+
+ lib/ruby/3.4.0/rubygems/stub_specification.rb
+
+ hash2
+
+ tVbD3DrlitJvgD1QdAarj+n5k0umc4aim7O+hUL3zug=
+
+
+ lib/ruby/3.4.0/rubygems/target_rbconfig.rb
+
+ hash2
+
+ PdgKiixIrzzX5Mq+VFG5cCo2IeQiGCqD/2zEapS3q8c=
+
+
+ lib/ruby/3.4.0/rubygems/text.rb
+
+ hash2
+
+ PgAAdFDsVxx++o90b6YV0M3SuQs8G7FdtWG8Mrjz1Nk=
+
+
+ lib/ruby/3.4.0/rubygems/uninstaller.rb
+
+ hash2
+
+ jB24gZv/mhpdVhMbn0OUgrxuTht/yXX8GIGXiBbLU6A=
+
+
+ lib/ruby/3.4.0/rubygems/unknown_command_spell_checker.rb
+
+ hash2
+
+ 4v/rHT1X5h91g0nt5WLRc8AnPQe3IXpcLvWsxr4c0jA=
+
+
+ lib/ruby/3.4.0/rubygems/update_suggestion.rb
+
+ hash2
+
+ dubd/WnIOPCaoYAXJonJ484napxi7gM0slT1VpIpyPs=
+
+
+ lib/ruby/3.4.0/rubygems/uri.rb
+
+ hash2
+
+ LgdOXl6bt6gFu0/7PAXYAWWYTuM4HhiQzpoFCvIlzO4=
+
+
+ lib/ruby/3.4.0/rubygems/uri_formatter.rb
+
+ hash2
+
+ 3k1Gp0ffsoAPscs/UocNmhEooPlwVN8fNjRL+j4FLho=
+
+
+ lib/ruby/3.4.0/rubygems/user_interaction.rb
+
+ hash2
+
+ J19pfKAIYgKgJWfJ1eQcqzejvULQ5wChO0QuyhQe4yM=
+
+
+ lib/ruby/3.4.0/rubygems/util.rb
+
+ hash2
+
+ BedOUnbsR131LoSBaGRUoKiqt+0pKt7HzRLarL48z2Q=
+
+
+ lib/ruby/3.4.0/rubygems/util/licenses.rb
+
+ hash2
+
+ hTr5oQdI7xL+Pcw6bzx00P3F8yjeD4ZfBmSrkpSpmdI=
+
+
+ lib/ruby/3.4.0/rubygems/util/list.rb
+
+ hash2
+
+ mbtIssjAzD5EJot9wil9+ts1gPr3gHjOGFHz5tfHE6c=
+
+
+ lib/ruby/3.4.0/rubygems/validator.rb
+
+ hash2
+
+ YAkSJLTEjaM7b8151ksY9quEtZGZezsB6NEQJ1fO5rw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo.rb
+
+ hash2
+
+ XiwaeSCmJyFAONXsmi0ByNbciIJiakis0LbOnwloXvM=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
+
+ hash2
+
+ xA1IZ41qrPBKKZQVJkcs6OAMqa96BNZAHXunNThhBKw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
+
+ hash2
+
+ Dtmyd5WHithZsjEoQP6lgxIcz2h5JETAihw3Nkxnus8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph.rb
+
+ hash2
+
+ Hs9zDjSLzZkExxeAeUgzhqETIQ/lRrbUqJeuLiwZQUQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/action.rb
+
+ hash2
+
+ R/+OqA+gv2PcCoTVidU6dvjWyVVq2hFdCFdmi7JOrdA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
+
+ hash2
+
+ XmLwr3xR+TN6PVRQDs+eU1AEoJM92FclkdvxyO151yQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
+
+ hash2
+
+ qX335JipTD7mXbGK1ER0eMc2neWdF6xfLTIhTK9sJ0k=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
+
+ hash2
+
+ Ru+u3mt7XloOMf2fsT1dLeDmRXoCXiVp9mLa+/ARF+k=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
+
+ hash2
+
+ CTXQaHFB56B9X1VLZ6/CGcINMz40wG7bt09rE3ToNXQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb
+
+ hash2
+
+ /kX9GrnC7U7qhd7/BauOjMFrEsxoHgEkQ7qq2hv+gD8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb
+
+ hash2
+
+ 2oagW5wgonfww3QR+YL39hya1m5uG3fJC549jzwf6v8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb
+
+ hash2
+
+ m5OMT3YW9u5LDD6OdIR3L+Ontufh+A7mxJnfCoy7DQA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
+
+ hash2
+
+ DvfJkUw2NEeK92sA7rqgrOdqNhXNE5zc1la+nBpfhg0=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/errors.rb
+
+ hash2
+
+ Q9XAuyJKId+vrflshczYEaMw2LEE6qygESx52HzWsyA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb
+
+ hash2
+
+ EUTbxAs2gBlrUDXgCFsxII8Oo5gx/BnjsoC3Q0ZPIMk=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/modules/specification_provider.rb
+
+ hash2
+
+ ATvUBcUtrnfRBFqGot83X+MyxMchz1J2fzc67HWIwKA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/modules/ui.rb
+
+ hash2
+
+ fqN7K0y/2VQfjly1lh7LBlcZ+gCI/5IjGclSrmtl9Dg=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/resolution.rb
+
+ hash2
+
+ p+MGYtjjJXU4ljMqz/iGsOIEBP3jUeWNjz+p/UmbFuM=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/resolver.rb
+
+ hash2
+
+ PBeki+1wsxBoLXj+CheMPXVcS80ZCe1XhWA1w4mvQlA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/molinillo/lib/molinillo/state.rb
+
+ hash2
+
+ XBvaEtsTUOA4L8+J/8E7esZ8epnx1AjRQL6lCW8oGQ8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http.rb
+
+ hash2
+
+ QSsdRcUW1gvs7YMtB9hca9+CsdY86NrdQ6e0XvidG8I=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/exceptions.rb
+
+ hash2
+
+ 0qQ/zrYaNTgc2+r2KWpYKjbHygt28t2thnknAC5rquI=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/generic_request.rb
+
+ hash2
+
+ HkqgzLTrS9soazOqY5VXUT9YqSYK4pcEj3non3wnUkU=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/header.rb
+
+ hash2
+
+ wpNL04vTiiBHKaB3rYiLNnxgxjY9DiY9E6lwvr+3YgA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/proxy_delta.rb
+
+ hash2
+
+ BY5hZp3LTq+xwvZXBHBrDiIYrquYyAflAo4G1cGaCiU=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/request.rb
+
+ hash2
+
+ KQM2pNJslyAoIpWECV9KHeZWuoWjHibycI4Xn3IZHG8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/requests.rb
+
+ hash2
+
+ FSMHtw1NQhL1AQ9vdFrjEN3wjKrM1Xc0BSEK2uwa2AY=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/response.rb
+
+ hash2
+
+ kRJj7zqgDTyZEohyEFSoU4jOzfZNXVVAU2qT8QNU0Rk=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/responses.rb
+
+ hash2
+
+ NjDOyJ5GKMy0zrp3U6LwaIPUBAgn3POXmf+9yK5gSSo=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/http/status.rb
+
+ hash2
+
+ rPEzSQwXVsrLATRO8na9Hz5G8QKO1AcsqvmKoxGNyYY=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-http/lib/net/https.rb
+
+ hash2
+
+ JvNu6uWFDBxo68Pxy8X5wFy4XU6ZZ7CfpWB/Hg0lFQE=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/net-protocol/lib/net/protocol.rb
+
+ hash2
+
+ OeYdb0hEaZiRdLJBxcd2Q5tm4TKwUr3wqMHEdte0ygs=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optionparser.rb
+
+ hash2
+
+ BeaI/9QJ4cbNOhLaDUlFjP8Yzk9puxYsMt6FyVnALcA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse.rb
+
+ hash2
+
+ YXznh/NTV6s/PDHW8ZRUCeQObgglf5VTYdVj5rphDYQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/ac.rb
+
+ hash2
+
+ Z3U0szydeu91DdATP3aD3jyTsuQudc2aW/Mq44fT6Vw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/date.rb
+
+ hash2
+
+ +zcdaG9jHhmOviOxQUcXsXrLfA7qcd7YaGXsXSYQrb8=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/kwargs.rb
+
+ hash2
+
+ k5c8VejWO1Ir+j4j4orEvbXQoJ3yzQKZCKyhIGEldt0=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/shellwords.rb
+
+ hash2
+
+ P/Fawj/Nm/lcAvqRin+f3BV12kbDsn4fbdHqbf71XyA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/time.rb
+
+ hash2
+
+ jK3nSfIQiY9vKXfBlrAYyMuwUMn3KDi4Mhx1Ir+1XBE=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/uri.rb
+
+ hash2
+
+ N7xg9/DdSiYDsEMC14J5wvYuhyNcqs9xr09hT9z/bEg=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/optparse/lib/optparse/version.rb
+
+ hash2
+
+ WOZqKHKCvR8EE6KzRGtn7RTxS8Ad+ZgKD/mrH/+nBM4=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/resolv/lib/resolv.rb
+
+ hash2
+
+ ANQMg5ZGDL1ezZ8xAOTWWUOQQWFG0tpBATJECh5s+yw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/securerandom/lib/securerandom.rb
+
+ hash2
+
+ v2UkmstuamtLD4tb8XH+sv+if68eOWWVT9MYDC8o9B0=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/timeout/lib/timeout.rb
+
+ hash2
+
+ DEMAwaQR2CzuMI2GAYjz4iKJuHzXX+ldDD+Wo5/KJNs=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/tsort/lib/tsort.rb
+
+ hash2
+
+ jbD8a3EUMGKip3SwUUz+Y/mP/1rS/hJVTFXIhYNnN7I=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri.rb
+
+ hash2
+
+ 6pnYakzmRNWn+KoMTDasM5G5twANCZyIFP0+lqkmqWs=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/common.rb
+
+ hash2
+
+ P9SQP+RxCC/KWyQiotW/y+zc9AZSaZces8yZe9VlwgQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/file.rb
+
+ hash2
+
+ 2iZZHeUd3nGFo4AOqCQhB/ctufUPC1BwrRMJeH2tncA=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/ftp.rb
+
+ hash2
+
+ j/7w88b5onYsF7KFwvrIkYviZME1Ch+66pnwIRFrYp0=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/generic.rb
+
+ hash2
+
+ qiz5eiSoxzWM/4b4IiM2CSJmNbvjaTZ+QCSGqzbUacE=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/http.rb
+
+ hash2
+
+ Mkwx5rV5hv9+NqcU5wvrTAmrbNPzNrRjjQ27fDuOuLw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/https.rb
+
+ hash2
+
+ b2ti8fhuyX6xujjYA2246MfweLTSghFpazAmSrvakmw=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/ldap.rb
+
+ hash2
+
+ b7y3N9PrILMjtn9dcOZA7F1FhYNNFeNRA55ZCBTlPqI=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/ldaps.rb
+
+ hash2
+
+ 1MonDKMsSMdQM6DlXKtPn2i6wanEFNEvJMx35SBkkmI=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/mailto.rb
+
+ hash2
+
+ 69mtEs4w7/SPzC8zmp7GKbxC8xJ/tTh8d2Dgk775+pQ=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb
+
+ hash2
+
+ Xo5HmbSY8MjG45UYfPiHs/0czJfAaEaMFtPET/ofC9o=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb
+
+ hash2
+
+ sc+pj7hXSDiaALUsfBe3POfzFAxDsHgL27KuxLmzkNk=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/version.rb
+
+ hash2
+
+ TyzhUqv92ourdrAdBLPhQDyrHgh8FJEnpFrrizaLWvo=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/ws.rb
+
+ hash2
+
+ iW46IWo83HX1EF0tc7popkPHNxLxMfyarExau489TR0=
+
+
+ lib/ruby/3.4.0/rubygems/vendor/uri/lib/uri/wss.rb
+
+ hash2
+
+ ALVdr/fBSyORulMvP+6CTyaTw00bEpcMQtNkA9SmTeU=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_molinillo.rb
+
+ hash2
+
+ TSMJ+Dx9Hy0h+eSnkYR+W4Fzt4p5X6AbZdYtLasMzHY=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_net_http.rb
+
+ hash2
+
+ ic/6/k0s4XzMCwMb33gkIXmBp03LNZ3b9zaquo6VUfk=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_optparse.rb
+
+ hash2
+
+ TAhCrdKNkzzTIDkLd3GRTxWqMkMAMFYrWsueFbuZcnk=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_securerandom.rb
+
+ hash2
+
+ T54VJm3YdIwq6od8FDTzPnIc3BBVyWQC9fcZU7vs+Ts=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_timeout.rb
+
+ hash2
+
+ Y/bwpLNtjMwIkWt3MWBMFFWbtOQ55LR1T/Qw3zLopC0=
+
+
+ lib/ruby/3.4.0/rubygems/vendored_tsort.rb
+
+ hash2
+
+ 0nAJV8AUgkEX0u1ES8zZu13vXGfHuVXpjVhCRqoXawg=
+
+
+ lib/ruby/3.4.0/rubygems/version.rb
+
+ hash2
+
+ cSvKas1DyabMImr8ZaRM/Djj65c3pLNX9zTF4e0g9Rk=
+
+
+ lib/ruby/3.4.0/rubygems/version_option.rb
+
+ hash2
+
+ nsbPnXXGdoJ2jYnJIncXorowbwhDuxbV6Vj3O1XfHQ4=
+
+
+ lib/ruby/3.4.0/rubygems/yaml_serializer.rb
+
+ hash2
+
+ m89UqtAF2rAokjcxAzGx2FIx+MWh8LmzNslFPqnDrMM=
+
+
+ lib/ruby/3.4.0/securerandom.rb
+
+ hash2
+
+ Kpn4eOPPLZK4ja0VEsnIYnLKhnmvmoodV5D3w3qdQKQ=
+
+
+ lib/ruby/3.4.0/set.rb
+
+ hash2
+
+ kx9V/JX3WqSCb33lMALxU5KdMbMg+0aO47h7rz2HR4g=
+
+
+ lib/ruby/3.4.0/set/sorted_set.rb
+
+ hash2
+
+ FIDDJA16+ul/ISMPPW7kdo3WAy+gq4pT6ZSpNy+ehew=
+
+
+ lib/ruby/3.4.0/shellwords.rb
+
+ hash2
+
+ kJjhaxMs/s2dtiZ22gawpKcc/p+i94q0E3v6dwdOlJI=
+
+
+ lib/ruby/3.4.0/singleton.rb
+
+ hash2
+
+ Fd4CC937pV5nO1r+tYVbgNFgObjMUX7viBlYtOJtCLE=
+
+
+ lib/ruby/3.4.0/socket.rb
+
+ hash2
+
+ qL15njAl082l0o1KvQWrZEIdEMDmEZM6zWO//oe2zhE=
+
+
+ lib/ruby/3.4.0/strscan/strscan.rb
+
+ hash2
+
+ rrQVMAb+5938NcL8npLa5lk7K24sAmbGNx8iA5+o2oU=
+
+
+ lib/ruby/3.4.0/syntax_suggest.rb
+
+ hash2
+
+ NJ9bBYM0/1Ubvby9arnG7rqFoAptiZyFtj1u9gAm3vo=
+
+
+ lib/ruby/3.4.0/syntax_suggest/api.rb
+
+ hash2
+
+ vK9pOn3HDG+1a7FDo9s9VVGgoqLC9qs5/OwSTxIldrU=
+
+
+ lib/ruby/3.4.0/syntax_suggest/around_block_scan.rb
+
+ hash2
+
+ QrZosfe2NJY/yOogIu0qsb5aUOUJKjcLWJK7KtH0ACM=
+
+
+ lib/ruby/3.4.0/syntax_suggest/block_expand.rb
+
+ hash2
+
+ T37OUk9pFfc2tvq2g9gMt9Kw0B07U09GsDd3YSQ1IRY=
+
+
+ lib/ruby/3.4.0/syntax_suggest/capture/before_after_keyword_ends.rb
+
+ hash2
+
+ GrIZokde6z9mSanBFtUjUkbbrZPQbYuzMfBfgUcf+pE=
+
+
+ lib/ruby/3.4.0/syntax_suggest/capture/falling_indent_lines.rb
+
+ hash2
+
+ 5zVjMsLSlTu1QO+WNXgqre6KSy7ePzWkltnduI9M1So=
+
+
+ lib/ruby/3.4.0/syntax_suggest/capture_code_context.rb
+
+ hash2
+
+ jXhKx3bg8887IUodS7fPVlU++TesJHB3PR5sNdtYHiU=
+
+
+ lib/ruby/3.4.0/syntax_suggest/clean_document.rb
+
+ hash2
+
+ nMnlEh2PpBLKNDKWvPzG1faTsQIxRt8g4oYjealbtaE=
+
+
+ lib/ruby/3.4.0/syntax_suggest/cli.rb
+
+ hash2
+
+ OKljKxt0CCr9ZPb8ExVRo3QIukR32h5wyPBU+YpcK8U=
+
+
+ lib/ruby/3.4.0/syntax_suggest/code_block.rb
+
+ hash2
+
+ tHWEdV9is+qunKWKzqFvucYAiHOnKb9O5yo2EMrPxi4=
+
+
+ lib/ruby/3.4.0/syntax_suggest/code_frontier.rb
+
+ hash2
+
+ l6NzQoZ2sSnRhMGI/C4VXomNBHr2mJAEyimZLl59oWo=
+
+
+ lib/ruby/3.4.0/syntax_suggest/code_line.rb
+
+ hash2
+
+ n1KQY9xOD9mBN4Z/IGGOQLiBq4XARGhHdb9dgWJV/xY=
+
+
+ lib/ruby/3.4.0/syntax_suggest/code_search.rb
+
+ hash2
+
+ ZBZAEs+H4+fgnldWVp8WtMtMCTa2L14AZd4DOHjnJys=
+
+
+ lib/ruby/3.4.0/syntax_suggest/core_ext.rb
+
+ hash2
+
+ h8PoEaJ2zXbGIXE7ZvuAFZrq02z2StipLuriBF5OqGA=
+
+
+ lib/ruby/3.4.0/syntax_suggest/display_code_with_line_numbers.rb
+
+ hash2
+
+ 9qMYhiIQDNzRquTSsSTc5TufqzSBiEu5049TIhvjhi0=
+
+
+ lib/ruby/3.4.0/syntax_suggest/display_invalid_blocks.rb
+
+ hash2
+
+ 2J8413a1j30tZI47DO8J4H64w3rAFLHjXDKx8/sYRT0=
+
+
+ lib/ruby/3.4.0/syntax_suggest/explain_syntax.rb
+
+ hash2
+
+ uiUffR+ajl/7dYhrbajyxRlVhEK3BHtukR4eupF/3ZI=
+
+
+ lib/ruby/3.4.0/syntax_suggest/left_right_lex_count.rb
+
+ hash2
+
+ fXkVtuu1JYofGiheyL5oc8iiV/eGMVl7sohqoUkuN5U=
+
+
+ lib/ruby/3.4.0/syntax_suggest/lex_all.rb
+
+ hash2
+
+ FkxN35/FuDIFevbN5/bCAezgnr4eYfikSOfNokl1kBI=
+
+
+ lib/ruby/3.4.0/syntax_suggest/lex_value.rb
+
+ hash2
+
+ 3cZ2dGUKPBQZPPbRtGlLc+xBlbGjBgzInIJq0g9d66s=
+
+
+ lib/ruby/3.4.0/syntax_suggest/mini_stringio.rb
+
+ hash2
+
+ u6JqnH5xfvCk8y7sQRO/rkgIEgb0okv1NstqH4Tg+rc=
+
+
+ lib/ruby/3.4.0/syntax_suggest/parse_blocks_from_indent_line.rb
+
+ hash2
+
+ MY0tSNXvETPAT+gHtzOUw6SUSHgyBqBwfiDczj2+bQs=
+
+
+ lib/ruby/3.4.0/syntax_suggest/pathname_from_message.rb
+
+ hash2
+
+ RE9YuL1UrZSctfaYmdI24cOyqEv4zpqZ1B+NJ+jo7tA=
+
+
+ lib/ruby/3.4.0/syntax_suggest/priority_engulf_queue.rb
+
+ hash2
+
+ cSqb/kwl9fJgrjPyWTf/ZyPPJCCN/bJO9aMeBWc4RsQ=
+
+
+ lib/ruby/3.4.0/syntax_suggest/priority_queue.rb
+
+ hash2
+
+ bQpyf7tC81DAF9z7+eKa5J6MvuqdlyxouBT+qOBAmiw=
+
+
+ lib/ruby/3.4.0/syntax_suggest/ripper_errors.rb
+
+ hash2
+
+ tjYw7mg1L0o824+EAWBnuQarHKhJ2+t+bqJRrblsy2M=
+
+
+ lib/ruby/3.4.0/syntax_suggest/scan_history.rb
+
+ hash2
+
+ +q7bFZsfd3GL9TpTPAuqlsYQ/bWr5/iwsDHM4p1matw=
+
+
+ lib/ruby/3.4.0/syntax_suggest/unvisited_lines.rb
+
+ hash2
+
+ sRk/Oof5j2Qut/xLi7d+SNF3Zt3qnJOw9lJulNSl07g=
+
+
+ lib/ruby/3.4.0/syntax_suggest/version.rb
+
+ hash2
+
+ m6WwU2Zog7KvXJqI/nH5PAvjHS3YuRkGRaM2S127Ukc=
+
+
+ lib/ruby/3.4.0/tempfile.rb
+
+ hash2
+
+ kkBUEHK2g+iW4DGo+2SgRGtoKXMlSTDq1moNUShMWX8=
+
+
+ lib/ruby/3.4.0/time.rb
+
+ hash2
+
+ lOTCW3bEsV+obpICNl6yu5/97tlWp2xIZsHB8V0z0+U=
+
+
+ lib/ruby/3.4.0/timeout.rb
+
+ hash2
+
+ rY/eia+vhcUGmNjoDWJ1QwxMmOSCeyOsAwLesFykJJo=
+
+
+ lib/ruby/3.4.0/tmpdir.rb
+
+ hash2
+
+ irwNzduzhIMPlB8PDbP/OFdqkXMilNijp10TayL+/jk=
+
+
+ lib/ruby/3.4.0/tsort.rb
+
+ hash2
+
+ a8tVFjyjHR6PoJ0+c7zKXwlpCYU0SfmBhO8tApBF5BQ=
+
+
+ lib/ruby/3.4.0/un.rb
+
+ hash2
+
+ B++l3VDpKRcD4kio1hxmNOKNCii42eGjwv5O2drbVWk=
+
+
+ lib/ruby/3.4.0/unicode_normalize/normalize.rb
+
+ hash2
+
+ 2SPx3U66fYfzKQZar9xxDv9et0TG3jF6C1AMA1YZADQ=
+
+
+ lib/ruby/3.4.0/unicode_normalize/tables.rb
+
+ hash2
+
+ ScGidsRP1DwRl/PqAsk+1j/j14WiNfhoCDOUX+3VqF0=
+
+
+ lib/ruby/3.4.0/uri.rb
+
+ hash2
+
+ KMYp9id2e2dEJHJq5slcGCXWckX4KpVrIAZfo9iYoT0=
+
+
+ lib/ruby/3.4.0/uri/common.rb
+
+ hash2
+
+ HW/v/FY2jHcI6gDSU0hc4s7ZqAF+eVKeoze6kqnuP08=
+
+
+ lib/ruby/3.4.0/uri/file.rb
+
+ hash2
+
+ pXSd+Jy25cvbA+fbxDJk7IkRneWuC0k0UlFI0tM48Mo=
+
+
+ lib/ruby/3.4.0/uri/ftp.rb
+
+ hash2
+
+ Ms5CSd9sgKIZafWwSNHScIKNf42PJswmO9Gnx/UH1+A=
+
+
+ lib/ruby/3.4.0/uri/generic.rb
+
+ hash2
+
+ oZ1jPeEPm9wglZEK5aan7uhePmp23yjKiy7isxtkykk=
+
+
+ lib/ruby/3.4.0/uri/http.rb
+
+ hash2
+
+ 5NwX2CBWGhKrVZwWk5vt3Kr+Pr/i4WrRjaIj+oOBPoE=
+
+
+ lib/ruby/3.4.0/uri/https.rb
+
+ hash2
+
+ 8MytKbB/t9q2qOajQ/sbEjtYSawSLpuD2LV6toMWhKs=
+
+
+ lib/ruby/3.4.0/uri/ldap.rb
+
+ hash2
+
+ Y4nqMO5QfL/78VvxgbqdY2favropbDWfswMxIPiaWsQ=
+
+
+ lib/ruby/3.4.0/uri/ldaps.rb
+
+ hash2
+
+ DF/SxtELXcjr0MORIGbTm22Ca1CsMwkg9X91xjy8190=
+
+
+ lib/ruby/3.4.0/uri/mailto.rb
+
+ hash2
+
+ MbUVwiyt2GVsetw7WS4PPJ5pF8IFJnuXOMA+9WSpmmk=
+
+
+ lib/ruby/3.4.0/uri/rfc2396_parser.rb
+
+ hash2
+
+ UruJr66+7+i/FgCgEZbp1AT6UlcSCIsBC4rveE501ZI=
+
+
+ lib/ruby/3.4.0/uri/rfc3986_parser.rb
+
+ hash2
+
+ ztx9sWqTkWkwWr0IuVWLe4NQgf2tMcQ3Kut0+92S80o=
+
+
+ lib/ruby/3.4.0/uri/version.rb
+
+ hash2
+
+ PB6KSsQ/bggP2k7XBL3SW9Qb36wFZpnKNMqrUl7T/sQ=
+
+
+ lib/ruby/3.4.0/uri/ws.rb
+
+ hash2
+
+ +HtbBknL/jT4dLijsQG2x5tuNQ2VxfEiqlRBTXlfhH8=
+
+
+ lib/ruby/3.4.0/uri/wss.rb
+
+ hash2
+
+ +vCoNBkRFeZZcmoGgfgVVeP/7xPQJd1jQ0+Bp2Tu44Y=
+
+
+ lib/ruby/3.4.0/weakref.rb
+
+ hash2
+
+ TOvfXGX4zqm9WeOPLG2EXIDcX9HjOfHRXy9X2l6ecUU=
+
+
+ lib/ruby/3.4.0/yaml.rb
+
+ hash2
+
+ XY/p8ElfcsVC2xKsFgZGPInt3HACQ4qMeixWKo0B9zw=
+
+
+ lib/ruby/3.4.0/yaml/dbm.rb
+
+ hash2
+
+ 10RKW2mO+qF4p3J8dE1MoGyOQF86N5u5Tq9s/7Xt9CY=
+
+
+ lib/ruby/3.4.0/yaml/store.rb
+
+ hash2
+
+ IjR4/bppu7HBcddpIPYKrLpN0jgUDykZs6JdCaKQ3Cs=
+
+
+ lib/ruby/gems/3.4.0/cache/abbrev-0.1.2.gem
+
+ hash2
+
+ rRtOqq7Uy3ItVoTWOUnkveHTTyqV4g25Ouz+fLrHQkI=
+
+
+ lib/ruby/gems/3.4.0/cache/base64-0.2.0.gem
+
+ hash2
+
+ DyXpshoCoMwM6o75KyBBA105NQlG6HicVistGj2gFQc=
+
+
+ lib/ruby/gems/3.4.0/cache/bigdecimal-3.1.8.gem
+
+ hash2
+
+ qJRn7VpE+K4Bgkr0nLxXWHH6B4My6Pd+pCVyXB/+J74=
+
+
+ lib/ruby/gems/3.4.0/cache/csv-3.3.2.gem
+
+ hash2
+
+ b/DBNeZeSF0YZN3mwXA7YNNMyeGb7YRSg0oLKKUZvU4=
+
+
+ lib/ruby/gems/3.4.0/cache/drb-2.2.1.gem
+
+ hash2
+
+ 6dRyv3hfVYuWslNYuuEVZG2g2/1FEHrYWLC8DZNcs0A=
+
+
+ lib/ruby/gems/3.4.0/cache/getoptlong-0.2.1.gem
+
+ hash2
+
+ /SPwc5e5lL+TENRTHP20MyYpqbjoycRXwyt+31vyG6U=
+
+
+ lib/ruby/gems/3.4.0/cache/matrix-0.4.2.gem
+
+ hash2
+
+ cQg8y9Z6FKQ7+njT5NwPS1A7nMGOW0sdaG3A+e98TMA=
+
+
+ lib/ruby/gems/3.4.0/cache/minitest-5.25.4.gem
+
+ hash2
+
+ nPLK4lrE38kMmI68O5F/U8BUl4tnMnPaG9ILywd4+Uc=
+
+
+ lib/ruby/gems/3.4.0/cache/mutex_m-0.3.0.gem
+
+ hash2
+
+ z8sErBa2nEgTd3Ai/c7aJOn3mOSAkqK4F+tMCngrB1E=
+
+
+ lib/ruby/gems/3.4.0/cache/net-ftp-0.3.8.gem
+
+ hash2
+
+ KNY+QHp+25c5wyCk+q7FFeQ+ljgVJI0GQYq6MiR4h08=
+
+
+ lib/ruby/gems/3.4.0/cache/net-imap-0.5.8.gem
+
+ hash2
+
+ Uqpf38Goo98feTsgoyfpW1qd/h1zPh8NUwddLbz89ZM=
+
+
+ lib/ruby/gems/3.4.0/cache/net-pop-0.1.2.gem
+
+ hash2
+
+ hItOmCATwVsvA4J5Imh2O3SMzpHJ6R42sPJ+0mQg3/M=
+
+
+ lib/ruby/gems/3.4.0/cache/net-smtp-0.5.1.gem
+
+ hash2
+
+ 7Zagr2PFJPzrSymw01IZXDDYLdkWpC8Dxio6cOW3BzY=
+
+
+ lib/ruby/gems/3.4.0/cache/nkf-0.2.0.gem
+
+ hash2
+
+ +8FRvaAlRR9if6/fyz9PE9CyKuEfWMbTopOcdsX18SY=
+
+
+ lib/ruby/gems/3.4.0/cache/observer-0.1.2.gem
+
+ hash2
+
+ 2KMQcTG6ZhE410jnvj26/A2C5zL/+6n8yz14KYgJUKw=
+
+
+ lib/ruby/gems/3.4.0/cache/power_assert-2.0.5.gem
+
+ hash2
+
+ Y7URuFu46lczbSUVaGRJhkT1u/AoaZztonlJ4BJbwyM=
+
+
+ lib/ruby/gems/3.4.0/cache/prime-0.1.3.gem
+
+ hash2
+
+ uvAxxQ1s6SNZSRO+/IrIajJRv/udal6LA2h5YgVOU+M=
+
+
+ lib/ruby/gems/3.4.0/cache/racc-1.8.1.gem
+
+ hash2
+
+ Sn9pKWkdvsi1IJoLNzvCYUiCtV/F0uRHohqqaRMD1i8=
+
+
+ lib/ruby/gems/3.4.0/cache/rake-13.2.1.gem
+
+ hash2
+
+ Rss42uZdfXS2AgpKydSK/tjrgUnAQOzPBSO+yRkHBZ0=
+
+
+ lib/ruby/gems/3.4.0/cache/rbs-3.8.0.gem
+
+ hash2
+
+ RmtJg2vt3zJ3EJn7tKzayxdOfYiwR9urskgOgdVcz7Q=
+
+
+ lib/ruby/gems/3.4.0/cache/repl_type_completor-0.1.9.gem
+
+ hash2
+
+ NghNEUvipCtrzuVY90JoImJo4BKzO7h/ppQiIwcWk2k=
+
+
+ lib/ruby/gems/3.4.0/cache/resolv-replace-0.1.1.gem
+
+ hash2
+
+ RzUZsFoBiUUgNPlQ8OCvf6dFsmV6s9uFQClTrGvraI8=
+
+
+ lib/ruby/gems/3.4.0/cache/rexml-3.4.4.gem
+
+ hash2
+
+ GeCiw0Jd+/LU/BGJdHvbL4SbbF50GAQBsVc0vJe10UI=
+
+
+ lib/ruby/gems/3.4.0/cache/rinda-0.2.0.gem
+
+ hash2
+
+ u0Vmr3PJt46AvEEgIUCGDjMVDuKg6s323+WD4aoLA/o=
+
+
+ lib/ruby/gems/3.4.0/cache/rss-0.3.1.gem
+
+ hash2
+
+ tGI0wEVRuSUYD4vt/G9gRb8tmZhBf+2nLzAOeYAiZzc=
+
+
+ lib/ruby/gems/3.4.0/cache/syslog-0.2.0.gem
+
+ hash2
+
+ zh5OBVHVoFjKW203psVWRaV76yezH03WI+gSkCSf66k=
+
+
+ lib/ruby/gems/3.4.0/cache/test-unit-3.6.7.gem
+
+ hash2
+
+ w0K7n3M06oSjYbQ8ILBj9AXAvzx9vj/zj2GpFmHSkiE=
+
+
+ lib/ruby/gems/3.4.0/cache/typeprof-0.30.1.gem
+
+ hash2
+
+ Mv9y2rAwUNjny3p9rgNamTn4vxKCfLGUq329p2EDDnU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/bigdecimal-3.1.8/bigdecimal.bundle
+
+ hash2
+
+ bpMR2LP6kxcBGRpxa4+ZoSiNRclnjT7CMRRo/Nm0qjw=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/bigdecimal-3.1.8/gem.build_complete
+
+ hash2
+
+ 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/nkf-0.2.0/gem.build_complete
+
+ hash2
+
+ 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/nkf-0.2.0/nkf.bundle
+
+ hash2
+
+ 43QNxnXOE0inLH2HjVotzmSaJZDkXiyTa8ZxQ+Cf0qA=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/racc-1.8.1/gem.build_complete
+
+ hash2
+
+ 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/racc-1.8.1/racc/cparse.bundle
+
+ hash2
+
+ Nptn1jTFrtui1UgsRJIsqTeCAGL4s+6QLAqVevfirBo=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/rbs-3.8.0/gem.build_complete
+
+ hash2
+
+ 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/rbs-3.8.0/rbs_extension.bundle
+
+ hash2
+
+ +KFMw+/pyPXrfO3AtY/1a7DABq3JfauuKUTqXfGzHyA=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/syslog-0.2.0/gem.build_complete
+
+ hash2
+
+ 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
+
+
+ lib/ruby/gems/3.4.0/extensions/arm64-darwin/3.4.0/syslog-0.2.0/syslog_ext.bundle
+
+ hash2
+
+ ot6oQZnNzBa+vD/LvnbnJGXV8JM9wL+DKhl/qKduV+4=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/Gemfile
+
+ hash2
+
+ wrVeIssS7wP3Hs6W4QXr3tigv7g9eRe7GP36M4aW8ow=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/README.md
+
+ hash2
+
+ K7jP4j9+vznmls85PaE+8GbKGANGPdpxRtdrPbWP/ds=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/Rakefile
+
+ hash2
+
+ pHOZ6Ek/J+QySuqX+iuabZnc0ESSKRDqjiGj13TOSf0=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/bin/console
+
+ hash2
+
+ KfC+uxVFoxPAbtGnyHcsBzOxdQ/W+Gwda6f1k0ixcdg=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/abbrev-0.1.2/lib/abbrev.rb
+
+ hash2
+
+ wOnZkMFAsslnk3CuSBJvfcKOzA+gumdVURCFkjjgvCY=
+
+
+ lib/ruby/gems/3.4.0/gems/base64-0.2.0/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/base64-0.2.0/README.md
+
+ hash2
+
+ /M5Az0uJebpr6PKCl7G3IVrsm6LOYIpp39qGyTQPOYo=
+
+
+ lib/ruby/gems/3.4.0/gems/base64-0.2.0/lib/base64.rb
+
+ hash2
+
+ T57C9eGcdQoCnng7NlxUmwi6edCLMakORC/LHU1qiGE=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/LICENSE
+
+ hash2
+
+ VXK/A8PIxHcOgVMDj19U+q2cPbmQCGSnyCoZ3kQ010s=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/bigdecimal.c
+
+ hash2
+
+ SRdmPBn3L73IBreS8jlr3pr4MAH7bHOlblPQoXrPZsY=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/bigdecimal.h
+
+ hash2
+
+ ZBccCRexMcp0rADxwLtBlgNoQ+t2WYNKxwqM4ZNp5uE=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/bits.h
+
+ hash2
+
+ MOGoS/KmgKTkfGqZYlVdrgVuYFl5mcZPp+8oE65lQSU=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/extconf.rb
+
+ hash2
+
+ XKkE8BWqzouFPO3avdWB6ggydMWruzmTgYLBfnmg9iA=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/feature.h
+
+ hash2
+
+ Gj9FZbQwNPtB9vT8CZkDYZ9aQvq/gF352hOebZjh8LA=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/missing.c
+
+ hash2
+
+ njtJEp1BPjcxf+T5gYn8cpYKHsf5agtWaGOi4csgWjA=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/missing.h
+
+ hash2
+
+ DsZnH6J3RQmxTTbw8sE8g+hECwgznVavetqzlTWR3qw=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/missing/dtoa.c
+
+ hash2
+
+ iCgwlQu0Rr0kCdCqX9DCprAAZX3nPMnyHf5/VsH46AA=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/ext/bigdecimal/static_assert.h
+
+ hash2
+
+ p7X/NSCRiMNZUKIJaaR0NhS21U1WEtRwhZtFeLdW/Lw=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal.rb
+
+ hash2
+
+ CXIhb/B8JIh8JHN5tYq3IOqQNzg0bzUVCqCzrys6B1Y=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal/jacobian.rb
+
+ hash2
+
+ caRIJqq0waEu8w/jpj28DIDFNAt9PuTb3Day8oO5xt0=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal/ludcmp.rb
+
+ hash2
+
+ 2LWPF7bAzrKxH33l9WoDkzX9HhZdMxgtmvxbqH7SzYU=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal/math.rb
+
+ hash2
+
+ 8GiJVDeBDQg4p4fLEqtJ14PGqOzaEKgix4INorapytg=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal/newton.rb
+
+ hash2
+
+ JYiRC4Nb4jZokI0eCzXLIzof7z7Ef3Q8m0E1HfUI5dk=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/lib/bigdecimal/util.rb
+
+ hash2
+
+ dyf9vK0q9ZkNfaHkCsJJkyJrL2de54m3eExLybC0DL0=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/sample/linear.rb
+
+ hash2
+
+ C8xJGX5W1Xi7K8lFaRrpl2eSVFsjfSdi1xO6yqwmLec=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/sample/nlsolve.rb
+
+ hash2
+
+ lIkC+yZFFyVta8rjkcMkt7417SL4xBerseh6iNYb0Zc=
+
+
+ lib/ruby/gems/3.4.0/gems/bigdecimal-3.1.8/sample/pi.rb
+
+ hash2
+
+ QmayQhRf1AioNL6C0MmG+bYfl5Q/vrE8r3GS6eLcAxg=
+
+
+ lib/ruby/gems/3.4.0/gems/bundler-2.6.9/exe/bundle
+
+ hash2
+
+ xXKMLns/ARkxgOyiGx6VFO5SidluNiyb06GkMOGgOXU=
+
+
+ lib/ruby/gems/3.4.0/gems/bundler-2.6.9/exe/bundler
+
+ hash2
+
+ wOiSUCRXqBrMribhMX9XXCNtUxLm8HS7Qo+k+k3ZHcI=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/LICENSE.txt
+
+ hash2
+
+ xcS9PjVkP33WHX4FMkMKyFRiH7HtbkhxGIhLIVhoU5g=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/NEWS.md
+
+ hash2
+
+ DmplmA2Zoex9ipfeMgIA/nKusdJj20RjParAc0VnkQ8=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/README.md
+
+ hash2
+
+ 6bc0QNb252vFNyF3S0owDLpV46T/UgvTwSqgTxmSmcE=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/arguments/io.rdoc
+
+ hash2
+
+ 7f/CXPTkQUGNUkp2eIDOw2LbjFS4VS5njsKAFgpVC4U=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/common/col_sep.rdoc
+
+ hash2
+
+ EY3kCl89grxL4s/co/FQGZL7DItFKOXUw7IjtPsu94Y=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/common/quote_char.rdoc
+
+ hash2
+
+ 6tTOqcBgyzFlQAC5lmSOe/t9SuHjp+eb5JYGjVqXIBM=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/common/row_sep.rdoc
+
+ hash2
+
+ H1OhWkEAbwsTi8r/lUOCYeX5ZYcfGHWTapv7yerIBOU=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/force_quotes.rdoc
+
+ hash2
+
+ OlNoEDqXvQNMUPzbIz0+mhtQUDig/wbLiyztnI0aetY=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/quote_empty.rdoc
+
+ hash2
+
+ TpGBy5Pdl/e9tmI3MVgLyDURDWAkyxZfzFE4Ezc7qQ0=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/write_converters.rdoc
+
+ hash2
+
+ Bv6/JS2xASvAB1Z5x9R1g6iD8b0huBUdfH2XVKM6jow=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/write_empty_value.rdoc
+
+ hash2
+
+ g7mGUfo1CIjQslFgM9NK8ew4ocAcCrhXDyAufT748LI=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/write_headers.rdoc
+
+ hash2
+
+ /nD3QU6abJi369hjW/YlHrIKpSl8G3kFNRJfBw/srtI=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/generating/write_nil_value.rdoc
+
+ hash2
+
+ tkHbeBSooPCmlTnPRf4c2e4g3YrS4LKt03RNvtWNH1U=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/converters.rdoc
+
+ hash2
+
+ 35hCA/n6P0wnhpyModJsc31DHZX1v1fd0EcnlrUIfkE=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/empty_value.rdoc
+
+ hash2
+
+ Byt9gbbaqF7Xi/ub75GZjhySsK3rV6LEv7x/fwFtTqA=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/field_size_limit.rdoc
+
+ hash2
+
+ 4o6AgMhWBguhqqZ6VSkxrt36ce9eNFj0AhCOhJRc4Zc=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/header_converters.rdoc
+
+ hash2
+
+ DC7CU600MysVIe8C4j8uZk5jHR/f0RqhxDRhWiK5ZhA=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/headers.rdoc
+
+ hash2
+
+ zWbd8BcbmLxKSVFpkPBCTtGh/i6Vzyv7IeLjLwMKdoA=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/liberal_parsing.rdoc
+
+ hash2
+
+ zKYLGLT/biCEfVU2SRXaxINWUN/tc1fqeKVmLRlan50=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/nil_value.rdoc
+
+ hash2
+
+ kiZX9GyOSXU7irYQ7IzzCDoRbpv3J+pCKsq5Ddb9GvA=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/return_headers.rdoc
+
+ hash2
+
+ tiBPDGw2ysUz0ESES+rOYdqQLeLHS7zU1X97oh+TbMU=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/skip_blanks.rdoc
+
+ hash2
+
+ jdm3sQh9M04ZY9KD+W69qVLCctdcLX2J6KSGMjdEUas=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/skip_lines.rdoc
+
+ hash2
+
+ iBWmsWTGo//gRl4ECclBh5cioXrbW5MhV1AOO02DBvo=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/strip.rdoc
+
+ hash2
+
+ Fxh0RMEQIqBWMWH4UTG8PW8sU6Dowqd5fLwSGjANgFM=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/options/parsing/unconverted_fields.rdoc
+
+ hash2
+
+ n/+kLYfomrhAUIzRqMamp0U7ZpLD6oX26lZB9feVQCs=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/recipes/filtering.rdoc
+
+ hash2
+
+ gz63sSYWq59zXKVDq/57gAS15kZm/jQIyKsZUxoRPbw=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/recipes/generating.rdoc
+
+ hash2
+
+ KPO3b7JtAydgyvIj73YfTa6vLNJB3uvDPXV44pCEqSc=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/recipes/parsing.rdoc
+
+ hash2
+
+ Dz5yNYSP7ePlj06B3KSbtLWHwuwjVn2wdV22b4Rq/Xg=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/doc/csv/recipes/recipes.rdoc
+
+ hash2
+
+ sn52CYKHNiKap0r0uV3S3EvDe/L96eg/pwETMLiuhqk=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv.rb
+
+ hash2
+
+ t9+2KGBOcegI+99/2yXF124HhozEmo196VCg2866pOQ=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/core_ext/array.rb
+
+ hash2
+
+ ci0bSFoFWBPFrGUripP5bXxJWhyS/HI8433S1G9i8ag=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/core_ext/string.rb
+
+ hash2
+
+ uupJatLCoPyZj9zup5SKQAxeiS8sMrkDvfFZqmKOuzk=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/fields_converter.rb
+
+ hash2
+
+ Ht4Jqs++wAgDvho0oD2aeZ7Lx2qUoojJnAxYMVARULg=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/input_record_separator.rb
+
+ hash2
+
+ zHnpQtE2LrZ1AYK5aSbReyovAi3SsuS/YxiJibM5olQ=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/parser.rb
+
+ hash2
+
+ bseiIfR46oqTd/zGPR3rIqUlqZjHczxXS3xBrwbWjyM=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/row.rb
+
+ hash2
+
+ G+6njzlB/TkoQz18HX1d6kG8/ceMfZGzd5hbMGYOzEo=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/table.rb
+
+ hash2
+
+ DVNsTV2+prXj2aUje1GVlLbRg13KZAJxi1d7wpkXOOg=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/version.rb
+
+ hash2
+
+ GxHCj2wk3QJjx/IXOhS6hvHY+UlvFGro3pt67VeuZFo=
+
+
+ lib/ruby/gems/3.4.0/gems/csv-3.3.2/lib/csv/writer.rb
+
+ hash2
+
+ AKzKjVJmLRZvdAIWJKqI6lvbbI83utzjmb68b4T1UKI=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb.rb
+
+ hash2
+
+ y7i6ZCL+cCeeVKtgNwENl1EqvXhvfnq0ltjK28o96UU=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/acl.rb
+
+ hash2
+
+ uTtFet2Zzes1jjir850PrYNrBSXXEKQjrfLtWmCT1lY=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/drb.rb
+
+ hash2
+
+ iRJgJRFe2XEXludJMRgI4xt8zqbZzW/S2EROimMVmnU=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/eq.rb
+
+ hash2
+
+ sKyDKcaM5aYn0Lm0/257fGSFIbAa9BCDmMhzFDRb5xg=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/extserv.rb
+
+ hash2
+
+ obWcHz/Gy0CSYZVR+VH2d4QnsdMmbb01iPl0KimXVMU=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/extservm.rb
+
+ hash2
+
+ yBjs3GAvU9XfoiakEZ50pGYPOQF5IjDfqVRPL/ttRpA=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/gw.rb
+
+ hash2
+
+ gdk4ZNKQl1EZEBj491GRlAITw+KygggP7XFcQqw6Zos=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/invokemethod.rb
+
+ hash2
+
+ Z4f09xF/xhmMjObPf/Zywj6Zw1wc8emSmxdQdZ/Fto0=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/observer.rb
+
+ hash2
+
+ zzmiNR/9znBzxb9aOewcmg7vT4Y1V/jS4bNuGBf5xa4=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/ssl.rb
+
+ hash2
+
+ JXeaJZn8Ii2vhKQZ9OXrDWdi1pPLZrmKm1wmrFsGdq8=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/timeridconv.rb
+
+ hash2
+
+ GXjk1B5ZLaG2Ljw1VLpFqDWX7hUxCXNVQL9VoR/H2j4=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/unix.rb
+
+ hash2
+
+ /WLZUYVXvH/te9k9an1DP7vhSfPgCCVSNtatSnLlUgE=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/version.rb
+
+ hash2
+
+ y+eiSXmBxjOr/tDFIz+NhndiPFriCQ9c2YUMU6c27Hs=
+
+
+ lib/ruby/gems/3.4.0/gems/drb-2.2.1/lib/drb/weakidconv.rb
+
+ hash2
+
+ GiYX/LZ1o3hKhCu80Cq0RHIciyz8UevHySKfByR28O8=
+
+
+ lib/ruby/gems/3.4.0/gems/erb-4.0.4/libexec/erb
+
+ hash2
+
+ 2MEnt4fovX/g+MbMSIQGHZf1kd4RwQAw3NKvwRzmoFI=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/Gemfile
+
+ hash2
+
+ wrVeIssS7wP3Hs6W4QXr3tigv7g9eRe7GP36M4aW8ow=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/README.md
+
+ hash2
+
+ +Sqa+zB+I+OSQDpJhrhFE0kboKA4ElCqQ3p6c5AQs0c=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/Rakefile
+
+ hash2
+
+ 3K10NwE6d9Rv3hKu/MWCoBbnFf2hgzI/ufCmHsbJT3o=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/bin/console
+
+ hash2
+
+ ptozKgt2szBkW54qQV4FgUs/atvnkSxryky5qGeMx9E=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/bin/setup
+
+ hash2
+
+ /XfrxH4lDPhuG3wrffc5LKiq5+RotQpPFqVUnPS8YCs=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/lib/getoptlong.rb
+
+ hash2
+
+ a8bOA2NRsGoh3VLqR1F3e0LZrqL8PPyEEoaLhjH5eGQ=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/abbrev.rb
+
+ hash2
+
+ pDK0JJF/RBOyK7IS8LSo8W1m1mhyhXLUNhoEZ6R7qPM=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/aliases.rb
+
+ hash2
+
+ 2+VKebakbgk9JGypMVSzn22k/Yi/2N2yaRbL8TwsHY8=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/argv.rb
+
+ hash2
+
+ lTuy8jPBtLhfr7639akQyjq1o2cBLtvFF0OEivfd/6I=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/each.rb
+
+ hash2
+
+ DOHi5CdM/EFDaKwx8QcJQtpIOD/kuQsi4wjbROelIOs=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/fibonacci.rb
+
+ hash2
+
+ B2xUdNjMcEqUVynIG1ooQU75EpfkjBY5R95c/D75Iv8=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/permute.rb
+
+ hash2
+
+ lTuy8jPBtLhfr7639akQyjq1o2cBLtvFF0OEivfd/6I=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/require_order.rb
+
+ hash2
+
+ 696Jz02aLlbml1qPF8zAlYYPVWOLtGrWZLttZgJA+Yo=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/return_in_order.rb
+
+ hash2
+
+ W1dJdu+0oaX63uhXZlcrFZo5+UFOTqN2wuKibbAVn40=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/simple.rb
+
+ hash2
+
+ izGvDegStQ5PpXdpzqkdgK06S17t8OwwW3Ki9oANLYU=
+
+
+ lib/ruby/gems/3.4.0/gems/getoptlong-0.2.1/sample/getoptlong/types.rb
+
+ hash2
+
+ SwXLDbHPD64YfUvFNO7TRFf94t5nPyPaC1jTcmMgpRY=
+
+
+ lib/ruby/gems/3.4.0/gems/irb-1.14.3/exe/irb
+
+ hash2
+
+ +m9qmLLUCjLQbrcauWzz/UrmfLypWCReCMwKUVIh8Rs=
+
+
+ lib/ruby/gems/3.4.0/gems/matrix-0.4.2/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/matrix-0.4.2/lib/matrix.rb
+
+ hash2
+
+ 7VhFWl1vp28NVYCZCIaqRtnrhicMI60grXhppPVJRvI=
+
+
+ lib/ruby/gems/3.4.0/gems/matrix-0.4.2/lib/matrix/eigenvalue_decomposition.rb
+
+ hash2
+
+ z2vaxX8zhtEh6AlpUz6/QmmOL8PjeDPXFszxExaPnaI=
+
+
+ lib/ruby/gems/3.4.0/gems/matrix-0.4.2/lib/matrix/lup_decomposition.rb
+
+ hash2
+
+ Z29991caE8hDTFvqVevOUw7C9UcUTF6xCGy2JRWh84Y=
+
+
+ lib/ruby/gems/3.4.0/gems/matrix-0.4.2/lib/matrix/version.rb
+
+ hash2
+
+ oYzCSO5yusot6XrOlyC0qZF0Jc3214NjldFQwve+zck=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/History.rdoc
+
+ hash2
+
+ rSm8K3JbbEQYEcvvSFumQhQ3RH61dBDFt7+H9wU7IJs=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/Manifest.txt
+
+ hash2
+
+ 3LJBgj0wgzQnVnLuagkzHm61O2JRQbEYpKuADymcmg0=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/README.rdoc
+
+ hash2
+
+ +SazKB5vYwPRQCaaOscPSmXSk7gTIv5CfQDzruI+t0g=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/Rakefile
+
+ hash2
+
+ xOVeZHk8yQ8fVSUGh7I6O3z2pLQJUTgEh2l9pDOZGEE=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/design_rationale.rb
+
+ hash2
+
+ uDlEiUl2SlyrDl2DCVwwoj6c/aqYvbAnrVAlRRVcpDY=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/hoe/minitest.rb
+
+ hash2
+
+ ZqmLpy18fVfF6pSMnXzkQlZ+bGiyL9NL3RjkgU0Qme8=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest.rb
+
+ hash2
+
+ yp6/1dmV0bvLflmq6rPHg+vqB0v2uPafV+M7RVtIGRc=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/assertions.rb
+
+ hash2
+
+ upkWjy5aU+MIZP/Z537JeZlu6A+nvKMUqjQzcr5UVZ4=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/autorun.rb
+
+ hash2
+
+ 6kZVCapzM8TvSKnU3vao69rO6dl6hUvIt0kSUQFK+bU=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/benchmark.rb
+
+ hash2
+
+ NPo1RAYaDMSRSYsCLYhi0kmASVGAzjCJkN9L8+P+6XU=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/compress.rb
+
+ hash2
+
+ zyYZxPrksXiHzk5HPqvi//T2BJZhdN+WphM3RcpXUpg=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/error_on_warning.rb
+
+ hash2
+
+ 31vImwJ21tkqNWyJ1Bf8kTHTT+8j0/acf1lXWDc60q4=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/expectations.rb
+
+ hash2
+
+ Q9qpbQR13qB2H0TYIHVbv9e/3SUeYIjpvkjlnTCOeqY=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/hell.rb
+
+ hash2
+
+ RwJ63TvDghZTw110+Bhf2FVTJHLuOu7UAcUP7IIlakA=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/manual_plugins.rb
+
+ hash2
+
+ MxLyOD9iFkPJvZZrNY4XztC27+42p/zt3ymFCY0CUlk=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/mock.rb
+
+ hash2
+
+ SzOAV6OTPFre+8bkVmoQTWuBYzPT0NsYf0bOQNS59nA=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/parallel.rb
+
+ hash2
+
+ pfRx1UIzvmUaDAajGCvsRfpYDpkY/zNqfMp2JhEPDmA=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/pride.rb
+
+ hash2
+
+ sFID53LE+cKzBalSlP7k75+5gVbll3E9rzZ79qQsrgU=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/pride_plugin.rb
+
+ hash2
+
+ uexX2/3j7931U4jFl1D3sCDfPVc9BWgjNkIpsRB/hrA=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/spec.rb
+
+ hash2
+
+ jIsKKnTdYN2VORUJ0T75C9yKypiNzeOSHItGGp6BS8g=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/test.rb
+
+ hash2
+
+ LPZYzOBWbicrR2Z30SWZ6bKkTDoiRuO+LAZL8AsdZJQ=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/test_task.rb
+
+ hash2
+
+ CGMZk29IjINkie4ZExP2qQgwGyWMuenM4e/hanGTW9A=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/lib/minitest/unit.rb
+
+ hash2
+
+ mw5Dp6kZYcYLV98mpX0H04mWgetCO3DnGXI5swMxloY=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/metametameta.rb
+
+ hash2
+
+ WhL3vyg3VVBLLEmtwHuc0bWBCcCoPfD9nY0OTuWR4+w=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_assertions.rb
+
+ hash2
+
+ dLuwT1FS5hPmBoDrYkTHEuodhA79PfM+fQ3VJp/PKfs=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_benchmark.rb
+
+ hash2
+
+ ldzU5c+sjrspoacpy1JXWCRfYgZxvOGxBLlHhq2emU4=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_mock.rb
+
+ hash2
+
+ pRAt8ZkjjIpc1DZ8ZpIkXMlGTdy7Q2KoQ8CepFxCj/I=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_reporter.rb
+
+ hash2
+
+ bTRFB2Q8nH4BSN3X3S1qljIwfODKBvlUuOgjB5CWBEE=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_spec.rb
+
+ hash2
+
+ 0ldzXt4+75UERtBNULDLBOqxxo69VxJdvjh2klhuLts=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_test.rb
+
+ hash2
+
+ /I0tsyac9UlE9H7uVY0yFg35FQqGmp8rH4npTcLnixk=
+
+
+ lib/ruby/gems/3.4.0/gems/minitest-5.25.4/test/minitest/test_minitest_test_task.rb
+
+ hash2
+
+ tZMFBOeF6vVo8YhX/fN1ptSx6ugUM/Xi20m5PnA792k=
+
+
+ lib/ruby/gems/3.4.0/gems/mutex_m-0.3.0/BSDL
+
+ hash2
+
+ Nqmm5zRyFLu6WZpBJhcgTmW/8GXcvlxG9ctFTIDenrA=
+
+
+ lib/ruby/gems/3.4.0/gems/mutex_m-0.3.0/COPYING
+
+ hash2
+
+ lnWG1TiiiVXsJUGRDPY8WsNF/N6pS/sfFwWh9us2vLs=
+
+
+ lib/ruby/gems/3.4.0/gems/mutex_m-0.3.0/README.md
+
+ hash2
+
+ j/EVop01/UnjfydC6VJDon7s6Im4tf8JyW3H4M/2eL4=
+
+
+ lib/ruby/gems/3.4.0/gems/mutex_m-0.3.0/lib/mutex_m.rb
+
+ hash2
+
+ qMB8VuNttjQP8+lzM+n5A7SPdOZ5LHRw/MOjGondvE8=
+
+
+ lib/ruby/gems/3.4.0/gems/mutex_m-0.3.0/sig/mutex_m.rbs
+
+ hash2
+
+ wiTXQrNZCVelEYUAvQjcsJaTNBPIhqY0EgVJG9kpBbU=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/BSDL
+
+ hash2
+
+ Nqmm5zRyFLu6WZpBJhcgTmW/8GXcvlxG9ctFTIDenrA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/COPYING
+
+ hash2
+
+ lnWG1TiiiVXsJUGRDPY8WsNF/N6pS/sfFwWh9us2vLs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/Gemfile
+
+ hash2
+
+ ssV615aVXxA6+l3Fc+PMD88H5yqxauXaUTcRd4xXyLE=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/LICENSE.txt
+
+ hash2
+
+ 2iZ56JrKiknyJQEF1nz5LZylo/xOOiUD5ld//KyTMqs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/README.md
+
+ hash2
+
+ +XhUXvBnx/52g9offQe/YIew85GewtpACxl1hruJBr8=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/Rakefile
+
+ hash2
+
+ 2eXIOhefFeEJp8QxwJtXkzR5WmGZHgmpJnGxPLatd6M=
+
+
+ lib/ruby/gems/3.4.0/gems/net-ftp-0.3.8/lib/net/ftp.rb
+
+ hash2
+
+ FZnzYG+Q01cpCElaJKGjAZgv2sjHsCcX5Glx7mBeFbU=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/BSDL
+
+ hash2
+
+ Nqmm5zRyFLu6WZpBJhcgTmW/8GXcvlxG9ctFTIDenrA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/COPYING
+
+ hash2
+
+ lnWG1TiiiVXsJUGRDPY8WsNF/N6pS/sfFwWh9us2vLs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/Gemfile
+
+ hash2
+
+ 6rf+trIet5j3z1YGn/Rll2VxGExT5egX/ceioEIpQYA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/LICENSE.txt
+
+ hash2
+
+ pWvmOcz4vpEoyG7KL0JRRxCJjsbS5mH02TdhO3zNkcc=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/README.md
+
+ hash2
+
+ JMmTk9VsRsf1s+rXtA/3MVpbUOSog8JgBGvG+PZyJww=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/Rakefile
+
+ hash2
+
+ 6wo4/R8A+ooF8upeld25MlaG8Ae4+ZigknsukkGK3bA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/docs/styles.css
+
+ hash2
+
+ nJWCib8VXJ1QKJRH+BKSZDODLpMI9IkbP2t2yXM/U1M=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap.rb
+
+ hash2
+
+ Q4kZFz1dRBh8fllcMvQYRdvB3Z8q+CVJXFoKOCE8OT8=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/authenticators.rb
+
+ hash2
+
+ 9PaaShKiNW2W0jLtDdCv1rby9H+ncfiLOR1d0XL5OM0=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/command_data.rb
+
+ hash2
+
+ KgRhHo/dz/UiQ5G49EFZo3M4wIR/P/pNwK23rrYyQuE=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/config.rb
+
+ hash2
+
+ yt+qKEiq6wXLnEgPaO/LUIQhNlM4uhVSSMIN6Kdkv7s=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/config/attr_accessors.rb
+
+ hash2
+
+ Nx5eNuivpEWaB0lYlMC/scGSbLSE51Na/SG3ok5K6Ac=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/config/attr_inheritance.rb
+
+ hash2
+
+ mDyrTwHIK3HogCT35CidNIDq4VIcUYgIWZBV2kAW7Sg=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/config/attr_type_coercion.rb
+
+ hash2
+
+ e9SaS9uIIElxO1g99O6NWPUXE51zfvtZCVVctQ5sEbs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/connection_state.rb
+
+ hash2
+
+ Kfk85aKIU+nRP7fTFgxLX4jzKB9wuD9MllmbWIlIGhM=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/data_encoding.rb
+
+ hash2
+
+ 8pWVLKi/iXnghfR/X1vd/+QsFU2LkrWjCNn0AfT86Kk=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/data_lite.rb
+
+ hash2
+
+ y7A/W2S/hWyWs9jYSc3O4mLLrMcg5FwkcFjk8dVPuE4=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/deprecated_client_options.rb
+
+ hash2
+
+ VA189gXC/q6DtWf1m7AL9nHzZltjy6M6DLunth9PWdQ=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/errors.rb
+
+ hash2
+
+ sCqHhDKfeDUc+0MfK+/gA7khPDMCKRCmXOZQSkwEwn0=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/esearch_result.rb
+
+ hash2
+
+ m3r5Ch88hQLZkcf4G0yptmiv4MijjVCqwntiaoab7v4=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/fetch_data.rb
+
+ hash2
+
+ mOUJPXqgQxv6BCRH4+kOQq1X6GW+NdBYDG8uiJtafc4=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/flags.rb
+
+ hash2
+
+ R4AV4GrH/nwQhV83pLEQvthl3M1tRZIsGdkRsIdZT08=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/response_data.rb
+
+ hash2
+
+ U7ZnnGmZkofjRPONJVYJ8Nn+qKI8b8ooxazisTlNDfs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/response_parser.rb
+
+ hash2
+
+ xf/QnuVUfx0MmT4xQdAdwKpbb4LTUgbRqySQJSm0pRE=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/response_parser/parser_utils.rb
+
+ hash2
+
+ HKY11cA9lw4txdyqYme44I3i+JbcGEaUMBdSKXHpZpY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/response_reader.rb
+
+ hash2
+
+ 6sApf6w19JjxITKeWBLzPSK5X53GiI2pCLC78/8/i0M=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl.rb
+
+ hash2
+
+ q1jBp4nxoACBN5j1bwBGsJIyPpUYb4mx/DoI84lcaDE=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/anonymous_authenticator.rb
+
+ hash2
+
+ i6D1J3/PdM0M11FxalBkxfkg2A0X8txK5X0aI4+jykk=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/authentication_exchange.rb
+
+ hash2
+
+ bZChaV8A1mb9Klh0u2Dk702wsn/K/1nDn3OrPAtwIkY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/authenticators.rb
+
+ hash2
+
+ Ou+mu0GseWGYNOm0DjLux7kS90Z8BaKiOiL+PtFDOw4=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/client_adapter.rb
+
+ hash2
+
+ LCKLQtFvxTl4pCITiFsfyOfKOCBNazax6Su9Q6kmSWA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/cram_md5_authenticator.rb
+
+ hash2
+
+ uXQIOegBbKTr3CsjhK34dF57D6wQnpDxrgaC4pDFh6s=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/digest_md5_authenticator.rb
+
+ hash2
+
+ FHVLG4ORDicSSd2j7log9fIMshJYTb40Iz/IXKAi3cM=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/external_authenticator.rb
+
+ hash2
+
+ 7uuOTvBtjPsymB3namwQJr/1E7hSXwkhEB1L+jy86gY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/gs2_header.rb
+
+ hash2
+
+ EWfAfckZaTwfAj4v6O0AkZMD7ZqYFxdyAGBQSDCNYWo=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/login_authenticator.rb
+
+ hash2
+
+ Ad7ss2ncjYakHJpn2UvoeXNVST+StlUqkw1rHq9E2mA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/oauthbearer_authenticator.rb
+
+ hash2
+
+ YJKvIOHBgp+lJrEh0FGPcapCxFvvDHntk1y6plqNuSw=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/plain_authenticator.rb
+
+ hash2
+
+ ZAYoNY5oq3xZbpBO++jzbv01gYt6TxnZOmZeV2J6GvY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/protocol_adapters.rb
+
+ hash2
+
+ MCPcugYnhzUwp7GNTwcNXe1cIoKP8vgQSSYTCQntT6U=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/scram_algorithm.rb
+
+ hash2
+
+ VL0n1LpLYdiChasSTj6usFhtQuXa9LgDqHCNr7sNuNo=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/scram_authenticator.rb
+
+ hash2
+
+ kOtjsz1TV+F74Yv489jRZZs49zZCCm+/iYaYmRRiqss=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/stringprep.rb
+
+ hash2
+
+ pqvUCsG6e8qZ2NrnEIplOH7gA/dk+iouTP5BNdbWDVo=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl/xoauth2_authenticator.rb
+
+ hash2
+
+ Domcp36kpaNUppNuTb4mL2FiHH+Bvseu0tOZDNJ5MSg=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sasl_adapter.rb
+
+ hash2
+
+ 4ftpIsMMiHmxtK6/5S+M77EOQ9DCxd/k66tH1HaYUpU=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/search_result.rb
+
+ hash2
+
+ 7DUcYbLYs1V+g3lNEt/GpK37a/cK+J0bH3366WiLMYY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/sequence_set.rb
+
+ hash2
+
+ LS/Gw246r2gtMD5aYd1W4psCvZ+6m6XfV8eOJ3I8EEg=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep.rb
+
+ hash2
+
+ LwMIN3yEnki/LVK2K4J7FtH6tHItM7+lprVWk9TRjRA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep/nameprep.rb
+
+ hash2
+
+ 5tliFig8ciY92Ogrw+Pm6+jydogGZFpJGLmLHiONg34=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep/saslprep.rb
+
+ hash2
+
+ KZ2kmulTc6HpDTXi3tEigzClRDKY2is9scaDK3GWXmc=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep/saslprep_tables.rb
+
+ hash2
+
+ UjR57ACZUS3C9qzAvtZFVioc1/gipn2ahCXnbJDf++U=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep/tables.rb
+
+ hash2
+
+ 3IKDL+eZWbZ/HcpHuQR/cnD7umE60dyvuQMOzyksPIk=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/stringprep/trace.rb
+
+ hash2
+
+ Fmv8kDU08pico8b62ZLpf4tOWJVlWGFZkAICZM+1j50=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/uidplus_data.rb
+
+ hash2
+
+ jKOsWIvcGK2X7yDuWTiDTWQaSo9wI5SsA+xbm5cPg5s=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/lib/net/imap/vanished_data.rb
+
+ hash2
+
+ kYUQboKXPGFDSTThkcFt6iMLMCQ1TEgwZiN2VpQnU0Y=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/rakelib/benchmarks.rake
+
+ hash2
+
+ 16anykTlLln8E9MCiurSEAPKy3E5rYM7Ud5rUNQMuM8=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/rakelib/rdoc.rake
+
+ hash2
+
+ 337OIuJQcKIi0vD5BfZbwKa5ql07SdCM7V/JVtMF6m4=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/rakelib/rfcs.rake
+
+ hash2
+
+ xlDWbeKaTY8PENzphwSFkGbwPtLyoZae+OPlLhlniAA=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/rakelib/saslprep.rake
+
+ hash2
+
+ nbqaQpoI4YdXgNqlwqbxJvwIjAkJK28hNQLxyy7Z9TY=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/rakelib/string_prep_tables_generator.rb
+
+ hash2
+
+ Rlg7l5CpJLyjOMEe+2Y2bxNS8r0VFjtcTwlsnRz8oK8=
+
+
+ lib/ruby/gems/3.4.0/gems/net-imap-0.5.8/sample/net-imap.rb
+
+ hash2
+
+ jKNgrAR1btmoe2iQBdC4gtGKSJlNtoJvHBvKhF+Finw=
+
+
+ lib/ruby/gems/3.4.0/gems/net-pop-0.1.2/Gemfile
+
+ hash2
+
+ HS1zpwlxkP+rRgxbzvDnaMp1eA+LvduJ2Rp8Aw+uLYI=
+
+
+ lib/ruby/gems/3.4.0/gems/net-pop-0.1.2/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/net-pop-0.1.2/README.md
+
+ hash2
+
+ b/aX4IGt9x9OwKfTi5KbJMWOmN8pwfd4eZ2TrZ/kWmI=
+
+
+ lib/ruby/gems/3.4.0/gems/net-pop-0.1.2/Rakefile
+
+ hash2
+
+ ZQT8v5WSTfQGcSdVJYhqW5T6cUf3eNzzPpJ16BdxQ+Y=
+
+
+ lib/ruby/gems/3.4.0/gems/net-pop-0.1.2/lib/net/pop.rb
+
+ hash2
+
+ jupeDGGSC6ZqlLBx1giByeB8On3RYFp+ZuA1mmb0o1E=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/LICENSE.txt
+
+ hash2
+
+ 2iZ56JrKiknyJQEF1nz5LZylo/xOOiUD5ld//KyTMqs=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/NEWS.md
+
+ hash2
+
+ KSXmuWghEcR8z/Ok0JI5mRG+j9l7dEK9QdWX3m4Rh1U=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/README.md
+
+ hash2
+
+ TyG/r8axdE1j0edGqIP8yvYSZ9EDvlpnhIc1UfgQVMw=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp.rb
+
+ hash2
+
+ MOuBe9qdsKqk7uEKCpDUDbZZMiGwBDMqjb0Pk1+QdRc=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_cram_md5.rb
+
+ hash2
+
+ jDDAnjCGX0AcJ6WsH324CIB+a+jmkNu61BGWmzHlVfI=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_login.rb
+
+ hash2
+
+ acoToLd8zN1UmgfgD6E8i82cgbrHncdSalRzpBzUp3k=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_plain.rb
+
+ hash2
+
+ OmdfxwD6gxU79ggCbGAHfjpKMl1rdbgyo8Dfac6pelc=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_xoauth2.rb
+
+ hash2
+
+ tniuBg01eBv776JejiXnP6Sq5OZhT8KcCGUWmOHcSXI=
+
+
+ lib/ruby/gems/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/authenticator.rb
+
+ hash2
+
+ MFoGbHGU5hok4rzugV0JB85AkbmjOwSV1VwX+17ZEac=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/Gemfile
+
+ hash2
+
+ V4wGptiMdpr1qUhSvld0pu0KDRt1sXM/TRFA+rXAMaI=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/README.md
+
+ hash2
+
+ ai9eBZq17oSIp7Wiqcq0XHD2m3onYl9mM1ZInRgKhQk=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/Rakefile
+
+ hash2
+
+ uaNV8rlETGEcQSUapWqDeHgj7CmYzXGtvRCT5tOkTj4=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/bin/console
+
+ hash2
+
+ nutE1WCA+Rn3AaEGFu2DK0jO7jq8xTc0BpSQbLFVqLM=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/Command.java
+
+ hash2
+
+ 1P4TtCwwiDsmqwiKRfM+kIg5q9wep5WL1bPoUC47+3Y=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/CommandParser.java
+
+ hash2
+
+ h/vCd0uG6eoYARGvN4o5omWJx/pBBUY0hUhbsbxMGI8=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/NKFLibrary.java
+
+ hash2
+
+ FuOzPBTvd5KbfzFg99mycClC9UfIFPFCe/n7QW8rW/4=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/Option.java
+
+ hash2
+
+ oQRQUry8Tq45p2dkfHSZftSZMg0/NRyPBnIJc4L/csA=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/Options.java
+
+ hash2
+
+ gGr0XP6B6mJotMVOmaUaYPWG8TtvXZ8rwrGG84k3SAA=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/java/org/jruby/ext/nkf/RubyNKF.java
+
+ hash2
+
+ Y/c/gAXMnoeb0Y3q0lau/yBrBoMKWSXNa15lr+9aF4Y=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/extconf.rb
+
+ hash2
+
+ huQrBQhnRqbLGN9l9YhDdJqc+sJH1jHu8sfmTd9XKVY=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf-utf8/config.h
+
+ hash2
+
+ LCuatKPVpSeTTltsxHwJHeYSN0YO3KgKDNd/NqkSYlc=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf-utf8/nkf.c
+
+ hash2
+
+ Qb38PUjAQwVtVWKK7Uh9wMBk8siYFRjjdLI0mT+ahpg=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf-utf8/nkf.h
+
+ hash2
+
+ NedZgGyuMHr2VMYz8J0g/2h1gZEKuE/kcSZIDgBBcBE=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf-utf8/utf8tbl.c
+
+ hash2
+
+ kxyUqVno8K2DaSWYvaT40L9MVlk9gDzmAnnTI3hyBWI=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf-utf8/utf8tbl.h
+
+ hash2
+
+ K/3MkuQtszFBBVj5ROHQvt7oBoT5IruIuFqDlLDPlpY=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/ext/nkf/nkf.c
+
+ hash2
+
+ YiI4hBjsxQm+1n/ZtGZ72hqJilcD/rXALm9vU/C9y58=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/lib/kconv.rb
+
+ hash2
+
+ IujIvrw70MaSuX+1HSBX1vfCJz47JOJ0ICX03qrRkoI=
+
+
+ lib/ruby/gems/3.4.0/gems/nkf-0.2.0/lib/nkf.rb
+
+ hash2
+
+ yVxsQn1C0p5BD3pnJK0naHhCxl8fMtqHuJP/h8mmiiA=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/Gemfile
+
+ hash2
+
+ 8796EsEPqsJzeBMnyupJH9F+pf81v5B5FHLDCJu9HBc=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/README.md
+
+ hash2
+
+ bbW0b0iHzDJ12P00bT0cie6GETY34kbHwSmSbSIVFq8=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/Rakefile
+
+ hash2
+
+ pHOZ6Ek/J+QySuqX+iuabZnc0ESSKRDqjiGj13TOSf0=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/bin/console
+
+ hash2
+
+ TvgKkJHfuDkaZZ+0HfNdmveC4QmL9VG/WHPyzc69+E8=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/observer-0.1.2/lib/observer.rb
+
+ hash2
+
+ FTCYj8DWaMjX833AVDd28HONFDfnxSTiXtKRrAItfQc=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/BSDL
+
+ hash2
+
+ fZep0sEF2mVD26Q4MdjyhmMM3iDO7FPrbBVavoULpPM=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/COPYING
+
+ hash2
+
+ JFwYwpLfzCywqmjSd1auZgpx6BIIAbCS+kZj4bi2lsw=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/Gemfile
+
+ hash2
+
+ k32+WasS/s9hBKFecEPHy3ERjJB4c59KqRT88GDamfI=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/LEGAL
+
+ hash2
+
+ kGfQ0Ed1bwUmfMpmK35HAVfVfgAiqvfb2pr6HV+ojAw=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/README.md
+
+ hash2
+
+ gRH00VGKYUNZ40MkcQf5EXGa/ziLaFYmKUhpBZ6xFto=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/Rakefile
+
+ hash2
+
+ tMyIdnb9J78f+SSCZPUtbEqEHnyVgdXyqbsvfqOuH60=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert.rb
+
+ hash2
+
+ krCbcKY0lI1BvCsMCnubY9cKsoMLkKuogK5/efkXVuU=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/colorize.rb
+
+ hash2
+
+ DH+Lr3IpA2SFDgU3UiEnumld8XeaniILU1Fz/PoVD1c=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/configuration.rb
+
+ hash2
+
+ mADxmm9TqZ3TohWun6II4zB7TiLpjyr684aG7cregbU=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/context.rb
+
+ hash2
+
+ peRB4vTCe8KbtJxw+RFcX4cAJ316Di05qB4pw1bqwJI=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/enable_tracepoint_events.rb
+
+ hash2
+
+ xj4ENK4i/SdS+XYWR6xp8YUoGj//Fq6Y83k/NrPDW2o=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/inspector.rb
+
+ hash2
+
+ uTIt+ah9y7drAt8VC+U2wYsFlZzPw+i7kiAhwcgHFPM=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/parser.rb
+
+ hash2
+
+ DsNHayeMoBgIDJFr7SrN/fKP291HAO+R3aGTS3FspE8=
+
+
+ lib/ruby/gems/3.4.0/gems/power_assert-2.0.5/lib/power_assert/version.rb
+
+ hash2
+
+ pA6EK+v0HuUD6QDw24ZHsUngXcGkm4PFwljx3LXxyTQ=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/BSDL
+
+ hash2
+
+ Nqmm5zRyFLu6WZpBJhcgTmW/8GXcvlxG9ctFTIDenrA=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/COPYING
+
+ hash2
+
+ lnWG1TiiiVXsJUGRDPY8WsNF/N6pS/sfFwWh9us2vLs=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/README.md
+
+ hash2
+
+ m4EezOJyDMa/c0VtNFSahr3uJ+xpSYSaBZkqQJZDYPI=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/Rakefile
+
+ hash2
+
+ 2eXIOhefFeEJp8QxwJtXkzR5WmGZHgmpJnGxPLatd6M=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/lib/prime.rb
+
+ hash2
+
+ SvfDyBWtcytKNd+jE0X+zNEi3aaOBfCoyVGA9btgA54=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/sig/integer-extension.rbs
+
+ hash2
+
+ KvYFWKo1Pk0YNVf2CRl4qRXWgvq7mpWj2H533HuhKfU=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/sig/manifest.yaml
+
+ hash2
+
+ wRC1Mic1AMGImNx45rWZUEPyyGLKQS4psFHvY+dOtF8=
+
+
+ lib/ruby/gems/3.4.0/gems/prime-0.1.3/sig/prime.rbs
+
+ hash2
+
+ QS22Wkd0pT6259+UCKDc5A15B2ErjKOyoS8khvYlUsM=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/BSDL
+
+ hash2
+
+ Nqmm5zRyFLu6WZpBJhcgTmW/8GXcvlxG9ctFTIDenrA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/COPYING
+
+ hash2
+
+ lnWG1TiiiVXsJUGRDPY8WsNF/N6pS/sfFwWh9us2vLs=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/ChangeLog
+
+ hash2
+
+ 4l9pMFi94UwG5ifbaim91qLPTZahorRLR8LB+hgXxNY=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/README.ja.rdoc
+
+ hash2
+
+ EKXujuTwQNnClY5urQeuTSdwhHCBj5xaJkquhIBRXDs=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/README.rdoc
+
+ hash2
+
+ yyzMTUG5Mpo9ckDa8CAJi24al+G7tNMAM4295u0qnBI=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/TODO
+
+ hash2
+
+ l4i7hW8EvKJPb/J3sTgB77B2p1+RFmi3kZNKT6aZ7Ps=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/bin/racc
+
+ hash2
+
+ DuFItmp1dBSP/+irgbqhOhXFl8/Kb+kAOEeuGuaZ1Po=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/en/grammar.en.rdoc
+
+ hash2
+
+ jcK1GmYhFvSJHsZbRpWTHOIap5DuoVhYkC9hoxV3s9o=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/en/grammar2.en.rdoc
+
+ hash2
+
+ f5k8xcBQ6VmUVw6PM0Bk6Z64Wx5e0Ku7eZgQZPcgz+U=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/command.ja.html
+
+ hash2
+
+ u0MEiTCvdMwed5bfcw0/U8hliXw4pDVb75J1aCYbsXA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/debug.ja.rdoc
+
+ hash2
+
+ 9v+Fhj/1NgwYYfxnQM6trKJqgGOAA3DyV9EBR1PaGpk=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/grammar.ja.rdoc
+
+ hash2
+
+ 0mJwoKgSy+KGp7Tndeyr3Kg0VehMxlSCDTfufB2RJfA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/index.ja.html
+
+ hash2
+
+ TmI0KUV1VTUQNzvy7xpTjSIUzChbQQIdZvOgNBedTOI=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/parser.ja.rdoc
+
+ hash2
+
+ ZkjI9cdlwxGhJZRp5+30igVdFCYTrjpVN2ht9agZ6xk=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/doc/ja/usage.ja.html
+
+ hash2
+
+ JpRbjCkYhoad5XMci1+l0RByTqaIc+upPlc+ctddFgA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/ext/racc/cparse/cparse.c
+
+ hash2
+
+ iwRLWgT2lj0olAlwWwy/amhZ9J1pPJgMIrH2sUwNVWw=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/ext/racc/cparse/extconf.rb
+
+ hash2
+
+ wIW22/Js30xAeey0lB3eId2tDekiROt96GFpRVUMR9g=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc.rb
+
+ hash2
+
+ QssAmdKHcZoFuXqVEHhlNMFPrr1r+M47Gi1dR7+X1hE=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/compat.rb
+
+ hash2
+
+ ImFZa1YvMnXnBxhrz9s3D2OuFn/oxk9FE4EjSSuFoNg=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/debugflags.rb
+
+ hash2
+
+ ajBZIdLBGuyltSUOPnZrh/IqmQ6rflZ2+twFl36C5nc=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/exception.rb
+
+ hash2
+
+ KWlmHJHoxq7pbvV2O8omg6dHCMeLAbJgZV8NYSy8UFo=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/grammar.rb
+
+ hash2
+
+ zvUQ3onQdQkK6RjXzWfIHL8undFrPmEUVRA0hc45rwA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/grammarfileparser.rb
+
+ hash2
+
+ Su5PzvNGTSkwO3odAUrLC/Y+V39sKKc/kdxd5sFaodA=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/info.rb
+
+ hash2
+
+ Kz+mqHKdp9d6EoAMVoN9oDH5aLhqrBb7f9UT2moAj3w=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/iset.rb
+
+ hash2
+
+ hDKseJ0OADtVS1E9Og4OEwTOGLdO23PpVyQ/yXVZQ64=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/logfilegenerator.rb
+
+ hash2
+
+ Gqh8y46qbUUgGfEuINJzLGpJ6PXkn7ovNA0VnXWykmI=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/parser-text.rb
+
+ hash2
+
+ zL0zywozy62xPZR1PWrrzPI6G+j/No153Diry0TbhpM=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/parser.rb
+
+ hash2
+
+ jSN4w4zpbO+ZLkcA1iLVsLJOgwrOm8XNF7lr97hMQzg=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/parserfilegenerator.rb
+
+ hash2
+
+ OlhB9JfMDLCr1HI2Bc/C3fV2ox+3khJ13ljBz8kdAIc=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/sourcetext.rb
+
+ hash2
+
+ Q/0WPEvValQfo8fO/TeY8CwdJgjmogpoDynvUi0hI2s=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/state.rb
+
+ hash2
+
+ x/iX7EXngT9By2MjMDxyt5woSQv5SpKiWPlPetno1c0=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/statetransitiontable.rb
+
+ hash2
+
+ DqEQPL0cJXhvuMU0THtyWTmAThSkG2H2mB/jiWHNOds=
+
+
+ lib/ruby/gems/3.4.0/gems/racc-1.8.1/lib/racc/static.rb
+
+ hash2
+
+ e0Uezx68dHS4Sre1HYVDOMx4pAiDvsb2omxKm5ObBCg=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/History.rdoc
+
+ hash2
+
+ MbwQL/27vfEKATJMZiN2l9ATvGE0VhkzCKPejcrXR+I=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/MIT-LICENSE
+
+ hash2
+
+ PoF5ro4zVKIq1snwioGsLn45z3tlx92XiVyyO/Is1Iw=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/README.rdoc
+
+ hash2
+
+ 07tpXpce7TTR8WIObfJHv4jodXpzlh/LplwdsdTWUEE=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/command_line_usage.rdoc
+
+ hash2
+
+ 15hOsXjKyOm0/JLv7bBonWImykY9JxL384tbrqhmkVw=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/example/Rakefile1
+
+ hash2
+
+ f7/Jxgpxf+ENd/Xf+Kh2Mhi83OIRg8Xur+vpqW/MKX4=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/example/Rakefile2
+
+ hash2
+
+ uypXPv+f0L8p4tgSuUzwI3A4vaqteOqPZEn9U67kfNs=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/example/a.c
+
+ hash2
+
+ pzoGJ+Xc5uFybL/9RMdWmJ7I9w+S2b4sW21IQIEsZYA=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/example/b.c
+
+ hash2
+
+ +TkFAq6Id/XazXvo4yHnvLMK7QBKe5q7dtNQdoNNL04=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/example/main.c
+
+ hash2
+
+ WuT7bcZaXu3l5njrj9IBq+eK0hFsch84RcThbKN7PvU=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/glossary.rdoc
+
+ hash2
+
+ 0zlKuv8Ry9e83YTLWugStsvwswtnDWNTmdu0tHX7v3A=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/jamis.rb
+
+ hash2
+
+ FkVm8rsjPEL7XEugLHzzY94q9u/n//DqjqsIyMLs3dY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/proto_rake.rdoc
+
+ hash2
+
+ Zj3lc8KC8EYThYWr7TeZqOu5wdBs97ZRqaQHx4XpZ5A=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/rake.1
+
+ hash2
+
+ 15NfOIZXiN7QOaji834ceDJZjNL03GKZQr3fIQ0L+S4=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/rakefile.rdoc
+
+ hash2
+
+ zM4n6OCtO+iOovKGA0DfDngSWHrbMf5qBDQdP8MQg7k=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/doc/rational.rdoc
+
+ hash2
+
+ gnWZ1K4xx0iVqGKD6qOj+VPkNQDxpl747FjnnphLILo=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/exe/rake
+
+ hash2
+
+ x4BbGLc1qtq4iJ/TS87vHTCLTcY//ZdkIjQtusNATXA=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake.rb
+
+ hash2
+
+ Q/FuL377+tPaYWHpTyDux7dek6UYcVvipEqGO9AR1J8=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/application.rb
+
+ hash2
+
+ u0Zm5ZHF4uSsi/hp0Vh45U4Q0ADacEB5UwosPsm7E2s=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/backtrace.rb
+
+ hash2
+
+ 13F8zS0iT9lPN9B/j5MzJ0SUSGvPwqFDzE3AefFOZsY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/clean.rb
+
+ hash2
+
+ dn7ZTZiUi8M/pse6kCyX1YDd21eZyuLm7Pj7ivWMOnU=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/cloneable.rb
+
+ hash2
+
+ c1CL7afmowa+ZKtQLpkvVGvLBpwplL631okX0sU0inM=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/cpu_counter.rb
+
+ hash2
+
+ bShBub8EtCtu6iBxJ7NS0QkyVWUD3Z42dYiwx8lTeyY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/default_loader.rb
+
+ hash2
+
+ gZasZFL/VuqD7NhKIQy1pVxUK4l3ciMznXROBv6uhrY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/dsl_definition.rb
+
+ hash2
+
+ M/Q0/I2yxbFRfyZiukeKsq9GlLsabN9Vyl1legQkjjE=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/early_time.rb
+
+ hash2
+
+ DTyO3zpf7cTm3SnGi1t0bZxL6K2xNbbAB6+3YIzOhzM=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/ext/core.rb
+
+ hash2
+
+ To+Lco035LJPe94xv3wSOQqsFXkVLJqjuHKxe9/j9r0=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/ext/string.rb
+
+ hash2
+
+ TcF/QKX/XqQzEAMaDx+paI+SZsMgiIC1JuL8eH6MtRM=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/file_creation_task.rb
+
+ hash2
+
+ 5K+CKKGmHnYfQ4ROK1giz/9FCdnVKp2rSFhP/ivRhpU=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/file_list.rb
+
+ hash2
+
+ aYHjZ4E+TXojk1SAOb0niltIWmi2pUnjOzyXo7NpFts=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/file_task.rb
+
+ hash2
+
+ 6Fx5zd320d8qMC1MmI/aCCAZTSZIBC1c06cmAO0XRpU=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/file_utils.rb
+
+ hash2
+
+ 8FlppaYOCzfcbcKa1Q2jajDiwgEd2O8DrwcDHM8NEBo=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/file_utils_ext.rb
+
+ hash2
+
+ RmnZjtqOy2TlJx+x+ESOqe1NCQvusCGLfhEi7l1RKK0=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/invocation_chain.rb
+
+ hash2
+
+ 1M7m/k3vxB73cG3CJ20Pa1LjP9yNZASYw6TxeYJ7sEs=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/invocation_exception_mixin.rb
+
+ hash2
+
+ JkIsK1xmvbcFNCsDZq9Wnr5qcsJGB60uMyEZuOtAL0M=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/late_time.rb
+
+ hash2
+
+ 90ncm7uZ4lYDItKP2PuoXFrLOnwq/XAfCkx6DORakXI=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/linked_list.rb
+
+ hash2
+
+ j4ORf+yPu6tin11FPvx0thaA3kEuuHGvPCkvXBkbAVM=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/loaders/makefile.rb
+
+ hash2
+
+ QuDEho5oB4J9GvKl/cF+j5d7GUG+jdQ+4agVV6FoQtI=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/multi_task.rb
+
+ hash2
+
+ XmzPIpL/clAzJalWHE6fm99ef6VPMHwOUUp+wfXNews=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/name_space.rb
+
+ hash2
+
+ 0Pq+Sb/QphrFX3Q/1oCTDWoERRegPfhwy3wBIlhfs9M=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/packagetask.rb
+
+ hash2
+
+ CL4EG/Ced6VALLaNpwytWZtmwL8BbeMPbmPF3z5x6l8=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/phony.rb
+
+ hash2
+
+ efmhbMfaY9i96oKqQQowl8gaTCsQoM0sAuW9b73nzUU=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/private_reader.rb
+
+ hash2
+
+ BsQ+MwOQzcHd9xVgiOgCs6enXMxXOvuDVsDKEA+Yv6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/promise.rb
+
+ hash2
+
+ C5jZAE40x4iHL1tz2HI3wziPMOgv59h2Hy7rEUgY2e0=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/pseudo_status.rb
+
+ hash2
+
+ RkFJ5kSFEnAJuWJ8gbklXzEELkFFpW2CG5mUJHyurOY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/rake_module.rb
+
+ hash2
+
+ ejw7Q/GngKuwGFteDpHHSWGK7RncYuvBalj5yARKcH8=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/rake_test_loader.rb
+
+ hash2
+
+ Cf9B0ZBcPwzsRCK4DP7NIsXDCEmlQ/P8M5tAPKQnLGQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/rule_recursion_overflow_error.rb
+
+ hash2
+
+ ZoaPwh2MQw8k6DZ5QfMSqlvVlBle4dqwiDyR/NhgLr0=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/scope.rb
+
+ hash2
+
+ koxRUj3fdXiiQkXY4wnsmM2fK+C9VGwqgWlM0rGPDBw=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/task.rb
+
+ hash2
+
+ 4eFiJFT4ENvLNFX4WT5aonGwnImOdaQgcE7zajbrUnA=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/task_argument_error.rb
+
+ hash2
+
+ 0sRp7ghtP+LJn4mCBPThIN8xOHOLNb1UAXAplR447rg=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/task_arguments.rb
+
+ hash2
+
+ Fmmpu/gUd6fu7cbKpNb4q7QX8jShJbgZUtkd00J5fQg=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/task_manager.rb
+
+ hash2
+
+ piPqwuhUuznGv3HV03H+F2eGTkdJmjawP6Fx4AkvfBY=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/tasklib.rb
+
+ hash2
+
+ ucPnSFZApHYHfqkcEA1AqcC9OgE/gNjnVBQbk7NVa/s=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/testtask.rb
+
+ hash2
+
+ mNn5HPjtQmoV/W+zQ1lY7yE2Im9FQqmGFWKmz31nHso=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/thread_history_display.rb
+
+ hash2
+
+ AwJBJSflYDZTl1kwfqLe2MaLeUoOuLAMgE0SWV6qhe4=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/thread_pool.rb
+
+ hash2
+
+ eZUtW+AqUrJXbv9ao2bsfyZdeXrRzRqACXkeIcSlXkA=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/trace_output.rb
+
+ hash2
+
+ MQk+bNRRbC45Fdd29Ydf17vdvWaCblAXtThcBtHn4I4=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/version.rb
+
+ hash2
+
+ 8s4d7+SRtjhR0/VVsJ3WQn6YKfdfksGCkRo8DxGjjyE=
+
+
+ lib/ruby/gems/3.4.0/gems/rake-13.2.1/lib/rake/win32.rb
+
+ hash2
+
+ /vwoKNRnDn5j8UDe/TuzG5fnGlk2oxWXvDtU1WTjGmU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/BSDL
+
+ hash2
+
+ IQx8vr5KyNwpRK8+JIbKOwCgIzIr+GGgeER00oXfG54=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/CHANGELOG.md
+
+ hash2
+
+ tz1J79pX18YWLTn9MoMl4LImxENdJpnAxs4QWwTf+mE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/COPYING
+
+ hash2
+
+ zhjozyURaxM37HG+ITecot62oEaKCUJhNfoidErv8WI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/README.md
+
+ hash2
+
+ qtlC33IJmz8qB9aD7v/tdwz0jqhDDTeG23A/YjTRi+M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/Rakefile
+
+ hash2
+
+ VO7cU3u91iSXHDfxyafqqI3dFxnsV9AXQUgnn6FcuoU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/Steepfile
+
+ hash2
+
+ z4oHqkPWs4xImstW4BgQNoZptZiEBrSAZEx+cfjhTOY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/config.yml
+
+ hash2
+
+ oafWh4CxsnzOe2jDv26qfmtb9Gh1fTgnVRjYKaZRlhw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/array.rbs
+
+ hash2
+
+ zLtXqiyWcgN669viwG3HDR4PHwE2+MzcF4xwxIFUopc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/basic_object.rbs
+
+ hash2
+
+ v2nuStKdC8oTJvXfcjG08xMu4/Ha46AaQxLlU7d85U8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/binding.rbs
+
+ hash2
+
+ QX3igm752/orRfyMxVVcFu46Uhd89/aJ78Ia7f2HL+U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/builtin.rbs
+
+ hash2
+
+ 3944VCGeS6OXF92DWb4aVL+DACJ6yq6JD/kaSdfV4oU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/class.rbs
+
+ hash2
+
+ 9YL5r8ldfLTO+NTz31QniZVGt0iKgi9O624yOCniPzM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/comparable.rbs
+
+ hash2
+
+ 26Ug5qQuDF0+M20OFWXxOcTDnYuc0uiFfgPhWL2kRZQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/complex.rbs
+
+ hash2
+
+ vAcFUueSZmnQK4dsy/mBafM7wp3uAZsvJMUsPvCmCpw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/constants.rbs
+
+ hash2
+
+ QHJukeeDTWbkr4k0C27fU0QeId5h2tUGbgcpktbXEhk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/data.rbs
+
+ hash2
+
+ DVQHaXzkjcvaVwVzjpyxrOJr7hURULg0O/14rYcgTUg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/dir.rbs
+
+ hash2
+
+ 0L8oEUgUORNUJE5DMAHBn81b6K+UZQG8twg7z394qfM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/encoding.rbs
+
+ hash2
+
+ NRJ4KxOgtRkwzEIzQifD0ceTE+iWnIblN0MA9dj7R70=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/enumerable.rbs
+
+ hash2
+
+ mHBditymazxQjf3rbMOZ4ONm4PrVYyjrK4raYdkvgc0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/enumerator.rbs
+
+ hash2
+
+ EG0BiXLfDlLWC49DMuaG+CVas8aH6Lfa+u4+2gw7IRM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/enumerator/product.rbs
+
+ hash2
+
+ v9+PV2oxBjciZesEq3drwfcLxgMAqfdkNazyQKCuWaI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/env.rbs
+
+ hash2
+
+ vI2li3kCKvjq6NMpeul+EeazHb7oH1PS02Q0C9NkoEg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/errno.rbs
+
+ hash2
+
+ hWuvwvcET3bEwLZ2aLprjGV08y2/CqvX9+wxo2pFhA4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/errors.rbs
+
+ hash2
+
+ GGSkdHoZglrRmpxlf8RXRvjLuMxqr6DgUFVXwejXfZY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/exception.rbs
+
+ hash2
+
+ TPg2CCwCLOsae7chfG3RYLXow8qDAaZZufRT6CstqSw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/false_class.rbs
+
+ hash2
+
+ bx1bo5UR4vJt53IMNH4NcAARv7maNddbj3+g6xp38tg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/fiber.rbs
+
+ hash2
+
+ 6BvK6HigDc9/HNHiL3aGJXU76nzRC8WxMvqqpWDN6ns=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/fiber_error.rbs
+
+ hash2
+
+ v549t51QlA58BfpV6ijrzQjOzZSNYMtAF1pAwB0kIxs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/file.rbs
+
+ hash2
+
+ /NbK3OtCxByxuv7frnX9gmZD9LAYoWAFiJWXObx0EsM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/file_test.rbs
+
+ hash2
+
+ 5jxB+SXAqe0AQUp7c2GY4lrLi2vvtu/mBdVPAOBsIhY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/float.rbs
+
+ hash2
+
+ gauisr5AtT54iF3lNgpyUPnq1SsI7Qob9ZNpcUSGvTo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/gc.rbs
+
+ hash2
+
+ xVW74WMsgoRXIj2zs6kLFFX89u3imehIFVb4c6odM24=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/global_variables.rbs
+
+ hash2
+
+ EpeUBOBZhE8hdtBJX/UFZljhcFshEwzVTxXq4xu6ZUs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/hash.rbs
+
+ hash2
+
+ x0EegGY3ElpHciBf+L5tRDQuAfwvKvINy3Kp4E6/25g=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/integer.rbs
+
+ hash2
+
+ zZYxUr/SxtRjs3Exv2hi+Ukx1lFwazHzyvr2u9OlrOw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/io.rbs
+
+ hash2
+
+ bclNo+5wTtDeE3M5kDP/Ufz5kHtkIh9A/kFwGMg1Hlk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/io/buffer.rbs
+
+ hash2
+
+ AihcXP9jsXW69Lks2xAplRpOqK5qjlHSpWvz6iR646U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/io/wait.rbs
+
+ hash2
+
+ NdJ/4ub2cdv/qdikIKRWjGloUMrhEUgfnS/8kfTF3mQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/kernel.rbs
+
+ hash2
+
+ W/Qhun7aNUY2DEO7bfjOCesm4AskcGimXeKZLwT0V7Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/marshal.rbs
+
+ hash2
+
+ 1COemmQHH1SxhrwPCIC14sDcv2YA/g01Ig9dzwT+bSA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/match_data.rbs
+
+ hash2
+
+ B6nYrHuc1DNh7yf5gpBbMAscGcaelGlIhAgdm6LAohk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/math.rbs
+
+ hash2
+
+ sQroJYmMWfKjDQjAISlSk2VarfEZ1xFYXU7igdSN7Fg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/method.rbs
+
+ hash2
+
+ BGIzMzZuOR97pZ4VhaYPNrShdTt3vfkFrMMLtc7DgDM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/module.rbs
+
+ hash2
+
+ 5p5/ERBmsP8aPcqSraJJcn+qN3xvuiFUvfzKUC82Dss=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/nil_class.rbs
+
+ hash2
+
+ WVUBiPCa1xlHVejjZH+/MYSbubUUfUzWhy1XTUC2DF8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/numeric.rbs
+
+ hash2
+
+ dRSbCErqqQkJ1aRDHNoNN0au2zRCepzb7XqmxG3jk+4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/object.rbs
+
+ hash2
+
+ xWvcZQQIe0t74aImNsBf5N55rnbvhzknrthZJUazdZA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/object_space.rbs
+
+ hash2
+
+ BcsHgk7LamHBeFCQm9R0GzXe0ZiXw67skfRAs41qbSM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/object_space/weak_key_map.rbs
+
+ hash2
+
+ iG5SAcZLu7tqUoobItBpUcB5TwUD7vXrnk0MI+DarQ4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/proc.rbs
+
+ hash2
+
+ zbuPv84/wzF//0rqCRVz3ErL1yYKaa42znkORBjnTIM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/process.rbs
+
+ hash2
+
+ KFv+rUK7bJRp3RsH/PYJ5O1NggwhJitPPE/MHkp+W80=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/ractor.rbs
+
+ hash2
+
+ As9IEm/wNYKg1sHUVbSaQFLlv92xEuZyTxpD7s3+fqM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/random.rbs
+
+ hash2
+
+ +QzY46fxr2XCI7l4FHoa9tkGUzKrJ6ZJNKKxb0P2TBI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/range.rbs
+
+ hash2
+
+ zb4W63Ihy2aLipK9E4QoYejeUN6vAMEAaQOy6unZFGI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rational.rbs
+
+ hash2
+
+ jD/Bh6WdIqnn0RPuq/wf7U+g1iNQ50ip85PciAKkXeA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rb_config.rbs
+
+ hash2
+
+ uc0hkmeqRos6V76BN1mwwOHdiYYBQAh4WEMBRK3c2zQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rbs/unnamed/argf.rbs
+
+ hash2
+
+ 1BJrw/LMBxIN6lksf5TcfEN9LxRPSolZcXF7TRdvO70=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rbs/unnamed/env_class.rbs
+
+ hash2
+
+ LWAyUdhnsCJiEd+u0fUzSxDQy+7wW7t7RH3dTR7v2no=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rbs/unnamed/random.rbs
+
+ hash2
+
+ 0RL5UI98SErazSgnhjURgaCV+X1aS5QWRNRmjU9RleY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/refinement.rbs
+
+ hash2
+
+ Na2o+gOKqJOj8tk6ZnGhSNmtTnPxetWnOY4EP5eyBoQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/regexp.rbs
+
+ hash2
+
+ aq0FICAK8eWBuF90MOZK1E1iYLfOE0uKgoMRkM4GL8U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/ruby_vm.rbs
+
+ hash2
+
+ xzZ3IWM1WzDuv12ZiNJyKuKWUF+X7i9mxkR8t24ykIU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/basic_specification.rbs
+
+ hash2
+
+ 0IubYrWes5eoM3qn7zZj4m2AxRAlqVVOM1pHB8cDnLA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/config_file.rbs
+
+ hash2
+
+ 7Hk/elvJc5R+r95ukeIJff/NWxw6gxOwIxN/Y7KdFPY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/dependency_installer.rbs
+
+ hash2
+
+ 6f+/vcPXZ8TcQGn07lmkvpPYI901oaohlg6JN3xYTbE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/errors.rbs
+
+ hash2
+
+ OFg8uXyBCDtZrph4awi68xhND3GnyHHcsEh/mHyPM14=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/installer.rbs
+
+ hash2
+
+ svAFhzBudpXhHI+ZL5DNpF4bvsJRFPzZd07LBJohzsM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/path_support.rbs
+
+ hash2
+
+ LJuQzbCWw3a1P4pQI+MpKPXQO7p0kLtTMY/f/Ypk6tQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/platform.rbs
+
+ hash2
+
+ qEH3KNoJbvvfxOCssY7GQLhSigNr3H+7N2GqetbJCFc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/request_set.rbs
+
+ hash2
+
+ nW0MInWn9DTydoNRfqa/TL0yQkebi9FeyWKwkWB4//M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/requirement.rbs
+
+ hash2
+
+ GHt5rj+W3IHDmz0535hjde5mysORloCYvtAjgRWSoPA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/rubygems.rbs
+
+ hash2
+
+ oJRxZVgr3hirpsXlsVn/c+xa1wiGbbZX9Ni5KrXLxKo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/source_list.rbs
+
+ hash2
+
+ tcuQJzglsMkRG+ZQUteVjLXLsz511FH9J+lV4FsHBvc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/specification.rbs
+
+ hash2
+
+ kGXioyG9bI8tiKzpFeOsqrvMNvfZOHKcTQ6QTTBJCw8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/stream_ui.rbs
+
+ hash2
+
+ hF6+/xl+so7YvRrUx1kn5t8PYQ9iU5epX7jzeZf/YCA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/uninstaller.rbs
+
+ hash2
+
+ CsvY8s6w2htKivTdsnt1LVBsBZ/PtxjKA7EQWt5Ru8o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/rubygems/version.rbs
+
+ hash2
+
+ rtUN/1vVHEsk8NalWc7j2VyIOhkaED6jj03UJ11jdEU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/set.rbs
+
+ hash2
+
+ OXF/gJ8O4AeeqBJjVaKy+H8a0SS1GifIUdqJBJczYx4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/signal.rbs
+
+ hash2
+
+ a1s9H4AXRA2TMk8kUfxuJr3/rueoVGkZeviSBoZ7bDQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/string.rbs
+
+ hash2
+
+ msyFu5WQ+pb4iUSYTZSlXWlT89skuhPq435wy/uuYRM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/struct.rbs
+
+ hash2
+
+ lngNV/4f7IKz4SGZim5ZgouDtDnsZjbI3KiZk8+3ORc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/symbol.rbs
+
+ hash2
+
+ p+NDaaMmbsOLgJiKNtDClCUCFvZer+iF6cLadHir/DQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/thread.rbs
+
+ hash2
+
+ Ovs2EzpAGSRTnT8XszUIUnPFXNlOOwALMYQTH6vdpyk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/thread_group.rbs
+
+ hash2
+
+ Rh3mM7TZKU1fxL+pwsUG58IfOf7LUWz4Ii7oYcXVCOc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/time.rbs
+
+ hash2
+
+ kylRakKHzGll85BbfCfoTCw3lfmLj9KJGsTZUxfIuwA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/trace_point.rbs
+
+ hash2
+
+ 0d3TQfYy9ukIZ9C+r0lNtfuUAX0gn9WzSfngv2n6RSg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/true_class.rbs
+
+ hash2
+
+ 96Wn3zedAojwTS6XAsvOS2+3fNZ4vsXGIu1tdCWS798=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/unbound_method.rbs
+
+ hash2
+
+ kUUy5HcRRtas1ie0fbGKtwxZbyrsBSA6galIRJHXFm0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/core/warning.rbs
+
+ hash2
+
+ W/je5qkIr+tMhZvR8Tkytwz2E+5xvboVr7bNPS7HB3M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/CONTRIBUTING.md
+
+ hash2
+
+ XI6SWToIA++NHn9tRI4MfBKqVuq6VfNBtdi2y0z4ZlE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/architecture.md
+
+ hash2
+
+ bJJgqOWvQ9VMvwijMsq6Eskz1jTLaZkXqs6hVvL+egE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/collection.md
+
+ hash2
+
+ pmrseVM4BwT+WapMVRJqWarhD2KZ2jU3ImGuf/2qDRE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/data_and_struct.md
+
+ hash2
+
+ S+xsZm6VYsy9ZAXfidaz8YKTXneMwqvDPR1iHFA+v2c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/gem.md
+
+ hash2
+
+ YZhS7ZeM5dAiqaC5KYWKA7qX1uasrL1dWuYR9S8tPh0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/rbs_by_example.md
+
+ hash2
+
+ C6h0Eqxe5e1xkrscC+jb/pKh3jrxd+OJ8BIJiPLeXSI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/repo.md
+
+ hash2
+
+ xxdRsWLUoyqNu/C66vyKO6fEBpBpYRdmXSpJ8/+aD+w=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/sigs.md
+
+ hash2
+
+ EDzQlImcFVKi1yLGWaat8zlqIYZl7XXROHSSOFrZa4U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/stdlib.md
+
+ hash2
+
+ 9whYOw5tXw84kVRAKdifcI0yISE81iLdEZ3GyDMy7uw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/syntax.md
+
+ hash2
+
+ DXM3CXWeTk0Y0nAtDeEOzs0S5XDdrwU+Lx2Pl10y3jo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/docs/tools.md
+
+ hash2
+
+ RUsoOV2T6XkgnvjvcztixgBzN3nMtC8YZWoA8+tzWX4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/exe/rbs
+
+ hash2
+
+ calIWUtNTJDtd9hgDIzbi0u7CFPudNFeQ4dxyHMg4vQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/extconf.rb
+
+ hash2
+
+ w5cmoV+mVgxz1muNU18uPOS04lVQ0cqx3NKrccdWz/U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/lexer.c
+
+ hash2
+
+ 51Y8pS4yz5UbJAn4WORDPo3PLuo6LrFKaoDPsXkiPeI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/lexer.h
+
+ hash2
+
+ xrrVsOUcQh2YQVrBOgMjHIaHwqL/osoJ+GdPJ+xJOT4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/lexer.re
+
+ hash2
+
+ 6aQUgE4e52jpcyVO7kly2nVs2AZNpHu/6ptr0B4hAAU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/lexstate.c
+
+ hash2
+
+ I/odFpTKfzcOmv36cG+TYBusLCU2O/b9h+W6CN/Lees=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/location.c
+
+ hash2
+
+ aHf0GgFFvbJZY4YYZiFmxvMnNpdrtEfP49YNiAd72bc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/location.h
+
+ hash2
+
+ 4oyT0HH7z+RRssCi8wjp8qRsr8SJ9LpUVbOQFsxubAc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/main.c
+
+ hash2
+
+ hC3Y6XiOZJFQDbG3HX4q9RUfhl1bamk3RvWZtme80GY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/parser.c
+
+ hash2
+
+ PVwRPGDt47BnZE7iBzu2cCUuS52AB84x7ozHxiJqpXQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/parser.h
+
+ hash2
+
+ o1ThRcK5tyVfIMriE/aEOIdiSALEP0S08Uteil2lUhs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/parserstate.c
+
+ hash2
+
+ TxV54yDNhfrBfq0AyI1+ttux/tQR5knEL/CDpWtvgrY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/parserstate.h
+
+ hash2
+
+ jczCpgkMsGGmDhMaqqU/hv0X0sQQ2wVTxu1FrEMyd/s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/rbs_extension.h
+
+ hash2
+
+ H3Cd53dvflPvIYpNY0GybkqFCL0N2JwTKRXsxLlLEXg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/ext/rbs_extension/unescape.c
+
+ hash2
+
+ Kv0o2xtAg+BmZejpzHbkZUvGTr2U8/zPFw5Bl8CRRf8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/goodcheck.yml
+
+ hash2
+
+ Ibv0Y/746Uu1W7YJaGmjqCH3b67yUKLRNjjeeHfBPQg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/include/rbs.h
+
+ hash2
+
+ QbAluQEB9QXgovTFMZHg/QrLAOzWNR2qNIsyeCnJR2c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/include/rbs/constants.h
+
+ hash2
+
+ g0jLdKQrtr9+gDatIeL9nePkS3xtfjeW2veV/4aw/KE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/include/rbs/ruby_objs.h
+
+ hash2
+
+ HJ/QgalnElwlJ37kLweU1NRBjdyY916Z5z6IyUbPy4Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs.rb
+
+ hash2
+
+ zaIkCfo4YhfGK5o68F4yk6vJMN4PfWrYVsnA3D9pdco=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ancestor_graph.rb
+
+ hash2
+
+ nuFqPQIbiiYEBAXVKbDwWMJvrE7qxhEdUx6/yywmNFk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/annotate.rb
+
+ hash2
+
+ GN7kg1D/Hx6krXgYcevKJ9asb8DzX2jXIy/cSgzNXAI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/annotate/annotations.rb
+
+ hash2
+
+ ZelT1NIiId7UWi0lsZaBknKIji03/bffH/GGuDq6Eus=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/annotate/formatter.rb
+
+ hash2
+
+ G5/Uy5UHxfnerK9+bpigbIUcX9j/Az5tNBZFbBMD/A0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/annotate/rdoc_annotator.rb
+
+ hash2
+
+ jpvV6etodG9CNnzWzA5avHrkidU56wfBCHZu3g+0l+4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/annotate/rdoc_source.rb
+
+ hash2
+
+ k+gRgGXRCb4nZaqkhBzGDYoTWyX9y0bVz97O73u03pk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/annotation.rb
+
+ hash2
+
+ IWOAv3rM2OX89lx4X1nmBhejM5M5jNJBxBFn5b/jM9s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/comment.rb
+
+ hash2
+
+ 7HCrUv9m43E/jcHCHWcVEog8QBM4ShJInSIR7JtQsLA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/declarations.rb
+
+ hash2
+
+ xpGkL4vf+I9DoUHWoVr8SRYro2UUKgq37wqzQC1+SeE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/directives.rb
+
+ hash2
+
+ GCxYau1S7sPZ7+FEhWaS9Sgo0i7D0MfvxNAddhEw2PY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/members.rb
+
+ hash2
+
+ Skz/PQVd9buyvLn/oJdXFVlevZYSk5h2+pqdrL48FJQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/type_param.rb
+
+ hash2
+
+ +9o/txvNFxaAdt59gZppJ9grqt/0dtHfiqH9mOKepnU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/ast/visitor.rb
+
+ hash2
+
+ bSLnPCyiRBem52NqW5LeJm9sHp2ixLYfA9DkyZo3Vx0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/buffer.rb
+
+ hash2
+
+ XYdG/Aj5kXo31ljsR1+LHAONomPYYMnFKmNFH+Zn0Is=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/builtin_names.rb
+
+ hash2
+
+ 3327euuucM9D6YfcxT9qwvlVNFTy4hXZXvA148RDo3w=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/cli.rb
+
+ hash2
+
+ AByjHMTS/fi1SCEv3gh6G1rK91DHmVT+RRcans4YOlc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/cli/colored_io.rb
+
+ hash2
+
+ E5qDZ0Ah3EUCYaS85RVn7irtgnSaixrwOObtJ1Tq2+s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/cli/diff.rb
+
+ hash2
+
+ suppATJvXTf+TZSVpJYwknyYhnk3ojq32whvS+0VWko=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/cli/validate.rb
+
+ hash2
+
+ xXDX+lODtePEBdsWLY0NuhcbCY0fOPWNlm7cCEwn990=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection.rb
+
+ hash2
+
+ 52DULrKgFLD+gftnNISkdrWlpc3Fg/wkYsaU+XV9TKM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/cleaner.rb
+
+ hash2
+
+ W+foUo3JCxm2H6HALudVeOCOTNz7+awALWW3v65D8AU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/config.rb
+
+ hash2
+
+ oZVWgEWdw6LS/cgzNtLnG/PkaqefoxWQDC7cGMRXEU0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/config/lockfile.rb
+
+ hash2
+
+ EI3qIxKBJr3MwJpIAkUSak/P93oQ+qVA89JAeYGD1eM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/config/lockfile_generator.rb
+
+ hash2
+
+ ZZQOttEUjv98PBSxOwB+yqtd4B1wyP5iM/bCqjvwszU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/installer.rb
+
+ hash2
+
+ ntSd4bjO63/ldE/iY93K8gI1Vflyh3XzMkpRh+zyh9o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources.rb
+
+ hash2
+
+ AfVrnxAyywQqcUZgov4sbivV/PrWaSxVLxSEO5XHQTw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources/base.rb
+
+ hash2
+
+ FyxFWxz6kVSGZDhbpo4yT3VUx0uTSbq1ItQJt3KDCCE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources/git.rb
+
+ hash2
+
+ ueovUCop8YLQobo2SfbprUabTHegFd3r//oyzUmiILs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources/local.rb
+
+ hash2
+
+ iimVlQvjERz3CQXhoGEPs8FthxwV6G52Qz5TFYCTHpc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources/rubygems.rb
+
+ hash2
+
+ nu5ndV0ucrHVvao71t/Nou1jPJd7Vl/Hi+7wDHADllo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/collection/sources/stdlib.rb
+
+ hash2
+
+ tg0JtNuaIYNYcq7NZkSibiQCqYom1kMliIzJmWEfPQc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/constant.rb
+
+ hash2
+
+ fXBgZrIlks2szgPFoT/gjwJrWDBlSFYuqU1c76MiKPY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/definition.rb
+
+ hash2
+
+ ffn3YT3X3r1TdlM5unKzAS2T6xQG4/mEQbDFOqQA9Q8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/definition_builder.rb
+
+ hash2
+
+ iCeyCRi04bA6QGfCjPrNSxqz/5XyELaTDcTRGZVHz9o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/definition_builder/ancestor_builder.rb
+
+ hash2
+
+ B9xp/APigoMFbWeZQgrIqcFuCyvBhPpHysFqOTJv9JA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/definition_builder/method_builder.rb
+
+ hash2
+
+ 99KrHZdFbqqV5/qyeH3vExjocij8YAK02LBCaqmxb88=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/diff.rb
+
+ hash2
+
+ HceO5UcLfRD87AlGKQYiLiDItOkQlDq9d9JUufdEhOg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/environment.rb
+
+ hash2
+
+ pNMM6ZatjttxNYaBXMKRz6NEruToKk5fY+O6NY0VTs8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/environment/use_map.rb
+
+ hash2
+
+ uD2M6tzZH1irjCFlCE98/NjSS6z5RKAFfbvFmBEF/c8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/environment_loader.rb
+
+ hash2
+
+ 8p2c570abz2nrltRGghhKgjq7n0ysbU/s2a39VMM+rc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/environment_walker.rb
+
+ hash2
+
+ QZXpdrRMb59f2EgZNfwYtLW9U38Vf+GyIFW2+iioTrc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/errors.rb
+
+ hash2
+
+ +VNrPuBsPTpCJ1/U74vG3shKdCxdjcAEBIlTk7aCgf8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/factory.rb
+
+ hash2
+
+ Uj9Ns6AVlbPiCirgTZi2Fv2Hb/RIUDUw0t8sjSqIpwo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/file_finder.rb
+
+ hash2
+
+ FFibRg8evj9J7Mj3lmXu+pCVyNLx/TeMJKoYK+o1VAk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/location_aux.rb
+
+ hash2
+
+ eELEjEIUN877Kvu8XnZxVXZp9BYFpli7FvMA8evocAY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/locator.rb
+
+ hash2
+
+ h0QAQzhwgzgiu/syhJazUwkzvyKvUhluhW0vmYJnFQs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/method_type.rb
+
+ hash2
+
+ UCfShdN9qONgCfeFZ1ASrDaDv3rt0n5Zk/ucVrMBM3w=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/namespace.rb
+
+ hash2
+
+ VIWVbKZEShjymGE6DMGXD3cY94bSO+QK16lA5juEylA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/parser/lex_result.rb
+
+ hash2
+
+ 3fuzYwlwQW1iGcohZJl5cv1J4rbX0z6IFJ/XfA1l5Ts=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/parser/token.rb
+
+ hash2
+
+ 00Zn9YgbjkdGkhHm6B9QEelPW/bEuk8XAeE6rrGFwhw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/parser_aux.rb
+
+ hash2
+
+ /xSa7yPC29qPxqwBjKaY9EOfGT98daWUtZW1Do6kKbg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/helpers.rb
+
+ hash2
+
+ kIcsWAWISLppGCl2eKo4Ys5edYJTVn5LTQs1hTojQAU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/node_usage.rb
+
+ hash2
+
+ mzllupLXgHURzrCLgXl9k2JBS1EoyYBtJA9NydBVRyQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/rb.rb
+
+ hash2
+
+ Q9rtgpfASycXWTGXelLaH6aHoq9Hq8+LVlUbnoxLQhw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/rbi.rb
+
+ hash2
+
+ VSGMCqJHk/QrrXA94Uh3fMBHOZcGUdFUSaRDlgSUb9M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/runtime.rb
+
+ hash2
+
+ E/RtarpAU2Dz6Cn+lzQvZmjW/zQjVWAs2Pe2YV9I+eU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/runtime/helpers.rb
+
+ hash2
+
+ 7W609WOkZjG/QDAZC7UvnvQ+NiKjjurkbAbYgGybp30=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/runtime/reflection.rb
+
+ hash2
+
+ FHpmjSpHlItjl523k3xgT0XLSCQykhbDZyQKgupNfkw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/prototype/runtime/value_object_generator.rb
+
+ hash2
+
+ QAPUHUeGfyJA6zU6TeiEa+5fa+5dKy9yEhVnK/E9ajU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/repository.rb
+
+ hash2
+
+ +QEqp6sIkPdbArStTgkwFDs/J+U020uw1WNyfT28xIg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/resolver/constant_resolver.rb
+
+ hash2
+
+ PhiqyG1M9pixq1F3DX3YTSFj+gkW8Os5gI3rcNSxwxQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/resolver/type_name_resolver.rb
+
+ hash2
+
+ +SS95sTUtPO36MhQompOGvxU0FT53bHM3wAum0A9Ej0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/sorter.rb
+
+ hash2
+
+ v2PQUGz4cNOApSE0yhIYjTW6BVKtgkfqijDQISsBQH4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/substitution.rb
+
+ hash2
+
+ u6bGxYykyCgVMy0MHfC8aiCaam2prFiJCWkYOdWm+MI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/subtractor.rb
+
+ hash2
+
+ neep0A8nHEzicoBAZdKZbLcxuCjFT3leeehWNu+eF5Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test.rb
+
+ hash2
+
+ ltF74nTYYkNc0GilhNzm+TsAbnmX6Y5XFc7jKAKzv9I=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/errors.rb
+
+ hash2
+
+ 0AVdYRfC7CA4UnDEkZ4CerfaPVlLJ+pzWZTdBNcHtJE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/guaranteed.rb
+
+ hash2
+
+ URgyXglXTPZlXFQkHif9wcGmxbtoqLzjAYrV5sH3bN8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/hook.rb
+
+ hash2
+
+ e/ZkHfBDSt/dPT+zjHfBaXrjwn/t4o1DKFtdVtXMQ8k=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/observer.rb
+
+ hash2
+
+ sTs7C9D5IPxMjGPnsUBZelxpTTesViXIhZ5vIc8Ospo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/setup.rb
+
+ hash2
+
+ xa9zQ7cRCPaEJAbPIob10BLBwTqdoKO0tKvybj3W7fM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/setup_helper.rb
+
+ hash2
+
+ tpE8eWB9A1tsk8J9016oOn4L4CMw6VslyxGcdC48PrE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/tester.rb
+
+ hash2
+
+ 9iBhI/7NQkC+PPvbZ0PjRbBvmVtM0V5Vj13tbFvmDKA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/test/type_check.rb
+
+ hash2
+
+ +CY3jaifKHHX2qd4Fp6uz1TAyyVyfEGPRZPzsuWsB2A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/type_alias_dependency.rb
+
+ hash2
+
+ nFW6AyT6AMpc/LAgJFP5ROEguYbwtV1iasGXaxai2Ao=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/type_alias_regularity.rb
+
+ hash2
+
+ bFiY7M4sn8bWUR0duKXQ6Ym/nzy/2ilpTCqgBi4t+OI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/type_name.rb
+
+ hash2
+
+ iEekyZrQolgVv9GTAMqwOEb2xLyOEpe+m29viheAycw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/types.rb
+
+ hash2
+
+ WlB4VTDoJJnlWu1X7EGSsiZwgCZTwm8qCFPr+vDxXsY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/unit_test.rb
+
+ hash2
+
+ QQ6tJsXgLjktc2dgJfqmH1PH2cyzpA8oG+EB8hxNpdA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/unit_test/convertibles.rb
+
+ hash2
+
+ B4hzvOwqmSjXIZ8AJQvCd+HTL8V45m+PJt/8JT0YYaI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/unit_test/spy.rb
+
+ hash2
+
+ 9KoH0XZjcmrtURdm8EK+Iaf6qCkr8Su/l/lcCIjie7k=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/unit_test/type_assertions.rb
+
+ hash2
+
+ DcQ2O5x2e1gLKSxLw43Uv96bPi1YTXi3KIX2YFQ3dXM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb
+
+ hash2
+
+ 3qrWe+H+EB+ueGXePujSMRPRRDEgmogwIzLOEPUfcKI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/validator.rb
+
+ hash2
+
+ LPvFSs+c8tOrYxYyadA+98sJo0riVM5TQyp1OSr0yy4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/variance_calculator.rb
+
+ hash2
+
+ OKVbKw7mHKmBhtfM/RnwTnOq4dV+qNA/9kFmLbFzVIY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/vendorer.rb
+
+ hash2
+
+ /GH+9awjXrlhyOII2WfOWEetXN5Ibd1RJunk03dig70=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/version.rb
+
+ hash2
+
+ 96ei0TLU+X8Ui4gG+WlA+h/pj45EHDzz3vwr0+nF/CY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rbs/writer.rb
+
+ hash2
+
+ 08rmFE/QHRpjfUUU1mPJzLVbBiGZeVRmfROwu88gwH8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rdoc/discover.rb
+
+ hash2
+
+ 3j/VIeIA8E0lvc4+FAPoF86qYDwSaC5LFLawFh+uvqk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/lib/rdoc_plugin/parser.rb
+
+ hash2
+
+ FSf6ODAdVeHWsC2J95IWu8oQfUCD5IgFVzYEojugsyc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/annotation.json
+
+ hash2
+
+ gmqsRsM1uqEb+3c3T8tJTHXlyZnTE4CIB4exRtFManM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/comment.json
+
+ hash2
+
+ Efs8q0U2TIUEy7IEJdH0tbuUkcZAD3Qg97BT//E0iXU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/decls.json
+
+ hash2
+
+ Ygk995UO5D0bMfJbGqxFE+edSdVYsv870HTc9Kbrw7k=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/function.json
+
+ hash2
+
+ FC95q/8WEJJ0JzjMFHMdS1zWwdpJinE1aL2QQ9IUs6Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/location.json
+
+ hash2
+
+ SS9z4DMc5rJk2ELRTfPg1PxrKEeENwpVEXr0yj3tmTU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/members.json
+
+ hash2
+
+ FRKdugvrRSFwlSOdFwM/gtYMWUl0/dePEfsJN0bkZbk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/methodType.json
+
+ hash2
+
+ US7ZozK+TuVTZOb0JIBDIevF+WudXc2lJ46yX+nEPq4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/typeParam.json
+
+ hash2
+
+ pAr9LpDLfC+ZJtWGuafo9gMwf7jQuVG3mkfEEYldfYY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/schema/types.json
+
+ hash2
+
+ W9N5wO5N1L5FaNFCEq9mvYzwLhTxqFidC5S81IVAkZM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/ancestor_builder.rbs
+
+ hash2
+
+ hxCbFVa46kshMZ4Nx4XKjRCTL416UTqhEIG2PUROCo8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/ancestor_graph.rbs
+
+ hash2
+
+ cp555+QbA+ZyU/OtW4NeqfsDWhmvcXlt9/GxdyD3i8c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/annotate/annotations.rbs
+
+ hash2
+
+ cYSkHU0VAcc0gLOBAXz8jv1BapDa+CxTJ4T/5m+7aX0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/annotate/formatter.rbs
+
+ hash2
+
+ FMyWyRXXY8ArKOTbudSAkel90cCArD6N/B5fI4q+fhI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/annotate/rdoc_annotater.rbs
+
+ hash2
+
+ zi3afezo33jYSMp44AHUaR4+xsg9kVB/2l9nSHG+EYU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/annotate/rdoc_source.rbs
+
+ hash2
+
+ +Ef3/pvedvEL45ZTM7uyBxgn48SU4QQrUvb9NTIfxdY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/annotation.rbs
+
+ hash2
+
+ edcmofb7FNZkndUSMi8V1A2VRJorRD0Cu6COAQbUPdg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/buffer.rbs
+
+ hash2
+
+ d7Rb9DAFBiO/IhHTfXpLIoCF4GrcV71NL1kiL2HkW7A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/builtin_names.rbs
+
+ hash2
+
+ S++mHmhJAcdac+eKMMgKIjJtMS1vOBHOwADytaEf7gY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/cli.rbs
+
+ hash2
+
+ GeQK4wXQQwB1n7Bd95EdfvB4kjxuuel1VSb1TMtLlSU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/cli/colored_io.rbs
+
+ hash2
+
+ BGf76tXMwgNCN9KmI2+W62tO1EM0H6DL7KdGa9wygFg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/cli/diff.rbs
+
+ hash2
+
+ S7YgUNiSBPU/cxZq1/ksRs4NErRObPDuiSEWW0vpOV4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/cli/validate.rbs
+
+ hash2
+
+ k7MWbt0anaNCId4SMzw9dQp1hVuhQRZt7XNabUft4UU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection.rbs
+
+ hash2
+
+ ENHjEnld+7zOQ+n1pGD7AdseiGqlUz+Tx1BiSUIiqgU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/cleaner.rbs
+
+ hash2
+
+ ETAv/w0IGnSUvNgqjDCneI4prrl57xkRDaqLalCtkAI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/config.rbs
+
+ hash2
+
+ sUalsEGQgmH5VbT5vToha0bZKrD53qJN/yEojM+E+GM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/config/lockfile.rbs
+
+ hash2
+
+ yhEQTAkvIkmWLFsRcPjt5SaxMBfXAF8XD3CxKjPsqoQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/config/lockfile_generator.rbs
+
+ hash2
+
+ fZS/FgbAPyF3ktVMti8SS7CPgPOBjxugJt6DkuC1jLU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/installer.rbs
+
+ hash2
+
+ H2Gr3HyDzSlx+KatEkwt7sNGzLgKAVnGj9kFuXcUIlc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/collection/sources.rbs
+
+ hash2
+
+ 8+Fc/MoXgRkMQJts98onGUvPLEwq+h7IyoDUjBeWU00=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/comment.rbs
+
+ hash2
+
+ 9ekqV6wTGGIc1pdsQ7FX4lcqE80+JcIlX0X74Xwpvv0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/constant.rbs
+
+ hash2
+
+ uNiBBYV2XigyOdmPB7MYtwH5r+te1L82p0Eqh8hI2PU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/declarations.rbs
+
+ hash2
+
+ pZv7XDrTG/JGdBwdhc/MPocgLXhlzhkh+8EdeJ5a1VE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/definition.rbs
+
+ hash2
+
+ cXuG9YpO7xPtnhjDlDIS2iPlh01HYYxQjJpC5hJopW8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/definition_builder.rbs
+
+ hash2
+
+ p/62G9FCmpxFSZxIvzV3UcdMNgmJ/xCU/E0qE8UZVBQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/diff.rbs
+
+ hash2
+
+ 8Wav7cjndnwppS0WUJz58zH8mJIrZDZGkngqvd0BzRU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/directives.rbs
+
+ hash2
+
+ fyAPO/M3FHP6U3VTbP3AxPgeMuLDFbUJ25TlUN/MvoE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/environment.rbs
+
+ hash2
+
+ P0yfQAmYFdzb5vuUd8qXFZ6V+X5zMnowzxhzW01hUmk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/environment_loader.rbs
+
+ hash2
+
+ 5JJAdLVmHgJjTq+Ah+GnUZXxyc2v6jSDkTO8eFd3WEk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/environment_walker.rbs
+
+ hash2
+
+ XjLKpdwgNjHm/ZBv5KTw4480bIVuGtfwLdkU6MpdBQA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/errors.rbs
+
+ hash2
+
+ fGEqEx06qyolPxTpNZz36TuCesvVX9fDZxFTHBqKKUc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/factory.rbs
+
+ hash2
+
+ N2CbgKXrA2ZG6No/Q+XxMmDWkW5/9EOldS7VmPgCZEo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/file_finder.rbs
+
+ hash2
+
+ OkFBkH39xVILIxm6x+DN4Dl3KJ78XMZK6puBpvuVtxk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/location.rbs
+
+ hash2
+
+ Mw9VVYCutElbNkQyujfBgHTTxGST5l0keWrAlNYkzL0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/locator.rbs
+
+ hash2
+
+ Lvk7AXh1e77H8dU+mGXq3rW3OPe6lwMSXQlQ5vhtj8o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/manifest.yaml
+
+ hash2
+
+ HwIJO6UOKNsLVRo2KF5tVMJkry7P6f6QcCDfEgswRdU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/members.rbs
+
+ hash2
+
+ 9AtAhtTvF8c5WqwHz7vpLTxzlI3FbO9jRaFgaFw3D8Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/method_builder.rbs
+
+ hash2
+
+ NV3eF6cGeZymw/+sOKYOoBKmw0ThX0yJUY7qHOYnGeY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/method_types.rbs
+
+ hash2
+
+ O1pqLKsSkJ+ipifX4ovyA+6AR7a3nLNIx2vGduMnVLQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/namespace.rbs
+
+ hash2
+
+ q26dzv/t2HWR8eQ/UT/oP8DJbqIhvBkZakf3Tis7RTM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/parser.rbs
+
+ hash2
+
+ 2LZnQW7FjWSQER1Id1+R2hVY/RsEFwgItJS69aBfjMw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/prototype/helpers.rbs
+
+ hash2
+
+ H4VzPsHkcYHklYjtIOvONC4KX8VNCdvt5F3WCshoTbg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/prototype/node_usage.rbs
+
+ hash2
+
+ nUgRc57cLCQzoZDolgziM5pBHEktMpIbowgEo6bM1A8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/prototype/rb.rbs
+
+ hash2
+
+ PD/M+phhJfWwtV/yU8NOkOVJAIqx8s2HDqqKMjTvEPA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/prototype/rbi.rbs
+
+ hash2
+
+ 9cB8qrjNlmCESnKf6Y+t9BLJeO6GiwOUgGdF1GK7Q0s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/prototype/runtime.rbs
+
+ hash2
+
+ ucAn95OmxX7HLLmRjcOLDZl8xuSD3U6Gk4a+pO8CwEk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/rbs.rbs
+
+ hash2
+
+ thsVaLjJ/HTwDlJx6MODTa4wYORejNHV+gVFidJKFZQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/rdoc/rbs.rbs
+
+ hash2
+
+ yTzq207d+SkSMWOR6cT5DywzDBqzZM0pjnOo+QfTjdk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/repository.rbs
+
+ hash2
+
+ dvM2pDD9fIYN4RjoXpf/n81Z8Q7ZTmst1wx8b59ZorY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/resolver/constant_resolver.rbs
+
+ hash2
+
+ c7lj6ckM3r8sS8mea58I4uB4+kjfW+8lLmaL2rftN+8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/resolver/context.rbs
+
+ hash2
+
+ j0/E3gediUy5PUAugqM00I60P3GRq4fYeq4VfAWhLGI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/resolver/type_name_resolver.rbs
+
+ hash2
+
+ NK94a9j5FpVrUH4Uzlfzl1YnDSfxuXptG/svDiPuvfo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/shims/bundler.rbs
+
+ hash2
+
+ h3HGUvYQmlDOjt2JbrxZnQJLYb5rhRGZ1ShchJb+KJU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/shims/enumerable.rbs
+
+ hash2
+
+ ITdwTuh67BJ5k7RW68cvxdl9P73912d+OfFCW/D9fjs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/shims/rubygems.rbs
+
+ hash2
+
+ Sdj+jtuotKH2A8blMohhZiN9vAa2fz/1KKjwzzslJmo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/sorter.rbs
+
+ hash2
+
+ 4NC4ia0dT4nI5SAFtsSKIlRnHgZJT+uKHI4nkohK6Lo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/substitution.rbs
+
+ hash2
+
+ b1ASTB3rA/Q15QMsxQLCi/5nZFVz++cMK+Z+wi4s6+8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/subtractor.rbs
+
+ hash2
+
+ IJ0W+sWz4preyPVVzlqIhmzW596Q/XdATxiRZG1+5nk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/test.rbs
+
+ hash2
+
+ pdhx64/vE+IGY+5/c0NirCdkoIAJRYBWI87wQMIiMbQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/test/errors.rbs
+
+ hash2
+
+ 31CpCFcHCal6ETi3ehIIpu++Jpah4nmEmbmN8h6Dzbk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/test/guranteed.rbs
+
+ hash2
+
+ VeySLuLZOo1me+rdZj0sEQ+lVwHMZ6tiBQD48jFDeU0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/test/type_check.rbs
+
+ hash2
+
+ iRFHZ3Y6r/zAdFm9CcbNeCLzoGTQA45TbD/aaoSv/R4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/type_alias_dependency.rbs
+
+ hash2
+
+ +q6IEiH1+gwAfUp9x6b9jLYjwV+djjKCU1QC76AWh2U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/type_alias_regularity.rbs
+
+ hash2
+
+ vYekQ1V2hWGtBggq53yzuKnrqpLyOQUz7xYD5w3j/s4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/type_param.rbs
+
+ hash2
+
+ QeWrMxSZpwRvy4AHYw/NVZjsU3XcqMzamqRurV7MtFQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/typename.rbs
+
+ hash2
+
+ Q9X60JshVF0BXAwVTLxk3tOJKroAvFhD3tnLQ2cjksw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/types.rbs
+
+ hash2
+
+ lZ2gaemBTbS36pBAbW7zRhqSkdlxZQ34797g7wUuH+M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/unit_test/convertibles.rbs
+
+ hash2
+
+ 5ABp+ovafZKJEviUYtpCDEuGUD+HT5Vy79QfgtaY+0A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/unit_test/spy.rbs
+
+ hash2
+
+ NJCanL1J1hF+Ak13BXabfL8IqG3a9W+1/VHDeveBPX8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/unit_test/type_assertions.rbs
+
+ hash2
+
+ ETWEnkj/m8rZPqqBNd5K8BestNtxQ/xIRBaAUmjhRuM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/unit_test/with_aliases.rbs
+
+ hash2
+
+ 0DRgtOaxri1ucFeHzUzQbF+ISBxb+MX+p8QtYK23l3Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/use_map.rbs
+
+ hash2
+
+ e/AZoZGLWghcntqwFeMOle8QIrls9ElEDR4NMjjUaZg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/util.rbs
+
+ hash2
+
+ lkt4MYpoqehHUSJMN8vmiSZo8e2S5WLDh3MX4t2DnJA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/validator.rbs
+
+ hash2
+
+ CqpPsimELvvkVfaYWyc9idVqMk1EwB+fWpfUVt9ZHTQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/variance_calculator.rbs
+
+ hash2
+
+ fpSRKdhlb6eWlEnA+1EkLTosAiIf2cjL1DYVDTTAyaA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/vendorer.rbs
+
+ hash2
+
+ IEcWFV4dyPWkFv/mCyT0uEPuso7dCVymdRljk7P/0L8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/version.rbs
+
+ hash2
+
+ t3Lv2X34dl0l3YtQWBkbNkKFfNj7LbG0BrYQtIqK6Eo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/visitor.rbs
+
+ hash2
+
+ SmyAfKXTh7rUUUOZUFwdgIHCt347xmIHDmkJejGp1kc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/sig/writer.rbs
+
+ hash2
+
+ AB24JSvwczo+NdgmIqUa7z3MvTFmwjhIcHlgAyTY1nI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/src/constants.c
+
+ hash2
+
+ 4Tks8Ee2zNMqJHrUOuUrLB50E/PdeX0MjB7CuEcDfoo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/src/ruby_objs.c
+
+ hash2
+
+ mY2pFs4eeIkhC6EZSnzO+gwP7zASBho0eQoFdSCwxLg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/abbrev/0/abbrev.rbs
+
+ hash2
+
+ EpS+6dvu8pJ5g0Y9ycYUcdgLftPHbLdCWC8ld31QZso=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/abbrev/0/array.rbs
+
+ hash2
+
+ LDIc7+fOvAIu4MddHFYH7u8Km3D6ju7GWS13JkdeBIc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/base64/0/base64.rbs
+
+ hash2
+
+ vuowF14kTi/k7ir1l+wwdFckPOdkWC2gpf5HUJ7g+vE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/benchmark/0/benchmark.rbs
+
+ hash2
+
+ pV+cs1hPl3OYbqjSE7kaINyFmrNwcNwkUaI37VBXvWI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/bigdecimal-math/0/big_math.rbs
+
+ hash2
+
+ g/mQeVXjJDKw0Y5VvtBMBBS0R61Xlq/sNLr+0QFxz9c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/bigdecimal-math/0/manifest.yaml
+
+ hash2
+
+ xgYXH+2dT4wxoDNPfkLV5l1Bf9NG9gUkVhX9IxZ1tDQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/bigdecimal/0/big_decimal.rbs
+
+ hash2
+
+ 5EcxOpNOZHTPB/dZAOBTBxJGw4Srn0IMIWxSxg63b1c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/cgi/0/core.rbs
+
+ hash2
+
+ ID5iGOVoFtWjtJWVrD3V3oZyHwbdzNIlJ1JoMglOFYc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/cgi/0/manifest.yaml
+
+ hash2
+
+ Ir94ufLSO+n00qVaxfY81XjI3FQPUn6eSoWZjnu2KVk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/coverage/0/coverage.rbs
+
+ hash2
+
+ NhuvmUvyPgOpAlWzDlwm3Rz+I+I4eJp2KPqMiYIBy6g=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/csv/0/csv.rbs
+
+ hash2
+
+ L7uZlKdjQfWKB1EVwGDpYBVtsqjazFdWCHQdcB45j8s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/csv/0/manifest.yaml
+
+ hash2
+
+ WEHi5aPJ9t3PsDYFwc3eH5ZLrG3a00P1zFfVJm7SLhA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/date/0/date.rbs
+
+ hash2
+
+ BTgf9qPxl54GPHHtt7DaTh4KwrFqqLXm0XMMdvQn6hw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/date/0/date_time.rbs
+
+ hash2
+
+ MZATtX2ykDGUl+w7GBw417zk6kVAgmSAC8FwQ0a2KSc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/date/0/time.rbs
+
+ hash2
+
+ FtZuNnBAF3wPknsfmbVNlpooOpyEkL22dZYAPZzoiTM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/dbm/0/dbm.rbs
+
+ hash2
+
+ LA3dSqNYtyUbI0P2ihWfNpQzQ/M9VOg4wWEViyx4m98=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/delegate/0/delegator.rbs
+
+ hash2
+
+ +mzkctVXaN2gBw+yFEAU66tuvOVbq6YwEqr2W+/TRh4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/delegate/0/kernel.rbs
+
+ hash2
+
+ RLN5mzxq5PEPVtpUNtHzq+chiZoA3mtEhIwhDpYPy8E=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/delegate/0/simple_delegator.rbs
+
+ hash2
+
+ P28TVfj2mzmQrKLoyLrBiLhkQ9qkvcp4Ok9OPwM2VOg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/did_you_mean/0/did_you_mean.rbs
+
+ hash2
+
+ IRzXrebw4ADRIgZ05NxvjixKmdU77IzvlY+g0EJsKBQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/digest/0/digest.rbs
+
+ hash2
+
+ wpyei5AXO+TmUwqBnkRyZwsJX9UFvgnZFnycnfZfcxw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/erb/0/erb.rbs
+
+ hash2
+
+ lzCjhxhI7WB+5gTrt+lhimJif76DvmeCb9UMjy3m3QQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/etc/0/etc.rbs
+
+ hash2
+
+ UqgmtSimqnd+fIAC0kiyckZOZvn9rC7d5yofZwjE7AY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/fileutils/0/fileutils.rbs
+
+ hash2
+
+ ntgIEOP1D0eOfMLiGntmdo/Fxpp48WjuTGkh2IS1aZM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/find/0/find.rbs
+
+ hash2
+
+ QE/rFfODH3XkWrel9UQzYzA9QstjEC1D6YSMCv75pig=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/forwardable/0/forwardable.rbs
+
+ hash2
+
+ +voCYL5FUtwzWGfgJ4RcMlg2KiSv9c+F5xS7iYg+NTI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/io-console/0/io-console.rbs
+
+ hash2
+
+ BfYT+81FsyoVO1PqUEbYZHAxOj6Yh9cvSUscoN0i1Lo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/ipaddr/0/ipaddr.rbs
+
+ hash2
+
+ TJy28+UJlTpCx0Gww2K8tDtCmGoBXam942BLYk4wMNg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/json/0/json.rbs
+
+ hash2
+
+ zVeH4CAXgldmSt3cN3VQprWmax4sA741B4BFUqOltEE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/kconv/0/kconv.rbs
+
+ hash2
+
+ 57U2cKeEu4t0jYX7ScqwMGDtXQhrpJTK5S9kPO07hO0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/formatter.rbs
+
+ hash2
+
+ IHbfbj+ZnSe1K2VFLW5NpnZtRqrXGl1rTsEtR9IoJuE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/log_device.rbs
+
+ hash2
+
+ D0wNCXZMZyKxj6mJDVKBr/ZzlWblK2tJzIBDHwH6u9U=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/logger.rbs
+
+ hash2
+
+ 6o5J4L6fc1p+poTvcyqKGSlh6g7Y1Vkd0/NTWM1sowU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/manifest.yaml
+
+ hash2
+
+ U5xXqe6R3KvtC8iB/HmcjhQ1axHNpy7loy3gUwb5uVU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/period.rbs
+
+ hash2
+
+ fiJSuhcwYd5pYJn1FH0o0kZOY/8yNR5yADJwkNSJ/DA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/logger/0/severity.rbs
+
+ hash2
+
+ pzJj/rD37yzO2V9XV+UD5+gW/b0siz/NxlBq0u0BsNc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/kernel.rbs
+
+ hash2
+
+ usR/sr1J3WJ48lGrtRSwjSEYfzTXpj5xibfBXK3CvIQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest.rbs
+
+ hash2
+
+ z2rF+4YUgd9pc9G3Dh1NDM84aLIGgeQ677xmI1us0zE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/abstract_reporter.rbs
+
+ hash2
+
+ COtq0QgJ/Lpdso5D+MVC3EYS89Cw0X7Qto+G39YrZpI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/assertion.rbs
+
+ hash2
+
+ O2jACNMQDX02KA94o1YIloqalgEY2tuSzZLZWgyjaFA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/assertions.rbs
+
+ hash2
+
+ RnYFIKpUMwFUMFmUrSM7kgKqqA4BdDJ+bI3YSDyiRMw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/backtrace_filter.rbs
+
+ hash2
+
+ 48cyiuN4i7ngMN55B8CShdUnjJgLTLgs53jkJfjExZo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/bench_spec.rbs
+
+ hash2
+
+ mhj7j2VecapcFa/ThLJ+4ZYFS9OoOif4yvxNT63Aa8A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/benchmark.rbs
+
+ hash2
+
+ ZqllcOtNudXY/Eu+k8CjR9T37PgWUzvsfUjsOessTHg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/composite_reporter.rbs
+
+ hash2
+
+ 1y7fxt71rmez+n0vKk71M1nSJ9xnW1zA5RGxdO2I3nE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/compress.rbs
+
+ hash2
+
+ +Q3A5YSwu7YmC9fvpZQDbyF92tqQVq75vb0KH+/9MAs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/error_on_warning.rbs
+
+ hash2
+
+ WhAu8uQcrwK3xN6QvRZ8Gnwbkh5sW0ZUSEfvsZnqL84=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/expectation.rbs
+
+ hash2
+
+ x7hZXBUzchTVpVN2xvZW8vr+tT7Ri8+AjFWaoV/COmA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/expectations.rbs
+
+ hash2
+
+ PHEgRTYeDwAn6N6/CHNCuZMgTSFqiiOj5khdUsDQP3w=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/guard.rbs
+
+ hash2
+
+ qvcVemdBtIdJF70BHNcay/ozKWZm52/CgTN1zk1BsJQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/mock.rbs
+
+ hash2
+
+ DTHAj/qqTrKVAGhjwppJ/46sb8zEFuwojUQiBsDgGHQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/parallel.rbs
+
+ hash2
+
+ qa9zoj2HxVvkgJ10U/nNKjOvShNdH3DP8wc3Wi02jr0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/parallel/executor.rbs
+
+ hash2
+
+ LuE0JIpIGfV1JI0gPdXRt9MljXvRhIWnAiqDQjL74NY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/parallel/test.rbs
+
+ hash2
+
+ Tvpd7Y07PMG6aD710Q6uE/Ck4vrWEK7wi1e12dCQvB8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs
+
+ hash2
+
+ Mej4zxay90539YKZi81THaL9ef88JMjByF/LCZhNlYg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/pride_io.rbs
+
+ hash2
+
+ n1+wPpN+uVFjT1r2MUAVap9jG7VBRS3Niwi4hM14Ask=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/pride_lol.rbs
+
+ hash2
+
+ N4IbT+vMGSdVzEzIqZ9c8zj4ZYmoYtoCXTbePQsQK3Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/progress_reporter.rbs
+
+ hash2
+
+ 8te822oDtpmfN6plp+qPCg50Wf7F60nYpzDYukbUDO4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/reportable.rbs
+
+ hash2
+
+ 41ip1+GgCdDkNmDr8XH9QY6mR3DRI0oMpjJ0trr05X4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/reporter.rbs
+
+ hash2
+
+ TdAdJFEw5DYSPfYtYKo/UOPj3z7iuQrt2/EdIkWNbcg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/result.rbs
+
+ hash2
+
+ zMDNtKQtFKV1FIsjYBY3KYNY3VWtMmr1O/DqUdshDZk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/runnable.rbs
+
+ hash2
+
+ /FMZMvorqHwDzH/YzNIf8mn+MsJGIBgNwvrQbclube4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/skip.rbs
+
+ hash2
+
+ fs+V23xNKbRl31lLobkj1hjhbqWALqolApd7PZ1einU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/spec.rbs
+
+ hash2
+
+ cYCFlmEm4F4fG7dWNEO03MnDuqUpKCOneWKX+p1pKbk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/spec/dsl.rbs
+
+ hash2
+
+ 2sFb7ViagVZKKqDqrDwZz6KI+GBQET9msqsfFkMAKek=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs
+
+ hash2
+
+ xlCo+2v/6tRC2Wgkhvj9W+vxgw/0BkLMpOd863MtPV8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/statistics_reporter.rbs
+
+ hash2
+
+ ayeicGu4TbyKlY//4Xrqjd6ORRI6NG7+PTg4M91NxBU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/summary_reporter.rbs
+
+ hash2
+
+ 6JZnPIB5NEK/4Cl08j/nw+JzjO2IElLMeKiWL4AYg4c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/test.rbs
+
+ hash2
+
+ kHvFktgRTRi3+z6ka5raDS8whkou2kNoLSVO2XgHoC4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs
+
+ hash2
+
+ MTTV6jijKcwYDjANTs9AktAGVQoxyPd4yGqFX0aHsfQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/unexpected_error.rbs
+
+ hash2
+
+ W8Fp+eVivx0RT6hxKMuQVjC9aF4sXIdgNXq/YSYp4Gg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/unexpected_warning.rbs
+
+ hash2
+
+ welXLVvL71fmwYABljJUaomeqAhkUtYiYdq29OKusd4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/unit.rbs
+
+ hash2
+
+ fbcJac1KOIJm5tfOlWqp57lyYRrNGBLU4+pZT8NVHQM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/minitest/0/minitest/unit/test_case.rbs
+
+ hash2
+
+ Kiqs39IhgZ8SD6TxcJMcSBqIdjpJZ6vCTxtiTTIavwE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/monitor/0/monitor.rbs
+
+ hash2
+
+ gdhmmXZu6AdVGvmyvErewHwVlaUi59xMHCSb1dIRk5g=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/mutex_m/0/mutex_m.rbs
+
+ hash2
+
+ LnX2uRlX4nGBC4XwQKAoHArTh8M55u4hEpRZBXP9nVg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-http/0/manifest.yaml
+
+ hash2
+
+ mK1jxKIO9NCIy9nXFA4n4lbjpxDvhDprjfLR/EpqnZc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-http/0/net-http.rbs
+
+ hash2
+
+ BhyfBVFp0nfuJEtceXQVooxrJqZbyCIbkzRRCxYKxcE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-protocol/0/manifest.yaml
+
+ hash2
+
+ 3MUoFLTSVB38peWWWt1xwvepe5N/LjZJgdCmoFp7z3M=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-protocol/0/net-protocol.rbs
+
+ hash2
+
+ XzGPQHGDauLgIi5w5yT2t8qml3lj7q1ql7HsIc6xw4s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-smtp/0/manifest.yaml
+
+ hash2
+
+ WSQlrEVnGipMyyIRv2BeWxKYXSUsXlJZWqAAmmyydvI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/net-smtp/0/net-smtp.rbs
+
+ hash2
+
+ KCfMLEW+6WzAWN8PYBzKZ3UpvR9Ibkyynf/DOyG79tA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/nkf/0/nkf.rbs
+
+ hash2
+
+ E1vW0J54Iamu1TR3Kvg9sfmO86kDdMiR/Pg/YTZxjOY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/objspace/0/objspace.rbs
+
+ hash2
+
+ yzHj8/ml/ChSkPXjG8cUAW/X7qFFPj9QIopJyeFXZyI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/observable/0/observable.rbs
+
+ hash2
+
+ RRfz8hVNgS7vpFtx79Jo+S+IHxqSWzTuv8szD0WmpQs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/open-uri/0/manifest.yaml
+
+ hash2
+
+ Q7OhDWEHFc+K9XY83ZUvWXIQABbsybVGclooAKR6olY=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/open-uri/0/open-uri.rbs
+
+ hash2
+
+ W4in26qx5f5wDeMEZIQm78Y4BJ9vG2NiC8UWwubzWAM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/open3/0/open3.rbs
+
+ hash2
+
+ 6ibS3ggVUk+wGHymKDzI4hEcRmCCzsXlySm30/x+lW0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/openssl/0/manifest.yaml
+
+ hash2
+
+ ValN4edIlg/FbGLtL+r3eLqY1+CXYN+mRULFFlJMOBE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/openssl/0/openssl.rbs
+
+ hash2
+
+ rwsrsjttbh3ehhnmYNAOatQS6HvBUBDi9nv6/T/w0gQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/optparse/0/optparse.rbs
+
+ hash2
+
+ 1Y3a2QtRiczXrJSHpqjv9mv9ceu3AvQAOdksjUkrHgo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/pathname/0/pathname.rbs
+
+ hash2
+
+ HeQkVC4l6smi6+OSNqNbMS3zoTHF4QHcW7BpObWgD3Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/pp/0/manifest.yaml
+
+ hash2
+
+ geIZvKhaKcNSjsUfe0SOoQpqMwkufYIkMK7tj9YwmF8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/pp/0/pp.rbs
+
+ hash2
+
+ /sp8NbmH6dmUbKZw8KVKcaL0ybdzPlGu5f+PDmnhKh4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/prettyprint/0/prettyprint.rbs
+
+ hash2
+
+ R0Xid8g/yybSt10Pi9zOLfWbYkhLp5N8MZXV80fBruQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/pstore/0/pstore.rbs
+
+ hash2
+
+ XLtw2o4dUF5Z5aK9yavK9Vin8Cv53vivCKM3/aZP5Kc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/psych/0/core_ext.rbs
+
+ hash2
+
+ cpfxX1CBNi97PpIBUWQGZAHrfWoCc3Ahkb4tSZ1spKE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/psych/0/dbm.rbs
+
+ hash2
+
+ C+Th0BF19cPBVcZI4IgU6gg+MmnpQtV3IYRpyML/Los=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/psych/0/manifest.yaml
+
+ hash2
+
+ w6qExwvsAD7kzsLckp0Cey5VRxmNbpsC3/r3dFPOWME=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/psych/0/psych.rbs
+
+ hash2
+
+ k+FQJywBNBL4Moy0mQLG7qA7PZxSQAilLzUNSMk6w20=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/psych/0/store.rbs
+
+ hash2
+
+ 4y8PsJlYrSJKDJAHVoksmNqECQ1NV4vPKHrlb2XX/3A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/pty/0/pty.rbs
+
+ hash2
+
+ rAAkl0Dw/53qnuzEoU+fZ8nJsy7Y/4ZB2Wj+iRCcQlQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/code_object.rbs
+
+ hash2
+
+ zR5uiEfcgx+lPlUbiMQ5DXPewt1X5zAIl9wS4Te0aaM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/comment.rbs
+
+ hash2
+
+ 3Vpez0JBld+lLw5gXgBvWPrNFybnTkzVFHUaG6aXebo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/context.rbs
+
+ hash2
+
+ eVgI2kTjPS/Vgyvo4Msq26j9ROxAU71OATR3b+P4t10=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/markup.rbs
+
+ hash2
+
+ bNreDF7anE12u5yfPe26R2Bfye60WiqNkku0YD2cx0A=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/parser.rbs
+
+ hash2
+
+ 202/3rdsGfK9vgvoAGYuCbX3B4ZGr4Q+Zbngavnnt+c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/rdoc.rbs
+
+ hash2
+
+ TdFhq98ylcPyrC1A5Qypu9azmvJofOGKz4VWrXKnVek=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/ri.rbs
+
+ hash2
+
+ URJlIMMhSI2WB4fotkHy9V5G5lmSsvgJy4W8iG7unN4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/store.rbs
+
+ hash2
+
+ 7jQ51sDdJOw7QuNF91zX8lxGgOdaJRQsJ9HweRhiEOM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/rdoc/0/top_level.rbs
+
+ hash2
+
+ tSlZ05VCqX0insmz4qXDMKon2yAw8r+vFmW4mQ2XFmw=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/resolv/0/manifest.yaml
+
+ hash2
+
+ jBamj3z9KVi2achzSqEMF5V1JBISln+xowN7gQ83tLo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/resolv/0/resolv.rbs
+
+ hash2
+
+ jnIRDTkoZF/BP8zDjH/bLroyYM9m6WugVoReedhWxWM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/ripper/0/ripper.rbs
+
+ hash2
+
+ xrFZ5RGZQhah/v/2tbBd0UkBLiUiz9tZkoVxVoebnVs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/securerandom/0/securerandom.rbs
+
+ hash2
+
+ jpGwXwqY8cjxbjmevj2CGXQz5h1/NyZIqCrwzmgJNO8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/shellwords/0/shellwords.rbs
+
+ hash2
+
+ jhKjk2a1VUfB13Ho5beTy5fLRitKDtPUcA6xw/ibO7o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/singleton/0/singleton.rbs
+
+ hash2
+
+ 0knXT5Lq8Mk6tq51TVqSFfsVGGb6n3OtrATROvYstzE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/addrinfo.rbs
+
+ hash2
+
+ ikvzepdnfz/n2qFYERGTHgAex+qL1XS7TmOSpr3I+Hk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/basic_socket.rbs
+
+ hash2
+
+ 1+RTlbYMhjpt4JhsnqYEWGXOkqfI1qQuOGJlUjBiCqI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/constants.rbs
+
+ hash2
+
+ UYGbKyqjVhX4DHZenQqiUzVZP4ikywZ0Q0+MXLG0Vkg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/ip_socket.rbs
+
+ hash2
+
+ 062q1TGs3J0kJy1aAojTf+cs2QfWDrhhk+BvopLIxOM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/socket.rbs
+
+ hash2
+
+ DOaZO/SoB1QZsXiYmb+YONhX1BkqPXvpWtvmfhgiSRI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/socket_error.rbs
+
+ hash2
+
+ vTviPrTY2xyX4kjFWyE0NQtFSr3vck0hTryxlBdFkTg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/tcp_server.rbs
+
+ hash2
+
+ dpuPrZSKf9yzvbRz2gWxk7tAQ4VDC4oA25UfIbZjJkU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/tcp_socket.rbs
+
+ hash2
+
+ bWv6kKsuBZiAcAggIuYKEs1cyV39RjY6P0gZTM068wg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/udp_socket.rbs
+
+ hash2
+
+ ucXAs/Aahn+g3g4CJ6RDeoTCXj5nIQIkwuZP6olSuNI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/unix_server.rbs
+
+ hash2
+
+ L8/rsS9mCTJYEfdF85KAhUNFq15++K7JxZv8D4M3Jds=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/socket/0/unix_socket.rbs
+
+ hash2
+
+ imf5W9P6yLU8Byua/MucviA9IrS7Qyat/edCGXYC+S8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/stringio/0/stringio.rbs
+
+ hash2
+
+ RtDJyt1A/75RDR9NTnPqjXoDfqRpYPLMwBk9BYWFPEA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/strscan/0/string_scanner.rbs
+
+ hash2
+
+ Ly7L+9mGAUE6cxmmHwLnu1jqxHThp1TJpg/PCoa6icA=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/tempfile/0/tempfile.rbs
+
+ hash2
+
+ vQKhB+0yANh1POoQP1y+mvv2uPucjZ7fs+5xkzS3ZT4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/time/0/time.rbs
+
+ hash2
+
+ WAjXvTtWZXTWOvQxw4Cg5vMI0QaouY4EQlejcijbSpo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/timeout/0/timeout.rbs
+
+ hash2
+
+ Lms/oEvf1U8p3AtneMatXLR7fdM0esrcwshwJcKgbU8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/tmpdir/0/tmpdir.rbs
+
+ hash2
+
+ 78HDhZzkqZsig10US1ie5qnT+K4Oqt/1Kh3mwpogwYk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/tsort/0/cyclic.rbs
+
+ hash2
+
+ Ax+2n9EftlSchP+YIp9R0lNEJwXKj2UzdVtVyjCKvjU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/tsort/0/interfaces.rbs
+
+ hash2
+
+ 7YyPSD16U7akvOmYgcwNPWHf85W3YpxWlxL8xs6V8dQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/tsort/0/tsort.rbs
+
+ hash2
+
+ rP4MkPYwk+pxIO5MSSEq+Z2zWs/aEu99P5mWlaVrBUs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/common.rbs
+
+ hash2
+
+ kstxGpyfeQNVFuBHbABqHxUjod9NywE/s/8KxLGm/r0=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/file.rbs
+
+ hash2
+
+ 5zBNDxRRC17pZTQ18iHyxHNFeCxmZjibOnsMwM1MOMQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/ftp.rbs
+
+ hash2
+
+ Pr+SX2PVaqD9ASOVHWO+rxxHKXLi2SjtAb7nEzQd3AU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/generic.rbs
+
+ hash2
+
+ rxg38zX5miQfNGYJ5frlHp0uMgMiwuyBhHxk0BL9IEo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/http.rbs
+
+ hash2
+
+ ctlmIo8Dj/k8d1dg4UYa1uenmdEjVWcHuUtyvmQ5dCQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/https.rbs
+
+ hash2
+
+ 42moSbvqYbOMA30e20JoAsc8t5WtYAfvVgM4bFHDVTo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/ldap.rbs
+
+ hash2
+
+ xSWV7Ef1UVPeb18Pag64M0FfFBcMVB0DnOk9j6lUIDI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/ldaps.rbs
+
+ hash2
+
+ NRD4mqiIH+xJr/jGcui4HpBQcDC7lnwStFH3xWpAcws=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/mailto.rbs
+
+ hash2
+
+ YXURrQ+hd/dhRgW3J10K9WQ2mAdUH+tM4cbiY9GAu6Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/rfc2396_parser.rbs
+
+ hash2
+
+ Jn71epMnRaQ5vfiMxy40zHD+tKGF708cxtciPMlUBPc=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/rfc3986_parser.rbs
+
+ hash2
+
+ 7kNcM3nHIStk4NI0YEXcbd0d6DCrFvmjKgUdE15VdqM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/ws.rbs
+
+ hash2
+
+ JsSa/Tn8kUtq9UTxJ8JTP/t472J93Qti0lZWVeZL+2o=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/uri/0/wss.rbs
+
+ hash2
+
+ KPaEltEFfZouYe/vApljBFP8dyNFyoiEjo9rh08+tyM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/yaml/0/manifest.yaml
+
+ hash2
+
+ qvAcYLlJPZXq5elSa98cab2DY3nMU5n9ttq4x5C6Wo8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/yaml/0/yaml.rbs
+
+ hash2
+
+ m2xXnOeFSfelSkOYiNMmX/SZ6W5UyPWf0QulGs4KWwk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/buf_error.rbs
+
+ hash2
+
+ XWW9uw5RySpmYQ3wV1iPmc0zOCAkhliPjVaAO1qUVYU=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/data_error.rbs
+
+ hash2
+
+ S+sKk6pPoEKznuvj47S2bcUNF4tZug38K4nFxVc3dGQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/deflate.rbs
+
+ hash2
+
+ U7z6G6sIYA6o3TjlwPoljzCbZ8vT8/JoZAB263jCctQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/error.rbs
+
+ hash2
+
+ V3WbeKSUQBxhEJhJgI3561pzfqjhWeLeMQUm7fsxDQM=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_file.rbs
+
+ hash2
+
+ EFYn3uipDBVBHObUrVyEOrIaX171q6lSzKscwwDE0Ww=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_file/crc_error.rbs
+
+ hash2
+
+ KpRCgyXgEb6n+GI6XkGIuJvuLpMZTkOCAHu8t7mAshs=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_file/error.rbs
+
+ hash2
+
+ PI3Rk8qpC7Pykk99Dmthm5qHmEVMdIdDXLPSMc10q84=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_file/length_error.rbs
+
+ hash2
+
+ rltjEAzHudaqdHGmb0+jAmyWUajEMCa3K2GWC2+pMUg=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_file/no_footer.rbs
+
+ hash2
+
+ 0DHJdOsYaPM8t0h0R5PqBHvYugEACFFYEGwbu3ZjWlk=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_reader.rbs
+
+ hash2
+
+ vueSojnaYJvu9BMXX38ptCfMCH9WRoPOe4VAQGdRLVI=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/gzip_writer.rbs
+
+ hash2
+
+ M5vkIu/oJgeaP0rAL5GeFM/MDkPPe3xekhKDMCV4B50=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/inflate.rbs
+
+ hash2
+
+ 4dP410GqHBT7ZAQWA9A+Ko1RXmRDCBQn8QKBR1Rp6j4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/mem_error.rbs
+
+ hash2
+
+ 8WOiY043M4ajnngQukSsjZPJKjq8J0SaAbNwpZ4bNM8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/need_dict.rbs
+
+ hash2
+
+ GehjtgncRd10MdtFiEue0+HMFfjg/pNlxUcKxwi1t3w=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/stream_end.rbs
+
+ hash2
+
+ ZjJyQ+6jY0kvQDRO0GpmzlSV5PXTrXEIU8LA44wNU8s=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/stream_error.rbs
+
+ hash2
+
+ N1AiF16t2UrfCkUcAyHfshBVSuTygb5yyDSyuK2FO0c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/version_error.rbs
+
+ hash2
+
+ TFCRViDJ6xjw5aAaHo0n47GNHz5IPZCa/xg0wBytZXo=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/zlib.rbs
+
+ hash2
+
+ qWgoS5xx0YBrowWzbQbBe+0cYS11wEW/5yZupebO2kE=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/stdlib/zlib/0/zstream.rbs
+
+ hash2
+
+ gVgj2glinigLBUwb5Om7fcuVmiXE4SaYu2fEhUHKsP4=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/templates/include/rbs/constants.h.erb
+
+ hash2
+
+ NlSjMxckbFSIX0s4MPNuLD2gD6UPWMwFACwt6fo7O1Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/templates/include/rbs/ruby_objs.h.erb
+
+ hash2
+
+ FACQVh/4JzXjfIK8z0pfJqAlaH7MOyKRhCEBWmJ6jw8=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/templates/src/constants.c.erb
+
+ hash2
+
+ ynyUx7AxA6x4l/wsysqqcBWgnK0PkqG+eMtXQdkT9Ig=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/templates/src/ruby_objs.c.erb
+
+ hash2
+
+ 55KUK0hJutczs/yPRoIxByT6US5i1/UWmgb3Qymlj5c=
+
+
+ lib/ruby/gems/3.4.0/gems/rbs-3.8.0/templates/template.rb
+
+ hash2
+
+ dt7VVQI4QBr1yoraYoRAt1P3EcMYcoOu+gi/t8yDiPo=
+
+
+ lib/ruby/gems/3.4.0/gems/rdoc-6.14.0/exe/rdoc
+
+ hash2
+
+ 8U9Sey/Jbcz1QLxXzeHBj2ORH2L3zigPuUlW7dQiYfM=
+
+
+ lib/ruby/gems/3.4.0/gems/rdoc-6.14.0/exe/ri
+
+ hash2
+
+ PvkxXWDRbm8ArfpU2bpNUYimoB1mTQ5YOD/Lg/b7pS0=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/Gemfile
+
+ hash2
+
+ JTWVNZd8o4+N7XA6Ifg8j4rFPyhbWszg5e7J20XgM2g=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/LICENSE.txt
+
+ hash2
+
+ OhuQPTk8B6Qq4dmuSYkb6DURe8eJb/rrzC9XktClLvo=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/README.md
+
+ hash2
+
+ ADOx3mpFDMFrU+pDZtZg9u1wcecPU34asR45La26ycE=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/Rakefile
+
+ hash2
+
+ 6N0jtRhkXgL8VsdfU4YCtJxHe4GERvBsY6yIJiviTGQ=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor.rb
+
+ hash2
+
+ 3MbRbMXqUpLc9N/CLLvHfQjxRcBqxoexHeEIalSpuRI=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/methods.rb
+
+ hash2
+
+ EhETNhd1GFCORbBC6rkaEQFEucbblAnfKEEXsVmWN08=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/require_paths.rb
+
+ hash2
+
+ OYvfJPRnE7OMXniGJhahKNqNO3IRtLXrqQoAEyBe6ro=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/result.rb
+
+ hash2
+
+ AWjZETI+DM7L/YmzmMomWJu3JGkuXRn0aKbq04IXXck=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/scope.rb
+
+ hash2
+
+ HGE7cT5BKXVzcNVOt9EVg88lAbB0d27OFa7myarO7wg=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/type_analyzer.rb
+
+ hash2
+
+ Yv1QeVRMkxaqfq6LrafY3udShg6NN2Z6W/nN97oZOHw=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/types.rb
+
+ hash2
+
+ FEWqEByuATz4ipdy1JvXWsmqP7LHKW0p0lkkDvAG24Q=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/lib/repl_type_completor/version.rb
+
+ hash2
+
+ Tl7LuZPrcgkhVCywGXnnFjTSnJrSXBQKbuErDllQTBM=
+
+
+ lib/ruby/gems/3.4.0/gems/repl_type_completor-0.1.9/sig/repl_type_completor.rbs
+
+ hash2
+
+ fPqPcti6GUrL94e545ne91swVaJ3hBHeKrOudbthLl0=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/Gemfile
+
+ hash2
+
+ CvsSzbDfHwlNIIRpu2YxbzfIV42xVDPOBVkGaJT1QoM=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/README.md
+
+ hash2
+
+ 5lakQvjQNcUY/noOZUqSTzYqIqazxsu1AYRqOwJt13c=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/Rakefile
+
+ hash2
+
+ XSCrar2Kd+DblPlZnB7gFdtJIEXeUyB2QazpvKSGLyQ=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/bin/console
+
+ hash2
+
+ cWaJs6tvfPNUoWaZAe639oR0x0ZNkkG0Zn/iWvub2xE=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/resolv-replace-0.1.1/lib/resolv-replace.rb
+
+ hash2
+
+ e/y7u7Umdj9w7bcYs5wVRecW5Z2IXsD7JzgOwEswboQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/NEWS.md
+
+ hash2
+
+ MWy/8LTBoQLmvOVld48Fq3ntY8Rf9WF7wKTR0fBOf2o=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/README.md
+
+ hash2
+
+ lhXbTApjEZT38jTMM00OYjQ+ugiwnXGf/c1pqLsQN34=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/context.rdoc
+
+ hash2
+
+ M+Schb5KxVfV84KW8clubrnaT/S42WCIizv9mtKIWJY=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/rdoc/child.rdoc
+
+ hash2
+
+ q20Zg0NreMFLDLgbCfPoe/dp49ookkbhWewFnloealY=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/rdoc/document.rdoc
+
+ hash2
+
+ ee7E/6MCel1QilBHgE3OQ1KuHoiK+L7dN1LXnhSP4iQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/rdoc/element.rdoc
+
+ hash2
+
+ IrBW9oNuZ0wXtNOe5svOUipf0rRT5BkLNx7JA0GdKGs=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/rdoc/node.rdoc
+
+ hash2
+
+ S58udad3qB7wxcMt3lZJhpKCGjMNDtnOp+Q10gnKEy8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/rdoc/parent.rdoc
+
+ hash2
+
+ 0Y8mZeRFV/N/yese26eyD1d1y9tSUX092wvppRIvmfA=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/child_toc.rdoc
+
+ hash2
+
+ NIc1VCAz4oK1xFs+K+FsjKElGtVsXrani9xKWwqOUA4=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/document_toc.rdoc
+
+ hash2
+
+ BeE+c15QWy/0V+c/mVKiDW0W5QjQdWk+gWNFFlb7Y8Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/element_toc.rdoc
+
+ hash2
+
+ yHg7rwyb2Gb8AjzuBMjJfm7SZcLLdexvKtHyqfAzM6g=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/master_toc.rdoc
+
+ hash2
+
+ ltSoNFlsInB3u7hB36hJv/9iM4SKJVv4z/71fHEHP8Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/node_toc.rdoc
+
+ hash2
+
+ WpFAr+EUxUabj2xPbj14T++kuJWiUtqnig1dv/nmHO8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tasks/tocs/parent_toc.rdoc
+
+ hash2
+
+ CGnOthZDCMbzZhptsncgQTirMm56ltRERTg8xwJHKJs=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/doc/rexml/tutorial.rdoc
+
+ hash2
+
+ Yz21VCTw7u7eqbHach0vD0YIy7OVPotJT9AUNRo5fHw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml.rb
+
+ hash2
+
+ yGSweCrMERS+OAJGm+bmRg6Wa3X/NYypba3kKcVqpr4=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/attlistdecl.rb
+
+ hash2
+
+ h0lHqjCpR6LCUp9Le/Xed891OihOtcI6aE9suceJYGQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/attribute.rb
+
+ hash2
+
+ hAeXG2hmqhoogn76RHJ8jqzZp1oFnlktPnKO/bjMe0U=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/cdata.rb
+
+ hash2
+
+ Jr0WmVAMGRwH1mUVswverB+6zjt3II/hRXH+FgGeJL8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/child.rb
+
+ hash2
+
+ CePtxTVgye7ce4mQd/e0AqUaVnhZM3K4/XjWMBPyBuY=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/comment.rb
+
+ hash2
+
+ xjOu0f7O7QOLIQMkw6fpEMDEY0NDo6Ov/mrXkYjpbZw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/doctype.rb
+
+ hash2
+
+ sxBJY9/thxoV5hYQx3uKviF7S2Cx81z9spoH3Ln3W4U=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/document.rb
+
+ hash2
+
+ l9C2/s43q7a82eg3TAkhrcWxE7ELB85mVY+bmCig0Ic=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/dtd/attlistdecl.rb
+
+ hash2
+
+ SyUFXUDxCTeemmMKHjC/p2uZPqgxYhOs9rxai7gquKk=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/dtd/dtd.rb
+
+ hash2
+
+ sG6FoCzOzB+5huhf673u4Zy0gokx/oaIjjHW6eEQbY8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/dtd/elementdecl.rb
+
+ hash2
+
+ 8jAcGfODR8AnpznMWxM7/rjO9OIc07l5S4WL4mioFSM=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/dtd/entitydecl.rb
+
+ hash2
+
+ v7OTXi/H9avq7A/dkUnowT3u3L/b294BRFBvIYM6mwQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/dtd/notationdecl.rb
+
+ hash2
+
+ YDEad+N8TvAjmyEe+7QosK5CfBqDKJ/XIBALM5+k168=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/element.rb
+
+ hash2
+
+ D43eHlznTX6INMbbJWlAeW4CYGbxrhfV7zwW+sPLmv4=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/encoding.rb
+
+ hash2
+
+ OoE1nLLYNUm1JsEdFuwH2qSpyu+FYywSyRJ34JVgCuQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/entity.rb
+
+ hash2
+
+ r/Qn0pZo7uvq3QHGPVt8UhgEL89hsaustAhasTDmWCE=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/formatters/default.rb
+
+ hash2
+
+ 6ZH6pUwTXq7ni27TZeRRsUVkQALdEN4EtpBfFXkKIkg=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/formatters/pretty.rb
+
+ hash2
+
+ mh1//SjjFm2cEoCykes5ap0v7iFGSpueLw0kUDnWiIw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/formatters/transitive.rb
+
+ hash2
+
+ b0uRteRp/eY/hTJo+DIHhSzmPZuqvHARRA0yzrvx6b0=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/functions.rb
+
+ hash2
+
+ fG1hPThUeiuZ02HKcuZctalaac2N8a5VLWja0zo0+Z8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/instruction.rb
+
+ hash2
+
+ c66N1iD7EHjw4T28RN6lFD5fRF6ELJ+43xKxh1D/wYo=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/light/node.rb
+
+ hash2
+
+ Dquxubue0Hxi72n2TEZ7IHzdJcmV0ABUY5pxG3ez8tw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/namespace.rb
+
+ hash2
+
+ 825nfe2eUGTEGmw+TDcUdmSIBJucm5qRVFGxW2vv5Gk=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/node.rb
+
+ hash2
+
+ va1dUeqBPdivkjnwToeTgX1DBBSxbHNKvvpz+MYaKH8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/output.rb
+
+ hash2
+
+ trm/9xJoQL9VReOLFGstprYwwKJalgC9xIvbWnZbys0=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parent.rb
+
+ hash2
+
+ 5Y2iDjp23FT6lzyIRSn5Cp7Lt9VSFilKLrxA8pyR1JU=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parseexception.rb
+
+ hash2
+
+ 2cCCja1fcnDNd/dKpIswZQfaW6Nge1kaxmeYOVVEeZE=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/baseparser.rb
+
+ hash2
+
+ 5Z9Pwwp5Gc9dIKxHmudzpYPp5oIU3lDcOEtF+lkIQjw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/lightparser.rb
+
+ hash2
+
+ SC2cXFYrnM94NmJsrTFZ312LhBqWTeHn+UXH412w6/8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/pullparser.rb
+
+ hash2
+
+ tEcUW0FXUGzhO1DWcizrvRp8XBTXhH0VYuIUpizY6rI=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/sax2parser.rb
+
+ hash2
+
+ bAK21YpWw86EtOpKgF4fgntQrSvDgy2781OpLpiJySQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/streamparser.rb
+
+ hash2
+
+ FB8HXUw2vO5ywWs8mYIoAn7r8fKu5lxkbkmz+dYhQIw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/treeparser.rb
+
+ hash2
+
+ 4Fn+XBNOfrTA1EsK0qK08nVqyYDoBtlbJBlCDVx6dGo=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/ultralightparser.rb
+
+ hash2
+
+ c1rE8zlFh1Zxx1pRoYOE318OiDb43xE+KVbZUn8e6rc=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/parsers/xpathparser.rb
+
+ hash2
+
+ NQXmiLNvV5wdjqi2Cpc6A9AgmetGhQ0hFxz4ujdFreo=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/quickpath.rb
+
+ hash2
+
+ J4p3/8EmJRJVwOqz6EtRqscTiOXo1SV4CPLFpKrnC5A=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/rexml.rb
+
+ hash2
+
+ qiM0/Y6IIaCwrgVYVC0vPJOhEdOC7A19KiTz0a606AQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/sax2listener.rb
+
+ hash2
+
+ A/+hhZkj1mWh4pVTvYD1MRqlYvOJSaPvCk6IOSUMSpE=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/security.rb
+
+ hash2
+
+ t55N1lIfvT9nAGPV/nnnabOofjPALH7G0kRHm7Ir8Gw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/source.rb
+
+ hash2
+
+ +UWjEIj+KL1fK8eFfkaQv+ScwwzuJUNtAyiV9QunMrU=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/streamlistener.rb
+
+ hash2
+
+ F2fsoCR2Gds4VHZN8sqLqswr1HwOjA8Dfmh0icpLJHU=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/text.rb
+
+ hash2
+
+ /lJs+xJN8d0s3HsCzsokqnmZJaZ/QxTiGKWTgCl9FAw=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/undefinednamespaceexception.rb
+
+ hash2
+
+ nDKEpEOz/z9vhM5rel3TQ32zPUosckw3MUEE+38slm8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/validation/relaxng.rb
+
+ hash2
+
+ C8MdmVf1p5apq2wsi3iws8YBrZOZADnlaYvRodeTLag=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/validation/validation.rb
+
+ hash2
+
+ JsZXomE9LXdDAPwBnPeNGncX1KbWPPwZ6JWflcw//aI=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/validation/validationexception.rb
+
+ hash2
+
+ XLAHL9PgN+l/4um2XpYQGe7lrnVux/hFWz3kC9NzZZk=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/xmldecl.rb
+
+ hash2
+
+ mi77dFP1WnuZAuX1wVkMWV0NWdW0ubX4onF31ySXpB8=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/xmltokens.rb
+
+ hash2
+
+ /RAQDcjzmfq2BbCt1G/zpW/KW9rlSoPY3DpUQ/6jlwQ=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/xpath.rb
+
+ hash2
+
+ /t1tvJLyQLhJhsvYSu/creGLNOxv3hHtWM3ZpldA85I=
+
+
+ lib/ruby/gems/3.4.0/gems/rexml-3.4.4/lib/rexml/xpath_parser.rb
+
+ hash2
+
+ ju/dEQl0CDNaCMVgrWZ8tsWQUwb52VQTGhGefQwZJs8=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/Gemfile
+
+ hash2
+
+ ssV615aVXxA6+l3Fc+PMD88H5yqxauXaUTcRd4xXyLE=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/README.md
+
+ hash2
+
+ WoK91jvMLPwIP3Xs9gwDZ2+p3fYVtf//r6/byXk7j/A=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/Rakefile
+
+ hash2
+
+ cqY4LINaP5Fuu9ckUq0R+BT2hyeiAFmHohQDsQ8dRco=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/bin/console
+
+ hash2
+
+ iXH8I2piIEy1EP/ar9TVrjbvANfuYWzeQd3MOO9x5AE=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/lib/rinda/rinda.rb
+
+ hash2
+
+ Rqnp+bq0oRkMCP792b3PGUjAIZrV9fnhu0B8pxp1BzY=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/lib/rinda/ring.rb
+
+ hash2
+
+ +mmI6qAwGRPAItL8lxllipPAkHNeXjeXiiSdwBXeo74=
+
+
+ lib/ruby/gems/3.4.0/gems/rinda-0.2.0/lib/rinda/tuplespace.rb
+
+ hash2
+
+ N/ajz/dztTAM7bPrMRClpupIDVX+9q98cqyr6mKxzxg=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/NEWS.md
+
+ hash2
+
+ K1MQf89SeWeGxxcpL5bxJjx32ypwEYhrnk3G08anHoY=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/README.md
+
+ hash2
+
+ s35GE5wsokV99HLtsy0vrSenSYROajT0GDSBY/q6kHs=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss.rb
+
+ hash2
+
+ sP9bMOFw+wGw6babmfefSMjRYJT2bvAgEY5g9xz707g=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/0.9.rb
+
+ hash2
+
+ kafOps0z3w5n9bl/gTpjLfYxCW6BCc5YTZoWisX5ncg=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/1.0.rb
+
+ hash2
+
+ RuoN0FD1id29ZQH+n3SH2ZrZq4PYawoR9ZTPmq1T76c=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/2.0.rb
+
+ hash2
+
+ d800Yt/k1DFha7eDEhCmACu1g/Smz7KVZH9cYe5Hndg=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/atom.rb
+
+ hash2
+
+ zM1wCNCs03ELHvG+v0UDQUWCa39Fqs2KJjmMdVBwayk=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/content.rb
+
+ hash2
+
+ eKEDTUMb3uRMj6aQY/R8o17vTHxSyJU0sDiTK8K5qOc=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/content/1.0.rb
+
+ hash2
+
+ GHTTrHglzRHLRKnviYct6Wbo/d369Eu69kyblm8xmPc=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/content/2.0.rb
+
+ hash2
+
+ QrDPkNxNm1mnbk0683FBP/fSLJ45xJV9sfuw66Cjx1E=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/converter.rb
+
+ hash2
+
+ BPsWRYh8tiv9kgmVKVrpSIwUwdpFPBHdOnUbfh3XXwU=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/dublincore.rb
+
+ hash2
+
+ Mvk5g9rzICqVxSCLaeORWEscXGsrUSnR0BUZ7XBWt1Q=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/dublincore/1.0.rb
+
+ hash2
+
+ lLD5lB2OsbEBi0q4fH+/WRagQ/bNMlCCncdYEuxWPGs=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/dublincore/2.0.rb
+
+ hash2
+
+ IsrdWXbX/2FKXoMS7jv5HKgKojxr4Lxxqw7h6mEYwBc=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/dublincore/atom.rb
+
+ hash2
+
+ gvSESTIlQq1Jz76puRy7KOfcE/rsWpaOSkT+aNy52CA=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/image.rb
+
+ hash2
+
+ r5OxMmcp0IvZ0wWLwc9OT+kpIsa7xWNmaso2M3fr6fg=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/itunes.rb
+
+ hash2
+
+ C5ljckEM6gsU3QHuj6DB4JJ9gSxaN+q/sL1P4u+YcJY=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker.rb
+
+ hash2
+
+ F9eSCICybpQ53hJgH5H8TAgi6v4ATl0f68fNPyssBl0=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/0.9.rb
+
+ hash2
+
+ ZkvgTOKoFewu24MLz0ihSZQtRC6NtQ7+G7IzniSHOIs=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/1.0.rb
+
+ hash2
+
+ uEJdZvJsqAfFTPFPvIjhRhwhR6/TpiCcCaNgyKszKwg=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/2.0.rb
+
+ hash2
+
+ +Ho0CJgimWDxi3F103a775ioUH8adMtW53/icDhI9zI=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/atom.rb
+
+ hash2
+
+ y/Nqdvi7qgNNtn8dOnX7CrwprPRd/ToeHiyh3RpBqzk=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/base.rb
+
+ hash2
+
+ NIBuzSv/t/Xz4/Fr7gyT4zOfdcrDzwK1nsF7PeidxWM=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/content.rb
+
+ hash2
+
+ iOQFTbJ+i5Uy4eYKVp1tnv6X5QaCnTbXXWW079n7U0Y=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/dublincore.rb
+
+ hash2
+
+ Da3FBA7reL4ZC0Jzel9xiU6fVWg6M0GU/dG1nuibJDk=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/entry.rb
+
+ hash2
+
+ YzwExTOPehioi6K3qLwDcU7cnYARdVSrVZXKImd3+4E=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/feed.rb
+
+ hash2
+
+ 5i48oaOI4B/KJZiTVfBqmdVD/pHhKwJcNnmHNhgBg40=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/image.rb
+
+ hash2
+
+ 0fFUNb5NeZj2eH9hMjAW4V4aGnQrLS9iBxKkQUM/yy4=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/itunes.rb
+
+ hash2
+
+ mAvAF9iYC1V8wwtYaUQ+VThekLtZcUEBnVq9b7EV+o8=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/slash.rb
+
+ hash2
+
+ P1+gOGY1VoBmaz5hKr40qBwu1A+3C/AtUyrhAxrJS4s=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/syndication.rb
+
+ hash2
+
+ hx1YZaoskSzOIUnpxPRs1d3Fm2VFDvRsI8ZIvxuFM+A=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/taxonomy.rb
+
+ hash2
+
+ 9t5m7UejVHBsrlRUZoKgLPdHAKunP8TRoTzUEKxslf0=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/maker/trackback.rb
+
+ hash2
+
+ dLoPWd4f97LawJ+2rvxPX4683BjXIAIioaTNN4NA+As=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/parser.rb
+
+ hash2
+
+ 4CmC8pSO4PrBBF9tXLOvi/AK0FSmViNYBTVC/qEw1dM=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/rexmlparser.rb
+
+ hash2
+
+ H2yTGsLWoTD0yW3XjvIW7AXg0N5ocLExx0U7iV5AHNw=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/rss.rb
+
+ hash2
+
+ Z+ejzlgjYwveI7rPR1RHSzr8XkHy7eEpV0UJyGXF8YM=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/slash.rb
+
+ hash2
+
+ qGlXSdKfM4TR1e7XObbKKjEXs7As3N7qio3MlVR/JqU=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/syndication.rb
+
+ hash2
+
+ DhKIA9G7a3IF22KcWKgynTNV2Su8KjepNuOu/5k9BA8=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/taxonomy.rb
+
+ hash2
+
+ VIXd6NqWEfhegDCiCeYDHRSwbsi9l+L62ctElT/waEw=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/trackback.rb
+
+ hash2
+
+ 5Sz0FX1e/PuLLPpuv2HBdp77YHjbq90FLrYiJrHZ0kA=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/utils.rb
+
+ hash2
+
+ pz4yYOSe5NJ7919ec+xp+kPFLPHN9Me+BOqdsSCC0dI=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/version.rb
+
+ hash2
+
+ UfN9L9PBdUqcrgNHfAgwIP4ERzIHHRh9bt2GyOcZZg8=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/xml-stylesheet.rb
+
+ hash2
+
+ Rd9cHatc5rHeaEBYlKbsl2C58DXun7qMt5gRzPJ4vgU=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/xml.rb
+
+ hash2
+
+ xD80o6VdYhjU4710bo80mzAjjpRuO+Hx+RMQtUlGZK4=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/xmlparser.rb
+
+ hash2
+
+ j36R+DsVt2RBV9rI3um02Ua7Tv4Q/q1+uS/iWHllX84=
+
+
+ lib/ruby/gems/3.4.0/gems/rss-0.3.1/lib/rss/xmlscanner.rb
+
+ hash2
+
+ 2TgIvfw4zD1KLHBv4b7/kugPOcdyP0aI0rx4I8BrWrE=
+
+
+ lib/ruby/gems/3.4.0/gems/syntax_suggest-2.0.2/exe/syntax_suggest
+
+ hash2
+
+ xPe0JdpveRxHBueHLHTbxlVIUg4n67IRt6MS97J2w2Q=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/Gemfile
+
+ hash2
+
+ V4wGptiMdpr1qUhSvld0pu0KDRt1sXM/TRFA+rXAMaI=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/LICENSE.txt
+
+ hash2
+
+ peMELay1PuvakfOxyu+/7IMHcR34xO0e0g5Ol8QzB6Q=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/README.md
+
+ hash2
+
+ bZdSfFfTshXviEPw2HoMt9hrnK7L26oVeKzcE6vRmlo=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/Rakefile
+
+ hash2
+
+ +L1yOMNMT0lWqp6ev1z7DBbK6JjmBy+HuP+t97AYQJo=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/bin/console
+
+ hash2
+
+ rV75azKBtCnfgsnBvTu/IJW5whlhauCAU/IgczXRRxo=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/bin/setup
+
+ hash2
+
+ 4gEZC8JOnwCEmz76X7rs4svwaXAyMuUMf6FdQcR/Lq0=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/ext/syslog/extconf.rb
+
+ hash2
+
+ 88ezH/e/BPemI1vL5htlSzWDLGeFBugAkgPn8f33PU0=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/ext/syslog/syslog.c
+
+ hash2
+
+ ikl+AhoPA51Jc/WI4PejVHdyus+D/bm+k/1gWDzUGwE=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/ext/syslog/syslog.txt
+
+ hash2
+
+ JZ4Oh7Xw0Tzge3s7pqG7LL8AuzKY1RrPkFLzAcIQU/s=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/lib/syslog.rb
+
+ hash2
+
+ Z5drnjv9I6OuqrgATHHsWLvP+z0RcEubF5gBCJ2+oBI=
+
+
+ lib/ruby/gems/3.4.0/gems/syslog-0.2.0/lib/syslog/logger.rb
+
+ hash2
+
+ lFPpCTnu7oUTW93PpCWUdeXkbKUjJf5t7Ko3UGyQAVU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/BSDL
+
+ hash2
+
+ vBibHJEW9YK0bqvep10wKwR63pE7615UFyaPbQ8CFfE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/COPYING
+
+ hash2
+
+ xEqHUL3xu+sg06NKcqYT90z6ED123vhfKJOtNlj9wpg=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/PSFL
+
+ hash2
+
+ retrUUh94t5j8uZkfaCEZPPKb3r02zBKIO7xSslZ1C0=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/README.md
+
+ hash2
+
+ 7YHIlYGB10errvsVpk3vCkaiOdQpZdtvWNiCGBqgT58=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/Rakefile
+
+ hash2
+
+ f1nnD9IaM/xtjm7XABi84IcuNdIyNFd1e8z3q+iJ+IM=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/doc/text/getting-started.md
+
+ hash2
+
+ q/wp4ksz1/JBc+Nly2OGEMTrUEmwYpXjBRtQDqlcrck=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/doc/text/how-to.md
+
+ hash2
+
+ Vrt4Dj8J1fEK9/2NR3ecmfxGwLFLUcC+lT8xwgtv3OE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/doc/text/news.md
+
+ hash2
+
+ xAS7/L+Wr8dGpdYEugFmoj5hfzc8zbrLHfYmaaWUULk=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test-unit.rb
+
+ hash2
+
+ RPZ59JZ3L0OVXzbs6J2hJrX9Rxu/H1QeFSA0xO1tTzU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit.rb
+
+ hash2
+
+ v8wVpoXO7PhdlTqTnq+Kco1osNKuT9eCeRhpkQaehOM=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/assertion-failed-error.rb
+
+ hash2
+
+ hxG6sUbrshrku3DRgxlq3an/sWpns70qMJKsRIuy+3A=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/assertions.rb
+
+ hash2
+
+ okGGeu3mtq4vexNSGoD2KDYt1EPistLegAdGCEjKIiE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/attribute-matcher.rb
+
+ hash2
+
+ 9iO/uoWaNyul0kAnBHoltlg1DDh+q6PUsuE6MKtoDtM=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/attribute.rb
+
+ hash2
+
+ fOx2wrYT/ITb5Jq4zoC3Djd/F5EdQqz7sigkrCv7V/w=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/auto-runner-loader.rb
+
+ hash2
+
+ QN7rgnPpxKYOQPRCqquSA8+SKhavkjsJH8xq0Zogle8=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/autorunner.rb
+
+ hash2
+
+ 4WCDKQruN5PWP/RQyGZ7x0WCacnuasJoqv8X90FiBhQ=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/code-snippet-fetcher.rb
+
+ hash2
+
+ IQFCMzd4cXeWxAajlsBkiaXUFK+LQzz18+JSufO0hzw=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector.rb
+
+ hash2
+
+ 2XcBKNwKJrWt9wkM/ldomiu95tovTvfnoVfBH6aVqKU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector/descendant.rb
+
+ hash2
+
+ KGttOJQ6tfdvBUnT1DhNaoa5sqGpOwHtyc/K0l1nimQ=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector/dir.rb
+
+ hash2
+
+ m7iLDBVT04E+aHFGqKIff+aBbL/IeDHUDEXYZ4QqPmo=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector/load.rb
+
+ hash2
+
+ 1VLnIFEcE5mg/1RM+lZXIQyzSKAiNflnSIEZNGl3FjQ=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector/objectspace.rb
+
+ hash2
+
+ t2sx89XoKLRGH95PeJJUQXuNXkTkGK9renRDTkRRI6c=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/collector/xml.rb
+
+ hash2
+
+ vUZ/Y3VfTvCeOTYeQLmrrSxHWke8NXwAL4lunKQFlxQ=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/color-scheme.rb
+
+ hash2
+
+ Lv+qhjlVOSaYUr0N+Hz/yWDfiks5BOzUD2EEZbexcCI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/color.rb
+
+ hash2
+
+ VcxneXHjaeI2Yd/WPmBQyNfbj/2g/L6F3gTxRU4Iz7w=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/data-sets.rb
+
+ hash2
+
+ Ba1DurF4PESlWvht4+FxcWIL/LfYWlifJMn8zx5q7Ro=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/data.rb
+
+ hash2
+
+ rBHA1JRxbj4eleyzXI7cTiY7UQvmn9q5EsOqQ0oW4Zg=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/diff.rb
+
+ hash2
+
+ 8YrKG7UUPgtn+8lVBQgMU/vkShxQ/ZqkUAWuRUfnpI0=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/error.rb
+
+ hash2
+
+ J0KPfnJysQOXVNNdF3FvstAvti/LFs4MG2oSuIm32Qc=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/exception-handler.rb
+
+ hash2
+
+ oWZHWBID0l8DTfA45pGug27mNnUZHTMZ32gu3QJnE8I=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/failure.rb
+
+ hash2
+
+ mkmct0mq6wDhj9xnWWxXPnYUGEfjGDXaSFayxXEcvvU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/fault-location-detector.rb
+
+ hash2
+
+ 57xma1j6ZjoDaL0b0UqOGfYgAi4+o/MRmUUsHcC9mOc=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/fixture.rb
+
+ hash2
+
+ ImIiN895iEcAe8/Wewoa815CPWkqLPTB7/H7lWwk9WY=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/notification.rb
+
+ hash2
+
+ ct3LcpKiIsTwyuvsxgm1VdQqoH+7cQPFtbz+msXNKU8=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/omission.rb
+
+ hash2
+
+ sOpj9pP1to7ZNm4czzCFxCsJUNAGzUHRdqXwRqoEcYU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/pending.rb
+
+ hash2
+
+ DiU211lgVpK+T9x4td6av3j2i7GvqJM9Fqrx45y5KfI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/priority.rb
+
+ hash2
+
+ JSypwYdCffbEEgwDeiQd53cuwsIdvDy+eH4yLDmDTJM=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/runner/console.rb
+
+ hash2
+
+ y4cLzizHNtbQ4T25rIG0BBMPdq4zntAGv4UMVl9X2qU=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/runner/emacs.rb
+
+ hash2
+
+ gBp7J+i5je3P3vYsOw9c8/ZppcCXml/40r2yN1R6edw=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/runner/xml.rb
+
+ hash2
+
+ YsCswEJON+AAxQ8FhV88EHHP3olNbdSizCg9AkeVPOY=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/sub-test-result.rb
+
+ hash2
+
+ 9vBrfN5fGW/cTpLmyPZejSTSULBWVLa7I6GKkTDoPnI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/test-suite-creator.rb
+
+ hash2
+
+ NA/8C3ngtzXh7q3H/7Y+H2gA5h0f4Rm2lOlAY7eizac=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/test-suite-runner.rb
+
+ hash2
+
+ 9J0G0HWmkiPg82lthmKZTi3SBpcXnJHNhnILbE7uVak=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/test-suite-thread-runner.rb
+
+ hash2
+
+ iguOW/PQ01g6yyNGW4cCb6svMOaw/4F+MmiZKTyj2hI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/testcase.rb
+
+ hash2
+
+ kdZdtR2ZgNarmd8Q8yoM/dGZb8Hy06FMGRjD0pEwSrY=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/testresult.rb
+
+ hash2
+
+ ca8YUVtlsMhQzk0kPYB+EKYZ2U5Mw9CuDSxk3WKoDGI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/testsuite.rb
+
+ hash2
+
+ QwteMqzMYHOCqY3k5h/iJ0ZJLNN/nvBHLxzJyPCFyhE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/console/outputlevel.rb
+
+ hash2
+
+ T/1HlMdSf/w/sbvZIluKdihPzmRFF20KctRCMaWfxgY=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/console/testrunner.rb
+
+ hash2
+
+ Lu/a7J1PRRX3yfmIt9SdCcs59N7yKV9Ktf8g2zOEcK4=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/emacs/testrunner.rb
+
+ hash2
+
+ 84QFmlca97ncSjjrNjzobpCWtzlwUzK8iwmUlkEZ1qY=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/testrunner.rb
+
+ hash2
+
+ Km+Sx64l9FMUqB7tb5HPtNiTT12XHRwrtZ3UJXL4B3M=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/testrunnermediator.rb
+
+ hash2
+
+ VKvYgrNjsxFccOILFldTbEXq4ttMkAp2H+JcKDd8VRw=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/testrunnerutilities.rb
+
+ hash2
+
+ AJkly3TYfhTqlK4XJW3v4G/ynFYLirVFIvY2ulKz4Fw=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/ui/xml/testrunner.rb
+
+ hash2
+
+ d6omFd77/b/DJ4LCkBJ/r0RZU1AJVZ2m+j7hcLut58M=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/backtracefilter.rb
+
+ hash2
+
+ cxkTPf3MNFBPtb+NZKeOglAx0SJQ4m2cUefseXDGOfw=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/memory-usage.rb
+
+ hash2
+
+ VotLoBzxAzb7q86UHs6zxzSfzo9wWvr7tsF9e29YyhI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/method-owner-finder.rb
+
+ hash2
+
+ RYA1TBR7J9eONyzI0jPo20FP5OkSpaFtvq0DtlaI8xo=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/observable.rb
+
+ hash2
+
+ VfJzk+y8YX4AvWp481lCSWtr+Y2Av53reCQ94CH7CI4=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/output.rb
+
+ hash2
+
+ OsQrGqASTLcj+8zuiXQk4w33N13Qe+Ii+bvg9OHmiDI=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/util/procwrapper.rb
+
+ hash2
+
+ qh45LFjiuhPTe2EEZfbUZv49sD7M8fpV20pTIn6iJaE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/version.rb
+
+ hash2
+
+ Wkt8ieNsze0Zu9PZ7kRFk6ZUoYDorTYqWFox5aPuZns=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/lib/test/unit/warning.rb
+
+ hash2
+
+ 2AwM1ZXohqXnTsHyRU5hzjpLIfrT+5FgA6BF/C6ot40=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/sample/adder.rb
+
+ hash2
+
+ z9PemQ3HMNY45LwJ8brvEQ0IJW1kUKtb3arT+j/7snE=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/sample/subtracter.rb
+
+ hash2
+
+ 2Vik4Qd7plUlMFyFLSWmna80tlqLRZkdn4/DJ5/6hfM=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/sample/test_adder.rb
+
+ hash2
+
+ oj5ANbwkoALiGVJfoMGpjbglFTANP81KpeEQflo5Q8I=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/sample/test_subtracter.rb
+
+ hash2
+
+ UCLG8QQCNMGIqW39CiW+qxxbfdjROPNnmHI2aePBXJk=
+
+
+ lib/ruby/gems/3.4.0/gems/test-unit-3.6.7/sample/test_user.rb
+
+ hash2
+
+ ZIi6kgbR9Pi3Gueh9ZPAjpK4HGFjv726L0OLuoc6x5s=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/LICENSE
+
+ hash2
+
+ lc0h1KB7M04CZSuCPD8vlb3lsONhGQ2kZ2m6TpXU0yg=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/README.md
+
+ hash2
+
+ hiiPZ0+D5yNE4y/jE3e+m68e/WrR9WVvXtSxLy40P6E=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/bin/typeprof
+
+ hash2
+
+ L3vuZ+VeuxTdLHCQdTvfO8jzTfxa+SqN1gWhzwIH6fA=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/doc/doc.ja.md
+
+ hash2
+
+ JIgvxE+jPT+/bdqbqk9rpjv8e6o02WfJwFwYRhXfUQg=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/doc/doc.md
+
+ hash2
+
+ hpC5EEcKklS95GTjA+Ry7saZcoFGcbhjHIyrdN8ZTG0=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof.rb
+
+ hash2
+
+ I7WxCPZP0E16DOoKHN9IGj6W/snvfJJNa0/8GvQtWls=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/cli.rb
+
+ hash2
+
+ TfbgSs1kC63xgDBOH+13JkG4ypjaHr3G+hdYmfncFZ0=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/cli/cli.rb
+
+ hash2
+
+ T/iGjJGUEBBI0l3bOADSpOxjl0WAfA70gJpC1adrnSA=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/code_range.rb
+
+ hash2
+
+ Fl2rhsDcZ3SncCuyyUfjDAyfrZ3cJ/cexeDuOswkio4=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core.rb
+
+ hash2
+
+ 72zqswNmdSfmsgrb3ZBOTXfbxQrNNZa4UN/JIzhjPIU=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast.rb
+
+ hash2
+
+ 16xjHrMgVG4PsQrbh2bMOS0oU+MwnvafBnUzGQ6wmic=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/base.rb
+
+ hash2
+
+ Qx6+15fUz92xvf7hb7QLntULkAN+ZcijKMMDdEDT3Ek=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/call.rb
+
+ hash2
+
+ YIncipK13wxvYPYGUUBbZmnJnqIY0x+Vs7jiyNRhoxA=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/const.rb
+
+ hash2
+
+ 3ELaJIUWRBvvqev7V1owyjwYPNTIh05rbfuk22G8KMc=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/control.rb
+
+ hash2
+
+ LrabYwskgDhGY5zx8ZUkg7PUkm/s/OM3bYYEJiWyQOI=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/meta.rb
+
+ hash2
+
+ bkxpzeMai151vR6eprUikdrDwWXa4rE1CHKf1srE1Bw=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/method.rb
+
+ hash2
+
+ SVhCLwVTEj+d/yvwyH3aTrH/SGwJ/jeiFI30Nuk9UFM=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/misc.rb
+
+ hash2
+
+ 2wbP+OeB2K4zJiHjsJbprtFlfbVAJRPOWYUQWxibv8w=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/module.rb
+
+ hash2
+
+ G9XXq6PL6pziWkb79BO9LZEa8iRHfrOoJXpmq15vp88=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/pattern.rb
+
+ hash2
+
+ Mk0gEbWsHBWNxTHEbI8MhlJchxUfPkpiI0nzjvvuRvM=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/sig_decl.rb
+
+ hash2
+
+ 9gyQzrPCT0aCHhSsOUHKiUZ2/v/3+HZP7CuTMfQDZ10=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/sig_type.rb
+
+ hash2
+
+ QHfZbLZO7qlG9j5K8pfZyxldzIBtA+bcS6srkyG0rPM=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/value.rb
+
+ hash2
+
+ 8/hyoREVLgXY+7VxV9kiHjQF+jPjM3tEMfkqSDnoFG0=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/ast/variable.rb
+
+ hash2
+
+ vN+9bc6vUV0z5f15YollplmNg1FyzYCzcstd/D2uwrw=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/builtin.rb
+
+ hash2
+
+ oaglL7djJooCAMYMzoBw1YDrYq6HLuw3N+542FVVRZI=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env.rb
+
+ hash2
+
+ VzJ+FDeoXgTB9lqUIC1E+DpixpSu5evR05vKBLEtNdc=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/method.rb
+
+ hash2
+
+ l+oeFq/X2Dy7ZPOv66KAoDN32ULQ3Af0v5YZtsjovvk=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/method_entity.rb
+
+ hash2
+
+ SWrxoPpcJUGCQKgXFiu01TcbqDRh2hVdWYUPvnozNbE=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/module_entity.rb
+
+ hash2
+
+ nC2SZ6t9jSfV8Oq8cA8wolJtqCNn26sBW36Vzh0Q1gU=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/static_read.rb
+
+ hash2
+
+ 8u/5tAcE9JzYKkcAwfN+82AhC3UYiao/uETG2pGXJWk=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/type_alias_entity.rb
+
+ hash2
+
+ T7YANBQsxdQvSnaJ4woeCQ9QiD4lb6mQGmbQRWPskXQ=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/env/value_entity.rb
+
+ hash2
+
+ k9wATuD8wMEa93hDJgxJjVIzHX8JIfYJxvET74QpGRk=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/graph/box.rb
+
+ hash2
+
+ B7OzhjJ2+fWwOpWbIX63uVhSvF/9kW6GlcNG59HCmE8=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/graph/change_set.rb
+
+ hash2
+
+ W0be8Gd2L1AobV1fuo5FdW3XMKN1vz9De4/T8JnU9kk=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/graph/filter.rb
+
+ hash2
+
+ 0/fIrkQ74+vkcNsj9JUb2nJt89JxABEQzhOnQwOmwrI=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/graph/vertex.rb
+
+ hash2
+
+ +mqbDR7UWZfyl5ivm/DeIth+7gEeMwjS1zf58iml0Is=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/service.rb
+
+ hash2
+
+ F+rJF9px7qkyuIkAIaQI0R7zZdeqo9Q0pZSwj2tcJFQ=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/type.rb
+
+ hash2
+
+ unL1MiuHafkv445ujt2XtFaJDpCnpoAdSFRBdInTe3I=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/core/util.rb
+
+ hash2
+
+ ciuqCcjmDRwXPUxoel4pqG4++uyg22mEb+sLoGS53CI=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/diagnostic.rb
+
+ hash2
+
+ f1CHC80DNx2Wcytt3f+Fzi7SPwoUrJ1ZhjvhpUBTnFw=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/lsp.rb
+
+ hash2
+
+ 0FWo2P9VLM8lqwn2jHcHtDVsgkIztSOtXckflVbPcVs=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/lsp/messages.rb
+
+ hash2
+
+ LfZFkMDtARdyTFKkQmKeGvgZjZ+9nrQbXks4zdhyE0k=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/lsp/server.rb
+
+ hash2
+
+ o9P2fEzLM/XKbOtwQNr95Gg+QXX6/hj5dPgu2wPzRmU=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/lsp/text.rb
+
+ hash2
+
+ tD7sGQzDPNVHQdwKr9548hVLETVwfh3LNcj84/Ydybg=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/lsp/util.rb
+
+ hash2
+
+ zRyp0KfCzvdWLc+L/N0TWesqwLIFgFRL+J42RSOs/vQ=
+
+
+ lib/ruby/gems/3.4.0/gems/typeprof-0.30.1/lib/typeprof/version.rb
+
+ hash2
+
+ Y46DJQtgfX4SGsB8O5GEGHNT9aOrlXnH/XCr/T66LCM=
+
+
+ lib/ruby/gems/3.4.0/specifications/abbrev-0.1.2.gemspec
+
+ hash2
+
+ qIB5FSoWfgceOOHyzAeDiSEr2z+Q8OSlANOXmWTJzz0=
+
+
+ lib/ruby/gems/3.4.0/specifications/base64-0.2.0.gemspec
+
+ hash2
+
+ b0Dz3FG2+oYGV53DgN0ltGi7De1uwH/9iXjeMAOqGlM=
+
+
+ lib/ruby/gems/3.4.0/specifications/bigdecimal-3.1.8.gemspec
+
+ hash2
+
+ V6qGhcdZrumbNpkTrbj8Q5B+Yo65gIa849Zz+uLusAI=
+
+
+ lib/ruby/gems/3.4.0/specifications/csv-3.3.2.gemspec
+
+ hash2
+
+ VfyLuMa1P+QZnnXaOp20Q+bDpazF6YSeNvkROm02Qbk=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/benchmark-0.4.0.gemspec
+
+ hash2
+
+ iAkCICogFBB2uGXYPXXlO2Fwj+ovFfqYoDVwdo1Ske8=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/bundler-2.6.9.gemspec
+
+ hash2
+
+ 7mm1Cc2G5nXtK2KwMzkEYLryTbEzOLNU0oR51Cj/e14=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/cgi-0.4.2.gemspec
+
+ hash2
+
+ pejwyr+hvu8YMsUAGaZurlkBlCTAGLzIJ67anP9wKTU=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/date-3.4.1.gemspec
+
+ hash2
+
+ TgX1SlYQTxhxKxiXZlNsI3Ufh+t9VcHt4DcU5h3+B/w=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/delegate-0.4.0.gemspec
+
+ hash2
+
+ 8Vr0NjsQM/gFSgfTLpiJJGRFWUiPLtL3RIb7AfsrYGo=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/did_you_mean-2.0.0.gemspec
+
+ hash2
+
+ Zr095VWDtKiOo79vwlOXksAzmq5iPhdbqzDE5Z34Lqw=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/digest-3.2.0.gemspec
+
+ hash2
+
+ xODvcWFfgX4WVqPGkaHoeZkQ/8/77NdzuQnboU7Ocd0=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/english-0.8.0.gemspec
+
+ hash2
+
+ 8ToFUVwbOPOxnEmPoudUI6TFkr9CeKSgJP/gGsUboRc=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/erb-4.0.4.gemspec
+
+ hash2
+
+ aq1/w7QHi5KpFwJHI/AAi5lTMOgTWivnX23r6iCOEzc=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/error_highlight-0.7.0.gemspec
+
+ hash2
+
+ qnxN/RQX5+j4i9GJtsDuvLeNegIP+fXeL7gcyqWSJCk=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/etc-1.4.6.gemspec
+
+ hash2
+
+ YcGi+VqpCJrQOcxJC7GTL3xC/woeSHQpR9pGLQA1WCw=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/fcntl-1.2.0.gemspec
+
+ hash2
+
+ 68VamaCdu2I2wq+NSkQap5mKX1aQqkLsxJDY1XuwF7o=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/fiddle-1.1.6.gemspec
+
+ hash2
+
+ /euZ0LsJ+/wsJkC5plTquvHMnvdaOdxodpEAb8G4f6I=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/fileutils-1.7.3.gemspec
+
+ hash2
+
+ 8ZFIspnhxQeLqu1AoIsOv0LI5mPTqyRPUQwho2OAtI8=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/find-0.2.0.gemspec
+
+ hash2
+
+ QugbjAJ3ExcuyRWTTH3XxLS9mM2tWSFTV+Erp2YncCM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/forwardable-1.3.3.gemspec
+
+ hash2
+
+ z90wGxSxMr2QIqg9fXZNbuEaqwntAJQZ3BqK8tFRJT8=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/io-console-0.8.1.gemspec
+
+ hash2
+
+ HdBv0mHlGOjDoDiuoIkvqQGi9/3jh9VhxlL+0ip/x9U=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/io-nonblock-0.3.2.gemspec
+
+ hash2
+
+ iLSyV+uTcuICtl0WmBAxj0QtAhOmaJcg12ieJPHt/DM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/io-wait-0.3.2.gemspec
+
+ hash2
+
+ f3BrX+vfR1OZzcG2HV1Iuj5zPssGkrpoZ3tLzohMKEU=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/ipaddr-1.2.7.gemspec
+
+ hash2
+
+ QVPrvaZw4NbOXrfGrK1TczqMmM27YREEzM48OOSE6ek=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/irb-1.14.3.gemspec
+
+ hash2
+
+ 3211nzqKXylqgwx+fdW1THq/v0nq2++ZzwXlFz3CMCY=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/json-2.9.1.gemspec
+
+ hash2
+
+ lJnwfO68FalBKMcgxJjJGNdLR884RIuAy8qszL5QWbw=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/logger-1.6.4.gemspec
+
+ hash2
+
+ 2lf83U2uZsclJ+VrQ/wYEhvhPd9P/BlV4XNJWDW3T6Q=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/net-http-0.6.0.gemspec
+
+ hash2
+
+ kyBtcoDXZ81s3uGEKK+r6X1Scf1pKI+zwBAvdXPyB8Y=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/net-protocol-0.2.2.gemspec
+
+ hash2
+
+ kYB3ThMcuaPcVSayuOHD1oHd8aA2w/FBPBjL48WcF/I=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/open-uri-0.5.0.gemspec
+
+ hash2
+
+ rXTh/sL+IXNNXVK8S8RCtc+h/DNcalvLp8akcL05CCE=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/open3-0.2.1.gemspec
+
+ hash2
+
+ uX1Dc4MQDlCy2+tZbZc45qwYylluNy1moYH9r011hRE=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/openssl-3.3.1.gemspec
+
+ hash2
+
+ jJwxgf5O9JC+qaHuIgfv6LD/2DsiCDtjzVTgajzcIag=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/optparse-0.6.0.gemspec
+
+ hash2
+
+ QYzImdG2LzvimsPVpEzosQoJW1KXv407Kj/dNNv+scY=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/ostruct-0.6.1.gemspec
+
+ hash2
+
+ hCKGGDr9ZOtWZSPtDa9Io/0b2KZUxdySQlCToItWDiM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/pathname-0.4.0.gemspec
+
+ hash2
+
+ VllqcKP+po3EIbI9ntOHMaayb6DVDlrIG6oduRL6ZpM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/pp-0.6.2.gemspec
+
+ hash2
+
+ SinraUPRZHWpIxiDS0VOPA9G0ZpI4ZFYdMwz3MjWRII=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/prettyprint-0.2.0.gemspec
+
+ hash2
+
+ yHBA7l6x/hpOGMkGNeXQS+wDNmoL6BvmOG5ARoIYBKM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/prism-1.5.2.gemspec
+
+ hash2
+
+ 9i5p9doNcsaJ4FXv6nGs07f2JH+HY7RUaAwHLM1L/5k=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/pstore-0.1.4.gemspec
+
+ hash2
+
+ bKFN0t2UlhHlGXA95SMdwePwebzoypoB6t4ACjr9NEY=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/psych-5.2.2.gemspec
+
+ hash2
+
+ YfKwybx8i4ZbUI7PZKL29FYRAW0A+FZ8izU9HFBsbvM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/rdoc-6.14.0.gemspec
+
+ hash2
+
+ eejsHDvUU4o7LOGsDASPVwi/RRCKnLnHhZPlM+GUgfk=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/readline-0.0.4.gemspec
+
+ hash2
+
+ MJ3alBFx5EUPY1nGYxXJoX+xCuxkPDK+ecNkpxTbaco=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/reline-0.6.0.gemspec
+
+ hash2
+
+ 7Dao3DaIi4wIvl3KMLdVcFu7db5RtRJ5PamAFYU9UFE=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/resolv-0.6.2.gemspec
+
+ hash2
+
+ 2jrAcSnOppZd99oH7/5Fq+AkOuXxycqIUHIajQiE8wE=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/ruby2_keywords-0.0.5.gemspec
+
+ hash2
+
+ MZzewNsriOqfutY8YxR4gdKTvJinhVeOIEVCANprEy4=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/securerandom-0.4.1.gemspec
+
+ hash2
+
+ ksy0o8FSHkCoLgeq1Jr/biV4lHapioHAogFLHEThIps=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/set-1.1.1.gemspec
+
+ hash2
+
+ sUpHygnEBXRHL7iDs5AM/rbHsIT+mv44xuKtZnwpOhk=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/shellwords-0.2.2.gemspec
+
+ hash2
+
+ gCZ/HOo4tKuNkY0/Y/KyEmfIiwfVU11WfAHoiNKpDKM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/singleton-0.3.0.gemspec
+
+ hash2
+
+ 7BCUew2dpBDOHdp9na/ozBcYmr2r1cUw4PKG50Ug8kM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/stringio-3.1.2.gemspec
+
+ hash2
+
+ eAm5/61Z7i5VEOtvbgvp28BVCvL/WNAw43SEhMODaC0=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/strscan-3.1.2.gemspec
+
+ hash2
+
+ rBjXmlyPZLJWwFmMs1YOHIgKCC6ezlznfLaPZbpxtCI=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/syntax_suggest-2.0.2.gemspec
+
+ hash2
+
+ BFll0/7QvlMBzp21TeDI3TXKFZUlxkKfiaf1YUMg0w4=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/tempfile-0.3.1.gemspec
+
+ hash2
+
+ wy0M2Z7nHB34gxATTqh2IZV/0pyQuqaeI4beYUcsfuY=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/time-0.4.1.gemspec
+
+ hash2
+
+ tXedbt42BZRcX05/+t23w0WIgmgHyuC6BWaF5+fTPmI=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/timeout-0.4.3.gemspec
+
+ hash2
+
+ 74N4jr8FWkMbB18gP3/cJx90x4B+OpDTBDL5FxCpVnQ=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/tmpdir-0.3.1.gemspec
+
+ hash2
+
+ XH0LB9IoQAHGEzR2dODRRq/xWhwcOrVLGW8Bbx0nVqA=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/tsort-0.2.0.gemspec
+
+ hash2
+
+ LHKw914sywdYKMO4VvJZc2ZiTCnci6XlXFqSeIYiF58=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/un-0.3.0.gemspec
+
+ hash2
+
+ oaWLRKInGqk+jD4S5YUpaB8cH7tTKscmt9Z2CH745M4=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/uri-1.0.4.gemspec
+
+ hash2
+
+ HjiSv138aTlv7ddBJaTeyuGQqehziFptoXnadNn6wF8=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/weakref-0.1.3.gemspec
+
+ hash2
+
+ bBv25j9Q1a2H45R45+gQVhsdzblRhjn7OjAWSeop0PM=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/yaml-0.4.0.gemspec
+
+ hash2
+
+ sgSwIo2rYKz6/ym0gkylAr0Suc5jCF5NavsWpD78sxk=
+
+
+ lib/ruby/gems/3.4.0/specifications/default/zlib-3.2.3.gemspec
+
+ hash2
+
+ 8FC3JdA1zJoEwjfMI9D6jemeVs6suh+JP7WntdRNRcE=
+
+
+ lib/ruby/gems/3.4.0/specifications/drb-2.2.1.gemspec
+
+ hash2
+
+ yhLfSzN6tNn7SQaRZ6+FDKVNkdgZTAQkdhttMfmj1Eg=
+
+
+ lib/ruby/gems/3.4.0/specifications/getoptlong-0.2.1.gemspec
+
+ hash2
+
+ ZBxG8fEDz2qXg7y+IYDYEZlQqSJNoCQ61X7yevoc8M4=
+
+
+ lib/ruby/gems/3.4.0/specifications/matrix-0.4.2.gemspec
+
+ hash2
+
+ Avc1JSEmMeZso8kBEqBzYRLahX+m/dsfgHoSqJTKxx8=
+
+
+ lib/ruby/gems/3.4.0/specifications/minitest-5.25.4.gemspec
+
+ hash2
+
+ 3eCVI7MyiOuzg33/9PFcAReYWjHgLjU28IEv5QAZ+WU=
+
+
+ lib/ruby/gems/3.4.0/specifications/mutex_m-0.3.0.gemspec
+
+ hash2
+
+ u19fYzVxLHmJPWnwd/f/gOdbbVZU2D4vKF2/m/KCWKw=
+
+
+ lib/ruby/gems/3.4.0/specifications/net-ftp-0.3.8.gemspec
+
+ hash2
+
+ KXvPaUplWVVuVhVwMKSehNOZXrGguzE67dS4fWVxfl4=
+
+
+ lib/ruby/gems/3.4.0/specifications/net-imap-0.5.8.gemspec
+
+ hash2
+
+ Ns9VbxLS3FYP8yXVx5c7N4rfDAI7CEEjJtftsLEOg0I=
+
+
+ lib/ruby/gems/3.4.0/specifications/net-pop-0.1.2.gemspec
+
+ hash2
+
+ vG2n7uTzFNiwiHoWaimRcaQMO3a4tQXe3MZe/g8AjdE=
+
+
+ lib/ruby/gems/3.4.0/specifications/net-smtp-0.5.1.gemspec
+
+ hash2
+
+ 0vjOePk2TRlRdnl0FKIxaUz+I/lV1o3sh8KXrurKq8w=
+
+
+ lib/ruby/gems/3.4.0/specifications/nkf-0.2.0.gemspec
+
+ hash2
+
+ K3x4NO7VFn9ka9Wjw8n3rTnaBbkSKyr2PXMYptU3TVs=
+
+
+ lib/ruby/gems/3.4.0/specifications/observer-0.1.2.gemspec
+
+ hash2
+
+ JiX+9oyB9LQAWGL/kgrEa/1ljF9dh/eEQl8Oozqeqg8=
+
+
+ lib/ruby/gems/3.4.0/specifications/power_assert-2.0.5.gemspec
+
+ hash2
+
+ cp1oQXDlRYY3m+2SG0p95OuK+J8hueVzIk1EYtJ8Ni0=
+
+
+ lib/ruby/gems/3.4.0/specifications/prime-0.1.3.gemspec
+
+ hash2
+
+ vXz+rTVqhM1r3CAKRJTCtY72ItVXVtpK7mmQrNu9HNk=
+
+
+ lib/ruby/gems/3.4.0/specifications/racc-1.8.1.gemspec
+
+ hash2
+
+ M4zf5oQoQ6OVy2IZ3bvlcH8G9u4ce2R6nFlmqH5CPbQ=
+
+
+ lib/ruby/gems/3.4.0/specifications/rake-13.2.1.gemspec
+
+ hash2
+
+ hzVglT5x2xGbcM+6GdOl8XAzD5nauf7e1N/yKVA2vMQ=
+
+
+ lib/ruby/gems/3.4.0/specifications/rbs-3.8.0.gemspec
+
+ hash2
+
+ lH1MOM+dEgH4EFE9fnlofjgiLpbkHG0mhoKdPckCJtA=
+
+
+ lib/ruby/gems/3.4.0/specifications/repl_type_completor-0.1.9.gemspec
+
+ hash2
+
+ 7hUG8PQ4GguTKOiwhPZzQDYgqtpcM46zFwZrvEywCCA=
+
+
+ lib/ruby/gems/3.4.0/specifications/resolv-replace-0.1.1.gemspec
+
+ hash2
+
+ 8xZCAxqh29mxNCj3QOYj29vQaERd0bWJFkMoAt79w2Y=
+
+
+ lib/ruby/gems/3.4.0/specifications/rexml-3.4.4.gemspec
+
+ hash2
+
+ 1aIsiX3UUF7AfDybd6Smk1QiSjiwipNzQYHUwqvsIi4=
+
+
+ lib/ruby/gems/3.4.0/specifications/rinda-0.2.0.gemspec
+
+ hash2
+
+ 34D0KjewtcZsuzWuEAR7XpxaF7gxSL/Kag8U7AheZ48=
+
+
+ lib/ruby/gems/3.4.0/specifications/rss-0.3.1.gemspec
+
+ hash2
+
+ pPTvkpNfZUSpmDz8kYPL19DbZIcoNzMSLPzzvi6bV00=
+
+
+ lib/ruby/gems/3.4.0/specifications/syslog-0.2.0.gemspec
+
+ hash2
+
+ LZKvoch4MUJY1MmBi4zt0fXF+ZdRHsyH7T1l8gXiHtA=
+
+
+ lib/ruby/gems/3.4.0/specifications/test-unit-3.6.7.gemspec
+
+ hash2
+
+ LTLWCxYayU6S6mIKo2fZcTQjRkgP2eqIwyAqLeHaO68=
+
+
+ lib/ruby/gems/3.4.0/specifications/typeprof-0.30.1.gemspec
+
+ hash2
+
+ 98Wk8H9xdwpSU8yw7rNdDBRn/vHG/6IU6f6JXM5j+m4=
+
+
+ libruby.3.4.9.dylib
+
+ symlink
+ Ruby
+
+ libruby.3.4.dylib
+
+ symlink
+ Ruby
+
+ libruby.dylib
+
+ symlink
+ libruby.3.4.dylib
+
+
+ rules
+
+ ^Resources/
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
+
+ nested
+
+ weight
+ 10
+
+ ^.*
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^Resources/
+
+ weight
+ 20
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^[^/]+$
+
+ nested
+
+ weight
+ 10
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.3.2.2.dylib b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.3.4.9.dylib
similarity index 100%
rename from ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.3.2.2.dylib
rename to ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.3.4.9.dylib
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.3.2.dylib b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.3.4.dylib
similarity index 100%
rename from ThirdParty/lib/Mac/Ruby.framework/Versions/3.2.2/libruby.3.2.dylib
rename to ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.3.4.dylib
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.dylib b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.dylib
new file mode 120000
index 000000000..c3ff94113
--- /dev/null
+++ b/ThirdParty/lib/Mac/Ruby.framework/Versions/3.4.9/libruby.dylib
@@ -0,0 +1 @@
+libruby.3.4.dylib
\ No newline at end of file
diff --git a/ThirdParty/lib/Mac/Ruby.framework/Versions/Current b/ThirdParty/lib/Mac/Ruby.framework/Versions/Current
index acf9bf09d..e0940d40c 120000
--- a/ThirdParty/lib/Mac/Ruby.framework/Versions/Current
+++ b/ThirdParty/lib/Mac/Ruby.framework/Versions/Current
@@ -1 +1 @@
-3.2.2
\ No newline at end of file
+3.4.9
\ No newline at end of file
diff --git a/ThirdParty/lib/Release/x64/x64-ucrt-ruby320.lib b/ThirdParty/lib/Release/x64/x64-ucrt-ruby320.lib
deleted file mode 100644
index 293cd3df0..000000000
Binary files a/ThirdParty/lib/Release/x64/x64-ucrt-ruby320.lib and /dev/null differ
diff --git a/ThirdParty/lib/Release/x64/x64-ucrt-ruby340.lib b/ThirdParty/lib/Release/x64/x64-ucrt-ruby340.lib
new file mode 100644
index 000000000..5f224c6bb
Binary files /dev/null and b/ThirdParty/lib/Release/x64/x64-ucrt-ruby340.lib differ